[U-Boot] [PATCH] armv8: aarch64: Fix the warning about x1-x3 nonzero issue

Alison Wang alison.wang at nxp.com
Mon Jan 16 07:31:55 CET 2017


> On 01/13/2017 10:36 AM, Alison Wang wrote:
> >> On 01/13/2017 09:23 AM, Alison Wang wrote:
> >>>>> Am 13.01.2017 um 08:50 schrieb Alison Wang <b18965 at freescale.com>:
> >>>>>
> >>>>> For 64-bit kernel, there is a warning about x1-x3 nonzero in
> >>>> violation
> >>>>> of boot protocol. x3 should be reset to zero before jumping to
> the
> >>>>> kernel.
> >>>>>
> >>>>> This patch will adjust the parameters to transfer and make sure
> x3
> >>>>> is zero.
> >>>>>
> >>>>> Signed-off-by: Alison Wang <alison.wang at nxp.com>
> >>>> If x3 is part of the boot protocol, please treat it as function
> >>>> argument rather than hard code it to 0.
> >>>>
> >>> [Alison Wang] I think x3 need to set to 0. Refer to the codes for
> >>> the warning in kernel,
> >>>
> >>>           if (boot_args[1] || boot_args[2] || boot_args[3]) {
> >>>                   pr_err("WARNING: x1-x3 nonzero in violation of
> >>> boot
> >> protocol:\n"
> >> "\tx1: %016llx\n\tx2: %016llx\n\tx3: %016llx\n"
> >>>                           "This indicates a broken bootloader or
> old
> >> kernel\n",
> >>>                           boot_args[1], boot_args[2], boot_args[3]);
> >>>           }
> >> Yes, that merely means that the kernel doesn't take 3 arguments, it
> >> takes 4. Today args[1..3] have to be 0, but I don't want to iron
> that
> >> out in u-boot code.
> >>
> >> So in pseudo-code, what we do today is we call
> >>
> >>     entry(dt_addr, 0, 0);
> >>
> >> and instead we should be calling
> >>
> >>     entry(dt_addr, 0, 0, 0);
> >>
> >> So in U-Boot code that means we should change the prototype for our
> >> switch function from
> >>
> >> void armv8_switch_to_el2(u64 args, u64 mach_nr, u64 fdt_addr,
> >>                            u64 entry_point, u64 es_flag);
> >>
> >> to
> >>
> >> void armv8_switch_to_el2(u64 args, u64 mach_nr, u64 fdt_addr,
> >>                            u64 arg4, u64 entry_point, u64 es_flag);
> >>
> >> and adapt the macros accordingly to use x5/x6 instead of x4/5.
> >>
> > [Alison Wang] I understand your meaning. Actually, I thought that
> method too. Well, my concern is that there are more changes. Not only
> armv8_switch_to_el2 and armv8_switch_to_el1, all the places calling
> them need to change too. It may cause more problems. With this concern,
> I choose a simple way to fix this issue before.
> 
> I think there'll be enough people testing Linux boot :), let's try to
> fix it properly right away.
> 
[Alison Wang] Ok, I will send v2 patch. Please help to review.

Thanks.

Best Regards,
Alison Wang


More information about the U-Boot mailing list