From: "Andreas Färber" <afaerber@suse.de>
To: Eduardo Habkost <ehabkost@redhat.com>
Cc: Marcelo Tosatti <mtosatti@redhat.com>,
qemu-devel@nongnu.org, Paolo Bonzini <pbonzini@redhat.com>,
Igor Mammedov <imammedo@redhat.com>,
Aurelien Jarno <aurelien@aurel32.net>,
Richard Henderson <rth@twiddle.net>
Subject: Re: [Qemu-devel] [PATCH v4 12/18] target-i386: Support check/enforce flags in TCG mode, too
Date: Wed, 18 Jun 2014 17:50:47 +0200 [thread overview]
Message-ID: <53A1B557.4020104@suse.de> (raw)
In-Reply-To: <20140515191215.GU3302@otherpad.lan.raisama.net>
Am 15.05.2014 21:12, schrieb Eduardo Habkost:
> On Thu, May 15, 2014 at 08:54:15PM +0200, Andreas Färber wrote:
>> Am 30.04.2014 18:48, schrieb Eduardo Habkost:
>>> If enforce/check is specified in TCG mode, QEMU will ensure all CPU
>>> features are supported by TCG, so no CPU feature is silently disabled.
>>>
>>> Reviewed-by: Richard Henderson <rth@twiddle.net>
>>> Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
>>> ---
>>> Changes v1 -> v2:
>>> * Trivial rebase to latest qom-cpu (commit 90c5d39c)
>>> (Reviewed-by line kept)
>>> Changes v2 -> v3:
>>> * Trivial rebase after QEMU 2.0 (onto commit 2d03b49)
>>> (Reviewed-by line kept)
>>> ---
>>> target-i386/cpu.c | 34 ++++++++++++++++------------------
>>> 1 file changed, 16 insertions(+), 18 deletions(-)
>>>
>>> diff --git a/target-i386/cpu.c b/target-i386/cpu.c
>>> index b2e30ca..53b5038 100644
>>> --- a/target-i386/cpu.c
>>> +++ b/target-i386/cpu.c
>>> @@ -1265,8 +1265,9 @@ static int report_unavailable_features(FeatureWord w, uint32_t mask)
>>> if (1 << i & mask) {
>>> const char *reg = get_register_name_32(f->cpuid_reg);
>>> assert(reg);
>>> - fprintf(stderr, "warning: host doesn't support requested feature: "
>>> + fprintf(stderr, "warning: %s doesn't support requested feature: "
>>> "CPUID.%02XH:%s%s%s [bit %d]\n",
>>> + kvm_enabled() ? "host" : "TCG",
>>> f->cpuid_eax, reg,
>>> f->feat_names[i] ? "." : "",
>>> f->feat_names[i] ? f->feat_names[i] : "", i);
>>> @@ -1826,17 +1827,18 @@ CpuDefinitionInfoList *arch_query_cpu_definitions(Error **errp)
>>> static uint32_t x86_cpu_get_supported_feature_word(FeatureWord w)
>>> {
>>> FeatureWordInfo *wi = &feature_word_info[w];
>>> - assert(kvm_enabled());
>>> - return kvm_arch_get_supported_cpuid(kvm_state, wi->cpuid_eax,
>>> - wi->cpuid_ecx,
>>> - wi->cpuid_reg);
>>> + if (kvm_enabled()) {
>>> + return kvm_arch_get_supported_cpuid(kvm_state, wi->cpuid_eax,
>>> + wi->cpuid_ecx,
>>> + wi->cpuid_reg);
>>> + } else {
>>> + return wi->tcg_features;
>>> + }
>>> }
>>
>> This function is called unconditionally now, so apply the following?
>>
>> diff --git a/target-i386/cpu.c b/target-i386/cpu.c
>> index 48ba1d8..112b437 100644
>> --- a/target-i386/cpu.c
>> +++ b/target-i386/cpu.c
>> @@ -1839,8 +1839,10 @@ static uint32_t
>> x86_cpu_get_supported_feature_word(FeatureWord w)
>> return kvm_arch_get_supported_cpuid(kvm_state, wi->cpuid_eax,
>> wi->cpuid_ecx,
>> wi->cpuid_reg);
>> - } else {
>> + } else if (tcg_enabled()) {
>> return wi->tcg_features;
>> + } else {
>> + return UINT32_MAX;
>
> Agreed, but I would prefer writing it as ~0 instead of UINT32_MAX.
FTR done as ~0u to avoid any signedness issues.
>
>> }
>> }
>>
>>
>> Not sure what to do about the warning message. It wouldn't occur though
>> due to the suggested mask, so we could just ignore it for now.
>
> One day we may be able to simply ask the machine object for the current
> accelerator name. In the meantime, we could use:
>
> "warning: host (%s) doesn't support requested feature [...]",
> kvm_enabled() ? "KVM" : (tcg_enabled() ? "TCG" : "QEMU")
>
> (But I won't object if you prefer to keep the warning message I
> originally sent.)
I think I did the latter, yes...
Andreas
--
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg
next prev parent reply other threads:[~2014-06-18 15:51 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1398876525-28831-1-git-send-email-ehabkost@redhat.com>
[not found] ` <1398876525-28831-3-git-send-email-ehabkost@redhat.com>
2014-05-15 12:21 ` [Qemu-devel] [PATCH v4 02/18] target-i386: Simplify reporting of unavailable features Andreas Färber
2014-05-15 13:39 ` Eduardo Habkost
2014-05-15 16:00 ` Andreas Färber
[not found] ` <1398876525-28831-4-git-send-email-ehabkost@redhat.com>
2014-05-15 13:19 ` [Qemu-devel] [PATCH v4 03/18] target-i386: Merge feature filtering/checking functions Andreas Färber
[not found] ` <1398876525-28831-8-git-send-email-ehabkost@redhat.com>
2014-05-15 18:10 ` [Qemu-devel] [PATCH v4 07/18] target-i386: Filter FEAT_7_0_EBX TCG features too Andreas Färber
2014-05-15 18:54 ` Eduardo Habkost
[not found] ` <1398876525-28831-13-git-send-email-ehabkost@redhat.com>
2014-05-15 18:54 ` [Qemu-devel] [PATCH v4 12/18] target-i386: Support check/enforce flags in TCG mode, too Andreas Färber
2014-05-15 19:12 ` Eduardo Habkost
2014-06-18 15:50 ` Andreas Färber [this message]
2014-06-18 15:54 ` Paolo Bonzini
[not found] ` <1398876525-28831-14-git-send-email-ehabkost@redhat.com>
2014-05-15 19:12 ` [Qemu-devel] [PATCH v4 13/18] target-i386: Support "-cpu host" in TCG mode Andreas Färber
2014-05-15 19:21 ` Eduardo Habkost
[not found] ` <1398876525-28831-15-git-send-email-ehabkost@redhat.com>
2014-05-15 19:44 ` [Qemu-devel] [PATCH v4 14/18] target-i386: Add "migratable" property to "host" CPU model Andreas Färber
2014-05-15 20:26 ` Eduardo Habkost
2014-05-15 22:12 ` Andreas Färber
2014-05-16 16:13 ` Eduardo Habkost
2014-05-16 16:29 ` Andreas Färber
2014-05-16 17:18 ` Eduardo Habkost
[not found] ` <1398876525-28831-16-git-send-email-ehabkost@redhat.com>
2014-05-15 20:07 ` [Qemu-devel] [PATCH v4 15/18] target-i386: Set migratable=yes by default Andreas Färber
2014-05-15 20:22 ` Eduardo Habkost
2014-05-16 11:14 ` Marcelo Tosatti
[not found] ` <1398876525-28831-18-git-send-email-ehabkost@redhat.com>
2014-05-15 20:22 ` [Qemu-devel] [PATCH v4 17/18] target-i386: block migration and savevm if invariant tsc is exposed Andreas Färber
2014-05-16 9:05 ` Andreas Färber
2014-05-16 13:15 ` Luiz Capitulino
2014-05-16 15:36 ` Eduardo Habkost
2014-05-16 17:51 ` Eduardo Habkost
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=53A1B557.4020104@suse.de \
--to=afaerber@suse.de \
--cc=aurelien@aurel32.net \
--cc=ehabkost@redhat.com \
--cc=imammedo@redhat.com \
--cc=mtosatti@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=rth@twiddle.net \
/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.