Messages in this thread | | | From | Yu Zhao <> | Date | Thu, 18 May 2023 13:28:35 -0600 | Subject | Re: [PATCH v2 4/5] mm: Add new ptep_deref() helper to fully encapsulate pte_t |
| |
On Thu, May 18, 2023 at 5:07 AM Ryan Roberts <ryan.roberts@arm.com> wrote: > > There are many call sites that directly dereference a pte_t pointer. > This makes it very difficult to properly encapsulate a page table in the > arch code without having to allocate shadow page tables. ptep_deref() > aims to solve this by replacing all direct dereferences with a call to > this function. > > The default implementation continues to just dereference the pointer > (*ptep), so generated code should be exactly the same. However, it is > possible for the architecture to override the default with their own > implementation, that can (e.g.) hide certain bits from the core code, or > determine young/dirty status by mixing in state from another source. > > While ptep_get() and ptep_get_lockless() already exist, these are > implemented as atomic accesses (e.g. READ_ONCE() in the default case). > So rather than using ptep_get() and risking performance regressions, > introduce an new variant.
We should reuse ptep_get(): 1. I don't think READ_ONCE() can cause measurable regressions in this case. 2. It's technically wrong without it.
| |