From e4fd57153f367949effe83e3fb77d08d4d876037 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Mon, 10 Oct 2022 08:32:02 +0200 Subject: [PATCH] 5.19-stable patches added patches: gpiolib-acpi-add-a-quirk-for-asus-um325uaz.patch gpiolib-acpi-add-support-to-ignore-programming-an-interrupt.patch --- ...b-acpi-add-a-quirk-for-asus-um325uaz.patch | 50 +++++++++ ...t-to-ignore-programming-an-interrupt.patch | 103 ++++++++++++++++++ queue-5.19/series | 2 + 3 files changed, 155 insertions(+) create mode 100644 queue-5.19/gpiolib-acpi-add-a-quirk-for-asus-um325uaz.patch create mode 100644 queue-5.19/gpiolib-acpi-add-support-to-ignore-programming-an-interrupt.patch diff --git a/queue-5.19/gpiolib-acpi-add-a-quirk-for-asus-um325uaz.patch b/queue-5.19/gpiolib-acpi-add-a-quirk-for-asus-um325uaz.patch new file mode 100644 index 00000000000..b7b09def0e0 --- /dev/null +++ b/queue-5.19/gpiolib-acpi-add-a-quirk-for-asus-um325uaz.patch @@ -0,0 +1,50 @@ +From 0ea76c401f9245ac209f1b1ce03a7e1fb9de36e5 Mon Sep 17 00:00:00 2001 +From: Mario Limonciello +Date: Tue, 2 Aug 2022 23:25:00 -0500 +Subject: gpiolib: acpi: Add a quirk for Asus UM325UAZ + +From: Mario Limonciello + +commit 0ea76c401f9245ac209f1b1ce03a7e1fb9de36e5 upstream. + +Asus UM325UAZ has GPIO 18 programmed as both an interrupt and a wake +source, but confirmed with internal team on this design this pin is +floating and shouldn't have been programmed. This causes lots of +spurious IRQs on the system and horrendous battery life. + +Add a quirk to ignore attempts to program this pin on this system. + +Reported-by: Pavel Krc +Link: https://bugzilla.kernel.org/show_bug.cgi?id=216208 +Reviewed-by: Hans de Goede +Signed-off-by: Mario Limonciello +Reviewed-by: Mika Westerberg +Signed-off-by: Andy Shevchenko +Signed-off-by: Greg Kroah-Hartman +--- + drivers/gpio/gpiolib-acpi.c | 14 ++++++++++++++ + 1 file changed, 14 insertions(+) + +--- a/drivers/gpio/gpiolib-acpi.c ++++ b/drivers/gpio/gpiolib-acpi.c +@@ -1573,6 +1573,20 @@ static const struct dmi_system_id gpioli + .ignore_wake = "INT33FF:01@0", + }, + }, ++ { ++ /* ++ * Interrupt storm caused from edge triggered floating pin ++ * Found in BIOS UX325UAZ.300 ++ * https://bugzilla.kernel.org/show_bug.cgi?id=216208 ++ */ ++ .matches = { ++ DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."), ++ DMI_MATCH(DMI_PRODUCT_NAME, "ZenBook UX325UAZ_UM325UAZ"), ++ }, ++ .driver_data = &(struct acpi_gpiolib_dmi_quirk) { ++ .ignore_interrupt = "AMDI0030:00@18", ++ }, ++ }, + {} /* Terminating entry */ + }; + diff --git a/queue-5.19/gpiolib-acpi-add-support-to-ignore-programming-an-interrupt.patch b/queue-5.19/gpiolib-acpi-add-support-to-ignore-programming-an-interrupt.patch new file mode 100644 index 00000000000..b51ef1d4b7a --- /dev/null +++ b/queue-5.19/gpiolib-acpi-add-support-to-ignore-programming-an-interrupt.patch @@ -0,0 +1,103 @@ +From 6b6af7bd5718f4e45a9b930533aec1158387d552 Mon Sep 17 00:00:00 2001 +From: Mario Limonciello +Date: Tue, 2 Aug 2022 23:24:59 -0500 +Subject: gpiolib: acpi: Add support to ignore programming an interrupt + +From: Mario Limonciello + +commit 6b6af7bd5718f4e45a9b930533aec1158387d552 upstream. + +gpiolib-acpi already had support for ignoring a pin for wakeup, but +if an OEM configures a floating pin as an interrupt source then +stopping it from being a wakeup won't do much good to stop the +interrupt storm. + +Add support for a module parameter and quirk infrastructure to +ignore interrupts as well. + +Signed-off-by: Mario Limonciello +Reviewed-by: Hans de Goede +Reviewed-by: Mika Westerberg +Signed-off-by: Andy Shevchenko +Signed-off-by: Greg Kroah-Hartman +--- + drivers/gpio/gpiolib-acpi.c | 24 ++++++++++++++++++++---- + 1 file changed, 20 insertions(+), 4 deletions(-) + +--- a/drivers/gpio/gpiolib-acpi.c ++++ b/drivers/gpio/gpiolib-acpi.c +@@ -32,9 +32,16 @@ MODULE_PARM_DESC(ignore_wake, + "controller@pin combos on which to ignore the ACPI wake flag " + "ignore_wake=controller@pin[,controller@pin[,...]]"); + ++static char *ignore_interrupt; ++module_param(ignore_interrupt, charp, 0444); ++MODULE_PARM_DESC(ignore_interrupt, ++ "controller@pin combos on which to ignore interrupt " ++ "ignore_interrupt=controller@pin[,controller@pin[,...]]"); ++ + struct acpi_gpiolib_dmi_quirk { + bool no_edge_events_on_boot; + char *ignore_wake; ++ char *ignore_interrupt; + }; + + /** +@@ -317,14 +324,15 @@ static struct gpio_desc *acpi_request_ow + return desc; + } + +-static bool acpi_gpio_in_ignore_list(const char *controller_in, unsigned int pin_in) ++static bool acpi_gpio_in_ignore_list(const char *ignore_list, const char *controller_in, ++ unsigned int pin_in) + { + const char *controller, *pin_str; + unsigned int pin; + char *endp; + int len; + +- controller = ignore_wake; ++ controller = ignore_list; + while (controller) { + pin_str = strchr(controller, '@'); + if (!pin_str) +@@ -348,7 +356,7 @@ static bool acpi_gpio_in_ignore_list(con + + return false; + err: +- pr_err_once("Error: Invalid value for gpiolib_acpi.ignore_wake: %s\n", ignore_wake); ++ pr_err_once("Error: Invalid value for gpiolib_acpi.ignore_...: %s\n", ignore_list); + return false; + } + +@@ -360,7 +368,7 @@ static bool acpi_gpio_irq_is_wake(struct + if (agpio->wake_capable != ACPI_WAKE_CAPABLE) + return false; + +- if (acpi_gpio_in_ignore_list(dev_name(parent), pin)) { ++ if (acpi_gpio_in_ignore_list(ignore_wake, dev_name(parent), pin)) { + dev_info(parent, "Ignoring wakeup on pin %u\n", pin); + return false; + } +@@ -427,6 +435,11 @@ static acpi_status acpi_gpiochip_alloc_e + goto fail_unlock_irq; + } + ++ if (acpi_gpio_in_ignore_list(ignore_interrupt, dev_name(chip->parent), pin)) { ++ dev_info(chip->parent, "Ignoring interrupt on pin %u\n", pin); ++ return AE_OK; ++ } ++ + event = kzalloc(sizeof(*event), GFP_KERNEL); + if (!event) + goto fail_unlock_irq; +@@ -1582,6 +1595,9 @@ static int __init acpi_gpio_setup_params + if (ignore_wake == NULL && quirk && quirk->ignore_wake) + ignore_wake = quirk->ignore_wake; + ++ if (ignore_interrupt == NULL && quirk && quirk->ignore_interrupt) ++ ignore_interrupt = quirk->ignore_interrupt; ++ + return 0; + } + diff --git a/queue-5.19/series b/queue-5.19/series index 873ca07eb1e..97d3c65d31b 100644 --- a/queue-5.19/series +++ b/queue-5.19/series @@ -37,3 +37,5 @@ coredump-don-t-use-__kernel_write-on-kmap_local_page.patch i2c-davinci-fix-pm-disable-depth-imbalance-in-davinc.patch usb-mon-make-mmapped-memory-read-only.patch usb-serial-ftdi_sio-fix-300-bps-rate-for-sio.patch +gpiolib-acpi-add-support-to-ignore-programming-an-interrupt.patch +gpiolib-acpi-add-a-quirk-for-asus-um325uaz.patch -- 2.47.3