From: Gerald Schaefer <gerald.schaefer@linux.ibm.com>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: "Wang, Haiyue" <haiyue.wang@intel.com>,
"linux-mm@kvack.org" <linux-mm@kvack.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"david@redhat.com" <david@redhat.com>,
"apopple@nvidia.com" <apopple@nvidia.com>,
"linmiaohe@huawei.com" <linmiaohe@huawei.com>,
"Huang, Ying" <ying.huang@intel.com>,
"songmuchun@bytedance.com" <songmuchun@bytedance.com>,
"naoya.horiguchi@linux.dev" <naoya.horiguchi@linux.dev>,
"alex.sierra@amd.com" <alex.sierra@amd.com>,
Heiko Carstens <hca@linux.ibm.com>,
Vasily Gorbik <gor@linux.ibm.com>,
Alexander Gordeev <agordeev@linux.ibm.com>,
Christian Borntraeger <borntraeger@linux.ibm.com>,
Sven Schnelle <svens@linux.ibm.com>,
Mike Kravetz <mike.kravetz@oracle.com>,
linux-s390@vger.kernel.org
Subject: Re: [PATCH v6 1/2] mm: migration: fix the FOLL_GET failure on following huge page
Date: Thu, 18 Aug 2022 13:57:17 +0200 [thread overview]
Message-ID: <20220818135717.609eef8a@thinkpad> (raw)
In-Reply-To: <20220818135149.7b043a58@thinkpad>
On Thu, 18 Aug 2022 13:51:49 +0200
Gerald Schaefer <gerald.schaefer@linux.ibm.com> wrote:
> On Tue, 16 Aug 2022 22:43:22 -0700
> Andrew Morton <akpm@linux-foundation.org> wrote:
>
> > On Wed, 17 Aug 2022 03:31:37 +0000 "Wang, Haiyue" <haiyue.wang@intel.com> wrote:
> >
> > > > > }
> > > >
> > > > I would be better to fix this for real at those three client code sites?
> > >
> > > Then 5.19 will break for a while to wait for the final BIG patch ?
> >
> > If that's the proposal then your [1/2] should have had a cc:stable and
> > changelog words describing the plan for 6.0.
> >
> > But before we do that I'd like to see at least a prototype of the final
> > fixes to s390 and hugetlb, so we can assess those as preferable for
> > backporting. I don't think they'll be terribly intrusive or risky?
> >
>
> The private follow_huge_pud() for s390 is just some leftover, and the
> only reason is / was that the generic version was using pte_page()
> instead of pud_page(), which would not work for s390. See also commit
> 97534127012f ("mm/hugetlb: use pmd_page() in follow_huge_pmd()").
>
> Since commit 3a194f3f8ad01 ("mm/hugetlb: make pud_huge() and
> follow_huge_pud() aware of non-present pud entry") made
> follow_huge_pud() behave similar to follow_huge_pmd(), in particular
> also adding pud_page(), we can now switch to the generic version.
>
> Note that we cannot support migration / hwpoison for hugetlb or THP,
> because of different layout for PTE and PMD/PUD on s390. The generic
> swp_entry functions all require proper PTEs, which wouldn't work on
> PMD/PUD entries. In theory, at least for hugetlb, due to the "fake
> PTE" conversion logic in huge_ptep_get(), we might be able to also
> fake swp_entries, but the other problem is that we do not have enough
> free bits in the PMD/PUD, so there probably will never be migration
> support for huge pages on s390.
>
> Anyway, that should not matter wrt to switching to the generic
> follow_huge_pud(), because is_hugetlb_entry_migration() should always
> return false, and no special change to pud_huge() check should be
> needed like on x86.
From ce0150cd6f80425c702ccdc4cd8a511c47e99b67 Mon Sep 17 00:00:00 2001
From: Gerald Schaefer <gerald.schaefer@linux.ibm.com>
Date: Thu, 18 Aug 2022 13:19:23 +0200
Subject: [PATCH] s390/hugetlb: switch to generic version of follow_huge_pud()
When pud-sized hugepages were introduced for s390, the generic version
of follow_huge_pud() was using pte_page() instead of pud_page(). This
would be wrong for s390, see also commit 97534127012f ("mm/hugetlb: use
pmd_page() in follow_huge_pmd()"). Therefore, and probably because not
all archs were supporting pud_page() at that time, a private version of
follow_huge_pud() was added for s390, correctly using pud_page().
Since commit 3a194f3f8ad01 ("mm/hugetlb: make pud_huge() and
follow_huge_pud() aware of non-present pud entry"), the generic version
of follow_huge_pud() is now also using pud_page(), and in general
behaves similar to follow_huge_pmd().
Therefore we can now switch to the generic version and get rid of the
s390-specific follow_huge_pud().
Signed-off-by: Gerald Schaefer <gerald.schaefer@linux.ibm.com>
---
arch/s390/mm/hugetlbpage.c | 10 ----------
1 file changed, 10 deletions(-)
diff --git a/arch/s390/mm/hugetlbpage.c b/arch/s390/mm/hugetlbpage.c
index 10e51ef9c79a..c299a18273ff 100644
--- a/arch/s390/mm/hugetlbpage.c
+++ b/arch/s390/mm/hugetlbpage.c
@@ -237,16 +237,6 @@ int pud_huge(pud_t pud)
return pud_large(pud);
}
-struct page *
-follow_huge_pud(struct mm_struct *mm, unsigned long address,
- pud_t *pud, int flags)
-{
- if (flags & FOLL_GET)
- return NULL;
-
- return pud_page(*pud) + ((address & ~PUD_MASK) >> PAGE_SHIFT);
-}
-
bool __init arch_hugetlb_valid_size(unsigned long size)
{
if (MACHINE_HAS_EDAT1 && size == PMD_SIZE)
--
2.34.1
next prev parent reply other threads:[~2022-08-18 11:59 UTC|newest]
Thread overview: 65+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-08-12 8:49 [PATCH v1] mm: migration: fix the FOLL_GET failure on following huge page Haiyue Wang
2022-08-13 23:28 ` Andrew Morton
2022-08-14 6:20 ` Wang, Haiyue
2022-08-14 6:49 ` Wang, Haiyue
2022-08-14 14:05 ` [PATCH v2 0/3] fix follow_page related issues Haiyue Wang
2022-08-14 14:05 ` [PATCH v2 1/3] mm: revert handling Non-LRU pages returned by follow_page Haiyue Wang
2022-08-14 16:30 ` David Hildenbrand
2022-08-15 1:02 ` Wang, Haiyue
2022-08-14 14:05 ` [PATCH v2 2/3] mm: migration: fix the FOLL_GET failure on following huge page Haiyue Wang
2022-08-14 14:05 ` [PATCH v2 3/3] mm: handling Non-LRU pages returned by follow_page Haiyue Wang
2022-08-14 16:34 ` David Hildenbrand
2022-08-15 1:03 ` Wang, Haiyue
2022-08-15 1:03 ` [PATCH v3 0/2] fix follow_page related issues Haiyue Wang
2022-08-15 1:03 ` [PATCH v3 1/2] mm: migration: fix the FOLL_GET failure on following huge page Haiyue Wang
2022-08-15 1:59 ` Huang, Ying
2022-08-15 2:10 ` Wang, Haiyue
2022-08-15 2:15 ` Wang, Haiyue
2022-08-15 2:51 ` Huang, Ying
2022-08-15 1:03 ` [PATCH v3 2/2] mm: fix the handling Non-LRU pages returned by follow_page Haiyue Wang
2022-08-15 1:39 ` Huang, Ying
2022-08-15 1:46 ` Wang, Haiyue
2022-08-15 1:59 ` [PATCH v4 0/2] fix follow_page related issues Haiyue Wang
2022-08-15 1:59 ` [PATCH v4 1/2] mm: migration: fix the FOLL_GET failure on following huge page Haiyue Wang
2022-08-15 4:28 ` Alistair Popple
2022-08-15 4:40 ` Wang, Haiyue
2022-08-15 5:16 ` Alistair Popple
2022-08-15 5:20 ` Wang, Haiyue
2022-08-15 5:35 ` Alistair Popple
2022-08-15 5:37 ` Wang, Haiyue
2022-08-15 1:59 ` [PATCH v4 2/2] mm: fix the handling Non-LRU pages returned by follow_page Haiyue Wang
2022-08-15 7:02 ` [PATCH v5 0/2] fix follow_page related issues Haiyue Wang
2022-08-15 7:02 ` [PATCH v5 1/2] mm: migration: fix the FOLL_GET failure on following huge page Haiyue Wang
2022-08-15 7:40 ` Huang, Ying
2022-08-15 7:02 ` [PATCH v5 2/2] mm: fix the handling Non-LRU pages returned by follow_page Haiyue Wang
2022-08-15 7:50 ` Huang, Ying
2022-08-15 14:28 ` Felix Kuehling
2022-08-16 0:00 ` Alistair Popple
2022-08-16 1:12 ` Wang, Haiyue
2022-08-16 2:45 ` Alistair Popple
2022-08-16 2:20 ` [PATCH v6 0/2] fix follow_page related issues Haiyue Wang
2022-08-16 2:21 ` [PATCH v6 1/2] mm: migration: fix the FOLL_GET failure on following huge page Haiyue Wang
2022-08-16 8:54 ` Baolin Wang
2022-08-17 0:58 ` Andrew Morton
2022-08-17 3:31 ` Wang, Haiyue
2022-08-17 5:43 ` Andrew Morton
2022-08-17 5:47 ` Wang, Haiyue
2022-08-17 17:26 ` Mike Kravetz
2022-08-17 21:58 ` Mike Kravetz
2022-08-18 0:32 ` Wang, Haiyue
2022-08-19 11:22 ` Michael Ellerman
2022-08-19 11:22 ` Michael Ellerman
2022-08-19 16:55 ` Mike Kravetz
2022-08-19 16:55 ` Mike Kravetz
2022-08-26 13:07 ` Michael Ellerman
2022-08-26 13:07 ` Michael Ellerman
2022-08-18 11:51 ` Gerald Schaefer
2022-08-18 11:57 ` Gerald Schaefer [this message]
2022-08-17 2:12 ` Miaohe Lin
2022-08-16 2:21 ` [PATCH v6 2/2] mm: fix the handling Non-LRU pages returned by follow_page Haiyue Wang
2022-08-16 4:42 ` Alistair Popple
2022-08-17 2:34 ` Miaohe Lin
2022-08-23 10:07 ` David Hildenbrand
2022-08-23 13:26 ` Wang, Haiyue
2022-08-23 13:27 ` David Hildenbrand
2022-08-23 13:29 ` Wang, Haiyue
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=20220818135717.609eef8a@thinkpad \
--to=gerald.schaefer@linux.ibm.com \
--cc=agordeev@linux.ibm.com \
--cc=akpm@linux-foundation.org \
--cc=alex.sierra@amd.com \
--cc=apopple@nvidia.com \
--cc=borntraeger@linux.ibm.com \
--cc=david@redhat.com \
--cc=gor@linux.ibm.com \
--cc=haiyue.wang@intel.com \
--cc=hca@linux.ibm.com \
--cc=linmiaohe@huawei.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linux-s390@vger.kernel.org \
--cc=mike.kravetz@oracle.com \
--cc=naoya.horiguchi@linux.dev \
--cc=songmuchun@bytedance.com \
--cc=svens@linux.ibm.com \
--cc=ying.huang@intel.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.