Skip to content

increase timeout in ipts_control_wait_flush - #32

Open
leofricke wants to merge 1 commit into
linux-surface:masterfrom
leofricke:timeout_wait_flush
Open

increase timeout in ipts_control_wait_flush#32
leofricke wants to merge 1 commit into
linux-surface:masterfrom
leofricke:timeout_wait_flush

Conversation

@leofricke

Copy link
Copy Markdown

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 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.

@DoubleLama

DoubleLama commented Jul 29, 2026

Copy link
Copy Markdown

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants