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@canonical.com 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... # [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@intel.com Reported-by: Manuel Krause manuelkrause@netscape.net Tested-by: Manuel Krause manuelkrause@netscape.net Signed-off-by: Hui Wang hui.wang@canonical.com [ rjw: Subject rewrite, changelog edits ] Signed-off-by: Rafael J. Wysocki rafael.j.wysocki@intel.com Signed-off-by: Sasha Levin sashal@kernel.org
drivers/acpi/resource.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-)