RE: [PATCH v8 2/3] arm64: mm: implement arch_faults_on_old_pte() on arm64

From: Justin He (Arm Technology China)
Date: Mon Sep 23 2019 - 22:18:17 EST




> -----Original Message-----
> From: Catalin Marinas <catalin.marinas@xxxxxxx>
> Sent: 2019å9æ24æ 0:18
> To: Justin He (Arm Technology China) <Justin.He@xxxxxxx>
> Cc: Will Deacon <will@xxxxxxxxxx>; Mark Rutland
> <Mark.Rutland@xxxxxxx>; James Morse <James.Morse@xxxxxxx>; Marc
> Zyngier <maz@xxxxxxxxxx>; Matthew Wilcox <willy@xxxxxxxxxxxxx>; Kirill A.
> Shutemov <kirill.shutemov@xxxxxxxxxxxxxxx>; linux-arm-
> kernel@xxxxxxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx; linux-
> mm@xxxxxxxxx; Suzuki Poulose <Suzuki.Poulose@xxxxxxx>; Punit
> Agrawal <punitagrawal@xxxxxxxxx>; Anshuman Khandual
> <Anshuman.Khandual@xxxxxxx>; Alex Van Brunt
> <avanbrunt@xxxxxxxxxx>; Robin Murphy <Robin.Murphy@xxxxxxx>;
> Thomas Gleixner <tglx@xxxxxxxxxxxxx>; Andrew Morton <akpm@linux-
> foundation.org>; JÃrÃme Glisse <jglisse@xxxxxxxxxx>; Ralph Campbell
> <rcampbell@xxxxxxxxxx>; hejianet@xxxxxxxxx; Kaly Xin (Arm Technology
> China) <Kaly.Xin@xxxxxxx>; nd <nd@xxxxxxx>
> Subject: Re: [PATCH v8 2/3] arm64: mm: implement
> arch_faults_on_old_pte() on arm64
>
> On Sat, Sep 21, 2019 at 09:50:53PM +0800, Jia He wrote:
> > diff --git a/arch/arm64/include/asm/pgtable.h
> b/arch/arm64/include/asm/pgtable.h
> > index e09760ece844..4a9939615e41 100644
> > --- a/arch/arm64/include/asm/pgtable.h
> > +++ b/arch/arm64/include/asm/pgtable.h
> > @@ -868,6 +868,18 @@ static inline void update_mmu_cache(struct
> vm_area_struct *vma,
> > #define phys_to_ttbr(addr) (addr)
> > #endif
> >
> > +/*
> > + * On arm64 without hardware Access Flag, copying fromuser will fail
> because
> ^^^^^^^^
> from user
>

Ok
> > + * the pte is old and cannot be marked young. So we always end up with
> zeroed
> > + * page after fork() + CoW for pfn mappings. we don't always have a
> ^^
> We
>

Ok
> > + * hardware-managed access flag on arm64.
> > + */
> > +static inline bool arch_faults_on_old_pte(void)
> > +{
> > + return !cpu_has_hw_af();
>
> I saw an early incarnation of your patch having a
> WARN_ON(preemptible()). I think we need this back just in case this
> function will be used elsewhere in the future.

Okay

--
Cheers,
Justin (Jia He)


>
> > +}
> > +#define arch_faults_on_old_pte arch_faults_on_old_pte
>
> Otherwise,
>
> Reviewed-by: Catalin Marinas <catalin.marinas@xxxxxxx>