Chameleon > DevTalk

wrmsr/rdmsr on a per cpu/core basis

<< < (2/2)

uman:
Have you guys looked at the just-released Intel BIOS Implementation Test Suite (BITS)?

See: http://biosbits.org/

Here's the info, copied for your reference:

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 recommendations
Configure: override BIOS using Intel reference code
Explore: experimental tools and information gathering
BITS 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.

iostres:
Hi valv,

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.

I hope this was at least a bit helpful.

BR,
iostres

Navigation

[0] Message Index

[*] Previous page

Go to full version