diff options
Diffstat (limited to 'arch/x86/kernel/acpi/boot.c')
| -rw-r--r-- | arch/x86/kernel/acpi/boot.c | 14 | 
1 files changed, 10 insertions, 4 deletions
diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c index b3a71137983..3e6e2d68f76 100644 --- a/arch/x86/kernel/acpi/boot.c +++ b/arch/x86/kernel/acpi/boot.c @@ -72,6 +72,7 @@ u8 acpi_sci_flags __initdata;  int acpi_sci_override_gsi __initdata;  int acpi_skip_timer_override __initdata;  int acpi_use_timer_override __initdata; +int acpi_fix_pin2_polarity __initdata;  #ifdef CONFIG_X86_LOCAL_APIC  static u64 acpi_lapic_addr __initdata = APIC_DEFAULT_PHYS_BASE; @@ -415,10 +416,15 @@ acpi_parse_int_src_ovr(struct acpi_subtable_header * header,  		return 0;  	} -	if (acpi_skip_timer_override && -	    intsrc->source_irq == 0 && intsrc->global_irq == 2) { -		printk(PREFIX "BIOS IRQ0 pin2 override ignored.\n"); -		return 0; +	if (intsrc->source_irq == 0 && intsrc->global_irq == 2) { +		if (acpi_skip_timer_override) { +			printk(PREFIX "BIOS IRQ0 pin2 override ignored.\n"); +			return 0; +		} +		if (acpi_fix_pin2_polarity && (intsrc->inti_flags & ACPI_MADT_POLARITY_MASK)) { +			intsrc->inti_flags &= ~ACPI_MADT_POLARITY_MASK; +			printk(PREFIX "BIOS IRQ0 pin2 override: forcing polarity to high active.\n"); +		}  	}  	mp_override_legacy_irq(intsrc->source_irq,  |