Re: [RFC PATCH v3 02/10] iommupt: Add RISC-V dirty tracking PTE ops

From: Jason Gunthorpe

Date: Fri Aug 21 2026 - 10:04:46 EST


On Fri, Aug 21, 2026 at 09:27:42PM +0800, fangyu.yu@xxxxxxxxxxxxxxxxx wrote:
> From: Fangyu Yu <fangyu.yu@xxxxxxxxxxxxxxxxx>
>
> Implement the three dirty-tracking hooks required by the generic page
> table framework for the RISC-V format:
>
> pt_entry_is_write_dirty():
> Check the D bit (bit 7) in the PTE.
>
> pt_entry_make_write_clean():
> Clear the D bit across the full contiguous range.
>
> pt_entry_make_write_dirty():
> Atomically set D via try_cmpxchg64() on a single PTE.
>
> Signed-off-by: Fangyu Yu <fangyu.yu@xxxxxxxxxxxxxxxxx>
> ---
> drivers/iommu/generic_pt/fmt/riscv.h | 43 ++++++++++++++++++++++++++++
> 1 file changed, 43 insertions(+)
>
> diff --git a/drivers/iommu/generic_pt/fmt/riscv.h b/drivers/iommu/generic_pt/fmt/riscv.h
> index 5692c033dbde..09581798e753 100644
> --- a/drivers/iommu/generic_pt/fmt/riscv.h
> +++ b/drivers/iommu/generic_pt/fmt/riscv.h
> @@ -226,6 +226,49 @@ static inline void riscvpt_attr_from_entry(const struct pt_state *pts,
> }
> #define pt_attr_from_entry riscvpt_attr_from_entry

Does this work for all stages or does it need pt_dirty_supported ?

Jason