diff mbox series

i386: add KNM cpu model

Message ID 20180314073000.3701-1-boqun.feng@intel.com
State New
Headers show
Series i386: add KNM cpu model | expand

Commit Message

Boqun Feng March 14, 2018, 7:29 a.m. UTC
A new cpu model called "KNM" is added to model Knights Mill processors.
Compared to "Skylake-Server" cpu model, the following features are
added:

	avx512_4vnniw avx512_4fmaps avx512pf avx512er avx512_vpopcntdq

and the following features are removed:

	pcid invpcid clflushopt avx512dq avx512bw axv512cd clwb smap rtm
	mpx xsavec xgetbv1 hle

Signed-off-by: Boqun Feng <boqun.feng@intel.com>
---
 target/i386/cpu.c | 42 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 42 insertions(+)

Comments

Daniel P. Berrangé March 14, 2018, 1:01 p.m. UTC | #1
On Wed, Mar 14, 2018 at 03:29:59PM +0800, Boqun Feng wrote:
> A new cpu model called "KNM" is added to model Knights Mill processors.

Why the obscure acryonym? Can't we just call it KnightsMill so it is
obvious what it is to everyone, as we've done for all other Intel
CPU model names in the past.

> Compared to "Skylake-Server" cpu model, the following features are
> added:
> 
> 	avx512_4vnniw avx512_4fmaps avx512pf avx512er avx512_vpopcntdq
> 
> and the following features are removed:
> 
> 	pcid invpcid clflushopt avx512dq avx512bw axv512cd clwb smap rtm
> 	mpx xsavec xgetbv1 hle

"pcid" was one of the features critical to mitigate performance
downside of the Meltdown bug fix in guests. Will Knights Mill have
a fix for Meltdown in hardware, to avoid the need for split table
pages and thus avoid the perf hit in guests ?

