Thread (27 messages) 27 messages, 6 authors, 2021-07-27

Re: [PATCH 3/7] mm: remove redundant smp_wmb()

From: Muchun Song <hidden>
Date: 2021-07-27 13:39:59
Also in: linux-mm, lkml

On Sun, Jul 18, 2021 at 12:31 PM Qi Zheng [off-list ref] wrote:
The smp_wmb() which is in the __pte_alloc() is used to
ensure all ptes setup is visible before the pte is made
visible to other CPUs by being put into page tables. We
only need this when the pte is actually populated, so
move it to pte_install(). __pte_alloc_kernel(),
__p4d_alloc(), __pud_alloc() and __pmd_alloc() are similar
to this case.

We can also defer smp_wmb() to the place where the pmd entry
is really populated by preallocated pte. There are two kinds
of user of preallocated pte, one is filemap & finish_fault(),
another is THP. The former does not need another smp_wmb()
because the smp_wmb() has been done by pte_install().
Fortunately, the latter also does not need another smp_wmb()
because there is already a smp_wmb() before populating the
new pte when the THP use preallocated pte to split huge pmd.
s/use/uses a/g
s/split huge/split a huge/g
Signed-off-by: Qi Zheng <redacted>
Reviewed-by: Muchun Song <redacted>
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help