Skip to content
  • David Woodhouse's avatar
    3de75ed3
    hw/xen: don't clear map_track[] in xen_gnttab_reset() · 3de75ed3
    David Woodhouse authored
    
    
    The refcounts actually correspond to 'active_ref' structures stored in a
    GHashTable per "user" on the backend side (mostly, per XenDevice).
    
    If we zero map_track[] on reset, then when the backend drivers get torn
    down and release their mapping we hit the assert(s->map_track[ref] != 0)
    in gnt_unref().
    
    So leave them in place. Each backend driver will disconnect and reconnect
    as the guest comes back up again and reconnects, and it all works out OK
    in the end as the old refs get dropped.
    
    Cc: qemu-stable@nongnu.org
    Fixes: de26b261 ("hw/xen: Implement soft reset for emulated gnttab")
    Signed-off-by: default avatarDavid Woodhouse <dwmw@amazon.co.uk>
    Reviewed-by: default avatarPaul Durrant <paul@xen.org>
    3de75ed3
    hw/xen: don't clear map_track[] in xen_gnttab_reset()
    David Woodhouse authored
    
    
    The refcounts actually correspond to 'active_ref' structures stored in a
    GHashTable per "user" on the backend side (mostly, per XenDevice).
    
    If we zero map_track[] on reset, then when the backend drivers get torn
    down and release their mapping we hit the assert(s->map_track[ref] != 0)
    in gnt_unref().
    
    So leave them in place. Each backend driver will disconnect and reconnect
    as the guest comes back up again and reconnects, and it all works out OK
    in the end as the old refs get dropped.
    
    Cc: qemu-stable@nongnu.org
    Fixes: de26b261 ("hw/xen: Implement soft reset for emulated gnttab")
    Signed-off-by: default avatarDavid Woodhouse <dwmw@amazon.co.uk>
    Reviewed-by: default avatarPaul Durrant <paul@xen.org>
Loading