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

Re: [Xen-devel] [PATCH] aarch64: advertise the GIC system register interface



On Tue, 31 Oct 2017, Peter Maydell wrote:
> On 19 October 2017 at 15:46, Peter Maydell <peter.maydell@xxxxxxxxxx> wrote:
> > On 18 October 2017 at 01:10, Stefano Stabellini <sstabellini@xxxxxxxxxx> 
> > wrote:
> >> Advertise the presence of the GIC system register interface (1<<24)
> >> according to H9.248 of the ARM ARM.
> >>
> >> This patch allows Xen to boot on QEMU aarch64.
> >>
> >> Signed-off-by: Stefano Stabellini <sstabellini@xxxxxxxxxx>
> >>
> >> diff --git a/target/arm/cpu64.c b/target/arm/cpu64.c
> >> index 670c07a..a451763 100644
> >> --- a/target/arm/cpu64.c
> >> +++ b/target/arm/cpu64.c
> >> @@ -136,7 +136,7 @@ static void aarch64_a57_initfn(Object *obj)
> >>      cpu->id_isar3 = 0x01112131;
> >>      cpu->id_isar4 = 0x00011142;
> >>      cpu->id_isar5 = 0x00011121;
> >> -    cpu->id_aa64pfr0 = 0x00002222;
> >> +    cpu->id_aa64pfr0 = 0x01002222;
> >>      cpu->id_aa64dfr0 = 0x10305106;
> >>      cpu->pmceid0 = 0x00000000;
> >>      cpu->pmceid1 = 0x00000000;
> >> @@ -196,7 +196,7 @@ static void aarch64_a53_initfn(Object *obj)
> >>      cpu->id_isar3 = 0x01112131;
> >>      cpu->id_isar4 = 0x00011142;
> >>      cpu->id_isar5 = 0x00011121;
> >> -    cpu->id_aa64pfr0 = 0x00002222;
> >> +    cpu->id_aa64pfr0 = 0x01002222;
> >>      cpu->id_aa64dfr0 = 0x10305106;
> >>      cpu->id_aa64isar0 = 0x00011120;
> >>      cpu->id_aa64mmfr0 = 0x00001122; /* 40 bit physical addr */
> >
> > Whoops -- we missed this when we added the GICv3 support, because
> > Linux doesn't check it.
> >
> > Applied to target-arm.next, thanks.
> 
> Unfortunately I've just noticed that this breaks booting Linux
> in the "not using gicv3" case. This is because we don't actually
> define the GICv3 cpu interface registers unless the board
> instantiates a GICv3. We mustn't advertise the GICv3 sysregs
> in the ID register unless we actually have them.
> 
> Not sure how best to fix this -- it's a consequence of the
> design decision we made to have the sysregs implementation
> be in the gicv3 code. There's no useful feature bit in the CPU
> to hang this off either, it's an effect of whether the board
> model happens to wire up a gicv3 or not. So we can only figure
> this out fairly late on (probably at CPU reset time), which
> is a bit tedious for getting ID reg values right.
> 
> In the meantime I've dropped this patch from target-arm.next.

Fixing QEMU is harder than I expected. Would it be possible to update
id_aa64pfr0 at CPU reset time? Like cpu->id_aa64pfr0 |= 0x01000000; ?

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.