[PATCH v2] KVM: arm64: Don't split hugepages outside of MMU write lock

Marc Zyngier maz at kernel.org
Wed Apr 6 06:22:20 PDT 2022


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.





More information about the linux-arm-kernel mailing list