[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 15/20] target-i386: set custom 'xlevel' without
From: |
Igor Mammedov |
Subject: |
Re: [Qemu-devel] [PATCH 15/20] target-i386: set custom 'xlevel' without intermediate x86_def_t |
Date: |
Wed, 19 Dec 2012 21:45:26 +0100 |
On Wed, 19 Dec 2012 15:58:40 -0200
Eduardo Habkost <address@hidden> wrote:
> On Mon, Dec 17, 2012 at 05:01:27PM +0100, Igor Mammedov wrote:
> > Signed-off-by: Igor Mammedov <address@hidden>
> > ---
> > target-i386/cpu.c | 4 +++-
> > 1 files changed, 3 insertions(+), 1 deletions(-)
> >
> > diff --git a/target-i386/cpu.c b/target-i386/cpu.c
> > index 0cb0931..714ae79 100644
> > --- a/target-i386/cpu.c
> > +++ b/target-i386/cpu.c
> > @@ -1326,7 +1326,9 @@ static int cpu_x86_parse_featurestr(x86_def_t
> > *x86_cpu_def, char *features,
> > if (numvalue < 0x80000000) {
> > numvalue += 0x80000000;
> > }
> > - x86_cpu_def->xlevel = numvalue;
> > + val = g_strdup_printf("%u", numvalue);
>
> Why not just eliminate the string->integer conversion entirely, and move
> it inside x86_cpuid_set_xlevel()?
Silent fixup of an incorrect input value doesn't look like a candidate for
making into property setter, more correct way is bailing out. But for
compatibility sake we can't just remove it without giving userbase a warning.
Perhaps candidate for next release notes.
And when it's removed, this branch could be collapsed in catch-all(feat=val)
branch + adding input value check to xlevel property setter.
>
> > + qdict_put(*props, featurestr, qstring_from_str(val));
>
> If you made cpu_x86_parse_featurestr() set the properties directly on
> the object instead of creating an intermediate directionary, it could
> simply call object_property_set_int() (if for some reason it's
> impossible to eliminate the string->int conversion above).
I've explained in answer to [10/20] why.
Besides normalizing input first to uniform set and then applying it
to object using only one approach whether it via cpu_x86_set_props() or
global properties seems to me more straightforward and reduces chance of error.
and might allow completely get rid of cpu_x86_parse_featurestr() call in
cpu_init() call chain. cpu_x86_parse_featurestr() should/might be called only
once to create a set of properties that are applied later to each created CPU.
>
> > + g_free(val);
> > } else if (!strcmp(featurestr, "vendor")) {
> > qdict_put(*props, featurestr, qstring_from_str(val));
> > x86_cpu_def->vendor_override = true;
> > --
> > 1.7.1
> >
> >
>
> --
> Eduardo
--
Regards,
Igor
- Re: [Qemu-devel] [PATCH 11/20] target-i386: do not set vendor_override in x86_cpuid_set_vendor(), (continued)
- [Qemu-devel] [PATCH 04/20] target-i386: setting default 'vendor' is obsolete, remove it, Igor Mammedov, 2012/12/17
- [Qemu-devel] [PATCH 12/20] target-i386: replace uint32_t vendor fields by vendor string in x86_def_t, Igor Mammedov, 2012/12/17
- [Qemu-devel] [PATCH 18/20] target-i386: set custom 'stepping' without intermediate x86_def_t, Igor Mammedov, 2012/12/17
- [Qemu-devel] [PATCH 17/20] target-i386: set custom 'model-id' without intermediate x86_def_t, Igor Mammedov, 2012/12/17
- [Qemu-devel] [PATCH 19/20] target-i386: set custom 'model' without intermediate x86_def_t, Igor Mammedov, 2012/12/17
- [Qemu-devel] [PATCH 16/20] target-i386: set custom 'level' without intermediate x86_def_t, Igor Mammedov, 2012/12/17
- [Qemu-devel] [PATCH 20/20] target-i386: set custom 'family' without intermediate x86_def_t, Igor Mammedov, 2012/12/17
- [Qemu-devel] [PATCH 15/20] target-i386: set custom 'xlevel' without intermediate x86_def_t, Igor Mammedov, 2012/12/17
- Re: [Qemu-devel] [PATCH 00/20 v2] x86 CPU cleanup (wave 2), Andreas Färber, 2012/12/17