Currently, if EOI broadcast suppression is advertised on the BSP
LAPIC, Xen will discard any user specified option regarding IO-APIC
ack mode.
This patch introduces a check which prevents EOI Broadcast suppression
from forcing the IO-APIC ack mode to old if the user has explicitly
asked for the new ack mode on the command line.
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Committed-by: Keir Fraser <keir@xen.org>
*/
if ( reg0 & APIC_LVR_DIRECTED_EOI )
{
- ioapic_ack_new = 0;
- directed_eoi_enabled = 1;
- printk("Enabled directed EOI with ioapic_ack_old on!\n");
+ if ( ioapic_ack_new == 1 && ioapic_ack_forced == 1 )
+ printk("Not enabling directed EOI because ioapic_ack_new has been "
+ "forced on the command line\n");
+ else
+ {
+ ioapic_ack_new = 0;
+ directed_eoi_enabled = 1;
+ printk("Enabled directed EOI with ioapic_ack_old on!\n");
+ }
}
/*
bool_t __read_mostly skip_ioapic_setup;
bool_t __read_mostly ioapic_ack_new = 1;
+bool_t __read_mostly ioapic_ack_forced = 0;
#ifndef sis_apic_bug
/*
static void __init setup_ioapic_ack(char *s)
{
if ( !strcmp(s, "old") )
+ {
ioapic_ack_new = 0;
+ ioapic_ack_forced = 1;
+ }
else if ( !strcmp(s, "new") )
+ {
ioapic_ack_new = 1;
+ ioapic_ack_forced = 1;
+ }
else
printk("Unknown ioapic_ack value specified: '%s'\n", s);
}
/* 1 if "noapic" boot option passed */
extern bool_t skip_ioapic_setup;
extern bool_t ioapic_ack_new;
+extern bool_t ioapic_ack_forced;
#ifdef CONFIG_ACPI_BOOT
extern int io_apic_get_unique_id (int ioapic, int apic_id);