[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-4.1-testing] IO-APIC: Prevent using EOI broadcast suppression if user specified
# HG changeset patch # User Andrew Cooper <andrew.cooper3@xxxxxxxxxx> # Date 1331117651 0 # Node ID dc7fc50b35948d3727ff11887041410948ab3629 # Parent bcf1250a14e8b5f7a63d7b9311687ee8d98b7853 IO-APIC: Prevent using EOI broadcast suppression if user specified ioapic_ack=new on the command line. 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@xxxxxxxxxx> Committed-by: Keir Fraser <keir@xxxxxxx> xen-unstable changeset: 24870:9bf3ec036bef xen-unstable date: Thu Feb 23 09:58:47 2012 +0000 --- diff -r bcf1250a14e8 -r dc7fc50b3594 xen/arch/x86/apic.c --- a/xen/arch/x86/apic.c Wed Mar 07 09:39:45 2012 +0000 +++ b/xen/arch/x86/apic.c Wed Mar 07 10:54:11 2012 +0000 @@ -437,9 +437,15 @@ */ 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"); + } } /* diff -r bcf1250a14e8 -r dc7fc50b3594 xen/arch/x86/io_apic.c --- a/xen/arch/x86/io_apic.c Wed Mar 07 09:39:45 2012 +0000 +++ b/xen/arch/x86/io_apic.c Wed Mar 07 10:54:11 2012 +0000 @@ -44,6 +44,7 @@ static DEFINE_SPINLOCK(ioapic_lock); bool_t __read_mostly skip_ioapic_setup; +bool_t __read_mostly ioapic_ack_forced = 0; #ifndef sis_apic_bug /* @@ -1610,9 +1611,15 @@ static void 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); } diff -r bcf1250a14e8 -r dc7fc50b3594 xen/include/asm-x86/io_apic.h --- a/xen/include/asm-x86/io_apic.h Wed Mar 07 09:39:45 2012 +0000 +++ b/xen/include/asm-x86/io_apic.h Wed Mar 07 10:54:11 2012 +0000 @@ -179,6 +179,7 @@ /* 1 if "noapic" boot option passed */ extern bool_t skip_ioapic_setup; +extern bool_t ioapic_ack_forced; #ifdef CONFIG_ACPI_BOOT extern int io_apic_get_unique_id (int ioapic, int apic_id); _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |