On Fri, 1 Apr 2022 19:46:52 +0000, Oliver Upton wrote: > It is possible to take a stage-2 permission fault on a page larger than > PAGE_SIZE. For example, when running a guest backed by 2M HugeTLB, KVM > eagerly maps at the largest possible block size. When dirty logging is > enabled on a memslot, KVM does *not* eagerly split these 2M stage-2 > mappings and instead clears the write bit on the pte. > > Since dirty logging is always performed at PAGE_SIZE granularity, KVM > lazily splits these 2M block mappings down to PAGE_SIZE in the stage-2 > fault handler. This operation must be done under the write lock. Since > commit f783ef1c0e82 ("KVM: arm64: Add fast path to handle permission > relaxation during dirty logging"), the stage-2 fault handler > conditionally takes the read lock on permission faults with dirty > logging enabled. To that end, it is possible to split a 2M block mapping > while only holding the read lock. > > [...] Applied to fixes, thanks! [1/1] KVM: arm64: Don't split hugepages outside of MMU write lock commit: f587661f21eb9a38af52488bbe54ce61a64dfae8 Cheers, M. -- Without deviation from the norm, progress is not possible.