+     * 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.

I was rather thinking about adding an vmx/svm independent callback, which would return false for vmx for now. I just saw the variable
and was wondering if it is really necessary.

--

David

Reply via email to