qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH v2] xen-platform: Cleanup network infrastructure


From: Anthony PERARD
Subject: Re: [Qemu-devel] [PATCH v2] xen-platform: Cleanup network infrastructure when emulated NICs are unplugged
Date: Fri, 7 Jul 2017 16:33:13 +0100
User-agent: Mutt/1.8.3 (2017-05-23)

On Fri, Jun 30, 2017 at 01:50:28PM +0100, Ross Lagerwall wrote:
> When the guest unplugs the emulated NICs, cleanup the peer for each NIC
> as it is not needed anymore. Most importantly, this allows the tap
> interfaces which QEMU holds open to be closed and removed.
> 
> Signed-off-by: Ross Lagerwall <address@hidden>
> ---
> 
> In v2: Don't call nic_cleanup(), just remove the peer of the NIC which
> will cleanup up the tap devices. This means that QEMU doesn't segv
> when shutting down.
> 
>  hw/i386/xen/xen_platform.c | 11 +++++++++++
>  1 file changed, 11 insertions(+)
> 
> diff --git a/hw/i386/xen/xen_platform.c b/hw/i386/xen/xen_platform.c
> index 1419fc9..f231558 100644
> --- a/hw/i386/xen/xen_platform.c
> +++ b/hw/i386/xen/xen_platform.c
> @@ -102,8 +102,19 @@ static void unplug_nic(PCIBus *b, PCIDevice *d, void *o)
>      }
>  }
>  
> +/* Remove the peer of the NIC device. Normally, this would be a tap device. 
> */
> +static void del_nic_peer(NICState *nic, void *opaque)
> +{
> +    NetClientState *nc;
> +
> +    nc = qemu_get_queue(nic);
> +    if (nc->peer)
> +        qemu_del_net_client(nc->peer);
> +}
> +
>  static void pci_unplug_nics(PCIBus *bus)
>  {
> +    qemu_foreach_nic(del_nic_peer, NULL);
>      pci_for_each_device(bus, 0, unplug_nic, NULL);

I don't know if it a good idee to clean every NIC (using
qemu_foreach_nic) vs only clean NIC that have a PCI device (having
unplug_nic cleanup the peer). But I cannot think of a scenario with xen
where a nic is not also a pci device.

Anyway, this patch works:
Acked-by: Anthony PERARD <address@hidden>

-- 
Anthony PERARD



reply via email to

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