|
@@ -600,7 +600,6 @@ static int spapr_vio_busdev_init(DeviceState *qdev, DeviceInfo *qinfo)
|
|
{
|
|
{
|
|
VIOsPAPRDeviceInfo *info = (VIOsPAPRDeviceInfo *)qinfo;
|
|
VIOsPAPRDeviceInfo *info = (VIOsPAPRDeviceInfo *)qinfo;
|
|
VIOsPAPRDevice *dev = (VIOsPAPRDevice *)qdev;
|
|
VIOsPAPRDevice *dev = (VIOsPAPRDevice *)qdev;
|
|
- VIOsPAPRBus *bus = DO_UPCAST(VIOsPAPRBus, bus, dev->qdev.parent_bus);
|
|
|
|
char *id;
|
|
char *id;
|
|
|
|
|
|
if (asprintf(&id, "%s@%x", info->dt_name, dev->reg) < 0) {
|
|
if (asprintf(&id, "%s@%x", info->dt_name, dev->reg) < 0) {
|
|
@@ -608,10 +607,11 @@ static int spapr_vio_busdev_init(DeviceState *qdev, DeviceInfo *qinfo)
|
|
}
|
|
}
|
|
|
|
|
|
dev->qdev.id = id;
|
|
dev->qdev.id = id;
|
|
- if (!dev->vio_irq_num) {
|
|
|
|
- dev->vio_irq_num = bus->irq++;
|
|
|
|
|
|
+
|
|
|
|
+ dev->qirq = spapr_allocate_irq(dev->vio_irq_num, &dev->vio_irq_num);
|
|
|
|
+ if (!dev->qirq) {
|
|
|
|
+ return -1;
|
|
}
|
|
}
|
|
- dev->qirq = spapr_find_qirq(spapr, dev->vio_irq_num);
|
|
|
|
|
|
|
|
rtce_init(dev);
|
|
rtce_init(dev);
|
|
|
|
|
|
@@ -666,7 +666,6 @@ VIOsPAPRBus *spapr_vio_bus_init(void)
|
|
|
|
|
|
qbus = qbus_create(&spapr_vio_bus_info, dev, "spapr-vio");
|
|
qbus = qbus_create(&spapr_vio_bus_info, dev, "spapr-vio");
|
|
bus = DO_UPCAST(VIOsPAPRBus, bus, qbus);
|
|
bus = DO_UPCAST(VIOsPAPRBus, bus, qbus);
|
|
- bus->irq = 16;
|
|
|
|
|
|
|
|
/* hcall-vio */
|
|
/* hcall-vio */
|
|
spapr_register_hypercall(H_VIO_SIGNAL, h_vio_signal);
|
|
spapr_register_hypercall(H_VIO_SIGNAL, h_vio_signal);
|