RE: [PATCH 70/73] ACPICA: Fix to disable unknown spurious GPEs

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

 



>Currently, there is no way to tell if GPE hanler method would
>do Notify() to some device.

Yep, I thought that might be the issue.

So, GPE is an interrupt mechanism with no way to map an interrupt to a
particular device or driver. So I guess that it is then appropriate for
us to simply enable all GPEs that have associated _Lxx/_Exx methods, and
hope that a driver will come along sometime to handle any associated
notifies. Meaning that all GPEs from the device will be missed until
such time as the driver is loaded.

What if ACPICA did not enable GPEs until after it received a call from
the host that the namespace has been scanned, and all ACPI-related
drivers have been loaded and initialized? Instead of one-by-one enabling
GPEs as drivers came up, wait until *all* drivers are ready?

Bob


>-----Original Message-----
>From: Alexey Starikovskiy [mailto:aystarik@xxxxxxxxx]
>Sent: Thursday, May 22, 2008 9:56 AM
>To: Moore, Robert
>Cc: Zhang, Rui; Therien, Guy; Len Brown; Alexey Starikovskiy; linux-
>acpi@xxxxxxxxxxxxxxx; Zhao, Yakui
>Subject: Re: [PATCH 70/73] ACPICA: Fix to disable unknown spurious GPEs
>
>Moore, Robert wrote:
>> Rui,
>>
>> Thanks for examining this issue in detail. Your proposal to
>> read/update/write the GPE enable register to simply disable one GPE
>> sounds interesting. I want to think about this a bit more -- it has
been
>> a long time since I have looked closely at the GPE handling.
>>
>> With my discussions with Alexey Starikovskiy, we have concluded that
>> there is something incorrect about the current design, where there
exist
>> windows where a GPE could come in with no driver available to handle
it.
>>
>> I'm no longer intimate with the GPE handling model, but it would seem
to
>> me that GPEs should be treated like other interrupts where an
interrupt
>> level remains disabled until a driver is installed which in turn
calls
>> the kernel to install a handler for that interrupt. Only then can the
>> interrupt be safely enabled.
>>
>> There is added complexity since drivers (with the exception of the
>> Embedded Controller) do not handle GPEs directly; instead, an
_Lxx/_Exx
>> method is run which in turn (usually) generates a Notify on a device.
We
>> expect the device driver for the device to have installed a notify
>> handler.
>>
>> So it would seem to me that it would be architecturally best to leave
a
>> GPE disabled until either a handler for the GPE is installed, or a
>> notify handler is installed for the device associated with the GPE.
>>
>>
>Currently, there is no way to tell if GPE hanler method would
>do Notify() to some device.  There could be any number of calls to
other
>methods, which might cause call of Notify().
>So, probably this is a dead end.
>The only implementable way I see is to move enabling of _Lxx/_Exx GPEs
to
>after bus scan, there we have devices autoloaded and installed.
>
>Regards,
>Alex.
--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux IBM ACPI]     [Linux Power Management]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux