mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-05 08:43:55 -06:00
pci: Convert shpc_init() to Error
In order to propagate error message better, convert shpc_init() to Error also convert the pci_bridge_dev_initfn() to realize. Cc: mst@redhat.com Cc: marcel@redhat.com Cc: armbru@redhat.com Signed-off-by: Mao Zhongyi <maozy.fnst@cn.fujitsu.com> Reviewed-by: Marcel Apfelbaum <marcel@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
f8cd1b0201
commit
344475e77d
5 changed files with 20 additions and 22 deletions
|
@ -49,7 +49,7 @@ struct PCIBridgeDev {
|
|||
};
|
||||
typedef struct PCIBridgeDev PCIBridgeDev;
|
||||
|
||||
static int pci_bridge_dev_initfn(PCIDevice *dev)
|
||||
static void pci_bridge_dev_realize(PCIDevice *dev, Error **errp)
|
||||
{
|
||||
PCIBridge *br = PCI_BRIDGE(dev);
|
||||
PCIBridgeDev *bridge_dev = PCI_BRIDGE_DEV(dev);
|
||||
|
@ -62,7 +62,7 @@ static int pci_bridge_dev_initfn(PCIDevice *dev)
|
|||
dev->config[PCI_INTERRUPT_PIN] = 0x1;
|
||||
memory_region_init(&bridge_dev->bar, OBJECT(dev), "shpc-bar",
|
||||
shpc_bar_size(dev));
|
||||
err = shpc_init(dev, &br->sec_bus, &bridge_dev->bar, 0);
|
||||
err = shpc_init(dev, &br->sec_bus, &bridge_dev->bar, 0, errp);
|
||||
if (err) {
|
||||
goto shpc_error;
|
||||
}
|
||||
|
@ -71,7 +71,7 @@ static int pci_bridge_dev_initfn(PCIDevice *dev)
|
|||
bridge_dev->msi = ON_OFF_AUTO_OFF;
|
||||
}
|
||||
|
||||
err = slotid_cap_init(dev, 0, bridge_dev->chassis_nr, 0);
|
||||
err = slotid_cap_init(dev, 0, bridge_dev->chassis_nr, 0, errp);
|
||||
if (err) {
|
||||
goto slotid_error;
|
||||
}
|
||||
|
@ -87,7 +87,7 @@ static int pci_bridge_dev_initfn(PCIDevice *dev)
|
|||
/* Can't satisfy user's explicit msi=on request, fail */
|
||||
error_append_hint(&local_err, "You have to use msi=auto (default) "
|
||||
"or msi=off with this machine type.\n");
|
||||
error_report_err(local_err);
|
||||
error_propagate(errp, local_err);
|
||||
goto msi_error;
|
||||
}
|
||||
assert(!local_err || bridge_dev->msi == ON_OFF_AUTO_AUTO);
|
||||
|
@ -101,7 +101,7 @@ static int pci_bridge_dev_initfn(PCIDevice *dev)
|
|||
pci_register_bar(dev, 0, PCI_BASE_ADDRESS_SPACE_MEMORY |
|
||||
PCI_BASE_ADDRESS_MEM_TYPE_64, &bridge_dev->bar);
|
||||
}
|
||||
return 0;
|
||||
return;
|
||||
|
||||
msi_error:
|
||||
slotid_cap_cleanup(dev);
|
||||
|
@ -111,8 +111,6 @@ slotid_error:
|
|||
}
|
||||
shpc_error:
|
||||
pci_bridge_exitfn(dev);
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
static void pci_bridge_dev_exitfn(PCIDevice *dev)
|
||||
|
@ -216,7 +214,7 @@ static void pci_bridge_dev_class_init(ObjectClass *klass, void *data)
|
|||
PCIDeviceClass *k = PCI_DEVICE_CLASS(klass);
|
||||
HotplugHandlerClass *hc = HOTPLUG_HANDLER_CLASS(klass);
|
||||
|
||||
k->init = pci_bridge_dev_initfn;
|
||||
k->realize = pci_bridge_dev_realize;
|
||||
k->exit = pci_bridge_dev_exitfn;
|
||||
k->config_write = pci_bridge_dev_write_config;
|
||||
k->vendor_id = PCI_VENDOR_ID_REDHAT;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue