qemu-arm
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-arm] [PATCH RFC 6/8] cpu: use CPUClass->parse_features() as co


From: Eduardo Habkost
Subject: Re: [Qemu-arm] [PATCH RFC 6/8] cpu: use CPUClass->parse_features() as convertor to global properties
Date: Wed, 1 Jun 2016 15:54:50 -0300
User-agent: Mutt/1.6.1 (2016-04-27)

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?

-- 
Eduardo



reply via email to

[Prev in Thread] Current Thread [Next in Thread]