From fadf055d5f891901b8efd78c7652edcc14001158 Mon Sep 17 00:00:00 2001 From: qzed Date: Wed, 7 Aug 2019 17:13:57 +0200 Subject: [PATCH] Update systemd-sleep script for IPTS changes Integrate the changes discussed in [1] as proposed by @kitakar5525 in [2]. The IPTS suspend/resume mechanism should work without the need for unloading/reloading the corresponding modules, so we comment-out and update the workaround and will handle any issues coming from that via the IPTS drivers. The workaround is not completely removed yet as want to provide an easy-to-apply temporary fix in case anything goes wrong. [1]: https://github.com/jakeday/linux-surface/issues/544 [2]: https://github.com/jakeday/linux-surface/issues/544#issuecomment-519126757 --- root/lib/systemd/system-sleep/sleep | 44 ++++++++++++++++++++--------- 1 file changed, 31 insertions(+), 13 deletions(-) diff --git a/root/lib/systemd/system-sleep/sleep b/root/lib/systemd/system-sleep/sleep index 9bf539813..b8ec47c07 100644 --- a/root/lib/systemd/system-sleep/sleep +++ b/root/lib/systemd/system-sleep/sleep @@ -1,27 +1,36 @@ #!/bin/bash case $1 in - pre) - # unload the modules before going to sleep + pre) # unload the modules before going to sleep + # handle wifi issues systemctl stop NetworkManager.service - modprobe -r intel_ipts - modprobe -r mei_me - modprobe -r mei modprobe -r mwifiex_pcie; modprobe -r mwifiex; modprobe -r cfg80211; + + ## IPTS: see notes below + ## > Remove IPTS from ME side + #modprobe -r intel_ipts + #modprobe -r mei_hdcp + #modprobe -r mei_me + #modprobe -r mei + ## > Remove IPTS from i915 side + #for i in $(find /sys/kernel/debug/dri -name i915_intel_ipts_cleanup); do echo 1 > $i; done ;; - post) - # need to cycle the modules on a resume and after the reset is called, so unload... - modprobe -r intel_ipts - modprobe -r mei_me - modprobe -r mei + post) # re-load modules after resume + ## IPTS: see notes below + ## > Load IPTS from i915 side + #for i in $(find /sys/kernel/debug/dri -name i915_intel_ipts_init); do echo 1 > $i; done + ## > Load IPTS from ME side + #modprobe mei + #modprobe mei_me + #modprobe mei_hdcp + #modprobe intel_ipts + + # handle wifi issues: complete cycle modprobe -r mwifiex_pcie; modprobe -r mwifiex; modprobe -r cfg80211; # and reload - modprobe -i intel_ipts - modprobe -i mei_me - modprobe -i mei modprobe -i cfg80211; modprobe -i mwifiex; modprobe -i mwifiex_pcie; @@ -29,3 +38,12 @@ case $1 in systemctl restart NetworkManager.service ;; esac + +# Notes: +# - For IPTS, see +# > https://github.com/jakeday/linux-surface/issues/544#issuecomment-519126757 +# for an explanation/discussion. We do not unload/reload modules for now as +# the IPTS drivers should be able to resume/suspend without this. If you +# experience any issues on suspend/resume, please file an appropriate issue or +# join the discussion linked above so that we can fix it. As a temporary +# workaround, you may want to uncomment the IPTS-related lines above.