On Fri, Jul 14, 2023 at 08:44:27AM +0000, Yong-Xuan Wang wrote: ... > +#if defined(CONFIG_KVM) > +static char *virt_get_kvm_aia(Object *obj, Error **errp) > +{ > + RISCVVirtState *s = RISCV_VIRT_MACHINE(obj); > + > + return g_strdup(kvm_aia_mode_str(s->kvm_aia_mode)); > +} > + > +static void virt_set_kvm_aia(Object *obj, const char *val, Error **errp) > +{ > + RISCVVirtState *s = RISCV_VIRT_MACHINE(obj); > + > + if (!strcmp(val, "emul")) { > + s->kvm_aia_mode = KVM_DEV_RISCV_AIA_MODE_EMUL; > + } else if (!strcmp(val, "hwaccel")) { > + s->kvm_aia_mode = KVM_DEV_RISCV_AIA_MODE_HWACCEL; > + } else if (!strcmp(val, "auto")) { > + s->kvm_aia_mode = KVM_DEV_RISCV_AIA_MODE_AUTO; > + } else { > + error_setg(errp, "Invalid KVM AIA mode"); > + error_append_hint(errp, "Valid values are emul, hwaccel, and > auto.\n"); > + } > +} > +#endif > + > static bool virt_get_aclint(Object *obj, Error **errp) > { > RISCVVirtState *s = RISCV_VIRT_MACHINE(obj); > @@ -1687,6 +1745,18 @@ static void virt_machine_class_init(ObjectClass *oc, > void *data) > sprintf(str, "Set number of guest MMIO pages for AIA IMSIC. Valid value " > "should be between 0 and %d.", VIRT_IRQCHIP_MAX_GUESTS); > object_class_property_set_description(oc, "aia-guests", str); > + > +#if defined(CONFIG_KVM) > + object_class_property_add_str(oc, "kvm-aia", virt_get_kvm_aia, > + virt_set_kvm_aia); > + object_class_property_set_description(oc, "kvm-aia", > + "Set KVM AIA mode. Valid values > are " > + "emul, hwaccel, and auto. Default " > + "is auto."); > + object_property_set_default_str(object_class_property_find(oc, > "kvm-aia"), > + "auto");
I'm starting to think the "kvm-aia" property should be renamed to "riscv-aia" or just "aia" and added in target/riscv/kvm.c:kvm_arch_accel_class_init() to be a riscv kvm accelerator property instead of a virt machine property. Thanks, drew > + > +#endif > object_class_property_add(oc, "acpi", "OnOffAuto", > virt_get_acpi, virt_set_acpi, > NULL, NULL); > diff --git a/include/hw/riscv/virt.h b/include/hw/riscv/virt.h > index e5c474b26e..d0140feeff 100644 > --- a/include/hw/riscv/virt.h > +++ b/include/hw/riscv/virt.h > @@ -56,6 +56,7 @@ struct RISCVVirtState { > bool have_aclint; > RISCVVirtAIAType aia_type; > int aia_guests; > + uint64_t kvm_aia_mode; > char *oem_id; > char *oem_table_id; > OnOffAuto acpi; > -- > 2.17.1 >