Message ID | 1475051774-5590-1-git-send-email-wanpeng.li@hotmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Wed, Sep 28, 2016 at 04:36:14PM +0800, Wanpeng Li wrote: > From: Wanpeng Li <wanpeng.li@hotmail.com> > > Commit 96193c22a "target-i386: Move xsave component mask to features array" > leverages features array to handle XCR0 processor state component bits, > however, it introduces a regression: > > warning: host doesn't support requested feature: CPUID.0DH:EAX [bit 0] > warning: host doesn't support requested feature: CPUID.0DH:EAX [bit 1] > warning: host doesn't support requested feature: CPUID.0DH:EAX [bit 2] > > My desktop doesn't have enough advance features, so just X87,SSE,AVX > warnings are splat when I boot a guest. > > The get migratable flags logic in x86_cpu_filter_features() path will > filter out the feature flags which are unsupported and unmigratable. > However, the bits of XCR0 processor state component featureword don't > have feat_names, and some features like SSE/AVX etc have feat_names in > CPUID.01H:EDX, CPUID.01H:ECX, so they are treated as unsupported. > > This patch fix it by don't filter out XCR0 processor state components > bits though they don't have feat_names just as before commit 96193c22ab3. > > Cc: Paolo Bonzini <pbonzini@redhat.com> > Cc: Richard Henderson <rth@twiddle.net> > Cc: Eduardo Habkost <ehabkost@redhat.com> > Cc: Michael S. Tsirkin <mst@redhat.com> > Signed-off-by: Wanpeng Li <wanpeng.li@hotmail.com> > --- > v1 -> v2: > * move the check to x86_cpu_get_migratable_flags() > > target-i386/cpu.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/target-i386/cpu.c b/target-i386/cpu.c > index 333309b..cc929ca 100644 > --- a/target-i386/cpu.c > +++ b/target-i386/cpu.c > @@ -602,7 +602,10 @@ static uint32_t x86_cpu_get_migratable_flags(FeatureWord w) > uint32_t f = 1U << i; > /* If the feature name is unknown, it is not supported by QEMU yet */ > if (!wi->feat_names[i]) { > - continue; > + if (w != FEAT_XSAVE_COMP_LO && > + w != FEAT_XSAVE_COMP_HI) { > + continue; > + } We still need to report unknown xstate components as unmigratable (otherwise -cpu host will enable them automatically). See the fix I submitted: [PATCH] target-i386: Report known CPUID[EAX=0xD,ECX=0]:EAX bits as migratable
2016-09-29 1:05 GMT+08:00 Eduardo Habkost <ehabkost@redhat.com>: > On Wed, Sep 28, 2016 at 04:36:14PM +0800, Wanpeng Li wrote: [...] > > We still need to report unknown xstate components as unmigratable > (otherwise -cpu host will enable them automatically). See the fix > I submitted: > [PATCH] target-i386: Report known CPUID[EAX=0xD,ECX=0]:EAX bits as migratable Hmm, at least you should Cc me when you sent out the patch, anyway, the patch looks good after I google to finally find it. Regards, Wanpeng Li
diff --git a/target-i386/cpu.c b/target-i386/cpu.c index 333309b..cc929ca 100644 --- a/target-i386/cpu.c +++ b/target-i386/cpu.c @@ -602,7 +602,10 @@ static uint32_t x86_cpu_get_migratable_flags(FeatureWord w) uint32_t f = 1U << i; /* If the feature name is unknown, it is not supported by QEMU yet */ if (!wi->feat_names[i]) { - continue; + if (w != FEAT_XSAVE_COMP_LO && + w != FEAT_XSAVE_COMP_HI) { + continue; + } } /* Skip features known to QEMU, but explicitly marked as unmigratable */ if (wi->unmigratable_flags & f) {