All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alexander Graf <agraf@suse.de>
To: Eduardo Habkost <ehabkost@redhat.com>
Cc: "Paolo Bonzini" <pbonzini@redhat.com>,
	qemu-devel@nongnu.org, "Borislav Petkov" <bp@alien8.de>,
	"Gabriel L. Somlo" <gsomlo@gmail.com>,
	kvm@vger.kernel.org, "Michael S. Tsirkin" <mst@redhat.com>,
	"Michael Mueller" <mimu@linux.vnet.ibm.com>,
	"Christian Borntraeger" <borntraeger@de.ibm.com>,
	"Jason J. Herne" <jjherne@linux.vnet.ibm.com>,
	"Andreas Färber" <afaerber@suse.de>
Subject: Re: [RFC 0/2] GET_EMULATED_CPUID support with "allow-emulation" option
Date: Fri, 06 Jun 2014 00:24:26 +0200	[thread overview]
Message-ID: <5390EE1A.9080503@suse.de> (raw)
In-Reply-To: <20140605174801.GQ17594@otherpad.lan.raisama.net>


On 05.06.14 19:48, Eduardo Habkost wrote:
> On Thu, Jun 05, 2014 at 06:58:17PM +0200, Alexander Graf wrote:
>> On 05.06.14 18:52, Paolo Bonzini wrote:
>>> Il 05/06/2014 18:45, Alexander Graf ha scritto:
>>>>> Only if you were using "-cpu somethingThatHasAVX", though, no?
>>>> Yes. The same argument goes the other way around. I want to use AVX
>>>> emulation, do "allow-emulation" and suddenly I get MONITOR/MWAIT
>>>> emulation.
>>> What about:
>>>
>>> - letting "-cpu foo,+emulatedfeature" just work
>>>
>>> - adding emulated=yes that blindly enables all emulated features
>>>
>>> - making "-cpu ...,check" prints a warning for emulated features
>>> unless emulated=yes
>> So:
>>
>>    -cpu foo,+emulatedFeature just works
> The problem with this is:
>
>   * -cpu foo,+emulatedFeature,enforce MUST fail. We don't want to enable
>     emulated/experimental features by accident, even if they appear in
>     the command-line expliclty.
>   * -cpu foo,+emulatedFeature (no "enforce" flag) MUST remove remove the
>     feature and report it on the "filtered-features" property, because
>     that's the only API available for management to check if a feature is
>     not available on GET_SUPPORTED_CPUID.
>
> That's why I suggest that the only way to enable emulatedFeature be
> using "allow-emulation=yes" explicitly on the command-line IN ADDITION
> to already having the feature included in the CPU model definition or in
> explicitly in the command-line.
>
> (or "allow-experimental-features", or whatever name we choose)
>
>>    -cpu foo,+notEmulatedFeature still sets the CPUID bit for that feature
> That's OK, but (I assume) you mean notEmulatedFeature is on
> GET_SUPPORTED_CPUID.
>
> Detailing the requirements:
>
>   * "-cpu foo,+SomeFeature" MUST NOT enable SomeFeature unless it is
>     present on GET_SUPPORTED_CPUID.
>   * "-cpu foo,+SomeFeature,enforce" MUST abort if the feature is not
>     present on GET_SUPPORTED_CPUID.
>   * "-cpu foo,+SomeFeature" MUST report SomeFeature on
>     "filtered-features", so management knows the feature is not set on
>     GET_SUPPORTED_CPUID.
>
> The items above are already part of the semantics of "-cpu" and if we
> change it, we risk defeating the whole purpose of GET_EMULATED_CPUID in
> the first place.
>
>>    -cpu foo,check prints warnings for all cpuid bits not in the
>> "allowed" bitmap. It prints different warnings depending on whether
>> the bit is in "emulated" or not
> That part makes sense. And we may also report GET_EMULATED_CPUID
> features on an "emulated-features" property, so management can get that
> information in a machine-friendly way.

I personally like the feature=force way of specifying forcefully enabled 
cpuid bits. Whether it's in GET_EMULATED_CPUID doesn't matter really. 
Only "check" should ever care about that bitmap.

But can we drop the EMULATED name somehow? Can we rename [1] the ioctl 
to say GET_UNSUPPORTED_CPUID or something along those lines? The name is 
just a really really bad pick.


Alex

[1] rename obviously means "introduce a new name with the same ioctl 
number and keep the old name around for legacy compatibility reasons"

