All of lore.kernel.org
 help / color / mirror / Atom feed
* Help: commit 6112d58 breaks my kernel boot
@ 2023-12-26 16:59 Gabriel L. Somlo
  2023-12-26 17:11 ` Conor Dooley
  0 siblings, 1 reply; 10+ messages in thread
From: Gabriel L. Somlo @ 2023-12-26 16:59 UTC (permalink / raw)
  To: opensbi

Hi,

I recently updated my opensbi sources, and noticed that commit
6112d58 ("lib: utils/fdt: Allow to use reg-names when parsing ACLINT")
breaks booting the (latest upstream) kernel on my LiteX + 4-core Rocket
setup. Without that commit, the kernel boots fine. With the commit
applied, I get:

...
 riscv: providing IPIs using SBI IPI extension
 rcu: srcu_init: Setting srcu_struct sizes based on contention.
 clocksource: riscv_clocksource: mask: 0xffffffffffffffff max_cycles: 0x1d854df40, max_idle_ns: 7052723233920 ns
 sched_clock: 64 bits at 500kHz, resolution 2000ns, wraps every 4398046511000ns
 ------------[ cut here ]------------
 Missing cycle counter and fallback timer; RNG entropy collection will consequently suffer.
 WARNING: CPU: 0 PID: 0 at drivers/char/random.c:905 random_init+0xd0/0xf2
 CPU: 0 PID: 0 Comm: swapper/0 Not tainted 6.7.0-rc7-00022-ga42afb217b9c #103
 Hardware name: freechips,rocketchip-unknown (DT)
 epc : random_init+0xd0/0xf2
  ra : random_init+0xd0/0xf2
 epc : ffffffff8061b364 ra : ffffffff8061b364 sp : ffffffff80e03e40
  gp : ffffffff80ebaac0 tp : ffffffff80e0aa40 t0 : ffffffff80e137a8
  t1 : 000000000000002d t2 : 2d2d2d2d2d2d2d2d s0 : ffffffff80e03e80
  s1 : ffffffff80ebc320 a0 : 000000000000005a a1 : ffffffff80e82678
  a2 : 0000000000000010 a3 : fffffffffffffffe a4 : 0000000000000000
  a5 : 0000000000000000 a6 : 0000000000000000 a7 : 0000000000000000
  s2 : ffffffff80b0ca70 s3 : ffffffd81f7f5640 s4 : 0000000000000000
  s5 : ffffffff80ebb018 s6 : ffffffff80800018 s7 : 000000000000007f
  s8 : 0000000000002000 s9 : 00000000800436f0 s10: 0000000000000000
  s11: 0000000000000000 t3 : ffffffff80ecab67 t4 : ffffffff80ecab67
  t5 : ffffffff80ecab68 t6 : ffffffff80e03c58
 status: 0000000200000100 badaddr: ffffffff8061b364 cause: 0000000000000003
 [<ffffffff8061b364>] random_init+0xd0/0xf2
 [<ffffffff80600bb6>] start_kernel+0x45c/0x626
 ---[ end trace 0000000000000000 ]---

My DTS is enclosed in case it helps pinpoint what I might need to
update, or as a way to figure out whether commit 6112d58 is missing
some otherwise valid corner case.

Any ideas re. what I'm missing, what else about my setup I should
include to help you help me troubleshoot this, etc. -- much
appreciated!

Thanks,
--Gabriel


/dts-v1/;

/ {
	#address-cells = <1>;
	#size-cells = <1>;
	compatible = "freechips,rocketchip-unknown-dev";
	model = "freechips,rocketchip-unknown";
	chosen {
		bootargs = "console=liteuart earlycon=liteuart,0x12009000 swiotlb=noforce rootwait root=/dev/ram0";
		linux,initrd-start = <0x82000000>;
		linux,initrd-end   = <0x820BA974>; /* end initrd.gz + 12814 (?) bytes */
	};
	L13: cpus {
		#address-cells = <1>;
		#size-cells = <0>;
		timebase-frequency = <500000>;
		L6: cpu at 0 {
			clock-frequency = <50000000>;
			compatible = "sifive,rocket0", "riscv";
			d-cache-block-size = <64>;
			d-cache-sets = <64>;
			d-cache-size = <16384>;
			d-tlb-sets = <1>;
			d-tlb-size = <32>;
			device_type = "cpu";
			hardware-exec-breakpoint-count = <1>;
			i-cache-block-size = <64>;
			i-cache-sets = <64>;
			i-cache-size = <16384>;
			i-tlb-sets = <1>;
			i-tlb-size = <32>;
			mmu-type = "riscv,sv39";
			next-level-cache = <&L8>;
			reg = <0x0>;
			riscv,isa = "rv64imafdcZicsr_Zifencei_Zihpm_Xrocket";
			riscv,pmpgranularity = <4>;
			riscv,pmpregions = <8>;
			status = "okay";
			tlb-split;
			L4: interrupt-controller {
				#interrupt-cells = <1>;
				compatible = "riscv,cpu-intc";
				interrupt-controller;
			};
		};
		L16: cpu at 1 {
			clock-frequency = <50000000>;
			compatible = "sifive,rocket0", "riscv";
			d-cache-block-size = <64>;
			d-cache-sets = <64>;
			d-cache-size = <16384>;
			d-tlb-sets = <1>;
			d-tlb-size = <32>;
			device_type = "cpu";
			hardware-exec-breakpoint-count = <1>;
			i-cache-block-size = <64>;
			i-cache-sets = <64>;
			i-cache-size = <16384>;
			i-tlb-sets = <1>;
			i-tlb-size = <32>;
			mmu-type = "riscv,sv39";
			next-level-cache = <&L8>;
			reg = <0x1>;
			riscv,isa = "rv64imafdcZicsr_Zifencei_Zihpm_Xrocket";
			riscv,pmpgranularity = <4>;
			riscv,pmpregions = <8>;
			status = "okay";
			tlb-split;
			L14: interrupt-controller {
				#interrupt-cells = <1>;
				compatible = "riscv,cpu-intc";
				interrupt-controller;
			};
		};
		L26: cpu at 2 {
			clock-frequency = <50000000>;
			compatible = "sifive,rocket0", "riscv";
			d-cache-block-size = <64>;
			d-cache-sets = <64>;
			d-cache-size = <16384>;
			d-tlb-sets = <1>;
			d-tlb-size = <32>;
			device_type = "cpu";
			hardware-exec-breakpoint-count = <1>;
			i-cache-block-size = <64>;
			i-cache-sets = <64>;
			i-cache-size = <16384>;
			i-tlb-sets = <1>;
			i-tlb-size = <32>;
			mmu-type = "riscv,sv39";
			next-level-cache = <&L8>;
			reg = <0x2>;
			riscv,isa = "rv64imafdcZicsr_Zifencei_Zihpm_Xrocket";
			riscv,pmpgranularity = <4>;
			riscv,pmpregions = <8>;
			status = "okay";
			tlb-split;
			L24: interrupt-controller {
				#interrupt-cells = <1>;
				compatible = "riscv,cpu-intc";
				interrupt-controller;
			};
		};
		L36: cpu at 3 {
			clock-frequency = <50000000>;
			compatible = "sifive,rocket0", "riscv";
			d-cache-block-size = <64>;
			d-cache-sets = <64>;
			d-cache-size = <16384>;
			d-tlb-sets = <1>;
			d-tlb-size = <32>;
			device_type = "cpu";
			hardware-exec-breakpoint-count = <1>;
			i-cache-block-size = <64>;
			i-cache-sets = <64>;
			i-cache-size = <16384>;
			i-tlb-sets = <1>;
			i-tlb-size = <32>;
			mmu-type = "riscv,sv39";
			next-level-cache = <&L8>;
			reg = <0x3>;
			riscv,isa = "rv64imafdcZicsr_Zifencei_Zihpm_Xrocket";
			riscv,pmpgranularity = <4>;
			riscv,pmpregions = <8>;
			status = "okay";
			tlb-split;
			L34: interrupt-controller {
				#interrupt-cells = <1>;
				compatible = "riscv,cpu-intc";
				interrupt-controller;
			};
		};
	};
	L8: memory at 80000000 {
		device_type = "memory";
		reg = <0x80000000 0x20000000>; /* 512MB (ecpix5, nexys_video) */
	};
	clocks {
		sys_clk: litex_sys_clk {
			#clock-cells = <0>;
			compatible = "fixed-clock";
			clock-frequency = <50000000>;
		};
	};
	vreg_mmc: vreg_mmc {
		compatible = "regulator-fixed";
		regulator-name = "vreg_mmc";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		regulator-always-on;
	};
	L12: soc {
		#address-cells = <1>;
		#size-cells = <1>;
		compatible = "freechips,rocketchip-unknown-soc", "simple-bus";
		ranges;
		L2: clint at 2000000 {
			compatible = "riscv,clint0";
			interrupts-extended = <&L4 3 &L4 7 &L14 3 &L14 7 &L24 3 &L24 7 &L34 3 &L34 7>;
			reg = <0x2000000 0x10000>;
			reg-names = "control";
		};
		L3: debug-controller at 0 {
			compatible = "sifive,debug-013", "riscv,debug-013";
			//interrupts-extended = <&L4 0x3F &L14 0x3F &L24 0x3F &L34 0x3F>;
			//FIXME: had to reduce this to 0x3F before, now there
			//are no more kernel errors upon initialization, should
			//I just go with the chisel-elaborated defaults (below)?
			interrupts-extended = <&L4 0xFFFF &L14 0xFFFF &L24 0xFFFF &L34 0xFFFF>;
			reg = <0x0 0x1000>;
			reg-names = "control";
		};
		L0: error-device at 3000 {
			compatible = "sifive,error0";
			reg = <0x3000 0x1000>;
		};
		L7: external-interrupts {
			interrupt-parent = <&L1>;
			interrupts = <1 2 3 4 5 6 7 8>;
		};
		L1: interrupt-controller at c000000 {
			#interrupt-cells = <1>;
			compatible = "riscv,plic0";
			interrupt-controller;
			interrupts-extended = <&L4 11 &L4 9 &L14 11 &L14 9 &L24 11 &L24 9 &L34 11 &L34 9>;
			reg = <0xc000000 0x4000000>;
			reg-names = "control";
			riscv,max-priority = <7>;
			riscv,ndev = <8>;
		};
		L10: rom at 10000 {
			compatible = "sifive,rom0";
			reg = <0x10000 0x10000>;
			reg-names = "mem";
		};
		soc_ctrl0: soc_controller at 12000000 {
			compatible = "litex,soc-controller";
			reg = <0x12000000 0xc>;
		};
		liteuart0: serial at 12009000 {
			compatible = "litex,liteuart";
			reg = <0x12009000 0x100>;
			interrupt-parent = <&L1>;
			interrupts = <1>;
		};
		mac0: mac at 12001000 {
			compatible = "litex,liteeth";
			reg = <0x12001000 0x100>,
				<0x12001800 0x100>,
				<0x30000000 0x2000>;
			reg-names = "mac", "mdio", "buffer";
			litex,rx-slots = <2>;
			litex,tx-slots = <2>;
			litex,slot-size = <0x800>;
			interrupt-parent = <&L1>;
			interrupts = <3>;
		};
		mmc0: mmc at 12007800 {
			compatible = "litex,mmc";
			reg = <0x12007800 0x100>,
				<0x12006000 0x100>,
				<0x12005800 0x100>,
				<0x12007000 0x100>,
				<0x12006800 0x100>;
			reg-names = "phy", "core", "reader", "writer", "irq";
			clocks = <&sys_clk>;
			vmmc-supply = <&vreg_mmc>;
			interrupt-parent = <&L1>;
			interrupts = <5>;
		};
		litesata0: litesata at 12003000 {
			compatible = "litex,litesata";
			reg = <0x12003000 0x100>,
				<0x12004800 0x100>,
				<0x12005000 0x100>,
				<0x12004000 0x100>,
				<0x12003800 0x100>;
			reg-names = "ident", "phy", "reader", "writer", "irq";
			interrupt-parent = <&L1>;
			interrupts = <4>;
		};
		timer at 12008800 {
			compatible = "litex,timer";
			reg = <0x12008800 0x20>;
			clocks = <&sys_clk>;
			interrupt-parent = <&L1>;
			interrupts = <2>;
			//litex,width = <32>;
		};
	};
};



^ permalink raw reply	[flat|nested] 10+ messages in thread

* Help: commit 6112d58 breaks my kernel boot
  2023-12-26 16:59 Help: commit 6112d58 breaks my kernel boot Gabriel L. Somlo
@ 2023-12-26 17:11 ` Conor Dooley
  2023-12-26 17:19   ` Gabriel L. Somlo
  0 siblings, 1 reply; 10+ messages in thread
From: Conor Dooley @ 2023-12-26 17:11 UTC (permalink / raw)
  To: opensbi

On Tue, Dec 26, 2023 at 11:59:41AM -0500, Gabriel L. Somlo wrote:
> Hi,
> 
> I recently updated my opensbi sources, and noticed that commit
> 6112d58 ("lib: utils/fdt: Allow to use reg-names when parsing ACLINT")
> breaks booting the (latest upstream) kernel on my LiteX + 4-core Rocket
> setup. Without that commit, the kernel boots fine. With the commit
> applied, I get:

> 		L2: clint at 2000000 {
> 			compatible = "riscv,clint0";
> 			interrupts-extended = <&L4 3 &L4 7 &L14 3 &L14 7 &L24 3 &L24 7 &L34 3 &L34 7>;
> 			reg = <0x2000000 0x10000>;

> 			reg-names = "control";

If you remove this does it boot?

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 228 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/opensbi/attachments/20231226/e20b3ed6/attachment.sig>

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Help: commit 6112d58 breaks my kernel boot
  2023-12-26 17:11 ` Conor Dooley
@ 2023-12-26 17:19   ` Gabriel L. Somlo
  2023-12-26 17:27     ` Conor Dooley
  2023-12-26 17:28     ` Gabriel L. Somlo
  0 siblings, 2 replies; 10+ messages in thread
From: Gabriel L. Somlo @ 2023-12-26 17:19 UTC (permalink / raw)
  To: opensbi

On Tue, Dec 26, 2023 at 05:11:00PM +0000, Conor Dooley wrote:
> On Tue, Dec 26, 2023 at 11:59:41AM -0500, Gabriel L. Somlo wrote:
> > Hi,
> > 
> > I recently updated my opensbi sources, and noticed that commit
> > 6112d58 ("lib: utils/fdt: Allow to use reg-names when parsing ACLINT")
> > breaks booting the (latest upstream) kernel on my LiteX + 4-core Rocket
> > setup. Without that commit, the kernel boots fine. With the commit
> > applied, I get:
> 
> > 		L2: clint at 2000000 {
> > 			compatible = "riscv,clint0";
> > 			interrupts-extended = <&L4 3 &L4 7 &L14 3 &L14 7 &L24 3 &L24 7 &L34 3 &L34 7>;
> > 			reg = <0x2000000 0x10000>;
> 
> > 			reg-names = "control";
> 
> If you remove this does it boot?
> 

Yes, removing the `reg-names` line from the clint node allows the
kernel to boot without issues.

Thanks,
--Gabriel



^ permalink raw reply	[flat|nested] 10+ messages in thread

* Help: commit 6112d58 breaks my kernel boot
  2023-12-26 17:19   ` Gabriel L. Somlo
@ 2023-12-26 17:27     ` Conor Dooley
  2023-12-26 17:34       ` Gabriel L. Somlo
  2023-12-26 17:28     ` Gabriel L. Somlo
  1 sibling, 1 reply; 10+ messages in thread
From: Conor Dooley @ 2023-12-26 17:27 UTC (permalink / raw)
  To: opensbi

On Tue, Dec 26, 2023 at 12:19:20PM -0500, Gabriel L. Somlo wrote:
> On Tue, Dec 26, 2023 at 05:11:00PM +0000, Conor Dooley wrote:
> > On Tue, Dec 26, 2023 at 11:59:41AM -0500, Gabriel L. Somlo wrote:
> > > Hi,
> > > 
> > > I recently updated my opensbi sources, and noticed that commit
> > > 6112d58 ("lib: utils/fdt: Allow to use reg-names when parsing ACLINT")
> > > breaks booting the (latest upstream) kernel on my LiteX + 4-core Rocket
> > > setup. Without that commit, the kernel boots fine. With the commit
> > > applied, I get:
> > 
> > > 		L2: clint at 2000000 {
> > > 			compatible = "riscv,clint0";
> > > 			interrupts-extended = <&L4 3 &L4 7 &L14 3 &L14 7 &L24 3 &L24 7 &L34 3 &L34 7>;
> > > 			reg = <0x2000000 0x10000>;
> > 
> > > 			reg-names = "control";
> > 
> > If you remove this does it boot?
> > 
> 
> Yes, removing the `reg-names` line from the clint node allows the
> kernel to boot without issues.

Cool, sounds like a dts issue and not U-Boot's fault then. reg-names is
not a documented property for the regular clint, so it shouldn't be
here.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 228 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/opensbi/attachments/20231226/4c42f53d/attachment.sig>

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Help: commit 6112d58 breaks my kernel boot
  2023-12-26 17:19   ` Gabriel L. Somlo
  2023-12-26 17:27     ` Conor Dooley
@ 2023-12-26 17:28     ` Gabriel L. Somlo
  2023-12-26 21:56       ` Conor Dooley
  1 sibling, 1 reply; 10+ messages in thread
From: Gabriel L. Somlo @ 2023-12-26 17:28 UTC (permalink / raw)
  To: opensbi

On Tue, Dec 26, 2023 at 12:19:22PM -0500, Gabriel L. Somlo wrote:
> On Tue, Dec 26, 2023 at 05:11:00PM +0000, Conor Dooley wrote:
> > On Tue, Dec 26, 2023 at 11:59:41AM -0500, Gabriel L. Somlo wrote:
> > > Hi,
> > > 
> > > I recently updated my opensbi sources, and noticed that commit
> > > 6112d58 ("lib: utils/fdt: Allow to use reg-names when parsing ACLINT")
> > > breaks booting the (latest upstream) kernel on my LiteX + 4-core Rocket
> > > setup. Without that commit, the kernel boots fine. With the commit
> > > applied, I get:
> > 
> > > 		L2: clint at 2000000 {
> > > 			compatible = "riscv,clint0";
> > > 			interrupts-extended = <&L4 3 &L4 7 &L14 3 &L14 7 &L24 3 &L24 7 &L34 3 &L34 7>;
> > > 			reg = <0x2000000 0x10000>;
> > 
> > > 			reg-names = "control";
> > 
> > If you remove this does it boot?
> > 
> 
> Yes, removing the `reg-names` line from the clint node allows the
> kernel to boot without issues.

I have to wonder, though, is that the "proper" fix, or just a
temporary workaround? Is the `reg-names` entry actively "wrong"
in the context of the rest of my clint node, or is parsing in opensbi
actually buggy at the moment?

Thanks,
--G


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Help: commit 6112d58 breaks my kernel boot
  2023-12-26 17:27     ` Conor Dooley
