All of lore.kernel.org
 help / color / mirror / Atom feed
* Re: kvm: RDTSCP on AMD
@ 2018-12-10 18:13 Borislav Petkov
  2018-12-10 18:37 ` Eduardo Habkost
  0 siblings, 1 reply; 22+ messages in thread
From: Borislav Petkov @ 2018-12-10 18:13 UTC (permalink / raw)
  To: Paolo Bonzini
  Cc: Eduardo Habkost, Jörg Rödel, Andre Przywara, kvm ML,
	lkml, Tom Lendacky

Reviving an old thread here.

On Wed, Jul 06, 2016 at 11:27:16PM +0200, Paolo Bonzini wrote:
> On 06/07/2016 19:34, Eduardo Habkost wrote:
> >> > Nothing is needed in the kernel actually.  You can skip the intercept
> >> > by running the guest with MSR_TSC_AUX set to the guest's expected value.
> >> >  Which KVM does, except that it's botched so I need to apply the
> >> > patch in https://lkml.org/lkml/2016/4/13/802.
> > Do you mean -cpu Opteron_G*,+rdtscp will be buggy on Linux v4.5?
> > (v4.5 reports rdtscp as supported in GET_SUPPORTED_CPUID)
> > 
> > Can we do something to make QEMU detect the buggy kernel before
> > allowing rdtscp to be enabled, or should we just tell people to
> > upgrade their kernel?
> 
> We usually just tell people to use the latest stable kernel.
> 
> Adding new CPU models is not a big deal, in fact it's almost easier than
> getting compat properties right. :)

Ok, can we finally revert

  33b5e8c03ae7 ("target-i386: Disable rdtscp on Opteron_G* CPU models")

in the qemu tree?

Three years should be enough by now for

  46896c73c1a4 ("KVM: svm: add support for RDTSCP")

to have percolated downstream.

Btw, its commit message talks about Linux not using RDTSCP but that will
change soon. :-)

Oh, and the EPYC qemu CPU model has CPUID_EXT2_RDTSCP and works just
fine when patching in RDTSCP:

[    0.543197] apply_alternatives: feat: 3*32+18, old: (read_tsc+0x0/0x10 (ffffffff8101d1c0) len: 5), repl: (ffffffff824e6d33, len: 5), pad: 3
[    0.544448] ffffffff8101d1c0: old_insn: 0f 31 90 90 90
[    0.545023] ffffffff824e6d33: rpl_insn: 0f ae e8 0f 31
[    0.545598] ffffffff8101d1c0: final_insn: 0f ae e8 0f 31
[    0.546193] apply_alternatives: feat: 1*32+27, old: (read_tsc+0x0/0x10 (ffffffff8101d1c0) len: 5), repl: (ffffffff824e6d38, len: 3), pad: 3
[    0.547195] ffffffff8101d1c0: old_insn: 0f ae e8 0f 31
[    0.547775] ffffffff824e6d38: rpl_insn: 0f 01 f9
[    0.548307] ffffffff8101d1c0: final_insn: 0f 01 f9 66 90

That final_insn which gets patched to by the alternatives is

ffffffff8101d1c0:       0f 01 f9                rdtscp
ffffffff8101d1c3:       66 90                   xchg %ax,%ax

Thx.

-- 
Regards/Gruss,
    Boris.

Good mailing practices for 400: avoid top-posting and trim the reply.

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: kvm: RDTSCP on AMD
  2018-12-10 18:13 kvm: RDTSCP on AMD Borislav Petkov
@ 2018-12-10 18:37 ` Eduardo Habkost
  2018-12-10 18:41   ` Borislav Petkov
  0 siblings, 1 reply; 22+ messages in thread
From: Eduardo Habkost @ 2018-12-10 18:37 UTC (permalink / raw)
  To: Borislav Petkov
  Cc: Paolo Bonzini, Jörg Rödel, Andre Przywara, kvm ML,
	lkml, Tom Lendacky

On Mon, Dec 10, 2018 at 07:13:28PM +0100, Borislav Petkov wrote:
> Reviving an old thread here.
> 
> On Wed, Jul 06, 2016 at 11:27:16PM +0200, Paolo Bonzini wrote:
> > On 06/07/2016 19:34, Eduardo Habkost wrote:
> > >> > Nothing is needed in the kernel actually.  You can skip the intercept
> > >> > by running the guest with MSR_TSC_AUX set to the guest's expected value.
> > >> >  Which KVM does, except that it's botched so I need to apply the
> > >> > patch in https://lkml.org/lkml/2016/4/13/802.
> > > Do you mean -cpu Opteron_G*,+rdtscp will be buggy on Linux v4.5?
> > > (v4.5 reports rdtscp as supported in GET_SUPPORTED_CPUID)
> > > 
> > > Can we do something to make QEMU detect the buggy kernel before
> > > allowing rdtscp to be enabled, or should we just tell people to
> > > upgrade their kernel?
> > 
> > We usually just tell people to use the latest stable kernel.
> > 
> > Adding new CPU models is not a big deal, in fact it's almost easier than
> > getting compat properties right. :)
> 
> Ok, can we finally revert
> 
>   33b5e8c03ae7 ("target-i386: Disable rdtscp on Opteron_G* CPU models")
> 
> in the qemu tree?
> 
> Three years should be enough by now for
> 
>   46896c73c1a4 ("KVM: svm: add support for RDTSCP")
> 
> to have percolated downstream.

That's Linux v4.5, released in March 2016.

It isn't as simply as reverting commit 33b5e8c03ae7, but we can
surely re-add RDTSCP on pc-*-4.0 and newer.

I thought we added documentation mentioning the minimum kernel
version required by QEMU, but I can't find it.  In either case,
it seems reasonable to require Linux 4.5 or newer on newer
machine-types.

-- 
Eduardo

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: kvm: RDTSCP on AMD
  2018-12-10 18:37 ` Eduardo Habkost
@ 2018-12-10 18:41   ` Borislav Petkov
  2018-12-10 19:06     ` Eduardo Habkost
  2018-12-10 19:47     ` kvm: RDTSCP on AMD Eduardo Habkost
  0 siblings, 2 replies; 22+ messages in thread
From: Borislav Petkov @ 2018-12-10 18:41 UTC (permalink / raw)
  To: Eduardo Habkost
  Cc: Paolo Bonzini, Jörg Rödel, Andre Przywara, kvm ML,
	lkml, Tom Lendacky

On Mon, Dec 10, 2018 at 04:37:30PM -0200, Eduardo Habkost wrote:
> It isn't as simply as reverting commit 33b5e8c03ae7, but we can
> surely re-add RDTSCP on pc-*-4.0 and newer.

Sure. If you could only point me to an example how to add that to
pc-*-4.0 and newer, I'll gladly cook up a patch and test it.

> I thought we added documentation mentioning the minimum kernel
> version required by QEMU, but I can't find it.  In either case,
> it seems reasonable to require Linux 4.5 or newer on newer
> machine-types.

When you say "require" does that mean, one puts it in a text file
somewhere in the qemu sources or do we enforce it somehow?

Thx.

-- 
Regards/Gruss,
    Boris.

Good mailing practices for 400: avoid top-posting and trim the reply.

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: kvm: RDTSCP on AMD
  2018-12-10 18:41   ` Borislav Petkov
@ 2018-12-10 19:06     ` Eduardo Habkost
  2018-12-10 19:42       ` Borislav Petkov
  2018-12-10 19:47     ` kvm: RDTSCP on AMD Eduardo Habkost
  1 sibling, 1 reply; 22+ messages in thread
From: Eduardo Habkost @ 2018-12-10 19:06 UTC (permalink / raw)
  To: Borislav Petkov
  Cc: Paolo Bonzini, Jörg Rödel, Andre Przywara, kvm ML,
	lkml, Tom Lendacky

On Mon, Dec 10, 2018 at 07:41:53PM +0100, Borislav Petkov wrote:
> On Mon, Dec 10, 2018 at 04:37:30PM -0200, Eduardo Habkost wrote:
> > It isn't as simply as reverting commit 33b5e8c03ae7, but we can
> > surely re-add RDTSCP on pc-*-4.0 and newer.
> 
> Sure. If you could only point me to an example how to add that to
> pc-*-4.0 and newer, I'll gladly cook up a patch and test it.
> 
> > I thought we added documentation mentioning the minimum kernel
> > version required by QEMU, but I can't find it.  In either case,
> > it seems reasonable to require Linux 4.5 or newer on newer
> > machine-types.
> 
> When you say "require" does that mean, one puts it in a text file
> somewhere in the qemu sources or do we enforce it somehow?

I mean documenting it.  We already have code that will print
warnings if a feature isn't available.

See my previous attempt to document the minimum kernel version
at <https://www.mail-archive.com/qemu-devel@nongnu.org/msg486559.html>.

-- 
Eduardo

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: kvm: RDTSCP on AMD
  2018-12-10 19:06     ` Eduardo Habkost
@ 2018-12-10 19:42       ` Borislav Petkov
  2018-12-10 20:08         ` Eduardo Habkost
  0 siblings, 1 reply; 22+ messages in thread
From: Borislav Petkov @ 2018-12-10 19:42 UTC (permalink / raw)
  To: Eduardo Habkost
  Cc: Paolo Bonzini, Jörg Rödel, Andre Przywara, kvm ML,
	lkml, Tom Lendacky

On Mon, Dec 10, 2018 at 05:06:00PM -0200, Eduardo Habkost wrote:
> I mean documenting it.  We already have code that will print
> warnings if a feature isn't available.
> 
> See my previous attempt to document the minimum kernel version
> at <https://www.mail-archive.com/qemu-devel@nongnu.org/msg486559.html>.

Something like this?

I still have no clue how to add RDTSCP on pc-*-4.0 and newer.

Thx.

---
diff --git a/qemu-doc.texi b/qemu-doc.texi
index f7ad1dfe4b69..913b2ef68d54 100644
--- a/qemu-doc.texi
+++ b/qemu-doc.texi
@@ -37,6 +37,7 @@
 * QEMU System emulator for non PC targets::
 * QEMU Guest Agent::
 * QEMU User space emulator::
+* System requirements::
 * Implementation notes::
 * Deprecated features::
 * Supported build platforms::
@@ -2813,6 +2814,13 @@ Act as if the host page size was 'pagesize' bytes
 Run the emulation in single step mode.
 @end table
 
+@node System requirements
+@chapter System requirements
+
+@section KVM kernel module
+
+On x86_64 hosts, the default set of CPU features enabled by the KVM accelerator
+require the host to be running Linux v4.5 or newer.
 
 @include qemu-tech.texi
 
diff --git a/target/i386/cpu.c b/target/i386/cpu.c
index f81d35e1f914..34bb5b74136d 100644
--- a/target/i386/cpu.c
+++ b/target/i386/cpu.c
@@ -2706,7 +2706,6 @@ static X86CPUDefinition builtin_x86_defs[] = {
             CPUID_DE | CPUID_FP87,
         .features[FEAT_1_ECX] =
             CPUID_EXT_CX16 | CPUID_EXT_SSE3,
-        /* Missing: CPUID_EXT2_RDTSCP */
         .features[FEAT_8000_0001_EDX] =
             CPUID_EXT2_LM | CPUID_EXT2_NX | CPUID_EXT2_SYSCALL,
         .features[FEAT_8000_0001_ECX] =
@@ -2730,9 +2729,9 @@ static X86CPUDefinition builtin_x86_defs[] = {
         .features[FEAT_1_ECX] =
             CPUID_EXT_POPCNT | CPUID_EXT_CX16 | CPUID_EXT_MONITOR |
             CPUID_EXT_SSE3,
-        /* Missing: CPUID_EXT2_RDTSCP */
         .features[FEAT_8000_0001_EDX] =
-            CPUID_EXT2_LM | CPUID_EXT2_NX | CPUID_EXT2_SYSCALL,
+            CPUID_EXT2_LM | CPUID_EXT2_NX | CPUID_EXT2_SYSCALL |
+	    CPUID_EXT2_RDTSCP,
         .features[FEAT_8000_0001_ECX] =
             CPUID_EXT3_MISALIGNSSE | CPUID_EXT3_SSE4A |
             CPUID_EXT3_ABM | CPUID_EXT3_SVM | CPUID_EXT3_LAHF_LM,
@@ -2757,10 +2756,9 @@ static X86CPUDefinition builtin_x86_defs[] = {
             CPUID_EXT_POPCNT | CPUID_EXT_SSE42 | CPUID_EXT_SSE41 |
             CPUID_EXT_CX16 | CPUID_EXT_SSSE3 | CPUID_EXT_PCLMULQDQ |
             CPUID_EXT_SSE3,
-        /* Missing: CPUID_EXT2_RDTSCP */
         .features[FEAT_8000_0001_EDX] =
             CPUID_EXT2_LM | CPUID_EXT2_PDPE1GB | CPUID_EXT2_NX |
-            CPUID_EXT2_SYSCALL,
+            CPUID_EXT2_SYSCALL | CPUID_EXT2_RDTSCP,
         .features[FEAT_8000_0001_ECX] =
             CPUID_EXT3_FMA4 | CPUID_EXT3_XOP |
             CPUID_EXT3_3DNOWPREFETCH | CPUID_EXT3_MISALIGNSSE |
@@ -2788,10 +2786,9 @@ static X86CPUDefinition builtin_x86_defs[] = {
             CPUID_EXT_AES | CPUID_EXT_POPCNT | CPUID_EXT_SSE42 |
             CPUID_EXT_SSE41 | CPUID_EXT_CX16 | CPUID_EXT_FMA |
             CPUID_EXT_SSSE3 | CPUID_EXT_PCLMULQDQ | CPUID_EXT_SSE3,
-        /* Missing: CPUID_EXT2_RDTSCP */
         .features[FEAT_8000_0001_EDX] =
             CPUID_EXT2_LM | CPUID_EXT2_PDPE1GB | CPUID_EXT2_NX |
-            CPUID_EXT2_SYSCALL,
+            CPUID_EXT2_SYSCALL | CPUID_EXT2_RDTSCP,
         .features[FEAT_8000_0001_ECX] =
             CPUID_EXT3_TBM | CPUID_EXT3_FMA4 | CPUID_EXT3_XOP |
             CPUID_EXT3_3DNOWPREFETCH | CPUID_EXT3_MISALIGNSSE |

-- 
Regards/Gruss,
    Boris.

Good mailing practices for 400: avoid top-posting and trim the reply.

^ permalink raw reply related	[flat|nested] 22+ messages in thread

* Re: kvm: RDTSCP on AMD
  2018-12-10 18:41   ` Borislav Petkov
  2018-12-10 19:06     ` Eduardo Habkost
@ 2018-12-10 19:47     ` Eduardo Habkost
  2018-12-10 20:16       ` Borislav Petkov
  1 sibling, 1 reply; 22+ messages in thread
From: Eduardo Habkost @ 2018-12-10 19:47 UTC (permalink / raw)
  To: Borislav Petkov
  Cc: Paolo Bonzini, Jörg Rödel, Andre Przywara, kvm ML,
	lkml, Tom Lendacky

On Mon, Dec 10, 2018 at 07:41:53PM +0100, Borislav Petkov wrote:
> On Mon, Dec 10, 2018 at 04:37:30PM -0200, Eduardo Habkost wrote:
> > It isn't as simply as reverting commit 33b5e8c03ae7, but we can
> > surely re-add RDTSCP on pc-*-4.0 and newer.
> 
> Sure. If you could only point me to an example how to add that to
> pc-*-4.0 and newer, I'll gladly cook up a patch and test it.

Sorry, I forgot to reply to this part.

See commit 33b5e8c03ae7 for reference.  The differences will be:
* Instead of removing RDTSCP from builtin_x86_defs, you'll be adding it.
* Instead of adding rdtscp=on entries to PC_COMPAT_2_4, you'll
  be adding rdtscp=off entries to PC_COMPAT_3_1.

PC_COMPAT_3_1 is added by the patch that creates the 4.0
machine-types.  You can find it on my machine-next branch at:

  http://github.com/ehabkost/qemu

-- 
Eduardo

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: kvm: RDTSCP on AMD
  2018-12-10 19:42       ` Borislav Petkov
@ 2018-12-10 20:08         ` Eduardo Habkost
  2018-12-10 20:39           ` Borislav Petkov
  2018-12-11 10:38           ` Daniel P. Berrangé
  0 siblings, 2 replies; 22+ messages in thread
From: Eduardo Habkost @ 2018-12-10 20:08 UTC (permalink / raw)
  To: Borislav Petkov
  Cc: Paolo Bonzini, Jörg Rödel, Andre Przywara, kvm ML,
	lkml, Tom Lendacky, Daniel P. Berrange, Eric Blake

On Mon, Dec 10, 2018 at 08:42:58PM +0100, Borislav Petkov wrote:
> On Mon, Dec 10, 2018 at 05:06:00PM -0200, Eduardo Habkost wrote:
> > I mean documenting it.  We already have code that will print
> > warnings if a feature isn't available.
> > 
> > See my previous attempt to document the minimum kernel version
> > at <https://www.mail-archive.com/qemu-devel@nongnu.org/msg486559.html>.
> 
> Something like this?
> 
> I still have no clue how to add RDTSCP on pc-*-4.0 and newer.

qemu.git master have no PC_COMPAT_3_1 and pc-*-4.0 machine-types
yet.  I've sent another reply with additional pointers.

> 
> Thx.
> 
> ---
> diff --git a/qemu-doc.texi b/qemu-doc.texi
> index f7ad1dfe4b69..913b2ef68d54 100644
> --- a/qemu-doc.texi
> +++ b/qemu-doc.texi
> @@ -37,6 +37,7 @@
>  * QEMU System emulator for non PC targets::
>  * QEMU Guest Agent::
>  * QEMU User space emulator::
> +* System requirements::
>  * Implementation notes::
>  * Deprecated features::
>  * Supported build platforms::
> @@ -2813,6 +2814,13 @@ Act as if the host page size was 'pagesize' bytes
>  Run the emulation in single step mode.
>  @end table
>  
> +@node System requirements
> +@chapter System requirements
> +
> +@section KVM kernel module
> +
> +On x86_64 hosts, the default set of CPU features enabled by the KVM accelerator
> +require the host to be running Linux v4.5 or newer.
>  

Sounds good, but it would be nice to document what exactly makes
Linux 4.5+ necessary.  e.g.:

| On x86_64 hosts, it is recommended to run Linux 4.5 or newer on
| the host when using the KVM accelerator.
| 
| The Opteron_G2, OpteronG3, Opteron_G4, and Opteron_G5 CPU
| models require KVM support for RDTSCP, which was added on
| Linux 4.5.

I'm CCing some people who may help review English grammar and
style.

-- 
Eduardo

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: kvm: RDTSCP on AMD
  2018-12-10 19:47     ` kvm: RDTSCP on AMD Eduardo Habkost
@ 2018-12-10 20:16       ` Borislav Petkov
  0 siblings, 0 replies; 22+ messages in thread
From: Borislav Petkov @ 2018-12-10 20:16 UTC (permalink / raw)
  To: Eduardo Habkost
  Cc: Paolo Bonzini, Jörg Rödel, Andre Przywara, kvm ML,
	lkml, Tom Lendacky

On Mon, Dec 10, 2018 at 05:47:25PM -0200, Eduardo Habkost wrote:
> On Mon, Dec 10, 2018 at 07:41:53PM +0100, Borislav Petkov wrote:
> > On Mon, Dec 10, 2018 at 04:37:30PM -0200, Eduardo Habkost wrote:
> > > It isn't as simply as reverting commit 33b5e8c03ae7, but we can
> > > surely re-add RDTSCP on pc-*-4.0 and newer.
> > 
> > Sure. If you could only point me to an example how to add that to
> > pc-*-4.0 and newer, I'll gladly cook up a patch and test it.
> 
> Sorry, I forgot to reply to this part.
> 
> See commit 33b5e8c03ae7 for reference.  The differences will be:
> * Instead of removing RDTSCP from builtin_x86_defs, you'll be adding it.
> * Instead of adding rdtscp=on entries to PC_COMPAT_2_4, you'll
>   be adding rdtscp=off entries to PC_COMPAT_3_1.
> 
> PC_COMPAT_3_1 is added by the patch that creates the 4.0
> machine-types.  You can find it on my machine-next branch at:
> 
>   http://github.com/ehabkost/qemu

Thanks for the patient explanation, diff below ontop of your branch.

It is notable to point out that Opteron_G2 - it being family 0xf, model
6 - should not deal with RDTSCP as it doesn't have it.

Although looking at the docs, they say it does but I *have* a K8 laptop
which I just checked and it *doesn't* have RDTSCP in CPUID. So lemme
clarify that aspect first with folks. :)

---
diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
index 9d29c4b1df2a..ebc28e816b04 100644
--- a/include/hw/i386/pc.h
+++ b/include/hw/i386/pc.h
@@ -296,6 +296,19 @@ bool e820_get_entry(int, uint32_t, uint64_t *, uint64_t *);
 
 #define PC_COMPAT_3_1 \
     HW_COMPAT_3_1 \
+    {\
+        .driver   = "Opteron_G3" "-" TYPE_X86_CPU,\
+        .property = "rdtscp",\
+        .value    = "off",\
+    },{\
+        .driver   = "Opteron_G4" "-" TYPE_X86_CPU,\
+        .property = "rdtscp",\
+        .value    = "off",\
+    },{\
+        .driver   = "Opteron_G5" "-" TYPE_X86_CPU,\
+        .property = "rdtscp",\
+        .value    = "off",\
+    },
 
 #define PC_COMPAT_3_0 \
     HW_COMPAT_3_0 \
@@ -527,10 +540,6 @@ bool e820_get_entry(int, uint32_t, uint64_t *, uint64_t *);
         .driver   = "qemu32" "-" TYPE_X86_CPU,\
         .property = "popcnt",\
         .value    = "on",\
-    },{\
-        .driver   = "Opteron_G2" "-" TYPE_X86_CPU,\
-        .property = "rdtscp",\
-        .value    = "on",\
     },{\
         .driver   = "Opteron_G3" "-" TYPE_X86_CPU,\
         .property = "rdtscp",\
diff --git a/qemu-doc.texi b/qemu-doc.texi
index f7ad1dfe4b69..913b2ef68d54 100644
--- a/qemu-doc.texi
+++ b/qemu-doc.texi
@@ -37,6 +37,7 @@
 * QEMU System emulator for non PC targets::
 * QEMU Guest Agent::
 * QEMU User space emulator::
+* System requirements::
 * Implementation notes::
 * Deprecated features::
 * Supported build platforms::
@@ -2813,6 +2814,13 @@ Act as if the host page size was 'pagesize' bytes
 Run the emulation in single step mode.
 @end table
 
+@node System requirements
+@chapter System requirements
+
+@section KVM kernel module
+
+On x86_64 hosts, the default set of CPU features enabled by the KVM accelerator
+require the host to be running Linux v4.5 or newer.
 
 @include qemu-tech.texi
 
diff --git a/target/i386/cpu.c b/target/i386/cpu.c
index f81d35e1f914..a7def11b27cd 100644
--- a/target/i386/cpu.c
+++ b/target/i386/cpu.c
@@ -2706,7 +2706,6 @@ static X86CPUDefinition builtin_x86_defs[] = {
             CPUID_DE | CPUID_FP87,
         .features[FEAT_1_ECX] =
             CPUID_EXT_CX16 | CPUID_EXT_SSE3,
-        /* Missing: CPUID_EXT2_RDTSCP */
         .features[FEAT_8000_0001_EDX] =
             CPUID_EXT2_LM | CPUID_EXT2_NX | CPUID_EXT2_SYSCALL,
         .features[FEAT_8000_0001_ECX] =
@@ -2730,9 +2729,9 @@ static X86CPUDefinition builtin_x86_defs[] = {
         .features[FEAT_1_ECX] =
             CPUID_EXT_POPCNT | CPUID_EXT_CX16 | CPUID_EXT_MONITOR |
             CPUID_EXT_SSE3,
-        /* Missing: CPUID_EXT2_RDTSCP */
         .features[FEAT_8000_0001_EDX] =
-            CPUID_EXT2_LM | CPUID_EXT2_NX | CPUID_EXT2_SYSCALL,
+            CPUID_EXT2_LM | CPUID_EXT2_NX | CPUID_EXT2_SYSCALL |
+            CPUID_EXT2_RDTSCP,
         .features[FEAT_8000_0001_ECX] =
             CPUID_EXT3_MISALIGNSSE | CPUID_EXT3_SSE4A |
             CPUID_EXT3_ABM | CPUID_EXT3_SVM | CPUID_EXT3_LAHF_LM,
@@ -2757,10 +2756,9 @@ static X86CPUDefinition builtin_x86_defs[] = {
             CPUID_EXT_POPCNT | CPUID_EXT_SSE42 | CPUID_EXT_SSE41 |
             CPUID_EXT_CX16 | CPUID_EXT_SSSE3 | CPUID_EXT_PCLMULQDQ |
             CPUID_EXT_SSE3,
-        /* Missing: CPUID_EXT2_RDTSCP */
         .features[FEAT_8000_0001_EDX] =
             CPUID_EXT2_LM | CPUID_EXT2_PDPE1GB | CPUID_EXT2_NX |
-            CPUID_EXT2_SYSCALL,
+            CPUID_EXT2_SYSCALL | CPUID_EXT2_RDTSCP,
         .features[FEAT_8000_0001_ECX] =
             CPUID_EXT3_FMA4 | CPUID_EXT3_XOP |
             CPUID_EXT3_3DNOWPREFETCH | CPUID_EXT3_MISALIGNSSE |
@@ -2788,10 +2786,9 @@ static X86CPUDefinition builtin_x86_defs[] = {
             CPUID_EXT_AES | CPUID_EXT_POPCNT | CPUID_EXT_SSE42 |
             CPUID_EXT_SSE41 | CPUID_EXT_CX16 | CPUID_EXT_FMA |
             CPUID_EXT_SSSE3 | CPUID_EXT_PCLMULQDQ | CPUID_EXT_SSE3,
-        /* Missing: CPUID_EXT2_RDTSCP */
         .features[FEAT_8000_0001_EDX] =
             CPUID_EXT2_LM | CPUID_EXT2_PDPE1GB | CPUID_EXT2_NX |
-            CPUID_EXT2_SYSCALL,
+            CPUID_EXT2_SYSCALL | CPUID_EXT2_RDTSCP,
         .features[FEAT_8000_0001_ECX] =
             CPUID_EXT3_TBM | CPUID_EXT3_FMA4 | CPUID_EXT3_XOP |
             CPUID_EXT3_3DNOWPREFETCH | CPUID_EXT3_MISALIGNSSE |

-- 
Regards/Gruss,
    Boris.

Good mailing practices for 400: avoid top-posting and trim the reply.

^ permalink raw reply related	[flat|nested] 22+ messages in thread

* Re: kvm: RDTSCP on AMD
  2018-12-10 20:08         ` Eduardo Habkost
@ 2018-12-10 20:39           ` Borislav Petkov
  2018-12-11 10:38           ` Daniel P. Berrangé
  1 sibling, 0 replies; 22+ messages in thread
From: Borislav Petkov @ 2018-12-10 20:39 UTC (permalink / raw)
  To: Eduardo Habkost
  Cc: Paolo Bonzini, Jörg Rödel, Andre Przywara, kvm ML,
	lkml, Tom Lendacky, Daniel P. Berrange, Eric Blake

On Mon, Dec 10, 2018 at 06:08:43PM -0200, Eduardo Habkost wrote:
> | The Opteron_G2, OpteronG3, Opteron_G4, and Opteron_G5 CPU
> | models require KVM support for RDTSCP, which was added on
> | Linux 4.5.

I've added that to the current diff:

"The OpteronG[345] CPU models require KVM support for RDTSCP, which was
added with Linux 4.5."

In the meantime, I tried executing RDTSCP on a K8 laptop and it gave
SIGILL so I'd say the AMD docs have a typo and family 0xf - at least the
A-E revisions of which model 6 is a part of - doesn't have RDTSCP.

But let's see...

Thx.

-- 
Regards/Gruss,
    Boris.

Good mailing practices for 400: avoid top-posting and trim the reply.

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: kvm: RDTSCP on AMD
  2018-12-10 20:08         ` Eduardo Habkost
  2018-12-10 20:39           ` Borislav Petkov
@ 2018-12-11 10:38           ` Daniel P. Berrangé
  2018-12-11 11:55             ` Eduardo Habkost
  1 sibling, 1 reply; 22+ messages in thread
From: Daniel P. Berrangé @ 2018-12-11 10:38 UTC (permalink / raw)
  To: Eduardo Habkost
  Cc: Borislav Petkov, Paolo Bonzini, Jörg Rödel,
	Andre Przywara, kvm ML, lkml, Tom Lendacky, Eric Blake

On Mon, Dec 10, 2018 at 06:08:43PM -0200, Eduardo Habkost wrote:
> On Mon, Dec 10, 2018 at 08:42:58PM +0100, Borislav Petkov wrote:
> > On Mon, Dec 10, 2018 at 05:06:00PM -0200, Eduardo Habkost wrote:
> > > I mean documenting it.  We already have code that will print
> > > warnings if a feature isn't available.
> > > 
> > > See my previous attempt to document the minimum kernel version
> > > at <https://www.mail-archive.com/qemu-devel@nongnu.org/msg486559.html>.
> > 
> > Something like this?
> > 
> > I still have no clue how to add RDTSCP on pc-*-4.0 and newer.
> 
> qemu.git master have no PC_COMPAT_3_1 and pc-*-4.0 machine-types
> yet.  I've sent another reply with additional pointers.
> 
> > 
> > Thx.
> > 
> > ---
> > diff --git a/qemu-doc.texi b/qemu-doc.texi
> > index f7ad1dfe4b69..913b2ef68d54 100644
> > --- a/qemu-doc.texi
> > +++ b/qemu-doc.texi
> > @@ -37,6 +37,7 @@
> >  * QEMU System emulator for non PC targets::
> >  * QEMU Guest Agent::
> >  * QEMU User space emulator::
> > +* System requirements::
> >  * Implementation notes::
> >  * Deprecated features::
> >  * Supported build platforms::
> > @@ -2813,6 +2814,13 @@ Act as if the host page size was 'pagesize' bytes
> >  Run the emulation in single step mode.
> >  @end table
> >  
> > +@node System requirements
> > +@chapter System requirements
> > +
> > +@section KVM kernel module
> > +
> > +On x86_64 hosts, the default set of CPU features enabled by the KVM accelerator
> > +require the host to be running Linux v4.5 or newer.
> >  
> 
> Sounds good, but it would be nice to document what exactly makes
> Linux 4.5+ necessary.  e.g.:
> 
> | On x86_64 hosts, it is recommended to run Linux 4.5 or newer on
> | the host when using the KVM accelerator.
> | 
> | The Opteron_G2, OpteronG3, Opteron_G4, and Opteron_G5 CPU
> | models require KVM support for RDTSCP, which was added on
> | Linux 4.5.
> 
> I'm CCing some people who may help review English grammar and
> style.

Note that QEMU has a declared supported platform list which is used to
set the minimum software versions required.

   https://qemu.weilnetz.de/doc/qemu-doc.html#Linux-OS

Based on that policy, the Linux distros we aim to support have the
following kernel versions:

  - Debian Jessie: 4.5
  - Debian Stretch: 4.5
  - RHEL-7: 3.10
  - Ubuntu LTS (Xenial): 4.5
  - OpenSUSE Leap 15: 4.12.14

So we can't require Linux 4.5 as a minimum version at this time.

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 :|

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: kvm: RDTSCP on AMD
  2018-12-11 10:38           ` Daniel P. Berrangé
@ 2018-12-11 11:55             ` Eduardo Habkost
  2018-12-11 14:35               ` Daniel P. Berrangé
  2018-12-11 15:23               ` Paolo Bonzini
  0 siblings, 2 replies; 22+ messages in thread
From: Eduardo Habkost @ 2018-12-11 11:55 UTC (permalink / raw)
  To: Daniel P. Berrangé
  Cc: Borislav Petkov, Paolo Bonzini, Jörg Rödel,
	Andre Przywara, kvm ML, lkml, Tom Lendacky, Eric Blake

On Tue, Dec 11, 2018 at 10:38:39AM +0000, Daniel P. Berrangé wrote:
> On Mon, Dec 10, 2018 at 06:08:43PM -0200, Eduardo Habkost wrote:
> > On Mon, Dec 10, 2018 at 08:42:58PM +0100, Borislav Petkov wrote:
> > > On Mon, Dec 10, 2018 at 05:06:00PM -0200, Eduardo Habkost wrote:
> > > > I mean documenting it.  We already have code that will print
> > > > warnings if a feature isn't available.
> > > > 
> > > > See my previous attempt to document the minimum kernel version
> > > > at <https://www.mail-archive.com/qemu-devel@nongnu.org/msg486559.html>.
> > > 
> > > Something like this?
> > > 
> > > I still have no clue how to add RDTSCP on pc-*-4.0 and newer.
> > 
> > qemu.git master have no PC_COMPAT_3_1 and pc-*-4.0 machine-types
> > yet.  I've sent another reply with additional pointers.
> > 
> > > 
> > > Thx.
> > > 
> > > ---
> > > diff --git a/qemu-doc.texi b/qemu-doc.texi
> > > index f7ad1dfe4b69..913b2ef68d54 100644
> > > --- a/qemu-doc.texi
> > > +++ b/qemu-doc.texi
> > > @@ -37,6 +37,7 @@
> > >  * QEMU System emulator for non PC targets::
> > >  * QEMU Guest Agent::
> > >  * QEMU User space emulator::
> > > +* System requirements::
> > >  * Implementation notes::
> > >  * Deprecated features::
> > >  * Supported build platforms::
> > > @@ -2813,6 +2814,13 @@ Act as if the host page size was 'pagesize' bytes
> > >  Run the emulation in single step mode.
> > >  @end table
> > >  
> > > +@node System requirements
> > > +@chapter System requirements
> > > +
> > > +@section KVM kernel module
> > > +
> > > +On x86_64 hosts, the default set of CPU features enabled by the KVM accelerator
> > > +require the host to be running Linux v4.5 or newer.
> > >  
> > 
> > Sounds good, but it would be nice to document what exactly makes
> > Linux 4.5+ necessary.  e.g.:
> > 
> > | On x86_64 hosts, it is recommended to run Linux 4.5 or newer on
> > | the host when using the KVM accelerator.
> > | 
> > | The Opteron_G2, OpteronG3, Opteron_G4, and Opteron_G5 CPU
> > | models require KVM support for RDTSCP, which was added on
> > | Linux 4.5.
> > 
> > I'm CCing some people who may help review English grammar and
> > style.
> 
> Note that QEMU has a declared supported platform list which is used to
> set the minimum software versions required.
> 
>    https://qemu.weilnetz.de/doc/qemu-doc.html#Linux-OS
> 
> Based on that policy, the Linux distros we aim to support have the
> following kernel versions:
> 
>   - Debian Jessie: 4.5
>   - Debian Stretch: 4.5
>   - RHEL-7: 3.10
>   - Ubuntu LTS (Xenial): 4.5
>   - OpenSUSE Leap 15: 4.12.14
> 
> So we can't require Linux 4.5 as a minimum version at this time.

I'd like us to take a step back and consider what exactly
"support" means here.  QEMU will still work on older kernels if
we add RDTSCP to the CPU models, but at the same time I would
like to document that our strict runnability guarantees may not
be kept if running Linux < 4.5.

-- 
Eduardo

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: kvm: RDTSCP on AMD
  2018-12-11 11:55             ` Eduardo Habkost
@ 2018-12-11 14:35               ` Daniel P. Berrangé
  2018-12-11 15:23               ` Paolo Bonzini
  1 sibling, 0 replies; 22+ messages in thread
From: Daniel P. Berrangé @ 2018-12-11 14:35 UTC (permalink / raw)
  To: Eduardo Habkost
  Cc: Borislav Petkov, Paolo Bonzini, Jörg Rödel,
	Andre Przywara, kvm ML, lkml, Tom Lendacky, Eric Blake

On Tue, Dec 11, 2018 at 09:55:46AM -0200, Eduardo Habkost wrote:
> On Tue, Dec 11, 2018 at 10:38:39AM +0000, Daniel P. Berrangé wrote:
> > On Mon, Dec 10, 2018 at 06:08:43PM -0200, Eduardo Habkost wrote:
> > > On Mon, Dec 10, 2018 at 08:42:58PM +0100, Borislav Petkov wrote:
> > > > On Mon, Dec 10, 2018 at 05:06:00PM -0200, Eduardo Habkost wrote:
> > > > > I mean documenting it.  We already have code that will print
> > > > > warnings if a feature isn't available.
> > > > > 
> > > > > See my previous attempt to document the minimum kernel version
> > > > > at <https://www.mail-archive.com/qemu-devel@nongnu.org/msg486559.html>.
> > > > 
> > > > Something like this?
> > > > 
> > > > I still have no clue how to add RDTSCP on pc-*-4.0 and newer.
> > > 
> > > qemu.git master have no PC_COMPAT_3_1 and pc-*-4.0 machine-types
> > > yet.  I've sent another reply with additional pointers.
> > > 
> > > > 
> > > > Thx.
> > > > 
> > > > ---
> > > > diff --git a/qemu-doc.texi b/qemu-doc.texi
> > > > index f7ad1dfe4b69..913b2ef68d54 100644
> > > > --- a/qemu-doc.texi
> > > > +++ b/qemu-doc.texi
> > > > @@ -37,6 +37,7 @@
> > > >  * QEMU System emulator for non PC targets::
> > > >  * QEMU Guest Agent::
> > > >  * QEMU User space emulator::
> > > > +* System requirements::
> > > >  * Implementation notes::
> > > >  * Deprecated features::
> > > >  * Supported build platforms::
> > > > @@ -2813,6 +2814,13 @@ Act as if the host page size was 'pagesize' bytes
> > > >  Run the emulation in single step mode.
> > > >  @end table
> > > >  
> > > > +@node System requirements
> > > > +@chapter System requirements
> > > > +
> > > > +@section KVM kernel module
> > > > +
> > > > +On x86_64 hosts, the default set of CPU features enabled by the KVM accelerator
> > > > +require the host to be running Linux v4.5 or newer.
> > > >  
> > > 
> > > Sounds good, but it would be nice to document what exactly makes
> > > Linux 4.5+ necessary.  e.g.:
> > > 
> > > | On x86_64 hosts, it is recommended to run Linux 4.5 or newer on
> > > | the host when using the KVM accelerator.
> > > | 
> > > | The Opteron_G2, OpteronG3, Opteron_G4, and Opteron_G5 CPU
> > > | models require KVM support for RDTSCP, which was added on
> > > | Linux 4.5.
> > > 
> > > I'm CCing some people who may help review English grammar and
> > > style.
> > 
> > Note that QEMU has a declared supported platform list which is used to
> > set the minimum software versions required.
> > 
> >    https://qemu.weilnetz.de/doc/qemu-doc.html#Linux-OS
> > 
> > Based on that policy, the Linux distros we aim to support have the
> > following kernel versions:
> > 
> >   - Debian Jessie: 4.5
> >   - Debian Stretch: 4.5
> >   - RHEL-7: 3.10
> >   - Ubuntu LTS (Xenial): 4.5
> >   - OpenSUSE Leap 15: 4.12.14
> > 
> > So we can't require Linux 4.5 as a minimum version at this time.
> 
> I'd like us to take a step back and consider what exactly
> "support" means here.  QEMU will still work on older kernels if
> we add RDTSCP to the CPU models, but at the same time I would
> like to document that our strict runnability guarantees may not
> be kept if running Linux < 4.5.

I've just noticed that this thread is not in fact on qemu-devel. So
rather than debating the meaning of support here, lets discuss it
once the patch adding rdtscp to OpteronG* CPU model is posted to
qemu-devel.

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 :|

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: kvm: RDTSCP on AMD
  2018-12-11 11:55             ` Eduardo Habkost
  2018-12-11 14:35               ` Daniel P. Berrangé
@ 2018-12-11 15:23               ` Paolo Bonzini
  2018-12-11 15:30                 ` Daniel P. Berrangé
  1 sibling, 1 reply; 22+ messages in thread
From: Paolo Bonzini @ 2018-12-11 15:23 UTC (permalink / raw)
  To: Eduardo Habkost, Daniel P. Berrangé
  Cc: Borislav Petkov, Jörg Rödel, Andre Przywara, kvm ML,
	lkml, Tom Lendacky, Eric Blake

On 11/12/18 12:55, Eduardo Habkost wrote:
>>   - Debian Jessie: 4.5
>>   - Debian Stretch: 4.5
>>   - RHEL-7: 3.10
>>   - Ubuntu LTS (Xenial): 4.5
>>   - OpenSUSE Leap 15: 4.12.14
>>
>> So we can't require Linux 4.5 as a minimum version at this time.
> I'd like us to take a step back and consider what exactly
> "support" means here.  QEMU will still work on older kernels if
> we add RDTSCP to the CPU models, but at the same time I would
> like to document that our strict runnability guarantees may not
> be kept if running Linux < 4.5.

Anyway RHEL does have RDTSC support for AMD, and a bunch of other stuff.
 The frankenkernel's KVM is somewhere between 4.5 and 4.10, with a dash
of 4.20 of course. :)

Paolo

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: kvm: RDTSCP on AMD
  2018-12-11 15:23               ` Paolo Bonzini
@ 2018-12-11 15:30                 ` Daniel P. Berrangé
  2018-12-11 16:14                     ` [Qemu-devel] " Borislav Petkov
  0 siblings, 1 reply; 22+ messages in thread
From: Daniel P. Berrangé @ 2018-12-11 15:30 UTC (permalink / raw)
  To: Paolo Bonzini
  Cc: Eduardo Habkost, Borislav Petkov, Jörg Rödel,
	Andre Przywara, kvm ML, lkml, Tom Lendacky, Eric Blake

On Tue, Dec 11, 2018 at 04:23:51PM +0100, Paolo Bonzini wrote:
> On 11/12/18 12:55, Eduardo Habkost wrote:
> >>   - Debian Jessie: 4.5
> >>   - Debian Stretch: 4.5
> >>   - RHEL-7: 3.10
> >>   - Ubuntu LTS (Xenial): 4.5
> >>   - OpenSUSE Leap 15: 4.12.14
> >>
> >> So we can't require Linux 4.5 as a minimum version at this time.
> > I'd like us to take a step back and consider what exactly
> > "support" means here.  QEMU will still work on older kernels if
> > we add RDTSCP to the CPU models, but at the same time I would
> > like to document that our strict runnability guarantees may not
> > be kept if running Linux < 4.5.
> 
> Anyway RHEL does have RDTSC support for AMD, and a bunch of other stuff.
>  The frankenkernel's KVM is somewhere between 4.5 and 4.10, with a dash
> of 4.20 of course. :)

Great, then, this is a non-issue - we just need to mention that fact
in the commit that sets the min version for the kernel 

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 :|

^ permalink raw reply	[flat|nested] 22+ messages in thread

* [PATCH] target-i386: Reenable RDTSCP support on Opteron_G[345] CPU models
  2018-12-11 15:30                 ` Daniel P. Berrangé
@ 2018-12-11 16:14                     ` Borislav Petkov
  0 siblings, 0 replies; 22+ messages in thread
From: Borislav Petkov @ 2018-12-11 16:14 UTC (permalink / raw)
  To: Daniel P. Berrangé, Eduardo Habkost
  Cc: Paolo Bonzini, Jörg Rödel, Andre Przywara, kvm ML,
	lkml, Tom Lendacky, Eric Blake, qemu-devel

+ qemu-devel.

On Tue, Dec 11, 2018 at 03:30:17PM +0000, Daniel P. Berrangé wrote:
> Great, then, this is a non-issue - we just need to mention that fact
> in the commit that sets the min version for the kernel

Ok, here's a first draft ontop of Eduardo's machine-next branch from
http://github.com/ehabkost/qemu

Also, thanks for the help Eduardo! :-)

---
From: Borislav Petkov <bp@suse.de>
Date: Tue, 11 Dec 2018 17:01:00 +0100

The missing functionality was added ~3 years ago with the Linux commit

  46896c73c1a4 ("KVM: svm: add support for RDTSCP")

so reenable RDTSCP support on those CPU models.

Opteron_G2 - being family 15, model 6, doesn't have RDTSCP support
(the real hardware doesn't have it. K8 got RDTSCP support with the NPT
models, i.e., models >= 0x40).

Document the host's minimum required kernel version, while at it.

Signed-off-by: Borislav Petkov <bp@suse.de>
---
 include/hw/i386/pc.h | 17 +++++++++++++----
 qemu-doc.texi        | 13 +++++++++++++
 target/i386/cpu.c    | 11 ++++-------
 3 files changed, 30 insertions(+), 11 deletions(-)

diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
index 9d29c4b1df2a..ebc28e816b04 100644
--- a/include/hw/i386/pc.h
+++ b/include/hw/i386/pc.h
@@ -296,6 +296,19 @@ bool e820_get_entry(int, uint32_t, uint64_t *, uint64_t *);
 
 #define PC_COMPAT_3_1 \
     HW_COMPAT_3_1 \
+    {\
+        .driver   = "Opteron_G3" "-" TYPE_X86_CPU,\
+        .property = "rdtscp",\
+        .value    = "off",\
+    },{\
+        .driver   = "Opteron_G4" "-" TYPE_X86_CPU,\
+        .property = "rdtscp",\
+        .value    = "off",\
+    },{\
+        .driver   = "Opteron_G5" "-" TYPE_X86_CPU,\
+        .property = "rdtscp",\
+        .value    = "off",\
+    },
 
 #define PC_COMPAT_3_0 \
     HW_COMPAT_3_0 \
@@ -527,10 +540,6 @@ bool e820_get_entry(int, uint32_t, uint64_t *, uint64_t *);
         .driver   = "qemu32" "-" TYPE_X86_CPU,\
         .property = "popcnt",\
         .value    = "on",\
-    },{\
-        .driver   = "Opteron_G2" "-" TYPE_X86_CPU,\
-        .property = "rdtscp",\
-        .value    = "on",\
     },{\
         .driver   = "Opteron_G3" "-" TYPE_X86_CPU,\
         .property = "rdtscp",\
diff --git a/qemu-doc.texi b/qemu-doc.texi
index f7ad1dfe4b69..16b955cbf985 100644
--- a/qemu-doc.texi
+++ b/qemu-doc.texi
@@ -37,6 +37,7 @@
 * QEMU System emulator for non PC targets::
 * QEMU Guest Agent::
 * QEMU User space emulator::
+* System requirements::
 * Implementation notes::
 * Deprecated features::
 * Supported build platforms::
@@ -2813,6 +2814,18 @@ Act as if the host page size was 'pagesize' bytes
 Run the emulation in single step mode.
 @end table
 
+@node System requirements
+@chapter System requirements
+
+@section KVM kernel module
+
+On x86_64 hosts, the default set of CPU features enabled by the KVM accelerator
+require the host to be running Linux v4.5 or newer.
+
+The OpteronG[345] CPU models require KVM support for RDTSCP, which was
+added with Linux 4.5 which is supported by the major distros. And even
+if RHEL7 has kernel 3.10, KVM there has the required functionality there
+to make it close to a 4.5 or newer kernel.
 
 @include qemu-tech.texi
 
diff --git a/target/i386/cpu.c b/target/i386/cpu.c
index f81d35e1f914..a7def11b27cd 100644
--- a/target/i386/cpu.c
+++ b/target/i386/cpu.c
@@ -2706,7 +2706,6 @@ static X86CPUDefinition builtin_x86_defs[] = {
             CPUID_DE | CPUID_FP87,
         .features[FEAT_1_ECX] =
             CPUID_EXT_CX16 | CPUID_EXT_SSE3,
-        /* Missing: CPUID_EXT2_RDTSCP */
         .features[FEAT_8000_0001_EDX] =
             CPUID_EXT2_LM | CPUID_EXT2_NX | CPUID_EXT2_SYSCALL,
         .features[FEAT_8000_0001_ECX] =
@@ -2730,9 +2729,9 @@ static X86CPUDefinition builtin_x86_defs[] = {
         .features[FEAT_1_ECX] =
             CPUID_EXT_POPCNT | CPUID_EXT_CX16 | CPUID_EXT_MONITOR |
             CPUID_EXT_SSE3,
-        /* Missing: CPUID_EXT2_RDTSCP */
         .features[FEAT_8000_0001_EDX] =
-            CPUID_EXT2_LM | CPUID_EXT2_NX | CPUID_EXT2_SYSCALL,
+            CPUID_EXT2_LM | CPUID_EXT2_NX | CPUID_EXT2_SYSCALL |
+            CPUID_EXT2_RDTSCP,
         .features[FEAT_8000_0001_ECX] =
             CPUID_EXT3_MISALIGNSSE | CPUID_EXT3_SSE4A |
             CPUID_EXT3_ABM | CPUID_EXT3_SVM | CPUID_EXT3_LAHF_LM,
@@ -2757,10 +2756,9 @@ static X86CPUDefinition builtin_x86_defs[] = {
             CPUID_EXT_POPCNT | CPUID_EXT_SSE42 | CPUID_EXT_SSE41 |
             CPUID_EXT_CX16 | CPUID_EXT_SSSE3 | CPUID_EXT_PCLMULQDQ |
             CPUID_EXT_SSE3,
-        /* Missing: CPUID_EXT2_RDTSCP */
         .features[FEAT_8000_0001_EDX] =
             CPUID_EXT2_LM | CPUID_EXT2_PDPE1GB | CPUID_EXT2_NX |
-            CPUID_EXT2_SYSCALL,
+            CPUID_EXT2_SYSCALL | CPUID_EXT2_RDTSCP,
         .features[FEAT_8000_0001_ECX] =
             CPUID_EXT3_FMA4 | CPUID_EXT3_XOP |
             CPUID_EXT3_3DNOWPREFETCH | CPUID_EXT3_MISALIGNSSE |
@@ -2788,10 +2786,9 @@ static X86CPUDefinition builtin_x86_defs[] = {
             CPUID_EXT_AES | CPUID_EXT_POPCNT | CPUID_EXT_SSE42 |
             CPUID_EXT_SSE41 | CPUID_EXT_CX16 | CPUID_EXT_FMA |
             CPUID_EXT_SSSE3 | CPUID_EXT_PCLMULQDQ | CPUID_EXT_SSE3,
-        /* Missing: CPUID_EXT2_RDTSCP */
         .features[FEAT_8000_0001_EDX] =
             CPUID_EXT2_LM | CPUID_EXT2_PDPE1GB | CPUID_EXT2_NX |
-            CPUID_EXT2_SYSCALL,
+            CPUID_EXT2_SYSCALL | CPUID_EXT2_RDTSCP,
         .features[FEAT_8000_0001_ECX] =
             CPUID_EXT3_TBM | CPUID_EXT3_FMA4 | CPUID_EXT3_XOP |
             CPUID_EXT3_3DNOWPREFETCH | CPUID_EXT3_MISALIGNSSE |
-- 
2.19.1

-- 
Regards/Gruss,
    Boris.

Good mailing practices for 400: avoid top-posting and trim the reply.

^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [Qemu-devel] [PATCH] target-i386: Reenable RDTSCP support on Opteron_G[345] CPU models
@ 2018-12-11 16:14                     ` Borislav Petkov
  0 siblings, 0 replies; 22+ messages in thread
From: Borislav Petkov @ 2018-12-11 16:14 UTC (permalink / raw)
  To: Daniel P. Berrangé, Eduardo Habkost
  Cc: Paolo Bonzini, Jörg Rödel, Andre Przywara, kvm ML,
	lkml, Tom Lendacky, Eric Blake, qemu-devel

+ qemu-devel.

On Tue, Dec 11, 2018 at 03:30:17PM +0000, Daniel P. Berrangé wrote:
> Great, then, this is a non-issue - we just need to mention that fact
> in the commit that sets the min version for the kernel

Ok, here's a first draft ontop of Eduardo's machine-next branch from
http://github.com/ehabkost/qemu

Also, thanks for the help Eduardo! :-)

---
From: Borislav Petkov <bp@suse.de>
Date: Tue, 11 Dec 2018 17:01:00 +0100

The missing functionality was added ~3 years ago with the Linux commit

  46896c73c1a4 ("KVM: svm: add support for RDTSCP")

so reenable RDTSCP support on those CPU models.

Opteron_G2 - being family 15, model 6, doesn't have RDTSCP support
(the real hardware doesn't have it. K8 got RDTSCP support with the NPT
models, i.e., models >= 0x40).

Document the host's minimum required kernel version, while at it.

Signed-off-by: Borislav Petkov <bp@suse.de>
---
 include/hw/i386/pc.h | 17 +++++++++++++----
 qemu-doc.texi        | 13 +++++++++++++
 target/i386/cpu.c    | 11 ++++-------
 3 files changed, 30 insertions(+), 11 deletions(-)

diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
index 9d29c4b1df2a..ebc28e816b04 100644
--- a/include/hw/i386/pc.h
+++ b/include/hw/i386/pc.h
@@ -296,6 +296,19 @@ bool e820_get_entry(int, uint32_t, uint64_t *, uint64_t *);
 
 #define PC_COMPAT_3_1 \
     HW_COMPAT_3_1 \
+    {\
+        .driver   = "Opteron_G3" "-" TYPE_X86_CPU,\
+        .property = "rdtscp",\
+        .value    = "off",\
+    },{\
+        .driver   = "Opteron_G4" "-" TYPE_X86_CPU,\
+        .property = "rdtscp",\
+        .value    = "off",\
+    },{\
+        .driver   = "Opteron_G5" "-" TYPE_X86_CPU,\
+        .property = "rdtscp",\
+        .value    = "off",\
+    },
 
 #define PC_COMPAT_3_0 \
     HW_COMPAT_3_0 \
@@ -527,10 +540,6 @@ bool e820_get_entry(int, uint32_t, uint64_t *, uint64_t *);
         .driver   = "qemu32" "-" TYPE_X86_CPU,\
         .property = "popcnt",\
         .value    = "on",\
-    },{\
-        .driver   = "Opteron_G2" "-" TYPE_X86_CPU,\
-        .property = "rdtscp",\
-        .value    = "on",\
     },{\
         .driver   = "Opteron_G3" "-" TYPE_X86_CPU,\
         .property = "rdtscp",\
diff --git a/qemu-doc.texi b/qemu-doc.texi
index f7ad1dfe4b69..16b955cbf985 100644
--- a/qemu-doc.texi
+++ b/qemu-doc.texi
@@ -37,6 +37,7 @@
 * QEMU System emulator for non PC targets::
 * QEMU Guest Agent::
 * QEMU User space emulator::
+* System requirements::
 * Implementation notes::
 * Deprecated features::
 * Supported build platforms::
@@ -2813,6 +2814,18 @@ Act as if the host page size was 'pagesize' bytes
 Run the emulation in single step mode.
 @end table
 
+@node System requirements
+@chapter System requirements
+
+@section KVM kernel module
+
+On x86_64 hosts, the default set of CPU features enabled by the KVM accelerator
+require the host to be running Linux v4.5 or newer.
+
+The OpteronG[345] CPU models require KVM support for RDTSCP, which was
+added with Linux 4.5 which is supported by the major distros. And even
+if RHEL7 has kernel 3.10, KVM there has the required functionality there
+to make it close to a 4.5 or newer kernel.
 
 @include qemu-tech.texi
 
diff --git a/target/i386/cpu.c b/target/i386/cpu.c
index f81d35e1f914..a7def11b27cd 100644
--- a/target/i386/cpu.c
+++ b/target/i386/cpu.c
@@ -2706,7 +2706,6 @@ static X86CPUDefinition builtin_x86_defs[] = {
             CPUID_DE | CPUID_FP87,
         .features[FEAT_1_ECX] =
             CPUID_EXT_CX16 | CPUID_EXT_SSE3,
-        /* Missing: CPUID_EXT2_RDTSCP */
         .features[FEAT_8000_0001_EDX] =
             CPUID_EXT2_LM | CPUID_EXT2_NX | CPUID_EXT2_SYSCALL,
         .features[FEAT_8000_0001_ECX] =
@@ -2730,9 +2729,9 @@ static X86CPUDefinition builtin_x86_defs[] = {
         .features[FEAT_1_ECX] =
             CPUID_EXT_POPCNT | CPUID_EXT_CX16 | CPUID_EXT_MONITOR |
             CPUID_EXT_SSE3,
-        /* Missing: CPUID_EXT2_RDTSCP */
         .features[FEAT_8000_0001_EDX] =
-            CPUID_EXT2_LM | CPUID_EXT2_NX | CPUID_EXT2_SYSCALL,
+            CPUID_EXT2_LM | CPUID_EXT2_NX | CPUID_EXT2_SYSCALL |
+            CPUID_EXT2_RDTSCP,
         .features[FEAT_8000_0001_ECX] =
             CPUID_EXT3_MISALIGNSSE | CPUID_EXT3_SSE4A |
             CPUID_EXT3_ABM | CPUID_EXT3_SVM | CPUID_EXT3_LAHF_LM,
@@ -2757,10 +2756,9 @@ static X86CPUDefinition builtin_x86_defs[] = {
             CPUID_EXT_POPCNT | CPUID_EXT_SSE42 | CPUID_EXT_SSE41 |
             CPUID_EXT_CX16 | CPUID_EXT_SSSE3 | CPUID_EXT_PCLMULQDQ |
             CPUID_EXT_SSE3,
-        /* Missing: CPUID_EXT2_RDTSCP */
         .features[FEAT_8000_0001_EDX] =
             CPUID_EXT2_LM | CPUID_EXT2_PDPE1GB | CPUID_EXT2_NX |
-            CPUID_EXT2_SYSCALL,
+            CPUID_EXT2_SYSCALL | CPUID_EXT2_RDTSCP,
         .features[FEAT_8000_0001_ECX] =
             CPUID_EXT3_FMA4 | CPUID_EXT3_XOP |
             CPUID_EXT3_3DNOWPREFETCH | CPUID_EXT3_MISALIGNSSE |
@@ -2788,10 +2786,9 @@ static X86CPUDefinition builtin_x86_defs[] = {
             CPUID_EXT_AES | CPUID_EXT_POPCNT | CPUID_EXT_SSE42 |
             CPUID_EXT_SSE41 | CPUID_EXT_CX16 | CPUID_EXT_FMA |
             CPUID_EXT_SSSE3 | CPUID_EXT_PCLMULQDQ | CPUID_EXT_SSE3,
-        /* Missing: CPUID_EXT2_RDTSCP */
         .features[FEAT_8000_0001_EDX] =
             CPUID_EXT2_LM | CPUID_EXT2_PDPE1GB | CPUID_EXT2_NX |
-            CPUID_EXT2_SYSCALL,
+            CPUID_EXT2_SYSCALL | CPUID_EXT2_RDTSCP,
         .features[FEAT_8000_0001_ECX] =
             CPUID_EXT3_TBM | CPUID_EXT3_FMA4 | CPUID_EXT3_XOP |
             CPUID_EXT3_3DNOWPREFETCH | CPUID_EXT3_MISALIGNSSE |
-- 
2.19.1

-- 
Regards/Gruss,
    Boris.

Good mailing practices for 400: avoid top-posting and trim the reply.

^ permalink raw reply related	[flat|nested] 22+ messages in thread

* Re: [PATCH] target-i386: Reenable RDTSCP support on Opteron_G[345] CPU models
  2018-12-11 16:14                     ` [Qemu-devel] " Borislav Petkov
@ 2018-12-12 19:52                       ` Eduardo Habkost
  -1 siblings, 0 replies; 22+ messages in thread
From: Eduardo Habkost @ 2018-12-12 19:52 UTC (permalink / raw)
  To: Borislav Petkov
  Cc: Daniel P. Berrangé,
	Paolo Bonzini, Jörg Rödel, Andre Przywara, kvm ML,
	lkml, Tom Lendacky, Eric Blake, qemu-devel

On Tue, Dec 11, 2018 at 05:14:40PM +0100, Borislav Petkov wrote:
> + qemu-devel.
> 
> On Tue, Dec 11, 2018 at 03:30:17PM +0000, Daniel P. Berrangé wrote:
> > Great, then, this is a non-issue - we just need to mention that fact
> > in the commit that sets the min version for the kernel
> 
> Ok, here's a first draft ontop of Eduardo's machine-next branch from
> http://github.com/ehabkost/qemu
> 
> Also, thanks for the help Eduardo! :-)
> 
> ---
> From: Borislav Petkov <bp@suse.de>
> Date: Tue, 11 Dec 2018 17:01:00 +0100
> 
> The missing functionality was added ~3 years ago with the Linux commit
> 
>   46896c73c1a4 ("KVM: svm: add support for RDTSCP")
> 
> so reenable RDTSCP support on those CPU models.
> 
> Opteron_G2 - being family 15, model 6, doesn't have RDTSCP support
> (the real hardware doesn't have it. K8 got RDTSCP support with the NPT
> models, i.e., models >= 0x40).
> 
> Document the host's minimum required kernel version, while at it.
> 
> Signed-off-by: Borislav Petkov <bp@suse.de>
> ---
>  include/hw/i386/pc.h | 17 +++++++++++++----
>  qemu-doc.texi        | 13 +++++++++++++
>  target/i386/cpu.c    | 11 ++++-------
>  3 files changed, 30 insertions(+), 11 deletions(-)
> 
> diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
> index 9d29c4b1df2a..ebc28e816b04 100644
> --- a/include/hw/i386/pc.h
> +++ b/include/hw/i386/pc.h
> @@ -296,6 +296,19 @@ bool e820_get_entry(int, uint32_t, uint64_t *, uint64_t *);
>  
>  #define PC_COMPAT_3_1 \
>      HW_COMPAT_3_1 \
> +    {\
> +        .driver   = "Opteron_G3" "-" TYPE_X86_CPU,\
> +        .property = "rdtscp",\
> +        .value    = "off",\
> +    },{\
> +        .driver   = "Opteron_G4" "-" TYPE_X86_CPU,\
> +        .property = "rdtscp",\
> +        .value    = "off",\
> +    },{\
> +        .driver   = "Opteron_G5" "-" TYPE_X86_CPU,\
> +        .property = "rdtscp",\
> +        .value    = "off",\
> +    },

This looks correct.

>  
>  #define PC_COMPAT_3_0 \
>      HW_COMPAT_3_0 \
> @@ -527,10 +540,6 @@ bool e820_get_entry(int, uint32_t, uint64_t *, uint64_t *);
>          .driver   = "qemu32" "-" TYPE_X86_CPU,\
>          .property = "popcnt",\
>          .value    = "on",\
> -    },{\
> -        .driver   = "Opteron_G2" "-" TYPE_X86_CPU,\
> -        .property = "rdtscp",\
> -        .value    = "on",\

Why did you remove this entry from PC_COMPAT_2_4?

We must keep compatibility with old behavior of Opteron_G2 on
pc-2.4, even if the old behavior was incorrect.


>      },{\
>          .driver   = "Opteron_G3" "-" TYPE_X86_CPU,\
>          .property = "rdtscp",\
> diff --git a/qemu-doc.texi b/qemu-doc.texi
> index f7ad1dfe4b69..16b955cbf985 100644
> --- a/qemu-doc.texi
> +++ b/qemu-doc.texi
> @@ -37,6 +37,7 @@
>  * QEMU System emulator for non PC targets::
>  * QEMU Guest Agent::
>  * QEMU User space emulator::
> +* System requirements::
>  * Implementation notes::
>  * Deprecated features::
>  * Supported build platforms::
> @@ -2813,6 +2814,18 @@ Act as if the host page size was 'pagesize' bytes
>  Run the emulation in single step mode.
>  @end table
>  
> +@node System requirements
> +@chapter System requirements
> +
> +@section KVM kernel module
> +
> +On x86_64 hosts, the default set of CPU features enabled by the KVM accelerator
> +require the host to be running Linux v4.5 or newer.
> +
> +The OpteronG[345] CPU models require KVM support for RDTSCP, which was
> +added with Linux 4.5 which is supported by the major distros. And even
> +if RHEL7 has kernel 3.10, KVM there has the required functionality there
> +to make it close to a 4.5 or newer kernel.
>  
>  @include qemu-tech.texi
>  
> diff --git a/target/i386/cpu.c b/target/i386/cpu.c
> index f81d35e1f914..a7def11b27cd 100644
> --- a/target/i386/cpu.c
> +++ b/target/i386/cpu.c
> @@ -2706,7 +2706,6 @@ static X86CPUDefinition builtin_x86_defs[] = {
>              CPUID_DE | CPUID_FP87,
>          .features[FEAT_1_ECX] =
>              CPUID_EXT_CX16 | CPUID_EXT_SSE3,
> -        /* Missing: CPUID_EXT2_RDTSCP */

This is Opteron_G2, and feature is not being added.  Looks
correct.

>          .features[FEAT_8000_0001_EDX] =
>              CPUID_EXT2_LM | CPUID_EXT2_NX | CPUID_EXT2_SYSCALL,
>          .features[FEAT_8000_0001_ECX] =
> @@ -2730,9 +2729,9 @@ static X86CPUDefinition builtin_x86_defs[] = {
>          .features[FEAT_1_ECX] =
>              CPUID_EXT_POPCNT | CPUID_EXT_CX16 | CPUID_EXT_MONITOR |
>              CPUID_EXT_SSE3,
> -        /* Missing: CPUID_EXT2_RDTSCP */
>          .features[FEAT_8000_0001_EDX] =
> -            CPUID_EXT2_LM | CPUID_EXT2_NX | CPUID_EXT2_SYSCALL,
> +            CPUID_EXT2_LM | CPUID_EXT2_NX | CPUID_EXT2_SYSCALL |
> +            CPUID_EXT2_RDTSCP,

This is Opteron_G3.  Looks correct.

>          .features[FEAT_8000_0001_ECX] =
>              CPUID_EXT3_MISALIGNSSE | CPUID_EXT3_SSE4A |
>              CPUID_EXT3_ABM | CPUID_EXT3_SVM | CPUID_EXT3_LAHF_LM,
> @@ -2757,10 +2756,9 @@ static X86CPUDefinition builtin_x86_defs[] = {
>              CPUID_EXT_POPCNT | CPUID_EXT_SSE42 | CPUID_EXT_SSE41 |
>              CPUID_EXT_CX16 | CPUID_EXT_SSSE3 | CPUID_EXT_PCLMULQDQ |
>              CPUID_EXT_SSE3,
> -        /* Missing: CPUID_EXT2_RDTSCP */
>          .features[FEAT_8000_0001_EDX] =
>              CPUID_EXT2_LM | CPUID_EXT2_PDPE1GB | CPUID_EXT2_NX |
> -            CPUID_EXT2_SYSCALL,
> +            CPUID_EXT2_SYSCALL | CPUID_EXT2_RDTSCP,

This is Opteron_G4.  Looks correct.


>          .features[FEAT_8000_0001_ECX] =
>              CPUID_EXT3_FMA4 | CPUID_EXT3_XOP |
>              CPUID_EXT3_3DNOWPREFETCH | CPUID_EXT3_MISALIGNSSE |
> @@ -2788,10 +2786,9 @@ static X86CPUDefinition builtin_x86_defs[] = {
>              CPUID_EXT_AES | CPUID_EXT_POPCNT | CPUID_EXT_SSE42 |
>              CPUID_EXT_SSE41 | CPUID_EXT_CX16 | CPUID_EXT_FMA |
>              CPUID_EXT_SSSE3 | CPUID_EXT_PCLMULQDQ | CPUID_EXT_SSE3,
> -        /* Missing: CPUID_EXT2_RDTSCP */
>          .features[FEAT_8000_0001_EDX] =
>              CPUID_EXT2_LM | CPUID_EXT2_PDPE1GB | CPUID_EXT2_NX |
> -            CPUID_EXT2_SYSCALL,
> +            CPUID_EXT2_SYSCALL | CPUID_EXT2_RDTSCP,

This is Opteron_G5.  Looks correct.

>          .features[FEAT_8000_0001_ECX] =
>              CPUID_EXT3_TBM | CPUID_EXT3_FMA4 | CPUID_EXT3_XOP |
>              CPUID_EXT3_3DNOWPREFETCH | CPUID_EXT3_MISALIGNSSE |
> -- 
> 2.19.1
> 
> -- 
> Regards/Gruss,
>     Boris.
> 
> Good mailing practices for 400: avoid top-posting and trim the reply.

-- 
Eduardo

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [Qemu-devel] [PATCH] target-i386: Reenable RDTSCP support on Opteron_G[345] CPU models
@ 2018-12-12 19:52                       ` Eduardo Habkost
  0 siblings, 0 replies; 22+ messages in thread
From: Eduardo Habkost @ 2018-12-12 19:52 UTC (permalink / raw)
  To: Borislav Petkov
  Cc: Daniel P. Berrangé,
	Paolo Bonzini, Jörg Rödel, Andre Przywara, kvm ML,
	lkml, Tom Lendacky, Eric Blake, qemu-devel

On Tue, Dec 11, 2018 at 05:14:40PM +0100, Borislav Petkov wrote:
> + qemu-devel.
> 
> On Tue, Dec 11, 2018 at 03:30:17PM +0000, Daniel P. Berrangé wrote:
> > Great, then, this is a non-issue - we just need to mention that fact
> > in the commit that sets the min version for the kernel
> 
> Ok, here's a first draft ontop of Eduardo's machine-next branch from
> http://github.com/ehabkost/qemu
> 
> Also, thanks for the help Eduardo! :-)
> 
> ---
> From: Borislav Petkov <bp@suse.de>
> Date: Tue, 11 Dec 2018 17:01:00 +0100
> 
> The missing functionality was added ~3 years ago with the Linux commit
> 
>   46896c73c1a4 ("KVM: svm: add support for RDTSCP")
> 
> so reenable RDTSCP support on those CPU models.
> 
> Opteron_G2 - being family 15, model 6, doesn't have RDTSCP support
> (the real hardware doesn't have it. K8 got RDTSCP support with the NPT
> models, i.e., models >= 0x40).
> 
> Document the host's minimum required kernel version, while at it.
> 
> Signed-off-by: Borislav Petkov <bp@suse.de>
> ---
>  include/hw/i386/pc.h | 17 +++++++++++++----
>  qemu-doc.texi        | 13 +++++++++++++
>  target/i386/cpu.c    | 11 ++++-------
>  3 files changed, 30 insertions(+), 11 deletions(-)
> 
> diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
> index 9d29c4b1df2a..ebc28e816b04 100644
> --- a/include/hw/i386/pc.h
> +++ b/include/hw/i386/pc.h
> @@ -296,6 +296,19 @@ bool e820_get_entry(int, uint32_t, uint64_t *, uint64_t *);
>  
>  #define PC_COMPAT_3_1 \
>      HW_COMPAT_3_1 \
> +    {\
> +        .driver   = "Opteron_G3" "-" TYPE_X86_CPU,\
> +        .property = "rdtscp",\
> +        .value    = "off",\
> +    },{\
> +        .driver   = "Opteron_G4" "-" TYPE_X86_CPU,\
> +        .property = "rdtscp",\
> +        .value    = "off",\
> +    },{\
> +        .driver   = "Opteron_G5" "-" TYPE_X86_CPU,\
> +        .property = "rdtscp",\
> +        .value    = "off",\
> +    },

This looks correct.

>  
>  #define PC_COMPAT_3_0 \
>      HW_COMPAT_3_0 \
> @@ -527,10 +540,6 @@ bool e820_get_entry(int, uint32_t, uint64_t *, uint64_t *);
>          .driver   = "qemu32" "-" TYPE_X86_CPU,\
>          .property = "popcnt",\
>          .value    = "on",\
> -    },{\
> -        .driver   = "Opteron_G2" "-" TYPE_X86_CPU,\
> -        .property = "rdtscp",\
> -        .value    = "on",\

Why did you remove this entry from PC_COMPAT_2_4?

We must keep compatibility with old behavior of Opteron_G2 on
pc-2.4, even if the old behavior was incorrect.


>      },{\
>          .driver   = "Opteron_G3" "-" TYPE_X86_CPU,\
>          .property = "rdtscp",\
> diff --git a/qemu-doc.texi b/qemu-doc.texi
> index f7ad1dfe4b69..16b955cbf985 100644
> --- a/qemu-doc.texi
> +++ b/qemu-doc.texi
> @@ -37,6 +37,7 @@
>  * QEMU System emulator for non PC targets::
>  * QEMU Guest Agent::
>  * QEMU User space emulator::
> +* System requirements::
>  * Implementation notes::
>  * Deprecated features::
>  * Supported build platforms::
> @@ -2813,6 +2814,18 @@ Act as if the host page size was 'pagesize' bytes
>  Run the emulation in single step mode.
>  @end table
>  
> +@node System requirements
> +@chapter System requirements
> +
> +@section KVM kernel module
> +
> +On x86_64 hosts, the default set of CPU features enabled by the KVM accelerator
> +require the host to be running Linux v4.5 or newer.
> +
> +The OpteronG[345] CPU models require KVM support for RDTSCP, which was
> +added with Linux 4.5 which is supported by the major distros. And even
> +if RHEL7 has kernel 3.10, KVM there has the required functionality there
> +to make it close to a 4.5 or newer kernel.
>  
>  @include qemu-tech.texi
>  
> diff --git a/target/i386/cpu.c b/target/i386/cpu.c
> index f81d35e1f914..a7def11b27cd 100644
> --- a/target/i386/cpu.c
> +++ b/target/i386/cpu.c
> @@ -2706,7 +2706,6 @@ static X86CPUDefinition builtin_x86_defs[] = {
>              CPUID_DE | CPUID_FP87,
>          .features[FEAT_1_ECX] =
>              CPUID_EXT_CX16 | CPUID_EXT_SSE3,
> -        /* Missing: CPUID_EXT2_RDTSCP */

This is Opteron_G2, and feature is not being added.  Looks
correct.

>          .features[FEAT_8000_0001_EDX] =
>              CPUID_EXT2_LM | CPUID_EXT2_NX | CPUID_EXT2_SYSCALL,
>          .features[FEAT_8000_0001_ECX] =
> @@ -2730,9 +2729,9 @@ static X86CPUDefinition builtin_x86_defs[] = {
>          .features[FEAT_1_ECX] =
>              CPUID_EXT_POPCNT | CPUID_EXT_CX16 | CPUID_EXT_MONITOR |
>              CPUID_EXT_SSE3,
> -        /* Missing: CPUID_EXT2_RDTSCP */
>          .features[FEAT_8000_0001_EDX] =
> -            CPUID_EXT2_LM | CPUID_EXT2_NX | CPUID_EXT2_SYSCALL,
> +            CPUID_EXT2_LM | CPUID_EXT2_NX | CPUID_EXT2_SYSCALL |
> +            CPUID_EXT2_RDTSCP,

This is Opteron_G3.  Looks correct.

>          .features[FEAT_8000_0001_ECX] =
>              CPUID_EXT3_MISALIGNSSE | CPUID_EXT3_SSE4A |
>              CPUID_EXT3_ABM | CPUID_EXT3_SVM | CPUID_EXT3_LAHF_LM,
> @@ -2757,10 +2756,9 @@ static X86CPUDefinition builtin_x86_defs[] = {
>              CPUID_EXT_POPCNT | CPUID_EXT_SSE42 | CPUID_EXT_SSE41 |
>              CPUID_EXT_CX16 | CPUID_EXT_SSSE3 | CPUID_EXT_PCLMULQDQ |
>              CPUID_EXT_SSE3,
> -        /* Missing: CPUID_EXT2_RDTSCP */
>          .features[FEAT_8000_0001_EDX] =
>              CPUID_EXT2_LM | CPUID_EXT2_PDPE1GB | CPUID_EXT2_NX |
> -            CPUID_EXT2_SYSCALL,
> +            CPUID_EXT2_SYSCALL | CPUID_EXT2_RDTSCP,

This is Opteron_G4.  Looks correct.


>          .features[FEAT_8000_0001_ECX] =
>              CPUID_EXT3_FMA4 | CPUID_EXT3_XOP |
>              CPUID_EXT3_3DNOWPREFETCH | CPUID_EXT3_MISALIGNSSE |
> @@ -2788,10 +2786,9 @@ static X86CPUDefinition builtin_x86_defs[] = {
>              CPUID_EXT_AES | CPUID_EXT_POPCNT | CPUID_EXT_SSE42 |
>              CPUID_EXT_SSE41 | CPUID_EXT_CX16 | CPUID_EXT_FMA |
>              CPUID_EXT_SSSE3 | CPUID_EXT_PCLMULQDQ | CPUID_EXT_SSE3,
> -        /* Missing: CPUID_EXT2_RDTSCP */
>          .features[FEAT_8000_0001_EDX] =
>              CPUID_EXT2_LM | CPUID_EXT2_PDPE1GB | CPUID_EXT2_NX |
> -            CPUID_EXT2_SYSCALL,
> +            CPUID_EXT2_SYSCALL | CPUID_EXT2_RDTSCP,

This is Opteron_G5.  Looks correct.

>          .features[FEAT_8000_0001_ECX] =
>              CPUID_EXT3_TBM | CPUID_EXT3_FMA4 | CPUID_EXT3_XOP |
>              CPUID_EXT3_3DNOWPREFETCH | CPUID_EXT3_MISALIGNSSE |
> -- 
> 2.19.1
> 
> -- 
> Regards/Gruss,
>     Boris.
> 
> Good mailing practices for 400: avoid top-posting and trim the reply.

-- 
Eduardo

^ permalink raw reply	[flat|nested] 22+ messages in thread

* [PATCH -v2] target-i386: Reenable RDTSCP support on Opteron_G[345] CPU models CPU models
  2018-12-12 19:52                       ` [Qemu-devel] " Eduardo Habkost
@ 2018-12-12 20:08                         ` Borislav Petkov
  -1 siblings, 0 replies; 22+ messages in thread
From: Borislav Petkov @ 2018-12-12 20:08 UTC (permalink / raw)
  To: Eduardo Habkost
  Cc: Daniel P. Berrangé,
	Paolo Bonzini, Jörg Rödel, Andre Przywara, kvm ML,
	lkml, Tom Lendacky, Eric Blake, qemu-devel

On Wed, Dec 12, 2018 at 05:52:35PM -0200, Eduardo Habkost wrote:
> Why did you remove this entry from PC_COMPAT_2_4?
> 
> We must keep compatibility with old behavior of Opteron_G2 on
> pc-2.4, even if the old behavior was incorrect.

Ok, hunk reverted. v2 below.

Thx.

---
From: Borislav Petkov <bp@suse.de>

The missing functionality was added ~3 years ago with the Linux commit

  46896c73c1a4 ("KVM: svm: add support for RDTSCP")

so reenable RDTSCP support on those CPU models.

Opteron_G2 - being family 15, model 6, doesn't have RDTSCP support
(the real hardware doesn't have it. K8 got RDTSCP support with the NPT
models, i.e., models >= 0x40).

Document the host's minimum required kernel version, while at it.

Signed-off-by: Borislav Petkov <bp@suse.de>
---
v2: Keep Opteron_G2 in PC_COMPAT_2_4 unchanged.

 include/hw/i386/pc.h | 13 +++++++++++++
 qemu-doc.texi        | 13 +++++++++++++
 target/i386/cpu.c    | 11 ++++-------
 3 files changed, 30 insertions(+), 7 deletions(-)

diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
index 9d29c4b1df2a..236d962d2547 100644
--- a/include/hw/i386/pc.h
+++ b/include/hw/i386/pc.h
@@ -296,6 +296,19 @@ bool e820_get_entry(int, uint32_t, uint64_t *, uint64_t *);
 
 #define PC_COMPAT_3_1 \
     HW_COMPAT_3_1 \
+    {\
+        .driver   = "Opteron_G3" "-" TYPE_X86_CPU,\
+        .property = "rdtscp",\
+        .value    = "off",\
+    },{\
+        .driver   = "Opteron_G4" "-" TYPE_X86_CPU,\
+        .property = "rdtscp",\
+        .value    = "off",\
+    },{\
+        .driver   = "Opteron_G5" "-" TYPE_X86_CPU,\
+        .property = "rdtscp",\
+        .value    = "off",\
+    },
 
 #define PC_COMPAT_3_0 \
     HW_COMPAT_3_0 \
diff --git a/qemu-doc.texi b/qemu-doc.texi
index f7ad1dfe4b69..16b955cbf985 100644
--- a/qemu-doc.texi
+++ b/qemu-doc.texi
@@ -37,6 +37,7 @@
 * QEMU System emulator for non PC targets::
 * QEMU Guest Agent::
 * QEMU User space emulator::
+* System requirements::
 * Implementation notes::
 * Deprecated features::
 * Supported build platforms::
@@ -2813,6 +2814,18 @@ Act as if the host page size was 'pagesize' bytes
 Run the emulation in single step mode.
 @end table
 
+@node System requirements
+@chapter System requirements
+
+@section KVM kernel module
+
+On x86_64 hosts, the default set of CPU features enabled by the KVM accelerator
+require the host to be running Linux v4.5 or newer.
+
+The OpteronG[345] CPU models require KVM support for RDTSCP, which was
+added with Linux 4.5 which is supported by the major distros. And even
+if RHEL7 has kernel 3.10, KVM there has the required functionality there
+to make it close to a 4.5 or newer kernel.
 
 @include qemu-tech.texi
 
diff --git a/target/i386/cpu.c b/target/i386/cpu.c
index f81d35e1f914..a7def11b27cd 100644
--- a/target/i386/cpu.c
+++ b/target/i386/cpu.c
@@ -2706,7 +2706,6 @@ static X86CPUDefinition builtin_x86_defs[] = {
             CPUID_DE | CPUID_FP87,
         .features[FEAT_1_ECX] =
             CPUID_EXT_CX16 | CPUID_EXT_SSE3,
-        /* Missing: CPUID_EXT2_RDTSCP */
         .features[FEAT_8000_0001_EDX] =
             CPUID_EXT2_LM | CPUID_EXT2_NX | CPUID_EXT2_SYSCALL,
         .features[FEAT_8000_0001_ECX] =
@@ -2730,9 +2729,9 @@ static X86CPUDefinition builtin_x86_defs[] = {
         .features[FEAT_1_ECX] =
             CPUID_EXT_POPCNT | CPUID_EXT_CX16 | CPUID_EXT_MONITOR |
             CPUID_EXT_SSE3,
-        /* Missing: CPUID_EXT2_RDTSCP */
         .features[FEAT_8000_0001_EDX] =
-            CPUID_EXT2_LM | CPUID_EXT2_NX | CPUID_EXT2_SYSCALL,
+            CPUID_EXT2_LM | CPUID_EXT2_NX | CPUID_EXT2_SYSCALL |
+            CPUID_EXT2_RDTSCP,
         .features[FEAT_8000_0001_ECX] =
             CPUID_EXT3_MISALIGNSSE | CPUID_EXT3_SSE4A |
             CPUID_EXT3_ABM | CPUID_EXT3_SVM | CPUID_EXT3_LAHF_LM,
@@ -2757,10 +2756,9 @@ static X86CPUDefinition builtin_x86_defs[] = {
             CPUID_EXT_POPCNT | CPUID_EXT_SSE42 | CPUID_EXT_SSE41 |
             CPUID_EXT_CX16 | CPUID_EXT_SSSE3 | CPUID_EXT_PCLMULQDQ |
             CPUID_EXT_SSE3,
-        /* Missing: CPUID_EXT2_RDTSCP */
         .features[FEAT_8000_0001_EDX] =
             CPUID_EXT2_LM | CPUID_EXT2_PDPE1GB | CPUID_EXT2_NX |
-            CPUID_EXT2_SYSCALL,
+            CPUID_EXT2_SYSCALL | CPUID_EXT2_RDTSCP,
         .features[FEAT_8000_0001_ECX] =
             CPUID_EXT3_FMA4 | CPUID_EXT3_XOP |
             CPUID_EXT3_3DNOWPREFETCH | CPUID_EXT3_MISALIGNSSE |
@@ -2788,10 +2786,9 @@ static X86CPUDefinition builtin_x86_defs[] = {
             CPUID_EXT_AES | CPUID_EXT_POPCNT | CPUID_EXT_SSE42 |
             CPUID_EXT_SSE41 | CPUID_EXT_CX16 | CPUID_EXT_FMA |
             CPUID_EXT_SSSE3 | CPUID_EXT_PCLMULQDQ | CPUID_EXT_SSE3,
-        /* Missing: CPUID_EXT2_RDTSCP */
         .features[FEAT_8000_0001_EDX] =
             CPUID_EXT2_LM | CPUID_EXT2_PDPE1GB | CPUID_EXT2_NX |
-            CPUID_EXT2_SYSCALL,
+            CPUID_EXT2_SYSCALL | CPUID_EXT2_RDTSCP,
         .features[FEAT_8000_0001_ECX] =
             CPUID_EXT3_TBM | CPUID_EXT3_FMA4 | CPUID_EXT3_XOP |
             CPUID_EXT3_3DNOWPREFETCH | CPUID_EXT3_MISALIGNSSE |
-- 
2.19.1

-- 
Regards/Gruss,
    Boris.

Good mailing practices for 400: avoid top-posting and trim the reply.

^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [Qemu-devel] [PATCH -v2] target-i386: Reenable RDTSCP support on Opteron_G[345] CPU models CPU models
@ 2018-12-12 20:08                         ` Borislav Petkov
  0 siblings, 0 replies; 22+ messages in thread
From: Borislav Petkov @ 2018-12-12 20:08 UTC (permalink / raw)
  To: Eduardo Habkost
  Cc: Daniel P. Berrangé,
	Paolo Bonzini, Jörg Rödel, Andre Przywara, kvm ML,
	lkml, Tom Lendacky, Eric Blake, qemu-devel

On Wed, Dec 12, 2018 at 05:52:35PM -0200, Eduardo Habkost wrote:
> Why did you remove this entry from PC_COMPAT_2_4?
> 
> We must keep compatibility with old behavior of Opteron_G2 on
> pc-2.4, even if the old behavior was incorrect.

Ok, hunk reverted. v2 below.

Thx.

---
From: Borislav Petkov <bp@suse.de>

The missing functionality was added ~3 years ago with the Linux commit

  46896c73c1a4 ("KVM: svm: add support for RDTSCP")

so reenable RDTSCP support on those CPU models.

Opteron_G2 - being family 15, model 6, doesn't have RDTSCP support
(the real hardware doesn't have it. K8 got RDTSCP support with the NPT
models, i.e., models >= 0x40).

Document the host's minimum required kernel version, while at it.

Signed-off-by: Borislav Petkov <bp@suse.de>
---
v2: Keep Opteron_G2 in PC_COMPAT_2_4 unchanged.

 include/hw/i386/pc.h | 13 +++++++++++++
 qemu-doc.texi        | 13 +++++++++++++
 target/i386/cpu.c    | 11 ++++-------
 3 files changed, 30 insertions(+), 7 deletions(-)

diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
index 9d29c4b1df2a..236d962d2547 100644
--- a/include/hw/i386/pc.h
+++ b/include/hw/i386/pc.h
@@ -296,6 +296,19 @@ bool e820_get_entry(int, uint32_t, uint64_t *, uint64_t *);
 
 #define PC_COMPAT_3_1 \
     HW_COMPAT_3_1 \
+    {\
+        .driver   = "Opteron_G3" "-" TYPE_X86_CPU,\
+        .property = "rdtscp",\
+        .value    = "off",\
+    },{\
+        .driver   = "Opteron_G4" "-" TYPE_X86_CPU,\
+        .property = "rdtscp",\
+        .value    = "off",\
+    },{\
+        .driver   = "Opteron_G5" "-" TYPE_X86_CPU,\
+        .property = "rdtscp",\
+        .value    = "off",\
+    },
 
 #define PC_COMPAT_3_0 \
     HW_COMPAT_3_0 \
diff --git a/qemu-doc.texi b/qemu-doc.texi
index f7ad1dfe4b69..16b955cbf985 100644
--- a/qemu-doc.texi
+++ b/qemu-doc.texi
@@ -37,6 +37,7 @@
 * QEMU System emulator for non PC targets::
 * QEMU Guest Agent::
 * QEMU User space emulator::
+* System requirements::
 * Implementation notes::
 * Deprecated features::
 * Supported build platforms::
@@ -2813,6 +2814,18 @@ Act as if the host page size was 'pagesize' bytes
 Run the emulation in single step mode.
 @end table
 
+@node System requirements
+@chapter System requirements
+
+@section KVM kernel module
+
+On x86_64 hosts, the default set of CPU features enabled by the KVM accelerator
+require the host to be running Linux v4.5 or newer.
+
+The OpteronG[345] CPU models require KVM support for RDTSCP, which was
+added with Linux 4.5 which is supported by the major distros. And even
+if RHEL7 has kernel 3.10, KVM there has the required functionality there
+to make it close to a 4.5 or newer kernel.
 
 @include qemu-tech.texi
 
diff --git a/target/i386/cpu.c b/target/i386/cpu.c
index f81d35e1f914..a7def11b27cd 100644
--- a/target/i386/cpu.c
+++ b/target/i386/cpu.c
@@ -2706,7 +2706,6 @@ static X86CPUDefinition builtin_x86_defs[] = {
             CPUID_DE | CPUID_FP87,
         .features[FEAT_1_ECX] =
             CPUID_EXT_CX16 | CPUID_EXT_SSE3,
-        /* Missing: CPUID_EXT2_RDTSCP */
         .features[FEAT_8000_0001_EDX] =
             CPUID_EXT2_LM | CPUID_EXT2_NX | CPUID_EXT2_SYSCALL,
         .features[FEAT_8000_0001_ECX] =
@@ -2730,9 +2729,9 @@ static X86CPUDefinition builtin_x86_defs[] = {
         .features[FEAT_1_ECX] =
             CPUID_EXT_POPCNT | CPUID_EXT_CX16 | CPUID_EXT_MONITOR |
             CPUID_EXT_SSE3,
-        /* Missing: CPUID_EXT2_RDTSCP */
         .features[FEAT_8000_0001_EDX] =
-            CPUID_EXT2_LM | CPUID_EXT2_NX | CPUID_EXT2_SYSCALL,
+            CPUID_EXT2_LM | CPUID_EXT2_NX | CPUID_EXT2_SYSCALL |
+            CPUID_EXT2_RDTSCP,
         .features[FEAT_8000_0001_ECX] =
             CPUID_EXT3_MISALIGNSSE | CPUID_EXT3_SSE4A |
             CPUID_EXT3_ABM | CPUID_EXT3_SVM | CPUID_EXT3_LAHF_LM,
@@ -2757,10 +2756,9 @@ static X86CPUDefinition builtin_x86_defs[] = {
             CPUID_EXT_POPCNT | CPUID_EXT_SSE42 | CPUID_EXT_SSE41 |
             CPUID_EXT_CX16 | CPUID_EXT_SSSE3 | CPUID_EXT_PCLMULQDQ |
             CPUID_EXT_SSE3,
-        /* Missing: CPUID_EXT2_RDTSCP */
         .features[FEAT_8000_0001_EDX] =
             CPUID_EXT2_LM | CPUID_EXT2_PDPE1GB | CPUID_EXT2_NX |
-            CPUID_EXT2_SYSCALL,
+            CPUID_EXT2_SYSCALL | CPUID_EXT2_RDTSCP,
         .features[FEAT_8000_0001_ECX] =
             CPUID_EXT3_FMA4 | CPUID_EXT3_XOP |
             CPUID_EXT3_3DNOWPREFETCH | CPUID_EXT3_MISALIGNSSE |
@@ -2788,10 +2786,9 @@ static X86CPUDefinition builtin_x86_defs[] = {
             CPUID_EXT_AES | CPUID_EXT_POPCNT | CPUID_EXT_SSE42 |
             CPUID_EXT_SSE41 | CPUID_EXT_CX16 | CPUID_EXT_FMA |
             CPUID_EXT_SSSE3 | CPUID_EXT_PCLMULQDQ | CPUID_EXT_SSE3,
-        /* Missing: CPUID_EXT2_RDTSCP */
         .features[FEAT_8000_0001_EDX] =
             CPUID_EXT2_LM | CPUID_EXT2_PDPE1GB | CPUID_EXT2_NX |
-            CPUID_EXT2_SYSCALL,
+            CPUID_EXT2_SYSCALL | CPUID_EXT2_RDTSCP,
         .features[FEAT_8000_0001_ECX] =
             CPUID_EXT3_TBM | CPUID_EXT3_FMA4 | CPUID_EXT3_XOP |
             CPUID_EXT3_3DNOWPREFETCH | CPUID_EXT3_MISALIGNSSE |
-- 
2.19.1

-- 
Regards/Gruss,
    Boris.

Good mailing practices for 400: avoid top-posting and trim the reply.

^ permalink raw reply related	[flat|nested] 22+ messages in thread

* Re: [PATCH -v2] target-i386: Reenable RDTSCP support on Opteron_G[345] CPU models CPU models
  2018-12-12 20:08                         ` [Qemu-devel] " Borislav Petkov
@ 2018-12-20 12:10                           ` Eduardo Habkost
  -1 siblings, 0 replies; 22+ messages in thread
From: Eduardo Habkost @ 2018-12-20 12:10 UTC (permalink / raw)
  To: Borislav Petkov
  Cc: Daniel P. Berrangé,
	Paolo Bonzini, Jörg Rödel, Andre Przywara, kvm ML,
	lkml, Tom Lendacky, Eric Blake, qemu-devel

On Wed, Dec 12, 2018 at 09:08:03PM +0100, Borislav Petkov wrote:
> On Wed, Dec 12, 2018 at 05:52:35PM -0200, Eduardo Habkost wrote:
> > Why did you remove this entry from PC_COMPAT_2_4?
> > 
> > We must keep compatibility with old behavior of Opteron_G2 on
> > pc-2.4, even if the old behavior was incorrect.
> 
> Ok, hunk reverted. v2 below.
> 
> Thx.
> 
> ---
> From: Borislav Petkov <bp@suse.de>
> 
> The missing functionality was added ~3 years ago with the Linux commit
> 
>   46896c73c1a4 ("KVM: svm: add support for RDTSCP")
> 
> so reenable RDTSCP support on those CPU models.
> 
> Opteron_G2 - being family 15, model 6, doesn't have RDTSCP support
> (the real hardware doesn't have it. K8 got RDTSCP support with the NPT
> models, i.e., models >= 0x40).
> 
> Document the host's minimum required kernel version, while at it.
> 
> Signed-off-by: Borislav Petkov <bp@suse.de>

Queued, thanks.

-- 
Eduardo

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [Qemu-devel] [PATCH -v2] target-i386: Reenable RDTSCP support on Opteron_G[345] CPU models CPU models
@ 2018-12-20 12:10                           ` Eduardo Habkost
  0 siblings, 0 replies; 22+ messages in thread
From: Eduardo Habkost @ 2018-12-20 12:10 UTC (permalink / raw)
  To: Borislav Petkov
  Cc: Daniel P. Berrangé,
	Paolo Bonzini, Jörg Rödel, Andre Przywara, kvm ML,
	lkml, Tom Lendacky, Eric Blake, qemu-devel

On Wed, Dec 12, 2018 at 09:08:03PM +0100, Borislav Petkov wrote:
> On Wed, Dec 12, 2018 at 05:52:35PM -0200, Eduardo Habkost wrote:
> > Why did you remove this entry from PC_COMPAT_2_4?
> > 
> > We must keep compatibility with old behavior of Opteron_G2 on
> > pc-2.4, even if the old behavior was incorrect.
> 
> Ok, hunk reverted. v2 below.
> 
> Thx.
> 
> ---
> From: Borislav Petkov <bp@suse.de>
> 
> The missing functionality was added ~3 years ago with the Linux commit
> 
>   46896c73c1a4 ("KVM: svm: add support for RDTSCP")
> 
> so reenable RDTSCP support on those CPU models.
> 
> Opteron_G2 - being family 15, model 6, doesn't have RDTSCP support
> (the real hardware doesn't have it. K8 got RDTSCP support with the NPT
> models, i.e., models >= 0x40).
> 
> Document the host's minimum required kernel version, while at it.
> 
> Signed-off-by: Borislav Petkov <bp@suse.de>

Queued, thanks.

-- 
Eduardo

^ permalink raw reply	[flat|nested] 22+ messages in thread

end of thread, other threads:[~2018-12-20 12:10 UTC | newest]

Thread overview: 22+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-12-10 18:13 kvm: RDTSCP on AMD Borislav Petkov
2018-12-10 18:37 ` Eduardo Habkost
2018-12-10 18:41   ` Borislav Petkov
2018-12-10 19:06     ` Eduardo Habkost
2018-12-10 19:42       ` Borislav Petkov
2018-12-10 20:08         ` Eduardo Habkost
2018-12-10 20:39           ` Borislav Petkov
2018-12-11 10:38           ` Daniel P. Berrangé
2018-12-11 11:55             ` Eduardo Habkost
2018-12-11 14:35               ` Daniel P. Berrangé
2018-12-11 15:23               ` Paolo Bonzini
2018-12-11 15:30                 ` Daniel P. Berrangé
2018-12-11 16:14                   ` [PATCH] target-i386: Reenable RDTSCP support on Opteron_G[345] CPU models Borislav Petkov
2018-12-11 16:14                     ` [Qemu-devel] " Borislav Petkov
2018-12-12 19:52                     ` Eduardo Habkost
2018-12-12 19:52                       ` [Qemu-devel] " Eduardo Habkost
2018-12-12 20:08                       ` [PATCH -v2] target-i386: Reenable RDTSCP support on Opteron_G[345] CPU models " Borislav Petkov
2018-12-12 20:08                         ` [Qemu-devel] " Borislav Petkov
2018-12-20 12:10                         ` Eduardo Habkost
2018-12-20 12:10                           ` [Qemu-devel] " Eduardo Habkost
2018-12-10 19:47     ` kvm: RDTSCP on AMD Eduardo Habkost
2018-12-10 20:16       ` Borislav Petkov

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.