On 7/23/21 9:22 AM, PGNet Dev wrote:
Can you use 'git bisect' to find the offending change? thanks, greg k-h
Greg, git clone https://gitlab.com/cki-project/kernel-ark.git cd kernel-ark git log -n1 | head -n1 1 commit 94dd448e56d2446de85682efabd2f833c5f6dfc8 (HEAD -> os-build, origin/os-build, origin/HEAD) git bisect start git bisect good v5.12.15 git bisect bad v5.12.17 git bisect visualize --oneline | wc -l 715 bisect: 1 BAD [88611c8036bf96f91e59d223b1b8630e9ace82f2] mm: mmap_lock: use local locks instead of disabling preemption 2 GOOD [49e077e7c08ec4fd9299646d430bcc085ae81b86] mmc: sdhci-sprd: use sdhci_sprd_writew 3 BAD [2d3650748f83eb9fb5121a52c8b53e436e1f349c] crypto: ux500 - Fix error return code in hash_hw_final() 4 GOOD [b1bdf36471f2166725a688cf0204059455aedd66] fs: dlm: cancel work sync othercon 5 BAD [19d2497258ad98e1938c43ea00edfdd5408699a9] smb3: fix uninitialized value for port in witness protocol move 6 BAD [d401922918b0f36e2cef76413c07d1c223ee6df0] block: fix race between adding/removing rq qos and normal IO 7 GOOD [bc58f76172e8b80b9231abb275fac32c069df151] fs: dlm: fix memory leak when fenced 8 BAD [96b15a0b45182f1c3da5a861196da27000da2e3c] ACPI: resources: Add checks for ACPI IRQ override 9 GOOD [24743ca474860e2c350268b98cfff4ed1ff37fb4] ACPI: bus: Call kobject_put() in acpi_init() error path 96b15a0b45182f1c3da5a861196da27000da2e3c is the first bad commit commit 96b15a0b45182f1c3da5a861196da27000da2e3c Author: Hui Wang <hui.wang@xxxxxxxxxxxxx> Date: Wed Jun 9 10:14:42 2021 +0800 ACPI: resources: Add checks for ACPI IRQ override [ Upstream commit 0ec4e55e9f571f08970ed115ec0addc691eda613 ] The laptop keyboard doesn't work on many MEDION notebooks, but the keyboard works well under Windows and Unix. Through debugging, we found this log in the dmesg: ACPI: IRQ 1 override to edge, high pnp 00:03: Plug and Play ACPI device, IDs PNP0303 (active) And we checked the IRQ definition in the DSDT, it is: IRQ (Level, ActiveLow, Exclusive, ) {1} So the BIOS defines the keyboard IRQ to Level_Low, but the Linux kernel override it to Edge_High. If the Linux kernel is modified to skip the IRQ override, the keyboard will work normally. From the existing comment in acpi_dev_get_irqresource(), the override function only needs to be called when IRQ() or IRQNoFlags() is used to populate the resource descriptor, and according to Section 6.4.2.1 of ACPI 6.4 [1], if IRQ() is empty or IRQNoFlags() is used, the IRQ is High true, edge sensitive and non-shareable. ACPICA also assumes that to be the case (see acpi_rs_set_irq[] in rsirq.c). In accordance with the above, check 3 additional conditions (EdgeSensitive, ActiveHigh and Exclusive) when deciding whether or not to treat an ACPI_RESOURCE_TYPE_IRQ resource as "legacy", in which case the IRQ override is applicable to it. Link: https://uefi.org/specs/ACPI/6.4/06_Device_Configuration/Device_Configuration.html#irq-descriptor # [1] BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=213031 BugLink: http://bugs.launchpad.net/bugs/1909814 Suggested-by: Rafael J. Wysocki <rafael.j.wysocki@xxxxxxxxx> Reported-by: Manuel Krause <manuelkrause@xxxxxxxxxxxx> Tested-by: Manuel Krause <manuelkrause@xxxxxxxxxxxx> Signed-off-by: Hui Wang <hui.wang@xxxxxxxxxxxxx> [ rjw: Subject rewrite, changelog edits ] Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@xxxxxxxxx> Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx> drivers/acpi/resource.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-)