From: Eduardo Habkost <ehabkost@redhat.com>
To: Vincent Bernat <vincent@bernat.im>
Cc: Paolo Bonzini <pbonzini@redhat.com>,
Richard Henderson <rth@twiddle.net>,
qemu-devel@nongnu.org, Jiri Denemark <jdenemar@redhat.com>,
Kashyap Chamarthy <kchamart@redhat.com>
Subject: Re: [Qemu-devel] [PATCH x86-next v2] target-i386: add PCID flag to Westmere, Sandy Bridge and Ivy Bridge
Date: Fri, 12 Jan 2018 16:47:27 -0200 [thread overview]
Message-ID: <20180112184727.GJ6646@localhost.localdomain> (raw)
In-Reply-To: <20180109070112.30806-1-vincent@bernat.im>
[CCing Jiri, Kashyap]
On Tue, Jan 09, 2018 at 08:01:12AM +0100, Vincent Bernat wrote:
> PCID has been introduced in Westmere and, since Linux 3.6
> (ad756a1603c5), KVM exposes PCID flag if host has it. Update CPU model
> for Westmere, Sandy Bridge and Ivy Bridge accordingly.
>
> Ensure compat 2.11 keeps PCID disabled by default for those models and
> document the new requirement for host kernel.
>
> Signed-off-by: Vincent Bernat <vincent@bernat.im>
> ---
> include/hw/i386/pc.h | 14 +++++++++++++-
> qemu-doc.texi | 11 +++++++++++
> target/i386/cpu.c | 7 ++++---
> 3 files changed, 28 insertions(+), 4 deletions(-)
>
> diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
> index bb49165fe0a4..f4ccbfdc4ac2 100644
> --- a/include/hw/i386/pc.h
> +++ b/include/hw/i386/pc.h
> @@ -327,6 +327,18 @@ bool e820_get_entry(int, uint32_t, uint64_t *, uint64_t *);
> .driver = "Skylake-Server" "-" TYPE_X86_CPU,\
> .property = "clflushopt",\
> .value = "off",\
> + },{\
> + .driver = "Westmere-" TYPE_X86_CPU,\
> + .property = "pcid",\
> + .value = "off",\
> + },{\
It looks like there are Westmere CPUs out there without PCID
(e.g. Core i5 650).
The QEMU CPU model is not described as Core i5, though: it's
described as "E56xx/L56xx/X56xx". Should we add PCID anyway and
let people running Core i5 hosts deal with it manually when
updating the machine-type? Or should we add a "Westmere-PCID"
(maybe Westmere-EP?) CPU model?
Adding Westmere-PCID would require adding a Westmere-PCID-IBRS
CPU model too, so this is starting to look a bit ridiculous.
Sane VM management systems would know how to use
"-cpu Westmere,+pcid" without requiring new CPU model entries in
QEMU. What's missing in existing management stacks to allow that
to happen?
> + .driver = "SandyBridge-" TYPE_X86_CPU,\
> + .property = "pcid",\
> + .value = "off",\
> + },{\
> + .driver = "IvyBridge-" TYPE_X86_CPU,\
> + .property = "pcid",\
> + .value = "off",\
Now, proving a negative is more difficult: how can we be sure
that there are no SandyBridge and IvyBridge CPUs out there
without PCID?
> },
>
> #define PC_COMPAT_2_10 \
> @@ -351,7 +363,7 @@ bool e820_get_entry(int, uint32_t, uint64_t *, uint64_t *);
> .driver = "mch",\
> .property = "extended-tseg-mbytes",\
> .value = stringify(0),\
> - },\
> + },
>
> #define PC_COMPAT_2_8 \
> HW_COMPAT_2_8 \
> diff --git a/qemu-doc.texi b/qemu-doc.texi
> index 8d0c809ad5cf..9e1a03181427 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::
> * License::
> @@ -2565,6 +2566,16 @@ 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 v3.6 or newer. If the
> +minimum requirement is not met, the guest will not be runnable,
> +depending on the selected CPU model. Older emulated machines, like
> +``pc-q35-2.10'', may work with older kernels.
>
> @include qemu-tech.texi
>
> diff --git a/target/i386/cpu.c b/target/i386/cpu.c
> index 65f785c7e739..873c0151ef57 100644
> --- a/target/i386/cpu.c
> +++ b/target/i386/cpu.c
> @@ -1081,7 +1081,7 @@ static X86CPUDefinition builtin_x86_defs[] = {
> .features[FEAT_1_ECX] =
> CPUID_EXT_AES | CPUID_EXT_POPCNT | CPUID_EXT_SSE42 |
> CPUID_EXT_SSE41 | CPUID_EXT_CX16 | CPUID_EXT_SSSE3 |
> - CPUID_EXT_PCLMULQDQ | CPUID_EXT_SSE3,
> + CPUID_EXT_PCLMULQDQ | CPUID_EXT_SSE3 | CPUID_EXT_PCID,
> .features[FEAT_8000_0001_EDX] =
> CPUID_EXT2_LM | CPUID_EXT2_SYSCALL | CPUID_EXT2_NX,
> .features[FEAT_8000_0001_ECX] =
> @@ -1109,7 +1109,7 @@ static X86CPUDefinition builtin_x86_defs[] = {
> CPUID_EXT_TSC_DEADLINE_TIMER | 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_SSE3 | CPUID_EXT_PCID,
> .features[FEAT_8000_0001_EDX] =
> CPUID_EXT2_LM | CPUID_EXT2_RDTSCP | CPUID_EXT2_NX |
> CPUID_EXT2_SYSCALL,
> @@ -1140,7 +1140,8 @@ static X86CPUDefinition builtin_x86_defs[] = {
> CPUID_EXT_TSC_DEADLINE_TIMER | 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_F16C | CPUID_EXT_RDRAND,
> + CPUID_EXT_SSE3 | CPUID_EXT_F16C | CPUID_EXT_RDRAND |
> + CPUID_EXT_PCID,
> .features[FEAT_7_0_EBX] =
> CPUID_7_0_EBX_FSGSBASE | CPUID_7_0_EBX_SMEP |
> CPUID_7_0_EBX_ERMS,
> --
> 2.15.1
>
--
Eduardo
next prev parent reply other threads:[~2018-01-12 18:47 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-01-09 7:01 [Qemu-devel] [PATCH x86-next v2] target-i386: add PCID flag to Westmere, Sandy Bridge and Ivy Bridge Vincent Bernat
2018-01-12 18:47 ` Eduardo Habkost [this message]
2018-01-13 7:22 ` Vincent Bernat
2018-01-16 12:41 ` Eduardo Habkost
2018-01-16 12:55 ` Vincent Bernat
2018-01-16 15:33 ` Kashyap Chamarthy
2018-01-16 17:08 ` Eduardo Habkost
2018-01-16 17:43 ` Daniel P. Berrange
2018-01-16 22:45 ` Kashyap Chamarthy
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180112184727.GJ6646@localhost.localdomain \
--to=ehabkost@redhat.com \
--cc=jdenemar@redhat.com \
--cc=kchamart@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=rth@twiddle.net \
--cc=vincent@bernat.im \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).