
32 Specification Update
BU38. PerfMon Overflow Status Can Not be Cleared After Certain Conditions Have OccurredProblem: Under very specific timing conditions, if software tries to disable a PerfMon counter 
through MSR IA32_PERF_GLOBAL_CTRL (0x38F) or through the per-counter event-
select (e.g. MSR 0x186) and the counter reached its overflow state very close to that 
time, then due to this erratum the overflow status indication in MSR 
IA32_PERF_GLOBAL_STAT (0x38E) may be left set with no way for software to clear it.
Implication: Due to this erratum, software may be unable to clear the PerfMon counter overflow 
status indication.
Workaround: Software may avoid this erratum by clearing the PerfMon counter value prior to 
disabling it and then clearing the overflow status indication bit.
Status: For the steppings affected, see the Summary Tables of Changes.
BU39. #GP May be Signaled When Invalid VEX Prefix Precedes Conditional Branch InstructionsProblem: When a 2-byte opcode of a conditional branch (opcodes 0F8xH, for any value of x) 
instruction resides in 16-bit code-segment and is associated with invalid VEX prefix, it 
may sometimes signal a #GP fault (illegal instruction length > 15-bytes) instead of a 
#UD (illegal opcode) fault.
Implication: Due to this erratum, #GP fault instead of a #UD may be signaled on an illegal 
instruction.
Workaround: None identified.
Status: For the steppings affected, see the Summary Tables of Changes.
BU40. Interrupt From Local APIC Timer May Not Be Detectable While Being DeliveredProblem: If the local-APIC timer’s CCR (current-count register) is 0, software should be able to 
determine whether a previously generated timer interrupt is being delivered by first 
reading the delivery-status bit in the LVT timer register and then reading the bit in the 
IRR (interrupt-request register) corresponding to the vector in the LVT timer register. If 
both values are read as 0, no timer interrupt should be in the process of being 
delivered. Due to this erratum, a timer interrupt may be delivered even if the CCR is 0 
and the LVT and IRR bits are read as 0. This can occur only if the DCR (Divide 
Configuration Register) is greater than or equal to 4. The erratum does not occur if 
software writes zero to the Initial Count Register before reading the LVT and IRR bits.
Implication: Software that relies on reads of the LVT and IRR bits to determine whether a timer 
interrupt is being delivered may not operate properly.
Workaround: Software that uses the local-APIC timer must be prepared to handle the timer 
interrupts, even those that would not be expected based on reading CCR and the LVT 
and IRR bits; alternatively, software can avoid the problem by writing zero to the Initial 
Count Register before reading the LVT and IRR bits.
Status: For the steppings affected, see the Summary Tables of Changes.