]> git.baikalelectronics.ru Git - kernel.git/commitdiff
KVM: VMX: Report tertiary_exec_control field in dump_vmcs()
authorRobert Hoo <robert.hu@linux.intel.com>
Tue, 19 Apr 2022 15:34:41 +0000 (23:34 +0800)
committerPaolo Bonzini <pbonzini@redhat.com>
Wed, 8 Jun 2022 08:47:21 +0000 (04:47 -0400)
Add tertiary_exec_control field report in dump_vmcs(). Meanwhile,
reorganize the dump output of VMCS category as follows.

Before change:
*** Control State ***
 PinBased=0x000000ff CPUBased=0xb5a26dfa SecondaryExec=0x061037eb
 EntryControls=0000d1ff ExitControls=002befff

After change:
*** Control State ***
 CPUBased=0xb5a26dfa SecondaryExec=0x061037eb TertiaryExec=0x0000000000000010
 PinBased=0x000000ff EntryControls=0000d1ff ExitControls=002befff

Reviewed-by: Maxim Levitsky <mlevitsk@redhat.com>
Signed-off-by: Robert Hoo <robert.hu@linux.intel.com>
Signed-off-by: Zeng Guang <guang.zeng@intel.com>
Message-Id: <20220419153441.11687-1-guang.zeng@intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/kvm/vmx/vmx.c

index 9d3d41b21059f69445f092f8baf0ab2eb5c21a52..4238a55c26e648cf98972c5b2f9215774312e896 100644 (file)
@@ -5872,6 +5872,7 @@ void dump_vmcs(struct kvm_vcpu *vcpu)
        struct vcpu_vmx *vmx = to_vmx(vcpu);
        u32 vmentry_ctl, vmexit_ctl;
        u32 cpu_based_exec_ctrl, pin_based_exec_ctrl, secondary_exec_control;
+       u64 tertiary_exec_control;
        unsigned long cr4;
        int efer_slot;
 
@@ -5885,9 +5886,16 @@ void dump_vmcs(struct kvm_vcpu *vcpu)
        cpu_based_exec_ctrl = vmcs_read32(CPU_BASED_VM_EXEC_CONTROL);
        pin_based_exec_ctrl = vmcs_read32(PIN_BASED_VM_EXEC_CONTROL);
        cr4 = vmcs_readl(GUEST_CR4);
-       secondary_exec_control = 0;
+
        if (cpu_has_secondary_exec_ctrls())
                secondary_exec_control = vmcs_read32(SECONDARY_VM_EXEC_CONTROL);
+       else
+               secondary_exec_control = 0;
+
+       if (cpu_has_tertiary_exec_ctrls())
+               tertiary_exec_control = vmcs_read64(TERTIARY_VM_EXEC_CONTROL);
+       else
+               tertiary_exec_control = 0;
 
        pr_err("VMCS %p, last attempted VM-entry on CPU %d\n",
               vmx->loaded_vmcs->vmcs, vcpu->arch.last_vmentry_cpu);
@@ -5987,9 +5995,10 @@ void dump_vmcs(struct kvm_vcpu *vcpu)
                vmx_dump_msrs("host autoload", &vmx->msr_autoload.host);
 
        pr_err("*** Control State ***\n");
-       pr_err("PinBased=%08x CPUBased=%08x SecondaryExec=%08x\n",
-              pin_based_exec_ctrl, cpu_based_exec_ctrl, secondary_exec_control);
-       pr_err("EntryControls=%08x ExitControls=%08x\n", vmentry_ctl, vmexit_ctl);
+       pr_err("CPUBased=0x%08x SecondaryExec=0x%08x TertiaryExec=0x%016llx\n",
+              cpu_based_exec_ctrl, secondary_exec_control, tertiary_exec_control);
+       pr_err("PinBased=0x%08x EntryControls=%08x ExitControls=%08x\n",
+              pin_based_exec_ctrl, vmentry_ctl, vmexit_ctl);
        pr_err("ExceptionBitmap=%08x PFECmask=%08x PFECmatch=%08x\n",
               vmcs_read32(EXCEPTION_BITMAP),
               vmcs_read32(PAGE_FAULT_ERROR_CODE_MASK),