-
Notifications
You must be signed in to change notification settings - Fork 5
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
KVM: selftests: Allow tagging protected memory in guest page tables
Add support for tagging and untagging guest physical address, e.g. to allow x86's SEV and TDX guests to embed shared vs. private information in the GPA. SEV (encryption, a.k.a. C-bit) and TDX (shared, a.k.a. S-bit) steal bits from the guest's physical address space that is consumed by the CPU metadata, i.e. effectively aliases the "real" GPA. Implement generic "tagging" so that the shared vs. private metadata can be managed by x86 without bleeding too many details into common code. Cc: Paolo Bonzini <pbonzini@redhat.com> Cc: Sean Christopherson <seanjc@google.com> Cc: Vishal Annapurve <vannapurve@google.com> Cc: Ackerly Tng <ackerleytng@google.com> cc: Andrew Jones <andrew.jones@linux.dev> Cc: Tom Lendacky <thomas.lendacky@amd.com> Cc: Michael Roth <michael.roth@amd.com> Tested-by: Carlos Bilbao <carlos.bilbao@amd.com> Originally-by: Michael Roth <michael.roth@amd.com> Signed-off-by: Peter Gonda <pgonda@google.com> Link: https://lore.kernel.org/r/20240223004258.3104051-8-seanjc@google.com Signed-off-by: Sean Christopherson <seanjc@google.com>
- Loading branch information
Showing
7 changed files
with
86 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
/* SPDX-License-Identifier: GPL-2.0-only */ | ||
#ifndef SELFTEST_KVM_UTIL_ARCH_H | ||
#define SELFTEST_KVM_UTIL_ARCH_H | ||
|
||
struct kvm_vm_arch {}; | ||
|
||
#endif // SELFTEST_KVM_UTIL_ARCH_H |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
/* SPDX-License-Identifier: GPL-2.0-only */ | ||
#ifndef SELFTEST_KVM_UTIL_ARCH_H | ||
#define SELFTEST_KVM_UTIL_ARCH_H | ||
|
||
struct kvm_vm_arch {}; | ||
|
||
#endif // SELFTEST_KVM_UTIL_ARCH_H |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
/* SPDX-License-Identifier: GPL-2.0-only */ | ||
#ifndef SELFTEST_KVM_UTIL_ARCH_H | ||
#define SELFTEST_KVM_UTIL_ARCH_H | ||
|
||
struct kvm_vm_arch {}; | ||
|
||
#endif // SELFTEST_KVM_UTIL_ARCH_H |
21 changes: 21 additions & 0 deletions
21
tools/testing/selftests/kvm/include/x86_64/kvm_util_arch.h
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
/* SPDX-License-Identifier: GPL-2.0-only */ | ||
#ifndef SELFTEST_KVM_UTIL_ARCH_H | ||
#define SELFTEST_KVM_UTIL_ARCH_H | ||
|
||
#include <stdbool.h> | ||
#include <stdint.h> | ||
|
||
struct kvm_vm_arch { | ||
uint64_t c_bit; | ||
uint64_t s_bit; | ||
}; | ||
|
||
static inline bool __vm_arch_has_protected_memory(struct kvm_vm_arch *arch) | ||
{ | ||
return arch->c_bit || arch->s_bit; | ||
} | ||
|
||
#define vm_arch_has_protected_memory(vm) \ | ||
__vm_arch_has_protected_memory(&(vm)->arch) | ||
|
||
#endif // SELFTEST_KVM_UTIL_ARCH_H |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters