diff options
author | Hans de Goede <hdegoede@redhat.com> | 2018-11-20 11:01:50 +0100 |
---|---|---|
committer | Hans de Goede <hdegoede@redhat.com> | 2018-11-20 11:02:18 +0100 |
commit | 376d3ff3496e6b1c80de5f4ac83b33a06dc5b36b (patch) | |
tree | 5b7f958cdb67207e279bd569ba394d985ce832a4 | |
parent | 0adb6400290215408a069d9e24faea6d8675584e (diff) | |
download | kernel-376d3ff3496e6b1c80de5f4ac83b33a06dc5b36b.tar.gz kernel-376d3ff3496e6b1c80de5f4ac83b33a06dc5b36b.tar.xz kernel-376d3ff3496e6b1c80de5f4ac83b33a06dc5b36b.zip |
Add a patch fixing touchscreens on HP AMD based laptops (rhbz#1644013)
-rw-r--r-- | 0001-ACPI-platform-Add-SMB0001-HID-to-forbidden_id_list.patch | 104 | ||||
-rw-r--r-- | kernel.spec | 4 |
2 files changed, 108 insertions, 0 deletions
diff --git a/0001-ACPI-platform-Add-SMB0001-HID-to-forbidden_id_list.patch b/0001-ACPI-platform-Add-SMB0001-HID-to-forbidden_id_list.patch new file mode 100644 index 000000000..822e497af --- /dev/null +++ b/0001-ACPI-platform-Add-SMB0001-HID-to-forbidden_id_list.patch @@ -0,0 +1,104 @@ +From 5afcaee5ee71ba730fde8f66da7e320fb7e674d2 Mon Sep 17 00:00:00 2001 +From: Hans de Goede <hdegoede@redhat.com> +Date: Mon, 19 Nov 2018 17:38:59 +0100 +Subject: [PATCH 4.20 regression fix] ACPI / platform: Add SMB0001 HID to + forbidden_id_list + +Many HP AMD based laptops contain an SMB0001 device like this: + +Device (SMBD) +{ + Name (_HID, "SMB0001") // _HID: Hardware ID + Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings + { + IO (Decode16, + 0x0B20, // Range Minimum + 0x0B20, // Range Maximum + 0x20, // Alignment + 0x20, // Length + ) + IRQ (Level, ActiveLow, Shared, ) + {7} + }) +} + +The legacy style IRQ resource here causes acpi_dev_get_irqresource() to +be called with legacy=true and this message to show in dmesg: +ACPI: IRQ 7 override to edge, high + +This causes issues when later on the AMD0030 GPIO device gets enumerated: + +Device (GPIO) +{ + Name (_HID, "AMDI0030") // _HID: Hardware ID + Name (_CID, "AMDI0030") // _CID: Compatible ID + Name (_UID, Zero) // _UID: Unique ID + Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings + { + Name (RBUF, ResourceTemplate () + { + Interrupt (ResourceConsumer, Level, ActiveLow, Shared, ,, ) + { + 0x00000007, + } + Memory32Fixed (ReadWrite, + 0xFED81500, // Address Base + 0x00000400, // Address Length + ) + }) + Return (RBUF) /* \_SB_.GPIO._CRS.RBUF */ + } +} + +Now acpi_dev_get_irqresource() gets called with legacy=false, but because +of the earlier override of the trigger-type acpi_register_gsi() returns +-EBUSY (because we try to register the same interrupt with a different +trigger-type) and we end up setting IORESOURCE_DISABLED in the flags. + +The setting of IORESOURCE_DISABLED causes platform_get_irq() to call +acpi_irq_get() which is not implemented on x86 and returns -EINVAL. +resulting in the following in dmesg: + +amd_gpio AMDI0030:00: Failed to get gpio IRQ: -22 +amd_gpio: probe of AMDI0030:00 failed with error -22 + +The SMB0001 is a "virtual" device in the sense that the only way the OS +interacts with it is through calling a couple of methods to do SMBus +transfers. As such it is weird that it has IO and IRQ resources at all, +because the driver for it is not expected to ever access the hardware +directly. + +The Linux driver for the SMB0001 device directly binds to the acpi_device +through the acpi_bus, so we do not need to instantiate a platform_device +for this ACPI device. This commit adds the SMB0001 HID to the +forbidden_id_list, avoiding the instantiating of a platform_device for it. +Not instantiating a platform_device means we will no longer call +acpi_dev_get_irqresource() for the legacy IRQ resource fixing the probe of +the AMDI0030 device failing. + +BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1644013 +BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=198715 +BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=199523 +Reported-by: Lukas Kahnert <openproggerfreak@gmail.com> +Tested-by: Marc <suaefar@googlemail.com> +Cc: stable@vger.kernel.org +Signed-off-by: Hans de Goede <hdegoede@redhat.com> +--- + drivers/acpi/acpi_platform.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/drivers/acpi/acpi_platform.c b/drivers/acpi/acpi_platform.c +index eaa60c94205a..1f32caa87686 100644 +--- a/drivers/acpi/acpi_platform.c ++++ b/drivers/acpi/acpi_platform.c +@@ -30,6 +30,7 @@ static const struct acpi_device_id forbidden_id_list[] = { + {"PNP0200", 0}, /* AT DMA Controller */ + {"ACPI0009", 0}, /* IOxAPIC */ + {"ACPI000A", 0}, /* IOAPIC */ ++ {"SMB0001", 0}, /* ACPI SMBUS virtual device */ + {"", 0}, + }; + +-- +2.19.1 + diff --git a/kernel.spec b/kernel.spec index 67bb6465e..ef99a0696 100644 --- a/kernel.spec +++ b/kernel.spec @@ -606,6 +606,9 @@ Patch501: Fix-for-module-sig-verification.patch # rhbz 1431375 Patch502: input-rmi4-remove-the-need-for-artifical-IRQ.patch +# rhbz 1644013, patch pending upstream +Patch503: 0001-ACPI-platform-Add-SMB0001-HID-to-forbidden_id_list.patch + # END OF PATCH DEFINITIONS %endif @@ -1880,6 +1883,7 @@ fi %changelog * Tue Nov 20 2018 Hans de Goede <hdegoede@redhat.com> - Turn on CONFIG_PINCTRL_GEMINILAKE on x86_64 (rhbz#1639155) +- Add a patch fixing touchscreens on HP AMD based laptops (rhbz#1644013) * Mon Nov 19 2018 Jeremy Cline <jcline@redhat.com> - 4.20.0-0.rc3.git0.1 - Linux v4.20-rc3 |