lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Date:	Fri, 6 Mar 2015 01:52:48 +0000
From:	"Zheng, Lv" <lv.zheng@...el.com>
To:	Gabriele Mazzotta <gabriele.mzt@...il.com>
CC:	"linux-acpi@...r.kernel.org" <linux-acpi@...r.kernel.org>,
	"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
	"Rafael J. Wysocki" <rjw@...ysocki.net>,
	Len Brown <lenb@...nel.org>,
	Mario Limonciello <Mario_Limonciello@...l.com>
Subject: RE: Unwanted delayed execution of _Qxx EC methods

Hi, Gabriele


I couldn't find this in my mail box, but saw it in the spinics.net.

For EC query, there is no spec definitions around its behavior.
Some EC firmware will have events queued (like edge triggering) while the others will keeps on reporting events when a condition is set (like level triggering).
I think this case is a "level triggering like events", it is very useful for us to learn.
We should be able to handle both firmware variations using one software architecture.
Supporting this becomes possible now because we are able to switch EC handling between polling/interrupt modes using enhanced ACPICA GPE APIs.
So we are able to switch EC into polling mode when SCI_EVT is detected and blocks further events and handles all transactions in polling mode.
After completing the _Qxx evaluation we then can switch back to the interrupt mode and unblock further events.

Could you please open a kernel Bugzilla entry at: https://bugzilla.kernel.org
So we can discuss there with more test cases considered.

Thanks and best regards
-Lv


From: Gabriele Mazzotta <gabriele.mzt@...il.com>
Date: Fri, Mar 6, 2015 at 1:20 AM
Subject: Unwanted delayed execution of _Qxx EC methods
To: linux-acpi@...r.kernel.org, linux-kernel@...r.kernel.org
Cc: rjw@...ysocki.net, lenb@...nel.org, Mario_Limonciello@...l.com


Hi,

I'd like to report a minor issue I have with the ACPI embedded controller
driver. My laptop (XPS13 9333) has two function keys to control the
screen brightness. When pressed, two _Qxx ACPI methods are called, one
to increase and one to decrease the brightness. Both the methods sleep
for 200ms.

This pause of 200ms is causing some problems when I keep one of the
function keys pressed. In this situation, more queries than needed
are scheduled for a delayed execution, making the screen brightness
change even after the function key is released.

Here below you can see some log lines that show the problem.

If I keep the function key pressed for X seconds, it will take roughly
2X seconds for all the queries to be executed.

Is there any way to prevent this from happening?

Thanks,
Gabriele

