U-Boot Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/3] Spacemit K3 enable Linux boot
@ 2026-11-02 19:50 E Shattow
  2026-11-02 19:50 ` [PATCH v2 1/3] riscv: dts: spacemit: k3: override reserved status of mimsic and maplic E Shattow
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: E Shattow @ 2026-11-02 19:50 UTC (permalink / raw)
  To: u-boot, Yixun Lan; +Cc: E Shattow

Adopt some fixes needed for Linux v7.2.10+ boot and enable
BOOTSTD_FULL together with minimal env addr variable defaults.

Build and test only with vendor BSP k3-br-v1.0.10 having reduced [1]
configuration to avoid a memory resource conflict. The vendor BSP SPL
in its default configuration attempts to load opensbi separately from
u-boot main app, and also attempts to load an embedded controller OS
image, neither of which is useful for mainline opensbi, mainline
Linux, and mainline U-Boot.

Changes since v1:
- Patch 1/3 apply tags; discussion continues upstream [2] about
  whether this should be enabled in S-mode Linux or only enabled by
  M-mode firmware (e.g. U-Boot SPL and OpenSBI).
- Patch 2/3 replaced by corresponding cherry-pick from Linux v7.4-rc1

1: https://lore.kernel.org/u-boot/20261029003327.1890979-1-e@freeshell.de/
2: https://lore.kernel.org/lkml/20261029162343.1896134-1-e@freeshell.de/

E Shattow (2):
  riscv: dts: spacemit: k3: override reserved status of mimsic and
    maplic
  configs: spacemit: k3: enable CONFIG_BOOTSTD_FULL

Junhui Liu (1):
  riscv: dts: spacemit: k3: Drop guest properties from M-level IMSIC

 arch/riscv/dts/spacemit-k3-u-boot.dtsi  | 4 ++++
 configs/spacemit_k3_defconfig           | 9 +--------
 dts/upstream/src/riscv/spacemit/k3.dtsi | 2 --
 include/configs/spacemit-k3.h           | 6 ++++++
 4 files changed, 11 insertions(+), 10 deletions(-)


base-commit: e43c38e00218eae1a7b4a683c0fef8973d838fa3
-- 
2.53.0


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

* [PATCH v2 1/3] riscv: dts: spacemit: k3: override reserved status of mimsic and maplic
  2026-11-02 19:50 [PATCH v2 0/3] Spacemit K3 enable Linux boot E Shattow
@ 2026-11-02 19:50 ` E Shattow
  2026-11-02 19:50 ` [PATCH v2 2/3] riscv: dts: spacemit: k3: Drop guest properties from M-level IMSIC E Shattow
  2026-11-02 19:50 ` [PATCH v2 3/3] configs: spacemit: k3: enable CONFIG_BOOTSTD_FULL E Shattow
  2 siblings, 0 replies; 4+ messages in thread
From: E Shattow @ 2026-11-02 19:50 UTC (permalink / raw)
  To: u-boot, Yixun Lan, Tim Ouyang, Leo Liang, Yao Zi, Tom Rini
  Cc: E Shattow, Troy Mitchell

S-Mode Linux boot stalls when probing peripherals unless M-Mode OpenSBI
has the enabled mimsic and maplic nodes. Override these nodes so Linux
can boot.

Reported-by: Yixun Lan <dlan@kernel.org>
Acked-by: Troy Mitchell <troy.mitchell@linux.spacemit.com>
Signed-off-by: E Shattow <e@freeshell.de>
---
 arch/riscv/dts/spacemit-k3-u-boot.dtsi | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/arch/riscv/dts/spacemit-k3-u-boot.dtsi b/arch/riscv/dts/spacemit-k3-u-boot.dtsi
index 352e85e7de87..278b36acc79f 100644
--- a/arch/riscv/dts/spacemit-k3-u-boot.dtsi
+++ b/arch/riscv/dts/spacemit-k3-u-boot.dtsi
@@ -3,4 +3,8 @@
  * Copyright (C) 2026 Yixun Lan <dlan@kernel.org>
  */
 
+/* Override reserved status of mimsic and maplic for OpenSBI */
+&mimsic { status = "okay"; };
+&maplic { status = "okay"; };
+
 #include "spacemit-k3-binman.dtsi"
