Messages in this thread | | | From | Ard Biesheuvel <> | Date | Thu, 28 Mar 2024 10:56:21 +0200 | Subject | Re: [PATCH v1] arm64: mm: Batch dsb and isb when populating pgtables |
| |
On Thu, 28 Mar 2024 at 10:45, Ryan Roberts <ryan.roberts@arm.com> wrote: > > On 28/03/2024 07:23, Ard Biesheuvel wrote: > > On Wed, 27 Mar 2024 at 21:07, Ryan Roberts <ryan.roberts@arm.com> wrote: > >> > >> After removing uneccessary TLBIs, the next bottleneck when creating the > >> page tables for the linear map is DSB and ISB, which were previously > >> issued per-pte in __set_pte(). Since we are writing multiple ptes in a > >> given pte table, we can elide these barriers and insert them once we > >> have finished writing to the table. > >> > > > > Nice! > > > >> Signed-off-by: Ryan Roberts <ryan.roberts@arm.com> > >> --- > >> arch/arm64/include/asm/pgtable.h | 7 ++++++- > >> arch/arm64/mm/mmu.c | 13 ++++++++++++- > >> 2 files changed, 18 insertions(+), 2 deletions(-) > >> > >> diff --git a/arch/arm64/include/asm/pgtable.h b/arch/arm64/include/asm/pgtable.h > >> index bd5d02f3f0a3..81e427b23b3f 100644 > >> --- a/arch/arm64/include/asm/pgtable.h > >> +++ b/arch/arm64/include/asm/pgtable.h > >> @@ -271,9 +271,14 @@ static inline pte_t pte_mkdevmap(pte_t pte) > >> return set_pte_bit(pte, __pgprot(PTE_DEVMAP | PTE_SPECIAL)); > >> } > >> > >> -static inline void __set_pte(pte_t *ptep, pte_t pte) > >> +static inline void ___set_pte(pte_t *ptep, pte_t pte) > > > > IMHO, we should either use WRITE_ONCE() directly in the caller, or > > find a better name. > > How about __set_pte_nosync() ? >
Works for me.
| |