WARNING: multiple messages have this Message-ID (diff)
From: Alexander Graf <agraf@suse.de>
To: Eduardo Habkost <ehabkost@redhat.com>
Cc: "Michael Mueller" <mimu@linux.vnet.ibm.com>,
	kvm@vger.kernel.org, "Michael S. Tsirkin" <mst@redhat.com>,
	qemu-devel@nongnu.org,
	"Christian Borntraeger" <borntraeger@de.ibm.com>,
	"Gabriel L. Somlo" <gsomlo@gmail.com>,
	"Borislav Petkov" <bp@alien8.de>,
	"Jason J. Herne" <jjherne@linux.vnet.ibm.com>,
	"Paolo Bonzini" <pbonzini@redhat.com>,
	"Andreas Färber" <afaerber@suse.de>
Subject: Re: [Qemu-devel] [RFC 0/2] GET_EMULATED_CPUID support with "allow-emulation" option
Date: Fri, 06 Jun 2014 00:24:26 +0200	[thread overview]
Message-ID: <5390EE1A.9080503@suse.de> (raw)
In-Reply-To: <20140605174801.GQ17594@otherpad.lan.raisama.net>


On 05.06.14 19:48, Eduardo Habkost wrote:
> On Thu, Jun 05, 2014 at 06:58:17PM +0200, Alexander Graf wrote:
>> On 05.06.14 18:52, Paolo Bonzini wrote:
>>> Il 05/06/2014 18:45, Alexander Graf ha scritto:
>>>>> Only if you were using "-cpu somethingThatHasAVX", though, no?
>>>> Yes. The same argument goes the other way around. I want to use AVX
>>>> emulation, do "allow-emulation" and suddenly I get MONITOR/MWAIT
>>>> emulation.
>>> What about:
>>>
>>> - letting "-cpu foo,+emulatedfeature" just work
>>>
>>> - adding emulated=yes that blindly enables all emulated features
>>>
>>> - making "-cpu ...,check" prints a warning for emulated features
>>> unless emulated=yes
>> So:
>>
>>    -cpu foo,+emulatedFeature just works
> The problem with this is:
>
>   * -cpu foo,+emulatedFeature,enforce MUST fail. We don't want to enable
>     emulated/experimental features by accident, even if they appear in
>     the command-line expliclty.
>   * -cpu foo,+emulatedFeature (no "enforce" flag) MUST remove remove the
>     feature and report it on the "filtered-features" property, because
>     that's the only API available for management to check if a feature is
>     not available on GET_SUPPORTED_CPUID.
>
> That's why I suggest that the only way to enable emulatedFeature be
> using "allow-emulation=yes" explicitly on the command-line IN ADDITION
> to already having the feature included in the CPU model definition or in
> explicitly in the command-line.
>
> (or "allow-experimental-features", or whatever name we choose)
>
>>    -cpu foo,+notEmulatedFeature still sets the CPUID bit for that feature
> That's OK, but (I assume) you mean notEmulatedFeature is on
> GET_SUPPORTED_CPUID.
>
> Detailing the requirements:
>
>   * "-cpu foo,+SomeFeature" MUST NOT enable SomeFeature unless it is
>     present on GET_SUPPORTED_CPUID.
>   * "-cpu foo,+SomeFeature,enforce" MUST abort if the feature is not
>     present on GET_SUPPORTED_CPUID.
>   * "-cpu foo,+SomeFeature" MUST report SomeFeature on
>     "filtered-features", so management knows the feature is not set on
>     GET_SUPPORTED_CPUID.
>
> The items above are already part of the semantics of "-cpu" and if we
> change it, we risk defeating the whole purpose of GET_EMULATED_CPUID in
> the first place.
>
>>    -cpu foo,check prints warnings for all cpuid bits not in the
>> "allowed" bitmap. It prints different warnings depending on whether
>> the bit is in "emulated" or not
> That part makes sense. And we may also report GET_EMULATED_CPUID
> features on an "emulated-features" property, so management can get that
> information in a machine-friendly way.

I personally like the feature=force way of specifying forcefully enabled 
cpuid bits. Whether it's in GET_EMULATED_CPUID doesn't matter really. 
Only "check" should ever care about that bitmap.

But can we drop the EMULATED name somehow? Can we rename [1] the ioctl 
to say GET_UNSUPPORTED_CPUID or something along those lines? The name is 
just a really really bad pick.


Alex

[1] rename obviously means "introduce a new name with the same ioctl 
number and keep the old name around for legacy compatibility reasons"

  reply	other threads:[~2014-06-05 22:24 UTC|newest]

Thread overview: 64+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-06-05 16:12 [RFC 0/2] GET_EMULATED_CPUID support with "allow-emulation" option Eduardo Habkost
2014-06-05 16:12 ` [Qemu-devel] " Eduardo Habkost
2014-06-05 16:12 ` [Qemu-devel] [RFC 1/2] kvm: Implement kvm_arch_get_emulated_cpuid() Eduardo Habkost
2014-06-05 16:12 ` [Qemu-devel] [RFC 2/2] target-i386: Add "allow-emulation" X86CPU property Eduardo Habkost
2014-06-05 19:57   ` [RFC 2/2 v2] target-i386: Add "x-allow-emulation" " Eduardo Habkost
2014-06-05 19:57     ` [Qemu-devel] " Eduardo Habkost
2014-06-05 22:27     ` Alexander Graf
2014-06-05 22:27       ` [Qemu-devel] " Alexander Graf
2014-06-05 16:24 ` [RFC 0/2] GET_EMULATED_CPUID support with "allow-emulation" option Alexander Graf
2014-06-05 16:24   ` [Qemu-devel] " Alexander Graf
2014-06-05 16:26   ` Paolo Bonzini
2014-06-05 16:26     ` [Qemu-devel] " Paolo Bonzini
2014-06-05 16:40     ` Alexander Graf
2014-06-05 16:40       ` [Qemu-devel] " Alexander Graf
2014-06-05 16:44       ` Paolo Bonzini
2014-06-05 16:44         ` [Qemu-devel] " Paolo Bonzini
2014-06-05 16:45         ` Alexander Graf
2014-06-05 16:45           ` [Qemu-devel] " Alexander Graf
2014-06-05 16:52           ` Paolo Bonzini
2014-06-05 16:52             ` [Qemu-devel] " Paolo Bonzini
2014-06-05 16:54             ` Alexander Graf
2014-06-05 16:54               ` [Qemu-devel] " Alexander Graf
2014-06-05 16:57               ` Paolo Bonzini
2014-06-05 16:57                 ` [Qemu-devel] " Paolo Bonzini
2014-06-05 17:19                 ` Eduardo Habkost
2014-06-05 17:19                   ` [Qemu-devel] " Eduardo Habkost
2014-06-05 17:39                   ` Paolo Bonzini
2014-06-05 17:39                     ` [Qemu-devel] " Paolo Bonzini
2014-06-05 18:02                     ` Eduardo Habkost
2014-06-05 18:02                       ` [Qemu-devel] " Eduardo Habkost
2014-06-05 19:12                       ` Eduardo Habkost
2014-06-05 19:12                         ` [Qemu-devel] " Eduardo Habkost
2014-06-05 19:24                         ` Borislav Petkov
2014-06-05 19:24                           ` Borislav Petkov
2014-06-05 19:45                           ` Eric Blake
2014-06-05 19:45                             ` Eric Blake
2014-06-05 19:52                             ` Eduardo Habkost
2014-06-05 19:52                               ` Eduardo Habkost
2014-06-05 16:58             ` Alexander Graf
2014-06-05 16:58               ` [Qemu-devel] " Alexander Graf
2014-06-05 17:48               ` Eduardo Habkost
2014-06-05 17:48                 ` [Qemu-devel] " Eduardo Habkost
2014-06-05 22:24                 ` Alexander Graf [this message]
2014-06-05 22:24                   ` Alexander Graf
2014-06-06  1:21                   ` Borislav Petkov
2014-06-06  1:21                     ` [Qemu-devel] " Borislav Petkov
2014-06-06  2:37                     ` Eduardo Habkost
2014-06-06  2:37                       ` [Qemu-devel] " Eduardo Habkost
2014-06-06 11:16                       ` Alexander Graf
2014-06-06 11:16                         ` [Qemu-devel] " Alexander Graf
2014-06-06 18:38                         ` Eduardo Habkost
2014-06-06 18:38                           ` [Qemu-devel] " Eduardo Habkost
2014-06-05 17:17           ` Eduardo Habkost
2014-06-05 17:17             ` [Qemu-devel] " Eduardo Habkost
2014-06-05 17:38             ` Paolo Bonzini
2014-06-05 17:38               ` [Qemu-devel] " Paolo Bonzini
2014-06-05 17:52               ` Eduardo Habkost
2014-06-05 17:52                 ` [Qemu-devel] " Eduardo Habkost
2014-06-05 17:34       ` Eduardo Habkost
2014-06-05 17:34         ` [Qemu-devel] " Eduardo Habkost
2014-06-06 13:29     ` gleb
2014-06-06 13:29       ` [Qemu-devel] " gleb
2014-06-05 18:11   ` Eduardo Habkost
2014-06-05 18:11     ` 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=5390EE1A.9080503@suse.de \
    --to=agraf@suse.de \
    --cc=afaerber@suse.de \
    --cc=borntraeger@de.ibm.com \
    --cc=bp@alien8.de \
    --cc=ehabkost@redhat.com \
    --cc=gsomlo@gmail.com \
    --cc=jjherne@linux.vnet.ibm.com \
    --cc=kvm@vger.kernel.org \
    --cc=mimu@linux.vnet.ibm.com \
    --cc=mst@redhat.com \
    --cc=pbonzini@redhat.com \
    --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.