]> www.infradead.org Git - users/dwmw2/linux.git/commit
xen: Fix XenStore initialisation for XS_LOCAL xen-pci-irq
authorDavid Woodhouse <dwmw@amazon.co.uk>
Tue, 26 Jan 2021 16:22:16 +0000 (16:22 +0000)
committerDavid Woodhouse <dwmw@amazon.co.uk>
Tue, 26 Jan 2021 16:37:37 +0000 (16:37 +0000)
commit37565889e9e8542670ac7cf09a05fa57fb38278c
treea9cc45328c4f911a5d12aee84b5c193be11830b9
parentdcda487c9c2e80ad177cdc34ae2068bbe5dada07
xen: Fix XenStore initialisation for XS_LOCAL

In commit 3499ba8198ca ("xen: Fix event channel callback via INTX/GSI")
I reworked the triggering of xenbus_probe().

I tried to simplify things by taking out the workqueue based startup
triggered from wake_waiting(); the somewhat poorly named xenbus IRQ
handler.

I missed the fact that in the XS_LOCAL case (Dom0 starting its own
xenstored or xenstore-stubdom, which happens after the kernel is booted
completely), that IRQ-based trigger is still actually needed.

So... put it back, except more cleanly. By just spawning a xenbus_probe
thread which waits on xb_waitq and runs the probe the first time it
gets woken, just as the workqueue-based hack did.

This is actually a nicer approach for *all* the back ends with different
interrupt methods, and we can switch them all over to that without the
complex conditions for when to trigger it. But not in -rc6. This is
the minimal fix for the regression, although it's a step in the right
direction instead of doing a partial revert and actually putting the
workqueue back. It's also simpler than the workqueue.

Fixes: 3499ba8198ca ("xen: Fix event channel callback via INTX/GSI")
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
drivers/xen/xenbus/xenbus_probe.c