On Thu, Apr 25, 2024 at 02:37:11PM -0600, Karthikeyan Ramasubramanian wrote:
On boards where EC IRQ is not wake capable, EC does not trigger IRQ to signal any non-wake events until EC receives host resume event.
The sentence looks irrelevant to the fix. Presumably, EC should send those pending non-wake events after it receives host resume event.
Commit 47ea0ddb1f56 ("platform/chrome: cros_ec_lpc: Separate host command and irq disable") separated enabling IRQ and sending resume event host command into early_resume and resume_complete stages respectively. This separation leads to host not handling certain events posted during a small time window between early_resume and resume_complete stages. This change moves handling all events that happened during suspend after sending host resume event.
The regression you see is probably not due to the "separation" but an unwanted code reorder.
Before 47ea0ddb1f56[1], a resume is: 1) Enable IRQ. 2) Send resume event. 3) Handle pending events.
After 47ea0ddb1f56[2], a resume is: 1) Enable IRQ. 2) Handle pending events. 3) Send resume event.
If there are some more events pending between 2) and 3), they would be handled further late.
[1]: https://elixir.bootlin.com/linux/v6.6/source/drivers/platform/chrome/cros_ec... [2]: https://elixir.bootlin.com/linux/v6.7/source/drivers/platform/chrome/cros_ec...
I see what the patch tries to fix but the commit message makes less sense to me. Please fix accordingly.