Re: Recent GPE patches - some questions.

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

 



Hi,

On Wednesday 03 February 2010, Moore, Robert wrote:
> Matthew, 
> 
> Thanks for your response to my questions.
> 
> I've been thinking about these interfaces:
> 
> acpi_ref_runtime_gpe
> acpi_ref_wakeup_gpe
> acpi_unref_runtime_gpe
> acpi_unref_wakeup_gpe
> 
> While I understand the need for the reference counting mechanism, it is a
> good idea to support the shared GPEs, I think it may be simpler and cleaner
> to simply not directly expose this mechanism to GPE users.

Well, it already is exposed to the users and in a way that doesn't look very
clean to me.  Namely, to enable a wakeup GPE for run time, the caller needs to
set its type to ACPI_GPE_TYPE_WAKE_RUN before calling acpi_enable_gpe(),
while with the Matthew's interface the only thing the caller would need to do
would be calling acpi_ref_runtime_gpe().

> I'm suggesting that we add the reference counting mechanism to the existing
> AcpiEnableGpe and AcpiDisableGpe interfaces and update their descriptions.
> We already hide the differences between wake, run, and wake-run GPEs behind
> these interfaces.

Not really, as I said above.

Moreover, we need two reference counters, because there are cases when a
GPE should be enabled for wakeup and not enabled for run time and vice versa.

> Adding the reference count semantic to these interfaces changes their
> behavior in a fairly simple way:
> 
> Support for shared GPEs:
> AcpiEnableGpe: For a given GPE, it is actually enabled only on the first call.
> AcpiDisableGpe: For a given GPE, it is actually disabled only on the last call.

I suppose you mean acpi_enable_gpe() and acpi_disable_gpe().

That wouldn't work, because sometimes we need to actually hardware-disable
GPEs and hardware-enable them regardless of the refcount mechanism, like for
example in the EC suspend and resume routines.

That said, if you are afraid that the new interface may be cumbersome for the
callers, I think we can introduce just two callbacks,

acpi_get_gpe()
acpi_put_gpe()

taking 3 arguments each, where the two first arguments are like for the
Matthew's callbacks and the third argument is a mask of two bits:

ACPI_GPE_TYPE_WAKE
ACPI_GPE_TYPE_RUNTIME

that will tell the callback whether to use the wakeup or runtime counter for
reference counting (if called with ACPI_GPE_TYPE_WAKE_RUN, both
reference counters will be modified at the same time).

Please tell me what you think.

Rafael
--
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