svn commit: r211288 - head/etc

Jung-uk Kim jkim at FreeBSD.org
Fri Aug 13 20:43:20 UTC 2010


Author: jkim
Date: Fri Aug 13 20:43:19 2010
New Revision: 211288
URL: http://svn.freebsd.org/changeset/base/211288

Log:
  Enforce ACPI timer as the timecounter hardware before we change sleep state
  unless it is the current timer.  When we have resumed successfully, restore
  the previous timecounter hardware if it was changed earlier.  Only the ACPI
  timer is guaranteed to increase monotonically between S-state changes.

Modified:
  head/etc/rc.resume
  head/etc/rc.suspend

Modified: head/etc/rc.resume
==============================================================================
--- head/etc/rc.resume	Fri Aug 13 20:29:43 2010	(r211287)
+++ head/etc/rc.resume	Fri Aug 13 20:43:19 2010	(r211288)
@@ -43,6 +43,12 @@ if [ -r /var/run/rc.suspend.pid ]; then
 	echo 'rc.resume: killed rc.suspend that was still around'
 fi
 
+if [ -r /var/run/rc.suspend.tch ]; then
+	_t=`cat /var/run/rc.suspend.tch`
+	/sbin/sysctl -n kern.timecounter.hardware=$_t > /dev/null 2>&1
+	/bin/rm -f /var/run/rc.suspend.tch
+fi
+
 # Turns on a power supply of a card in the slot inactivated.
 # See also contrib/pccardq.c (only for PAO users).
 # pccardq | awk -F '~' '$5 == "inactive" \

Modified: head/etc/rc.suspend
==============================================================================
--- head/etc/rc.suspend	Fri Aug 13 20:29:43 2010	(r211287)
+++ head/etc/rc.suspend	Fri Aug 13 20:43:19 2010	(r211288)
@@ -43,6 +43,18 @@ fi
 
 echo $$ 2> /dev/null > /var/run/rc.suspend.pid
 
+_t=`/sbin/sysctl -n kern.timecounter.hardware 2> /dev/null`
+case ${_t#ACPI-} in
+fast|safe)
+	/bin/rm -f /var/run/rc.suspend.tch
+	;;
+*)
+	( /sbin/sysctl -n kern.timecounter.hardware=ACPI-fast || \
+	    /sbin/sysctl -n kern.timecounter.hardware=ACPI-safe ) \
+	    > /dev/null 2>&1 && echo $_t > /var/run/rc.suspend.tch
+	;;
+esac
+
 # If you have troubles on suspending with PC-CARD modem, try this.
 # See also contrib/pccardq.c (Only for PAO users).
 # pccardq | awk -F '~' '$5 == "filled" && $4 ~ /uart/ \


More information about the svn-src-all mailing list