diff mbox series

[v2] target/i386: Add Snowridge-v2 (noMPX) CPU model

Message ID 20191011145349.123425-1-xiaoyao.li@intel.com (mailing list archive)
State New, archived
Headers show
Series [v2] target/i386: Add Snowridge-v2 (noMPX) CPU model | expand

Commit Message

Xiaoyao Li Oct. 11, 2019, 2:53 p.m. UTC
Add new version of Snowridge CPU model that removes MPX feature.

MPX support is being phased out by Intel. GCC has dropped it, Linux kernel
and kvm are also going to do that in the future.

Signed-off-by: Xiaoyao Li <xiaoyao.li@intel.com>
---
Changes in v2:
    - Use CPU model versioning mechanism instead of machine-type compat
---
 target/i386/cpu.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

Comments

Eduardo Habkost Oct. 11, 2019, 6:21 p.m. UTC | #1
On Fri, Oct 11, 2019 at 10:53:49PM +0800, Xiaoyao Li wrote:
> Add new version of Snowridge CPU model that removes MPX feature.
> 
> MPX support is being phased out by Intel. GCC has dropped it, Linux kernel
> and kvm are also going to do that in the future.
> 
> Signed-off-by: Xiaoyao Li <xiaoyao.li@intel.com>
> ---
> Changes in v2:
>     - Use CPU model versioning mechanism instead of machine-type compat
> ---
>  target/i386/cpu.c | 13 +++++++++++++
>  1 file changed, 13 insertions(+)
> 
> diff --git a/target/i386/cpu.c b/target/i386/cpu.c
> index 44f1bbdcac76..27b0a17b46a8 100644
> --- a/target/i386/cpu.c
> +++ b/target/i386/cpu.c
> @@ -2793,6 +2793,19 @@ static X86CPUDefinition builtin_x86_defs[] = {
>              CPUID_6_EAX_ARAT,
>          .xlevel = 0x80000008,
>          .model_id = "Intel Atom Processor (SnowRidge)",
> +        .versions = (X86CPUVersionDefinition[]) {
> +            { .version = 1 },
> +            {
> +                .version = 2,
> +                .alias = "Snowridge-noMPX",

The intention is to stop creating new funny names for CPU model
variations, now, and stick to -v1, -v2, -v3, etc.

The .alias field is optional, and was added only for
compatibility with the existing -noTSX and -IBRS CPU models.


> +                .props = (PropValue[]) {
> +                    { "mpx", "off" },
> +                    { "model-id", "Intel Atom Processor (Snowridge, no MPX)" },

Do you think it's important to report a different model-id?
I would keep it the same and only add mpx=off.

> +                    { /* end of list */ },
> +                },
> +            },
> +            { /* end of list */ },
> +        },
>      },
>      {
>          .name = "KnightsMill",
> -- 
> 2.19.1
>
Xiaoyao Li Oct. 12, 2019, 1:15 a.m. UTC | #2
On 10/12/2019 2:21 AM, Eduardo Habkost wrote:
> On Fri, Oct 11, 2019 at 10:53:49PM +0800, Xiaoyao Li wrote:
>> Add new version of Snowridge CPU model that removes MPX feature.
>>
>> MPX support is being phased out by Intel. GCC has dropped it, Linux kernel
>> and kvm are also going to do that in the future.
>>
>> Signed-off-by: Xiaoyao Li <xiaoyao.li@intel.com>
>> ---
>> Changes in v2:
>>      - Use CPU model versioning mechanism instead of machine-type compat
>> ---
>>   target/i386/cpu.c | 13 +++++++++++++
>>   1 file changed, 13 insertions(+)
>>
>> diff --git a/target/i386/cpu.c b/target/i386/cpu.c
>> index 44f1bbdcac76..27b0a17b46a8 100644
>> --- a/target/i386/cpu.c
>> +++ b/target/i386/cpu.c
>> @@ -2793,6 +2793,19 @@ static X86CPUDefinition builtin_x86_defs[] = {
>>               CPUID_6_EAX_ARAT,
>>           .xlevel = 0x80000008,
>>           .model_id = "Intel Atom Processor (SnowRidge)",
>> +        .versions = (X86CPUVersionDefinition[]) {
>> +            { .version = 1 },
>> +            {
>> +                .version = 2,
>> +                .alias = "Snowridge-noMPX",
> 
> The intention is to stop creating new funny names for CPU model
> variations, now, and stick to -v1, -v2, -v3, etc.
> 
> The .alias field is optional, and was added only for
> compatibility with the existing -noTSX and -IBRS CPU models.

Got it.

>> +                .props = (PropValue[]) {
>> +                    { "mpx", "off" },
>> +                    { "model-id", "Intel Atom Processor (Snowridge, no MPX)" },
> 
> Do you think it's important to report a different model-id?
> I would keep it the same and only add mpx=off.

I just want to let user know easily the differences between Snowridge-v1 
and Snowridge-v2. Unfortunately, it seems ugly.

When testing with Cascadelake-Server, it puzzles every time that which 
one should I choose between Cascadelake-Server-v1 and 
Cascadelake-Server-v2. From the output of "-cpu ?", I don't know the 
differences between them. Everytime I have to go to the source code to 
see the difference.

Maybe there is a way to see/report the differences between different 
versions of the same CPU model that I just don't know?

>> +                    { /* end of list */ },
>> +                },
>> +            },
>> +            { /* end of list */ },
>> +        },
>>       },
>>       {
>>           .name = "KnightsMill",
>> -- 
>> 2.19.1
>>
>
Eduardo Habkost Oct. 12, 2019, 1:21 a.m. UTC | #3
On Sat, Oct 12, 2019 at 09:15:56AM +0800, Xiaoyao Li wrote:
> On 10/12/2019 2:21 AM, Eduardo Habkost wrote:
> > On Fri, Oct 11, 2019 at 10:53:49PM +0800, Xiaoyao Li wrote:
> > > Add new version of Snowridge CPU model that removes MPX feature.
> > > 
> > > MPX support is being phased out by Intel. GCC has dropped it, Linux kernel
> > > and kvm are also going to do that in the future.
> > > 
> > > Signed-off-by: Xiaoyao Li <xiaoyao.li@intel.com>
> > > ---
> > > Changes in v2:
> > >      - Use CPU model versioning mechanism instead of machine-type compat
> > > ---
> > >   target/i386/cpu.c | 13 +++++++++++++
> > >   1 file changed, 13 insertions(+)
> > > 
> > > diff --git a/target/i386/cpu.c b/target/i386/cpu.c
> > > index 44f1bbdcac76..27b0a17b46a8 100644
> > > --- a/target/i386/cpu.c
> > > +++ b/target/i386/cpu.c
> > > @@ -2793,6 +2793,19 @@ static X86CPUDefinition builtin_x86_defs[] = {
> > >               CPUID_6_EAX_ARAT,
> > >           .xlevel = 0x80000008,
> > >           .model_id = "Intel Atom Processor (SnowRidge)",
> > > +        .versions = (X86CPUVersionDefinition[]) {
> > > +            { .version = 1 },
> > > +            {
> > > +                .version = 2,
> > > +                .alias = "Snowridge-noMPX",
> > 
> > The intention is to stop creating new funny names for CPU model
> > variations, now, and stick to -v1, -v2, -v3, etc.
> > 
> > The .alias field is optional, and was added only for
> > compatibility with the existing -noTSX and -IBRS CPU models.
> 
> Got it.
> 
> > > +                .props = (PropValue[]) {
> > > +                    { "mpx", "off" },
> > > +                    { "model-id", "Intel Atom Processor (Snowridge, no MPX)" },
> > 
> > Do you think it's important to report a different model-id?
> > I would keep it the same and only add mpx=off.
> 
> I just want to let user know easily the differences between Snowridge-v1 and
> Snowridge-v2. Unfortunately, it seems ugly.
> 
> When testing with Cascadelake-Server, it puzzles every time that which one
> should I choose between Cascadelake-Server-v1 and Cascadelake-Server-v2.
> From the output of "-cpu ?", I don't know the differences between them.
> Everytime I have to go to the source code to see the difference.
> 
> Maybe there is a way to see/report the differences between different
> versions of the same CPU model that I just don't know?

Good point.  I forgot that model-id is also the model description
in "-cpu ?".

Well, it doesn't hurt to have a different model-id in v2 that's
more informative.  Feel free to keep the model-id line in v3.

Thanks!
Xiaoyao Li Oct. 12, 2019, 1:31 a.m. UTC | #4
On 10/12/2019 9:21 AM, Eduardo Habkost wrote:
> On Sat, Oct 12, 2019 at 09:15:56AM +0800, Xiaoyao Li wrote:
>> On 10/12/2019 2:21 AM, Eduardo Habkost wrote:
>>> On Fri, Oct 11, 2019 at 10:53:49PM +0800, Xiaoyao Li wrote:
>>>> Add new version of Snowridge CPU model that removes MPX feature.
>>>>
>>>> MPX support is being phased out by Intel. GCC has dropped it, Linux kernel
>>>> and kvm are also going to do that in the future.
>>>>
>>>> Signed-off-by: Xiaoyao Li <xiaoyao.li@intel.com>
>>>> ---
>>>> Changes in v2:
>>>>       - Use CPU model versioning mechanism instead of machine-type compat
>>>> ---
>>>>    target/i386/cpu.c | 13 +++++++++++++
>>>>    1 file changed, 13 insertions(+)
>>>>
>>>> diff --git a/target/i386/cpu.c b/target/i386/cpu.c
>>>> index 44f1bbdcac76..27b0a17b46a8 100644
>>>> --- a/target/i386/cpu.c
>>>> +++ b/target/i386/cpu.c
>>>> @@ -2793,6 +2793,19 @@ static X86CPUDefinition builtin_x86_defs[] = {
>>>>                CPUID_6_EAX_ARAT,
>>>>            .xlevel = 0x80000008,
>>>>            .model_id = "Intel Atom Processor (SnowRidge)",
>>>> +        .versions = (X86CPUVersionDefinition[]) {
>>>> +            { .version = 1 },
>>>> +            {
>>>> +                .version = 2,
>>>> +                .alias = "Snowridge-noMPX",
>>>
>>> The intention is to stop creating new funny names for CPU model
>>> variations, now, and stick to -v1, -v2, -v3, etc.
>>>
>>> The .alias field is optional, and was added only for
>>> compatibility with the existing -noTSX and -IBRS CPU models.
>>
>> Got it.
>>
>>>> +                .props = (PropValue[]) {
>>>> +                    { "mpx", "off" },
>>>> +                    { "model-id", "Intel Atom Processor (Snowridge, no MPX)" },
>>>
>>> Do you think it's important to report a different model-id?
>>> I would keep it the same and only add mpx=off.
>>
>> I just want to let user know easily the differences between Snowridge-v1 and
>> Snowridge-v2. Unfortunately, it seems ugly.
>>
>> When testing with Cascadelake-Server, it puzzles every time that which one
>> should I choose between Cascadelake-Server-v1 and Cascadelake-Server-v2.
>>  From the output of "-cpu ?", I don't know the differences between them.
>> Everytime I have to go to the source code to see the difference.
>>
>> Maybe there is a way to see/report the differences between different
>> versions of the same CPU model that I just don't know?
> 
> Good point.  I forgot that model-id is also the model description
> in "-cpu ?".
> 
> Well, it doesn't hurt to have a different model-id in v2 that's
> more informative.  Feel free to keep the model-id line in v3.

OK. I will send out the v3 patch keeping the model-id while removing the 
alias.

BTW, do you have better idea to tell the differences among versions of 
the same CPU model?
Eduardo Habkost Oct. 12, 2019, 2:05 a.m. UTC | #5
On Sat, Oct 12, 2019 at 09:31:25AM +0800, Xiaoyao Li wrote:
> On 10/12/2019 9:21 AM, Eduardo Habkost wrote:
> > On Sat, Oct 12, 2019 at 09:15:56AM +0800, Xiaoyao Li wrote:
> > > On 10/12/2019 2:21 AM, Eduardo Habkost wrote:
> > > > On Fri, Oct 11, 2019 at 10:53:49PM +0800, Xiaoyao Li wrote:
> > > > > Add new version of Snowridge CPU model that removes MPX feature.
> > > > > 
> > > > > MPX support is being phased out by Intel. GCC has dropped it, Linux kernel
> > > > > and kvm are also going to do that in the future.
> > > > > 
> > > > > Signed-off-by: Xiaoyao Li <xiaoyao.li@intel.com>
> > > > > ---
> > > > > Changes in v2:
> > > > >       - Use CPU model versioning mechanism instead of machine-type compat
> > > > > ---
> > > > >    target/i386/cpu.c | 13 +++++++++++++
> > > > >    1 file changed, 13 insertions(+)
> > > > > 
> > > > > diff --git a/target/i386/cpu.c b/target/i386/cpu.c
> > > > > index 44f1bbdcac76..27b0a17b46a8 100644
> > > > > --- a/target/i386/cpu.c
> > > > > +++ b/target/i386/cpu.c
> > > > > @@ -2793,6 +2793,19 @@ static X86CPUDefinition builtin_x86_defs[] = {
> > > > >                CPUID_6_EAX_ARAT,
> > > > >            .xlevel = 0x80000008,
> > > > >            .model_id = "Intel Atom Processor (SnowRidge)",
> > > > > +        .versions = (X86CPUVersionDefinition[]) {
> > > > > +            { .version = 1 },
> > > > > +            {
> > > > > +                .version = 2,
> > > > > +                .alias = "Snowridge-noMPX",
> > > > 
> > > > The intention is to stop creating new funny names for CPU model
> > > > variations, now, and stick to -v1, -v2, -v3, etc.
> > > > 
> > > > The .alias field is optional, and was added only for
> > > > compatibility with the existing -noTSX and -IBRS CPU models.
> > > 
> > > Got it.
> > > 
> > > > > +                .props = (PropValue[]) {
> > > > > +                    { "mpx", "off" },
> > > > > +                    { "model-id", "Intel Atom Processor (Snowridge, no MPX)" },
> > > > 
> > > > Do you think it's important to report a different model-id?
> > > > I would keep it the same and only add mpx=off.
> > > 
> > > I just want to let user know easily the differences between Snowridge-v1 and
> > > Snowridge-v2. Unfortunately, it seems ugly.
> > > 
> > > When testing with Cascadelake-Server, it puzzles every time that which one
> > > should I choose between Cascadelake-Server-v1 and Cascadelake-Server-v2.
> > >  From the output of "-cpu ?", I don't know the differences between them.
> > > Everytime I have to go to the source code to see the difference.
> > > 
> > > Maybe there is a way to see/report the differences between different
> > > versions of the same CPU model that I just don't know?
> > 
> > Good point.  I forgot that model-id is also the model description
> > in "-cpu ?".
> > 
> > Well, it doesn't hurt to have a different model-id in v2 that's
> > more informative.  Feel free to keep the model-id line in v3.
> 
> OK. I will send out the v3 patch keeping the model-id while removing the
> alias.
> 
> BTW, do you have better idea to tell the differences among versions of the
> same CPU model?

We could add a new field for a human-readable description of the
CPU model version, and print that field on "-cpu help" if set.

We could also try to generate a description automatically (e.g.
automatically describe SnowRidge-v2 as "SnowRidge-v1 plus mpx"
based on .props).  I'm not sure if it would be worth the effort,
though.
diff mbox series

Patch

diff --git a/target/i386/cpu.c b/target/i386/cpu.c
index 44f1bbdcac76..27b0a17b46a8 100644
--- a/target/i386/cpu.c
+++ b/target/i386/cpu.c
@@ -2793,6 +2793,19 @@  static X86CPUDefinition builtin_x86_defs[] = {
             CPUID_6_EAX_ARAT,
         .xlevel = 0x80000008,
         .model_id = "Intel Atom Processor (SnowRidge)",
+        .versions = (X86CPUVersionDefinition[]) {
+            { .version = 1 },
+            {
+                .version = 2,
+                .alias = "Snowridge-noMPX",
+                .props = (PropValue[]) {
+                    { "mpx", "off" },
+                    { "model-id", "Intel Atom Processor (Snowridge, no MPX)" },
+                    { /* end of list */ },
+                },
+            },
+            { /* end of list */ },
+        },
     },
     {
         .name = "KnightsMill",