MSR specifications are specific to Intel processor families as described in chapter 35 of the Intel Architectures Software Developer Manuals As consequence, you have to check first that you can disable through MSRs the prefetcher for your CPU and then check which bits of which register must be toggled for that.
For my processor, Intel Xeon 5650 (06_2CH family) the manual specifies the bits 10 to 8 of the register IA32_MISC_ENABLE at address 0x1A0 are reserved. I guess that this means I can't toggle prefetcher on and off through MSR. According to an answer from an Intel employee here: "Intel has not disclosed how to disable the prefetchers on processors from Nehalem onward. You'll need to disable the prefetchers using options in the BIOS."
On my workstation, running
sudo wrmsr -p 0 0x1a0 0x850289
results in:
wrmsr: CPU 0 cannot set MSR 0x000001a0 to 0x0000000000850289
but
sudo wrmsr -p 0 0x1a0 0x850088
works.
This seems to confirm that I can't disable prefetching using MSRs. Note that this error is defferent from yours, and after reading the Intel manual mentioned above chapter 35.9 it also seems that for your processor you can't disbale the prefetcher with MSRs.I dont know why we don't have the same error message, what is your version of the msr module and Linux kernel ? (modinfo msr
)
As a consequence the BIOS maybe the only way to disable the different prefetchers, it's the case for my Xeon 5650.