mirror of https://github.com/xemu-project/xemu.git
spapr: Simplify error handling in spapr_vio_busdev_realize()
Use the return value of spapr_irq_findone() and spapr_irq_claim() to detect failures. This allows to reduce the error propagation overhead. Signed-off-by: Greg Kurz <groug@kaod.org> Message-Id: <20200914123505.612812-8-groug@kaod.org> Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
This commit is contained in:
parent
7e92da81be
commit
a9c2cdace0
|
@ -474,7 +474,6 @@ static void spapr_vio_busdev_realize(DeviceState *qdev, Error **errp)
|
||||||
SpaprVioDevice *dev = (SpaprVioDevice *)qdev;
|
SpaprVioDevice *dev = (SpaprVioDevice *)qdev;
|
||||||
SpaprVioDeviceClass *pc = VIO_SPAPR_DEVICE_GET_CLASS(dev);
|
SpaprVioDeviceClass *pc = VIO_SPAPR_DEVICE_GET_CLASS(dev);
|
||||||
char *id;
|
char *id;
|
||||||
Error *local_err = NULL;
|
|
||||||
|
|
||||||
if (dev->reg != -1) {
|
if (dev->reg != -1) {
|
||||||
/*
|
/*
|
||||||
|
@ -510,16 +509,15 @@ static void spapr_vio_busdev_realize(DeviceState *qdev, Error **errp)
|
||||||
dev->irq = spapr_vio_reg_to_irq(dev->reg);
|
dev->irq = spapr_vio_reg_to_irq(dev->reg);
|
||||||
|
|
||||||
if (SPAPR_MACHINE_GET_CLASS(spapr)->legacy_irq_allocation) {
|
if (SPAPR_MACHINE_GET_CLASS(spapr)->legacy_irq_allocation) {
|
||||||
dev->irq = spapr_irq_findone(spapr, &local_err);
|
int irq = spapr_irq_findone(spapr, errp);
|
||||||
if (local_err) {
|
|
||||||
error_propagate(errp, local_err);
|
if (irq < 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
dev->irq = irq;
|
||||||
}
|
}
|
||||||
|
|
||||||
spapr_irq_claim(spapr, dev->irq, false, &local_err);
|
if (spapr_irq_claim(spapr, dev->irq, false, errp) < 0) {
|
||||||
if (local_err) {
|
|
||||||
error_propagate(errp, local_err);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue