Re: [RFC PATCH 2/5] KVM: arm64: Add KVM_PGTABLE_PROT_DIRTY

From: Leonardo Bras

Date: Tue Sep 15 2026 - 14:19:25 EST


On Sun, Sep 13, 2026 at 10:09:25AM +0100, Marc Zyngier wrote:
> On Tue, 01 Sep 2026 18:15:53 +0100,
> Leonardo Bras <leo.bras@xxxxxxx> wrote:
> >
> > Second step of changing the encoding for the Stage2 PTE descriptor,
> > introduce the concept of dirty page, so we can have a writable but not
> > dirty (WC) page, and a writable and dirty (WD) page.
>
> Why should we care about *setting* the dirty bit in the PTE? Under
> what circumstance do we want to establish a mapping as being dirty?

We want a mapping to be dirty whenever it's writable and we don't want to
track it being changed anymore.

A writable-dirty is for when a mapping can be written to, but still did not
happen.

>
> The whole point of DBM is to only set something dirty when it is
> written to, and this patch breaks this invariant.
>
> Maybe you have a good reason to do so, but that's not explained.

Sorry it was not clear.
The idea of this patch is to introduce the dirty state, without causing
any change in the behavior of the system.

Before patchset:
- RW : S2AP = 1
- RO : S2AP = 0

After patch 1:
- RW = WD: S2AP = 1, DBM = 1
- RO : S2AP = 0, DBM = 0

After patch 2:
- WD : S2AP = 1, DBM = 1
- WC : S2AP = 0, DBM = 1
- RO : S2AP = 0, DBM = 0

That splits the concept of writable and dirty from the previous RW state,
so they can be independent.

We can mark a page writable, without it being dirty, which allows HAFDBS in
the future to mark it dirty whenever it happens to receive a write. (and
use HDBSS to register it on a buffer, and so on)

As of now there is no enablement of the HAFDBS, so up to this patch
there should not be any impact to users, as the DBM bit is ignored if
VTCR.HD=0.

Patch 5 introduces an possible use of this using HAFDBS when dirty-tracking
is disabled to avoid marking all PTEs as clean at the dirty-track enable.

Does it look more clear now?
Do you think adding parts of the above text in the commit message would
help?

Thanks again!
Leo