From: Don Slutz <Don@CloudSwitch.Com>
To: Eduardo Habkost <ehabkost@redhat.com>
Cc: <qemu-devel@nongnu.org>, <kvm@vger.kernel.org>, <imammedo@redhat.com>
Subject: Re: [PATCH 2/2] target-i386: Fix default Hypervisor level for hypervisor-vendor=kvm.
Date: Wed, 19 Sep 2012 12:32:08 -0400 [thread overview]
Message-ID: <5059F388.6010007@CloudSwitch.Com> (raw)
In-Reply-To: <20120919132030.GE3983@otherpad.lan.raisama.net>
On 09/19/12 09:20, Eduardo Habkost wrote:
> On Tue, Sep 18, 2012 at 03:32:04PM -0400, Don Slutz wrote:
>> On 09/18/12 13:00, Eduardo Habkost wrote:
>>> On Tue, Sep 18, 2012 at 10:49:53AM -0400, Don Slutz wrote:
>>>> From http://lkml.indiana.edu/hypermail/linux/kernel/1205.0/00100.html
>>>> EAX should be KVM_CPUID_FEATURES (0x40000001) not 0.
>>>>
>>>> If kvm is not configured, the additional option of hypervisor-level=1
>>>> (or hypervisor-level=0x40000001) needs to be specified to get this.
>>>> ---
>>>> target-i386/cpu.c | 12 +++++++++++-
>>>> 1 files changed, 11 insertions(+), 1 deletions(-)
>>>>
>>>> diff --git a/target-i386/cpu.c b/target-i386/cpu.c
>>>> index 6e43eff..d73b0a8 100644
>>>> --- a/target-i386/cpu.c
>>>> +++ b/target-i386/cpu.c
>>>> @@ -1248,7 +1248,12 @@ static char *x86_cpuid_get_hv_vendor(Object *obj, Error **errp)
>>>> env->cpuid_hv_level == CPUID_HV_LEVEL_XEN) {
>>>> pstrcpy(value, sizeof(value), "xen");
>>>> } else if (!strcmp(value, CPUID_HV_VENDOR_KVM) &&
>>>> - env->cpuid_hv_level == 0) {
>>>> +#if defined(CONFIG_KVM)
>>>> + env->cpuid_hv_level == KVM_CPUID_FEATURES
>>>> +#else
>>>> + env->cpuid_hv_level == 0
>>>> +#endif
>>>> + ) {
>>>> pstrcpy(value, sizeof(value), "kvm");
>>>> }
>>>> return value;
>>>> @@ -1281,6 +1286,11 @@ static void x86_cpuid_set_hv_vendor(Object *obj, const char *value,
>>>> }
>>>> pstrcpy(adj_value, sizeof(adj_value), CPUID_HV_VENDOR_XEN);
>>>> } else if (!strcmp(value, "kvm")) {
>>>> +#if defined(CONFIG_KVM)
>>>> + if (env->cpuid_hv_level == 0) {
>>>> + env->cpuid_hv_level = KVM_CPUID_FEATURES;
>>>> + }
>>>> +#endif
>>> If CPUID[0x40000000].EAX set to 0 is documented as equivalent to having
>>> it set to 0x40000001 (KVM_CPUID_FEATURES), why the confusing checks for
>>> CONFIG_KVM? Why not always set it to KVM_CPUID_FEATURES?
>>>
>> At line 36 of the file:
>>
>> #if defined(CONFIG_KVM)
>> #include <linux/kvm_para.h>
>> #endif
>>
>> So without the check you get compile failures (i386-linux-user).
>>
> Right. We can't include linux/kvm_para.h on a non-Linux build host, but
> on the other hand I don't see any reason to not have
> cpuid_hv_level=0x40000001 on builds without CONFIG_KVM too.
>
> If we want to allow fake KVM CPUID leaves on non-CONFIG_KVM builds like
> the code above does, QEMU needs its own constant for
> KVM_CPUID_FEATURES/0x40000001, so it doesn't depend on the Linux header.
>
Will do a V2 with a local define.
>> I have no issue with removing the check(s) for 0. Currently
>> hypervisor-level=0 will not force the old values; I can make a change
>> so that works.
>> -Don Slutz
-Don Slutz
WARNING: multiple messages have this Message-ID (diff)
From: Don Slutz <Don@CloudSwitch.Com>
To: Eduardo Habkost <ehabkost@redhat.com>
Cc: imammedo@redhat.com, qemu-devel@nongnu.org, kvm@vger.kernel.org
Subject: Re: [Qemu-devel] [PATCH 2/2] target-i386: Fix default Hypervisor level for hypervisor-vendor=kvm.
Date: Wed, 19 Sep 2012 12:32:08 -0400 [thread overview]
Message-ID: <5059F388.6010007@CloudSwitch.Com> (raw)
In-Reply-To: <20120919132030.GE3983@otherpad.lan.raisama.net>
On 09/19/12 09:20, Eduardo Habkost wrote:
> On Tue, Sep 18, 2012 at 03:32:04PM -0400, Don Slutz wrote:
>> On 09/18/12 13:00, Eduardo Habkost wrote:
>>> On Tue, Sep 18, 2012 at 10:49:53AM -0400, Don Slutz wrote:
>>>> From http://lkml.indiana.edu/hypermail/linux/kernel/1205.0/00100.html
>>>> EAX should be KVM_CPUID_FEATURES (0x40000001) not 0.
>>>>
>>>> If kvm is not configured, the additional option of hypervisor-level=1
>>>> (or hypervisor-level=0x40000001) needs to be specified to get this.
>>>> ---
>>>> target-i386/cpu.c | 12 +++++++++++-
>>>> 1 files changed, 11 insertions(+), 1 deletions(-)
>>>>
>>>> diff --git a/target-i386/cpu.c b/target-i386/cpu.c
>>>> index 6e43eff..d73b0a8 100644
>>>> --- a/target-i386/cpu.c
>>>> +++ b/target-i386/cpu.c
>>>> @@ -1248,7 +1248,12 @@ static char *x86_cpuid_get_hv_vendor(Object *obj, Error **errp)
>>>> env->cpuid_hv_level == CPUID_HV_LEVEL_XEN) {
>>>> pstrcpy(value, sizeof(value), "xen");
>>>> } else if (!strcmp(value, CPUID_HV_VENDOR_KVM) &&
>>>> - env->cpuid_hv_level == 0) {
>>>> +#if defined(CONFIG_KVM)
>>>> + env->cpuid_hv_level == KVM_CPUID_FEATURES
>>>> +#else
>>>> + env->cpuid_hv_level == 0
>>>> +#endif
>>>> + ) {
>>>> pstrcpy(value, sizeof(value), "kvm");
>>>> }
>>>> return value;
>>>> @@ -1281,6 +1286,11 @@ static void x86_cpuid_set_hv_vendor(Object *obj, const char *value,
>>>> }
>>>> pstrcpy(adj_value, sizeof(adj_value), CPUID_HV_VENDOR_XEN);
>>>> } else if (!strcmp(value, "kvm")) {
>>>> +#if defined(CONFIG_KVM)
>>>> + if (env->cpuid_hv_level == 0) {
>>>> + env->cpuid_hv_level = KVM_CPUID_FEATURES;
>>>> + }
>>>> +#endif
>>> If CPUID[0x40000000].EAX set to 0 is documented as equivalent to having
>>> it set to 0x40000001 (KVM_CPUID_FEATURES), why the confusing checks for
>>> CONFIG_KVM? Why not always set it to KVM_CPUID_FEATURES?
>>>
>> At line 36 of the file:
>>
>> #if defined(CONFIG_KVM)
>> #include <linux/kvm_para.h>
>> #endif
>>
>> So without the check you get compile failures (i386-linux-user).
>>
> Right. We can't include linux/kvm_para.h on a non-Linux build host, but
> on the other hand I don't see any reason to not have
> cpuid_hv_level=0x40000001 on builds without CONFIG_KVM too.
>
> If we want to allow fake KVM CPUID leaves on non-CONFIG_KVM builds like
> the code above does, QEMU needs its own constant for
> KVM_CPUID_FEATURES/0x40000001, so it doesn't depend on the Linux header.
>
Will do a V2 with a local define.
>> I have no issue with removing the check(s) for 0. Currently
>> hypervisor-level=0 will not force the old values; I can make a change
>> so that works.
>> -Don Slutz
-Don Slutz
next prev parent reply other threads:[~2012-09-19 16:32 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-09-18 14:49 [PATCH 0/2] target-i386: Fix default Hypervisor level for kvm Don Slutz
2012-09-18 14:49 ` [Qemu-devel] " Don Slutz
2012-09-18 14:49 ` [PATCH 1/2] target-i386: Fix default Hypervisor level for accel=kvm Don Slutz
2012-09-18 14:49 ` [Qemu-devel] " Don Slutz
2012-09-18 15:05 ` Eduardo Habkost
2012-09-18 15:05 ` [Qemu-devel] " Eduardo Habkost
2012-09-18 20:19 ` Don Slutz
2012-09-18 20:19 ` [Qemu-devel] " Don Slutz
2012-09-18 14:49 ` [PATCH 2/2] target-i386: Fix default Hypervisor level for hypervisor-vendor=kvm Don Slutz
2012-09-18 14:49 ` [Qemu-devel] " Don Slutz
2012-09-18 17:00 ` Eduardo Habkost
2012-09-18 17:00 ` [Qemu-devel] " Eduardo Habkost
2012-09-18 19:32 ` Don Slutz
2012-09-18 19:32 ` [Qemu-devel] " Don Slutz
2012-09-19 13:20 ` Eduardo Habkost
2012-09-19 13:20 ` [Qemu-devel] " Eduardo Habkost
2012-09-19 16:32 ` Don Slutz [this message]
2012-09-19 16:32 ` Don Slutz
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=5059F388.6010007@CloudSwitch.Com \
--to=don@cloudswitch.com \
--cc=ehabkost@redhat.com \
--cc=imammedo@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=qemu-devel@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.