diff options
author | David Woodhouse <dwmw@amazon.co.uk> | 2021-01-26 17:01:49 +0000 |
---|---|---|
committer | Juergen Gross <jgross@suse.com> | 2021-01-27 08:59:52 +0100 |
commit | 5f46400f7a6a4fad635d5a79e2aa5a04a30ffea1 (patch) | |
tree | 85b377d2b16d13a0b5d6583fa3ec14a908afa16c /include | |
parent | 0549cd67b01016b579047bce045b386202a8bcfc (diff) |
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")
Reported-by: Juergen Gross <jgross@suse.com>
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Juergen Gross <jgross@suse.com>
Link: https://lore.kernel.org/r/4c9af052a6e0f6485d1de43f2c38b1461996db99.camel@infradead.org
Signed-off-by: Juergen Gross <jgross@suse.com>
Diffstat (limited to 'include')
0 files changed, 0 insertions, 0 deletions