freebsd-dev/sys/x86/xen
Roger Pau Monné 35fdb32d86 xen-intr: fix removal of event channels during resume
Event channel handlers cannot be removed during resume because there might
be an interrupt thread running on a CPU currently blocked in the
cpususpend_handler, which prevents the call to intr_remove_handler from
finishing and completely freezes the system during resume. r291022 tried to
fix this by allowing recursion in intr_remove_handler, but that's clearly
not enough.

Instead don't remove the handlers at the interrupt resume phase, and let
each driver remove the handler by itself during resume. In order to do this,
change the opaque event channel handler cookie to use the global interrupt
vector instead of the event channel port. The event channel port cannot be
used because after resume all event channels are reset, and the port numbers
can change.

Sponsored by:		Citrix Systems R&D
MFC after:		5 days
2016-07-29 16:34:54 +00:00
..
hvm.c xen: automatically disable MSI-X interrupt migration 2016-07-12 08:43:09 +00:00
pv.c Remove misc NULL checks after M_WAITOK allocations. 2016-05-10 10:26:07 +00:00
pvcpu_enum.c xen/intr: improve handling of legacy IRQs 2015-02-16 16:37:59 +00:00
xen_apic.c xen: Set ipi_{alloc,free} even for UP 2016-04-07 07:00:00 +00:00
xen_intr.c xen-intr: fix removal of event channels during resume 2016-07-29 16:34:54 +00:00
xen_msi.c msi: add Xen MSI implementation 2014-09-30 16:46:45 +00:00
xen_nexus.c Remove support for Xen PV domU kernels. Support for HVM domU kernels 2015-04-30 15:48:48 +00:00
xen_pci_bus.c xen: create a new PCI bus override 2014-12-09 18:03:25 +00:00
xenpv.c Replace all resource occurrences of '0UL/~0UL' with '0/~0'. 2016-03-03 05:07:35 +00:00