ACPI/EC: Improve EC driver's state machine to survive with firmware that refuses to respond QR_EC when SCI_EVT isn't set.
Get series with b4
b4 am [email protected]Versions newest first
- v1 Latest2 patches 4 repliesIn review
Patches in v1 No applies recorded yet
| # | Subject and files | Size | Replies | Applied |
|---|---|---|---|---|
| 1/2 | ACPI/EC: Add support to disallow QR_EC to be issued when SCI_EVT isn't set.drivers/ | +16 | 1 reply | |
| 2/2 | ACPI/EC: Add support to disallow QR_EC to be issued before completing the previous QR_EC.drivers/ | +2 | 3 replies |
Reviews trailers per patch
None of the 2 patches has a Reviewed-by or Acked-by.
| Patch | Alexander Mezin |
|---|---|
| 1/2 | Reported-and-tested-by Reported-and-tested-by |
| 2/2 | Reported-and-tested-by Reported-and-tested-by Reported-and-tested-by |
Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes.
Cover letter [PATCH 0/2] ACPI/EC: Improve EC driver's state machine to survive with firmware that refuses to respond QR_EC when SCI_EVT isn't set.
It is reported for Acer Aspire V5-573G that the EC firmware on this platform refuses to respond QR_EC when SCI_EVT isn't set.
This is basically a firmware issue, such firmware is not completely compliant with current ACPI specification where the 0x00 return value for QR_EC is mentioned. Thus Linux EC driver doesn't handle this and expects firmware can always respond something (for example, 0x00 to indicate "no outstanding events") even when SCI_EVT isn't set.
We can see delay issue on such platform. This is because the work item that has issued QR_EC has to wait until timeout in this case, and the _Qxx method evaluation work item queued after QR_EC one is delayed.
A previous race fix makes the occurrence rate of this issue higher than before:
Commit: c0d653412fc8450370167a3268b78fc772ff9c87
Subject: ACPI / EC: Fix race condition in ec_transaction_completed()
But this is a seperate bug for the particular buggy firmware, and we are not able to improve the race fix to fix it, we need to add new support code to enhance our state machine to survive this situation.
This patchset implements required enhancements to fix this issue.
PATCH 1 is the required fix for this issue and PATCH 2 is a useful improvement.
Lv Zheng (2):
ACPI/EC: Add support to disallow QR_EC to be issued when SCI_EVT
isn't set.
ACPI/EC: Add support to disallow QR_EC to be issued before completing
the previous QR_EC.
drivers/acpi/ec.c | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-)
Signature · 1 line
1.7.10