• M
    qdev: Revert the hack to let -net nic and pci_add set qdev ID · 1bb65042
    Markus Armbruster 提交于
    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: NMarkus Armbruster <armbru@redhat.com>
    Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
    1bb65042
pci.c 55.0 KB