freebsd-skq/sys/amd64/include
Justin T. Gibbs 428b7ca290 Add support for suspend/resume/migration operations when running as a
Xen PVHVM guest.

Submitted by:	Roger Pau Monné
Sponsored by:	Citrix Systems R&D
Reviewed by:	gibbs
Approved by:	re (blanket Xen)
MFC after:	2 weeks

sys/amd64/amd64/mp_machdep.c:
sys/i386/i386/mp_machdep.c:
	- Make sure that are no MMU related IPIs pending on migration.
	- Reset pending IPI_BITMAP on resume.
	- Init vcpu_info on resume.

sys/amd64/include/intr_machdep.h:
sys/i386/include/intr_machdep.h:
sys/x86/acpica/acpi_wakeup.c:
sys/x86/x86/intr_machdep.c:
sys/x86/isa/atpic.c:
sys/x86/x86/io_apic.c:
sys/x86/x86/local_apic.c:
	- Add a "suspend_cancelled" parameter to pic_resume().  For the
	  Xen PIC, restoration of interrupt services differs between
	  the aborted suspend and normal resume cases, so we must provide
	  this information.

sys/dev/acpica/acpi_timer.c:
sys/dev/xen/timer/timer.c:
sys/timetc.h:
	- Don't swap out "suspend safe" timers across a suspend/resume
	  cycle.  This includes the Xen PV and ACPI timers.

sys/dev/xen/control/control.c:
	- Perform proper suspend/resume process for PVHVM:
		- Suspend all APs before going into suspension, this allows us
		  to reset the vcpu_info on resume for each AP.
		- Reset shared info page and callback on resume.

sys/dev/xen/timer/timer.c:
	- Implement suspend/resume support for the PV timer. Since FreeBSD
	  doesn't perform a per-cpu resume of the timer, we need to call
	  smp_rendezvous in order to correctly resume the timer on each CPU.

sys/dev/xen/xenpci/xenpci.c:
	- Don't reset the PCI interrupt on each suspend/resume.

sys/kern/subr_smp.c:
	- When suspending a PVHVM domain make sure there are no MMU IPIs
	  in-flight, or we will get a lockup on resume due to the fact that
	  pending event channels are not carried over on migration.
	- Implement a generic version of restart_cpus that can be used by
	  suspended and stopped cpus.

sys/x86/xen/hvm.c:
	- Implement resume support for the hypercall page and shared info.
	- Clear vcpu_info so it can be reset by APs when resuming from
	  suspension.

sys/dev/xen/xenpci/xenpci.c:
sys/x86/xen/hvm.c:
sys/x86/xen/xen_intr.c:
	- Support UP kernel configurations.

sys/x86/xen/xen_intr.c:
	- Properly rebind per-cpus VIRQs and IPIs on resume.
2013-09-20 05:06:03 +00:00
..
pc
xen Implement vector callback for PVHVM and unify event channel implementations 2013-08-29 19:52:18 +00:00
_align.h
_bus.h
_inttypes.h
_limits.h
_stdint.h
_types.h
acpica_machdep.h Merge acpica_machdep.h for amd64 and i386 and move to x86. In fact, these 2013-08-13 22:05:10 +00:00
apicvar.h Implement vector callback for PVHVM and unify event channel implementations 2013-08-29 19:52:18 +00:00
apm_bios.h
asm.h libc: Access _logname_valid more efficiently. 2013-08-17 19:24:58 +00:00
asmacros.h
atomic.h Remove empty lines before return statements for style consistency. 2013-08-21 22:05:58 +00:00
bus_dma.h
bus.h
clock.h Unsynchronized TSCs on the host require special handling in bhyve: 2013-04-10 05:59:07 +00:00
counter.h Fix issues with zeroing and fetching the counters, on x86 and ppc64. 2013-07-01 02:48:27 +00:00
cpu.h Implement PV IPIs for PVHVM guests and further converge PV and HVM 2013-09-06 22:17:02 +00:00
cpufunc.h Implement PV IPIs for PVHVM guests and further converge PV and HVM 2013-09-06 22:17:02 +00:00
cputypes.h
db_machdep.h
elf.h Convert machine/elf.h, machine/frame.h, machine/sigframe.h, 2013-02-20 17:39:52 +00:00
endian.h
exec.h
fdt.h Add basic support for FDT to i386 & amd64. This change includes: 2013-05-21 03:05:49 +00:00
float.h
floatingpoint.h
fpu.h
frame.h Convert machine/elf.h, machine/frame.h, machine/sigframe.h, 2013-02-20 17:39:52 +00:00
gdb_machdep.h
ieeefp.h
in_cksum.h
intr_machdep.h Add support for suspend/resume/migration operations when running as a 2013-09-20 05:06:03 +00:00
iodev.h
kdb.h
limits.h
md_var.h x86: detect mwait capabilities and extensions, when present 2013-07-28 17:54:42 +00:00
memdev.h
metadata.h Add basic support for FDT to i386 & amd64. This change includes: 2013-05-21 03:05:49 +00:00
minidump.h
mp_watchdog.h
nexusvar.h
npx.h
ofw_machdep.h Add basic support for FDT to i386 & amd64. This change includes: 2013-05-21 03:05:49 +00:00
param.h Rename VM_NDOMAIN into MAXMEMDOM and move it into machine/param.h in 2013-05-07 22:46:24 +00:00
pcb.h Retire write-only PCB_GS32BIT pcb flag on amd64. 2013-05-09 21:42:43 +00:00
pci_cfgreg.h
pcpu.h Implement PV IPIs for PVHVM guests and further converge PV and HVM 2013-09-06 22:17:02 +00:00
pmap.h Tidy up some loose ends in the PCID code: 2013-09-04 23:31:29 +00:00
pmc_mdep.h
ppireg.h
proc.h
profile.h
psl.h
ptrace.h
reg.h
reloc.h
resource.h
runq.h
segments.h
setjmp.h
sf_buf.h On those machines, where sf_bufs do not represent any real object, make 2013-09-06 05:37:49 +00:00
sigframe.h Convert machine/elf.h, machine/frame.h, machine/sigframe.h, 2013-02-20 17:39:52 +00:00
signal.h Convert machine/elf.h, machine/frame.h, machine/sigframe.h, 2013-02-20 17:39:52 +00:00
smp.h Tidy up some loose ends in the PCID code: 2013-09-04 23:31:29 +00:00
specialreg.h
stack.h
stdarg.h
sysarch.h
timerreg.h
trap.h
tss.h
ucontext.h Convert machine/elf.h, machine/frame.h, machine/sigframe.h, 2013-02-20 17:39:52 +00:00
varargs.h
vdso.h
vm.h
vmm_dev.h Implement guest vcpu pinning using 'pthread_setaffinity_np(3)'. 2013-02-11 20:36:07 +00:00
vmm_instruction_emul.h Allow caller to skip 'guest linear address' validation when doing instruction 2013-03-28 21:26:19 +00:00
vmm.h Go way past 11 and bump bhyve's max vCPUs to 16. 2013-09-10 03:48:18 +00:00
vmparam.h Bump up the maximum addressable memory on amd64 systems from 1TB to 4TB. 2013-08-17 19:49:08 +00:00