xen: Fix event channel callback via INTX/GSI
[ Upstream commit 3499ba81 ] For a while, event channel notification via the PCI platform device has been broken, because we attempt to communicate with xenstore before we even have notifications working, with the xs_reset_watches() call in xs_init(). We tend to get away with this on Xen versions below 4.0 because we avoid calling xs_reset_watches() anyway, because xenstore might not cope with reading a non-existent key. And newer Xen *does* have the vector callback support, so we rarely fall back to INTX/GSI delivery. To fix it, clean up a bit of the mess of xs_init() and xenbus_probe() startup. Call xs_init() directly from xenbus_init() only in the !XS_HVM case, deferring it to be called from xenbus_probe() in the XS_HVM case instead. Then fix up the invocation of xenbus_probe() to happen either from its device_initcall if the callback is available early enough, or when the callback is finally set up. This means that the ha...
Showing
- arch/arm/xen/enlighten.c 1 addition, 1 deletionarch/arm/xen/enlighten.c
- drivers/xen/events/events_base.c 0 additions, 10 deletionsdrivers/xen/events/events_base.c
- drivers/xen/platform-pci.c 0 additions, 1 deletiondrivers/xen/platform-pci.c
- drivers/xen/xenbus/xenbus.h 1 addition, 0 deletionsdrivers/xen/xenbus/xenbus.h
- drivers/xen/xenbus/xenbus_comms.c 0 additions, 8 deletionsdrivers/xen/xenbus/xenbus_comms.c
- drivers/xen/xenbus/xenbus_probe.c 67 additions, 14 deletionsdrivers/xen/xenbus/xenbus_probe.c
- include/xen/xenbus.h 1 addition, 1 deletioninclude/xen/xenbus.h
Please register or sign in to comment