Re: [PATCH v2 11/11] powerpc/mm/book3s64/pgtable: Uses counting method to skip serializing

From: John Hubbard
Date: Mon Sep 23 2019 - 16:26:51 EST


On 9/23/19 1:23 PM, Leonardo Bras wrote:
> On Mon, 2019-09-23 at 12:58 -0700, John Hubbard wrote:
>>
>> CPU 0 CPU 1
>> ------ --------------
>> READ(pte) (re-ordered at run time)
>> atomic_inc(val) (no run-time memory barrier!)
>>
>> pmd_clear(pte)
>> if (val)
>> run_on_all_cpus(): IPI
>> local_irq_disable() (also not a mem barrier)
>>
>> if(pte)
>> walk page tables
>
> Let me see if I can understand,
> On most patches, it would be:
>
> CPU 0 CPU 1
> ------ --------------
> ptep = __find_linux_pte
> (re-ordered at run time)
> atomic_inc(val)
> pmd_clear(pte)
> smp_mb()
> if (val)
> run_on_all_cpus(): IPI
> local_irq_disable()
>
> if(ptep)
> pte = *ptep;
>
> Is that what you meant?
>
>

Yes.

thanks,
--
John Hubbard
NVIDIA