Writing to the APIC ID register is legal in xAPIC mode but is ignored by
recent CPU models. Linux performs a write on boot-up, e.g., and ignoring
this is both cheap and helpful to keep para-virtualization needs low.
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
apic_ops.send_ipi = send_xapic_ipi;
/* adjust reserved bits to xAPIC mode */
+ apic_reserved_bits[APIC_REG_ID] = 0; /* writes are ignored */
apic_reserved_bits[APIC_REG_LDR] = 0; /* separately filtered */
apic_reserved_bits[APIC_REG_DFR] = 0; /* separately filtered */
apic_reserved_bits[APIC_REG_ICR_HI] = 0x00ffffff;
else if (reg >= APIC_REG_XLVT0 && reg <= APIC_REG_XLVT3 &&
apic_invalid_lvt_delivery_mode(reg, val))
return 0;
- else
+ else if (reg != APIC_REG_ID)
apic_ops.write(reg, val);
} else {
val = apic_ops.read(reg);