On 08/01/20 21:24, Sean Christopherson wrote:
> +
> +     /*
> +      * Manually do the equivalent of kvm_vcpu_gfn_to_hva() to avoid the
> +      * "writable" check in __gfn_to_hva_many(), which will always fail on
> +      * read-only memslots due to gfn_to_hva() assuming writes.  Earlier
> +      * page fault steps have already verified the guest isn't writing a
> +      * read-only memslot.
> +      */
> +     slot = kvm_vcpu_gfn_to_memslot(vcpu, gfn);
> +     if (!memslot_valid_for_gpte(slot, true))
> +             return PT_PAGE_TABLE_LEVEL;
> +
> +     hva = __gfn_to_hva_memslot(slot, gfn);
> +

Using gfn_to_memslot_dirty_bitmap is also a good excuse to avoid
kvm_vcpu_gfn_to_hva.

+       slot = gfn_to_memslot_dirty_bitmap(vcpu, gfn, true);
+       if (!slot)
+               return PT_PAGE_TABLE_LEVEL;
+
+       hva = __gfn_to_hva_memslot(slot, gfn);

(I am planning to remove gfn_to_hva_memslot so that __gfn_to_hva_memslot
can lose the annoying underscores).

Paolo

_______________________________________________
kvmarm mailing list
[email protected]
https://lists.cs.columbia.edu/mailman/listinfo/kvmarm

Reply via email to