Messages in this thread | | | Date | Mon, 12 Feb 2024 13:03:02 +0100 | Subject | Re: [PATCH v5 01/25] mm: Clarify the spec for set_ptes() | From | David Hildenbrand <> |
| |
On 02.02.24 09:07, Ryan Roberts wrote: > set_ptes() spec implies that it can only be used to set a present pte > because it interprets the PFN field to increment it. However, > set_pte_at() has been implemented on top of set_ptes() since set_ptes() > was introduced, and set_pte_at() allows setting a pte to a not-present > state. So clarify the spec to state that when nr==1, new state of pte > may be present or not present. When nr>1, new state of all ptes must be > present. > > While we are at it, tighten the spec to set requirements around the > initial state of ptes; when nr==1 it may be either present or > not-present. But when nr>1 all ptes must initially be not-present. All > set_ptes() callsites already conform to this requirement. Stating it > explicitly is useful because it allows for a simplification to the > upcoming arm64 contpte implementation. > > Signed-off-by: Ryan Roberts <ryan.roberts@arm.com> > --- > include/linux/pgtable.h | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/include/linux/pgtable.h b/include/linux/pgtable.h > index f0feae7f89fb..5e7eaf8f2b97 100644 > --- a/include/linux/pgtable.h > +++ b/include/linux/pgtable.h > @@ -229,6 +229,10 @@ static inline pte_t pte_next_pfn(pte_t pte) > * @pte: Page table entry for the first page. > * @nr: Number of pages to map. > * > + * When nr==1, initial state of pte may be present or not present, and new state > + * may be present or not present. When nr>1, initial state of all ptes must be > + * not present, and new state must be present. > + * > * May be overridden by the architecture, or the architecture can define > * set_pte() and PFN_PTE_SHIFT. > *
Acked-by: David Hildenbrand <david@redhat.com>
-- Cheers,
David / dhildenb
| |