You are not logged in.
EDIT: I marked this as solved prematurely
I have Surface Book, and am running on it kernel 4.14 with patches from here (though the problem persists on newer kernels as well). When I resume from suspend, sometimes (but not always) I lose the touchscreen altogether. It disappears from
xinput --list
and nothing I do (namely, re-scanning devices and restarting modules) seems to bring it back. It's still listed in /sys/bus/pci/devices, but isn't recognized as an input device.
The issue occurs with hibernate as well, but less often.
Removing the touchscreen modules (imtel_ipts, mei_me and mei) before suspend and reloading them after doesn't solve the issue.
So I tried to remove the modules, then the pci device altogether before suspend, and rescan the device and the modules after:
case $1/$2 in
pre/*)
rmmod intel_ipts
rmmod mei_me
rmmod mei
sleep 0.01
echo 1 > /sys/bus/pci/devices/0000\:00\:16.0/remove
echo 1 > /sys/bus/pci/devices/0000\:00\:16.4/remove
sleep 0.01
;;
post/*)
echo 1 > /sys/bus/pci/rescan
modprobe intel_ipts
modprobe mei_me
modprobe mei
;;
esac
0000:00:16.0 and 0000:00:16.4 are the two pci devices listed on sysfs for the touchscreen driver.
I was actually able to run the pre and post parts without suspending in between 100 times without issue. However, for some reason if I suspend it still seems to affect the removed hardware somehow.
I feel like time also matters, i.e. problems happen less often if I suspend for a short time, but I can't say that for certain.
Last edited by Togop (2018-10-02 08:10:48)
Offline
I was able to confirm that time matters for some reason.
Namely, a 1000 iterations of this caused no problem:
#unload ipts modules
rmmod intel_ipts
rmmod mei_me
rmmod mei
sleep 0.1
echo 1 > "/sys/bus/pci/devices/0000:00:16.0/remove"
echo 1 > "/sys/bus/pci/devices/0000:00:16.4/remove"
sleep 0.1
echo 1 > "/sys/bus/pci/rescan"
sleep 0.1
#load ipts modules
modprobe intel_ipts
modprobe mei_me
modprobe mei
On the other hand, only 100 (likely much fewer would to too) iterations of a similar script with "sleep 60" between the remove and rescan broke my touch. And an overnight suspend breaks it pretty much every time. Any idea what could cause that?
Offline