Re: [tip:x86/mm] x86/mm: Add support for early encryption/decryption of memory

From: Tom Lendacky
Date: Thu Oct 26 2017 - 09:05:59 EST


On 10/25/2017 12:34 PM, Dave Hansen wrote:
On 07/18/2017 03:51 AM, tip-bot for Tom Lendacky wrote:
+/*
+ * This routine does not change the underlying encryption setting of the
+ * page(s) that map this memory. It assumes that eventually the memory is
+ * meant to be accessed as either encrypted or decrypted but the contents
+ * are currently not in the desired state.
+ *
+ * This routine follows the steps outlined in the AMD64 Architecture
+ * Programmer's Manual Volume 2, Section 7.10.8 Encrypt-in-Place.
+ */
+static void __init __sme_early_enc_dec(resource_size_t paddr,
+ unsigned long size, bool enc)
+{
+ void *src, *dst;
+ size_t len;
+
+ if (!sme_me_mask)
+ return;
+
+ local_flush_tlb();
+ wbinvd();

What is this TLB flush for? WBINVD is mentioned in "Volume 2, Section
7.10.8", but TLB flushes are not. Is it OK that this does not flush
global pages?

The local_flush_tlb() is not needed and can be removed. I had that in
there from early development and testing and just missed removing it.
I can queue up a patch to delete it and remove the ambiguity with this
routine and the APM document.

Thanks,
Tom