From 2d17e98eded5958258ba5c0abf600284d8d03af9 Mon Sep 17 00:00:00 2001 From: Duncan Laurie Date: Thu, 12 Jun 2014 13:28:42 -0700 Subject: [PATCH] broadwell: Disable GPIO controller interrupt The GPIO controller (configured as IRQ14 by default) is level triggered and active high according to documentation. At the moment it seems to be misbehaving and firing constantly which is preventing package C-states since one core is always busy servicing imaginary events. Until this is understood and fixed don't report an interrupt for the GPIO controller. Since there are 16 peripheral IRQ capable GPIOs this is not used currently. Also remove the hardcoded MADT IRQ override entry for IRQ14 since we are using the GPIO controller in ACPI mode so it gets the interrupt configuration from _CRS. BUG=chrome-os-partner:29548 BRANCH=None TEST=boot on wtm2 and check for package C-state entry with powertop Change-Id: Ibf562fe3512e68d3944fda61a023a1631f7acd57 Signed-off-by: Duncan Laurie Reviewed-on: https://chromium-review.googlesource.com/203645 Reviewed-by: Aaron Durbin --- src/soc/intel/broadwell/acpi.c | 5 ----- src/soc/intel/broadwell/acpi/gpio.asl | 5 +++-- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/src/soc/intel/broadwell/acpi.c b/src/soc/intel/broadwell/acpi.c index 782503ec0e..f4cac7bcba 100644 --- a/src/soc/intel/broadwell/acpi.c +++ b/src/soc/intel/broadwell/acpi.c @@ -604,10 +604,5 @@ unsigned long acpi_madt_irq_overrides(unsigned long current) irqovr = (void *)current; current += acpi_create_madt_irqoverride(irqovr, 0, sci, sci, flags); - /* GPIO Controller */ - irqovr = (void *)current; - flags = MP_IRQ_TRIGGER_LEVEL | MP_IRQ_POLARITY_HIGH; - current += acpi_create_madt_irqoverride(irqovr, 0, 14, 14, flags); - return current; } diff --git a/src/soc/intel/broadwell/acpi/gpio.asl b/src/soc/intel/broadwell/acpi/gpio.asl index 9c2ac7ccd9..c6d8753975 100644 --- a/src/soc/intel/broadwell/acpi/gpio.asl +++ b/src/soc/intel/broadwell/acpi/gpio.asl @@ -47,8 +47,9 @@ Device (GPIO) , // ResourceSourceIndex , // ResourceSource BAR0) - Interrupt (ResourceConsumer, - Level, ActiveHigh, Shared, , , ) {14} + // Disabled due to IRQ storm: http://crosbug.com/p/29548 + //Interrupt (ResourceConsumer, + // Level, ActiveHigh, Shared, , , ) {14} }) Method (_CRS, 0, NotSerialized)