From: Catalin Marinas <catalin.marinas@arm.com>
To: Kefeng Wang <wangkefeng.wang@huawei.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
Will Deacon <will@kernel.org>,
Mike Kravetz <mike.kravetz@oracle.com>,
Muchun Song <muchun.song@linux.dev>,
Mina Almasry <almasrymina@google.com>,
kirill@shutemov.name, joel@joelfernandes.org,
william.kucharski@oracle.com, kaleshsingh@google.com,
linux-mm@kvack.org, linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 2/4] mm: mremap: use flush_pmd_tlb_range() in move_normal_pmd()
Date: Mon, 31 Jul 2023 12:05:25 +0100 [thread overview]
Message-ID: <ZMeVdcNcp76L8bOG@arm.com> (raw)
In-Reply-To: <20230731074829.79309-3-wangkefeng.wang@huawei.com>
On Mon, Jul 31, 2023 at 03:48:27PM +0800, Kefeng Wang wrote:
> Archs may need to do special things when flushing thp tlb,
> so use the more applicable flush_pud_tlb_range() instead of
> flush_tlb_range().
>
> Fixes: 2c91bd4a4e2e ("mm: speed up mremap by 20x on large regions")
> Signed-off-by: Kefeng Wang <wangkefeng.wang@huawei.com>
> ---
> mm/mremap.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/mm/mremap.c b/mm/mremap.c
> index 11e06e4ab33b..1883205fa22b 100644
> --- a/mm/mremap.c
> +++ b/mm/mremap.c
> @@ -284,7 +284,7 @@ static bool move_normal_pmd(struct vm_area_struct *vma, unsigned long old_addr,
> VM_BUG_ON(!pmd_none(*new_pmd));
>
> pmd_populate(mm, new_pmd, pmd_pgtable(pmd));
> - flush_tlb_range(vma, old_addr, old_addr + PMD_SIZE);
> + flush_pmd_tlb_range(vma, old_addr, old_addr + PMD_SIZE);
I don't think that's correct for arm64. The assumption in the
flush_p*d_tlb_range() was that they are called only for block mappings
at that p*d level (and we use FEAT_TTL on arm64 indicating that the leaf
level is level 2 for pmd, 1 for pud). IIUC move_normal_pmd() is only
called for table pmds which would have a leaf level of 3 (the pte).
Same for the next patch doing the equivalent for the pud.
--
Catalin
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
WARNING: multiple messages have this Message-ID (diff)
From: Catalin Marinas <catalin.marinas@arm.com>
To: Kefeng Wang <wangkefeng.wang@huawei.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
Will Deacon <will@kernel.org>,
Mike Kravetz <mike.kravetz@oracle.com>,
Muchun Song <muchun.song@linux.dev>,
Mina Almasry <almasrymina@google.com>,
kirill@shutemov.name, joel@joelfernandes.org,
william.kucharski@oracle.com, kaleshsingh@google.com,
linux-mm@kvack.org, linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 2/4] mm: mremap: use flush_pmd_tlb_range() in move_normal_pmd()
Date: Mon, 31 Jul 2023 12:05:25 +0100 [thread overview]
Message-ID: <ZMeVdcNcp76L8bOG@arm.com> (raw)
In-Reply-To: <20230731074829.79309-3-wangkefeng.wang@huawei.com>
On Mon, Jul 31, 2023 at 03:48:27PM +0800, Kefeng Wang wrote:
> Archs may need to do special things when flushing thp tlb,
> so use the more applicable flush_pud_tlb_range() instead of
> flush_tlb_range().
>
> Fixes: 2c91bd4a4e2e ("mm: speed up mremap by 20x on large regions")
> Signed-off-by: Kefeng Wang <wangkefeng.wang@huawei.com>
> ---
> mm/mremap.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/mm/mremap.c b/mm/mremap.c
> index 11e06e4ab33b..1883205fa22b 100644
> --- a/mm/mremap.c
> +++ b/mm/mremap.c
> @@ -284,7 +284,7 @@ static bool move_normal_pmd(struct vm_area_struct *vma, unsigned long old_addr,
> VM_BUG_ON(!pmd_none(*new_pmd));
>
> pmd_populate(mm, new_pmd, pmd_pgtable(pmd));
> - flush_tlb_range(vma, old_addr, old_addr + PMD_SIZE);
> + flush_pmd_tlb_range(vma, old_addr, old_addr + PMD_SIZE);
I don't think that's correct for arm64. The assumption in the
flush_p*d_tlb_range() was that they are called only for block mappings
at that p*d level (and we use FEAT_TTL on arm64 indicating that the leaf
level is level 2 for pmd, 1 for pud). IIUC move_normal_pmd() is only
called for table pmds which would have a leaf level of 3 (the pte).
Same for the next patch doing the equivalent for the pud.
--
Catalin
next prev parent reply other threads:[~2023-07-31 11:06 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-07-31 7:48 [PATCH 0/4] mm: mremap: fix move page tables Kefeng Wang
2023-07-31 7:48 ` Kefeng Wang
2023-07-31 7:48 ` [PATCH 1/4] mm: hugetlb: use flush_hugetlb_tlb_range() in move_hugetlb_page_tables() Kefeng Wang
2023-07-31 7:48 ` Kefeng Wang
2023-07-31 23:40 ` Mike Kravetz
2023-07-31 23:40 ` Mike Kravetz
2023-08-03 0:26 ` Mina Almasry
2023-08-03 0:26 ` Mina Almasry
2023-08-01 2:06 ` Muchun Song
2023-08-01 2:06 ` Muchun Song
2023-07-31 7:48 ` [PATCH 2/4] mm: mremap: use flush_pmd_tlb_range() in move_normal_pmd() Kefeng Wang
2023-07-31 7:48 ` Kefeng Wang
2023-07-31 11:05 ` Catalin Marinas [this message]
2023-07-31 11:05 ` Catalin Marinas
2023-07-31 11:20 ` Kefeng Wang
2023-07-31 11:20 ` Kefeng Wang
2023-07-31 13:58 ` kernel test robot
2023-07-31 13:58 ` kernel test robot
2023-07-31 21:43 ` kernel test robot
2023-07-31 21:43 ` kernel test robot
2023-07-31 7:48 ` [PATCH 3/4] mm: mremap: use flush_pud_tlb_range in move_normal_pud() Kefeng Wang
2023-07-31 7:48 ` Kefeng Wang
2023-07-31 16:42 ` kernel test robot
2023-07-31 16:42 ` kernel test robot
2023-07-31 7:48 ` [PATCH 4/4] arm64: tlb: set huge page size to stride for hugepage Kefeng Wang
2023-07-31 7:48 ` Kefeng Wang
2023-07-31 8:33 ` Barry Song
2023-07-31 8:33 ` Barry Song
2023-07-31 8:43 ` Barry Song
2023-07-31 8:43 ` Barry Song
2023-07-31 9:28 ` Kefeng Wang
2023-07-31 9:28 ` Kefeng Wang
2023-07-31 10:21 ` Barry Song
2023-07-31 10:21 ` Barry Song
2023-07-31 11:11 ` Catalin Marinas
2023-07-31 11:11 ` Catalin Marinas
2023-07-31 11:27 ` Kefeng Wang
2023-07-31 11:27 ` Kefeng Wang
2023-07-31 13:18 ` Catalin Marinas
2023-07-31 13:18 ` Catalin Marinas
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ZMeVdcNcp76L8bOG@arm.com \
--to=catalin.marinas@arm.com \
--cc=akpm@linux-foundation.org \
--cc=almasrymina@google.com \
--cc=joel@joelfernandes.org \
--cc=kaleshsingh@google.com \
--cc=kirill@shutemov.name \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mike.kravetz@oracle.com \
--cc=muchun.song@linux.dev \
--cc=wangkefeng.wang@huawei.com \
--cc=will@kernel.org \
--cc=william.kucharski@oracle.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.