From: Jerome Glisse <jglisse@redhat.com> To: Dave Hansen <dave.hansen@linux.intel.com> Cc: thomas.lendacky@amd.com, mhocko@suse.com, linux-nvdimm@lists.01.org, ying.huang@intel.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org, zwisler@kernel.org, fengguang.wu@intel.com, akpm@linux-foundation.org Subject: Re: [PATCH 2/5] mm/resource: move HMM pr_debug() deeper into resource code Date: Fri, 25 Jan 2019 14:07:17 -0500 [thread overview] Message-ID: <20190125190716.GB3237@redhat.com> (raw) In-Reply-To: <20190124231444.38182DD8@viggo.jf.intel.com> On Thu, Jan 24, 2019 at 03:14:44PM -0800, Dave Hansen wrote: > > From: Dave Hansen <dave.hansen@linux.intel.com> > > HMM consumes physical address space for its own use, even > though nothing is mapped or accessible there. It uses a > special resource description (IORES_DESC_DEVICE_PRIVATE_MEMORY) > to uniquely identify these areas. > > When HMM consumes address space, it makes a best guess about > what to consume. However, it is possible that a future memory > or device hotplug can collide with the reserved area. In the > case of these conflicts, there is an error message in > register_memory_resource(). > > Later patches in this series move register_memory_resource() > from using request_resource_conflict() to __request_region(). > Unfortunately, __request_region() does not return the conflict > like the previous function did, which makes it impossible to > check for IORES_DESC_DEVICE_PRIVATE_MEMORY in a conflicting > resource. > > Instead of warning in register_memory_resource(), move the > check into the core resource code itself (__request_region()) > where the conflicting resource _is_ available. This has the > added bonus of producing a warning in case of HMM conflicts > with devices *or* RAM address space, as opposed to the RAM- > only warnings that were there previously. > > Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com> > Cc: Dan Williams <dan.j.williams@intel.com> > Cc: Dave Jiang <dave.jiang@intel.com> > Cc: Ross Zwisler <zwisler@kernel.org> > Cc: Vishal Verma <vishal.l.verma@intel.com> > Cc: Tom Lendacky <thomas.lendacky@amd.com> > Cc: Andrew Morton <akpm@linux-foundation.org> > Cc: Michal Hocko <mhocko@suse.com> > Cc: linux-nvdimm@lists.01.org > Cc: linux-kernel@vger.kernel.org > Cc: linux-mm@kvack.org > Cc: Huang Ying <ying.huang@intel.com> > Cc: Fengguang Wu <fengguang.wu@intel.com> Reviewed-by: Jerome Glisse <jglisse@redhat.com> > --- > > b/kernel/resource.c | 10 ++++++++++ > b/mm/memory_hotplug.c | 5 ----- > 2 files changed, 10 insertions(+), 5 deletions(-) > > diff -puN kernel/resource.c~move-request_region-check kernel/resource.c > --- a/kernel/resource.c~move-request_region-check 2019-01-24 15:13:14.453199539 -0800 > +++ b/kernel/resource.c 2019-01-24 15:13:14.458199539 -0800 > @@ -1123,6 +1123,16 @@ struct resource * __request_region(struc > conflict = __request_resource(parent, res); > if (!conflict) > break; > + /* > + * mm/hmm.c reserves physical addresses which then > + * become unavailable to other users. Conflicts are > + * not expected. Be verbose if one is encountered. > + */ > + if (conflict->desc == IORES_DESC_DEVICE_PRIVATE_MEMORY) { > + pr_debug("Resource conflict with unaddressable " > + "device memory at %#010llx !\n", > + (unsigned long long)start); > + } > if (conflict != parent) { > if (!(conflict->flags & IORESOURCE_BUSY)) { > parent = conflict; > diff -puN mm/memory_hotplug.c~move-request_region-check mm/memory_hotplug.c > --- a/mm/memory_hotplug.c~move-request_region-check 2019-01-24 15:13:14.455199539 -0800 > +++ b/mm/memory_hotplug.c 2019-01-24 15:13:14.459199539 -0800 > @@ -109,11 +109,6 @@ static struct resource *register_memory_ > res->flags = IORESOURCE_SYSTEM_RAM | IORESOURCE_BUSY; > conflict = request_resource_conflict(&iomem_resource, res); > if (conflict) { > - if (conflict->desc == IORES_DESC_DEVICE_PRIVATE_MEMORY) { > - pr_debug("Device unaddressable memory block " > - "memory hotplug at %#010llx !\n", > - (unsigned long long)start); > - } > pr_debug("System RAM resource %pR cannot be added\n", res); > kfree(res); > return ERR_PTR(-EEXIST); > _ _______________________________________________ Linux-nvdimm mailing list Linux-nvdimm@lists.01.org https://lists.01.org/mailman/listinfo/linux-nvdimm
WARNING: multiple messages have this Message-ID (diff)
From: Jerome Glisse <jglisse@redhat.com> To: Dave Hansen <dave.hansen@linux.intel.com> Cc: linux-kernel@vger.kernel.org, dan.j.williams@intel.com, dave.jiang@intel.com, zwisler@kernel.org, vishal.l.verma@intel.com, thomas.lendacky@amd.com, akpm@linux-foundation.org, mhocko@suse.com, linux-nvdimm@lists.01.org, linux-mm@kvack.org, ying.huang@intel.com, fengguang.wu@intel.com Subject: Re: [PATCH 2/5] mm/resource: move HMM pr_debug() deeper into resource code Date: Fri, 25 Jan 2019 14:07:17 -0500 [thread overview] Message-ID: <20190125190716.GB3237@redhat.com> (raw) In-Reply-To: <20190124231444.38182DD8@viggo.jf.intel.com> On Thu, Jan 24, 2019 at 03:14:44PM -0800, Dave Hansen wrote: > > From: Dave Hansen <dave.hansen@linux.intel.com> > > HMM consumes physical address space for its own use, even > though nothing is mapped or accessible there. It uses a > special resource description (IORES_DESC_DEVICE_PRIVATE_MEMORY) > to uniquely identify these areas. > > When HMM consumes address space, it makes a best guess about > what to consume. However, it is possible that a future memory > or device hotplug can collide with the reserved area. In the > case of these conflicts, there is an error message in > register_memory_resource(). > > Later patches in this series move register_memory_resource() > from using request_resource_conflict() to __request_region(). > Unfortunately, __request_region() does not return the conflict > like the previous function did, which makes it impossible to > check for IORES_DESC_DEVICE_PRIVATE_MEMORY in a conflicting > resource. > > Instead of warning in register_memory_resource(), move the > check into the core resource code itself (__request_region()) > where the conflicting resource _is_ available. This has the > added bonus of producing a warning in case of HMM conflicts > with devices *or* RAM address space, as opposed to the RAM- > only warnings that were there previously. > > Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com> > Cc: Dan Williams <dan.j.williams@intel.com> > Cc: Dave Jiang <dave.jiang@intel.com> > Cc: Ross Zwisler <zwisler@kernel.org> > Cc: Vishal Verma <vishal.l.verma@intel.com> > Cc: Tom Lendacky <thomas.lendacky@amd.com> > Cc: Andrew Morton <akpm@linux-foundation.org> > Cc: Michal Hocko <mhocko@suse.com> > Cc: linux-nvdimm@lists.01.org > Cc: linux-kernel@vger.kernel.org > Cc: linux-mm@kvack.org > Cc: Huang Ying <ying.huang@intel.com> > Cc: Fengguang Wu <fengguang.wu@intel.com> Reviewed-by: Jerome Glisse <jglisse@redhat.com> > --- > > b/kernel/resource.c | 10 ++++++++++ > b/mm/memory_hotplug.c | 5 ----- > 2 files changed, 10 insertions(+), 5 deletions(-) > > diff -puN kernel/resource.c~move-request_region-check kernel/resource.c > --- a/kernel/resource.c~move-request_region-check 2019-01-24 15:13:14.453199539 -0800 > +++ b/kernel/resource.c 2019-01-24 15:13:14.458199539 -0800 > @@ -1123,6 +1123,16 @@ struct resource * __request_region(struc > conflict = __request_resource(parent, res); > if (!conflict) > break; > + /* > + * mm/hmm.c reserves physical addresses which then > + * become unavailable to other users. Conflicts are > + * not expected. Be verbose if one is encountered. > + */ > + if (conflict->desc == IORES_DESC_DEVICE_PRIVATE_MEMORY) { > + pr_debug("Resource conflict with unaddressable " > + "device memory at %#010llx !\n", > + (unsigned long long)start); > + } > if (conflict != parent) { > if (!(conflict->flags & IORESOURCE_BUSY)) { > parent = conflict; > diff -puN mm/memory_hotplug.c~move-request_region-check mm/memory_hotplug.c > --- a/mm/memory_hotplug.c~move-request_region-check 2019-01-24 15:13:14.455199539 -0800 > +++ b/mm/memory_hotplug.c 2019-01-24 15:13:14.459199539 -0800 > @@ -109,11 +109,6 @@ static struct resource *register_memory_ > res->flags = IORESOURCE_SYSTEM_RAM | IORESOURCE_BUSY; > conflict = request_resource_conflict(&iomem_resource, res); > if (conflict) { > - if (conflict->desc == IORES_DESC_DEVICE_PRIVATE_MEMORY) { > - pr_debug("Device unaddressable memory block " > - "memory hotplug at %#010llx !\n", > - (unsigned long long)start); > - } > pr_debug("System RAM resource %pR cannot be added\n", res); > kfree(res); > return ERR_PTR(-EEXIST); > _
next prev parent reply other threads:[~2019-01-25 19:07 UTC|newest] Thread overview: 80+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-01-24 23:14 [PATCH 0/5] [v4] Allow persistent memory to be used like normal RAM Dave Hansen 2019-01-24 23:14 ` Dave Hansen 2019-01-24 23:14 ` Dave Hansen 2019-01-24 23:14 ` [PATCH 1/5] mm/resource: return real error codes from walk failures Dave Hansen 2019-01-24 23:14 ` Dave Hansen 2019-01-24 23:14 ` Dave Hansen [not found] ` <20190124231442.EFD29EE0-LXbPSdftPKxrdx17CPfAsdBPR1lH4CV8@public.gmane.org> 2019-01-25 21:02 ` Bjorn Helgaas 2019-01-25 21:02 ` Bjorn Helgaas 2019-01-25 21:02 ` Bjorn Helgaas 2019-01-25 21:09 ` Dave Hansen 2019-01-25 21:09 ` Dave Hansen 2019-01-25 21:19 ` Bjorn Helgaas 2019-01-25 21:19 ` Bjorn Helgaas [not found] ` <4898e064-5298-6a82-83ea-23d16f3dfb3d-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org> 2019-01-29 1:18 ` Michael Ellerman 2019-01-29 1:18 ` Michael Ellerman 2019-01-24 23:14 ` [PATCH 2/5] mm/resource: move HMM pr_debug() deeper into resource code Dave Hansen 2019-01-24 23:14 ` Dave Hansen 2019-01-24 23:14 ` Dave Hansen 2019-01-25 19:07 ` Jerome Glisse [this message] 2019-01-25 19:07 ` Jerome Glisse 2019-01-25 21:18 ` Bjorn Helgaas 2019-01-25 21:18 ` Bjorn Helgaas 2019-01-25 21:18 ` Bjorn Helgaas 2019-01-25 21:24 ` Dave Hansen 2019-01-25 21:24 ` Dave Hansen 2019-01-29 1:34 ` Michael Ellerman 2019-01-29 1:34 ` Michael Ellerman 2019-01-24 23:14 ` [PATCH 3/5] mm/memory-hotplug: allow memory resources to be children Dave Hansen 2019-01-24 23:14 ` Dave Hansen 2019-01-24 23:14 ` Dave Hansen 2019-01-24 23:14 ` [PATCH 4/5] dax/kmem: let walk_system_ram_range() search child resources Dave Hansen 2019-01-24 23:14 ` Dave Hansen 2019-01-24 23:14 ` Dave Hansen 2019-01-24 23:14 ` [PATCH 5/5] dax: "Hotplug" persistent memory for use like normal RAM Dave Hansen 2019-01-24 23:14 ` Dave Hansen 2019-01-24 23:14 ` Dave Hansen 2019-01-25 6:13 ` Jane Chu 2019-01-25 6:13 ` Jane Chu 2019-01-25 6:27 ` Dan Williams 2019-01-25 6:27 ` Dan Williams 2019-01-25 8:20 ` Du, Fan 2019-01-25 8:20 ` Du, Fan 2019-01-25 17:18 ` Dan Williams 2019-01-25 18:20 ` Verma, Vishal L 2019-01-25 18:20 ` Verma, Vishal L 2019-01-25 19:10 ` Jane Chu 2019-01-25 19:15 ` Dan Williams 2019-01-25 19:15 ` Dan Williams 2019-01-25 19:15 ` Dan Williams 2019-01-25 23:30 ` Jane Chu 2019-01-28 9:25 ` Michal Hocko 2019-01-28 16:34 ` Dan Williams 2019-01-28 16:34 ` Dan Williams 2019-01-28 16:34 ` Dan Williams 2019-02-09 11:00 ` Brice Goglin 2019-02-11 16:22 ` Dave Hansen 2019-02-11 16:22 ` Dave Hansen 2019-02-12 19:59 ` Brice Goglin 2019-02-13 0:30 ` Dan Williams 2019-02-13 0:30 ` Dan Williams 2019-02-13 8:12 ` Brice Goglin 2019-02-13 8:12 ` Brice Goglin 2019-02-13 8:24 ` Dan Williams 2019-02-13 8:24 ` Dan Williams 2019-02-13 8:43 ` Brice Goglin 2019-02-13 8:43 ` Brice Goglin 2019-02-13 13:06 ` Brice Goglin 2019-02-13 13:06 ` Brice Goglin 2019-02-13 16:19 ` Dan Williams 2019-02-13 16:19 ` Dan Williams 2019-01-25 19:08 ` [PATCH 0/5] [v4] Allow persistent memory to be used " Jerome Glisse 2019-01-25 19:08 ` Jerome Glisse 2019-01-28 11:09 ` Balbir Singh 2019-01-28 11:09 ` Balbir Singh 2019-01-28 16:50 ` Dave Hansen 2019-01-28 16:50 ` Dave Hansen 2019-01-28 16:50 ` Dave Hansen 2019-02-25 18:57 [PATCH 0/5] [v5] " Dave Hansen 2019-02-25 18:57 ` [PATCH 2/5] mm/resource: move HMM pr_debug() deeper into resource code Dave Hansen 2019-02-25 18:57 ` Dave Hansen 2019-02-25 18:57 ` Dave Hansen
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=20190125190716.GB3237@redhat.com \ --to=jglisse@redhat.com \ --cc=akpm@linux-foundation.org \ --cc=dave.hansen@linux.intel.com \ --cc=fengguang.wu@intel.com \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-mm@kvack.org \ --cc=linux-nvdimm@lists.01.org \ --cc=mhocko@suse.com \ --cc=thomas.lendacky@amd.com \ --cc=ying.huang@intel.com \ --cc=zwisler@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.