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?
signature.asc
Description: This is a digitally signed message part

