On 4/29/25 10: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 s/snapshot/snapshot values/ ? > * 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. > */ Otherwise, looks good to me. Thanks, Tom > >> pr_err("GHCB (GPA=%016llx):\n", svm->vmcb->control.ghcb_gpa); >> 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); >> }