diff options
| author | Peter Maydell <peter.maydell@linaro.org> | 2015-05-11 16:21:50 +0100 |
|---|---|---|
| committer | Peter Maydell <peter.maydell@linaro.org> | 2015-05-11 16:25:33 +0100 |
| commit | 0403b0f539f40a21da60409b825b4653b273ab39 (patch) | |
| tree | ef1edb203dc4595528c0f86c502df3a8d2931a2b /hw/pci/pci.c | |
| parent | 266745cacb848d7cd0ae8889ae262e8718ace4d4 (diff) | |
| parent | bc1f7c4c915a7c727741c4d27a2795e1039eacd3 (diff) | |
| download | focaccia-qemu-0403b0f539f40a21da60409b825b4653b273ab39.tar.gz focaccia-qemu-0403b0f539f40a21da60409b825b4653b273ab39.zip | |
Merge remote-tracking branch 'remotes/mst/tags/for_upstream' into staging
pc, virtio enhancements Memory hot-unplug support for pc, MSI-X mapping update speedup for virtio-pci, misc refactorings and bugfixes. Signed-off-by: Michael S. Tsirkin <mst@redhat.com> # gpg: Signature made Mon May 11 08:23:43 2015 BST using RSA key ID D28D5469 # gpg: Good signature from "Michael S. Tsirkin <mst@kernel.org>" # gpg: aka "Michael S. Tsirkin <mst@redhat.com>" * remotes/mst/tags/for_upstream: (28 commits) acpi: update expected files for memory unplug virtio-scsi: Move DEFINE_VIRTIO_SCSI_FEATURES to virtio-scsi virtio-net: Move DEFINE_VIRTIO_NET_FEATURES to virtio-net pci: Merge pci_nic_init() into pci_nic_init_nofail() acpi: add a missing backslash to the \_SB scope. qmp-event: add event notification for memory hot unplug error acpi: add hardware implementation for memory hot unplug acpi: fix "Memory device control fields" register acpi: extend aml_field() to support UpdateRule acpi, mem-hotplug: add unplug cb for memory device acpi, mem-hotplug: add unplug request cb for memory device acpi, mem-hotplug: add acpi_memory_slot_status() to get MemStatus docs: update documentation for memory hot unplug virtio: coding style tweak pci: remove hard-coded bar size in msix_init_exclusive_bar() virtio-pci: speedup MSI-X masking and unmasking virtio: introduce vector to virtqueues mapping virtio-ccw: using VIRTIO_NO_VECTOR instead of 0 for invalid virtqueue monitor: check return value of qemu_find_net_clients_except() monitor: replace the magic number 255 with MAX_QUEUE_NUM ... Conflicts: hw/s390x/s390-virtio-bus.c [PMM: fixed conflict in s390_virtio_scsi_properties and s390_virtio_net_properties arrays; since the result of the two conflicting patches is to empty the property arrays completely, the conflict resolution is to remove them entirely.] Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'hw/pci/pci.c')
| -rw-r--r-- | hw/pci/pci.c | 43 |
1 files changed, 14 insertions, 29 deletions
diff --git a/hw/pci/pci.c b/hw/pci/pci.c index f5c7a99717..48f19a306d 100644 --- a/hw/pci/pci.c +++ b/hw/pci/pci.c @@ -1615,28 +1615,32 @@ static const char * const pci_nic_names[] = { }; /* 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_devaddr, - Error **errp) + const char *default_devaddr) { const char *devaddr = nd->devaddr ? nd->devaddr : default_devaddr; Error *err = NULL; PCIBus *bus; - int devfn; PCIDevice *pci_dev; DeviceState *dev; + int devfn; 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); - if (i < 0) - return NULL; + if (i < 0) { + exit(1); + } bus = pci_get_bus_devfn(&devfn, rootbus, devaddr); if (!bus) { error_report("Invalid PCI device address %s for device %s", devaddr, pci_nic_names[i]); - return NULL; + exit(1); } pci_dev = pci_create(bus, devfn, pci_nic_names[i]); @@ -1645,31 +1649,12 @@ static PCIDevice *pci_nic_init(NICInfo *nd, PCIBus *rootbus, object_property_set_bool(OBJECT(dev), true, "realized", &err); if (err) { - error_propagate(errp, err); + error_report_err(err); 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); } - return res; + + return pci_dev; } PCIDevice *pci_vga_init(PCIBus *bus) |