Re: [PATCH v2 3/5] generic/pgtable: Introduce set_pte_safe()

From: Dan Williams
Date: Mon Dec 03 2018 - 12:57:24 EST


On Mon, Dec 3, 2018 at 9:53 AM Dave Hansen <dave.hansen@xxxxxxxxx> wrote:
>
> On 11/30/18 4:35 PM, Dan Williams wrote:
> > +/*
> > + * The _safe versions of set_{pte,pmd,pud,p4d,pgd} validate that the
> > + * entry was not populated previously. I.e. for cases where a flush-tlb
> > + * is elided, double-check that there is no stale mapping to shoot down.
> > + */
>
> Functionally these look great to me.
>
> The only thing I'd suggest is to make the comment more about when to use
> these, instead of what they do:
>
> Use the set_p*_safe() version when confident that *no*
> TLB flush will be required as a result of the "set", such
> as setting non-present entries or when possibly superfluously
> re-setting an entry.

The second sentence was meant to be a "why", but yes, it's entirely too subtle.