qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [Qemu-ppc] [PATCH] 40p: fix PCI interrupt routing


From: David Gibson
Subject: Re: [Qemu-devel] [Qemu-ppc] [PATCH] 40p: fix PCI interrupt routing
Date: Tue, 28 Aug 2018 11:02:53 +1000
User-agent: Mutt/1.10.1 (2018-07-13)

On Mon, Aug 27, 2018 at 07:12:29PM +0200, BALATON Zoltan wrote:
> On Mon, 27 Aug 2018, Mark Cave-Ayland wrote:
> > According to the PReP specification section 6.1.6 "System Interrupt
> > Assignments", all PCI interrupts are routed via IRQ 15.
> > 
> > With this patch applied it is now possible to boot the sandalfoot
> > zImage all the way through to a working userspace when using
> > OpenBIOS.
> > 
> > Signed-off-by: Mark Cave-Ayland <address@hidden>
> > ---
> > hw/ppc/prep.c | 9 +++++----
> > 1 file changed, 5 insertions(+), 4 deletions(-)
> > 
> > diff --git a/hw/ppc/prep.c b/hw/ppc/prep.c
> > index 162b27a3b8..e82c1355d9 100644
> > --- a/hw/ppc/prep.c
> > +++ b/hw/ppc/prep.c
> > @@ -668,10 +668,11 @@ static void ibm_40p_init(MachineState *machine)
> >     dev = DEVICE(pci_create_simple(pci_bus, PCI_DEVFN(11, 0), "i82378"));
> >     qdev_connect_gpio_out(dev, 0,
> >                           cpu->env.irq_inputs[PPC6xx_INPUT_INT]);
> > -    sysbus_connect_irq(pcihost, 0, qdev_get_gpio_in(dev, 15));
> > -    sysbus_connect_irq(pcihost, 1, qdev_get_gpio_in(dev, 13));
> > -    sysbus_connect_irq(pcihost, 2, qdev_get_gpio_in(dev, 15));
> > -    sysbus_connect_irq(pcihost, 3, qdev_get_gpio_in(dev, 13));
> > +    /* According to PReP specification section 6.1.6 "System Interrupt
> > +     * Assignments", all PCI interrupts are routed via IRQ 15 */
> > +    for (i = 0; i < PCI_NUM_PINS; i++) {
> > +        sysbus_connect_irq(pcihost, i, qdev_get_gpio_in(dev, 15));
> > +    }
> 
> I'm not sure but this looks similar to what we had with sam460ex:
> 
> http://lists.nongnu.org/archive/html/qemu-ppc/2018-07/msg00359.html
> 
> I think you may not connect multiple interrupts to the same host irq line
> this way but you either need an OR gate or handle it within the mapping in
> the PCI host model (which is what we ended up with for the sam460ex).
> Peter's suggestion was to do whichever matches real hardware the most if you
> can find out that (as noted here also with more explanation that could be
> useful):
> 
> http://lists.nongnu.org/archive/html/qemu-ppc/2018-07/msg00360.html
> 
> But I could be mistaken in this case, haven't checked it in detail.

Yeah..  I was thinking this looked very familiar.  I believe you do
need to construct the OR explicitly, not just wire all the irqs to the
same line.

-- 
David Gibson                    | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au  | minimalist, thank you.  NOT _the_ _other_
                                | _way_ _around_!
http://www.ozlabs.org/~dgibson

Attachment: signature.asc
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]