@ 2023-12-26 17:34       ` Gabriel L. Somlo
  2023-12-26 21:54         ` Conor Dooley
  0 siblings, 1 reply; 10+ messages in thread
From: Gabriel L. Somlo @ 2023-12-26 17:34 UTC (permalink / raw)
  To: opensbi

On Tue, Dec 26, 2023 at 05:27:55PM +0000, Conor Dooley wrote:
> On Tue, Dec 26, 2023 at 12:19:20PM -0500, Gabriel L. Somlo wrote:
> > On Tue, Dec 26, 2023 at 05:11:00PM +0000, Conor Dooley wrote:
> > > On Tue, Dec 26, 2023 at 11:59:41AM -0500, Gabriel L. Somlo wrote:
> > > > Hi,
> > > > 
> > > > I recently updated my opensbi sources, and noticed that commit
> > > > 6112d58 ("lib: utils/fdt: Allow to use reg-names when parsing ACLINT")
> > > > breaks booting the (latest upstream) kernel on my LiteX + 4-core Rocket
> > > > setup. Without that commit, the kernel boots fine. With the commit
> > > > applied, I get:
> > > 
> > > > 		L2: clint at 2000000 {
> > > > 			compatible = "riscv,clint0";
> > > > 			interrupts-extended = <&L4 3 &L4 7 &L14 3 &L14 7 &L24 3 &L24 7 &L34 3 &L34 7>;
> > > > 			reg = <0x2000000 0x10000>;
> > > 
> > > > 			reg-names = "control";
> > > 
> > > If you remove this does it boot?
> > > 
> > 
> > Yes, removing the `reg-names` line from the clint node allows the
> > kernel to boot without issues.

> reg-names is not a documented property for the regular clint,
> so it shouldn't be here.

OK, thanks for pointing that out. `reg-names` is generated by
Rocketchip during chisel-to-verilog elaboration, so I never questioned
whether it actually belonged there or not... :)

Thanks,
--G


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Help: commit 6112d58 breaks my kernel boot
  2023-12-26 17:34       ` Gabriel L. Somlo
@ 2023-12-26 21:54         ` Conor Dooley
  0 siblings, 0 replies; 10+ messages in thread
From: Conor Dooley @ 2023-12-26 21:54 UTC (permalink / raw)
  To: opensbi

On Tue, Dec 26, 2023 at 12:34:59PM -0500, Gabriel L. Somlo wrote:
> On Tue, Dec 26, 2023 at 05:27:55PM +0000, Conor Dooley wrote:
> > On Tue, Dec 26, 2023 at 12:19:20PM -0500, Gabriel L. Somlo wrote:
> > > On Tue, Dec 26, 2023 at 05:11:00PM +0000, Conor Dooley wrote:
> > > > On Tue, Dec 26, 2023 at 11:59:41AM -0500, Gabriel L. Somlo wrote:
> > > > > Hi,
> > > > > 
> > > > > I recently updated my opensbi sources, and noticed that commit
> > > > > 6112d58 ("lib: utils/fdt: Allow to use reg-names when parsing ACLINT")
> > > > > breaks booting the (latest upstream) kernel on my LiteX + 4-core Rocket
> > > > > setup. Without that commit, the kernel boots fine. With the commit
> > > > > applied, I get:
> > > > 
> > > > > 		L2: clint at 2000000 {
> > > > > 			compatible = "riscv,clint0";
> > > > > 			interrupts-extended = <&L4 3 &L4 7 &L14 3 &L14 7 &L24 3 &L24 7 &L34 3 &L34 7>;
> > > > > 			reg = <0x2000000 0x10000>;
> > > > 
> > > > > 			reg-names = "control";
> > > > 
> > > > If you remove this does it boot?
> > > > 
> > > 
> > > Yes, removing the `reg-names` line from the clint node allows the
> > > kernel to boot without issues.
> 
> > reg-names is not a documented property for the regular clint,
> > so it shouldn't be here.
> 
> OK, thanks for pointing that out. `reg-names` is generated by
> Rocketchip during chisel-to-verilog elaboration, so I never questioned
> whether it actually belonged there or not... :)

