Files
android_kernel_xiaomi_sm8450/arch/x86/include/asm
Sean Christopherson 736c291c9f KVM: x86: Use gpa_t for cr2/gpa to fix TDP support on 32-bit KVM
Convert a plethora of parameters and variables in the MMU and page fault
flows from type gva_t to gpa_t to properly handle TDP on 32-bit KVM.

Thanks to PSE and PAE paging, 32-bit kernels can access 64-bit physical
addresses.  When TDP is enabled, the fault address is a guest physical
address and thus can be a 64-bit value, even when both KVM and its guest
are using 32-bit virtual addressing, e.g. VMX's VMCS.GUEST_PHYSICAL is a
64-bit field, not a natural width field.

Using a gva_t for the fault address means KVM will incorrectly drop the
upper 32-bits of the GPA.  Ditto for gva_to_gpa() when it is used to
translate L2 GPAs to L1 GPAs.

Opportunistically rename variables and parameters to better reflect the
dual address modes, e.g. use "cr2_or_gpa" for fault addresses and plain
"addr" instead of "vaddr" when the address may be either a GVA or an L2
GPA.  Similarly, use "gpa" in the nonpaging_page_fault() flows to avoid
a confusing "gpa_t gva" declaration; this also sets the stage for a
future patch to combing nonpaging_page_fault() and tdp_page_fault() with
minimal churn.

Sprinkle in a few comments to document flows where an address is known
to be a GVA and thus can be safely truncated to a 32-bit value.  Add
WARNs in kvm_handle_page_fault() and FNAME(gva_to_gpa_nested)() to help
document such cases and detect bugs.

Cc: stable@vger.kernel.org
Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2020-01-08 18:16:02 +01:00
..
2019-07-22 12:00:51 +02:00
2018-12-03 10:49:13 +01:00
2018-08-15 13:44:10 -07:00
2019-07-03 16:35:23 +02:00
2019-04-16 12:26:18 +02:00
2017-12-22 20:13:04 +01:00
2019-04-22 11:42:59 +02:00
2019-07-17 23:17:38 +02:00
2019-07-22 12:00:51 +02:00
2019-10-08 13:25:24 +02:00
2019-11-16 11:24:05 +01:00
2019-06-17 12:43:44 +02:00
2019-07-31 19:03:35 +02:00
2019-11-16 11:23:59 +01:00
2019-09-24 16:15:36 +02:00
2018-03-20 10:01:57 +01:00
2019-04-10 09:53:31 +02:00
2019-05-08 13:13:57 +02:00