sysbus: add irq_routing_notifier
Add a new connect_irq_notifier notifier in the SysBusDeviceClass. This notifier, if populated, is called after sysbus_connect_irq. This mechanism is used to setup VFIO signaling once VFIO platform devices get attached to their platform bus, on a machine init done notifier. Signed-off-by: Eric Auger <eric.auger@linaro.org> Reviewed-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com> Tested-by: Vikram Sethi <vikrams@codeaurora.org> Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
This commit is contained in:
parent
6a1a9cfa1c
commit
715ca691da
|
@ -109,7 +109,13 @@ qemu_irq sysbus_get_connected_irq(SysBusDevice *dev, int n)
|
||||||
|
|
||||||
void sysbus_connect_irq(SysBusDevice *dev, int n, qemu_irq irq)
|
void sysbus_connect_irq(SysBusDevice *dev, int n, qemu_irq irq)
|
||||||
{
|
{
|
||||||
|
SysBusDeviceClass *sbd = SYS_BUS_DEVICE_GET_CLASS(dev);
|
||||||
|
|
||||||
qdev_connect_gpio_out_named(DEVICE(dev), SYSBUS_DEVICE_GPIO_IRQ, n, irq);
|
qdev_connect_gpio_out_named(DEVICE(dev), SYSBUS_DEVICE_GPIO_IRQ, n, irq);
|
||||||
|
|
||||||
|
if (sbd->connect_irq_notifier) {
|
||||||
|
sbd->connect_irq_notifier(dev, irq);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Check whether an MMIO region exists */
|
/* Check whether an MMIO region exists */
|
||||||
|
|
|
@ -58,6 +58,7 @@ typedef struct SysBusDeviceClass {
|
||||||
* omitted then. (This is not considered a fatal error.)
|
* omitted then. (This is not considered a fatal error.)
|
||||||
*/
|
*/
|
||||||
char *(*explicit_ofw_unit_address)(const SysBusDevice *dev);
|
char *(*explicit_ofw_unit_address)(const SysBusDevice *dev);
|
||||||
|
void (*connect_irq_notifier)(SysBusDevice *dev, qemu_irq irq);
|
||||||
} SysBusDeviceClass;
|
} SysBusDeviceClass;
|
||||||
|
|
||||||
struct SysBusDevice {
|
struct SysBusDevice {
|
||||||
|
|
Loading…
Reference in New Issue