From: Dan Williams <dan.j.williams@intel.com> To: akpm@linux-foundation.org Cc: David Hildenbrand <david@redhat.com>, stable@vger.kernel.org, Naoya Horiguchi <nao.horiguchi@gmail.com>, Qian Cai <cai@lca.pw>, Michal Hocko <mhocko@kernel.org>, Oscar Salvador <osalvador@suse.de>, Michal Hocko <mhocko@suse.com>, Naoya Horiguchi <naoya.horiguchi@nec.com>, linux-mm@kvack.org, linux-nvdimm@lists.01.org, linux-kernel@vger.kernel.org Subject: [PATCH v4 0/5] mm: Fix pfn_to_online_page() with respect to ZONE_DEVICE Date: Wed, 13 Jan 2021 16:43:10 -0800 [thread overview] Message-ID: <161058499000.1840162.702316708443239771.stgit@dwillia2-desk3.amr.corp.intel.com> (raw) Changes since v3 [1]: - Switch to "if (IS_ENABLED(CONFIG_HAVE_ARCH_PFN_VALID) && !pfn_valid(pfn))" (David) - Finish collecting reviewed-bys across all patches in the series - Drop the libnvdimm fixup, to be merged through nvdimm.git not -mm [1]: http://lore.kernel.org/r/161052331545.1805594.2356512831689786960.stgit@dwillia2-desk3.amr.corp.intel.com --- Andrew, All patches in this series have been reviewed and the kbuild-robot reports a build-success over 172 configs. They pass an updated version of the nvdimm unit tests to exercise corner cases of pfn_to_online_page() and get_dev_pagemap() [2], and apply cleanly to current -next. Please apply, thanks. [2]: http://lore.kernel.org/r/161052209289.1804207.11599120961607513911.stgit@dwillia2-desk3.amr.corp.intel.com --- Michal reminds that the discussion about how to ensure pfn-walkers do not get confused by ZONE_DEVICE pages never resolved. A pfn-walker that uses pfn_to_online_page() may inadvertently translate a pfn as online and in the page allocator, when it is offline managed by a ZONE_DEVICE mapping (details in Patch 3: ("mm: Teach pfn_to_online_page() about ZONE_DEVICE section collisions")). The 2 proposals under consideration are teach pfn_to_online_page() to be precise in the presence of mixed-zone sections, or teach the memory-add code to drop the System RAM associated with ZONE_DEVICE collisions. In order to not regress memory capacity by a few 10s to 100s of MiB the approach taken in this set is to add precision to pfn_to_online_page(). In the course of validating pfn_to_online_page() a couple other fixes fell out: 1/ soft_offline_page() fails to drop the reference taken in the madvise(..., MADV_SOFT_OFFLINE) case. 2/ memory_failure() uses get_dev_pagemap() to lookup ZONE_DEVICE pages, however that mapping may contain data pages and metadata raw pfns. Introduce pgmap_pfn_valid() to delineate the 2 types and fail the handling of raw metadata pfns. --- Dan Williams (5): mm: Move pfn_to_online_page() out of line mm: Teach pfn_to_online_page() to consider subsection validity mm: Teach pfn_to_online_page() about ZONE_DEVICE section collisions mm: Fix page reference leak in soft_offline_page() mm: Fix memory_failure() handling of dax-namespace metadata include/linux/memory_hotplug.h | 17 +--------- include/linux/memremap.h | 6 +++ include/linux/mmzone.h | 22 +++++++++---- mm/memory-failure.c | 26 +++++++++++++-- mm/memory_hotplug.c | 69 ++++++++++++++++++++++++++++++++++++++++ mm/memremap.c | 15 +++++++++ 6 files changed, 128 insertions(+), 27 deletions(-) _______________________________________________ Linux-nvdimm mailing list -- linux-nvdimm@lists.01.org To unsubscribe send an email to linux-nvdimm-leave@lists.01.org
WARNING: multiple messages have this Message-ID (diff)
From: Dan Williams <dan.j.williams@intel.com> To: akpm@linux-foundation.org Cc: David Hildenbrand <david@redhat.com>, stable@vger.kernel.org, Naoya Horiguchi <nao.horiguchi@gmail.com>, Qian Cai <cai@lca.pw>, Michal Hocko <mhocko@kernel.org>, Oscar Salvador <osalvador@suse.de>, Michal Hocko <mhocko@suse.com>, Naoya Horiguchi <naoya.horiguchi@nec.com>, linux-mm@kvack.org, linux-nvdimm@lists.01.org, linux-kernel@vger.kernel.org Subject: [PATCH v4 0/5] mm: Fix pfn_to_online_page() with respect to ZONE_DEVICE Date: Wed, 13 Jan 2021 16:43:10 -0800 [thread overview] Message-ID: <161058499000.1840162.702316708443239771.stgit@dwillia2-desk3.amr.corp.intel.com> (raw) Changes since v3 [1]: - Switch to "if (IS_ENABLED(CONFIG_HAVE_ARCH_PFN_VALID) && !pfn_valid(pfn))" (David) - Finish collecting reviewed-bys across all patches in the series - Drop the libnvdimm fixup, to be merged through nvdimm.git not -mm [1]: http://lore.kernel.org/r/161052331545.1805594.2356512831689786960.stgit@dwillia2-desk3.amr.corp.intel.com --- Andrew, All patches in this series have been reviewed and the kbuild-robot reports a build-success over 172 configs. They pass an updated version of the nvdimm unit tests to exercise corner cases of pfn_to_online_page() and get_dev_pagemap() [2], and apply cleanly to current -next. Please apply, thanks. [2]: http://lore.kernel.org/r/161052209289.1804207.11599120961607513911.stgit@dwillia2-desk3.amr.corp.intel.com --- Michal reminds that the discussion about how to ensure pfn-walkers do not get confused by ZONE_DEVICE pages never resolved. A pfn-walker that uses pfn_to_online_page() may inadvertently translate a pfn as online and in the page allocator, when it is offline managed by a ZONE_DEVICE mapping (details in Patch 3: ("mm: Teach pfn_to_online_page() about ZONE_DEVICE section collisions")). The 2 proposals under consideration are teach pfn_to_online_page() to be precise in the presence of mixed-zone sections, or teach the memory-add code to drop the System RAM associated with ZONE_DEVICE collisions. In order to not regress memory capacity by a few 10s to 100s of MiB the approach taken in this set is to add precision to pfn_to_online_page(). In the course of validating pfn_to_online_page() a couple other fixes fell out: 1/ soft_offline_page() fails to drop the reference taken in the madvise(..., MADV_SOFT_OFFLINE) case. 2/ memory_failure() uses get_dev_pagemap() to lookup ZONE_DEVICE pages, however that mapping may contain data pages and metadata raw pfns. Introduce pgmap_pfn_valid() to delineate the 2 types and fail the handling of raw metadata pfns. --- Dan Williams (5): mm: Move pfn_to_online_page() out of line mm: Teach pfn_to_online_page() to consider subsection validity mm: Teach pfn_to_online_page() about ZONE_DEVICE section collisions mm: Fix page reference leak in soft_offline_page() mm: Fix memory_failure() handling of dax-namespace metadata include/linux/memory_hotplug.h | 17 +--------- include/linux/memremap.h | 6 +++ include/linux/mmzone.h | 22 +++++++++---- mm/memory-failure.c | 26 +++++++++++++-- mm/memory_hotplug.c | 69 ++++++++++++++++++++++++++++++++++++++++ mm/memremap.c | 15 +++++++++ 6 files changed, 128 insertions(+), 27 deletions(-)
next reply other threads:[~2021-01-14 0:43 UTC|newest] Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-01-14 0:43 Dan Williams [this message] 2021-01-14 0:43 ` [PATCH v4 0/5] mm: Fix pfn_to_online_page() with respect to ZONE_DEVICE Dan Williams 2021-01-14 0:43 ` [PATCH v4 1/5] mm: Move pfn_to_online_page() out of line Dan Williams 2021-01-14 0:43 ` Dan Williams 2021-01-20 10:11 ` Michal Hocko 2021-01-20 10:11 ` Michal Hocko 2021-01-14 0:43 ` [PATCH v4 2/5] mm: Teach pfn_to_online_page() to consider subsection validity Dan Williams 2021-01-14 0:43 ` Dan Williams 2021-01-20 10:24 ` Michal Hocko 2021-01-20 10:24 ` Michal Hocko 2021-01-14 0:43 ` [PATCH v4 3/5] mm: Teach pfn_to_online_page() about ZONE_DEVICE section collisions Dan Williams 2021-01-14 0:43 ` Dan Williams 2021-01-20 10:30 ` Michal Hocko 2021-01-20 10:30 ` Michal Hocko 2021-01-14 0:43 ` [PATCH v4 4/5] mm: Fix page reference leak in soft_offline_page() Dan Williams 2021-01-14 0:43 ` Dan Williams 2021-01-14 1:49 ` HORIGUCHI NAOYA(堀口 直也) 2021-01-14 1:49 ` HORIGUCHI NAOYA(堀口 直也) 2021-01-14 6:18 ` Dan Williams 2021-01-14 6:18 ` Dan Williams 2021-01-14 6:18 ` Dan Williams 2021-01-14 6:30 ` Oscar Salvador 2021-01-14 6:30 ` Oscar Salvador 2021-01-14 7:10 ` HORIGUCHI NAOYA(堀口 直也) 2021-01-14 7:10 ` HORIGUCHI NAOYA(堀口 直也) 2021-01-17 22:01 ` Andrew Morton 2021-01-17 22:01 ` Andrew Morton 2021-01-17 22:35 ` Dan Williams 2021-01-17 22:35 ` Dan Williams 2021-01-17 22:35 ` Dan Williams 2021-01-14 0:43 ` [PATCH v4 5/5] mm: Fix memory_failure() handling of dax-namespace metadata Dan Williams 2021-01-14 0:43 ` Dan Williams 2021-01-14 2:25 ` HORIGUCHI NAOYA(堀口 直也) 2021-01-14 2:25 ` HORIGUCHI NAOYA(堀口 直也)
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=161058499000.1840162.702316708443239771.stgit@dwillia2-desk3.amr.corp.intel.com \ --to=dan.j.williams@intel.com \ --cc=akpm@linux-foundation.org \ --cc=cai@lca.pw \ --cc=david@redhat.com \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-mm@kvack.org \ --cc=linux-nvdimm@lists.01.org \ --cc=mhocko@kernel.org \ --cc=mhocko@suse.com \ --cc=nao.horiguchi@gmail.com \ --cc=naoya.horiguchi@nec.com \ --cc=osalvador@suse.de \ --cc=stable@vger.kernel.org \ /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: linkBe 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.