arm64: Unhash early pointer print plus improve comment
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 for the virtual address shows a hashed address there unless the user provides "no_hash_pointers" parameter in the command-line. The situation in which this message shows-up is a bit more serious though: the boot process is broken, nothing can be done (even an oops is too much for this early stage) so we have this message as a last resort in order to help debug bootloader issues, for example. Hence, we hereby change that to "%px" in order to make debugging easy, there's not much information leak risk in such early boot failure. Also, we tried to improve a bit the 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 is that is too early to do so; thanks to Mark Brown for pointing that on IRC and thanks Robin Murphy for the good pointer hash discussion in the mailing-list. Cc: Mark Brown <broonie@kernel.org> Cc: Robin Murphy <robin.murphy@arm.com> Signed-off-by: Guilherme G. Piccoli <gpiccoli@igalia.com> Reviewed-by: Robin Murphy <robin.murphy@arm.com> Acked-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> Link: https://lore.kernel.org/r/20211221155230.1532850-1-gpiccoli@igalia.com Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
This commit is contained in:
Родитель
d5624bb29f
Коммит
31e833b203
|
@ -189,11 +189,16 @@ static void __init setup_machine_fdt(phys_addr_t dt_phys)
|
||||||
|
|
||||||
if (!dt_virt || !early_init_dt_scan(dt_virt)) {
|
if (!dt_virt || !early_init_dt_scan(dt_virt)) {
|
||||||
pr_crit("\n"
|
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 %pa (virtual address 0x%px)\n"
|
||||||
"The dtb must be 8-byte aligned and must not exceed 2 MB in size\n"
|
"The dtb must be 8-byte aligned and must not exceed 2 MB in size\n"
|
||||||
"\nPlease check your bootloader.",
|
"\nPlease check your bootloader.",
|
||||||
&dt_phys, dt_virt);
|
&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)
|
while (true)
|
||||||
cpu_relax();
|
cpu_relax();
|
||||||
}
|
}
|
||||||
|
|
Загрузка…
Ссылка в новой задаче