Re: [PATCH] ACPI: EC: do transaction from interrupt context

Rafael J. Wysocki
2008-09-26T14:09:49Z

On Friday, 26 of September 2008, Zhao, Yakui wrote:
> Alan gives a suggestion that after processing the EC notification event, EC driver
> should continue to issue the query command and process the EC notification
> event until the query command returns zero.
> But this suggestion will break my laptop. On my laptop when issuing the query
> command, a non-zero query event is returned but it can't be processed.(There
> is no corresponding ACPI _Qxx object). At the same time the SCI_EVT bit won't
> be cleared. In such case OS can't exit the function of acpi_ec_query_handler,
> which causes that the acpid kernel thread can't work well.

Well, perhaps we should exit acpi_ec_query_handler() if SCI_EVT is clear _or_
the processing of an event fails due to the lack of a _Qxx object? Alex?

> In fact according to my analysis IMO Alexey's patch will break my laptop.

That obviously would be a regression.

> But now the laptop is not in my hand and I can't do the test. After I own the
> laptop again, I will do the test and attach the corresponding info.

OK, how much time is it going to take, approximately?

> At the same time there are two generic issues in this patch:
> a. spin_lock is overkill. When 2000 EC I/O read/write are executed, the
> CPU interrupt will be disabled for about 1.5ms. This will affect the normal
> laptops.

OTOH, I think we need _some_ locking in there in order to prevent races from
happening.

> b. the local variable that resides in process stack space is used in
> interrupt-context.

Which one?

Rafael