Author
Topic: wrmsr/rdmsr on a per cpu/core basis (Read 5475 times)

Some machines are manufactured with TM1 completely disabled. In an attempt to activate it I didn't managed to attach each cpu and wrmsr to it (as TM1 needs to be enabled in that way: per cpu). All I could get is TM1 for the first cpu but next ones remain inaccessible.Any knowledge on this, please ?

Sorry valv i misread you, or rather it ringed a bell from a past project.

Are you investigating this for a broad array of CPUs/BIOSes ?

We've been looking into such options for Xeons some time ago when researching a project @work. One of my hw-eng guys was loosing hair over crippled implementations. A call to Intel revealed that different units will get you different surprises. I'm not sure how much of a pain it'll be to start investigating this for a broad range of CPUs and crappy BIOSes

thank u for caring.some dell manufactured boards have tm1/tm2 or even both disabled (the case of hp hdx series).what I found so far, is bit 21 (lock tm1) at 0x1aa. As of apple's definition, if this bit is set (when tm1 is enabled) a prochot# on one core would force tm1 on other cores. I don't know if tm1 has to be enabled on all cores and if is applicable to (say) core2/xeon...

any findings regarding the initial question and/or obscure msr/cpuid are welcome... for the sake of progress

The Intel BIOS Implementation Test Suite (BITS) provides a bootable pre-OS environment for testing BIOSes and in particular their initialization of Intel processors, hardware, and technologies. BITS can verify your BIOS against many Intel recommendations. In addition, BITS includes Intel's official reference code as provided to BIOS, which you can use to override your BIOS's hardware initialization with a known-good configuration, and then boot an OS.

BITS functionality fits in three broad categories:

Validate: run test suites to verify recommendationsConfigure: override BIOS using Intel reference codeExplore: experimental tools and information gatheringBITS consists of a modified GRUB2 bootloader, with many additional commands to probe and manipulate hardware configuration, as well as scripts using these commands to test and reconfigure hardware.

The current version of BITS focuses primarily on CPU configuration and power management. BITS supplies general tests and functionality for all Intel x86 platforms, as well as additional specific support for Intel® processors based on the microarchitecture code name Nehalem and newer, which includes Intel Core i7, i5, and i3 desktop and mobile processors, and corresponding Intel Xeon server processors.

first as a disclaimer I must say that I am not an expert on this field but just someone who once upon a time tried to execute instruction on specified processor - so what I write might be totally off.

Before system loads operating system, just cpu0 is active - other processors are in hlt state and wouldn't execute anything even if you created a virtual task with TSS. The only thing that could work (wake up processors and make them execute specific code) would be by using IPI (Interprocessor interrupt). This is an excerpt from Intel documentation:

"To execute a code stream (thread) on a halted logical processor, the operating system issues an interprocessor interrupt (IPI)."

Probably your only option would be to create a small ISR (containing your wrmsr) and then signal to one by one processor an IPI - that would make them execute your instruction on every processor.