From: "David Hildenbrand (Arm)" <david@kernel.org>
To: "Carlos López" <clopez@suse.de>, kvm@vger.kernel.org, linux-mm@kvack.org
Cc: linux-kernel@vger.kernel.org, linux-s390@vger.kernel.org,
linux-riscv@lists.infradead.org, seanjc@google.com,
pbonzini@redhat.com, akpm@linux-foundation.org,
peterx@redhat.com, ljs@kernel.org, imbrenda@linux.ibm.com,
borntraeger@linux.ibm.com, frankja@linux.ibm.com,
Paul Walmsley <pjw@kernel.org>,
Palmer Dabbelt <palmer@dabbelt.com>,
Albert Ou <aou@eecs.berkeley.edu>,
Alexandre Ghiti <alex@ghiti.fr>
Subject: Re: [PATCH v3 0/9] KVM: don't zap secondary MMU on permission upgrade
Date: Fri, 13 Nov 2026 20:00:02 +0100 [thread overview]
Message-ID: <2ff19317-8da9-4014-be04-27fc218b8eea@kernel.org> (raw)
In-Reply-To: <20261112142039.907090-2-clopez@suse.de>
On 11/12/26 15:20, Carlos López wrote:
> Stop KVM from zapping its mappings on permission upgrades on x86 and
> s390, as these keep the PFNs unchanged and revoke no access. KVM faults
> in the new permissions on demand, so dropping mappings early gains
> nothing.
>
> To do so, add an MMU notifier flag that marks an
> MMU_NOTIFY_PROTECTION_VMA invalidation as a strict permission upgrade.
> For the flag to be accurate, change_protection() keeps writable entries
> writable on such changes. A few cases where it needlessly makes or
> leaves entries read-only are fixed along the way.
>
> Background
> ==========
>
> change_protection() pairs every protection change with an
> MMU_NOTIFY_PROTECTION_VMA invalidation, and KVM zaps its SPTEs in
> response, as it cannot tell whether permissions widened or narrowed.
> This is costly, e.g. during a QEMU background snapshot, which uses
> uffd-wp to write-protect guest RAM and unprotects each page once it is
> saved. Every unprotect then makes the guest refault memory it could
> already access.
>
> Secondary MMUs that share the CPU page tables (e.g. ARM SMMU,
> IOMMU/ATS) can keep read-only entries in their TLBs that a fault does
> not flush, so they are already notified of permission upgrades on the
> CPU TLB flush path [1]. KVM keeps its own page tables and faults in
> permissions on demand, so it needs no notification, as Sean noted when
> that signalling was first proposed [2].
>
> Series overview
> ===============
>
> Patches 1-4 fix cases where change_protection() needlessly makes or
> leaves entries read-only, so that the next write to them faults. They
> only affect performance and can be picked up independently.
We generally don't add performance improvements without clear motivation and
data to back it up.
MM is currently busy with more important stuff, so best to keep your changes to
a bare minimum.
--
Cheers,
David
next prev parent reply other threads:[~2026-11-13 19:00 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-11-12 14:20 [PATCH v3 0/9] KVM: don't zap secondary MMU on permission upgrade Carlos López
2026-11-12 14:20 ` [PATCH v3 1/9] mm: fix eager write-bit restore for write-notified shared mappings Carlos López
2026-11-13 20:47 ` Lorenzo Stoakes (ARM)
2026-11-12 14:20 ` [PATCH v3 2/9] riscv: mm: add pud_soft_dirty() Carlos López
2026-11-12 14:20 ` [PATCH v3 3/9] mm/huge_memory: honor MM_CP_TRY_CHANGE_WRITABLE in change_huge_pud() Carlos López
2026-11-13 18:58 ` David Hildenbrand (Arm)
2026-11-13 20:48 ` Lorenzo Stoakes (ARM)
2026-11-12 14:20 ` [PATCH v3 4/9] mm: keep writable entries writable on protection changes Carlos López
2026-11-13 18:56 ` David Hildenbrand (Arm)
2026-11-12 14:20 ` [PATCH v3 5/9] mm/mprotect: add MM_CP_PERM_UPGRADE Carlos López
2026-11-13 18:51 ` David Hildenbrand (Arm)
2026-11-13 20:37 ` Lorenzo Stoakes (ARM)
2026-11-12 14:20 ` [PATCH v3 6/9] mm/mmu_notifier: add MMU_NOTIFIER_RANGE_PERM_UPGRADE Carlos López
2026-11-13 14:25 ` sashiko-bot
2026-11-12 14:20 ` [PATCH v3 7/9] KVM: pass the mmu_notifier event and flags to kvm_gfn_range Carlos López
2026-11-12 14:20 ` [PATCH v3 8/9] KVM: x86/mmu: don't zap secondary MMU on permission upgrade Carlos López
2026-11-12 14:20 ` [PATCH v3 9/9] KVM: s390: don't unmap the gmap " Carlos López
2026-11-13 19:00 ` David Hildenbrand (Arm) [this message]
2026-11-13 20:32 ` [PATCH v3 0/9] KVM: don't zap secondary MMU " Lorenzo Stoakes (ARM)
2026-11-13 20:59 ` Lorenzo Stoakes (ARM)
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=2ff19317-8da9-4014-be04-27fc218b8eea@kernel.org \
--to=david@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=alex@ghiti.fr \
--cc=aou@eecs.berkeley.edu \
--cc=borntraeger@linux.ibm.com \
--cc=clopez@suse.de \
--cc=frankja@linux.ibm.com \
--cc=imbrenda@linux.ibm.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linux-riscv@lists.infradead.org \
--cc=linux-s390@vger.kernel.org \
--cc=ljs@kernel.org \
--cc=palmer@dabbelt.com \
--cc=pbonzini@redhat.com \
--cc=peterx@redhat.com \
--cc=pjw@kernel.org \
--cc=seanjc@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox