[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH RFC 6/8] cpu: use CPUClass->parse_features() as
From: |
Igor Mammedov |
Subject: |
Re: [Qemu-devel] [PATCH RFC 6/8] cpu: use CPUClass->parse_features() as convertor to global properties |
Date: |
Thu, 2 Jun 2016 12:06:59 +0200 |
On Wed, 1 Jun 2016 15:54:50 -0300
Eduardo Habkost <address@hidden> wrote:
> On Wed, Jun 01, 2016 at 06:37:28PM +0200, Igor Mammedov wrote:
> > Currently CPUClass->parse_features() is used to parse
> > -cpu features string and set properties on created CPU
> > instances.
> >
> > But considering that features specified -cpu apply to
> > every created CPU instance, it doesn't make sence to
> > parse the same features string for every CPU created.
> > It also makes every target that cares about parsing
> > features string explicitly call CPUClass->parse_features()
> > parser, which gets in a way if we consider using
> > generic device_add for CPU hotplug as device_add
> > has not a clue about CPU specific hooks.
> >
> > Turns out we can use global properties mechanism to set
> > properties on every created Device instance for a given
> > type. That way it's possible to convert CPU features
> > into a set of global properties for specified by
> > -cpu cpu_model and common Device.device_post_init()
> > will apply them to every cpu model model automaticaaly
> > regardless whether it's manually created CPU or CPU
> > created with help of device_add.
> >
> > Signed-off-by: Igor Mammedov <address@hidden>
> > ---
> [...]
> > -static void cpu_common_parse_features(CPUState *cpu, char
> > *features, +static void cpu_common_parse_features(const char
> > *typename, char *features, Error **errp)
> > {
> > char *featurestr; /* Single "key=value" string being parsed */
> > char *val;
> > - Error *err = NULL;
> > + static bool cpu_globals_initialized;
> > +
> > + if (cpu_globals_initialized) {
> > + return;
> > + }
>
> Should we replace this with assert(!cpu_globals_initialized)
> after applying patch 8/8?
assert might potentially break cpu_init() users, so I went safest route
here.
[Qemu-devel] [PATCH RFC 5/8] target-sparc: cpu: use sparc_cpu_parse_features() directly, Igor Mammedov, 2016/06/01
[Qemu-devel] [PATCH RFC 7/8] arm: virt: parse cpu_model only once, Igor Mammedov, 2016/06/01
[Qemu-devel] [PATCH RFC 6/8] cpu: use CPUClass->parse_features() as convertor to global properties, Igor Mammedov, 2016/06/01
[Qemu-devel] [PATCH RFC 8/8] pc: parse cpu features only once, Igor Mammedov, 2016/06/01
Re: [Qemu-devel] [PATCH RFC 0/8] cpus: make "-cpu cpux, features" global properties, Peter Maydell, 2016/06/01
Re: [Qemu-devel] [PATCH RFC 0/8] cpus: make "-cpu cpux, features" global properties, David Hildenbrand, 2016/06/02
Message not available