* Use gprintk rather than gdprintk. These logging messages shouldn't
disappear in release builds, as they usually happen immediately before a
domain crash. Raise them from WARNING to ERR.
* Format the vmexit reason in the same base as is used in the vendor
manuals (decimal for Intel, hex for AMD), and consistently use 0x for hex
numbers.
* Consistently use "Unexpected vmexit" terminology.
In particular, this corrects the information printed for nested VT-x, and
actually prints information for nested SVM.
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Kevin Tian <kevin.tian@intel.com>
Release-acked-by: Julien Grall <julien.grall@arm.com>
/* Always let the guest handle VMMCALL/VMCALL */
return NESTEDHVM_VMEXIT_INJECT;
default:
+ gprintk(XENLOG_ERR, "Unexpected nested vmexit: reason %#"PRIx64"\n",
+ exitcode);
break;
}
default:
unexpected_exit_type:
- gdprintk(XENLOG_ERR, "unexpected VMEXIT: exit reason = %#"PRIx64", "
- "exitinfo1 = %#"PRIx64", exitinfo2 = %#"PRIx64"\n",
- exit_reason,
- (u64)vmcb->exitinfo1, (u64)vmcb->exitinfo2);
+ gprintk(XENLOG_ERR, "Unexpected vmexit: reason %#"PRIx64", "
+ "exitinfo1 %#"PRIx64", exitinfo2 %#"PRIx64"\n",
+ exit_reason, vmcb->exitinfo1, vmcb->exitinfo2);
svm_crash_or_fault(v);
break;
}
/* fall through */
default:
exit_and_crash:
- gdprintk(XENLOG_WARNING, "Bad vmexit (reason %#lx)\n", exit_reason);
+ gprintk(XENLOG_ERR, "Unexpected vmexit: reason %lu\n", exit_reason);
if ( vmx_get_cpl() )
hvm_inject_hw_exception(TRAP_invalid_op,
nvcpu->nv_vmexit_pending = 1;
break;
default:
- gdprintk(XENLOG_WARNING, "Unknown nested vmexit reason %x.\n",
- exit_reason);
+ gprintk(XENLOG_ERR, "Unexpected nested vmexit: reason %u\n",
+ exit_reason);
}
return ( nvcpu->nv_vmexit_pending == 1 );