• David Woodhouse's avatar
    xen: Fix XenStore initialisation for XS_LOCAL · 5f46400f
    David Woodhouse authored
    In commit 3499ba81 ("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: 3499ba81 ("xen: Fix event channel callback via INTX/GSI")
    Reported-by: default avatarJuergen Gross <jgross@suse.com>
    Signed-off-by: default avatarDavid Woodhouse <dwmw@amazon.co.uk>
    Reviewed-by: default avatarJuergen Gross <jgross@suse.com>
    Link: https://lore.kernel.org/r/4c9af052a6e0f6485d1de43f2c38b1461996db99.camel@infradead.orgSigned-off-by: default avatarJuergen Gross <jgross@suse.com>
    5f46400f
xenbus_probe.c 21.6 KB