qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [v2] xen-pt: Fix PCI devices re-attach failed


From: Stefano Stabellini
Subject: Re: [Qemu-devel] [v2] xen-pt: Fix PCI devices re-attach failed
Date: Tue, 13 Jan 2015 11:57:11 +0000
User-agent: Alpine 2.02 (DEB 1266 2009-07-14)

On Tue, 13 Jan 2015, Liang Li wrote:
> Use the 'xl pci-attach $DomU $BDF' command to attach more than
> 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.
> 
> If using the 'address_space_memory' as the parameter of
> 'memory_listener_register', 'xen_pt_region_del' will not be called
> if the memory region's name is not 'xen-pci-pt-*' when the devices
> is detached. This will cause the device's related QemuOpts object
> not be released properly.
> 
> Using the device's address space can avoid such issue, because the
> calling count of 'xen_pt_region_add' when attaching and the calling
> count of 'xen_pt_region_del' when detaching is the same, so all the
> memory region ref and unref by the 'xen_pt_region_add' and
> 'xen_pt_region_del' can be released properly.
> 
> Signed-off-by: Liang Li <address@hidden>
> Reviewed-by: Paolo Bonzini <address@hidden>
> Reported-by: Longtao Pang <address@hidden>

Added to my queue


>  hw/xen/xen_pt.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/hw/xen/xen_pt.c b/hw/xen/xen_pt.c
> index c1bf357..f2893b2 100644
> --- a/hw/xen/xen_pt.c
> +++ b/hw/xen/xen_pt.c
> @@ -736,7 +736,7 @@ static int xen_pt_initfn(PCIDevice *d)
>      }
>  
>  out:
> -    memory_listener_register(&s->memory_listener, &address_space_memory);
> +    memory_listener_register(&s->memory_listener, &s->dev.bus_master_as);
>      memory_listener_register(&s->io_listener, &address_space_io);
>      XEN_PT_LOG(d,
>                 "Real physical device %02x:%02x.%d registered 
> successfully!\n",
> -- 
> 1.9.1
> 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]