> 
> Signed-off-by: Boqun Feng <boqun.feng@intel.com>
> ---
>  target/i386/cpu.c | 42 ++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 42 insertions(+)
> 
> diff --git a/target/i386/cpu.c b/target/i386/cpu.c
> index 2c04645ceac9..215a9ee6026a 100644
> --- a/target/i386/cpu.c
> +++ b/target/i386/cpu.c
> @@ -1795,6 +1795,48 @@ static X86CPUDefinition builtin_x86_defs[] = {
>          .xlevel = 0x80000008,
>          .model_id = "Intel Xeon Processor (Skylake, IBRS)",
>      },
> +    {
> +        .name = "KNM",
> +        .level = 0xd,
> +        .vendor = CPUID_VENDOR_INTEL,
> +        .family = 6,
> +        .model = 133,
> +        .stepping = 0,
> +        .features[FEAT_1_EDX] =
> +            CPUID_VME | CPUID_SS | CPUID_SSE2 | CPUID_SSE | CPUID_FXSR |
> +            CPUID_MMX | CPUID_CLFLUSH | CPUID_PSE36 | CPUID_PAT | CPUID_CMOV |
> +            CPUID_MCA | CPUID_PGE | CPUID_MTRR | CPUID_SEP | CPUID_APIC |
> +            CPUID_CX8 | CPUID_MCE | CPUID_PAE | CPUID_MSR | CPUID_TSC |
> +            CPUID_PSE | CPUID_DE | CPUID_FP87,
> +        .features[FEAT_1_ECX] =
> +            CPUID_EXT_AVX | CPUID_EXT_XSAVE | CPUID_EXT_AES |
> +            CPUID_EXT_POPCNT | CPUID_EXT_X2APIC | CPUID_EXT_SSE42 |
> +            CPUID_EXT_SSE41 | CPUID_EXT_CX16 | CPUID_EXT_SSSE3 |
> +            CPUID_EXT_PCLMULQDQ | CPUID_EXT_SSE3 |
> +            CPUID_EXT_TSC_DEADLINE_TIMER | CPUID_EXT_FMA | CPUID_EXT_MOVBE |
> +            CPUID_EXT_F16C | CPUID_EXT_RDRAND,
> +        .features[FEAT_8000_0001_EDX] =
> +            CPUID_EXT2_LM | CPUID_EXT2_PDPE1GB | CPUID_EXT2_RDTSCP |
> +            CPUID_EXT2_NX | CPUID_EXT2_SYSCALL,
> +        .features[FEAT_8000_0001_ECX] =
> +            CPUID_EXT3_ABM | CPUID_EXT3_LAHF_LM | CPUID_EXT3_3DNOWPREFETCH,
> +        .features[FEAT_7_0_EBX] =
> +            CPUID_7_0_EBX_FSGSBASE | CPUID_7_0_EBX_BMI1 | CPUID_7_0_EBX_AVX2 |
> +            CPUID_7_0_EBX_SMEP | CPUID_7_0_EBX_BMI2 | CPUID_7_0_EBX_ERMS |
> +            CPUID_7_0_EBX_RDSEED | CPUID_7_0_EBX_ADX | CPUID_7_0_EBX_AVX512F |
> +            CPUID_7_0_EBX_AVX512CD | CPUID_7_0_EBX_AVX512PF |
> +            CPUID_7_0_EBX_AVX512ER,
> +        .features[FEAT_7_0_ECX] =
> +            CPUID_7_0_ECX_AVX512_VPOPCNTDQ,
> +        .features[FEAT_7_0_EDX] =
> +            CPUID_7_0_EDX_AVX512_4VNNIW | CPUID_7_0_EDX_AVX512_4FMAPS,
> +        .features[FEAT_XSAVE] =
> +            CPUID_XSAVE_XSAVEOPT,
> +        .features[FEAT_6_EAX] =
> +            CPUID_6_EAX_ARAT,
> +        .xlevel = 0x80000008,
> +        .model_id = "Intel Xeon Phi Processor (Knights Mill)",
> +    },
>      {
>          .name = "Opteron_G1",
>          .level = 5,
> -- 
> 2.16.1
> 
> 

Regards,
Daniel
Boqun Feng March 16, 2018, 2:11 a.m. UTC | #2
On Wed, Mar 14, 2018 at 01:01:30PM +0000, Daniel P. Berrangé wrote:
> On Wed, Mar 14, 2018 at 03:29:59PM +0800, Boqun Feng wrote:
> > A new cpu model called "KNM" is added to model Knights Mill processors.
> 
> Why the obscure acryonym? Can't we just call it KnightsMill so it is
> obvious what it is to everyone, as we've done for all other Intel
> CPU model names in the past.
> 

Ah.. my bad, good point! I will rename to "KnightsMill" in the next
version.

> > Compared to "Skylake-Server" cpu model, the following features are
> > added:
> > 
> > 	avx512_4vnniw avx512_4fmaps avx512pf avx512er avx512_vpopcntdq
> > 
> > and the following features are removed:
> > 
> > 	pcid invpcid clflushopt avx512dq avx512bw axv512cd clwb smap rtm
> > 	mpx xsavec xgetbv1 hle
> 
> "pcid" was one of the features critical to mitigate performance
> downside of the Meltdown bug fix in guests. Will Knights Mill have
> a fix for Meltdown in hardware, to avoid the need for split table
> pages and thus avoid the perf hit in guests ?
> 

I got the confirmation the Knights Mill doesn't have PCID at all. For
the alternative fix for Meltdown in hardware, I will ask around and info
you if I get something.

Regards,
Boqun

> > 
> > Signed-off-by: Boqun Feng <boqun.feng@intel.com>
> > ---
> >  target/i386/cpu.c | 42 ++++++++++++++++++++++++++++++++++++++++++
> >  1 file changed, 42 insertions(+)
> > 
> > diff --git a/target/i386/cpu.c b/target/i386/cpu.c
> > index 2c04645ceac9..215a9ee6026a 100644
> > --- a/target/i386/cpu.c
> > +++ b/target/i386/cpu.c
> > @@ -1795,6 +1795,48 @@ static X86CPUDefinition builtin_x86_defs[] = {
> >          .xlevel = 0x80000008,
> >          .model_id = "Intel Xeon Processor (Skylake, IBRS)",
> >      },
> > +    {
> > +        .name = "KNM",
> > +        .level = 0xd,
> > +        .vendor = CPUID_VENDOR_INTEL,
> > +        .family = 6,
> > +        .model = 133,
> > +        .stepping = 0,
> > +        .features[FEAT_1_EDX] =
> > +            CPUID_VME | CPUID_SS | CPUID_SSE2 | CPUID_SSE | CPUID_FXSR |
> > +            CPUID_MMX | CPUID_CLFLUSH | CPUID_PSE36 | CPUID_PAT | CPUID_CMOV |
> > +            CPUID_MCA | CPUID_PGE | CPUID_MTRR | CPUID_SEP | CPUID_APIC |
> > +            CPUID_CX8 | CPUID_MCE | CPUID_PAE | CPUID_MSR | CPUID_TSC |
> > +            CPUID_PSE | CPUID_DE | CPUID_FP87,
> > +        .features[FEAT_1_ECX] =
> > +            CPUID_EXT_AVX | CPUID_EXT_XSAVE | CPUID_EXT_AES |
> > +            CPUID_EXT_POPCNT | CPUID_EXT_X2APIC | CPUID_EXT_SSE42 |
> > +            CPUID_EXT_SSE41 | CPUID_EXT_CX16 | CPUID_EXT_SSSE3 |
> > +            CPUID_EXT_PCLMULQDQ | CPUID_EXT_SSE3 |
> > +            CPUID_EXT_TSC_DEADLINE_TIMER | CPUID_EXT_FMA | CPUID_EXT_MOVBE |
> > +            CPUID_EXT_F16C | CPUID_EXT_RDRAND,
> > +        .features[FEAT_8000_0001_EDX] =
> > +            CPUID_EXT2_LM | CPUID_EXT2_PDPE1GB | CPUID_EXT2_RDTSCP |
> > +            CPUID_EXT2_NX | CPUID_EXT2_SYSCALL,
> > +        .features[FEAT_8000_0001_ECX] =
> > +            CPUID_EXT3_ABM | CPUID_EXT3_LAHF_LM | CPUID_EXT3_3DNOWPREFETCH,
> > +        .features[FEAT_7_0_EBX] =
> > +            CPUID_7_0_EBX_FSGSBASE | CPUID_7_0_EBX_BMI1 | CPUID_7_0_EBX_AVX2 |
> > +            CPUID_7_0_EBX_SMEP | CPUID_7_0_EBX_BMI2 | CPUID_7_0_EBX_ERMS |
> > +            CPUID_7_0_EBX_RDSEED | CPUID_7_0_EBX_ADX | CPUID_7_0_EBX_AVX512F |
> > +            CPUID_7_0_EBX_AVX512CD | CPUID_7_0_EBX_AVX512PF |
> > +            CPUID_7_0_EBX_AVX512ER,
> > +        .features[FEAT_7_0_ECX] =
> > +            CPUID_7_0_ECX_AVX512_VPOPCNTDQ,
> > +        .features[FEAT_7_0_EDX] =
> > +            CPUID_7_0_EDX_AVX512_4VNNIW | CPUID_7_0_EDX_AVX512_4FMAPS,
> > +        .features[FEAT_XSAVE] =
> > +            CPUID_XSAVE_XSAVEOPT,
> > +        .features[FEAT_6_EAX] =
> > +            CPUID_6_EAX_ARAT,
> > +        .xlevel = 0x80000008,
> > +        .model_id = "Intel Xeon Phi Processor (Knights Mill)",
> > +    },
> >      {
> >          .name = "Opteron_G1",
> >          .level = 5,
> > -- 
> > 2.16.1
> > 
> > 
> 
> Regards,
> Daniel
> -- 
> |: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
> |: https://libvirt.org         -o-            https://fstop138.berrange.com :|
> |: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|
Daniel P. Berrangé March 16, 2018, 9:42 a.m. UTC | #3
On Fri, Mar 16, 2018 at 10:11:57AM +0800, Boqun Feng wrote:
> On Wed, Mar 14, 2018 at 01:01:30PM +0000, Daniel P. Berrangé wrote:
> > On Wed, Mar 14, 2018 at 03:29:59PM +0800, Boqun Feng wrote:
> > > A new cpu model called "KNM" is added to model Knights Mill processors.
> > 
> > Why the obscure acryonym? Can't we just call it KnightsMill so it is
> > obvious what it is to everyone, as we've done for all other Intel
> > CPU model names in the past.
> > 
> 
> Ah.. my bad, good point! I will rename to "KnightsMill" in the next
> version.
> 
> > > Compared to "Skylake-Server" cpu model, the following features are
> > > added:
> > > 
> > > 	avx512_4vnniw avx512_4fmaps avx512pf avx512er avx512_vpopcntdq
> > > 
> > > and the following features are removed:
> > > 
> > > 	pcid invpcid clflushopt avx512dq avx512bw axv512cd clwb smap rtm
> > > 	mpx xsavec xgetbv1 hle
> > 
> > "pcid" was one of the features critical to mitigate performance
> > downside of the Meltdown bug fix in guests. Will Knights Mill have
> > a fix for Meltdown in hardware, to avoid the need for split table
> > pages and thus avoid the perf hit in guests ?
> > 
> 
> I got the confirmation the Knights Mill doesn't have PCID at all. For
> the alternative fix for Meltdown in hardware, I will ask around and info
> you if I get something.

No need to wait for an answer to that question - if 'pcid' is not
in hardware, we simply have to accept whatever the answer is. So
just repost with the changed name.

Regards,
Daniel
diff mbox series

Patch

diff --git a/target/i386/cpu.c b/target/i386/cpu.c
index 2c04645ceac9..215a9ee6026a 100644
--- a/target/i386/cpu.c
+++ b/target/i386/cpu.c
@@ -1795,6 +1795,48 @@  static X86CPUDefinition builtin_x86_defs[] = {
         .xlevel = 0x80000008,
         .model_id = "Intel Xeon Processor (Skylake, IBRS)",
     },
+    {
+        .name = "KNM",
+        .level = 0xd,
+        .vendor = CPUID_VENDOR_INTEL,
+        .family = 6,
+        .model = 133,
+        .stepping = 0,
+        .features[FEAT_1_EDX] =
+            CPUID_VME | CPUID_SS | CPUID_SSE2 | CPUID_SSE | CPUID_FXSR |
+            CPUID_MMX | CPUID_CLFLUSH | CPUID_PSE36 | CPUID_PAT | CPUID_CMOV |
+            CPUID_MCA | CPUID_PGE | CPUID_MTRR | CPUID_SEP | CPUID_APIC |
+            CPUID_CX8 | CPUID_MCE | CPUID_PAE | CPUID_MSR | CPUID_TSC |
+            CPUID_PSE | CPUID_DE | CPUID_FP87,
+        .features[FEAT_1_ECX] =
+            CPUID_EXT_AVX | CPUID_EXT_XSAVE | CPUID_EXT_AES |
+            CPUID_EXT_POPCNT | CPUID_EXT_X2APIC | CPUID_EXT_SSE42 |
+            CPUID_EXT_SSE41 | CPUID_EXT_CX16 | CPUID_EXT_SSSE3 |
+            CPUID_EXT_PCLMULQDQ | CPUID_EXT_SSE3 |
+            CPUID_EXT_TSC_DEADLINE_TIMER | CPUID_EXT_FMA | CPUID_EXT_MOVBE |
+            CPUID_EXT_F16C | CPUID_EXT_RDRAND,
+        .features[FEAT_8000_0001_EDX] =
+            CPUID_EXT2_LM | CPUID_EXT2_PDPE1GB | CPUID_EXT2_RDTSCP |
+            CPUID_EXT2_NX | CPUID_EXT2_SYSCALL,
+        .features[FEAT_8000_0001_ECX] =
+            CPUID_EXT3_ABM | CPUID_EXT3_LAHF_LM | CPUID_EXT3_3DNOWPREFETCH,
+        .features[FEAT_7_0_EBX] =
+            CPUID_7_0_EBX_FSGSBASE | CPUID_7_0_EBX_BMI1 | CPUID_7_0_EBX_AVX2 |
+            CPUID_7_0_EBX_SMEP | CPUID_7_0_EBX_BMI2 | CPUID_7_0_EBX_ERMS |
+            CPUID_7_0_EBX_RDSEED | CPUID_7_0_EBX_ADX | CPUID_7_0_EBX_AVX512F |
+            CPUID_7_0_EBX_AVX512CD | CPUID_7_0_EBX_AVX512PF |
+            CPUID_7_0_EBX_AVX512ER,
+        .features[FEAT_7_0_ECX] =
+            CPUID_7_0_ECX_AVX512_VPOPCNTDQ,
+        .features[FEAT_7_0_EDX] =
+            CPUID_7_0_EDX_AVX512_4VNNIW | CPUID_7_0_EDX_AVX512_4FMAPS,
+        .features[FEAT_XSAVE] =
+            CPUID_XSAVE_XSAVEOPT,
+        .features[FEAT_6_EAX] =
+            CPUID_6_EAX_ARAT,
+        .xlevel = 0x80000008,
+        .model_id = "Intel Xeon Phi Processor (Knights Mill)",
+    },
     {
         .name = "Opteron_G1",
         .level = 5,