-- 
2.53.0


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

* [PATCH v2 2/3] riscv: dts: spacemit: k3: Drop guest properties from M-level IMSIC
  2026-11-02 19:50 [PATCH v2 0/3] Spacemit K3 enable Linux boot E Shattow
  2026-11-02 19:50 ` [PATCH v2 1/3] riscv: dts: spacemit: k3: override reserved status of mimsic and maplic E Shattow
@ 2026-11-02 19:50 ` E Shattow
  2026-11-02 19:50 ` [PATCH v2 3/3] configs: spacemit: k3: enable CONFIG_BOOTSTD_FULL E Shattow
  2 siblings, 0 replies; 4+ messages in thread
From: E Shattow @ 2026-11-02 19:50 UTC (permalink / raw)
  To: u-boot, Sumit Garg, Yixun Lan, Tim Ouyang, Leo Liang, Yao Zi,
	Tom Rini, Guodong Xu
  Cc: Junhui Liu

From: Junhui Liu <junhui.liu@pigmoral.tech>

The mimsic node describes the machine-level IMSIC, whose MMIO region is
0x10000 (64 KiB) for all 8 harts. However, the node also specifies
riscv,guest-index-bits = <6>, and per the AIA specification the
per-hart stride is 2^(guest-index-bits + 12) bytes when guest interrupt
files exist, i.e. 2^(6 + 12) = 256 KiB per hart and 2 MiB for all 8
harts. The described region cannot hold even a single hart's files, so
the node contradicts itself. OpenSBI enforces exactly this constraint in
imsic_data_check() and rejects the node with -EINVAL, preventing the
M-level IMSIC from initializing:

  fdt_driver_init_by_offset: interrupt-controller@f1000000 (riscv,imsics) init failed: -3
  init_coldboot: irqchip init failed (error -3)

Moreover, guest interrupt files exist to act as the supervisor-level
interrupt files of virtual harts; there is no machine-level counterpart.
riscv,num-guest-ids is equally meaningless for the machine-level IMSIC.

Drop both "riscv,guest-index-bits" and "riscv,num-guest-ids" properties
from the mimsic node so the node matches the actual hardware layout.

Fixes: 56f37e391a62 ("riscv: dts: spacemit: add initial support for K3 SoC")
Signed-off-by: Junhui Liu <junhui.liu@pigmoral.tech>
Reviewed-by: Yixun Lan <dlan@kernel.org>
Link: https://patch.msgid.link/20260729-k3-mimsic-fix-v1-1-368c0aec04b9@pigmoral.tech
Signed-off-by: Yixun Lan <dlan@kernel.org>

[ upstream commit: 01e2f07c44fc46180bdb10e70506f8acf44a53dd ]

(cherry picked from commit d44cd4bcf93bb5c99a4762ed5f11656b93f9e5cc)
---
 dts/upstream/src/riscv/spacemit/k3.dtsi | 2 --
 1 file changed, 2 deletions(-)

diff --git a/dts/upstream/src/riscv/spacemit/k3.dtsi b/dts/upstream/src/riscv/spacemit/k3.dtsi
index c3f2dce0969c..2d022e1364f1 100644
--- a/dts/upstream/src/riscv/spacemit/k3.dtsi
+++ b/dts/upstream/src/riscv/spacemit/k3.dtsi
@@ -1287,9 +1287,7 @@
 					      <&cpu4_intc 11>, <&cpu5_intc 11>,
 					      <&cpu6_intc 11>, <&cpu7_intc 11>;
 			msi-controller;
-			riscv,guest-index-bits = <6>;
 			riscv,hart-index-bits = <4>;
-			riscv,num-guest-ids = <511>;
 			riscv,num-ids = <511>;
 			status = "reserved";
 		};
-- 
2.53.0


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

* [PATCH v2 3/3] configs: spacemit: k3: enable CONFIG_BOOTSTD_FULL
  2026-11-02 19:50 [PATCH v2 0/3] Spacemit K3 enable Linux boot E Shattow
  2026-11-02 19:50 ` [PATCH v2 1/3] riscv: dts: spacemit: k3: override reserved status of mimsic and maplic E Shattow
  2026-11-02 19:50 ` [PATCH v2 2/3] riscv: dts: spacemit: k3: Drop guest properties from M-level IMSIC E Shattow
@ 2026-11-02 19:50 ` E Shattow
  2 siblings, 0 replies; 4+ messages in thread
