On 14/10/2021 17.26, Philippe Mathieu-Daudé wrote:
On 10/14/21 13:29, Cédric Le Goater wrote:
On 10/14/21 12:34, Christophe Leroy wrote:

I have the following change in QEMU to be able to run the bamboo,
found it some time ago via google (can't remember where):

diff --git a/hw/ppc/ppc4xx_pci.c b/hw/ppc/ppc4xx_pci.c
index 8147ba6f94..600e89e791 100644
--- a/hw/ppc/ppc4xx_pci.c
+++ b/hw/ppc/ppc4xx_pci.c
@@ -246,7 +246,7 @@ static int ppc4xx_pci_map_irq(PCIDevice *pci_dev,
int irq_num)

       trace_ppc4xx_pci_map_irq(pci_dev->devfn, irq_num, slot);

-    return slot - 1;
+    return slot ? slot - 1 : slot;
   }

   static void ppc4xx_pci_set_irq(void *opaque, int irq_num, int level)

could you try to use :

static inline int ppce500_pci_map_irq_slot(int devno, int irq_num)
{
     return (devno + irq_num) % 4;
}

Is this pci_swizzle()?

It's pci_swizzle, but I don't think that we should take irq_num into account here. The comment right in front of the function says:

 On Bamboo, all pins from each slot are tied to a single board IRQ

Similar comment in pc-bios/bamboo.dts:

 Bamboo has all 4 IRQ pins tied together per slot

So the return value should only depend on the slot number.

Not sure how to properly fix this yet, though.

 Thomas


PS: Found a working pre-compiled kernel for bamboo:
http://landley.net/aboriginal/downloads/binaries/system-image-powerpc-440fp.tar.gz


Reply via email to