Sounds like a bug in rocketchip to me :)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 228 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/opensbi/attachments/20231226/4567a82d/attachment.sig>

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Help: commit 6112d58 breaks my kernel boot
  2023-12-26 17:28     ` Gabriel L. Somlo
@ 2023-12-26 21:56       ` Conor Dooley
  2023-12-26 22:35         ` Gabriel Somlo
  0 siblings, 1 reply; 10+ messages in thread
From: Conor Dooley @ 2023-12-26 21:56 UTC (permalink / raw)
  To: opensbi

On Tue, Dec 26, 2023 at 12:28:52PM -0500, Gabriel L. Somlo wrote:
> On Tue, Dec 26, 2023 at 12:19:22PM -0500, Gabriel L. Somlo wrote:
> > On Tue, Dec 26, 2023 at 05:11:00PM +0000, Conor Dooley wrote:
> > > On Tue, Dec 26, 2023 at 11:59:41AM -0500, Gabriel L. Somlo wrote:
> > > > Hi,
> > > > 
> > > > I recently updated my opensbi sources, and noticed that commit
> > > > 6112d58 ("lib: utils/fdt: Allow to use reg-names when parsing ACLINT")
> > > > breaks booting the (latest upstream) kernel on my LiteX + 4-core Rocket
> > > > setup. Without that commit, the kernel boots fine. With the commit
> > > > applied, I get:
> > > 
> > > > 		L2: clint at 2000000 {
> > > > 			compatible = "riscv,clint0";
> > > > 			interrupts-extended = <&L4 3 &L4 7 &L14 3 &L14 7 &L24 3 &L24 7 &L34 3 &L34 7>;
> > > > 			reg = <0x2000000 0x10000>;
> > > 
> > > > 			reg-names = "control";
> > > 
> > > If you remove this does it boot?
> > > 
> > 
> > Yes, removing the `reg-names` line from the clint node allows the
> > kernel to boot without issues.
> 
> I have to wonder, though, is that the "proper" fix, or just a
> temporary workaround? Is the `reg-names` entry actively "wrong"
> in the context of the rest of my clint node, or is parsing in opensbi
> actually buggy at the moment?

The parsing in OpenSBI is binding compliant (as far as I can see from a
brief look at the commit you identified) but I suppose it could be
limited to avoid checking reg-names for things matching the regular clint,
if there are a lot of incorrect devicetrees out there likely to be
affected.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 228 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/opensbi/attachments/20231226/07425282/attachment.sig>

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Help: commit 6112d58 breaks my kernel boot
  2023-12-26 21:56       ` Conor Dooley
@ 2023-12-26 22:35         ` Gabriel Somlo
  2023-12-27  0:50           ` Inochi Amaoto
  0 siblings, 1 reply; 10+ messages in thread
From: Gabriel Somlo @ 2023-12-26 22:35 UTC (permalink / raw)
  To: opensbi

On Tue, Dec 26, 2023 at 09:56:56PM +0000, Conor Dooley wrote:
> On Tue, Dec 26, 2023 at 12:28:52PM -0500, Gabriel L. Somlo wrote:
> > On Tue, Dec 26, 2023 at 12:19:22PM -0500, Gabriel L. Somlo wrote:
> > > On Tue, Dec 26, 2023 at 05:11:00PM +0000, Conor Dooley wrote:
> > > > On Tue, Dec 26, 2023 at 11:59:41AM -0500, Gabriel L. Somlo wrote:
> > > > > Hi,
> > > > > 
> > > > > I recently updated my opensbi sources, and noticed that commit
> > > > > 6112d58 ("lib: utils/fdt: Allow to use reg-names when parsing ACLINT")
> > > > > breaks booting the (latest upstream) kernel on my LiteX + 4-core Rocket
> > > > > setup. Without that commit, the kernel boots fine. With the commit
> > > > > applied, I get:
> > > > 
> > > > > 		L2: clint at 2000000 {
> > > > > 			compatible = "riscv,clint0";
> > > > > 			interrupts-extended = <&L4 3 &L4 7 &L14 3 &L14 7 &L24 3 &L24 7 &L34 3 &L34 7>;
> > > > > 			reg = <0x2000000 0x10000>;
> > > > 
> > > > > 			reg-names = "control";
> > > > 
> > > > If you remove this does it boot?
> > > > 
> > > 
> > > Yes, removing the `reg-names` line from the clint node allows the
> > > kernel to boot without issues.
> > 
> > I have to wonder, though, is that the "proper" fix, or just a
> > temporary workaround? Is the `reg-names` entry actively "wrong"
> > in the context of the rest of my clint node, or is parsing in opensbi
> > actually buggy at the moment?
> 
> The parsing in OpenSBI is binding compliant (as far as I can see from a
> brief look at the commit you identified) but I suppose it could be
> limited to avoid checking reg-names for things matching the regular clint,
> if there are a lot of incorrect devicetrees out there likely to be
> affected.

As luck would have it, mine is a soft-core fpga-based cpu setup, and
the Rocket-provided dts is a sample that can be (and is) edited before
deployment -- so I can easily comment out or remove the `reg-names`
line in addition to all the other "massaging" I do to the sample they
provide. In some plausible future I might even figure out how they
generate the dts and submit a patch to stop them from adding the offending
line in the first place.

It would be a problem for any actual hardware that ships with a "bad"
DTS in ROM -- but that's for someone else to complain about... ;)

Thanks again,
--Gabriel



^ permalink raw reply	[flat|nested] 10+ messages in thread

* Help: commit 6112d58 breaks my kernel boot
  2023-12-26 22:35         ` Gabriel Somlo
@ 2023-12-27  0:50           ` Inochi Amaoto
  0 siblings, 0 replies; 10+ messages in thread
From: Inochi Amaoto @ 2023-12-27  0:50 UTC (permalink / raw)
  To: opensbi

>On Tue, Dec 26, 2023 at 09:56:56PM +0000, Conor Dooley wrote:
>> On Tue, Dec 26, 2023 at 12:28:52PM -0500, Gabriel L. Somlo wrote:
>>> On Tue, Dec 26, 2023 at 12:19:22PM -0500, Gabriel L. Somlo wrote:
>>>> On Tue, Dec 26, 2023 at 05:11:00PM +0000, Conor Dooley wrote:
>>>>> On Tue, Dec 26, 2023 at 11:59:41AM -0500, Gabriel L. Somlo wrote:
>>>>>> Hi,
>>>>>>
>>>>>> I recently updated my opensbi sources, and noticed that commit
>>>>>> 6112d58 ("lib: utils/fdt: Allow to use reg-names when parsing ACLINT")
>>>>>> breaks booting the (latest upstream) kernel on my LiteX + 4-core Rocket
>>>>>> setup. Without that commit, the kernel boots fine. With the commit
>>>>>> applied, I get:
>>>>>
>>>>>> 		L2: clint at 2000000 {
>>>>>> 			compatible = "riscv,clint0";
>>>>>> 			interrupts-extended = <&L4 3 &L4 7 &L14 3 &L14 7 &L24 3 &L24 7 &L34 3 &L34 7>;
>>>>>> 			reg = <0x2000000 0x10000>;
>>>>>
>>>>>> 			reg-names = "control";
>>>>>
>>>>> If you remove this does it boot?
>>>>>
>>>>
>>>> Yes, removing the `reg-names` line from the clint node allows the
>>>> kernel to boot without issues.
>>>
>>> I have to wonder, though, is that the "proper" fix, or just a
>>> temporary workaround? Is the `reg-names` entry actively "wrong"
>>> in the context of the rest of my clint node, or is parsing in opensbi
>>> actually buggy at the moment?
>>
>> The parsing in OpenSBI is binding compliant (as far as I can see from a
>> brief look at the commit you identified) but I suppose it could be
>> limited to avoid checking reg-names for things matching the regular clint,
>> if there are a lot of incorrect devicetrees out there likely to be
>> affected.
>
>As luck would have it, mine is a soft-core fpga-based cpu setup, and
>the Rocket-provided dts is a sample that can be (and is) edited before
>deployment -- so I can easily comment out or remove the `reg-names`
>line in addition to all the other "massaging" I do to the sample they
>provide. In some plausible future I might even figure out how they
>generate the dts and submit a patch to stop them from adding the offending
>line in the first place.
>
>It would be a problem for any actual hardware that ships with a "bad"
>DTS in ROM -- but that's for someone else to complain about... ?
>
>Thanks again,
>--Gabriel
>

Hi Gabriel,

I have already submit a new patch to restrict the use of regname to aclint
only. Can you test that patch? It should solve your problem.

Patch Link:
https://lists.infradead.org/pipermail/opensbi/2023-December/006191.html

Regards,
Inochi.


^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2023-12-27  0:50 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-12-26 16:59 Help: commit 6112d58 breaks my kernel boot Gabriel L. Somlo
2023-12-26 17:11 ` Conor Dooley
2023-12-26 17:19   ` Gabriel L. Somlo
2023-12-26 17:27     ` Conor Dooley
2023-12-26 17:34       ` Gabriel L. Somlo
2023-12-26 21:54         ` Conor Dooley
2023-12-26 17:28     ` Gabriel L. Somlo
2023-12-26 21:56       ` Conor Dooley
2023-12-26 22:35         ` Gabriel Somlo
2023-12-27  0:50           ` Inochi Amaoto

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.