On Mon, 11 Jan 2021 at 19:19, BALATON Zoltan <bala...@eik.bme.hu> wrote: > > On Mon, 11 Jan 2021, Peter Maydell wrote: > > In commit 0270d74ef8862350 we switched from ppcuic_init() to directly > > creating the UIC device, but I missed that the Bamboo's UIC has a > > non-standard DCR base register value (0xc0 rather than the default > > of 0x30). This made Linux panic early in the boot process. > > > > Specify the correct dcr-base property value when creating the UIC. > > > > Fixes: 0270d74ef8862350 > > Signed-off-by: Peter Maydell <peter.mayd...@linaro.org> > > Reported-by?
Yes, sorry -- Reported-by: Nathan Chancellor <natechancel...@gmail.com> > > diff --git a/hw/ppc/ppc440_bamboo.c b/hw/ppc/ppc440_bamboo.c > > index b156bcb9990..2c7a578ba73 100644 > > --- a/hw/ppc/ppc440_bamboo.c > > +++ b/hw/ppc/ppc440_bamboo.c > > @@ -198,6 +198,7 @@ static void bamboo_init(MachineState *machine) > > uicdev = qdev_new(TYPE_PPC_UIC); > > uicsbd = SYS_BUS_DEVICE(uicdev); > > > > + qdev_prop_set_uint32(uicdev, "dcr-base", 0xc0); > > This fixes Bamboo but not virtex and 405 which seem to have same problem > as I've just shown in replies to those patches. So maybe this is better > fixed by changing default value in ppc-uic.c to 0xc0 then. You say in > commit message that 0xc0 is non-standard but most boards seem to use that > than the default you have now. I don't know if there's a standard by the > way or every CPU implementation just puts DCRs where they want. My intention when I wrote the code was just to set the default value of the property on the device to the value that most of the users seemed to need -- I don't know if there's any actual standard. It sounds like the actual bug is that I put in the wrong default value by accident. For the QEMU boards we have with UICs, they all use 0xc0 -- the only special case is sam460ex because it has four UICs, so they go at 0xc0, 0xd0, 0xe0, 0xf0. New patch coming up that fixes the default property value. thanks -- PMM