[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v8 02/20] hw/riscv/virt.c: skip 'mmu-type' FDT if satp mode n
From: |
Conor Dooley |
Subject: |
Re: [PATCH v8 02/20] hw/riscv/virt.c: skip 'mmu-type' FDT if satp mode not set |
Date: |
Wed, 5 Jul 2023 22:49:22 +0100 |
On Wed, Jul 05, 2023 at 06:39:37PM -0300, Daniel Henrique Barboza wrote:
> The absence of a satp mode in riscv_host_cpu_init() is causing the
> following error:
>
> $ ./qemu/build/qemu-system-riscv64 -machine virt,accel=kvm \
> -m 2G -smp 1 -nographic -snapshot \
> -kernel ./guest_imgs/Image \
> -initrd ./guest_imgs/rootfs_kvm_riscv64.img \
> -append "earlycon=sbi root=/dev/ram rw" \
> -cpu host
> **
> ERROR:../target/riscv/cpu.c:320:satp_mode_str: code should not be
> reached
> Bail out! ERROR:../target/riscv/cpu.c:320:satp_mode_str: code should
> not be reached
> Aborted
>
> The error is triggered from create_fdt_socket_cpus() in hw/riscv/virt.c.
> It's trying to get satp_mode_str for a NULL cpu->cfg.satp_mode.map.
>
> For this KVM cpu we would need to inherit the satp supported modes
> from the RISC-V host. At this moment this is not possible because the
> KVM driver does not support it. And even when it does we can't just let
> this broken for every other older kernel.
>
> Since mmu-type is not a required node, according to [1], skip the
> 'mmu-type' FDT node if there's no satp_mode set. We'll revisit this
> logic when we can get satp information from KVM.
>
> [1]
> https://github.com/devicetree-org/dt-schema/blob/main/dtschema/schemas/cpu.yaml
I don't think this is the correct link to reference as backup, as the
generic binding sets out no requirements. I think you would want to link
to the RISC-V specific cpus binding.
That said, things like FreeBSD and U-Boot appear to require mmu-type
https://lore.kernel.org/all/20230705-fondue-bagginess-66c25f1a4135@spud/
so I am wondering if we should in fact make the mmu-type a required
property in the RISC-V specific binding.
Since nommu is covered by an mmu type of "riscv,none", I am kinda
struggling to think of a case where it should be left out (while
describing real hardware at least).
Cheers,
Conor.
signature.asc
Description: PGP signature
[PATCH v8 03/20] target/riscv/cpu.c: restrict 'mvendorid' value, Daniel Henrique Barboza, 2023/07/05
[PATCH v8 04/20] target/riscv/cpu.c: restrict 'mimpid' value, Daniel Henrique Barboza, 2023/07/05
[PATCH v8 05/20] target/riscv/cpu.c: restrict 'marchid' value, Daniel Henrique Barboza, 2023/07/05
[PATCH v8 06/20] target/riscv: use KVM scratch CPUs to init KVM properties, Daniel Henrique Barboza, 2023/07/05
[PATCH v8 07/20] target/riscv: read marchid/mimpid in kvm_riscv_init_machine_ids(), Daniel Henrique Barboza, 2023/07/05
[PATCH v8 08/20] target/riscv: handle mvendorid/marchid/mimpid for KVM CPUs, Daniel Henrique Barboza, 2023/07/05
[PATCH v8 09/20] linux-headers: Update to v6.4-rc1, Daniel Henrique Barboza, 2023/07/05