Ver código fonte

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
qzed 6 anos atrás
pai
commit
fadf055d5f
1 arquivos alterados com 31 adições e 13 exclusões
  1. 31 13
      root/lib/systemd/system-sleep/sleep

+ 31 - 13
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.