]> www.infradead.org Git - users/dwmw2/qemu.git/commitdiff
hw/xen: don't clear map_track[] in xen_gnttab_reset()
authorDavid Woodhouse <dwmw@amazon.co.uk>
Wed, 18 Oct 2023 12:31:20 +0000 (13:31 +0100)
committerDavid Woodhouse <dwmw@amazon.co.uk>
Wed, 25 Oct 2023 11:45:22 +0000 (12:45 +0100)
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.

Fixes: de26b2619789 ("hw/xen: Implement soft reset for emulated gnttab")
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Paul Durrant <paul@xen.org>
hw/i386/kvm/xen_gnttab.c

index 21c30e36591824af0cab43917305d823eec6e4bb..839ec920a14198bbecf60d41e73bced35b5d6312 100644 (file)
@@ -541,7 +541,5 @@ int xen_gnttab_reset(void)
     s->entries.v1[GNTTAB_RESERVED_XENSTORE].flags = GTF_permit_access;
     s->entries.v1[GNTTAB_RESERVED_XENSTORE].frame = XEN_SPECIAL_PFN(XENSTORE);
 
-    memset(s->map_track, 0, s->max_frames * ENTRIES_PER_FRAME_V1);
-
     return 0;
 }