- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello,
In the SDM, the MSR IA32_PRED_CMD (0x49) can be read if CPUID(EAX=07H, ECX=0):EDX[26] equals 1
For example, processor Xeon W3690 of architecture Westmere/Gulftown, microcode version 31, is capable of IBRS & IBPB, according to the EDX register of CPUID leave 7. However, reading the MSR 0x49 will immediately crash processor [whereas MSR IA32_SPEC_CTRL (0x48) works as specified]
FYI, same issue has been encountered with a i7-6700 Skylake processor
Question: what are the discriminant bits to safely read the MSR IA32_PRED_CMD ?
Thank you
Cyril
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Registers MSR_IA32_PRED_CMD and MSR_IA32_FLUSH_CMD are write-only
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
What kind of crash do you mean? (Cleverly not testing this myself, just in case....)
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
My driver was seg-faulting because reading this MSR. I fixed it by writing only the register.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thanks! That sounds like the normal fault condition for a non-readable MSR (or for writing to any bits of an MSR that is not writable).
I thought that Intel had configured the "write-only" MSRs to be readable (returning zero), but apparently not all of them!

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page