mirror of
https://github.com/torvalds/linux.git
synced 2024-12-04 18:13:04 +00:00
KVM: x86: Print guest pgd in kvm_nested_vmenter()
Print guest pgd in kvm_nested_vmenter() to enrich the information for tracing. When tdp is enabled, print the value of tdp page table (EPT/NPT); when tdp is disabled, print the value of non-nested CR3. Suggested-by: Sean Christopherson <seanjc@google.com> Signed-off-by: Mingwei Zhang <mizhang@google.com> Link: https://lore.kernel.org/r/20220825225755.907001-4-mizhang@google.com [sean: print nested_cr3 vs. nested_eptp vs. guest_cr3] Signed-off-by: Sean Christopherson <seanjc@google.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
37ef0be269
commit
02dfc44f20
@ -787,6 +787,8 @@ int enter_svm_guest_mode(struct kvm_vcpu *vcpu, u64 vmcb12_gpa,
|
||||
vmcb12->control.int_ctl,
|
||||
vmcb12->control.event_inj,
|
||||
vmcb12->control.nested_ctl,
|
||||
vmcb12->control.nested_cr3,
|
||||
vmcb12->save.cr3,
|
||||
KVM_ISA_SVM);
|
||||
|
||||
trace_kvm_nested_intercepts(vmcb12->control.intercepts[INTERCEPT_CR] & 0xffff,
|
||||
|
@ -596,8 +596,10 @@ TRACE_EVENT(kvm_pv_eoi,
|
||||
*/
|
||||
TRACE_EVENT(kvm_nested_vmenter,
|
||||
TP_PROTO(__u64 rip, __u64 vmcb, __u64 nested_rip, __u32 int_ctl,
|
||||
__u32 event_inj, bool tdp_enabled, __u32 isa),
|
||||
TP_ARGS(rip, vmcb, nested_rip, int_ctl, event_inj, tdp_enabled, isa),
|
||||
__u32 event_inj, bool tdp_enabled, __u64 guest_tdp_pgd,
|
||||
__u64 guest_cr3, __u32 isa),
|
||||
TP_ARGS(rip, vmcb, nested_rip, int_ctl, event_inj, tdp_enabled,
|
||||
guest_tdp_pgd, guest_cr3, isa),
|
||||
|
||||
TP_STRUCT__entry(
|
||||
__field( __u64, rip )
|
||||
@ -606,6 +608,7 @@ TRACE_EVENT(kvm_nested_vmenter,
|
||||
__field( __u32, int_ctl )
|
||||
__field( __u32, event_inj )
|
||||
__field( bool, tdp_enabled )
|
||||
__field( __u64, guest_pgd )
|
||||
__field( __u32, isa )
|
||||
),
|
||||
|
||||
@ -616,11 +619,12 @@ TRACE_EVENT(kvm_nested_vmenter,
|
||||
__entry->int_ctl = int_ctl;
|
||||
__entry->event_inj = event_inj;
|
||||
__entry->tdp_enabled = tdp_enabled;
|
||||
__entry->guest_pgd = tdp_enabled ? guest_tdp_pgd : guest_cr3;
|
||||
__entry->isa = isa;
|
||||
),
|
||||
|
||||
TP_printk("rip: 0x%016llx %s: 0x%016llx nested_rip: 0x%016llx "
|
||||
"int_ctl: 0x%08x event_inj: 0x%08x nested_%s: %s",
|
||||
"int_ctl: 0x%08x event_inj: 0x%08x nested_%s=%s %s: 0x%016llx",
|
||||
__entry->rip,
|
||||
__entry->isa == KVM_ISA_VMX ? "vmcs" : "vmcb",
|
||||
__entry->vmcb,
|
||||
@ -628,7 +632,10 @@ TRACE_EVENT(kvm_nested_vmenter,
|
||||
__entry->int_ctl,
|
||||
__entry->event_inj,
|
||||
__entry->isa == KVM_ISA_VMX ? "ept" : "npt",
|
||||
__entry->tdp_enabled ? "on" : "off")
|
||||
__entry->tdp_enabled ? "y" : "n",
|
||||
!__entry->tdp_enabled ? "guest_cr3" :
|
||||
__entry->isa == KVM_ISA_VMX ? "nested_eptp" : "nested_cr3",
|
||||
__entry->guest_pgd)
|
||||
);
|
||||
|
||||
TRACE_EVENT(kvm_nested_intercepts,
|
||||
|
@ -3370,6 +3370,8 @@ enum nvmx_vmentry_status nested_vmx_enter_non_root_mode(struct kvm_vcpu *vcpu,
|
||||
vmcs12->guest_intr_status,
|
||||
vmcs12->vm_entry_intr_info_field,
|
||||
vmcs12->secondary_vm_exec_control & SECONDARY_EXEC_ENABLE_EPT,
|
||||
vmcs12->ept_pointer,
|
||||
vmcs12->guest_cr3,
|
||||
KVM_ISA_VMX);
|
||||
|
||||
kvm_service_local_tlb_flush_requests(vcpu);
|
||||
|
Loading…
Reference in New Issue
Block a user