[U-Boot] [PATCH 5/6] armv8/gic: Fix GIC v2 initialization
Marc Zyngier
marc.zyngier at arm.com
Fri Mar 20 19:03:27 CET 2015
Hi Thierry,
On 20/03/15 11:47, Thierry Reding wrote:
> From: Thierry Reding <treding at nvidia.com>
>
> Initialize all GICD_IGROUPRn registers and set up GICC_CTLR to enable
> interrupts to the primary CPU. This fixes issues seen after booting a
> Linux kernel from U-Boot.
>
> Suggested-by: Marc Zyngier <marc.zyngier at arm.com>
> Suggested-by: Mark Rutland <mark.rutland at arm.com>
> Cc: Albert Aribaud <albert.u.boot at aribaud.net>
> Cc: Mark Rutland <mark.rutland at arm.com>
> Cc: Marc Zyngier <marc.zyngier at arm.com>
> Signed-off-by: Thierry Reding <treding at nvidia.com>
> ---
> arch/arm/lib/gic_64.S | 10 +++++++++-
> 1 file changed, 9 insertions(+), 1 deletion(-)
>
> diff --git a/arch/arm/lib/gic_64.S b/arch/arm/lib/gic_64.S
> index a3e18f7713e5..62d0022408bc 100644
> --- a/arch/arm/lib/gic_64.S
> +++ b/arch/arm/lib/gic_64.S
> @@ -46,11 +46,19 @@ ENTRY(gic_init_secure)
> ldr w9, [x0, GICD_TYPER]
> and w10, w9, #0x1f /* ITLinesNumber */
> cbz w10, 1f /* No SPIs */
> - add x11, x0, (GICD_IGROUPRn + 4)
> + add x11, x0, GICD_IGROUPRn
> mov w9, #~0 /* Config SPIs as Grp1 */
> + str w9, [x11], #0x4
> 0: str w9, [x11], #0x4
> sub w10, w10, #0x1
> cbnz w10, 0b
> +
> + ldr x1, =GICC_BASE /* GICC_CTLR */
> + mov w0, #3 /* EnableGrp0 | EnableGrp1 */
> + str w0, [x1]
> +
> + mov w0, #1 << 7 /* allow NS access to GICC_PMR */
> + str w0, [x1, #4] /* GICC_PMR */
> #endif
> 1:
> ret
>
Looking at the code that currently sits in the u-boot repo, it looks
like you are duplicating functionality that is provided by
gic_init_secure_percpu.
Could your boot failure be a case of this function not being called on
all CPUs?
Thanks,
M.
--
Jazz is not dead. It just smells funny...
More information about the U-Boot
mailing list