pci: Merge pci_nic_init() into pci_nic_init_nofail()
The error reporting in pci_nic_init() is quite erratic: Some errors are printed directly with error_report(), and some are passed back to the caller pci_nic_init_nofail() via an Error pointer. Since pci_nic_init() is only used by pci_nic_init_nofail(), the functions can be simply merged to clean up this inconsistency. Signed-off-by: Thomas Huth <thuth@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Reviewed-by: Markus Armbruster <armbru@redhat.com>
This commit is contained in:
parent
7824df3889
commit
51f7cb974b
43
hw/pci/pci.c
43
hw/pci/pci.c
|
@ -1611,28 +1611,32 @@ static const char * const pci_nic_names[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Initialize a PCI NIC. */
|
/* Initialize a PCI NIC. */
|
||||||
static PCIDevice *pci_nic_init(NICInfo *nd, PCIBus *rootbus,
|
PCIDevice *pci_nic_init_nofail(NICInfo *nd, PCIBus *rootbus,
|
||||||
const char *default_model,
|
const char *default_model,
|
||||||
const char *default_devaddr,
|
const char *default_devaddr)
|
||||||
Error **errp)
|
|
||||||
{
|
{
|
||||||
const char *devaddr = nd->devaddr ? nd->devaddr : default_devaddr;
|
const char *devaddr = nd->devaddr ? nd->devaddr : default_devaddr;
|
||||||
Error *err = NULL;
|
Error *err = NULL;
|
||||||
PCIBus *bus;
|
PCIBus *bus;
|
||||||
int devfn;
|
|
||||||
PCIDevice *pci_dev;
|
PCIDevice *pci_dev;
|
||||||
DeviceState *dev;
|
DeviceState *dev;
|
||||||
|
int devfn;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
if (qemu_show_nic_models(nd->model, pci_nic_models)) {
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
i = qemu_find_nic_model(nd, pci_nic_models, default_model);
|
i = qemu_find_nic_model(nd, pci_nic_models, default_model);
|
||||||
if (i < 0)
|
if (i < 0) {
|
||||||
return NULL;
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
bus = pci_get_bus_devfn(&devfn, rootbus, devaddr);
|
bus = pci_get_bus_devfn(&devfn, rootbus, devaddr);
|
||||||
if (!bus) {
|
if (!bus) {
|
||||||
error_report("Invalid PCI device address %s for device %s",
|
error_report("Invalid PCI device address %s for device %s",
|
||||||
devaddr, pci_nic_names[i]);
|
devaddr, pci_nic_names[i]);
|
||||||
return NULL;
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
pci_dev = pci_create(bus, devfn, pci_nic_names[i]);
|
pci_dev = pci_create(bus, devfn, pci_nic_names[i]);
|
||||||
|
@ -1641,31 +1645,12 @@ static PCIDevice *pci_nic_init(NICInfo *nd, PCIBus *rootbus,
|
||||||
|
|
||||||
object_property_set_bool(OBJECT(dev), true, "realized", &err);
|
object_property_set_bool(OBJECT(dev), true, "realized", &err);
|
||||||
if (err) {
|
if (err) {
|
||||||
error_propagate(errp, err);
|
error_report_err(err);
|
||||||
object_unparent(OBJECT(dev));
|
object_unparent(OBJECT(dev));
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
return pci_dev;
|
|
||||||
}
|
|
||||||
|
|
||||||
PCIDevice *pci_nic_init_nofail(NICInfo *nd, PCIBus *rootbus,
|
|
||||||
const char *default_model,
|
|
||||||
const char *default_devaddr)
|
|
||||||
{
|
|
||||||
Error *err = NULL;
|
|
||||||
PCIDevice *res;
|
|
||||||
|
|
||||||
if (qemu_show_nic_models(nd->model, pci_nic_models))
|
|
||||||
exit(0);
|
|
||||||
|
|
||||||
res = pci_nic_init(nd, rootbus, default_model, default_devaddr, &err);
|
|
||||||
if (!res) {
|
|
||||||
if (err) {
|
|
||||||
error_report_err(err);
|
|
||||||
}
|
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
return res;
|
|
||||||
|
return pci_dev;
|
||||||
}
|
}
|
||||||
|
|
||||||
PCIDevice *pci_vga_init(PCIBus *bus)
|
PCIDevice *pci_vga_init(PCIBus *bus)
|
||||||
|
|
Loading…
Reference in New Issue