Message ID | 20200327071202.2159885-3-alastair@d-silva.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Add support for OpenCAPI Persistent Memory devices | expand |
On Sun, Mar 29, 2020 at 10:23 PM Alastair D'Silva <alastair@d-silva.org> wrote: > > When setting up OpenCAPI connected persistent memory, the range check may > not be performed until quite late (or perhaps not at all, if the user does > not establish a DAX device). > > This patch makes the range check callable so we can perform the check while > probing the OpenCAPI Persistent Memory device. > > Signed-off-by: Alastair D'Silva <alastair@d-silva.org> > Reviewed-by: Andrew Donnellan <ajd@linux.ibm.com> > --- > include/linux/memory_hotplug.h | 5 +++++ > mm/memory_hotplug.c | 4 ++-- > 2 files changed, 7 insertions(+), 2 deletions(-) > > diff --git a/include/linux/memory_hotplug.h b/include/linux/memory_hotplug.h > index f4d59155f3d4..9a19ae0d7e31 100644 > --- a/include/linux/memory_hotplug.h > +++ b/include/linux/memory_hotplug.h > @@ -337,6 +337,11 @@ static inline void __remove_memory(int nid, u64 start, u64 size) {} > extern void set_zone_contiguous(struct zone *zone); > extern void clear_zone_contiguous(struct zone *zone); > > +#ifdef CONFIG_MEMORY_HOTPLUG_SPARSE > +int check_hotplug_memory_addressable(unsigned long pfn, > + unsigned long nr_pages); > +#endif /* CONFIG_MEMORY_HOTPLUG_SPARSE */ Let's move this to include/linux/memory.h with the other CONFIG_MEMORY_HOTPLUG_SPARSE declarations, and add a dummy implementation for the CONFIG_MEMORY_HOTPLUG_SPARSE=n case. Also, this patch can be squashed with the next one, no need for it to be stand alone. > + > extern void __ref free_area_init_core_hotplug(int nid); > extern int __add_memory(int nid, u64 start, u64 size); > extern int add_memory(int nid, u64 start, u64 size); > diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c > index 0a54ffac8c68..14945f033594 100644 > --- a/mm/memory_hotplug.c > +++ b/mm/memory_hotplug.c > @@ -276,8 +276,8 @@ static int check_pfn_span(unsigned long pfn, unsigned long nr_pages, > return 0; > } > > -static int check_hotplug_memory_addressable(unsigned long pfn, > - unsigned long nr_pages) > +int check_hotplug_memory_addressable(unsigned long pfn, > + unsigned long nr_pages) > { > const u64 max_addr = PFN_PHYS(pfn + nr_pages) - 1; > > -- > 2.24.1 >
> -----Original Message----- > From: Dan Williams <dan.j.williams@intel.com> > Sent: Wednesday, 1 April 2020 7:48 PM > To: Alastair D'Silva <alastair@d-silva.org> > Cc: Aneesh Kumar K . V <aneesh.kumar@linux.ibm.com>; Oliver O'Halloran > <oohall@gmail.com>; Benjamin Herrenschmidt > <benh@kernel.crashing.org>; Paul Mackerras <paulus@samba.org>; Michael > Ellerman <mpe@ellerman.id.au>; Frederic Barrat <fbarrat@linux.ibm.com>; > Andrew Donnellan <ajd@linux.ibm.com>; Arnd Bergmann > <arnd@arndb.de>; Greg Kroah-Hartman <gregkh@linuxfoundation.org>; > Vishal Verma <vishal.l.verma@intel.com>; Dave Jiang > <dave.jiang@intel.com>; Ira Weiny <ira.weiny@intel.com>; Andrew Morton > <akpm@linux-foundation.org>; Mauro Carvalho Chehab > <mchehab+samsung@kernel.org>; David S. Miller <davem@davemloft.net>; > Rob Herring <robh@kernel.org>; Anton Blanchard <anton@ozlabs.org>; > Krzysztof Kozlowski <krzk@kernel.org>; Mahesh Salgaonkar > <mahesh@linux.vnet.ibm.com>; Madhavan Srinivasan > <maddy@linux.vnet.ibm.com>; Cédric Le Goater <clg@kaod.org>; Anju T > Sudhakar <anju@linux.vnet.ibm.com>; Hari Bathini > <hbathini@linux.ibm.com>; Thomas Gleixner <tglx@linutronix.de>; Greg > Kurz <groug@kaod.org>; Nicholas Piggin <npiggin@gmail.com>; Masahiro > Yamada <yamada.masahiro@socionext.com>; Alexey Kardashevskiy > <aik@ozlabs.ru>; Linux Kernel Mailing List <linux-kernel@vger.kernel.org>; > linuxppc-dev <linuxppc-dev@lists.ozlabs.org>; linux-nvdimm <linux- > nvdimm@lists.01.org>; Linux MM <linux-mm@kvack.org> > Subject: Re: [PATCH v4 02/25] mm/memory_hotplug: Allow > check_hotplug_memory_addressable to be called from drivers > > On Sun, Mar 29, 2020 at 10:23 PM Alastair D'Silva <alastair@d-silva.org> > wrote: > > > > When setting up OpenCAPI connected persistent memory, the range check > > may not be performed until quite late (or perhaps not at all, if the > > user does not establish a DAX device). > > > > This patch makes the range check callable so we can perform the check > > while probing the OpenCAPI Persistent Memory device. > > > > Signed-off-by: Alastair D'Silva <alastair@d-silva.org> > > Reviewed-by: Andrew Donnellan <ajd@linux.ibm.com> > > --- > > include/linux/memory_hotplug.h | 5 +++++ > > mm/memory_hotplug.c | 4 ++-- > > 2 files changed, 7 insertions(+), 2 deletions(-) > > > > diff --git a/include/linux/memory_hotplug.h > > b/include/linux/memory_hotplug.h index f4d59155f3d4..9a19ae0d7e31 > > 100644 > > --- a/include/linux/memory_hotplug.h > > +++ b/include/linux/memory_hotplug.h > > @@ -337,6 +337,11 @@ static inline void __remove_memory(int nid, u64 > > start, u64 size) {} extern void set_zone_contiguous(struct zone > > *zone); extern void clear_zone_contiguous(struct zone *zone); > > > > +#ifdef CONFIG_MEMORY_HOTPLUG_SPARSE > > +int check_hotplug_memory_addressable(unsigned long pfn, > > + unsigned long nr_pages); #endif > > +/* CONFIG_MEMORY_HOTPLUG_SPARSE */ > > Let's move this to include/linux/memory.h with the other > CONFIG_MEMORY_HOTPLUG_SPARSE declarations, and add a dummy > implementation for the CONFIG_MEMORY_HOTPLUG_SPARSE=n case. > > Also, this patch can be squashed with the next one, no need for it to be > stand alone. > Ok > > > + > > extern void __ref free_area_init_core_hotplug(int nid); extern int > > __add_memory(int nid, u64 start, u64 size); extern int add_memory(int > > nid, u64 start, u64 size); diff --git a/mm/memory_hotplug.c > > b/mm/memory_hotplug.c index 0a54ffac8c68..14945f033594 100644 > > --- a/mm/memory_hotplug.c > > +++ b/mm/memory_hotplug.c > > @@ -276,8 +276,8 @@ static int check_pfn_span(unsigned long pfn, > unsigned long nr_pages, > > return 0; > > } > > > > -static int check_hotplug_memory_addressable(unsigned long pfn, > > - unsigned long nr_pages) > > +int check_hotplug_memory_addressable(unsigned long pfn, > > + unsigned long nr_pages) > > { > > const u64 max_addr = PFN_PHYS(pfn + nr_pages) - 1; > > > > -- > > 2.24.1 > >
diff --git a/include/linux/memory_hotplug.h b/include/linux/memory_hotplug.h index f4d59155f3d4..9a19ae0d7e31 100644 --- a/include/linux/memory_hotplug.h +++ b/include/linux/memory_hotplug.h @@ -337,6 +337,11 @@ static inline void __remove_memory(int nid, u64 start, u64 size) {} extern void set_zone_contiguous(struct zone *zone); extern void clear_zone_contiguous(struct zone *zone); +#ifdef CONFIG_MEMORY_HOTPLUG_SPARSE +int check_hotplug_memory_addressable(unsigned long pfn, + unsigned long nr_pages); +#endif /* CONFIG_MEMORY_HOTPLUG_SPARSE */ + extern void __ref free_area_init_core_hotplug(int nid); extern int __add_memory(int nid, u64 start, u64 size); extern int add_memory(int nid, u64 start, u64 size); diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c index 0a54ffac8c68..14945f033594 100644 --- a/mm/memory_hotplug.c +++ b/mm/memory_hotplug.c @@ -276,8 +276,8 @@ static int check_pfn_span(unsigned long pfn, unsigned long nr_pages, return 0; } -static int check_hotplug_memory_addressable(unsigned long pfn, - unsigned long nr_pages) +int check_hotplug_memory_addressable(unsigned long pfn, + unsigned long nr_pages) { const u64 max_addr = PFN_PHYS(pfn + nr_pages) - 1;