Thread (178 messages) flat view 178 messages, 11 authors, 2022-06-06

Re: [PATCH Part2 RFC v4 25/40] KVM: SVM: Reclaim the guest pages when SEV-SNP VM terminates

From: Sean Christopherson <seanjc@google.com>
Date: 2021-07-19 19:44:15
Also in: kvm, linux-coco, linux-efi, linux-mm, lkml, platform-driver-x86

On Mon, Jul 19, 2021, Sean Christopherson wrote:
On Mon, Jul 19, 2021, Brijesh Singh wrote:
quoted
On 7/19/21 12:18 PM, Sean Christopherson wrote:
quoted
quoted
Okay, I will add helper to make things easier. One case where we will
need to directly call the rmpupdate() is during the LAUNCH_UPDATE
command. In that case the page is private and its immutable bit is also
set. This is because the firmware makes change to the page, and we are
required to set the immutable bit before the call.
Or do "int rmp_make_firmware(u64 pfn, bool immutable)"?
That's not what we need.

We need 'rmp_make_private() + immutable' all in one RMPUPDATE.  Here is the
snippet from SNP_LAUNCH_UPDATE.
Ah, not firmwrare, gotcha.  But we can still use a helper, e.g. an inner
double-underscore helper, __rmp_make_private().
Hmm, looking at it again, I think I also got confused by the comment for the VMSA
page:

	/* Transition the VMSA page to a firmware state. */
 	e.assigned = 1;
	e.immutable = 1;
	e.asid = sev->asid;
	e.gpa = -1;
	e.pagesize = RMP_PG_SIZE_4K;

Unlike __snp_alloc_firmware_pages() in the CCP code, the VMSA is associated with
the guest's ASID, just not a GPA.  I.e. the VMSA is more of a specialized guest
private page, as opposed to a dedicated firmware page.  I.e. a __rmp_make_private()
and/or rmp_make_private_immutable() definitely seems like a good idea.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help