mirror of
https://gitlab.com/qemu-project/qemu
synced 2024-09-16 01:03:31 +00:00
target/riscv/kvm/kvm-cpu.c: add missing property getters()
We got along without property getters in the KVM driver because we never needed them. But the incoming query-cpu-model-expansion API will use property getters and setters to retrieve the CPU characteristics. Add the missing getters for the KVM driver for both MISA and multi-letter extension properties. We're also adding an special getter for absent multi-letter properties that KVM doesn't implement that always return false. Signed-off-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com> Reviewed-by: Alistair Francis <alistair.francis@wdc.com> Message-ID: <20231018195638.211151-2-dbarboza@ventanamicro.com> Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
This commit is contained in:
parent
257cfaed47
commit
456a65546f
|
@ -140,6 +140,19 @@ static KVMCPUConfig kvm_misa_ext_cfgs[] = {
|
||||||
KVM_MISA_CFG(RVM, KVM_RISCV_ISA_EXT_M),
|
KVM_MISA_CFG(RVM, KVM_RISCV_ISA_EXT_M),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static void kvm_cpu_get_misa_ext_cfg(Object *obj, Visitor *v,
|
||||||
|
const char *name,
|
||||||
|
void *opaque, Error **errp)
|
||||||
|
{
|
||||||
|
KVMCPUConfig *misa_ext_cfg = opaque;
|
||||||
|
target_ulong misa_bit = misa_ext_cfg->offset;
|
||||||
|
RISCVCPU *cpu = RISCV_CPU(obj);
|
||||||
|
CPURISCVState *env = &cpu->env;
|
||||||
|
bool value = env->misa_ext_mask & misa_bit;
|
||||||
|
|
||||||
|
visit_type_bool(v, name, &value, errp);
|
||||||
|
}
|
||||||
|
|
||||||
static void kvm_cpu_set_misa_ext_cfg(Object *obj, Visitor *v,
|
static void kvm_cpu_set_misa_ext_cfg(Object *obj, Visitor *v,
|
||||||
const char *name,
|
const char *name,
|
||||||
void *opaque, Error **errp)
|
void *opaque, Error **errp)
|
||||||
|
@ -244,6 +257,17 @@ static uint32_t kvm_cpu_cfg_get(RISCVCPU *cpu,
|
||||||
return *ext_enabled;
|
return *ext_enabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void kvm_cpu_get_multi_ext_cfg(Object *obj, Visitor *v,
|
||||||
|
const char *name,
|
||||||
|
void *opaque, Error **errp)
|
||||||
|
{
|
||||||
|
KVMCPUConfig *multi_ext_cfg = opaque;
|
||||||
|
RISCVCPU *cpu = RISCV_CPU(obj);
|
||||||
|
bool value = kvm_cpu_cfg_get(cpu, multi_ext_cfg);
|
||||||
|
|
||||||
|
visit_type_bool(v, name, &value, errp);
|
||||||
|
}
|
||||||
|
|
||||||
static void kvm_cpu_set_multi_ext_cfg(Object *obj, Visitor *v,
|
static void kvm_cpu_set_multi_ext_cfg(Object *obj, Visitor *v,
|
||||||
const char *name,
|
const char *name,
|
||||||
void *opaque, Error **errp)
|
void *opaque, Error **errp)
|
||||||
|
@ -346,6 +370,15 @@ static void kvm_riscv_update_cpu_cfg_isa_ext(RISCVCPU *cpu, CPUState *cs)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void cpu_get_cfg_unavailable(Object *obj, Visitor *v,
|
||||||
|
const char *name,
|
||||||
|
void *opaque, Error **errp)
|
||||||
|
{
|
||||||
|
bool value = false;
|
||||||
|
|
||||||
|
visit_type_bool(v, name, &value, errp);
|
||||||
|
}
|
||||||
|
|
||||||
static void cpu_set_cfg_unavailable(Object *obj, Visitor *v,
|
static void cpu_set_cfg_unavailable(Object *obj, Visitor *v,
|
||||||
const char *name,
|
const char *name,
|
||||||
void *opaque, Error **errp)
|
void *opaque, Error **errp)
|
||||||
|
@ -376,7 +409,8 @@ static void riscv_cpu_add_kvm_unavail_prop(Object *obj, const char *prop_name)
|
||||||
* to enable any of them.
|
* to enable any of them.
|
||||||
*/
|
*/
|
||||||
object_property_add(obj, prop_name, "bool",
|
object_property_add(obj, prop_name, "bool",
|
||||||
NULL, cpu_set_cfg_unavailable,
|
cpu_get_cfg_unavailable,
|
||||||
|
cpu_set_cfg_unavailable,
|
||||||
NULL, (void *)prop_name);
|
NULL, (void *)prop_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -406,7 +440,7 @@ static void kvm_riscv_add_cpu_user_properties(Object *cpu_obj)
|
||||||
misa_cfg->description = riscv_get_misa_ext_description(bit);
|
misa_cfg->description = riscv_get_misa_ext_description(bit);
|
||||||
|
|
||||||
object_property_add(cpu_obj, misa_cfg->name, "bool",
|
object_property_add(cpu_obj, misa_cfg->name, "bool",
|
||||||
NULL,
|
kvm_cpu_get_misa_ext_cfg,
|
||||||
kvm_cpu_set_misa_ext_cfg,
|
kvm_cpu_set_misa_ext_cfg,
|
||||||
NULL, misa_cfg);
|
NULL, misa_cfg);
|
||||||
object_property_set_description(cpu_obj, misa_cfg->name,
|
object_property_set_description(cpu_obj, misa_cfg->name,
|
||||||
|
@ -422,7 +456,7 @@ static void kvm_riscv_add_cpu_user_properties(Object *cpu_obj)
|
||||||
KVMCPUConfig *multi_cfg = &kvm_multi_ext_cfgs[i];
|
KVMCPUConfig *multi_cfg = &kvm_multi_ext_cfgs[i];
|
||||||
|
|
||||||
object_property_add(cpu_obj, multi_cfg->name, "bool",
|
object_property_add(cpu_obj, multi_cfg->name, "bool",
|
||||||
NULL,
|
kvm_cpu_get_multi_ext_cfg,
|
||||||
kvm_cpu_set_multi_ext_cfg,
|
kvm_cpu_set_multi_ext_cfg,
|
||||||
NULL, multi_cfg);
|
NULL, multi_cfg);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue