lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Wed, 20 Mar 2024 14:14:14 -0500
From: Rob Herring <robh+dt@...nel.org>
To: Guenter Roeck <linux@...ck-us.net>
Cc: Stephen Boyd <sboyd@...nel.org>, Frank Rowand <frowand.list@...il.com>, 
	Clément Léger <clement.leger@...tlin.com>, 
	devicetree@...r.kernel.org, linux-kernel@...r.kernel.org, 
	Lizhi Hou <lizhi.hou@...inx.com>, Allan Nielsen <allan.nielsen@...rochip.com>, 
	Horatiu Vultur <horatiu.vultur@...rochip.com>, 
	Steen Hegelund <steen.hegelund@...rochip.com>, 
	Thomas Petazzoni <thomas.petazzoni@...tlin.com>
Subject: Re: [PATCH v4 1/2] of: create of_root if no dtb provided

On Mon, Mar 18, 2024 at 4:31 PM Guenter Roeck <linux@...ck-us.net> wrote:
>
> On 3/18/24 12:26, Rob Herring wrote:
> > +Stephen
> >
> > On Mon, Mar 18, 2024 at 12:09 PM Guenter Roeck <linux@...ck-us.net> wrote:
> >>
> >> Hi,
> >>
> >> On Fri, Mar 17, 2023 at 12:34:14AM -0500, Frank Rowand wrote:
> >>> When enabling CONFIG_OF on a platform where of_root is not populated by
> >>> firmware, we end up without a root node. In order to apply overlays and
> >>> create subnodes of the root node, we need one. Create this root node
> >>> by unflattening an empty builtin dtb.
> >>>
> >>> If firmware provides a flattened device tree (FDT) then the FDT is
> >>> unflattened via setup_arch().  Otherwise setup_of(), which is called
> >>> immediately after setup_arch(), will create the default root node
> >>> if it does not exist.
> >>>
> >>> Signed-off-by: Frank Rowand <frowand.list@...il.com>
> >>
> >> This patch results in a crash on nios2.
> >
> > This patch was never applied. I assume you meant a later version of it
> > that did get applied.
> >
> >>
> >> Building nios2:10m50-ghrd:10m50_defconfig:10m50_devboard.dts ... running ...R failed (crashed)
> >
> > Booting with DT?
> >
> >> ------------
> >> qemu log:
> >> earlycon: uart8250 at MMIO32 0x18001600 (options '')
> >> printk: legacy bootconsole [uart8250] enabled
> >> Linux version 6.8.0-11409-gf6cef5f8c37f (groeck@...ktop) (nios2-linux-gcc (GCC) 11.4.0, GNU ld (GNU Binutils) 2.40) #1 Sun Mar 17 23:38:59 PDT 2024
> >> Kernel panic - not syncing: early_init_dt_alloc_memory_arch: Failed to allocate 72 bytes align=0x40
> >> ---[ end Kernel panic - not syncing: early_init_dt_alloc_memory_arch: Failed to allocate 72 bytes align=0x40 ]---
> >
> > nios2 looks utterly broken to me. This change should be a nop unless
> > initial_boot_params is NULL. It looks like it is possible for r6 (dtb
> > address) to be 0 depending on kconfig options, but that would have
> > skipped copying and unflattening which would then panic in
> > setup_cpuinfo(). If initial_boot_params is not NULL, then the same
> > early_init_dt_alloc_memory_arch() calls should fail when copying the
> > DT. So I don't see how nios2 booting with DT ever worked.
> >
>
> For nios2, in early_init_devtree():
>
> void __init early_init_devtree(void *params)
> {
>          __be32 *dtb = (u32 *)__dtb_start;
>         ...
>          if (be32_to_cpu((__be32) *dtb) == OF_DT_HEADER)
>                  params = (void *)__dtb_start;
>
> That worked fine until this patch. Starting with this patch, __dtb_start
> always points to a valid empty devicetree blob, which overrides the
> devicetree blob passed to early_init_devtree(). This causes the problem.

With an external DTB, it doesn't boot with or without this patch. It
just dies in different spots. Before it just skipped any memory
allocs. With 'CONFIG_NIOS2_DTB_SOURCE="10m50_devboard.dts"', it boots
fine for me with or without this patch. This is what I'm running:

qemu-system-nios2 -kernel .build-nios2/vmlinux -nographic -dtb
build-nios2/arch/nios2/boot/dts/10m50_devboard.dtb -append
"earlycon=uart8250,mmio32,0x18001600,115200n8"

Rob

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