Messages in this thread | | | Date | Wed, 29 Nov 2023 13:48:51 +0100 | Subject | Re: [PATCH RFC v2 19/27] mm: mprotect: Introduce PAGE_FAULT_ON_ACCESS for mprotect(PROT_MTE) | From | David Hildenbrand <> |
| |
On 29.11.23 12:55, Alexandru Elisei wrote: > Hi, > > On Tue, Nov 28, 2023 at 06:55:18PM +0100, David Hildenbrand wrote: >> On 19.11.23 17:57, Alexandru Elisei wrote: >>> To enable tagging on a memory range, userspace can use mprotect() with the >>> PROT_MTE access flag. Pages already mapped in the VMA don't have the >>> associated tag storage block reserved, so mark the PTEs as >>> PAGE_FAULT_ON_ACCESS to trigger a fault next time they are accessed, and >>> reserve the tag storage on the fault path. >> >> That sounds alot like fake PROT_NONE. Would there be a way to unify hat > > Yes, arm64 basically defines PAGE_FAULT_ON_ACCESS as PAGE_NONE | > PTE_TAG_STORAGE_NONE. > >> handling and simply reuse pte_protnone()? For example, could we special case >> on VMA flags? >> >> Like, don't do NUMA hinting in these special VMAs. Then, have something >> like: >> >> if (pte_protnone(vmf->orig_pte)) >> return handle_pte_protnone(vmf); >> >> In there, special case on the VMA flags. > > Your suggestion from the follow-up reply that an arch should know if it needs to > do something was spot on, arm64 can use the software bit in the translation > table entry for that. > > So what you are proposing is this: > > * Rename do_numa_page->handle_pte_protnone > * At some point in the do_numa_page (now renamed to handle_pte_protnone) flow, > decide if pte_protnone() has been set for an arch specific reason or because > of automatic NUMA balancing. > * if pte_protnone() has been set by an architecture, then let the architecture > handle the fault. > > If I understood you correctly, that's a good idea, and should be easy to > implement.
yes! :)
-- Cheers,
David / dhildenb
| |