Specification Update 45
BV85. Performance-Counter Overflow Indication May Cause Undesired
Behavior
Problem: Under certain conditions (listed below) when a performance counter overflows, its
overflow indication may remain set indefinitely. This erratum affects the general-
purpose performance counters IA32_PMC{0-7} and the fixed-function performance
counters IA32_FIXED_CTR{0-2}. The erratum may occur if any of the following
conditions are applied concurrent to when an actual counter overflow condition is
reached:
1. Software disables the counter either globally through the IA32_PERF_GLOBAL_CTRL
MSR (38FH), or locally through the IA32_PERFEVTSEL{0-7} MSRs (186H-18DH), or the
IA32_FIXED_CTR_CTRL MSR (38DH).
2. Software sets the IA32_DEBUGCTL MSR (1D9H) FREEZE_PERFMON_ON_PMI bit
[12].
3. The processor attempts to disable the counters by updating the state of the
IA32_PERF_GLOBAL_CTRL MSR (38FH) as part of transitions such as VM exit, VM entry,
SMI, RSM, or processor C-state.
Implication: Due to this erratum, the corresponding overflow status bit in
IA32_PERF_GLOBAL_STATUS MSR (38DH) for an affected counter may not get cleared
when expected. If a corresponding counter is configured to issue a PMI (performance
monitor interrupt), multiple PMIs may be signaled from the same overflow condition.
Likewise, if a corresponding counter is configured in PEBS mode (applies to only the
general purpose counters), multiple PEBS events may be signaled.
Workaround: None identified.
Status: For the steppings affected, see the Summary Tables of Changes
BV86. RDMSR of IA32_PERFEVTSEL4-7 May Return an Incorrect Result
Problem: When CPUID.A.EAX[15:8] reports 8 general-purpose performance monitoring counters
per logical processor, RDMSR of IA32_PERFEVTSEL4-7 (MSR 18AH:18DH) may not
return the same value as previously written.
Implication: Software should not rely on the value read from these MSRs. Writing these MSRs
functions as expected.
Workaround: None identified.
Status: For the steppings affected, see the Summary Tables of Changes
BV87. VEX.L is Not Ignored with VCVT*2SI Instructions
Problem: The VEX.L bit should be ignored for the VCVTSS2SI, VCVTSD2SI, VCVTTSS2SI, and
VCVTTSD2SI instructions, however due to this erratum the VEX.L bit is not ignored and
will cause a #UD.
Implication: Unexpected #UDs will be seen when the VEX.L bit is set to 1 with VCVTSS2SI,
VCVTSD2SI, VCVTTSS2SI, and VCVTTSD2SI instructions.
Workaround: Software should ensure that the VEX.L bit is set to 0 for all scalar instructions.
Status: For the steppings affected, see the Summary Tables of Changes