[   47.213439] ACPI : EC: ===== IRQ (1) =====
[   47.213455] ACPI : EC: EC_SC(R) = 0x20 SCI_EVT=1 BURST=0 CMD=0 IBF=0 OBF=0
[   47.213458] ACPI : EC: ***** Event started *****
[   47.213509] ACPI : EC: ***** Command(QR_EC) started *****
[   47.213522] ACPI : EC: ===== TASK (1) =====
[   47.213533] ACPI : EC: EC_SC(R) = 0x20 SCI_EVT=1 BURST=0 CMD=0 IBF=0 OBF=0
[   47.213536] ACPI : EC: EC_SC(W) = 0x84
[   47.213544] ACPI : EC: ***** Event stopped *****
[   47.213547] ACPI : EC: ***** Event started *****
[   47.218812] ACPI : EC: ===== TASK (1) =====
[   47.218829] ACPI : EC: EC_SC(R) = 0x2a SCI_EVT=1 BURST=0 CMD=1 IBF=1 OBF=0
[   47.220195] ACPI : EC: ===== IRQ (1) =====
[   47.220212] ACPI : EC: EC_SC(R) = 0x09 SCI_EVT=0 BURST=0 CMD=1 IBF=0 OBF=1
[   47.220219] ACPI : EC: EC_DATA(R) = 0x80
[   47.220222] ACPI : EC: ***** Command(QR_EC) hardware completion *****
[   47.220251] ACPI : EC: ***** Command(QR_EC) stopped *****
[   47.220260] ACPI : EC: ##### Query(0x80) scheduled #####
[   47.220273] ACPI : EC: ***** Command(QR_EC) started *****
[   47.220277] ACPI : EC: ===== TASK (1) =====
[   47.220290] ACPI : EC: EC_SC(R) = 0x08 SCI_EVT=0 BURST=0 CMD=1 IBF=0 OBF=0
[   47.220293] ACPI : EC: ##### Query(0x80) started #####
[   47.220301] ACPI : EC: EC_SC(W) = 0x84
[   47.220308] ACPI : EC: ***** Event stopped *****
[   47.221021] ACPI : EC: ===== IRQ (0) =====
[   47.221037] ACPI : EC: EC_SC(R) = 0x09 SCI_EVT=0 BURST=0 CMD=1 IBF=0 OBF=1
[   47.221045] ACPI : EC: EC_DATA(R) = 0x00
[   47.221048] ACPI : EC: ***** Command(QR_EC) hardware completion *****
[   47.221063] ACPI : EC: ***** Command(QR_EC) stopped *****
[   47.422969] ACPI : EC: ##### Query(0x80) stopped #####
[   47.487914] ACPI : EC: ===== IRQ (1) =====
[   47.487926] ACPI : EC: EC_SC(R) = 0x28 SCI_EVT=1 BURST=0 CMD=1 IBF=0 OBF=0
[   47.487928] ACPI : EC: ***** Event started *****
[   47.487962] ACPI : EC: ***** Command(QR_EC) started *****
[   47.487969] ACPI : EC: ===== TASK (1) =====
[   47.487978] ACPI : EC: EC_SC(R) = 0x28 SCI_EVT=1 BURST=0 CMD=1 IBF=0 OBF=0
[   47.487981] ACPI : EC: EC_SC(W) = 0x84
[   47.487986] ACPI : EC: ***** Event stopped *****
[   47.487988] ACPI : EC: ***** Event started *****
[   47.488557] ACPI : EC: ===== IRQ (1) =====
[   47.488580] ACPI : EC: EC_SC(R) = 0x09 SCI_EVT=0 BURST=0 CMD=1 IBF=0 OBF=1
[   47.488584] ACPI : EC: EC_DATA(R) = 0x80
[   47.488585] ACPI : EC: ***** Command(QR_EC) hardware completion *****
[   47.488602] ACPI : EC: ***** Command(QR_EC) stopped *****
[   47.488607] ACPI : EC: ##### Query(0x80) scheduled #####
[   47.488613] ACPI : EC: ***** Command(QR_EC) started *****
[   47.488615] ACPI : EC: ===== TASK (1) =====
[   47.488623] ACPI : EC: EC_SC(R) = 0x08 SCI_EVT=0 BURST=0 CMD=1 IBF=0 OBF=0
[   47.488624] ACPI : EC: ##### Query(0x80) started #####
[   47.488628] ACPI : EC: EC_SC(W) = 0x84
[   47.488633] ACPI : EC: ***** Event stopped *****
[   47.490090] ACPI : EC: ===== IRQ (0) =====
[   47.490100] ACPI : EC: EC_SC(R) = 0x09 SCI_EVT=0 BURST=0 CMD=1 IBF=0 OBF=1
[   47.490103] ACPI : EC: EC_DATA(R) = 0x00
[   47.490104] ACPI : EC: ***** Command(QR_EC) hardware completion *****
[   47.490110] ACPI : EC: ***** Command(QR_EC) stopped *****
[   47.577686] ACPI : EC: ===== IRQ (1) =====
[   47.577698] ACPI : EC: EC_SC(R) = 0x28 SCI_EVT=1 BURST=0 CMD=1 IBF=0 OBF=0
[   47.577699] ACPI : EC: ***** Event started *****
[   47.577722] ACPI : EC: ***** Command(QR_EC) started *****
[   47.577724] ACPI : EC: ===== TASK (1) =====
[   47.577731] ACPI : EC: EC_SC(R) = 0x28 SCI_EVT=1 BURST=0 CMD=1 IBF=0 OBF=0
[   47.577733] ACPI : EC: EC_SC(W) = 0x84
[   47.577736] ACPI : EC: ***** Event stopped *****
[   47.577737] ACPI : EC: ***** Event started *****
[   47.578309] ACPI : EC: ===== IRQ (1) =====
[   47.578315] ACPI : EC: EC_SC(R) = 0x09 SCI_EVT=0 BURST=0 CMD=1 IBF=0 OBF=1
[   47.578319] ACPI : EC: EC_DATA(R) = 0x80
[   47.578320] ACPI : EC: ***** Command(QR_EC) hardware completion *****
[   47.578328] ACPI : EC: ***** Command(QR_EC) stopped *****
[   47.578331] ACPI : EC: ##### Query(0x80) scheduled #####
[   47.578334] ACPI : EC: ***** Command(QR_EC) started *****
[   47.578336] ACPI : EC: ===== TASK (1) =====
[   47.578343] ACPI : EC: EC_SC(R) = 0x08 SCI_EVT=0 BURST=0 CMD=1 IBF=0 OBF=0
[   47.578345] ACPI : EC: EC_SC(W) = 0x84
[   47.578350] ACPI : EC: ***** Event stopped *****
[   47.580030] ACPI : EC: ===== IRQ (1) =====
[   47.580040] ACPI : EC: EC_SC(R) = 0x09 SCI_EVT=0 BURST=0 CMD=1 IBF=0 OBF=1
[   47.580044] ACPI : EC: EC_DATA(R) = 0x00
[   47.580045] ACPI : EC: ***** Command(QR_EC) hardware completion *****
[   47.580063] ACPI : EC: ***** Command(QR_EC) stopped *****
[   47.667627] ACPI : EC: ===== IRQ (1) =====
[   47.667638] ACPI : EC: EC_SC(R) = 0x28 SCI_EVT=1 BURST=0 CMD=1 IBF=0 OBF=0
[   47.667640] ACPI : EC: ***** Event started *****
[   47.667669] ACPI : EC: ***** Command(QR_EC) started *****
[   47.667671] ACPI : EC: ===== TASK (1) =====
[   47.667678] ACPI : EC: EC_SC(R) = 0x28 SCI_EVT=1 BURST=0 CMD=1 IBF=0 OBF=0
[   47.667680] ACPI : EC: EC_SC(W) = 0x84
[   47.667683] ACPI : EC: ***** Event stopped *****
[   47.667684] ACPI : EC: ***** Event started *****
[   47.668157] ACPI : EC: ===== IRQ (1) =====
[   47.668167] ACPI : EC: EC_SC(R) = 0x09 SCI_EVT=0 BURST=0 CMD=1 IBF=0 OBF=1
[   47.668171] ACPI : EC: EC_DATA(R) = 0x80
[   47.668172] ACPI : EC: ***** Command(QR_EC) hardware completion *****
[   47.668188] ACPI : EC: ***** Command(QR_EC) stopped *****
[   47.668192] ACPI : EC: ##### Query(0x80) scheduled #####
[   47.668198] ACPI : EC: ***** Command(QR_EC) started *****
[   47.668200] ACPI : EC: ===== TASK (1) =====
[   47.668209] ACPI : EC: EC_SC(R) = 0x08 SCI_EVT=0 BURST=0 CMD=1 IBF=0 OBF=0
[   47.668211] ACPI : EC: EC_SC(W) = 0x84
[   47.668216] ACPI : EC: ***** Event stopped *****
[   47.669836] ACPI : EC: ===== IRQ (1) =====
[   47.669847] ACPI : EC: EC_SC(R) = 0x09 SCI_EVT=0 BURST=0 CMD=1 IBF=0 OBF=1
[   47.669850] ACPI : EC: EC_DATA(R) = 0x00
[   47.669852] ACPI : EC: ***** Command(QR_EC) hardware completion *****
[   47.669880] ACPI : EC: ***** Command(QR_EC) stopped *****
[   47.691187] ACPI : EC: ##### Query(0x80) stopped #####
[   47.691192] ACPI : EC: ##### Query(0x80) started #####
[   47.792343] ACPI : EC: ===== IRQ (1) =====
[   47.792355] ACPI : EC: EC_SC(R) = 0x28 SCI_EVT=1 BURST=0 CMD=1 IBF=0 OBF=0
[   47.792357] ACPI : EC: ***** Event started *****
[   47.792387] ACPI : EC: ***** Command(QR_EC) started *****
[   47.792389] ACPI : EC: ===== TASK (1) =====
[   47.792396] ACPI : EC: EC_SC(R) = 0x28 SCI_EVT=1 BURST=0 CMD=1 IBF=0 OBF=0
[   47.792398] ACPI : EC: EC_SC(W) = 0x84
[   47.792401] ACPI : EC: ***** Event stopped *****
[   47.792405] ACPI : EC: ***** Event started *****
[   47.793445] ACPI : EC: ===== IRQ (1) =====
[   47.793456] ACPI : EC: EC_SC(R) = 0x09 SCI_EVT=0 BURST=0 CMD=1 IBF=0 OBF=1
[   47.793460] ACPI : EC: EC_DATA(R) = 0x80
[   47.793461] ACPI : EC: ***** Command(QR_EC) hardware completion *****
[   47.793480] ACPI : EC: ***** Command(QR_EC) stopped *****
[   47.793485] ACPI : EC: ##### Query(0x80) scheduled #####
[   47.793491] ACPI : EC: ***** Command(QR_EC) started *****
[   47.793493] ACPI : EC: ===== TASK (1) =====
[   47.793501] ACPI : EC: EC_SC(R) = 0x08 SCI_EVT=0 BURST=0 CMD=1 IBF=0 OBF=0
[   47.793504] ACPI : EC: EC_SC(W) = 0x84
[   47.793509] ACPI : EC: ***** Event stopped *****
[   47.794994] ACPI : EC: ===== IRQ (1) =====
[   47.795004] ACPI : EC: EC_SC(R) = 0x09 SCI_EVT=0 BURST=0 CMD=1 IBF=0 OBF=1
[   47.795007] ACPI : EC: EC_DATA(R) = 0x00
[   47.795009] ACPI : EC: ***** Command(QR_EC) hardware completion *****
[   47.795022] ACPI : EC: ***** Command(QR_EC) stopped *****
[   47.882247] ACPI : EC: ===== IRQ (1) =====
[   47.882260] ACPI : EC: EC_SC(R) = 0x28 SCI_EVT=1 BURST=0 CMD=1 IBF=0 OBF=0
[   47.882262] ACPI : EC: ***** Event started *****
[   47.882299] ACPI : EC: ***** Command(QR_EC) started *****
[   47.882302] ACPI : EC: ===== TASK (1) =====
[   47.882310] ACPI : EC: EC_SC(R) = 0x28 SCI_EVT=1 BURST=0 CMD=1 IBF=0 OBF=0
[   47.882312] ACPI : EC: EC_SC(W) = 0x84
[   47.882318] ACPI : EC: ***** Event stopped *****
[   47.882319] ACPI : EC: ***** Event started *****
[   47.882888] ACPI : EC: ===== IRQ (1) =====
[   47.882896] ACPI : EC: EC_SC(R) = 0x09 SCI_EVT=0 BURST=0 CMD=1 IBF=0 OBF=1
[   47.882900] ACPI : EC: EC_DATA(R) = 0x80
[   47.882901] ACPI : EC: ***** Command(QR_EC) hardware completion *****
[   47.882914] ACPI : EC: ***** Command(QR_EC) stopped *****
[   47.882919] ACPI : EC: ##### Query(0x80) scheduled #####
[   47.882924] ACPI : EC: ***** Command(QR_EC) started *****
[   47.882927] ACPI : EC: ===== TASK (1) =====
[   47.882935] ACPI : EC: EC_SC(R) = 0x08 SCI_EVT=0 BURST=0 CMD=1 IBF=0 OBF=0
[   47.882937] ACPI : EC: EC_SC(W) = 0x84
[   47.882942] ACPI : EC: ***** Event stopped *****
[   47.884614] ACPI : EC: ===== IRQ (1) =====
[   47.884627] ACPI : EC: EC_SC(R) = 0x09 SCI_EVT=0 BURST=0 CMD=1 IBF=0 OBF=1
[   47.884632] ACPI : EC: EC_DATA(R) = 0x00
[   47.884634] ACPI : EC: ***** Command(QR_EC) hardware completion *****
[   47.884655] ACPI : EC: ***** Command(QR_EC) stopped *****
[   47.895378] ACPI : EC: ##### Query(0x80) stopped #####
[   47.895388] ACPI : EC: ##### Query(0x80) started #####
[   48.099496] ACPI : EC: ##### Query(0x80) stopped #####
[   48.099502] ACPI : EC: ##### Query(0x80) started #####
[   48.303660] ACPI : EC: ##### Query(0x80) stopped #####
[   48.303665] ACPI : EC: ##### Query(0x80) started #####
[   48.507823] ACPI : EC: ##### Query(0x80) stopped #####
--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