freebsd-skq/sys/dev/acpica
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
..
Osd Tidy up global locks for ACPICA. There is no functional change. 2013-08-13 21:34:03 +00:00
acpi_acad.c Use DEVMETHOD_END macro defined in sys/bus.h instead of {0, 0} sentinel on device_method_t arrays 2013-01-30 18:01:20 +00:00
acpi_battery.c Prevent a division by zero with some broken batteries 2011-11-26 13:43:50 +00:00
acpi_button.c Use DEVMETHOD_END macro defined in sys/bus.h instead of {0, 0} sentinel on device_method_t arrays 2013-01-30 18:01:20 +00:00
acpi_cmbat.c Use DEVMETHOD_END macro defined in sys/bus.h instead of {0, 0} sentinel on device_method_t arrays 2013-01-30 18:01:20 +00:00
acpi_cpu.c MFcalloutng (r247427 by mav): 2013-02-28 11:27:01 +00:00
acpi_dock.c Use DEVMETHOD_END macro defined in sys/bus.h instead of {0, 0} sentinel on device_method_t arrays 2013-01-30 18:01:20 +00:00
acpi_ec.c Use DEVMETHOD_END macro defined in sys/bus.h instead of {0, 0} sentinel on device_method_t arrays 2013-01-30 18:01:20 +00:00
acpi_hpet.c Add "else" missed at r248154. 2013-03-11 17:29:09 +00:00
acpi_hpet.h Always check current HPET counter value after comparator programming to 2011-08-16 21:51:29 +00:00
acpi_if.m Remove PCI_SET_POWERSTATE method from acpi.c and eradicate all PCI-specific 2010-10-19 19:53:06 +00:00
acpi_isab.c - There's no need to overwrite the default device method with the default 2011-11-22 21:28:20 +00:00
acpi_lid.c Use DEVMETHOD_END macro defined in sys/bus.h instead of {0, 0} sentinel on device_method_t arrays 2013-01-30 18:01:20 +00:00
acpi_package.c
acpi_pci_link.c - Some BIOSes use an Extended IRQ resource descriptor in _PRS for a link 2013-04-22 15:51:06 +00:00
acpi_pci.c Use DEVMETHOD_END macro defined in sys/bus.h instead of {0, 0} sentinel on device_method_t arrays 2013-01-30 18:01:20 +00:00
acpi_pcib_acpi.c Don't perform the acpi_DeviceIsPresent() check for PCI-PCI bridges. If 2013-07-03 17:26:05 +00:00
acpi_pcib_pci.c Use DEVMETHOD_END macro defined in sys/bus.h instead of {0, 0} sentinel on device_method_t arrays 2013-01-30 18:01:20 +00:00
acpi_pcib.c Don't perform the acpi_DeviceIsPresent() check for PCI-PCI bridges. If 2013-07-03 17:26:05 +00:00
acpi_pcibvar.h
acpi_perf.c Use DEVMETHOD_END macro defined in sys/bus.h instead of {0, 0} sentinel on device_method_t arrays 2013-01-30 18:01:20 +00:00
acpi_powerres.c Fix a typo in a comment. 2013-03-17 07:28:17 +00:00
acpi_quirk.c
acpi_quirks
acpi_resource.c Workaround some broken BIOSes that specify edge-sensitive but active-low 2013-07-16 14:42:16 +00:00
acpi_smbat.c Use DEVMETHOD_END macro defined in sys/bus.h instead of {0, 0} sentinel on device_method_t arrays 2013-01-30 18:01:20 +00:00
acpi_smbus.h
acpi_thermal.c acpi_thermal: Warn about insane _TMP temperature only once 2013-08-30 19:21:12 +00:00
acpi_throttle.c Use DEVMETHOD_END macro defined in sys/bus.h instead of {0, 0} sentinel on device_method_t arrays 2013-01-30 18:01:20 +00:00
acpi_timer.c Add support for suspend/resume/migration operations when running as a 2013-09-20 05:06:03 +00:00
acpi_video.c When checking to see if a video output's _ADR matches an entry in the 2012-10-19 19:17:43 +00:00
acpi.c - Some BIOSes use an Extended IRQ resource descriptor in _PRS for a link 2013-04-22 15:51:06 +00:00
acpiio.h small cleanup of acpi battery status setting and checking 2010-12-17 16:21:30 +00:00
acpivar.h Update MAX_TASKS to scale a bit based on MAXCPU 2012-11-12 18:09:25 +00:00