Now dom0 will initiate real suspend process in VMs with PCI devices, so workaround with unloading modules no longer needed. Additionally it looks like unloading ehci-pci causes suspend problems on some hardware (C200 Series Chipset).
		
			
				
	
	
		
			34 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			34 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/bin/sh
 | 
						|
 | 
						|
action=$1
 | 
						|
[ -z "$action" ] && action=suspend
 | 
						|
 | 
						|
MODULES_BLACKLIST=""
 | 
						|
if [ -r /etc/qubes-suspend-module-blacklist ]; then
 | 
						|
    MODULES_BLACKLIST="$MODULES_BLACKLIST `cat /etc/qubes-suspend-module-blacklist`"
 | 
						|
fi
 | 
						|
if [ -r /rw/config/suspend-module-blacklist ]; then
 | 
						|
    MODULES_BLACKLIST="$MODULES_BLACKLIST `cat /rw/config/suspend-module-blacklist`"
 | 
						|
fi
 | 
						|
 | 
						|
if [ x"$action" == x"suspend" ]; then
 | 
						|
    nmcli nm sleep true || service NetworkManager stop
 | 
						|
    # Force interfaces down, just in case when NM didn't done it
 | 
						|
    for if in `ls /sys/class/net|grep -v "lo\|vif"`; do 
 | 
						|
        ip l s $if down
 | 
						|
    done
 | 
						|
    LOADED_MODULES=""
 | 
						|
    for mod in $MODULES_BLACKLIST; do
 | 
						|
        if lsmod |grep -q $mod; then
 | 
						|
            LOADED_MODULES="$LOADED_MODULES $mod"
 | 
						|
            modprobe -r $mod
 | 
						|
        fi
 | 
						|
    done
 | 
						|
    echo $LOADED_MODULES > /var/run/qubes/suspend-modules-loaded
 | 
						|
else
 | 
						|
    for mod in `cat /var/run/qubes/suspend-modules-loaded`; do
 | 
						|
        modprobe $mod
 | 
						|
    done
 | 
						|
    nmcli nm sleep false || { [ -x /bin/systemctl ] && systemctl start NetworkManager.service; } || service qubes-core-netvm start
 | 
						|
fi
 |