Re: [PATCH v12 00/84] KVM: Stop grabbing references to PFNMAP'd pages

Paolo Bonzini
2024-07-30T11:52:31Z

On 7/27/24 01:51, Sean Christopherson wrote:
> arm64 folks, the first two patches are bug fixes, but I have very low
> confidence that they are correct and/or desirable. If they are more or
> less correct, I can post them separately if that'd make life easier. I
> included them here to avoid conflicts, and because I'm pretty sure how
> KVM deals with MTE tags vs. dirty logging will impact what APIs KVM needs
> to provide to arch code.
>
> On to the series... The TL;DR is that I would like to get input on two
> things:
>
> 1. Marking folios dirty/accessed only on the intial stage-2 page fault
> 2. The new APIs for faulting, prefetching, and doing "lookups" on pfns

Wow!

Splitting out prefetching makes a lot of sense, as it's the only one
with npages > 1 and it doesn't need all the complexity of hva_to_pfn().

I've left a comment on the lookup API, which is probably the only one
that can be simplified further.

The faulting API looks good as a first iteration. Code-wise,
kvm_resolve_pfn() is probably unnecessary at the end of the series but I
can see why you had to restrain yourself and declare it done. :)

An interesting evolution of the API could be to pass a struct
kvm_follow_pfn pointer to {,__}kvm_faultin_pfn() and __gfn_to_page()
(the "constructors"); and on the other side to
kvm_release_faultin_page() and kvm_release_page_*(). The struct
kvm_follow_pfn could be embedded in the (x86) kvm_page_fault and
(generic) kvm_host_map structs. But certainly not as part of this
already huge work.

Paolo