[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] xen-pt: Fix PCI devices re-attach failed
> From: Stefano Stabellini > Sent: Monday, January 12, 2015 7:36 PM > > On Wed, 24 Dec 2014, Liang Li wrote: > > Use the 'xl pci-attach $DomU $BDF' command to attach more then > > one PCI devices to the guest, then detach the devices with > > 'xl pci-detach $DomU $BDF', after that, re-attach these PCI > > devices again, an error message will be reported like following: > > > > libxl: error: libxl_qmp.c:287:qmp_handle_error_response: receive > > an error message from QMP server: Duplicate ID 'pci-pt-03_10.1' > > for device. > > > > The count of calling xen_pt_region_add and xen_pt_region_del are > > not the same will cause the XenPCIPassthroughState and it's related > > QemuOpts object not be released properly. > > Thanks for the patch! > > From this description, I don't quite understand why the > memory_region_ref and memory_region_unref calls are wrong. What do > you > mean by "The count of calling xen_pt_region_add and xen_pt_region_del > are not the same"? > > On unplug xen_pt_region_del does not get called? > Or the memory region argument is not exactly the same as the one > initially passed to xen_pt_region_add? > agree. Liang, could you elaborate how the patch is associated with above explanation? :-) > > > Signed-off-by: Liang Li <liang.z.li@xxxxxxxxx> > > Reported-by: Longtao Pang <longtaox.pang@xxxxxxxxx> > > --- > > hw/xen/xen_pt.c | 4 ---- > > 1 file changed, 4 deletions(-) > > > > diff --git a/hw/xen/xen_pt.c b/hw/xen/xen_pt.c > > index c1bf357..523b8a2 100644 > > --- a/hw/xen/xen_pt.c > > +++ b/hw/xen/xen_pt.c > > @@ -588,7 +588,6 @@ static void xen_pt_region_add(MemoryListener *l, > MemoryRegionSection *sec) > > XenPCIPassthroughState *s = container_of(l, XenPCIPassthroughState, > > memory_listener); > > > > - memory_region_ref(sec->mr); > > xen_pt_region_update(s, sec, true); > > } > > > > @@ -598,7 +597,6 @@ static void xen_pt_region_del(MemoryListener *l, > MemoryRegionSection *sec) > > memory_listener); > > > > xen_pt_region_update(s, sec, false); > > - memory_region_unref(sec->mr); > > } > > > > static void xen_pt_io_region_add(MemoryListener *l, > MemoryRegionSection *sec) > > @@ -606,7 +604,6 @@ static void xen_pt_io_region_add(MemoryListener > *l, MemoryRegionSection *sec) > > XenPCIPassthroughState *s = container_of(l, XenPCIPassthroughState, > > io_listener); > > > > - memory_region_ref(sec->mr); > > xen_pt_region_update(s, sec, true); > > } > > > > @@ -616,7 +613,6 @@ static void xen_pt_io_region_del(MemoryListener *l, > MemoryRegionSection *sec) > > io_listener); > > > > xen_pt_region_update(s, sec, false); > > - memory_region_unref(sec->mr); > > } > > > > static const MemoryListener xen_pt_memory_listener = { > > -- > > 1.9.1 > > > > _______________________________________________ > Xen-devel mailing list > Xen-devel@xxxxxxxxxxxxx > http://lists.xen.org/xen-devel _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |