Hi, On Thu, Feb 27, 2025 at 04:53:15PM +0000, Alexandru Elisei wrote: > Hi Joey, > > On Thu, Feb 20, 2025 at 02:13:48PM +0000, Joey Gouly wrote: > > EL2 is not currently supported, drop to EL1 to conitnue booting. > > > > Signed-off-by: Joey Gouly <joey.gouly@xxxxxxx> > > --- > > arm/cstart64.S | 27 +++++++++++++++++++++++++-- > > 1 file changed, 25 insertions(+), 2 deletions(-) > > > > diff --git a/arm/cstart64.S b/arm/cstart64.S > > index b480a552..3a305ad0 100644 > > --- a/arm/cstart64.S > > +++ b/arm/cstart64.S > > @@ -57,14 +57,25 @@ start: > > add x6, x6, :lo12:reloc_end > > 1: > > cmp x5, x6 > > - b.hs 1f > > + b.hs reloc_done > > ldr x7, [x5] // r_offset > > ldr x8, [x5, #16] // r_addend > > add x8, x8, x4 // val = base + r_addend > > str x8, [x4, x7] // base[r_offset] = val > > add x5, x5, #24 > > b 1b > > - > > +reloc_done: > > + mrs x4, CurrentEL > > + cmp x4, CurrentEL_EL2 > > + b.ne 1f > > +drop_to_el1: > > + mov x4, 4 > > + msr spsr_el2, x4 > > + adrp x4, 1f > > + add x4, x4, :lo12:1f > > + msr elr_el2, x4 > > I'm going to assume this works because KVM is nice enough to initialise the > EL2 registers that affect execution at EL1 to some sane defaults. Is that > something that can be relied on going forward? I was just trying to keep the changes minimal. > > What about UEFI? Haven't tested it yet. > > I was expecting some kind of initialization of the registers that affect > EL1. I'll look into it. Thanks, Joey > > Thanks, > Alex > > > + isb > > + eret > > 1: > > /* zero BSS */ > > adrp x4, bss > > @@ -186,6 +197,18 @@ get_mmu_off: > > > > .globl secondary_entry > > secondary_entry: > > + mrs x0, CurrentEL > > + cmp x0, CurrentEL_EL2 > > + b.ne 1f > > +drop_to_el1_secondary: > > + mov x0, 4 > > + msr spsr_el2, x0 > > + adrp x0, 1f > > + add x0, x0, :lo12:1f > > + msr elr_el2, x0 > > + isb > > + eret > > +1: > > /* enable FP/ASIMD and SVE */ > > mov x0, #(3 << 20) > > orr x0, x0, #(3 << 16) > > -- > > 2.25.1 > >