From patchwork Sun Apr 17 11:02:17 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Kiszka X-Patchwork-Id: 713461 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter1.kernel.org (8.14.4/8.14.3) with ESMTP id p3HB2SXp005884 for ; Sun, 17 Apr 2011 11:02:28 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757336Ab1DQLCZ (ORCPT ); Sun, 17 Apr 2011 07:02:25 -0400 Received: from fmmailgate03.web.de ([217.72.192.234]:42634 "EHLO fmmailgate03.web.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752490Ab1DQLCY (ORCPT ); Sun, 17 Apr 2011 07:02:24 -0400 Received: from smtp05.web.de ( [172.20.4.166]) by fmmailgate03.web.de (Postfix) with ESMTP id 15BFB18B66E70; Sun, 17 Apr 2011 13:02:23 +0200 (CEST) Received: from [88.66.126.216] (helo=mchn199C.mchp.siemens.de) by smtp05.web.de with asmtp (TLSv1:AES256-SHA:256) (WEB.DE 4.110 #2) id 1QBPkE-0006Qe-00; Sun, 17 Apr 2011 13:02:23 +0200 Message-ID: <4DAAC8B9.7020708@web.de> Date: Sun, 17 Apr 2011 13:02:17 +0200 From: Jan Kiszka User-Agent: Mozilla/5.0 (X11; U; Linux i686 (x86_64); de; rv:1.8.1.12) Gecko/20080226 SUSE/2.0.0.12-1.1 Thunderbird/2.0.0.12 Mnenhy/0.7.5.666 MIME-Version: 1.0 To: Marcelo Tosatti CC: Anthony Liguori , Glauber Costa , qemu-devel@nongnu.org, kvm@vger.kernel.org, Avi Kivity Subject: Re: [PATCH 2/6] kvm: add kvmclock to its second bit References: <8f53372986d7726c02fe0147e45be504a5208edc.1302991808.git.mtosatti@redhat.com> In-Reply-To: <8f53372986d7726c02fe0147e45be504a5208edc.1302991808.git.mtosatti@redhat.com> X-Enigmail-Version: 1.1.2 X-Sender: jan.kiszka@web.de X-Provags-ID: V01U2FsdGVkX1+H3083saStFilLJ6JDvM5TyMXjkrEORprfoFRw FNwQaoLlSTGwdJ7BkcwKE0ra7x7uMAcsiRqPRVf1k2rHfxx77A x5LiCmuwg= Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.6 (demeter1.kernel.org [140.211.167.41]); Sun, 17 Apr 2011 11:02:28 +0000 (UTC) On 2011-04-17 00:10, Marcelo Tosatti wrote: > From: Glauber Costa > > We have two bits that can represent kvmclock in cpuid. > They signal the guest which msr set to use. When we tweak flags > involving this value - specially when we use "-", we have to act on both. > > Besides adding it to the kvm features list, we also have to "break" the > assumption represented by the break in lookup_feature. > > Signed-off-by: Glauber Costa > Signed-off-by: Avi Kivity > --- > target-i386/cpuid.c | 3 +-- > 1 files changed, 1 insertions(+), 2 deletions(-) > > diff --git a/target-i386/cpuid.c b/target-i386/cpuid.c > index 814d13e..5e48d35 100644 > --- a/target-i386/cpuid.c > +++ b/target-i386/cpuid.c > @@ -73,7 +73,7 @@ static const char *ext3_feature_name[] = { > }; > > static const char *kvm_feature_name[] = { > - "kvmclock", "kvm_nopiodelay", "kvm_mmu", NULL, "kvm_asyncpf", NULL, NULL, NULL, > + "kvmclock", "kvm_nopiodelay", "kvm_mmu", "kvmclock", "kvm_asyncpf", NULL, NULL, NULL, > NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, > NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, > NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, > @@ -193,7 +193,6 @@ static int lookup_feature(uint32_t *pval, const char *s, const char *e, > for (mask = 1, ppc = featureset; mask; mask <<= 1, ++ppc) > if (*ppc && !altcmp(s, e, *ppc)) { > *pval |= mask; > - break; > } > return (mask ? 1 : 0); > } This is required on top to fix the issues Anthony was seeing: diff --git a/target-i386/cpuid.c b/target-i386/cpuid.c index 5e48d35..b7e20e8 100644 --- a/target-i386/cpuid.c +++ b/target-i386/cpuid.c @@ -189,12 +189,14 @@ static int lookup_feature(uint32_t *pval, const char *s, const char *e, { uint32_t mask; const char **ppc; + int found = 0; for (mask = 1, ppc = featureset; mask; mask <<= 1, ++ppc) if (*ppc && !altcmp(s, e, *ppc)) { *pval |= mask; + found = 1; } - return (mask ? 1 : 0); + return found; } static void add_flagname_to_bitmaps(const char *flagname, uint32_t *features,