Thread (36 messages) 36 messages, 4 authors, 2024-01-16

Re: [PATCHv5 10/16] x86/tdx: Convert shared memory back to private on kexec

From: "Edgecombe, Rick P" <rick.p.edgecombe@intel.com>
Date: 2024-01-05 19:38:54
Also in: kexec, lkml

The break apart looks good.

On Sat, 2023-12-23 at 02:52 +0300, Kirill A. Shutemov wrote:
+       while (addr < end) {
+               unsigned long size;
+               unsigned int level;
+               pte_t *pte;
+
+               pte = lookup_address(addr, &level);
+               size = page_level_size(level);
+
+               if (pte && pte_decrypted(*pte)) {
+                       int pages = size / PAGE_SIZE;
+
+                       /*
+                        * Touching memory with shared bit set
triggers implicit
+                        * conversion to shared.
+                        *
+                        * Make sure nobody touches the shared range
from
+                        * now on.
+                        */
+                       set_pte(pte, __pte(0));
Does this need a full shootdown at this point, at least in the crash
case? A local flush for the non-crash case might be nice too.

Also, probably a barrier() between set_pte() and
tdx_enc_status_changed().
+
+                       if (!tdx_enc_status_changed(addr, pages,
true)) {
+                               pr_err("Failed to unshare range %#lx-
%#lx\n",
+                                      addr, addr + size);
+                       }
  
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help