68 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			68 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|  | # | ||
|  | # $Header: profiles/power/start Exp $ | ||
|  | # | ||
|  | 
 | ||
|  | local cpu pci usb hda nmi vmw aspm scsi | ||
|  | declare -A opt | ||
|  | opt=( | ||
|  | 	[cpu]=${1:-powersave} | ||
|  | 	[pci]=${2:-auto} | ||
|  | 	[usb]=${3:-auto} | ||
|  | 	[hda]=${5:-1} | ||
|  | 	[nmi]=${6:-0} | ||
|  | 	[vmw]=${7:-1000} | ||
|  | 	[aspm]=${8:-default} | ||
|  | 	[scsi]=${4:-min_power} | ||
|  | ) | ||
|  | 
 | ||
|  | for cpu in /sys/devices/system/cpu/cpu[0-9]*; do | ||
|  | 	echo ${opt[cpu]} >$cpu/cpufreq/scaling_governor | ||
|  | done | ||
|  | 
 | ||
|  | [ -e /sys/module/pcie_aspm/parameters/policy ] && | ||
|  | 	echo ${opt[aspm]} >/sys/module/pcie_aspm/parameters/policy >/dev/null 2>&1 | ||
|  | for scsi in /sys/class/scsi_host/host[0-9]*; do | ||
|  | 	[ -e $scsi/link_power_management_policy ] || continue | ||
|  | 	case "$(< $scsi/proc_name)" in | ||
|  | 		(ahci|usb-storage) | ||
|  | 			echo ${opt[scsi]} >$scsi/link_power_management_policy;; | ||
|  | 		(*) ;; | ||
|  | 	esac | ||
|  | done | ||
|  | 
 | ||
|  | # set usb host to auto powersave | ||
|  | for usb in /sys/bus/usb/devices/{usb[0-9],[0-9]-[0-9]}; do | ||
|  | 	echo ${opt[usb]} >$usb/power/control | ||
|  | done | ||
|  | 
 | ||
|  | # pci power control | ||
|  | for pci in /sys/bus/pci/devices/0000:0*; do  | ||
|  | 	echo ${opt[pci]} >$pci/power/control | ||
|  | done | ||
|  | 
 | ||
|  | # snd-hda-intel powersave | ||
|  | [ -e /sys/module/snd_hda_intel/parameters/power_save ] && | ||
|  | 	echo ${opt[hda]} >/sys/module/snd_hda_intel/parameters/power_save | ||
|  | 
 | ||
|  | # turn off NMI watchdog | ||
|  | [ -e /proc/sys/kernel/nmi_watchdog ] && | ||
|  | 	echo ${opt[nmi]} >/proc/sys/kernel/nmi_watchdog | ||
|  | 
 | ||
|  | # VM write back timeout | ||
|  | [ -e /proc/sys/vm/dirty_writeback_centisecs ] && | ||
|  | 	echo ${opt[vmw]} >/proc/sys/vm/dirty_writeback_centisecs | ||
|  | 
 | ||
|  | unset opt | ||
|  | 
 | ||
|  | [[ "${HPROFILE[power]}" == "network" ]] || return | ||
|  | local iface running | ||
|  | 
 | ||
|  | for iface in $(ifconfig | sed -nre 's/(^[ew].*[0-9]{1}):.*/\1/p'); do | ||
|  | 	running="$(ifconfig $iface | sed -nre /$iface/'s/.*(RUNNING).*/\1/p')" | ||
|  | 	[[ "$running" ]] || ifconfig "$iface" down | ||
|  | done | ||
|  | 
 | ||
|  | # | ||
|  | # vim:fenc=utf-8:ft=sh:ci:pi:sts=0:sw=4:ts=4: | ||
|  | # |