All of lore.kernel.org
 help / color / mirror / Atom feed
From: David Gibson <david@gibson.dropbear.id.au>
To: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Cc: BALATON Zoltan <balaton@eik.bme.hu>,
	qemu-ppc@nongnu.org, hpoussin@reactos.org, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [Qemu-ppc] [PATCH] 40p: fix PCI interrupt routing
Date: Mon, 10 Sep 2018 10:49:07 +1000	[thread overview]
Message-ID: <20180910004907.GA2890@umbus.fritz.box> (raw)
In-Reply-To: <df6be48b-1bff-b48e-d698-da1c6fea7961@ilande.co.uk>

[-- Attachment #1: Type: text/plain, Size: 3078 bytes --]

On Sat, Sep 08, 2018 at 09:47:55AM +0100, Mark Cave-Ayland wrote:
> On 27/08/18 18:12, 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 <mark.cave-ayland@ilande.co.uk>
> >> ---
> >> 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.
> 
> Thanks for the pointer. I now have a follow-up patchset that implements
> this, however it seems the real 40p machine has a routing quirk: the LSI
> SCSI device is separately routed to IRQ 13. So while it's not quite a
> pure OR of the 4 PCI IRQs, it's fairly close...

That's very common on pre-Express PCI machines: on-board PCI devices
have their LSIs wired directly to the system interrupt controller
rather than through the PCI interrupt pins.  I think that's a separate
issue from the routing of the PCI irq pins.

-- 
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 #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

      reply	other threads:[~2018-09-10  4:30 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-08-27 11:05 [Qemu-devel] [PATCH] 40p: fix PCI interrupt routing Mark Cave-Ayland
2018-08-27 14:00 ` Mark Cave-Ayland
2018-08-27 17:12 ` [Qemu-devel] [Qemu-ppc] " BALATON Zoltan
2018-08-28  1:02   ` David Gibson
2018-09-08  8:47   ` Mark Cave-Ayland
2018-09-10  0:49     ` David Gibson [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180910004907.GA2890@umbus.fritz.box \
    --to=david@gibson.dropbear.id.au \
    --cc=balaton@eik.bme.hu \
    --cc=hpoussin@reactos.org \
    --cc=mark.cave-ayland@ilande.co.uk \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-ppc@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.