linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Brijesh Singh <brijesh.singh@amd.com>
To: Andy Lutomirski <luto@amacapital.net>,
	Steve Rutherford <srutherford@google.com>
Cc: brijesh.singh@amd.com, "Ashish Kalra" <ashish.kalra@amd.com>,
	"Paolo Bonzini" <pbonzini@redhat.com>,
	"Thomas Gleixner" <tglx@linutronix.de>,
	"Ingo Molnar" <mingo@redhat.com>,
	"H. Peter Anvin" <hpa@zytor.com>,
	"Radim Krčmář" <rkrcmar@redhat.com>,
	"Joerg Roedel" <joro@8bytes.org>, "Borislav Petkov" <bp@suse.de>,
	"Tom Lendacky" <Thomas.Lendacky@amd.com>,
	"David Rientjes" <rientjes@google.com>,
	x86@kernel.org, "KVM list" <kvm@vger.kernel.org>,
	LKML <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 10/12] mm: x86: Invoke hypercall when page encryption status is changed
Date: Thu, 20 Feb 2020 09:54:46 -0600	[thread overview]
Message-ID: <3de6e962-3277-ddbd-8c78-eaf754973928@amd.com> (raw)
In-Reply-To: <52450536-AF7B-4206-8F05-CF387A216031@amacapital.net>



On 2/19/20 8:12 PM, Andy Lutomirski wrote:
> 
> 
>> On Feb 19, 2020, at 5:58 PM, Steve Rutherford <srutherford@google.com> wrote:
>>
>> On Wed, Feb 12, 2020 at 5:18 PM Ashish Kalra <Ashish.Kalra@amd.com> wrote:
>>>
>>> From: Brijesh Singh <brijesh.singh@amd.com>
>>>
>>> Invoke a hypercall when a memory region is changed from encrypted ->
>>> decrypted and vice versa. Hypervisor need to know the page encryption
>>> status during the guest migration.
>>
>> One messy aspect, which I think is fine in practice, is that this
>> presumes that pages are either treated as encrypted or decrypted. If
>> also done on SEV, the in-place re-encryption supported by SME would
>> break SEV migration. Linux doesn't do this now on SEV, and I don't
>> have an intuition for why Linux might want this, but we will need to
>> ensure it is never done in order to ensure that migration works down
>> the line. I don't believe the AMD manual promises this will work
>> anyway.
>>
>> Something feels a bit wasteful about having all future kernels
>> universally announce c-bit status when SEV is enabled, even if KVM
>> isn't listening, since it may be too old (or just not want to know).
>> Might be worth eliding the hypercalls if you get ENOSYS back? There
>> might be a better way of passing paravirt config metadata across than
>> just trying and seeing if the hypercall succeeds, but I'm not super
>> familiar with it.
> 
> I actually think this should be a hard requirement to merge this. The host needs to tell the guest that it supports this particular migration strategy and the guest needs to tell the host that it is using it.  And the guest needs a way to tell the host that it’s *not* using it right now due to kexec, for example.
> 
> I’m still uneasy about a guest being migrated in the window where the hypercall tracking and the page encryption bit don’t match.  I guess maybe corruption in this window doesn’t matter?
> 

I don't think there is a corruption issue here. Let's consider the below
case:

1) A page is transmitted as C=1 (encrypted)

2) During the migration window, the page encryption bit is changed
  to C=0 (decrypted)

3) #2 will cause a change in page table memory, thus dirty memory
  the tracker will create retransmission of the page table memory.

4) The page itself will not be re-transmitted because there was
  no change to the content of the page.

On destination, the read from the page will get the ciphertext.

The encryption bit change in the page table is used on the next access.
The user of the page needs to ensure that data is written with the
correct encryption bit before reading.

thanks

  parent reply	other threads:[~2020-02-20 15:55 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-02-13  1:14 [PATCH 00/12] SEV Live Migration Patchset Ashish Kalra
2020-02-13  1:14 ` [PATCH 01/12] KVM: SVM: Add KVM_SEV SEND_START command Ashish Kalra
2020-03-09 21:28   ` Steve Rutherford
2020-03-10  0:19     ` Steve Rutherford
2020-02-13  1:15 ` [PATCH 02/12] KVM: SVM: Add KVM_SEND_UPDATE_DATA command Ashish Kalra
2020-03-10  1:04   ` Steve Rutherford
2020-03-12  1:49     ` Ashish Kalra
2020-02-13  1:16 ` [PATCH 03/12] KVM: SVM: Add KVM_SEV_SEND_FINISH command Ashish Kalra
2020-03-10  1:09   ` Steve Rutherford
2020-02-13  1:16 ` [PATCH 04/12] KVM: SVM: Add support for KVM_SEV_RECEIVE_START command Ashish Kalra
2020-03-10  1:41   ` Steve Rutherford
2020-03-12  0:38     ` Ashish Kalra
2020-03-12  2:55       ` Steve Rutherford
2020-02-13  1:16 ` [PATCH 05/12] KVM: SVM: Add KVM_SEV_RECEIVE_UPDATE_DATA command Ashish Kalra
2020-02-13  1:16 ` [PATCH 06/12] KVM: SVM: Add KVM_SEV_RECEIVE_FINISH command Ashish Kalra
2020-02-13  1:17 ` [PATCH 07/12] KVM: x86: Add AMD SEV specific Hypercall3 Ashish Kalra
2020-02-13  1:17 ` [PATCH 08/12] KVM: X86: Introduce KVM_HC_PAGE_ENC_STATUS hypercall Ashish Kalra
2020-02-20  2:39   ` Steve Rutherford
2020-02-20  5:28     ` Ashish Kalra
2020-02-20 21:21       ` Ashish Kalra
2020-02-13  1:17 ` [PATCH 09/12] KVM: x86: Introduce KVM_GET_PAGE_ENC_BITMAP ioctl Ashish Kalra
2020-02-27 17:57   ` Venu Busireddy
2020-02-27 18:18     ` Venu Busireddy
2020-02-27 19:38       ` Ashish Kalra
2020-02-13  1:18 ` [PATCH 10/12] mm: x86: Invoke hypercall when page encryption status is changed Ashish Kalra
2020-02-13  5:42   ` Andy Lutomirski
2020-02-13 22:28     ` Ashish Kalra
2020-02-14 18:56       ` Andy Lutomirski
2020-02-14 20:36         ` Ashish Kalra
2020-02-20  1:58   ` Steve Rutherford
2020-02-20  2:12     ` Andy Lutomirski
2020-02-20  3:29       ` Steve Rutherford
2020-02-20 15:54       ` Brijesh Singh [this message]
2020-02-20 20:43         ` Steve Rutherford
2020-02-20 22:43           ` Brijesh Singh
2020-02-20 23:23             ` Steve Rutherford
2020-02-20 23:40               ` Andy Lutomirski
2020-02-13  1:18 ` [PATCH 11/12] KVM: x86: Introduce KVM_SET_PAGE_ENC_BITMAP ioctl Ashish Kalra
2020-02-13  1:18 ` [PATCH 12/12] KVM: x86: Introduce KVM_PAGE_ENC_BITMAP_RESET ioctl Ashish Kalra
2020-02-13  5:43 ` [PATCH 00/12] SEV Live Migration Patchset Andy Lutomirski
2020-02-13 23:09   ` Ashish Kalra
2020-02-14 18:58     ` Andy Lutomirski
2020-02-17 19:49       ` Ashish Kalra
2020-03-03  1:05         ` Steve Rutherford
2020-03-03  4:42           ` Ashish Kalra
2020-03-19 13:05         ` Paolo Bonzini
2020-03-19 16:18           ` Ashish Kalra
2020-03-19 16:24             ` Paolo Bonzini
2020-02-14  2:10   ` 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=3de6e962-3277-ddbd-8c78-eaf754973928@amd.com \
    --to=brijesh.singh@amd.com \
    --cc=Thomas.Lendacky@amd.com \
    --cc=ashish.kalra@amd.com \
    --cc=bp@suse.de \
    --cc=hpa@zytor.com \
    --cc=joro@8bytes.org \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=luto@amacapital.net \
    --cc=mingo@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=rientjes@google.com \
    --cc=rkrcmar@redhat.com \
    --cc=srutherford@google.com \
    --cc=tglx@linutronix.de \
    --cc=x86@kernel.org \
    /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).