aboutsummaryrefslogtreecommitdiff
path: root/hw
diff options
context:
space:
mode:
Diffstat (limited to 'hw')
-rw-r--r--hw/net/rocker/rocker.c27
1 files changed, 11 insertions, 16 deletions
diff --git a/hw/net/rocker/rocker.c b/hw/net/rocker/rocker.c
index 9a538a9..bb38cba 100644
--- a/hw/net/rocker/rocker.c
+++ b/hw/net/rocker/rocker.c
@@ -1236,20 +1236,18 @@ rollback:
return err;
}
-static int rocker_msix_init(Rocker *r)
+static int rocker_msix_init(Rocker *r, Error **errp)
{
PCIDevice *dev = PCI_DEVICE(r);
int err;
- Error *local_err = NULL;
err = msix_init(dev, ROCKER_MSIX_VEC_COUNT(r->fp_ports),
&r->msix_bar,
ROCKER_PCI_MSIX_BAR_IDX, ROCKER_PCI_MSIX_TABLE_OFFSET,
&r->msix_bar,
ROCKER_PCI_MSIX_BAR_IDX, ROCKER_PCI_MSIX_PBA_OFFSET,
- 0, &local_err);
+ 0, errp);
if (err) {
- error_report_err(local_err);
return err;
}
@@ -1285,7 +1283,7 @@ static World *rocker_world_type_by_name(Rocker *r, const char *name)
return NULL;
}
-static int pci_rocker_init(PCIDevice *dev)
+static void pci_rocker_realize(PCIDevice *dev, Error **errp)
{
Rocker *r = to_rocker(dev);
const MACAddr zero = { .a = { 0, 0, 0, 0, 0, 0 } };
@@ -1303,10 +1301,9 @@ static int pci_rocker_init(PCIDevice *dev)
r->world_dflt = rocker_world_type_by_name(r, r->world_name);
if (!r->world_dflt) {
- fprintf(stderr,
- "rocker: requested world \"%s\" does not exist\n",
+ error_setg(errp,
+ "invalid argument requested world %s does not exist",
r->world_name);
- err = -EINVAL;
goto err_world_type_by_name;
}
@@ -1326,7 +1323,7 @@ static int pci_rocker_init(PCIDevice *dev)
/* MSI-X init */
- err = rocker_msix_init(r);
+ err = rocker_msix_init(r, errp);
if (err) {
goto err_msix_init;
}
@@ -1338,7 +1335,7 @@ static int pci_rocker_init(PCIDevice *dev)
}
if (rocker_find(r->name)) {
- err = -EEXIST;
+ error_setg(errp, "%s already exists", r->name);
goto err_duplicate;
}
@@ -1352,10 +1349,9 @@ static int pci_rocker_init(PCIDevice *dev)
#define ROCKER_IFNAMSIZ 16
#define MAX_ROCKER_NAME_LEN (ROCKER_IFNAMSIZ - 1 - 3 - 3)
if (strlen(r->name) > MAX_ROCKER_NAME_LEN) {
- fprintf(stderr,
- "rocker: name too long; please shorten to at most %d chars\n",
+ error_setg(errp,
+ "name too long; please shorten to at most %d chars",
MAX_ROCKER_NAME_LEN);
- err = -EINVAL;
goto err_name_too_long;
}
@@ -1413,7 +1409,7 @@ static int pci_rocker_init(PCIDevice *dev)
QLIST_INSERT_HEAD(&rockers, r, next);
- return 0;
+ return;
err_name_too_long:
err_duplicate:
@@ -1427,7 +1423,6 @@ err_world_type_by_name:
world_free(r->worlds[i]);
}
}
- return err;
}
static void pci_rocker_uninit(PCIDevice *dev)
@@ -1512,7 +1507,7 @@ static void rocker_class_init(ObjectClass *klass, void *data)
DeviceClass *dc = DEVICE_CLASS(klass);
PCIDeviceClass *k = PCI_DEVICE_CLASS(klass);
- k->init = pci_rocker_init;
+ k->realize = pci_rocker_realize;
k->exit = pci_rocker_uninit;
k->vendor_id = PCI_VENDOR_ID_REDHAT;
k->device_id = PCI_DEVICE_ID_REDHAT_ROCKER;