riscv: Allow disabling of BUILTIN_DTB for XIP
authorFrederik Haxel <haxel@fzi.de>
Tue, 12 Dec 2023 13:01:14 +0000 (14:01 +0100)
committerPalmer Dabbelt <palmer@rivosinc.com>
Wed, 10 Jan 2024 03:33:22 +0000 (19:33 -0800)
commit6c4a2f6329f0925161a80d2fd90aa8438c1ca82f
tree2aa0af7da64cdf39792aaafd2c39790013278729
parent5daa3726410288075ba73c336bb2e80d6b06aa4d
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: Frederik Haxel <haxel@fzi.de>
Link: https://lore.kernel.org/r/20231212130116.848530-4-haxel@fzi.de
Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
arch/riscv/Kconfig
arch/riscv/kernel/head.S