@@ -418,8 +418,10 @@ Concurrent zapping
2. freeze the EPT entry (atomically set the value to REMOVED_SPTE)
If other vcpu froze the entry, restart page fault.
3. TLB shootdown
+
* send IPI to remote vcpus
* TLB flush (local and remote)
+
For each entry update, TLB shootdown is needed because of the
concurrency.
4. atomically set the EPT entry to the final value
@@ -429,6 +431,7 @@ Concurrent populating
---------------------
In the case of populating the non-present EPT entry, atomically update the EPT
entry.
+
1. read lock
2. atomically update the EPT entry
If other vcpu frozen the entry or updated the entry, restart page fault.
@@ -436,6 +439,7 @@ entry.
In the case of updating the present EPT entry (e.g. page migration), the
operation is split into two. Zapping the entry and populating the entry.
+
1. read lock
2. zap the EPT entry. follow the concurrent zapping case.
3. populate the non-present EPT entry.
@@ -451,7 +455,6 @@ In this case, the TLB shootdown is batched into one.
3. TLB shootdown
4. write unlock
-
For Secure EPT, TDX SEAMCALLs are needed in addition to updating the mirrored
EPT entry.
@@ -462,9 +465,11 @@ Add a hook for TDX SEAMCALLs at the step of the TLB shootdown.
1. read lock
2. freeze the EPT entry(set the value to REMOVED_SPTE)
3. TLB shootdown via a hook
+
* TLB.MEM.RANGE.BLOCK()
* TLB.MEM.TRACK()
* send IPI to remote vcpus
+
4. set the EPT entry to the final value
5. read unlock
@@ -477,7 +482,9 @@ condition. A hook can be added.
1. read lock
2. freeze the EPT entry
3. hook
+
* TDH_MEM_SEPT_ADD() for non-leaf or TDH_MEM_PAGE_AUG() for leaf.
+
4. set the EPT entry to the final value
5. read unlock
The last warnings on tdx-tdp-mmu.rst are caused by missing blank line padding at lists on "concurrent" sections. Add the padding. Fixes: 7af4efe3263854 ("KVM: x86: design documentation on TDX support of x86 KVM TDP MMU") Signed-off-by: Bagas Sanjaya <bagasdotme@gmail.com> --- Documentation/virt/kvm/tdx-tdp-mmu.rst | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-)