[PATCH] arm64: Fix early pointer print plus improve comment
Robin Murphy
robin.murphy at arm.com
Tue Dec 21 02:11:28 PST 2021
On 2021-12-20 15:54, Guilherme G. Piccoli wrote:
> When facing a really early issue on DT parsing we have currently
> a message that shows both the physical and virtual address of the
> FDT. The printk pointer modifier there was not right for the physical
> address, due to the hashed address stuff, so hereby we fix that.
>
> Also, we tried to improve a bit commenting on that function, given that
> if kernel fails there, it just hangs forever in a cpu_relax() loop.
> The reason we cannot BUG/panic there is that is too early to do so;
> thanks to Mark Brown for pointing that on IRC.
>
> Signed-off-by: Guilherme G. Piccoli <gpiccoli at igalia.com>
> ---
> arch/arm64/kernel/setup.c | 6 +++++-
> 1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/arch/arm64/kernel/setup.c b/arch/arm64/kernel/setup.c
> index be5f85b0a24d..0d5c51a9549e 100644
> --- a/arch/arm64/kernel/setup.c
> +++ b/arch/arm64/kernel/setup.c
> @@ -189,11 +189,15 @@ static void __init setup_machine_fdt(phys_addr_t dt_phys)
>
> if (!dt_virt || !early_init_dt_scan(dt_virt)) {
> pr_crit("\n"
> - "Error: invalid device tree blob at physical address %pa (virtual address 0x%p)\n"
> + "Error: invalid device tree blob at physical address %px (virtual address 0x%p)\n"
%pa is the correct specifier for printing a physical address, so I don't
really follow what's being "fixed" here. Especially given that what this
will now do is print the virtual address of the local dt_phys variable
itself. How is that useful?
Robin.
> "The dtb must be 8-byte aligned and must not exceed 2 MB in size\n"
> "\nPlease check your bootloader.",
> &dt_phys, dt_virt);
>
> + /* Note that in this _really_ early stage we cannot even BUG()
> + * or oops, so the least terrible thing to do is cpu_relax(),
> + * or else we could end-up printing non-initialized data, etc.
> + */
> while (true)
> cpu_relax();
> }
More information about the linux-arm-kernel
mailing list