On Tue, Oct 19, 2021 at 11:18:17AM +0200, Thomas Huth wrote: 65;6402;1c> Recent Linux kernels are accessing the PCI device in slot 0 that > represents the PCI host bridge. This causes ppc4xx_pci_map_irq() > to return -1 which causes an assert() later: > > hw/pci/pci.c:262: pci_bus_change_irq_level: Assertion `irq_num >= 0' failed. > > Thus we should allocate an IRQ line for the device in slot 0, too. > To avoid changes to the outside of ppc4xx_pci.c, we map it to > the internal IRQ number 4 which will then happily be ignored since > ppc440_bamboo.c does not wire it up. > > With these changes it is now possible again to use recent Linux > kernels for the bamboo board. > > Signed-off-by: Thomas Huth <th...@redhat.com>
Applied to ppc-for-6.2, thanks. > --- > hw/ppc/ppc4xx_pci.c | 8 +++++--- > 1 file changed, 5 insertions(+), 3 deletions(-) > > diff --git a/hw/ppc/ppc4xx_pci.c b/hw/ppc/ppc4xx_pci.c > index 8147ba6f94..304a29349c 100644 > --- a/hw/ppc/ppc4xx_pci.c > +++ b/hw/ppc/ppc4xx_pci.c > @@ -48,12 +48,14 @@ OBJECT_DECLARE_SIMPLE_TYPE(PPC4xxPCIState, > PPC4xx_PCI_HOST_BRIDGE) > #define PPC4xx_PCI_NR_PMMS 3 > #define PPC4xx_PCI_NR_PTMS 2 > > +#define PPC4xx_PCI_NUM_DEVS 5 > + > struct PPC4xxPCIState { > PCIHostState parent_obj; > > struct PCIMasterMap pmm[PPC4xx_PCI_NR_PMMS]; > struct PCITargetMap ptm[PPC4xx_PCI_NR_PTMS]; > - qemu_irq irq[PCI_NUM_PINS]; > + qemu_irq irq[PPC4xx_PCI_NUM_DEVS]; > > MemoryRegion container; > MemoryRegion iomem; > @@ -246,7 +248,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 > 0 ? slot - 1 : PPC4xx_PCI_NUM_DEVS - 1; > } > > static void ppc4xx_pci_set_irq(void *opaque, int irq_num, int level) > @@ -254,7 +256,7 @@ static void ppc4xx_pci_set_irq(void *opaque, int irq_num, > int level) > qemu_irq *pci_irqs = opaque; > > trace_ppc4xx_pci_set_irq(irq_num); > - assert(irq_num >= 0); > + assert(irq_num >= 0 && irq_num < PPC4xx_PCI_NUM_DEVS); > qemu_set_irq(pci_irqs[irq_num], level); > } > -- 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
signature.asc
Description: PGP signature