From: Michael Roth <mdroth@linux.vnet.ibm.com>
To: "Eduardo Habkost" <ehabkost@redhat.com>,
qemu-devel@nongnu.org, qemu-stable@nongnu.org,
"Andreas Färber" <afaerber@suse.de>
Cc: Igor Mammedov <imammedo@redhat.com>,
Marcelo Tosatti <mtosatti@redhat.com>,
Paolo Bonzini <pbonzini@redhat.com>
Subject: Re: [Qemu-devel] [Qemu-stable] [PATCH] target-i386: Support migratable=no properly
Date: Tue, 02 Sep 2014 10:08:56 -0500 [thread overview]
Message-ID: <20140902150856.16792.44698@loki> (raw)
In-Reply-To: <20140821201438.GA12310@thinpad.lan.raisama.net>
Quoting Eduardo Habkost (2014-08-21 15:14:38)
> Forgot to add qemu-devel to "To:". Adding it.
>
> On Wed, Aug 20, 2014 at 05:30:12PM -0300, Eduardo Habkost wrote:
> > When the "migratable" property was implemented, the behavior was tested
> > by changing the default on the code, but actually using the option on
> > the command-line (e.g. "-cpu host,migratable=false") doesn't work as
> > expected. This is a regression for a common use case of "-cpu host",
> > which is to enable features that are supported by the host CPU + kernel
> > before feature-specific code is added to QEMU.
> >
> > Fix this by initializing the feature words for "-cpu host" on
> > x86_cpu_parse_featurestr(), right after parsing the CPU options.
> >
> > Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
Ping for stable 2.1.1, freeze is Wednesday.
Reviewed-by: Michael Roth <mdroth@linux.vnet.ibm.com>
> > ---
> > I was considering a more complex (but less hacky) fix, by introducing an
> > enum FeatureBit { OFF, ON, HOST }, making FeatureWord a 32-element
> > FeatureBit array, and initializing the actual feature bits on
> > x86_cpu_realizefn(). But as this is a patch for qemu-stable, I kept the
> > fix as simple as possible.
> > ---
> > target-i386/cpu-qom.h | 1 +
> > target-i386/cpu.c | 17 ++++++++++++-----
> > 2 files changed, 13 insertions(+), 5 deletions(-)
> >
> > diff --git a/target-i386/cpu-qom.h b/target-i386/cpu-qom.h
> > index 71a1b97..7755466 100644
> > --- a/target-i386/cpu-qom.h
> > +++ b/target-i386/cpu-qom.h
> > @@ -92,6 +92,7 @@ typedef struct X86CPU {
> > bool enforce_cpuid;
> > bool expose_kvm;
> > bool migratable;
> > + bool host_features;
> >
> > /* if true the CPUID code directly forward host cache leaves to the guest */
> > bool cache_info_passthrough;
> > diff --git a/target-i386/cpu.c b/target-i386/cpu.c
> > index 6d008ab..c0f8efc 100644
> > --- a/target-i386/cpu.c
> > +++ b/target-i386/cpu.c
> > @@ -1318,18 +1318,18 @@ static void host_x86_cpu_initfn(Object *obj)
> > X86CPU *cpu = X86_CPU(obj);
> > CPUX86State *env = &cpu->env;
> > KVMState *s = kvm_state;
> > - FeatureWord w;
> >
> > assert(kvm_enabled());
> >
> > + /* We can't fill the features array here because we don't know yet if
> > + * "migratable" is true or false.
> > + */
> > + cpu->host_features = true;
> > +
> > env->cpuid_level = kvm_arch_get_supported_cpuid(s, 0x0, 0, R_EAX);
> > env->cpuid_xlevel = kvm_arch_get_supported_cpuid(s, 0x80000000, 0, R_EAX);
> > env->cpuid_xlevel2 = kvm_arch_get_supported_cpuid(s, 0xC0000000, 0, R_EAX);
> >
> > - for (w = 0; w < FEATURE_WORDS; w++) {
> > - env->features[w] =
> > - x86_cpu_get_supported_feature_word(w, cpu->migratable);
> > - }
> > object_property_set_bool(OBJECT(cpu), true, "pmu", &error_abort);
> > }
> >
> > @@ -1828,6 +1828,13 @@ static void x86_cpu_parse_featurestr(CPUState *cs, char *features,
> > featurestr = strtok(NULL, ",");
> > }
> >
> > + if (cpu->host_features) {
> > + for (w = 0; w < FEATURE_WORDS; w++) {
> > + env->features[w] =
> > + x86_cpu_get_supported_feature_word(w, cpu->migratable);
> > + }
> > + }
> > +
> > for (w = 0; w < FEATURE_WORDS; w++) {
> > env->features[w] |= plus_features[w];
> > env->features[w] &= ~minus_features[w];
> > --
> > 1.9.3
> >
>
> --
> Eduardo
next prev parent reply other threads:[~2014-09-02 15:09 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-08-20 20:30 [Qemu-devel] [PATCH] target-i386: Support migratable=no properly Eduardo Habkost
2014-08-21 20:14 ` Eduardo Habkost
2014-09-02 15:08 ` Michael Roth [this message]
2014-09-04 15:19 ` [Qemu-devel] [Qemu-stable] " Eduardo Habkost
2014-09-04 15:50 ` Andreas Färber
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20140902150856.16792.44698@loki \
--to=mdroth@linux.vnet.ibm.com \
--cc=afaerber@suse.de \
--cc=ehabkost@redhat.com \
--cc=imammedo@redhat.com \
--cc=mtosatti@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=qemu-stable@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.