@@ -136,7 +136,7 @@ static void intel_init_thermal(struct cpuinfo_x86 *c)
* is required to set the same value for all threads/cores).
*/
if ( (val & APIC_DM_MASK) != APIC_DM_FIXED
- || (val & APIC_VECTOR_MASK) > 0xf )
+ || (val & APIC_VECTOR_MASK) > APIC_VECTOR_VALID )
apic_write(APIC_LVTTHMR, val);
if ( (msr_content & (1ULL<<3))
@@ -123,7 +123,7 @@ static void vlapic_error(struct vlapic *vlapic, unsigned int err_bit)
* will end up back here. Break the cycle by only injecting LVTERR
* if it will succeed, and folding in RECVILL otherwise.
*/
- if ( (lvterr & APIC_VECTOR_MASK) >= 16 )
+ if ( (lvterr & APIC_VECTOR_MASK) >= APIC_VECTOR_VALID )
inj = true;
else
set_bit(ilog2(APIC_ESR_RECVILL), &vlapic->hw.pending_esr);
@@ -136,7 +136,7 @@ static void vlapic_error(struct vlapic *vlapic, unsigned int err_bit)
bool vlapic_test_irq(const struct vlapic *vlapic, uint8_t vec)
{
- if ( unlikely(vec < 16) )
+ if ( unlikely(vec < APIC_VECTOR_VALID) )
return false;
if ( hvm_funcs.test_pir &&
@@ -150,7 +150,7 @@ void vlapic_set_irq(struct vlapic *vlapic, uint8_t vec, uint8_t trig)
{
struct vcpu *target = vlapic_vcpu(vlapic);
- if ( unlikely(vec < 16) )
+ if ( unlikely(vec < APIC_VECTOR_VALID) )
{
vlapic_error(vlapic, ilog2(APIC_ESR_RECVILL));
return;
@@ -523,7 +523,7 @@ void vlapic_ipi(
struct vlapic *target = vlapic_lowest_prio(
vlapic_domain(vlapic), vlapic, short_hand, dest, dest_mode);
- if ( unlikely((icr_low & APIC_VECTOR_MASK) < 16) )
+ if ( unlikely((icr_low & APIC_VECTOR_MASK) < APIC_VECTOR_VALID) )
vlapic_error(vlapic, ilog2(APIC_ESR_SENDILL));
else if ( target )
vlapic_accept_irq(vlapic_vcpu(target), icr_low);
@@ -531,7 +531,7 @@ void vlapic_ipi(
}
case APIC_DM_FIXED:
- if ( unlikely((icr_low & APIC_VECTOR_MASK) < 16) )
+ if ( unlikely((icr_low & APIC_VECTOR_MASK) < APIC_VECTOR_VALID) )
{
vlapic_error(vlapic, ilog2(APIC_ESR_SENDILL));
break;
@@ -78,6 +78,7 @@
#define APIC_DM_STARTUP 0x00600
#define APIC_DM_EXTINT 0x00700
#define APIC_VECTOR_MASK 0x000FF
+#define APIC_VECTOR_VALID (16)
#define APIC_ICR2 0x310
#define GET_xAPIC_DEST_FIELD(x) (((x)>>24)&0xFF)
#define SET_xAPIC_DEST_FIELD(x) ((x)<<24)
Add new symbol APIC_VECTOR_VALID to replace open-coded value 16 in LAPIC and virtual LAPIC code. See: Intel SDM volume 3A Chapter "ADVANCED PROGRAMMABLE INTERRUPT CONTROLLER" Section "Valid Interrupt Vectors" No functional change. Signed-off-by: Denis Mukhin <dmukhin@ford.com> --- xen/arch/x86/cpu/mcheck/mce_intel.c | 2 +- xen/arch/x86/hvm/vlapic.c | 10 +++++----- xen/arch/x86/include/asm/apicdef.h | 1 + 3 files changed, 7 insertions(+), 6 deletions(-)