svn commit: r314094 - head/sys/dev/xen/timer
Roger Pau Monné
royger at FreeBSD.org
Wed Feb 22 09:22:19 UTC 2017
Author: royger
Date: Wed Feb 22 09:22:17 2017
New Revision: 314094
URL: https://svnweb.freebsd.org/changeset/base/314094
Log:
xen/timer: mark the Xen PV timer as not safe for suspension
Note that the timer itself fully supports suspension, but due to the lack of
ordering during the resume process FreeBSD cannot guarantee that the timer is
resumed before any device attempts to use it.
Submitted by: Liuyingdong <liuyingdong at huawei.com>
Reviewed by: royger
Differential Revision: https://reviews.freebsd.org/D9639
Modified:
head/sys/dev/xen/timer/timer.c
Modified: head/sys/dev/xen/timer/timer.c
==============================================================================
--- head/sys/dev/xen/timer/timer.c Wed Feb 22 08:49:52 2017 (r314093)
+++ head/sys/dev/xen/timer/timer.c Wed Feb 22 09:22:17 2017 (r314094)
@@ -417,8 +417,20 @@ xentimer_attach(device_t dev)
/* Register the timecounter. */
sc->tc.tc_name = "XENTIMER";
sc->tc.tc_quality = XENTIMER_QUALITY;
- sc->tc.tc_flags = TC_FLAGS_SUSPEND_SAFE;
/*
+ * FIXME: due to the lack of ordering during resume, FreeBSD cannot
+ * guarantee that the Xen PV timer is resumed before any other device
+ * attempts to make use of it, so mark it as not safe for suspension
+ * (ie: remove the TC_FLAGS_SUSPEND_SAFE flag).
+ *
+ * NB: This was not a problem in previous FreeBSD versions because the
+ * timer was directly attached to the nexus, but it is an issue now
+ * that the timer is attached to the xenpv bus, and thus resumed
+ * later.
+ *
+ * sc->tc.tc_flags = TC_FLAGS_SUSPEND_SAFE;
+ */
+ /*
* The underlying resolution is in nanoseconds, since the timer info
* scales TSC frequencies using a fraction that represents time in
* terms of nanoseconds.
More information about the svn-src-all
mailing list