lkml.org 
[lkml]   [2024]   [Feb]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v5 01/25] mm: Clarify the spec for set_ptes()
    Date
    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.
    *
    --
    2.25.1

    \
     
     \ /
      Last update: 2024-05-27 14:45    [W:2.870 / U:0.880 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site