+ * If the exit was due to a NPF we may already have a GPA.
+ * If the GPA is present, use it to avoid the GVA to GPA table walk.
+ * Note, this cannot be used on string operations since string
+ * operation using rep will only have the initial GPA from the NPF
+ * occurred.
+ */
I was wondering if it would make sense to get rid of gpa_available and
rather define a new function:
bool exception_gpa_valid(struct kvm_vcpu)
{
// check if svm
// check if exit code is NPF
// check ctxt
}
No, this would be a layering violation. The emulator ops don't know
about svm and exit codes (and in fact it's trivial to implement this
optimization for vmx, with a slightly different logic), so we need to
have gpa_available.