From: E Shattow @ 2026-11-02 19:50 UTC (permalink / raw)
  To: u-boot, Yixun Lan, Tom Rini; +Cc: E Shattow

Define minimal env variables for boot in spacemit-k3.h with fdtfile
as the CFG_EXTRA_ENV_SETTINGS sentinel, and enable CONFIG_BOOTSTD_FULL

Signed-off-by: E Shattow <e@freeshell.de>
---
 configs/spacemit_k3_defconfig | 9 +--------
 include/configs/spacemit-k3.h | 6 ++++++
 2 files changed, 7 insertions(+), 8 deletions(-)

diff --git a/configs/spacemit_k3_defconfig b/configs/spacemit_k3_defconfig
index f49442951c8f..9bf582564d07 100644
--- a/configs/spacemit_k3_defconfig
+++ b/configs/spacemit_k3_defconfig
@@ -19,25 +19,18 @@ CONFIG_RISCV_SMODE=y
 CONFIG_RISCV_ISA_ZICBOM=y
 CONFIG_STACK_SIZE=0x100000
 CONFIG_FIT=y
-CONFIG_SUPPORT_RAW_INITRD=y
+CONFIG_BOOTSTD_FULL=y
 CONFIG_SYS_CBSIZE=256
 CONFIG_SYS_PBSIZE=276
 # CONFIG_BOARD_INIT is not set
-CONFIG_HUSH_PARSER=y
 CONFIG_CMD_TLV_EEPROM=y
 CONFIG_CMD_GPIO=y
 CONFIG_CMD_I2C=y
 CONFIG_CMD_MTD=y
-CONFIG_CMD_DHCP=y
 CONFIG_CMD_DNS=y
-CONFIG_CMD_MII=y
-CONFIG_CMD_PING=y
 CONFIG_CMD_WGET=y
-CONFIG_CMD_PXE=y
 CONFIG_CMD_PMIC=y
 CONFIG_CMD_REGULATOR=y
-CONFIG_CMD_FAT=y
-CONFIG_CMD_FS_GENERIC=y
 CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nor0=d420c000.spi"
 CONFIG_MTDPARTS_DEFAULT="d420c000.spi:128k(bootinfo),512k(fsbl),64k(env),1024k(esos),384k(opensbi),-(uboot)"
diff --git a/include/configs/spacemit-k3.h b/include/configs/spacemit-k3.h
index 9dd545e2a3b2..39d10059926e 100644
--- a/include/configs/spacemit-k3.h
+++ b/include/configs/spacemit-k3.h
@@ -6,6 +6,12 @@
 #ifndef __SPACEMIT_K3_H
 #define __SPACEMIT_K3_H
 
+#define CFG_EXTRA_ENV_SETTINGS \
+	"ramdisk_addr_r=0x130000000\0" \
+	"fdt_addr_r=0x138000000\0" \
+	"kernel_addr_r=0x140000000\0" \
+	"fdtfile=" CONFIG_DEFAULT_FDT_FILE "\0"
+
 #define CFG_SYS_NS16550_IER	0x40
 
 #define RISCV_SMODE_TIMER_FREQ	24000000
-- 
2.53.0


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

end of thread, other threads:[~2026-11-02 19:52 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-11-02 19:50 [PATCH v2 0/3] Spacemit K3 enable Linux boot E Shattow
2026-11-02 19:50 ` [PATCH v2 1/3] riscv: dts: spacemit: k3: override reserved status of mimsic and maplic E Shattow
2026-11-02 19:50 ` [PATCH v2 2/3] riscv: dts: spacemit: k3: Drop guest properties from M-level IMSIC E Shattow
2026-11-02 19:50 ` [PATCH v2 3/3] configs: spacemit: k3: enable CONFIG_BOOTSTD_FULL E Shattow

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox