From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=45255 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OLxNl-0008R7-K3 for qemu-devel@nongnu.org; Tue, 08 Jun 2010 07:54:18 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1OLxNg-0002oS-Cf for qemu-devel@nongnu.org; Tue, 08 Jun 2010 07:54:13 -0400 Received: from oxygen.pond.sub.org ([213.239.205.148]:42186) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OLxNg-0002nu-88 for qemu-devel@nongnu.org; Tue, 08 Jun 2010 07:54:08 -0400 Received: from blackfin.pond.sub.org (pD9E3AB5F.dip.t-dialin.net [217.227.171.95]) by oxygen.pond.sub.org (Postfix) with ESMTPA id DDFF92DD354 for ; Tue, 8 Jun 2010 13:54:04 +0200 (CEST) From: Markus Armbruster Date: Tue, 8 Jun 2010 13:54:04 +0200 Message-Id: <1275998044-2715-1-git-send-email-armbru@redhat.com> Subject: [Qemu-devel] [PATCH] qdev: Revert the hack to let -net nic and pci_add set qdev ID List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: kraxel@redhat.com Setting the ID in pci_nic_init() is a blatant violation of the DeviceState abstraction. Which even carries a comment advising against this: /* This structure should not be accessed directly. We declare it here so that it can be embedded in individual device state structures. */ What's worse, it bypasses the code ensuring unique qdev IDs: "-device virtio-net-pci,id=foo -net nic,id=foo -net nic,name=foo" happily creates three qdevs with ID "foo". That's because qdev relies on qemu_opts_create() to ensure unique IDs, but -net nic uses a different QemuOptsList, which means id is in a different namespace. And its name is not checked for uniqueness at all. -net nic and pci_add are legacy. Use -device and device_add if you want a NIC with a qdev ID. This reverts what's still left of commit eb54b6dc "qdev: add id= support for pci nics." Signed-off-by: Markus Armbruster --- hw/pci.c | 2 -- 1 files changed, 0 insertions(+), 2 deletions(-) diff --git a/hw/pci.c b/hw/pci.c index cbbd1dd..fab8c09 100644 --- a/hw/pci.c +++ b/hw/pci.c @@ -1446,8 +1446,6 @@ PCIDevice *pci_nic_init(NICInfo *nd, const char *default_model, pci_dev = pci_create(bus, devfn, pci_nic_names[i]); dev = &pci_dev->qdev; - if (nd->name) - dev->id = qemu_strdup(nd->name); qdev_set_nic_properties(dev, nd); if (qdev_init(dev) < 0) return NULL; -- 1.6.6.1