freebsd-nq/sys
Justin T. Gibbs 9f40021f28 Introduce a new, HVM compatible, paravirtualized timer driver for Xen.
Use this new driver for both PV and HVM instances.

This driver requires a Xen hypervisor that supports vector callbacks,
VCPUOP hypercalls, and reports that it has a "safe PV clock".

New timer driver:
Submitted by: will
Sponsored by: Spectra Logic Corporation

PV port to new driver, and bug fixes:
Submitted by: Roger Pau Monné
Sponsored by: Citrix Systems R&D

sys/dev/xen/timer/timer.c:
	- Register a PV timer device driver which (currently)
	  implements device_{identify,probe,attach} and stubs
	  device_detach.  The detach routine requires functionality
	  not provided by timecounters(4).  The suspend and resume
	  routines need additional work (due to Xen requiring that
	  the hypercalls be executed on the target VCPU), and aren't
	  needed for our purposes.

	- Make sure there can only be one device instance of this
	  driver, and that it only registers one eventtimers(4) and
	  one timecounters(4) device interface.  Make both interfaces
	  use PCPU data as needed.

	- Match, with a few style cleanups & API differences, the
	  Xen versions of the "fetch time" functions.

	- Document the magic scale_delta() better for the i386 version.

	- When registering the event timer, bind a separate event
	  channel for the timer VIRQ to the device's event timer
	  interrupt handler for each active VCPU.  Describe each
	  interrupt as "xen_et:c%d", so they can be identified per
	  CPU in "vmstat -i" or "show intrcnt" in KDB.

	- When scheduling a timer into the hypervisor, try up to
	  60 times if the hypervisor rejects the time as being in
	  the past.  In the common case, this retry shouldn't happen,
	  and if it does, it should only happen once.  This is
	  because the event timer advertises a minimum period of
	  100usec, which is only less than the usual hypercall round
	  trip time about 1 out of every 100 tries.  (Unlike other
	  similar drivers, this one actually checks whether the
	  hypervisor accepted the singleshot timer set hypercall.)

	- Implement a RTC PV clock based on the hypervisor wallclock.

sys/conf/files:
	- Add dev/xen/timer/timer.c if the kernel configuration
	  includes either the XEN or XENHVM options.

sys/conf/files.i386:
sys/i386/include/xen/xen_clock_util.h:
sys/i386/xen/clock.c:
sys/i386/xen/xen_clock_util.c:
sys/i386/xen/mp_machdep.c:
sys/i386/xen/xen_rtc.c:
	- Remove previous PV timer used in i386 XEN PV kernels, the
	  new timer introduced in this change is used instead (so
	  we share the same code between PVHVM and PV).

MFC after: 2 weeks
2013-08-29 23:11:58 +00:00
..
amd64 Implement vector callback for PVHVM and unify event channel implementations 2013-08-29 19:52:18 +00:00
arm Significantly reduce the cost, i.e., run time, of calls to madvise(..., 2013-08-29 15:49:05 +00:00
boot
bsm
cam Bump up the default timeouts for move commands in the ch(4) driver 2013-08-29 21:25:27 +00:00
cddl
compat
conf Introduce a new, HVM compatible, paravirtualized timer driver for Xen. 2013-08-29 23:11:58 +00:00
contrib
crypto
ddb
dev Introduce a new, HVM compatible, paravirtualized timer driver for Xen. 2013-08-29 23:11:58 +00:00
fs Support storing 7 additional file flags in tmpfs: 2013-08-28 22:12:56 +00:00
gdb
geom
gnu/fs/reiserfs
i386 Introduce a new, HVM compatible, paravirtualized timer driver for Xen. 2013-08-29 23:11:58 +00:00
ia64 Significantly reduce the cost, i.e., run time, of calls to madvise(..., 2013-08-29 15:49:05 +00:00
isa
kern Fix some issues in change 254760 pointed out by Bruce Evans: 2013-08-29 16:41:40 +00:00
kgssapi
libkern
mips Significantly reduce the cost, i.e., run time, of calls to madvise(..., 2013-08-29 15:49:05 +00:00
modules
net Convert the if_lagg rwlock to an rmlock. 2013-08-29 19:35:14 +00:00
net80211
netatalk
netgraph
netinet Merge r254336 from user/np/cxl_tuning. 2013-08-28 23:00:34 +00:00
netinet6
netipsec
netipx
netnatm
netpfil
netsmb
nfs
nfsclient
nfsserver
nlm
ofed
opencrypto
pc98
pci
powerpc Significantly reduce the cost, i.e., run time, of calls to madvise(..., 2013-08-29 15:49:05 +00:00
rpc
security
sparc64 Significantly reduce the cost, i.e., run time, of calls to madvise(..., 2013-08-29 15:49:05 +00:00
sys Implement vector callback for PVHVM and unify event channel implementations 2013-08-29 19:52:18 +00:00
teken
tools
ufs
vm Significantly reduce the cost, i.e., run time, of calls to madvise(..., 2013-08-29 15:49:05 +00:00
x86 Implement vector callback for PVHVM and unify event channel implementations 2013-08-29 19:52:18 +00:00
xdr
xen Implement vector callback for PVHVM and unify event channel implementations 2013-08-29 19:52:18 +00:00
Makefile