Bug 151681 - pata_legacy causes interrupt conflict on IRQ 14, breaking GPIO/I2C
Summary: pata_legacy causes interrupt conflict on IRQ 14, breaking GPIO/I2C
Status: NEW
Alias: None
Product: Drivers
Classification: Unclassified
Component: Parallel (show other bugs)
Hardware: Intel Linux
: P1 normal
Assignee: drivers_parallel
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2016-08-07 05:21 UTC by Reuben D'Netto
Modified: 2016-08-07 05:21 UTC (History)
0 users

See Also:
Kernel Version: 4.4+
Tree: Mainline
Regression: No


Attachments

Description Reuben D'Netto 2016-08-07 05:21:29 UTC
Summary:
I2C trackpad doesn't work on Lenovo Yoga 700-11ISK, due to an interrupt conflict between pata_legacy and sunrisepoint-pinctrl.

Kernel log (excerpts):
    [  +0.000209] genirq: Flags mismatch irq 14. 00000080 (INT344B:00) vs. 00000000 (platform[pata_legacy.0])

    [  +0.000079] sunrisepoint-pinctrl INT344B:00: failed to request interrupt
    [  +0.020469] sunrisepoint-pinctrl: probe of INT344B:00 failed with error -16

    [  +0.226303] i2c_hid i2c-ITE8350:00: Failed to get GPIO interrupt
    [  +0.009366] i2c_hid: probe of i2c-ITE8350:00 failed with error -2
    [  +0.019873] i2c_hid i2c-SYNA2B23:00: Failed to get GPIO interrupt
    [  +0.012687] i2c_hid: probe of i2c-SYNA2B23:00 failed with error -2

Analysis:
- pata_legacy acquires IRQ 14 without IRQF_SHARED.
- the pin controller (sunrise point) is therefore unable to initialise the GPIO chip
- i2c_hid then fails on calling gpiod_get()
- trackpad is connected via I2C, and therefore unusable

Workaround:
pata_legacy is an IDE driver, and therefore not needed on a modern laptop. Since it's included in the initrd, blacklisting via modprobe.d is insufficient - it needs to be either blacklisted via a kernel parameter or removed from the initrd completely (how to best do this is distro-specific).

Possible fix:
pata_legacy should release the interrupt after it has established there are no IDE devices present.

Additional notes:
This affects kernel 4.4 and later. 4.3 is unaffected.
Tested under Sabayon amd64.

Since Sunrise Point is the chipset used with Intel Skylake CPUs, other Skylake devices may be affected.

Note You need to log in before you can comment on or make changes to this bug.