Unverified Commit 6c4a2f63 authored by Frederik Haxel's avatar Frederik Haxel Committed by Palmer Dabbelt
Browse files

riscv: Allow disabling of BUILTIN_DTB for XIP



This enables, among other things, testing with the QEMU virt machine.

To build an XIP kernel for the QEMU virt machine, configure the
the kernel as desired and apply the following configuration
```
CONFIG_NONPORTABLE=y
CONFIG_XIP_KERNEL=y
CONFIG_XIP_PHYS_ADDR=0x20000000
CONFIG_PHYS_RAM_BASE=0x80200000
CONFIG_BUILTIN_DTB=n
```

Since the QEMU virt flash memory expects a 32 MB file, the built image
must be padded. For example, with
`truncate -s 32M arch/riscv/boot/xipImage`

The kernel can be started using the following command in QEMU (v8+)
```
qemu-system-riscv64 -M virt,pflash0=pflash0 \
 -blockdev node-name=pflash0,driver=file,read-only=on,\
filename=arch/riscv/boot/xipImage <optional parameters>
```

Signed-off-by: default avatarFrederik Haxel <haxel@fzi.de>
Link: https://lore.kernel.org/r/20231212130116.848530-4-haxel@fzi.de


Signed-off-by: default avatarPalmer Dabbelt <palmer@rivosinc.com>
parent 5daa3726
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -904,13 +904,13 @@ config RISCV_ISA_FALLBACK
	  on the replacement properties, "riscv,isa-base" and
	  "riscv,isa-extensions".

endmenu # "Boot options"

config BUILTIN_DTB
	bool
	bool "Built-in device tree"
	depends on OF && NONPORTABLE
	default y if XIP_KERNEL

endmenu # "Boot options"

config PORTABLE
	bool
	default !NONPORTABLE
+3 −1
Original line number Diff line number Diff line
@@ -266,10 +266,12 @@ SYM_CODE_START(_start_kernel)
	la sp, _end + THREAD_SIZE
	XIP_FIXUP_OFFSET sp
	mv s0, a0
	mv s1, a1
	call __copy_data

	/* Restore a0 copy */
	/* Restore a0 & a1 copy */
	mv a0, s0
	mv a1, s1
#endif

#ifndef CONFIG_XIP_KERNEL