[PATCH v5 7/9] mm/mremap: Move TLB flush outside page table lock
Aneesh Kumar K.V
aneesh.kumar at linux.ibm.com
Tue May 25 00:24:08 AEST 2021
Linus Torvalds <torvalds at linux-foundation.org> writes:
> On Fri, May 21, 2021 at 3:04 AM Aneesh Kumar K.V
> <aneesh.kumar at linux.ibm.com> wrote:
>> We could do MOVE_PMD with something like below? A equivalent MOVE_PUD
>> will be costlier which makes me wonder whether we should even support that?
> Well, without USE_SPLIT_PTE_PTLOCKS the pud case would be trivial too.
> But everybody uses split pte locks in practice.
> I get the feeling that the rmap code might have to use
> pud_lock/pmd_lock. I wonder how painful that would be.
Looking at this further, i guess we need to do the above to close the
race window. We do
static bool map_pte(struct page_vma_mapped_walk *pvmw)
pvmw->pte = pte_offset_map(pvmw->pmd, pvmw->address);
pvmw->ptl = pte_lockptr(pvmw->vma->vm_mm, pvmw->pmd);
That is we walk the table without holding the pte ptl. Hence we still
can race with the optimized PMD move.
More information about the Linuxppc-dev