You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
As far as i debugged this, the module switches the mode from event to poll (see ipts_eds1_switch_mode) thus calling ipts_control_restart. During shutdown the IPTS_CMD_QUIESCE_IO command sometimes times out in ipts_control_wait_flush returning EAGAIN (-11).
If the module tries to start again, the device is still "flushing" leading to the failure in ipts_control_get_device_info, which obviously makes the touchscreen not working.
Increasing the timeout in ipts_control_wait_flush to 10 sec fixes this on my device, but maybe you have a nicer solution?? Alternatively we could increase the msleep timeout in ipts_control_restart but i think this PR should be the better option.
Same thing here on a Surface Pro 5, kernel 6.19.8-surface-3. Your diagnosis matches exactly what I see: QUIESCE_IO times out with -11 in ipts_control_wait_flush during the event to poll switch, then the restart fails.
More often than on your machine though. Counted over 13 boots in my journal, 7 logged recv failed: -11, so about half rather than one in ten.
When it degenerates it ends up as the kthread_stop use-after-free from issue #1181, with iptsd stuck in D state and suspend and shutdown hanging after that.
For what it is worth, ishland's fork takes a broader approach, bumping the timeout for every ipts_mei_recv call from 1s to 2s in mei.h. I built that branch against 6.19.8 headers and it works here. Your one line is more targeted.
Happy to test this patch if that helps move it along.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This fixes a rare issue on my Surface Pro 5 (Arch Linux). Happens about every tenth boot.
log: dmesg.txt
As far as i debugged this, the module switches the mode from event to poll (see
ipts_eds1_switch_mode) thus callingipts_control_restart. During shutdown theIPTS_CMD_QUIESCE_IOcommand sometimes times out inipts_control_wait_flushreturningEAGAIN(-11).If the module tries to start again, the device is still "flushing" leading to the failure in
ipts_control_get_device_info, which obviously makes the touchscreen not working.Increasing the timeout in
ipts_control_wait_flushto 10 sec fixes this on my device, but maybe you have a nicer solution?? Alternatively we could increase themsleeptimeout inipts_control_restartbut i think this PR should be the better option.