[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v9 19/19] target/riscv/tcg: do not support profiles for 'max' CPU
From: |
Daniel Henrique Barboza |
Subject: |
[PATCH v9 19/19] target/riscv/tcg: do not support profiles for 'max' CPU |
Date: |
Thu, 2 Nov 2023 19:44:45 -0300 |
There's no gain in allowing the 'max' CPU to support profiles, since it
already contains everything that QEMU can support. And we'll open the
door for 'unorthodox' stuff like users disabling profiles of the 'max'
CPU.
Signed-off-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com>
---
target/riscv/tcg/tcg-cpu.c | 16 +++++++++++-----
1 file changed, 11 insertions(+), 5 deletions(-)
diff --git a/target/riscv/tcg/tcg-cpu.c b/target/riscv/tcg/tcg-cpu.c
index 553fb337e7..9a964a426e 100644
--- a/target/riscv/tcg/tcg-cpu.c
+++ b/target/riscv/tcg/tcg-cpu.c
@@ -825,6 +825,11 @@ static bool riscv_cpu_is_vendor(Object *cpu_obj)
return object_dynamic_cast(cpu_obj, TYPE_RISCV_VENDOR_CPU) != NULL;
}
+static bool riscv_cpu_has_max_extensions(Object *cpu_obj)
+{
+ return object_dynamic_cast(cpu_obj, TYPE_RISCV_CPU_MAX) != NULL;
+}
+
/*
* We'll get here via the following path:
*
@@ -1003,6 +1008,12 @@ static void cpu_set_profile(Object *obj, Visitor *v,
const char *name,
return;
}
+ if (riscv_cpu_has_max_extensions(obj)) {
+ error_setg(errp, "Profile %s is not available for the 'max' CPU",
+ profile->name);
+ return;
+ }
+
if (cpu->env.misa_mxl != MXL_RV64) {
error_setg(errp, "Profile %s only available for 64 bit CPUs",
profile->name);
@@ -1251,11 +1262,6 @@ static void riscv_init_max_cpu_extensions(Object *obj)
}
}
-static bool riscv_cpu_has_max_extensions(Object *cpu_obj)
-{
- return object_dynamic_cast(cpu_obj, TYPE_RISCV_CPU_MAX) != NULL;
-}
-
static void tcg_cpu_instance_init(CPUState *cs)
{
RISCVCPU *cpu = RISCV_CPU(cs);
--
2.41.0
- [PATCH v9 09/19] target/riscv/kvm: add 'rva22u64' flag as unavailable, (continued)
- [PATCH v9 09/19] target/riscv/kvm: add 'rva22u64' flag as unavailable, Daniel Henrique Barboza, 2023/11/02
- [PATCH v9 11/19] target/riscv/tcg: add MISA user options hash, Daniel Henrique Barboza, 2023/11/02
- [PATCH v9 14/19] target/riscv/tcg: add hash table insert helpers, Daniel Henrique Barboza, 2023/11/02
- [PATCH v9 12/19] target/riscv/tcg: add riscv_cpu_write_misa_bit(), Daniel Henrique Barboza, 2023/11/02
- [PATCH v9 10/19] target/riscv/tcg: add user flag for profile support, Daniel Henrique Barboza, 2023/11/02
- [PATCH v9 18/19] target/riscv: add 'rva22u64' CPU, Daniel Henrique Barboza, 2023/11/02
- [PATCH v9 05/19] target/riscv: add zicbop extension flag, Daniel Henrique Barboza, 2023/11/02
- [PATCH v9 17/19] riscv-qmp-cmds.c: add profile flags in cpu-model-expansion, Daniel Henrique Barboza, 2023/11/02
- [PATCH v9 19/19] target/riscv/tcg: do not support profiles for 'max' CPU,
Daniel Henrique Barboza <=
- [PATCH v9 13/19] target/riscv/tcg: handle profile MISA bits, Daniel Henrique Barboza, 2023/11/02
- [PATCH v9 16/19] target/riscv/tcg: validate profiles during finalize, Daniel Henrique Barboza, 2023/11/02
- [PATCH v9 15/19] target/riscv/tcg: honor user choice for G MISA bits, Daniel Henrique Barboza, 2023/11/02