Re: [PATCH v2] gpiolib-acpi: Register GpioInt ACPI event handlers from a late_initcall

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Aug 14, 2018 at 4:07 PM Hans de Goede <hdegoede@xxxxxxxxxx> wrote:

> GpioInt ACPI event handlers may see there IRQ triggered immediately
> after requesting the IRQ (esp. level triggered ones). This means that they
> may run before any other (builtin) drivers have had a chance to register
> their OpRegion handlers, leading to errors like this:
>
> [    1.133274] ACPI Error: No handler for Region [PMOP] ((____ptrval____)) [UserDefinedRegion] (20180531/evregion-132)
> [    1.133286] ACPI Error: Region UserDefinedRegion (ID=141) has no handler (20180531/exfldio-265)
> [    1.133297] ACPI Error: Method parse/execution failed \_SB.GPO2._L01, AE_NOT_EXIST (20180531/psparse-516)
>
> We already defer the manual initial trigger of edge triggered interrupts
> by running it from a late_initcall handler, this commit replaces this with
> deferring the entire acpi_gpiochip_request_interrupts() call till then,
> fixing the problem of some OpRegions not being registered yet.
>
> Note that this removes the need to have a list of edge triggered handlers
> which need to run, since the entire acpi_gpiochip_request_interrupts() call
> is now delayed, acpi_gpiochip_request_interrupt() can call these directly
> now.
>
> Acked-by: Mika Westerberg <mika.westerberg@xxxxxxxxxxxxxxx>
> Signed-off-by: Hans de Goede <hdegoede@xxxxxxxxxx>
> ---
> Changes in v2:
> -Small correction to commit msg
> -Drop unnecessary "if (handle)" check before acpi_walk_resources()

Patch applied for fixes. Unless Andy says no.

Yours,
Linus Walleij



[Index of Archives]     [Linux SPI]     [Linux Kernel]     [Linux ARM (vger)]     [Linux ARM MSM]     [Linux Omap]     [Linux Arm]     [Linux Tegra]     [Fedora ARM]     [Linux for Samsung SOC]     [eCos]     [Linux Fastboot]     [Gcc Help]     [Git]     [DCCP]     [IETF Announce]     [Security]     [Linux MIPS]     [Yosemite Campsites]

  Powered by Linux