From nobody Tue Dec 16 07:06:25 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1520981577201895.391903545833; Tue, 13 Mar 2018 15:52:57 -0700 (PDT) Received: from localhost ([::1]:43299 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1evsmp-000107-Sp for importer@patchew.org; Tue, 13 Mar 2018 18:52:51 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57742) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1evshb-0005Lx-Q6 for qemu-devel@nongnu.org; Tue, 13 Mar 2018 18:47:31 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1evshZ-0002fc-0Z for qemu-devel@nongnu.org; Tue, 13 Mar 2018 18:47:27 -0400 Received: from mail-wr0-x241.google.com ([2a00:1450:400c:c0c::241]:40556) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1evshY-0002eU-QU for qemu-devel@nongnu.org; Tue, 13 Mar 2018 18:47:24 -0400 Received: by mail-wr0-x241.google.com with SMTP id s12so12602wre.7 for ; Tue, 13 Mar 2018 15:47:24 -0700 (PDT) Received: from donizetti.lan (94-36-191-219.adsl-ull.clienti.tiscali.it. [94.36.191.219]) by smtp.gmail.com with ESMTPSA id x107sm1557951wrb.97.2018.03.13.15.47.21 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 13 Mar 2018 15:47:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:subject:date:message-id:in-reply-to:references; bh=Mw4alALPJ3sE7K3m853LgDjc/mOY7pbVgsCWLe9BmpY=; b=f/UV0nKXK6O3N0PnrLMOmWMshQtHwCDT3lu2tJ3v5a7Xg32hslBR1IgBjuHLM0H4oX E0SMLm2EU6kWVAcNFA+Xme9LQ5mDJYEPSFK0FKhgBMy0TqGjfgY7gJmcsItLFeHZdj/e m6CO8kZvRtw+2NquFuy7YXWqVvQXYHOAAEeUXYjeqVcQOYrezhufEHVYk+ip368oFtRH qYZlK0GHy2KrqiK7CBQwlyNn3W+g2gDw0dlfVCsJw81KNHLUa9riEagZNZazPtd81CpN j9M6hLBKjCmyvlGh+pYP7RS/aQHIGl9ZSPt7SfmOhYwIGcS6g9sfyT2Jr2ryw6jl0kHL oQ2w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:subject:date:message-id :in-reply-to:references; bh=Mw4alALPJ3sE7K3m853LgDjc/mOY7pbVgsCWLe9BmpY=; b=LKN6D3ebvS7bUuvQGTy8tz52kmGNCXSIMZZ8kWceGkpvO9JpD4YbYP8O3dP5Cj3Ng/ +3oBS4iUADDFcHq9lpqoB5qIe/OGI+r9/kALRpsZOIpGEvo6FKo94D+QpMVwoi2Zbypt 7rrIoFjUOXn60jHN/zoV5lUuSkFNRGEFKAdEpSZaiIi/0lVHNDItq/CfXIQI9cWTCYdn negjxJd4v8wUj/K+ejWay0MwfN6EcW0fTM+qYiMfE3e2oaZcrOn4dD/jYZ7AHqOdaJ6D kR/75moFy4EDBocTjVQvu/DYsXm1ZCUvOAkJxfmSS2USFDUSgy4JQsC0jdIgW9ZgN8tc g2Nw== X-Gm-Message-State: AElRT7HIQr1vaQxB8OZl3jyjLq3ijgkTrUElkZXXuK1WGc+7UgJVFFsN 5tbXuld5ieMK81zB5sTuS5TWC+zJ X-Google-Smtp-Source: AG47ELv3JCxiF+eHk5HP7mh8Z51up4VFRmWbXQUfL2+qDpFEeGd6z71QcU7Us1DKhUvyqNbiayWJAg== X-Received: by 10.223.173.3 with SMTP id p3mr1935282wrc.202.1520981243508; Tue, 13 Mar 2018 15:47:23 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Tue, 13 Mar 2018 23:46:12 +0100 Message-Id: <20180313224719.4954-3-pbonzini@redhat.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180313224719.4954-1-pbonzini@redhat.com> References: <20180313224719.4954-1-pbonzini@redhat.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c0c::241 Subject: [Qemu-devel] [PULL 02/69] net: allow using any PCI NICs in -net or -nic X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Remove the hard-coded list of PCI NIC names; instead, fill an array using all PCI devices listed under DEVICE_CATEGORY_NETWORK. Keep the old shortcut "virtio" for virtio-net-pci. Suggested-by: Thomas Huth Reviewed-by: Thomas Huth Reviewed-by: Jason Wang Signed-off-by: Paolo Bonzini --- hw/pci/pci.c | 61 +++++++++++++++++++++++++++++--------------------------= ---- hw/ppc/e500.c | 2 +- 2 files changed, 31 insertions(+), 32 deletions(-) diff --git a/hw/pci/pci.c b/hw/pci/pci.c index 2174c254eb..67a3f72bd6 100644 --- a/hw/pci/pci.c +++ b/hw/pci/pci.c @@ -1815,49 +1815,48 @@ PciInfoList *qmp_query_pci(Error **errp) return head; } =20 -static const char * const pci_nic_models[] =3D { - "ne2k_pci", - "i82551", - "i82557b", - "i82559er", - "rtl8139", - "e1000", - "pcnet", - "virtio", - "sungem", - NULL -}; - -static const char * const pci_nic_names[] =3D { - "ne2k_pci", - "i82551", - "i82557b", - "i82559er", - "rtl8139", - "e1000", - "pcnet", - "virtio-net-pci", - "sungem", - NULL -}; - /* Initialize a PCI NIC. */ PCIDevice *pci_nic_init_nofail(NICInfo *nd, PCIBus *rootbus, const char *default_model, const char *default_devaddr) { const char *devaddr =3D nd->devaddr ? nd->devaddr : default_devaddr; + GSList *list; + GPtrArray *pci_nic_models; PCIBus *bus; PCIDevice *pci_dev; DeviceState *dev; int devfn; int i; =20 - if (qemu_show_nic_models(nd->model, pci_nic_models)) { + if (nd->model && !strcmp(nd->model, "virtio")) { + g_free(nd->model); + nd->model =3D g_strdup("virtio-net-pci"); + } + + list =3D object_class_get_list_sorted(TYPE_PCI_DEVICE, false); + pci_nic_models =3D g_ptr_array_new(); + while (list) { + DeviceClass *dc =3D OBJECT_CLASS_CHECK(DeviceClass, list->data, + TYPE_DEVICE); + GSList *next; + if (test_bit(DEVICE_CATEGORY_NETWORK, dc->categories) && + dc->user_creatable) { + const char *name =3D object_class_get_name(list->data); + g_ptr_array_add(pci_nic_models, (gpointer)name); + } + next =3D list->next; + g_slist_free_1(list); + list =3D next; + } + g_ptr_array_add(pci_nic_models, NULL); + + if (qemu_show_nic_models(nd->model, (const char **)pci_nic_models->pda= ta)) { exit(0); } =20 - i =3D qemu_find_nic_model(nd, pci_nic_models, default_model); + i =3D qemu_find_nic_model(nd, (const char **)pci_nic_models->pdata, + default_model); if (i < 0) { exit(1); } @@ -1865,15 +1864,15 @@ PCIDevice *pci_nic_init_nofail(NICInfo *nd, PCIBus = *rootbus, bus =3D pci_get_bus_devfn(&devfn, rootbus, devaddr); if (!bus) { error_report("Invalid PCI device address %s for device %s", - devaddr, pci_nic_names[i]); + devaddr, nd->model); exit(1); } =20 - pci_dev =3D pci_create(bus, devfn, pci_nic_names[i]); + pci_dev =3D pci_create(bus, devfn, nd->model); dev =3D &pci_dev->qdev; qdev_set_nic_properties(dev, nd); qdev_init_nofail(dev); - + g_ptr_array_free(pci_nic_models, true); return pci_dev; } =20 diff --git a/hw/ppc/e500.c b/hw/ppc/e500.c index 43c15d18c4..2238f963c4 100644 --- a/hw/ppc/e500.c +++ b/hw/ppc/e500.c @@ -916,7 +916,7 @@ void ppce500_init(MachineState *machine, PPCE500Params = *params) if (pci_bus) { /* Register network interfaces. */ for (i =3D 0; i < nb_nics; i++) { - pci_nic_init_nofail(&nd_table[i], pci_bus, "virtio", NULL); + pci_nic_init_nofail(&nd_table[i], pci_bus, "virtio-net-pci", N= ULL); } } =20 --=20 2.14.3