On 01/13/2017 09:23 AM, Alison Wang wrote:
Am 13.01.2017 um 08:50 schrieb Alison Wang <b18...@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.w...@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.


Alex

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to