On 29/04/2025 16:22, Sean Christopherson wrote:
On Mon, Apr 28, 2025, Tom Lendacky wrote:
@@ -3184,18 +3189,18 @@ static void dump_ghcb(struct vcpu_svm *svm)
return;
}
- nbits = sizeof(ghcb->save.valid_bitmap) * 8;
+ nbits = sizeof(svm->sev_es.valid_bitmap) * 8;
I'm planning on adding this comment to explain the use of KVM's snapshot. Please
holler if it's wrong/misleading in any way.
/*
* Print KVM's snapshot of the GHCB that was (unsuccessfully) used to
* handle the exit. If the guest has since modified the GHCB itself,
* dumping the raw GHCB won't help debug why KVM was unable to handle
* the VMGEXIT that KVM observed.
*/
pr_err("GHCB (GPA=%016llx):\n", svm->vmcb->control.ghcb_gpa);
Would printing "GHCB snapshot (GPA= ...." here instead of just "GHCB
(GPA= ..."
help gently remind people just looking at the debug output of this too?
Either way, for patch:
Reviewed-by: Liam Merwick <liam.merwick@xxxxxxxxxx>
pr_err("%-20s%016llx is_valid: %u\n", "sw_exit_code",
- ghcb->save.sw_exit_code, ghcb_sw_exit_code_is_valid(ghcb));
+ kvm_ghcb_get_sw_exit_code(control), kvm_ghcb_sw_exit_code_is_valid(svm));
pr_err("%-20s%016llx is_valid: %u\n", "sw_exit_info_1",
- ghcb->save.sw_exit_info_1, ghcb_sw_exit_info_1_is_valid(ghcb));
+ control->exit_info_1, kvm_ghcb_sw_exit_info_1_is_valid(svm));
pr_err("%-20s%016llx is_valid: %u\n", "sw_exit_info_2",
- ghcb->save.sw_exit_info_2, ghcb_sw_exit_info_2_is_valid(ghcb));
+ control->exit_info_2, kvm_ghcb_sw_exit_info_2_is_valid(svm));
pr_err("%-20s%016llx is_valid: %u\n", "sw_scratch",
- ghcb->save.sw_scratch, ghcb_sw_scratch_is_valid(ghcb));
- pr_err("%-20s%*pb\n", "valid_bitmap", nbits, ghcb->save.valid_bitmap);
+ svm->sev_es.sw_scratch, kvm_ghcb_sw_scratch_is_valid(svm));
+ pr_err("%-20s%*pb\n", "valid_bitmap", nbits, svm->sev_es.valid_bitmap);
}