On 4/24/25 11:04 AM, Philippe Mathieu-Daudé wrote:
On 24/4/25 15:52, Daniel Henrique Barboza wrote:
Hi,

This patch breaks RISC-V KVM build in my env. The issues are down there:

On 4/6/25 4:02 AM, Paolo Bonzini wrote:
Prepare for adding more fields to RISCVCPUDef and reading them in
riscv_cpu_init: instead of storing the misa_mxl_max field in
RISCVCPUClass, ensure that there's always a valid RISCVCPUDef struct
and go through it.

Reviewed-by: Alistair Francis <alistair.fran...@wdc.com>
Signed-off-by: Paolo Bonzini <pbonz...@redhat.com>
---
  target/riscv/cpu.h         |  2 +-
  hw/riscv/boot.c            |  2 +-
  target/riscv/cpu.c         | 23 ++++++++++++++++++-----
  target/riscv/gdbstub.c     |  6 +++---
  target/riscv/kvm/kvm-cpu.c | 21 +++++++++------------
  target/riscv/machine.c     |  2 +-
  target/riscv/tcg/tcg-cpu.c | 10 +++++-----
  target/riscv/translate.c   |  2 +-
  8 files changed, 39 insertions(+), 29 deletions(-)


diff --git a/target/riscv/kvm/kvm-cpu.c b/target/riscv/kvm/kvm-cpu.c
index 0f4997a9186..d7e6970a670 100644
--- a/target/riscv/kvm/kvm-cpu.c
+++ b/target/riscv/kvm/kvm-cpu.c
@@ -1997,22 +1997,19 @@ static void kvm_cpu_accel_register_types(void)
  }
  type_init(kvm_cpu_accel_register_types);
-static void riscv_host_cpu_class_init(ObjectClass *c, void *data)
-{
-    RISCVCPUClass *mcc = RISCV_CPU_CLASS(c);
-
-#if defined(TARGET_RISCV32)
-    mcc->misa_mxl_max = MXL_RV32;
-#elif defined(TARGET_RISCV64)
-    mcc->misa_mxl_max = MXL_RV64;
-#endif
-}
-
  static const TypeInfo riscv_kvm_cpu_type_infos[] = {
      {
          .name = TYPE_RISCV_CPU_HOST,
          .parent = TYPE_RISCV_CPU,
-        .class_init = riscv_host_cpu_class_init,
+#if defined(TARGET_RISCV32)
+        .class_data = &((const RISCVCPUDef) {
+            .misa_mxl_max = MXL_RV32,
+        },
+#elif defined(TARGET_RISCV64)
+        .class_data = &((const RISCVCPUDef) {
+            .misa_mxl_max = MXL_RV64,
+        },
+#endif
      }
  };


../target/riscv/kvm/kvm-cpu.c:2013:5: error: expected expression before '}' 
token
  2013 |     }
       |     ^
../target/riscv/kvm/kvm-cpu.c:2011:10: error: value computed is not used 
[-Werror=unused-value]
  2011 |         },
       |          ^
cc1: all warnings being treated as errors
[11/13] Linking target qemu-nbd


We're missing closing parenthesis after the "}".

If we fix that we'll get another error:

../target/riscv/kvm/kvm-cpu.c:2009:23: error: initialization discards 'const' 
qualifier from pointer target type [-Werror=discarded-qualifiers]
  2009 |         .class_data = &((const RISCVCPUDef) {
       |                       ^
cc1: all warnings being treated as errors


Removing the 'const' qualifier fixes this other error.

Likely based on:
https://lore.kernel.org/qemu-devel/20250210133134.90879-1-phi...@linaro.org/
which was too late to get merged before soft-freeze, but
should get it soon.

Oh yeah, sorry. I forgot to mention that I tested the patch in Alistair's
branch. The branch doesn't have these class_data changes.

In case these changes land upstream first then we can keep the 'const'
qualifier in this patch. Thanks,


Daniel





Reply via email to