* [kvm-unit-tests PATCH 0/2] riscv: Run with other QEMU models
@ 2025-02-21 16:27 Andrew Jones
2025-02-21 16:27 ` [kvm-unit-tests PATCH 1/2] configure: Allow earlycon for all architectures Andrew Jones
` (2 more replies)
0 siblings, 3 replies; 5+ messages in thread
From: Andrew Jones @ 2025-02-21 16:27 UTC (permalink / raw)
To: kvm, kvm-riscv, kvmarm
Cc: alexandru.elisei, eric.auger, atishp, cleger, pbonzini, thuth
Provide a couple patches allowing a QEMU machine model other than 'virt'
to be used. We just need to be able to override 'virt' in the command
line and it's also nice to be able to specify a different UART address
for any early (pre DT parsing) outputs.
Andrew Jones (2):
configure: Allow earlycon for all architectures
riscv: Introduce MACHINE_OVERRIDE
configure | 88 +++++++++++++++++++++++++++----------------------------
riscv/run | 6 ++--
2 files changed, 47 insertions(+), 47 deletions(-)
--
2.48.1
--
kvm-riscv mailing list
kvm-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kvm-riscv
^ permalink raw reply [flat|nested] 5+ messages in thread
* [kvm-unit-tests PATCH 1/2] configure: Allow earlycon for all architectures
2025-02-21 16:27 [kvm-unit-tests PATCH 0/2] riscv: Run with other QEMU models Andrew Jones
@ 2025-02-21 16:27 ` Andrew Jones
2025-03-04 9:12 ` Andrew Jones
2025-02-21 16:27 ` [kvm-unit-tests PATCH 2/2] riscv: Introduce MACHINE_OVERRIDE Andrew Jones
2025-03-04 9:31 ` [kvm-unit-tests PATCH 0/2] riscv: Run with other QEMU models Andrew Jones
2 siblings, 1 reply; 5+ messages in thread
From: Andrew Jones @ 2025-02-21 16:27 UTC (permalink / raw)
To: kvm, kvm-riscv, kvmarm
Cc: alexandru.elisei, eric.auger, atishp, cleger, pbonzini, thuth,
Andrew Jones
From: Andrew Jones <ajones@ventanamicro.com>
earlycon could be used by any architecture so check it outside the
arm block and apply it to riscv right away.
Signed-off-by: Andrew Jones <ajones@ventanamicro.com>
---
configure | 88 +++++++++++++++++++++++++++----------------------------
1 file changed, 43 insertions(+), 45 deletions(-)
diff --git a/configure b/configure
index 86cf1da36467..7e462aaf1190 100755
--- a/configure
+++ b/configure
@@ -78,10 +78,9 @@ usage() {
4k [default], 16k, 64k for arm64.
4k [default], 64k for ppc64.
--earlycon=EARLYCON
- Specify the UART name, type and address (optional, arm and
- arm64 only). The specified address will overwrite the UART
- address set by the --target option. EARLYCON can be one of
- (case sensitive):
+ Specify the UART name, type and address (optional).
+ The specified address will overwrite the UART address set by
+ the --target option. EARLYCON can be one of (case sensitive):
uart[8250],mmio,ADDR
Specify an 8250 compatible UART at address ADDR. Supported
register stride is 8 bit only.
@@ -283,6 +282,41 @@ else
fi
fi
+if [ "$earlycon" ]; then
+ IFS=, read -r name type_addr addr <<<"$earlycon"
+ if [ "$name" != "uart" ] && [ "$name" != "uart8250" ] && [ "$name" != "pl011" ]; then
+ echo "unknown earlycon name: $name"
+ usage
+ fi
+
+ if [ "$name" = "pl011" ]; then
+ if [ -z "$addr" ]; then
+ addr=$type_addr
+ else
+ if [ "$type_addr" != "mmio32" ]; then
+ echo "unknown $name earlycon type: $type_addr"
+ usage
+ fi
+ fi
+ else
+ if [ "$type_addr" != "mmio" ]; then
+ echo "unknown $name earlycon type: $type_addr"
+ usage
+ fi
+ fi
+
+ if [ -z "$addr" ]; then
+ echo "missing $name earlycon address"
+ usage
+ fi
+ if [[ $addr =~ ^0(x|X)[0-9a-fA-F]+$ ]] || [[ $addr =~ ^[0-9]+$ ]]; then
+ uart_early_addr=$addr
+ else
+ echo "invalid $name earlycon address: $addr"
+ usage
+ fi
+fi
+
[ -z "$processor" ] && processor="$arch"
if [ "$processor" = "arm64" ]; then
@@ -296,51 +330,14 @@ if [ "$arch" = "i386" ] || [ "$arch" = "x86_64" ]; then
elif [ "$arch" = "arm" ] || [ "$arch" = "arm64" ]; then
testdir=arm
if [ "$target" = "qemu" ]; then
- arm_uart_early_addr=0x09000000
+ : "${uart_early_addr:=0x9000000}"
elif [ "$target" = "kvmtool" ]; then
- arm_uart_early_addr=0x1000000
+ : "${uart_early_addr:=0x1000000}"
errata_force=1
else
echo "--target must be one of 'qemu' or 'kvmtool'!"
usage
fi
-
- if [ "$earlycon" ]; then
- IFS=, read -r name type_addr addr <<<"$earlycon"
- if [ "$name" != "uart" ] && [ "$name" != "uart8250" ] &&
- [ "$name" != "pl011" ]; then
- echo "unknown earlycon name: $name"
- usage
- fi
-
- if [ "$name" = "pl011" ]; then
- if [ -z "$addr" ]; then
- addr=$type_addr
- else
- if [ "$type_addr" != "mmio32" ]; then
- echo "unknown $name earlycon type: $type_addr"
- usage
- fi
- fi
- else
- if [ "$type_addr" != "mmio" ]; then
- echo "unknown $name earlycon type: $type_addr"
- usage
- fi
- fi
-
- if [ -z "$addr" ]; then
- echo "missing $name earlycon address"
- usage
- fi
- if [[ $addr =~ ^0(x|X)[0-9a-fA-F]+$ ]] ||
- [[ $addr =~ ^[0-9]+$ ]]; then
- arm_uart_early_addr=$addr
- else
- echo "invalid $name earlycon address: $addr"
- usage
- fi
- fi
elif [ "$arch" = "ppc64" ]; then
testdir=powerpc
firmware="$testdir/boot_rom.bin"
@@ -351,6 +348,7 @@ elif [ "$arch" = "ppc64" ]; then
elif [ "$arch" = "riscv32" ] || [ "$arch" = "riscv64" ]; then
testdir=riscv
arch_libdir=riscv
+ : "${uart_early_addr:=0x10000000}"
elif [ "$arch" = "s390x" ]; then
testdir=s390x
else
@@ -491,7 +489,7 @@ EOF
if [ "$arch" = "arm" ] || [ "$arch" = "arm64" ]; then
cat <<EOF >> lib/config.h
-#define CONFIG_UART_EARLY_BASE ${arm_uart_early_addr}
+#define CONFIG_UART_EARLY_BASE ${uart_early_addr}
#define CONFIG_ERRATA_FORCE ${errata_force}
EOF
@@ -506,7 +504,7 @@ EOF
elif [ "$arch" = "riscv32" ] || [ "$arch" = "riscv64" ]; then
cat <<EOF >> lib/config.h
-#define CONFIG_UART_EARLY_BASE 0x10000000
+#define CONFIG_UART_EARLY_BASE ${uart_early_addr}
EOF
fi
--
2.48.1
--
kvm-riscv mailing list
kvm-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kvm-riscv
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [kvm-unit-tests PATCH 2/2] riscv: Introduce MACHINE_OVERRIDE
2025-02-21 16:27 [kvm-unit-tests PATCH 0/2] riscv: Run with other QEMU models Andrew Jones
2025-02-21 16:27 ` [kvm-unit-tests PATCH 1/2] configure: Allow earlycon for all architectures Andrew Jones
@ 2025-02-21 16:27 ` Andrew Jones
2025-03-04 9:31 ` [kvm-unit-tests PATCH 0/2] riscv: Run with other QEMU models Andrew Jones
2 siblings, 0 replies; 5+ messages in thread
From: Andrew Jones @ 2025-02-21 16:27 UTC (permalink / raw)
To: kvm, kvm-riscv, kvmarm
Cc: alexandru.elisei, eric.auger, atishp, cleger, pbonzini, thuth,
Andrew Jones
From: Andrew Jones <ajones@ventanamicro.com>
Allow riscv tests to use QEMU machine types other than virt.
Signed-off-by: Andrew Jones <ajones@ventanamicro.com>
---
riscv/run | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/riscv/run b/riscv/run
index 73f2bf54dc32..e2f5a922728c 100755
--- a/riscv/run
+++ b/riscv/run
@@ -10,10 +10,12 @@ if [ -z "$KUT_STANDALONE" ]; then
fi
# Allow user overrides of some config.mak variables
+mach=$MACHINE_OVERRIDE
processor=$PROCESSOR_OVERRIDE
firmware=$FIRMWARE_OVERRIDE
[ "$PROCESSOR" = "$ARCH" ] && PROCESSOR="max"
+: "${mach:=virt}"
: "${processor:=$PROCESSOR}"
: "${firmware:=$FIRMWARE}"
[ "$firmware" ] && firmware="-bios $firmware"
@@ -23,11 +25,11 @@ set_qemu_accelerator || exit $?
acc="-accel $ACCEL$ACCEL_PROPS"
qemu=$(search_qemu_binary) || exit $?
-if ! $qemu -machine '?' | grep -q 'RISC-V VirtIO board'; then
+if [ "$mach" = 'virt' ] && ! $qemu -machine '?' | grep -q 'RISC-V VirtIO board'; then
echo "$qemu doesn't support mach-virt ('-machine virt'). Exiting."
exit 2
fi
-mach='-machine virt'
+mach="-machine $mach"
command="$qemu -nodefaults -nographic -serial mon:stdio"
command+=" $mach $acc $firmware -cpu $processor "
--
2.48.1
--
kvm-riscv mailing list
kvm-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kvm-riscv
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [kvm-unit-tests PATCH 1/2] configure: Allow earlycon for all architectures
2025-02-21 16:27 ` [kvm-unit-tests PATCH 1/2] configure: Allow earlycon for all architectures Andrew Jones
@ 2025-03-04 9:12 ` Andrew Jones
0 siblings, 0 replies; 5+ messages in thread
From: Andrew Jones @ 2025-03-04 9:12 UTC (permalink / raw)
To: kvm, kvm-riscv, kvmarm
Cc: alexandru.elisei, eric.auger, atishp, cleger, pbonzini, thuth,
Andrew Jones
On Fri, Feb 21, 2025 at 05:27:55PM +0100, Andrew Jones wrote:
> From: Andrew Jones <ajones@ventanamicro.com>
>
> earlycon could be used by any architecture so check it outside the
> arm block and apply it to riscv right away.
>
> Signed-off-by: Andrew Jones <ajones@ventanamicro.com>
> ---
> configure | 88 +++++++++++++++++++++++++++----------------------------
> 1 file changed, 43 insertions(+), 45 deletions(-)
>
> diff --git a/configure b/configure
> index 86cf1da36467..7e462aaf1190 100755
> --- a/configure
> +++ b/configure
> @@ -78,10 +78,9 @@ usage() {
> 4k [default], 16k, 64k for arm64.
> 4k [default], 64k for ppc64.
> --earlycon=EARLYCON
> - Specify the UART name, type and address (optional, arm and
> - arm64 only). The specified address will overwrite the UART
> - address set by the --target option. EARLYCON can be one of
> - (case sensitive):
> + Specify the UART name, type and address (optional).
> + The specified address will overwrite the UART address set by
> + the --target option. EARLYCON can be one of (case sensitive):
I'll add
(arm/arm64 and riscv32/riscv64 only)
since no other architecture is paying attention to the parameter at this
time.
Thanks,
drew
> uart[8250],mmio,ADDR
> Specify an 8250 compatible UART at address ADDR. Supported
> register stride is 8 bit only.
> @@ -283,6 +282,41 @@ else
> fi
> fi
>
> +if [ "$earlycon" ]; then
> + IFS=, read -r name type_addr addr <<<"$earlycon"
> + if [ "$name" != "uart" ] && [ "$name" != "uart8250" ] && [ "$name" != "pl011" ]; then
> + echo "unknown earlycon name: $name"
> + usage
> + fi
> +
> + if [ "$name" = "pl011" ]; then
> + if [ -z "$addr" ]; then
> + addr=$type_addr
> + else
> + if [ "$type_addr" != "mmio32" ]; then
> + echo "unknown $name earlycon type: $type_addr"
> + usage
> + fi
> + fi
> + else
> + if [ "$type_addr" != "mmio" ]; then
> + echo "unknown $name earlycon type: $type_addr"
> + usage
> + fi
> + fi
> +
> + if [ -z "$addr" ]; then
> + echo "missing $name earlycon address"
> + usage
> + fi
> + if [[ $addr =~ ^0(x|X)[0-9a-fA-F]+$ ]] || [[ $addr =~ ^[0-9]+$ ]]; then
> + uart_early_addr=$addr
> + else
> + echo "invalid $name earlycon address: $addr"
> + usage
> + fi
> +fi
> +
> [ -z "$processor" ] && processor="$arch"
>
> if [ "$processor" = "arm64" ]; then
> @@ -296,51 +330,14 @@ if [ "$arch" = "i386" ] || [ "$arch" = "x86_64" ]; then
> elif [ "$arch" = "arm" ] || [ "$arch" = "arm64" ]; then
> testdir=arm
> if [ "$target" = "qemu" ]; then
> - arm_uart_early_addr=0x09000000
> + : "${uart_early_addr:=0x9000000}"
> elif [ "$target" = "kvmtool" ]; then
> - arm_uart_early_addr=0x1000000
> + : "${uart_early_addr:=0x1000000}"
> errata_force=1
> else
> echo "--target must be one of 'qemu' or 'kvmtool'!"
> usage
> fi
> -
> - if [ "$earlycon" ]; then
> - IFS=, read -r name type_addr addr <<<"$earlycon"
> - if [ "$name" != "uart" ] && [ "$name" != "uart8250" ] &&
> - [ "$name" != "pl011" ]; then
> - echo "unknown earlycon name: $name"
> - usage
> - fi
> -
> - if [ "$name" = "pl011" ]; then
> - if [ -z "$addr" ]; then
> - addr=$type_addr
> - else
> - if [ "$type_addr" != "mmio32" ]; then
> - echo "unknown $name earlycon type: $type_addr"
> - usage
> - fi
> - fi
> - else
> - if [ "$type_addr" != "mmio" ]; then
> - echo "unknown $name earlycon type: $type_addr"
> - usage
> - fi
> - fi
> -
> - if [ -z "$addr" ]; then
> - echo "missing $name earlycon address"
> - usage
> - fi
> - if [[ $addr =~ ^0(x|X)[0-9a-fA-F]+$ ]] ||
> - [[ $addr =~ ^[0-9]+$ ]]; then
> - arm_uart_early_addr=$addr
> - else
> - echo "invalid $name earlycon address: $addr"
> - usage
> - fi
> - fi
> elif [ "$arch" = "ppc64" ]; then
> testdir=powerpc
> firmware="$testdir/boot_rom.bin"
> @@ -351,6 +348,7 @@ elif [ "$arch" = "ppc64" ]; then
> elif [ "$arch" = "riscv32" ] || [ "$arch" = "riscv64" ]; then
> testdir=riscv
> arch_libdir=riscv
> + : "${uart_early_addr:=0x10000000}"
> elif [ "$arch" = "s390x" ]; then
> testdir=s390x
> else
> @@ -491,7 +489,7 @@ EOF
> if [ "$arch" = "arm" ] || [ "$arch" = "arm64" ]; then
> cat <<EOF >> lib/config.h
>
> -#define CONFIG_UART_EARLY_BASE ${arm_uart_early_addr}
> +#define CONFIG_UART_EARLY_BASE ${uart_early_addr}
> #define CONFIG_ERRATA_FORCE ${errata_force}
>
> EOF
> @@ -506,7 +504,7 @@ EOF
> elif [ "$arch" = "riscv32" ] || [ "$arch" = "riscv64" ]; then
> cat <<EOF >> lib/config.h
>
> -#define CONFIG_UART_EARLY_BASE 0x10000000
> +#define CONFIG_UART_EARLY_BASE ${uart_early_addr}
>
> EOF
> fi
> --
> 2.48.1
>
--
kvm-riscv mailing list
kvm-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kvm-riscv
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [kvm-unit-tests PATCH 0/2] riscv: Run with other QEMU models
2025-02-21 16:27 [kvm-unit-tests PATCH 0/2] riscv: Run with other QEMU models Andrew Jones
2025-02-21 16:27 ` [kvm-unit-tests PATCH 1/2] configure: Allow earlycon for all architectures Andrew Jones
2025-02-21 16:27 ` [kvm-unit-tests PATCH 2/2] riscv: Introduce MACHINE_OVERRIDE Andrew Jones
@ 2025-03-04 9:31 ` Andrew Jones
2 siblings, 0 replies; 5+ messages in thread
From: Andrew Jones @ 2025-03-04 9:31 UTC (permalink / raw)
To: kvm, kvm-riscv, kvmarm
Cc: alexandru.elisei, eric.auger, atishp, cleger, pbonzini, thuth
On Fri, Feb 21, 2025 at 05:27:54PM +0100, Andrew Jones wrote:
> Provide a couple patches allowing a QEMU machine model other than 'virt'
> to be used. We just need to be able to override 'virt' in the command
> line and it's also nice to be able to specify a different UART address
> for any early (pre DT parsing) outputs.
>
> Andrew Jones (2):
> configure: Allow earlycon for all architectures
> riscv: Introduce MACHINE_OVERRIDE
>
> configure | 88 +++++++++++++++++++++++++++----------------------------
> riscv/run | 6 ++--
> 2 files changed, 47 insertions(+), 47 deletions(-)
>
> --
> 2.48.1
Merged.
Thanks,
drew
--
kvm-riscv mailing list
kvm-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kvm-riscv
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2025-03-04 9:37 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-02-21 16:27 [kvm-unit-tests PATCH 0/2] riscv: Run with other QEMU models Andrew Jones
2025-02-21 16:27 ` [kvm-unit-tests PATCH 1/2] configure: Allow earlycon for all architectures Andrew Jones
2025-03-04 9:12 ` Andrew Jones
2025-02-21 16:27 ` [kvm-unit-tests PATCH 2/2] riscv: Introduce MACHINE_OVERRIDE Andrew Jones
2025-03-04 9:31 ` [kvm-unit-tests PATCH 0/2] riscv: Run with other QEMU models Andrew Jones
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).