qemu-devel
[Top][All Lists]
Advanced

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

Re: [PATCH 1/4] hw/xen: only remove peers of PCI NICs on unplug


From: Paul Durrant
Subject: Re: [PATCH 1/4] hw/xen: only remove peers of PCI NICs on unplug
Date: Tue, 24 Oct 2023 15:32:18 +0100
User-agent: Mozilla Thunderbird

On 17/10/2023 19:25, David Woodhouse wrote:
From: David Woodhouse <dwmw@amazon.co.uk>

When the Xen guest asks to unplug *emulated* NICs, it's kind of unhelpful
also to unplug the peer of the *Xen* PV NIC.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
  hw/i386/xen/xen_platform.c | 9 +++++++--
  1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/hw/i386/xen/xen_platform.c b/hw/i386/xen/xen_platform.c
index 17457ff3de..e2dd1b536a 100644
--- a/hw/i386/xen/xen_platform.c
+++ b/hw/i386/xen/xen_platform.c
@@ -140,9 +140,14 @@ 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;
+    NetClientState *nc = qemu_get_queue(nic);
+    ObjectClass *klass = module_object_class_by_name(nc->model);
+
+    /* Only delete peers of PCI NICs that we're about to delete */
+    if (!klass || !object_class_dynamic_cast(klass, TYPE_PCI_DEVICE)) {

Would it not be better to test for object_class_dynamic_cast(klass, TYPE_XEN_DEVICE)?

  Paul

+        return;
+    }
- nc = qemu_get_queue(nic);
      if (nc->peer)
          qemu_del_net_client(nc->peer);
  }




reply via email to

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