Re: [Patch v4 0/4] mm/mremap: cleanup move_page_tables() a little

From: Dmitry Osipenko
Date: Thu Jul 09 2020 - 15:39:05 EST


08.07.2020 12:50, Wei Yang ÐÐÑÐÑ:
> move_page_tables() tries to move page table by PMD or PTE.
>
> The root reason is if it tries to move PMD, both old and new range should be
> PMD aligned. But current code calculate old range and new range separately.
> This leads to some redundant check and calculation.
>
> This cleanup tries to consolidate the range check in one place to reduce some
> extra range handling.
>
> v4:
> * remove a redundant parentheses pointed by Kirill
>
> v3:
> * merge patch 1 with 2 as suggested by Kirill

> * add patch 4 to simplify the logic to calculate next and extent

Hello, Wei!

Unfortunately you re-introduced the offending change that was fixed in
v2 and today's next-20200709 on ARM32 is broken once again:

BUG: Bad rss-counter state mm:db85ec46 type:MM_ANONPAGES val:190

Please don't do it ;)

> v2:
> * remove 3rd patch which doesn't work on ARM platform. Thanks report and
> test from Dmitry Osipenko
>
> Wei Yang (4):
> mm/mremap: it is sure to have enough space when extent meets
> requirement
> mm/mremap: calculate extent in one place
> mm/mremap: start addresses are properly aligned
> mm/mremap: use pmd_addr_end to simplify the calculate of extent
>
> include/linux/huge_mm.h | 2 +-
> mm/huge_memory.c | 8 +-------
> mm/mremap.c | 27 ++++++++++-----------------
> 3 files changed, 12 insertions(+), 25 deletions(-)
>