Am 19.02.2013 19:45, schrieb Eduardo Habkost: > On Mon, Feb 11, 2013 at 05:35:06PM +0100, Igor Mammedov wrote: >> Signed-off-by: Igor Mammedov <imamm...@redhat.com> >> --- >> target-i386/cpu.c | 35 ++++++++++++++++++++++++++++++++++- >> 1 files changed, 34 insertions(+), 1 deletions(-) >> >> diff --git a/target-i386/cpu.c b/target-i386/cpu.c >> index 1f14b65..b804031 100644 >> --- a/target-i386/cpu.c >> +++ b/target-i386/cpu.c >> @@ -528,6 +528,38 @@ PropertyInfo qdev_prop_spinlocks = { >> .defval = _defval >> \ >> } >> >> +static void x86_get_hv_relaxed(Object *obj, Visitor *v, void *opaque, >> + const char *name, Error **errp) >> +{ >> + bool value = hyperv_relaxed_timing_enabled(); >> + >> + visit_type_bool(v, &value, name, errp); >> +} >> + >> +static void x86_set_hv_relaxed(Object *obj, Visitor *v, void *opaque, >> + const char *name, Error **errp) >> +{ >> + bool value; >> + >> + visit_type_bool(v, &value, name, errp); >> + if (error_is_set(errp)) { >> + return; >> + } >> + hyperv_enable_relaxed_timing(value); >> +} >> + >> +PropertyInfo qdev_prop_hv_relaxed = { >> + .name = "boolean", >> + .get = x86_get_hv_relaxed, >> + .set = x86_set_hv_relaxed, >> +}; >> +#define DEFINE_PROP_HV_RELAXED(_n, _defval) { >> \ >> + .name = _n, >> \ >> + .info = &qdev_prop_hv_relaxed, >> \ >> + .qtype = QTYPE_QBOOL, >> \ >> + .defval = _defval >> \ >> +} >> + >> static Property cpu_x86_properties[] = { >> DEFINE_PROP_FAMILY("family"), >> DEFINE_PROP_MODEL("model"), >> @@ -538,6 +570,7 @@ static Property cpu_x86_properties[] = { >> DEFINE_PROP_MODEL_ID("model-id"), >> DEFINE_PROP_TSC_FREQ("tsc-frequency"), >> DEFINE_PROP_HV_SPINLOCKS("hv-spinlocks", HYPERV_SPINLOCK_NEVER_RETRY), >> + DEFINE_PROP_HV_RELAXED("hv-relaxed", false), > > Why not simply make it a X86CPU struct field, so we don't need a special > PropertyInfo? > > The whole contents of target-i386/hyperv.c are getters/setters for three > static variables that should have been X86CPU fields in the first place.
Note that I intentionally did not make them properties because of that. If the setting is not per CPU, it should not be set through X86CPU. I don't know whether it would make sense to make these tunable per CPU? Andreas -- SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg