[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v3 3/3] spapr: make irq customizable via qdev
From: |
Markus Armbruster |
Subject: |
Re: [Qemu-devel] [PATCH v3 3/3] spapr: make irq customizable via qdev |
Date: |
Tue, 07 Jun 2011 09:51:20 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/23.1 (gnu/linux) |
Paolo Bonzini <address@hidden> writes:
> Signed-off-by: Paolo Bonzini <address@hidden>
> ---
> hw/spapr_vio.c | 8 +++++++-
> 1 files changed, 7 insertions(+), 1 deletions(-)
>
> diff --git a/hw/spapr_vio.c b/hw/spapr_vio.c
> index 6f34159..a193caa 100644
> --- a/hw/spapr_vio.c
> +++ b/hw/spapr_vio.c
> @@ -52,6 +52,10 @@
> static struct BusInfo spapr_vio_bus_info = {
> .name = "spapr-vio",
> .size = sizeof(VIOsPAPRBus),
> + .props = (Property[]) {
> + DEFINE_PROP_UINT32("irq", VIOsPAPRDevice, vio_irq_num, 0), \
> + DEFINE_PROP_END_OF_LIST(),
> + },
> };
Out of this patch's scope, but I need to ask anyway: do devices on a
spapr-vio bus have a unique address? If yes, what is it?
>
> VIOsPAPRDevice *spapr_vio_find_by_reg(VIOsPAPRBus *bus, uint32_t reg)
> @@ -603,7 +607,9 @@ static int spapr_vio_busdev_init(DeviceState *qdev,
> DeviceInfo *qinfo)
> }
>
> dev->qdev.id = id;
> - dev->vio_irq_num = spapr_allocate_irq (spapr);
> + if (!dev->vio_irq_num) {
> + dev->vio_irq_num = spapr_allocate_irq (spapr);
> + }
> dev->qirq = xics_find_qirq(spapr->icp, dev->vio_irq_num);
>
> rtce_init(dev);
Is it okay to share interrupts? I'm asking because spapr_allocate_irq()
will happily assign IRQs already used via property. From PATCH 1/1:
static inline int spapr_allocate_irq(sPAPREnvironment *spapr)
{
return spapr->next_irq++;
}