freebsd-dev/sys/conf
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
..
files Introduce a new, HVM compatible, paravirtualized timer driver for Xen. 2013-08-29 23:11:58 +00:00
files.amd64 Implement vector callback for PVHVM and unify event channel implementations 2013-08-29 19:52:18 +00:00
files.arm Rename device vfp to option VFP and retire the ARM_VFP_SUPPORT option. This 2013-08-17 18:51:38 +00:00
files.i386 Introduce a new, HVM compatible, paravirtualized timer driver for Xen. 2013-08-29 23:11:58 +00:00
files.ia64 - Trim an unused and bogus Makefile for mount_smbfs. 2013-06-28 21:00:08 +00:00
files.mips - Trim an unused and bogus Makefile for mount_smbfs. 2013-06-28 21:00:08 +00:00
files.pc98 - Trim an unused and bogus Makefile for mount_smbfs. 2013-06-28 21:00:08 +00:00
files.powerpc - Trim an unused and bogus Makefile for mount_smbfs. 2013-06-28 21:00:08 +00:00
files.sparc64 - Trim an unused and bogus Makefile for mount_smbfs. 2013-06-28 21:00:08 +00:00
kern.mk Spell extensions correctly. 2013-05-20 19:41:34 +00:00
kern.post.mk Some objects - such as *_genassym.o are not hooked into 2013-08-14 22:19:29 +00:00
kern.pre.mk opensolaris code: translate INVARIANTS to DEBUG and ZFS_DEBUG 2013-08-06 15:51:56 +00:00
kmod_syms.awk
kmod.mk amd64: use -mno-omit-leaf-frame-pointer in addition to -fno-omit-frame-pointer 2013-07-09 08:42:02 +00:00
ldscript.amd64 The new binutils has correctly redefined MAXPAGESIZE on amd64 as 0x200000 2011-03-28 06:35:17 +00:00
ldscript.arm Correctly align the unwind tables. Without this clang may incorrectly align 2013-03-10 00:47:19 +00:00
ldscript.i386 Step 2: sync sys/conf/ldscript.i386 with the binutils 2.17.50 version, 2010-11-05 19:40:27 +00:00
ldscript.ia64 Stop linking against a direct-mapped virtual address and instead 2011-04-30 20:49:00 +00:00
ldscript.mips Let the linker pick the right output format automatically 2010-11-13 18:38:35 +00:00
ldscript.mips.cfe Remove commented out _DYNAMIC sections. 2011-01-20 19:20:23 +00:00
ldscript.mips.mips64 Remove commented out _DYNAMIC sections. 2011-01-20 19:20:23 +00:00
ldscript.mips.octeon1 In fact, we don't need any of these __DYNAMIC. it is a.out leftover and commented out. 2011-01-20 19:24:50 +00:00
ldscript.powerpc In fact, we don't need any of these __DYNAMIC. it is a.out leftover and commented out. 2011-01-20 19:24:50 +00:00
ldscript.powerpc64 Add the .opd section, this is helps booting a profiled kernel. 2012-01-20 18:52:31 +00:00
ldscript.sparc64 Merge binutils 2.17.50 to head. This brings a number of improvements to 2011-02-18 20:54:12 +00:00
Makefile.amd64 Assemble linux32_locore.s and ia32_sigtramp.S with clang integrated assembler. 2013-08-27 18:35:04 +00:00
Makefile.arm 2 years, 10 months, 22 days after the projects/arm_eabi branch was created 2013-07-16 19:15:19 +00:00
Makefile.i386 Add basic support for FDT to i386 & amd64. This change includes: 2013-05-21 03:05:49 +00:00
Makefile.ia64 Ooops. Bump the version to 600009, not 600008. 2010-05-02 06:23:15 +00:00
Makefile.mips Fill out fake preload structure to let userland tools like pmc(3) know 2012-03-15 05:29:51 +00:00
Makefile.pc98 MFi386: r232263 2012-11-10 14:56:35 +00:00
Makefile.powerpc Remove duplication and centralize testing of various config(8)ed features. 2012-09-12 14:19:40 +00:00
Makefile.sparc64
makeLINT.mk Generate a LINT for powerpc and for powerpc64. 2013-04-11 22:18:20 +00:00
makeLINT.sed Match the files directive and all the ways to add or subtract options 2011-10-04 17:11:38 +00:00
newvers.sh Use realpath(1) to determine the location of the newvers.sh script, 2013-08-11 13:57:14 +00:00
NOTES Allow UART_POLL_FREQ to be set as a kernel option as well as via tunable 2013-08-19 15:51:30 +00:00
options Allow UART_POLL_FREQ to be set as a kernel option as well as via tunable 2013-08-19 15:51:30 +00:00
options.amd64 The PADLOCK_RNG and RDRAND_RNG kernel options are now devices. 2013-08-21 22:43:29 +00:00
options.arm Rename device vfp to option VFP and retire the ARM_VFP_SUPPORT option. This 2013-08-17 18:51:38 +00:00
options.i386 The PADLOCK_RNG and RDRAND_RNG kernel options are now devices. 2013-08-21 22:43:29 +00:00
options.ia64 Port the new PV entry allocator from amd64/i386. This allocator has two 2012-10-26 03:02:39 +00:00
options.mips Add an option for the GE FES based packet engines. Its board IDs 2013-04-23 09:40:42 +00:00
options.pc98 MFC r199852, r202387, r202441, r202534: 2010-03-29 15:39:17 +00:00
options.powerpc Initial support for running FreeBSD on the Nintendo Wii. We're able to 2012-08-21 06:31:26 +00:00
options.sparc64 - While Netra X1 generally show no ill effects when registering a power 2013-03-02 00:37:31 +00:00
systags.sh
WITHOUT_SOURCELESS Move WITHOUT_SOURCELESS_* files to sys/conf/ in order to avoid "universe" 2012-02-12 14:55:27 +00:00
WITHOUT_SOURCELESS_HOST Import HighPoint DC Series Data Center HBA (DC7280 and R750) driver. 2013-07-06 07:49:41 +00:00
WITHOUT_SOURCELESS_UCODE Import OpenBSD's rsu(4) WLAN driver. 2013-07-30 02:07:57 +00:00