* [Qemu-devel] [PATCH] qdev: Revert the hack to let -net nic and pci_add set qdev ID
@ 2010-06-08 11:54 Markus Armbruster
2010-06-14 20:57 ` Anthony Liguori
0 siblings, 1 reply; 2+ messages in thread
From: Markus Armbruster @ 2010-06-08 11:54 UTC (permalink / raw)
To: qemu-devel; +Cc: kraxel
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 <armbru@redhat.com>
---
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
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [Qemu-devel] [PATCH] qdev: Revert the hack to let -net nic and pci_add set qdev ID
2010-06-08 11:54 [Qemu-devel] [PATCH] qdev: Revert the hack to let -net nic and pci_add set qdev ID Markus Armbruster
@ 2010-06-14 20:57 ` Anthony Liguori
0 siblings, 0 replies; 2+ messages in thread
From: Anthony Liguori @ 2010-06-14 20:57 UTC (permalink / raw)
To: Markus Armbruster; +Cc: qemu-devel, kraxel
On 06/08/2010 06:54 AM, Markus Armbruster wrote:
> 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<armbru@redhat.com>
>
Applied. Thanks.
Regards,
Anthony Liguori
> ---
> 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;
>
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2010-06-14 20:57 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-06-08 11:54 [Qemu-devel] [PATCH] qdev: Revert the hack to let -net nic and pci_add set qdev ID Markus Armbruster
2010-06-14 20:57 ` Anthony Liguori
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).