From: Eduardo Habkost <ehabkost@redhat.com>
To: Brijesh Singh <brijesh.singh@amd.com>
Cc: "Dr. David Alan Gilbert" <dgilbert@redhat.com>,
qemu-devel@nongnu.org, kvm@vger.kernel.org,
Paolo Bonzini <pbonzini@redhat.com>,
Tom Lendacky <Thomas.Lendacky@amd.com>,
Peter Maydell <peter.maydell@linaro.org>,
Richard Henderson <richard.henderson@linaro.org>,
"Edgar E. Iglesias" <edgar.iglesias@xilinx.com>,
Stefan Hajnoczi <stefanha@gmail.com>,
Eric Blake <eblake@redhat.com>,
"Michael S. Tsirkin" <mst@redhat.com>,
"Daniel P . Berrange" <berrange@redhat.com>,
Richard Henderson <rth@twiddle.net>
Subject: Re: [PATCH v6 05/23] target/i386: add memory encryption feature cpuid support
Date: Wed, 31 Jan 2018 11:41:02 -0200 [thread overview]
Message-ID: <20180131134102.GI26425@localhost.localdomain> (raw)
In-Reply-To: <c60b5f53-2f50-1866-a2b9-fda8b7c2be39@amd.com>
On Tue, Jan 30, 2018 at 03:46:45PM -0600, Brijesh Singh wrote:
>
>
> On 1/30/18 11:49 AM, Dr. David Alan Gilbert wrote:
> > * Brijesh Singh (brijesh.singh@amd.com) wrote:
> >> AMD EPYC processors support memory encryption feature. The feature
> >> is reported through CPUID 8000_001F[EAX].
> >>
> >> Fn8000_001F [EAX]:
> >> Bit 0 Secure Memory Encryption (SME) supported
> >> Bit 1 Secure Encrypted Virtualization (SEV) supported
> >> Bit 2 Page flush MSR supported
> >> Bit 3 Ecrypted State (SEV-ES) support
> >>
> >> when memory encryption feature is reported, CPUID 8000_001F[EBX] should
> >> provide additional information regarding the feature (such as which page
> >> table bit is used to mark pages as encrypted etc). The information in EBX
> >> and ECX may vary from one family to another hence we use the host cpuid
> >> to populate the EBX information.
> > That's going to make it interesting for migration. If the guest needs
> > to know that C-bit position then you presumably can't migrate between
> > those two host types, but we wouldn't have anything that currently
> > stops us.
> > We already have similar problems with variations in physical address
> > size but normally get away with that, especially on smaller VMs.
>
> Dave,
>
> While building the page tables guest need to know the C-bit position.
> The C-bit position in the guest is same as C-bit position on the host.
> For migration case, we should be able to migrate SEV guest on same host
> type (i.e all EPYC and Ryzen CPUs are based on family 17 and we should
> be okay migrating the SEV guests among those host types). Since C-bit
> position is not fixed hence migrating to different host family will be
> an issue.
Thanks for the explanation. If this affects ability to migrate,
you need to either:
a) not report the "sev" property on
query-cpu-model-expansion type=static output (because the
feature is not migration-safe); or
b) make the C-bit position configurable, and let management
explicitly specify it. In this case, you need to validate the
configured C-bit position and prevent the VM from running if
it doesn't match the host. This is more work, but would make
the feature migration-safe and more useful for management
software.
Option (b) is preferred because it lets management software
ensure the VM is migratable to a host before starting migration.
There was a very recent discussion about migration-safe features
and the problems with relaying host CPUID data directly to the
guest. Look for the "i386: Add Intel Processor Trace feature
support" threads in qemu-devel for more info.
I'm looking for a way to document these rules concisely so people
touching the CPUID code are aware of the available options.
--
Eduardo
WARNING: multiple messages have this Message-ID (diff)
From: Eduardo Habkost <ehabkost@redhat.com>
To: Brijesh Singh <brijesh.singh@amd.com>
Cc: "Dr. David Alan Gilbert" <dgilbert@redhat.com>,
qemu-devel@nongnu.org, kvm@vger.kernel.org,
Paolo Bonzini <pbonzini@redhat.com>,
Tom Lendacky <Thomas.Lendacky@amd.com>,
Peter Maydell <peter.maydell@linaro.org>,
Richard Henderson <richard.henderson@linaro.org>,
"Edgar E. Iglesias" <edgar.iglesias@xilinx.com>,
Stefan Hajnoczi <stefanha@gmail.com>,
Eric Blake <eblake@redhat.com>,
"Michael S. Tsirkin" <mst@redhat.com>,
"Daniel P . Berrange" <berrange@redhat.com>,
Richard Henderson <rth@twiddle.net>
Subject: Re: [Qemu-devel] [PATCH v6 05/23] target/i386: add memory encryption feature cpuid support
Date: Wed, 31 Jan 2018 11:41:02 -0200 [thread overview]
Message-ID: <20180131134102.GI26425@localhost.localdomain> (raw)
In-Reply-To: <c60b5f53-2f50-1866-a2b9-fda8b7c2be39@amd.com>
On Tue, Jan 30, 2018 at 03:46:45PM -0600, Brijesh Singh wrote:
>
>
> On 1/30/18 11:49 AM, Dr. David Alan Gilbert wrote:
> > * Brijesh Singh (brijesh.singh@amd.com) wrote:
> >> AMD EPYC processors support memory encryption feature. The feature
> >> is reported through CPUID 8000_001F[EAX].
> >>
> >> Fn8000_001F [EAX]:
> >> Bit 0 Secure Memory Encryption (SME) supported
> >> Bit 1 Secure Encrypted Virtualization (SEV) supported
> >> Bit 2 Page flush MSR supported
> >> Bit 3 Ecrypted State (SEV-ES) support
> >>
> >> when memory encryption feature is reported, CPUID 8000_001F[EBX] should
> >> provide additional information regarding the feature (such as which page
> >> table bit is used to mark pages as encrypted etc). The information in EBX
> >> and ECX may vary from one family to another hence we use the host cpuid
> >> to populate the EBX information.
> > That's going to make it interesting for migration. If the guest needs
> > to know that C-bit position then you presumably can't migrate between
> > those two host types, but we wouldn't have anything that currently
> > stops us.
> > We already have similar problems with variations in physical address
> > size but normally get away with that, especially on smaller VMs.
>
> Dave,
>
> While building the page tables guest need to know the C-bit position.
> The C-bit position in the guest is same as C-bit position on the host.
> For migration case, we should be able to migrate SEV guest on same host
> type (i.e all EPYC and Ryzen CPUs are based on family 17 and we should
> be okay migrating the SEV guests among those host types). Since C-bit
> position is not fixed hence migrating to different host family will be
> an issue.
Thanks for the explanation. If this affects ability to migrate,
you need to either:
a) not report the "sev" property on
query-cpu-model-expansion type=static output (because the
feature is not migration-safe); or
b) make the C-bit position configurable, and let management
explicitly specify it. In this case, you need to validate the
configured C-bit position and prevent the VM from running if
it doesn't match the host. This is more work, but would make
the feature migration-safe and more useful for management
software.
Option (b) is preferred because it lets management software
ensure the VM is migratable to a host before starting migration.
There was a very recent discussion about migration-safe features
and the problems with relaying host CPUID data directly to the
guest. Look for the "i386: Add Intel Processor Trace feature
support" threads in qemu-devel for more info.
I'm looking for a way to document these rules concisely so people
touching the CPUID code are aware of the available options.
--
Eduardo
next prev parent reply other threads:[~2018-01-31 13:41 UTC|newest]
Thread overview: 118+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-01-29 17:41 [PATCH v6 00/23] x86: Secure Encrypted Virtualization (AMD) Brijesh Singh
2018-01-29 17:41 ` [Qemu-devel] " Brijesh Singh
2018-01-29 17:41 ` [PATCH v6 01/23] memattrs: add debug attribute Brijesh Singh
2018-01-29 17:41 ` [Qemu-devel] " Brijesh Singh
2018-01-30 21:59 ` Edgar E. Iglesias
2018-01-30 21:59 ` [Qemu-devel] " Edgar E. Iglesias
2018-01-29 17:41 ` [PATCH v6 02/23] exec: add ram_debug_ops support Brijesh Singh
2018-01-29 17:41 ` [Qemu-devel] " Brijesh Singh
2018-01-30 21:59 ` Edgar E. Iglesias
2018-01-30 21:59 ` [Qemu-devel] " Edgar E. Iglesias
2018-01-30 22:34 ` Brijesh Singh
2018-01-30 22:34 ` [Qemu-devel] " Brijesh Singh
2018-01-30 22:37 ` Edgar E. Iglesias
2018-01-30 22:37 ` [Qemu-devel] " Edgar E. Iglesias
2018-01-30 23:26 ` Brijesh Singh
2018-01-30 23:26 ` [Qemu-devel] " Brijesh Singh
2018-01-29 17:41 ` [PATCH v6 03/23] exec: add debug version of physical memory read and write API Brijesh Singh
2018-01-29 17:41 ` [Qemu-devel] " Brijesh Singh
2018-01-29 17:41 ` [PATCH v6 04/23] monitor/i386: use debug APIs when accessing guest memory Brijesh Singh
2018-01-29 17:41 ` [Qemu-devel] " Brijesh Singh
2018-01-29 17:41 ` [PATCH v6 05/23] target/i386: add memory encryption feature cpuid support Brijesh Singh
2018-01-29 17:41 ` [Qemu-devel] " Brijesh Singh
2018-01-30 17:49 ` Dr. David Alan Gilbert
2018-01-30 17:49 ` [Qemu-devel] " Dr. David Alan Gilbert
2018-01-30 21:46 ` Brijesh Singh
2018-01-30 21:46 ` [Qemu-devel] " Brijesh Singh
2018-01-30 22:15 ` Brijesh Singh
2018-01-30 22:15 ` [Qemu-devel] " Brijesh Singh
2018-01-31 9:57 ` Dr. David Alan Gilbert
2018-01-31 9:57 ` [Qemu-devel] " Dr. David Alan Gilbert
2018-01-31 13:41 ` Eduardo Habkost [this message]
2018-01-31 13:41 ` Eduardo Habkost
2018-01-31 16:05 ` Brijesh Singh
2018-01-31 16:05 ` [Qemu-devel] " Brijesh Singh
2018-01-29 17:41 ` [PATCH v6 06/23] machine: add -memory-encryption property Brijesh Singh
2018-01-29 17:41 ` [Qemu-devel] " Brijesh Singh
2018-01-29 17:41 ` [PATCH v6 07/23] kvm: update kvm.h to include memory encryption ioctls Brijesh Singh
2018-01-29 17:41 ` [Qemu-devel] " Brijesh Singh
2018-01-29 17:41 ` [PATCH v6 08/23] docs: add AMD Secure Encrypted Virtualization (SEV) Brijesh Singh
2018-01-29 17:41 ` [Qemu-devel] " Brijesh Singh
2018-01-29 17:41 ` [PATCH v6 09/23] accel: add Secure Encrypted Virtulization (SEV) object Brijesh Singh
2018-01-29 17:41 ` [Qemu-devel] " Brijesh Singh
2018-01-29 17:41 ` [PATCH v6 10/23] sev: add command to initialize the memory encryption context Brijesh Singh
2018-01-29 17:41 ` [Qemu-devel] " Brijesh Singh
2018-02-01 12:13 ` Dr. David Alan Gilbert
2018-02-01 12:13 ` [Qemu-devel] " Dr. David Alan Gilbert
2018-02-01 15:33 ` Brijesh Singh
2018-02-01 15:33 ` [Qemu-devel] " Brijesh Singh
2018-02-01 15:46 ` Dr. David Alan Gilbert
2018-02-01 15:46 ` [Qemu-devel] " Dr. David Alan Gilbert
2018-01-29 17:41 ` [PATCH v6 11/23] sev: register the guest memory range which may contain encrypted data Brijesh Singh
2018-01-29 17:41 ` [Qemu-devel] " Brijesh Singh
2018-01-29 17:41 ` [PATCH v6 12/23] kvm: introduce memory encryption APIs Brijesh Singh
2018-01-29 17:41 ` [Qemu-devel] " Brijesh Singh
2018-01-29 17:41 ` [PATCH v6 13/23] hmp: display memory encryption support in 'info kvm' Brijesh Singh
2018-01-29 17:41 ` [Qemu-devel] " Brijesh Singh
2018-01-31 17:43 ` Markus Armbruster
2018-02-01 15:21 ` Brijesh Singh
2018-02-01 17:58 ` Dr. David Alan Gilbert
2018-02-01 17:58 ` [Qemu-devel] " Dr. David Alan Gilbert
2018-02-01 19:55 ` Brijesh Singh
2018-02-01 19:55 ` [Qemu-devel] " Brijesh Singh
2018-02-01 20:04 ` Dr. David Alan Gilbert
2018-02-01 20:04 ` [Qemu-devel] " Dr. David Alan Gilbert
2018-02-02 13:08 ` Daniel P. Berrangé
2018-02-02 13:08 ` [Qemu-devel] " Daniel P. Berrangé
2018-02-02 13:46 ` Brijesh Singh
2018-02-02 13:46 ` [Qemu-devel] " Brijesh Singh
2018-02-02 15:24 ` Dr. David Alan Gilbert
2018-02-02 15:24 ` [Qemu-devel] " Dr. David Alan Gilbert
2018-01-29 17:41 ` [PATCH v6 14/23] sev: add command to create launch memory encryption context Brijesh Singh
2018-01-29 17:41 ` [Qemu-devel] " Brijesh Singh
2018-01-29 17:41 ` [PATCH v6 15/23] sev: add command to encrypt guest memory region Brijesh Singh
2018-01-29 17:41 ` [Qemu-devel] " Brijesh Singh
2018-01-29 17:41 ` [PATCH v6 16/23] target/i386: encrypt bios rom Brijesh Singh
2018-01-29 17:41 ` [Qemu-devel] " Brijesh Singh
2018-01-29 17:41 ` [PATCH v6 17/23] qapi: add SEV_MEASUREMENT event Brijesh Singh
2018-01-29 17:41 ` [Qemu-devel] " Brijesh Singh
2018-01-31 17:45 ` Markus Armbruster
2018-02-01 15:25 ` Brijesh Singh
2018-02-01 15:28 ` Eric Blake
2018-02-01 15:28 ` Eric Blake
2018-01-29 17:41 ` [PATCH v6 18/23] sev: emit the " Brijesh Singh
2018-01-29 17:41 ` [Qemu-devel] " Brijesh Singh
2018-01-30 20:08 ` Dr. David Alan Gilbert
2018-01-30 20:08 ` [Qemu-devel] " Dr. David Alan Gilbert
2018-01-30 22:13 ` Brijesh Singh
2018-01-30 22:13 ` [Qemu-devel] " Brijesh Singh
2018-02-01 17:27 ` Dr. David Alan Gilbert
2018-02-01 17:27 ` [Qemu-devel] " Dr. David Alan Gilbert
2018-02-02 15:11 ` Brijesh Singh
2018-02-02 15:11 ` [Qemu-devel] " Brijesh Singh
2018-02-02 15:16 ` Daniel P. Berrangé
2018-02-02 15:16 ` [Qemu-devel] " Daniel P. Berrangé
2018-02-08 16:17 ` Brijesh Singh
2018-02-08 16:17 ` [Qemu-devel] " Brijesh Singh
2018-02-08 16:22 ` Daniel P. Berrangé
2018-01-29 17:41 ` [PATCH v6 19/23] sev: Finalize the SEV guest launch flow Brijesh Singh
2018-01-29 17:41 ` [Qemu-devel] " Brijesh Singh
2018-01-29 17:41 ` [PATCH v6 20/23] hw: i386: set ram_debug_ops when memory encryption is enabled Brijesh Singh
2018-01-29 17:41 ` [Qemu-devel] " Brijesh Singh
2018-01-29 17:41 ` [PATCH v6 21/23] sev: add debug encrypt and decrypt commands Brijesh Singh
2018-01-29 17:41 ` [Qemu-devel] " Brijesh Singh
2018-01-29 17:41 ` [PATCH v6 22/23] target/i386: clear C-bit when walking SEV guest page table Brijesh Singh
2018-01-29 17:41 ` [Qemu-devel] " Brijesh Singh
2018-01-29 17:41 ` [PATCH v6 23/23] sev: add migration blocker Brijesh Singh
2018-01-29 17:41 ` [Qemu-devel] " Brijesh Singh
2018-01-29 18:13 ` [Qemu-devel] [PATCH v6 00/23] x86: Secure Encrypted Virtualization (AMD) no-reply
2018-01-29 18:13 ` no-reply
2018-01-29 18:17 ` no-reply
2018-01-29 18:17 ` [Qemu-devel] " no-reply
2018-01-29 18:19 ` no-reply
2018-01-29 18:19 ` no-reply
2018-01-29 18:31 ` no-reply
2018-01-29 18:31 ` [Qemu-devel] " no-reply
2018-02-06 15:51 ` Bruce Rogers
2018-02-06 15:51 ` Bruce Rogers
2018-02-07 1:07 ` Brijesh Singh
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=20180131134102.GI26425@localhost.localdomain \
--to=ehabkost@redhat.com \
--cc=Thomas.Lendacky@amd.com \
--cc=berrange@redhat.com \
--cc=brijesh.singh@amd.com \
--cc=dgilbert@redhat.com \
--cc=eblake@redhat.com \
--cc=edgar.iglesias@xilinx.com \
--cc=kvm@vger.kernel.org \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.org \
--cc=rth@twiddle.net \
--cc=stefanha@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.