mirror of
https://github.com/torvalds/linux.git
synced 2026-05-31 10:33:41 +02:00
KVM: TDX: Set gfn_direct_bits to shared bit
Make the direct root handle memslot GFNs at an alias with the TDX shared bit set. For TDX shared memory, the memslot GFNs need to be mapped at an alias with the shared bit set. These shared mappings will be mapped on the KVM MMU's "direct" root. The direct root has it's mappings shifted by applying "gfn_direct_bits" as a mask. The concept of "GPAW" (guest physical address width) determines the location of the shared bit. So set gfn_direct_bits based on this, to map shared memory at the proper GPA. Signed-off-by: Isaku Yamahata <isaku.yamahata@intel.com> Co-developed-by: Rick Edgecombe <rick.p.edgecombe@intel.com> Signed-off-by: Rick Edgecombe <rick.p.edgecombe@intel.com> Co-developed-by: Yan Zhao <yan.y.zhao@intel.com> Signed-off-by: Yan Zhao <yan.y.zhao@intel.com> Reviewed-by: Paolo Bonzini <pbonzini@redhat.com> Message-ID: <20241112073613.22100-1-yan.y.zhao@intel.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
87e3f45e80
commit
e0fbb3bbb5
|
|
@ -1051,6 +1051,11 @@ static int tdx_td_init(struct kvm *kvm, struct kvm_tdx_cmd *cmd)
|
|||
kvm_tdx->attributes = td_params->attributes;
|
||||
kvm_tdx->xfam = td_params->xfam;
|
||||
|
||||
if (td_params->config_flags & TDX_CONFIG_FLAGS_MAX_GPAW)
|
||||
kvm->arch.gfn_direct_bits = TDX_SHARED_BIT_PWL_5;
|
||||
else
|
||||
kvm->arch.gfn_direct_bits = TDX_SHARED_BIT_PWL_4;
|
||||
|
||||
kvm_tdx->state = TD_STATE_INITIALIZED;
|
||||
out:
|
||||
/* kfree() accepts NULL. */
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user