All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Alastair D'Silva" <alastair@au1.ibm.com>
To: Andrew Donnellan <ajd@linux.ibm.com>
Cc: "Benjamin Herrenschmidt" <benh@kernel.crashing.org>,
	"Paul Mackerras" <paulus@samba.org>,
	"Michael Ellerman" <mpe@ellerman.id.au>,
	"Frederic Barrat" <fbarrat@linux.ibm.com>,
	"Arnd Bergmann" <arnd@arndb.de>,
	"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
	"Geert Uytterhoeven" <geert+renesas@glider.be>,
	"Krzysztof Kozlowski" <krzk@kernel.org>,
	"Anton Blanchard" <anton@ozlabs.org>,
	"Allison Randal" <allison@lohutok.net>,
	"Cédric Le Goater" <clg@kaod.org>,
	"David Gibson" <david@gibson.dropbear.id.au>,
	"Vasant Hegde" <hegdevasant@linux.vnet.ibm.com>,
	"Thomas Gleixner" <tglx@linutronix.de>,
	"Anju T Sudhakar" <anju@linux.vnet.ibm.com>,
	"Hari Bathini" <hbathini@linux.ibm.com>,
	"Mahesh Salgaonkar" <mahesh@linux.vnet.ibm.com>,
	"Greg Kurz" <groug@kaod.org>,
	"Masahiro Yamada" <yamada.masahiro@socionext.com>,
	"Alexey Kardashevskiy" <aik@ozlabs.ru>,
	"Andrew Morton" <akpm@linux-foundation.org>,
	"David Hildenbrand" <david@redhat.com>,
	"Oscar Salvador" <osalvador@suse.com>,
	"Michal Hocko" <mhocko@suse.com>,
	"Pavel Tatashin" <pasha.tatashin@soleen.com>,
	"Wei Yang" <richard.weiyang@gmail.com>, "Qian Cai" <cai@lca.pw>,
	linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org,
	linux-nvdimm@lists.01.org, linux-mm@kvack.org
Subject: Re: [PATCH 04/10] powerpc: Map & release OpenCAPI LPC memory
Date: Tue, 29 Oct 2019 13:44:19 +1100	[thread overview]
Message-ID: <4dc37533df4f5566fdbe5c212289c438d0fe2c3b.camel@au1.ibm.com> (raw)
In-Reply-To: <32caa2ef-43b2-f71d-f470-ccfed0ae094e@linux.ibm.com>

On Tue, 2019-10-29 at 12:49 +1100, Andrew Donnellan wrote:
> On 25/10/19 3:46 pm, Alastair D'Silva wrote:
> > From: Alastair D'Silva <alastair@d-silva.org>
> > 
> > This patch adds platform support to map & release LPC memory.
> >  > Signed-off-by: Alastair D'Silva <alastair@d-silva.org>
> > ---
> >   arch/powerpc/include/asm/pnv-ocxl.h   |  2 ++
> >   arch/powerpc/platforms/powernv/ocxl.c | 41
> > +++++++++++++++++++++++++++
> >   include/linux/memory_hotplug.h        |  5 ++++
> >   mm/memory_hotplug.c                   |  3 +-
> >   4 files changed, 50 insertions(+), 1 deletion(-)
> > 
> > diff --git a/arch/powerpc/include/asm/pnv-ocxl.h
> > b/arch/powerpc/include/asm/pnv-ocxl.h
> > index 7de82647e761..f8f8ffb48aa8 100644
> > --- a/arch/powerpc/include/asm/pnv-ocxl.h
> > +++ b/arch/powerpc/include/asm/pnv-ocxl.h
> > @@ -32,5 +32,7 @@ extern int pnv_ocxl_spa_remove_pe_from_cache(void
> > *platform_data, int pe_handle)
> >   
> >   extern int pnv_ocxl_alloc_xive_irq(u32 *irq, u64 *trigger_addr);
> >   extern void pnv_ocxl_free_xive_irq(u32 irq);
> > +extern u64 pnv_ocxl_platform_lpc_setup(struct pci_dev *pdev, u64
> > size);
> > +extern void pnv_ocxl_platform_lpc_release(struct pci_dev *pdev);
> >   
> >   #endif /* _ASM_PNV_OCXL_H */
> > diff --git a/arch/powerpc/platforms/powernv/ocxl.c
> > b/arch/powerpc/platforms/powernv/ocxl.c
> > index 8c65aacda9c8..c6d4234e0aba 100644
> > --- a/arch/powerpc/platforms/powernv/ocxl.c
> > +++ b/arch/powerpc/platforms/powernv/ocxl.c
> > @@ -475,6 +475,47 @@ void pnv_ocxl_spa_release(void *platform_data)
> >   }
> >   EXPORT_SYMBOL_GPL(pnv_ocxl_spa_release);
> >   
> > +u64 pnv_ocxl_platform_lpc_setup(struct pci_dev *pdev, u64 size)
> > +{
> > +	struct pci_controller *hose = pci_bus_to_host(pdev->bus);
> > +	struct pnv_phb *phb = hose->private_data;
> > +	u32 bdfn = (pdev->bus->number << 8) | pdev->devfn;
> 
> I think pci_dev_id() is the canonical way to do this? (same applies
> in 
> release)

Thanks.

> 
> > +	u64 base_addr = 0;
> > +	int rc;
> > +
> > +	rc = opal_npu_mem_alloc(phb->opal_id, bdfn, size, &base_addr);
> > +	if (rc) {
> > +		dev_warn(&pdev->dev,
> > +			 "OPAL could not allocate LPC memory, rc=%d\n",
> > rc);
> > +		return 0;
> > +	}
> > +
> > +	base_addr = be64_to_cpu(base_addr);
> 
> sparse doesn't like this, the way it's usually done is declare a
> __be64 
> variable, pass that to the opal call, then store the conversion in a 
> regular u64
> 

Ok.

> > +
> > +	rc = check_hotplug_memory_addressable(base_addr >> PAGE_SHIFT,
> > +					      size >> PAGE_SHIFT);
> > +	if (rc)
> > +		return 0;
> > +
> > +	return base_addr;
> > +}
> > +EXPORT_SYMBOL_GPL(pnv_ocxl_platform_lpc_setup);
> > +
> > +void pnv_ocxl_platform_lpc_release(struct pci_dev *pdev)
> > +{
> > +	struct pci_controller *hose = pci_bus_to_host(pdev->bus);
> > +	struct pnv_phb *phb = hose->private_data;
> > +	u32 bdfn = (pdev->bus->number << 8) | pdev->devfn;
> > +	int rc;
> > +
> > +	rc = opal_npu_mem_release(phb->opal_id, bdfn);
> > +	if (rc)
> > +		dev_warn(&pdev->dev,
> > +			 "OPAL reported rc=%d when releasing LPC
> > memory\n", rc);
> > +}
> > +EXPORT_SYMBOL_GPL(pnv_ocxl_platform_lpc_release);
> > +
> > +
> >   int pnv_ocxl_spa_remove_pe_from_cache(void *platform_data, int
> > pe_handle)
> >   {
> >   	struct spa_data *data = (struct spa_data *) platform_data;
> > diff --git a/include/linux/memory_hotplug.h
> > b/include/linux/memory_hotplug.h
> > index f46ea71b4ffd..3f5f1a642abe 100644
> > --- a/include/linux/memory_hotplug.h
> > +++ b/include/linux/memory_hotplug.h
> > @@ -339,6 +339,11 @@ static inline int remove_memory(int nid, u64
> > start, u64 size)
> >   static inline void __remove_memory(int nid, u64 start, u64 size)
> > {}
> >   #endif /* CONFIG_MEMORY_HOTREMOVE */
> >   
> > +#if CONFIG_MEMORY_HOTPLUG_SPARSE
> 
> This needs to be #ifdef.
> 

Yup, 0 day caught that one too :)

> > +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 2cecf07b396f..b39827dbd071 100644
> > --- a/mm/memory_hotplug.c
> > +++ b/mm/memory_hotplug.c
> > @@ -278,7 +278,7 @@ static int check_pfn_span(unsigned long pfn,
> > unsigned long nr_pages,
> >   	return 0;
> >   }
> >   
> > -static int check_hotplug_memory_addressable(unsigned long pfn,
> > +int check_hotplug_memory_addressable(unsigned long pfn,
> >   					    unsigned long nr_pages)
> >   {
> >   	const u64 max_addr = PFN_PHYS(pfn + nr_pages) - 1;
> > @@ -294,6 +294,7 @@ static int
> > check_hotplug_memory_addressable(unsigned long pfn,
> >   
> >   	return 0;
> >   }
> > +EXPORT_SYMBOL_GPL(check_hotplug_memory_addressable);
> 
> This export seems unnecessary, you don't seem to be using this
> function 
> in a module anywhere in this series AFAICT.
> 

This is used within this patch, in the map call.

> Also it looks like a whitespace fix from removing the static ended up
> in 
> patch #8 rather than here.

Thanks.

> 
> >   
> >   /*
> >    * Reasonably generic function for adding memory.  It is
> > 

-- 
Alastair D'Silva
Open Source Developer
Linux Technology Centre, IBM Australia
mob: 0423 762 819
_______________________________________________
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: "Alastair D'Silva" <alastair@au1.ibm.com>
To: Andrew Donnellan <ajd@linux.ibm.com>
Cc: "Benjamin Herrenschmidt" <benh@kernel.crashing.org>,
	"Paul Mackerras" <paulus@samba.org>,
	"Michael Ellerman" <mpe@ellerman.id.au>,
	"Frederic Barrat" <fbarrat@linux.ibm.com>,
	"Arnd Bergmann" <arnd@arndb.de>,
	"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
	"Dan Williams" <dan.j.williams@intel.com>,
	"Vishal Verma" <vishal.l.verma@intel.com>,
	"Dave Jiang" <dave.jiang@intel.com>,
	"Keith Busch" <keith.busch@intel.com>,
	"Ira Weiny" <ira.weiny@intel.com>,
	"Geert Uytterhoeven" <geert+renesas@glider.be>,
	"Krzysztof Kozlowski" <krzk@kernel.org>,
	"Anton Blanchard" <anton@ozlabs.org>,
	"Allison Randal" <allison@lohutok.net>,
	"Cédric Le Goater" <clg@kaod.org>,
	"David Gibson" <david@gibson.dropbear.id.au>,
	"Vasant Hegde" <hegdevasant@linux.vnet.ibm.com>,
	"Thomas Gleixner" <tglx@linutronix.de>,
	"Anju T Sudhakar" <anju@linux.vnet.ibm.com>,
	"Hari Bathini" <hbathini@linux.ibm.com>,
	"Mahesh Salgaonkar" <mahesh@linux.vnet.ibm.com>,
	"Greg Kurz" <groug@kaod.org>,
	"Masahiro Yamada" <yamada.masahiro@socionext.com>,
	"Alexey Kardashevskiy" <aik@ozlabs.ru>,
	"Andrew Morton" <akpm@linux-foundation.org>,
	"David Hildenbrand" <david@redhat.com>,
	"Oscar Salvador" <osalvador@suse.com>,
	"Michal Hocko" <mhocko@suse.com>,
	"Pavel Tatashin" <pasha.tatashin@soleen.com>,
	"Wei Yang" <richard.weiyang@gmail.com>, "Qian Cai" <cai@lca.pw>,
	linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org,
	linux-nvdimm@lists.01.org, linux-mm@kvack.org
Subject: Re: [PATCH 04/10] powerpc: Map & release OpenCAPI LPC memory
Date: Tue, 29 Oct 2019 13:44:19 +1100	[thread overview]
Message-ID: <4dc37533df4f5566fdbe5c212289c438d0fe2c3b.camel@au1.ibm.com> (raw)
In-Reply-To: <32caa2ef-43b2-f71d-f470-ccfed0ae094e@linux.ibm.com>

On Tue, 2019-10-29 at 12:49 +1100, Andrew Donnellan wrote:
> On 25/10/19 3:46 pm, Alastair D'Silva wrote:
> > From: Alastair D'Silva <alastair@d-silva.org>
> > 
> > This patch adds platform support to map & release LPC memory.
> >  > Signed-off-by: Alastair D'Silva <alastair@d-silva.org>
> > ---
> >   arch/powerpc/include/asm/pnv-ocxl.h   |  2 ++
> >   arch/powerpc/platforms/powernv/ocxl.c | 41
> > +++++++++++++++++++++++++++
> >   include/linux/memory_hotplug.h        |  5 ++++
> >   mm/memory_hotplug.c                   |  3 +-
> >   4 files changed, 50 insertions(+), 1 deletion(-)
> > 
> > diff --git a/arch/powerpc/include/asm/pnv-ocxl.h
> > b/arch/powerpc/include/asm/pnv-ocxl.h
> > index 7de82647e761..f8f8ffb48aa8 100644
> > --- a/arch/powerpc/include/asm/pnv-ocxl.h
> > +++ b/arch/powerpc/include/asm/pnv-ocxl.h
> > @@ -32,5 +32,7 @@ extern int pnv_ocxl_spa_remove_pe_from_cache(void
> > *platform_data, int pe_handle)
> >   
> >   extern int pnv_ocxl_alloc_xive_irq(u32 *irq, u64 *trigger_addr);
> >   extern void pnv_ocxl_free_xive_irq(u32 irq);
> > +extern u64 pnv_ocxl_platform_lpc_setup(struct pci_dev *pdev, u64
> > size);
> > +extern void pnv_ocxl_platform_lpc_release(struct pci_dev *pdev);
> >   
> >   #endif /* _ASM_PNV_OCXL_H */
> > diff --git a/arch/powerpc/platforms/powernv/ocxl.c
> > b/arch/powerpc/platforms/powernv/ocxl.c
> > index 8c65aacda9c8..c6d4234e0aba 100644
> > --- a/arch/powerpc/platforms/powernv/ocxl.c
> > +++ b/arch/powerpc/platforms/powernv/ocxl.c
> > @@ -475,6 +475,47 @@ void pnv_ocxl_spa_release(void *platform_data)
> >   }
> >   EXPORT_SYMBOL_GPL(pnv_ocxl_spa_release);
> >   
> > +u64 pnv_ocxl_platform_lpc_setup(struct pci_dev *pdev, u64 size)
> > +{
> > +	struct pci_controller *hose = pci_bus_to_host(pdev->bus);
> > +	struct pnv_phb *phb = hose->private_data;
> > +	u32 bdfn = (pdev->bus->number << 8) | pdev->devfn;
> 
> I think pci_dev_id() is the canonical way to do this? (same applies
> in 
> release)

Thanks.

> 
> > +	u64 base_addr = 0;
> > +	int rc;
> > +
> > +	rc = opal_npu_mem_alloc(phb->opal_id, bdfn, size, &base_addr);
> > +	if (rc) {
> > +		dev_warn(&pdev->dev,
> > +			 "OPAL could not allocate LPC memory, rc=%d\n",
> > rc);
> > +		return 0;
> > +	}
> > +
> > +	base_addr = be64_to_cpu(base_addr);
> 
> sparse doesn't like this, the way it's usually done is declare a
> __be64 
> variable, pass that to the opal call, then store the conversion in a 
> regular u64
> 

Ok.

> > +
> > +	rc = check_hotplug_memory_addressable(base_addr >> PAGE_SHIFT,
> > +					      size >> PAGE_SHIFT);
> > +	if (rc)
> > +		return 0;
> > +
> > +	return base_addr;
> > +}
> > +EXPORT_SYMBOL_GPL(pnv_ocxl_platform_lpc_setup);
> > +
> > +void pnv_ocxl_platform_lpc_release(struct pci_dev *pdev)
> > +{
> > +	struct pci_controller *hose = pci_bus_to_host(pdev->bus);
> > +	struct pnv_phb *phb = hose->private_data;
> > +	u32 bdfn = (pdev->bus->number << 8) | pdev->devfn;
> > +	int rc;
> > +
> > +	rc = opal_npu_mem_release(phb->opal_id, bdfn);
> > +	if (rc)
> > +		dev_warn(&pdev->dev,
> > +			 "OPAL reported rc=%d when releasing LPC
> > memory\n", rc);
> > +}
> > +EXPORT_SYMBOL_GPL(pnv_ocxl_platform_lpc_release);
> > +
> > +
> >   int pnv_ocxl_spa_remove_pe_from_cache(void *platform_data, int
> > pe_handle)
> >   {
> >   	struct spa_data *data = (struct spa_data *) platform_data;
> > diff --git a/include/linux/memory_hotplug.h
> > b/include/linux/memory_hotplug.h
> > index f46ea71b4ffd..3f5f1a642abe 100644
> > --- a/include/linux/memory_hotplug.h
> > +++ b/include/linux/memory_hotplug.h
> > @@ -339,6 +339,11 @@ static inline int remove_memory(int nid, u64
> > start, u64 size)
> >   static inline void __remove_memory(int nid, u64 start, u64 size)
> > {}
> >   #endif /* CONFIG_MEMORY_HOTREMOVE */
> >   
> > +#if CONFIG_MEMORY_HOTPLUG_SPARSE
> 
> This needs to be #ifdef.
> 

Yup, 0 day caught that one too :)

> > +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 2cecf07b396f..b39827dbd071 100644
> > --- a/mm/memory_hotplug.c
> > +++ b/mm/memory_hotplug.c
> > @@ -278,7 +278,7 @@ static int check_pfn_span(unsigned long pfn,
> > unsigned long nr_pages,
> >   	return 0;
> >   }
> >   
> > -static int check_hotplug_memory_addressable(unsigned long pfn,
> > +int check_hotplug_memory_addressable(unsigned long pfn,
> >   					    unsigned long nr_pages)
> >   {
> >   	const u64 max_addr = PFN_PHYS(pfn + nr_pages) - 1;
> > @@ -294,6 +294,7 @@ static int
> > check_hotplug_memory_addressable(unsigned long pfn,
> >   
> >   	return 0;
> >   }
> > +EXPORT_SYMBOL_GPL(check_hotplug_memory_addressable);
> 
> This export seems unnecessary, you don't seem to be using this
> function 
> in a module anywhere in this series AFAICT.
> 

This is used within this patch, in the map call.

> Also it looks like a whitespace fix from removing the static ended up
> in 
> patch #8 rather than here.

Thanks.

> 
> >   
> >   /*
> >    * Reasonably generic function for adding memory.  It is
> > 

-- 
Alastair D'Silva
Open Source Developer
Linux Technology Centre, IBM Australia
mob: 0423 762 819


WARNING: multiple messages have this Message-ID (diff)
From: "Alastair D'Silva" <alastair@au1.ibm.com>
To: Andrew Donnellan <ajd@linux.ibm.com>
Cc: "Oscar Salvador" <osalvador@suse.com>,
	"Michal Hocko" <mhocko@suse.com>,
	"Geert Uytterhoeven" <geert+renesas@glider.be>,
	"David Hildenbrand" <david@redhat.com>,
	"Alexey Kardashevskiy" <aik@ozlabs.ru>,
	"Wei Yang" <richard.weiyang@gmail.com>,
	"Keith Busch" <keith.busch@intel.com>,
	"Masahiro Yamada" <yamada.masahiro@socionext.com>,
	"Paul Mackerras" <paulus@samba.org>,
	"Ira Weiny" <ira.weiny@intel.com>,
	"Thomas Gleixner" <tglx@linutronix.de>,
	"Dave Jiang" <dave.jiang@intel.com>,
	linux-nvdimm@lists.01.org,
	"Vishal Verma" <vishal.l.verma@intel.com>,
	"Krzysztof Kozlowski" <krzk@kernel.org>,
	"Anju T Sudhakar" <anju@linux.vnet.ibm.com>,
	"Allison Randal" <allison@lohutok.net>,
	"Mahesh Salgaonkar" <mahesh@linux.vnet.ibm.com>,
	"Pavel Tatashin" <pasha.tatashin@soleen.com>,
	"Arnd Bergmann" <arnd@arndb.de>, "Greg Kurz" <groug@kaod.org>,
	"Qian Cai" <cai@lca.pw>, "Cédric Le Goater" <clg@kaod.org>,
	"Dan Williams" <dan.j.williams@intel.com>,
	"Hari Bathini" <hbathini@linux.ibm.com>,
	"David Gibson" <david@gibson.dropbear.id.au>,
	linux-mm@kvack.org,
	"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
	linux-kernel@vger.kernel.org,
	"Vasant Hegde" <hegdevasant@linux.vnet.ibm.com>,
	"Frederic Barrat" <fbarrat@linux.ibm.com>,
	"Andrew Morton" <akpm@linux-foundation.org>,
	linuxppc-dev@lists.ozlabs.org
Subject: Re: [PATCH 04/10] powerpc: Map & release OpenCAPI LPC memory
Date: Tue, 29 Oct 2019 13:44:19 +1100	[thread overview]
Message-ID: <4dc37533df4f5566fdbe5c212289c438d0fe2c3b.camel@au1.ibm.com> (raw)
In-Reply-To: <32caa2ef-43b2-f71d-f470-ccfed0ae094e@linux.ibm.com>

On Tue, 2019-10-29 at 12:49 +1100, Andrew Donnellan wrote:
> On 25/10/19 3:46 pm, Alastair D'Silva wrote:
> > From: Alastair D'Silva <alastair@d-silva.org>
> > 
> > This patch adds platform support to map & release LPC memory.
> >  > Signed-off-by: Alastair D'Silva <alastair@d-silva.org>
> > ---
> >   arch/powerpc/include/asm/pnv-ocxl.h   |  2 ++
> >   arch/powerpc/platforms/powernv/ocxl.c | 41
> > +++++++++++++++++++++++++++
> >   include/linux/memory_hotplug.h        |  5 ++++
> >   mm/memory_hotplug.c                   |  3 +-
> >   4 files changed, 50 insertions(+), 1 deletion(-)
> > 
> > diff --git a/arch/powerpc/include/asm/pnv-ocxl.h
> > b/arch/powerpc/include/asm/pnv-ocxl.h
> > index 7de82647e761..f8f8ffb48aa8 100644
> > --- a/arch/powerpc/include/asm/pnv-ocxl.h
> > +++ b/arch/powerpc/include/asm/pnv-ocxl.h
> > @@ -32,5 +32,7 @@ extern int pnv_ocxl_spa_remove_pe_from_cache(void
> > *platform_data, int pe_handle)
> >   
> >   extern int pnv_ocxl_alloc_xive_irq(u32 *irq, u64 *trigger_addr);
> >   extern void pnv_ocxl_free_xive_irq(u32 irq);
> > +extern u64 pnv_ocxl_platform_lpc_setup(struct pci_dev *pdev, u64
> > size);
> > +extern void pnv_ocxl_platform_lpc_release(struct pci_dev *pdev);
> >   
> >   #endif /* _ASM_PNV_OCXL_H */
> > diff --git a/arch/powerpc/platforms/powernv/ocxl.c
> > b/arch/powerpc/platforms/powernv/ocxl.c
> > index 8c65aacda9c8..c6d4234e0aba 100644
> > --- a/arch/powerpc/platforms/powernv/ocxl.c
> > +++ b/arch/powerpc/platforms/powernv/ocxl.c
> > @@ -475,6 +475,47 @@ void pnv_ocxl_spa_release(void *platform_data)
> >   }
> >   EXPORT_SYMBOL_GPL(pnv_ocxl_spa_release);
> >   
> > +u64 pnv_ocxl_platform_lpc_setup(struct pci_dev *pdev, u64 size)
> > +{
> > +	struct pci_controller *hose = pci_bus_to_host(pdev->bus);
> > +	struct pnv_phb *phb = hose->private_data;
> > +	u32 bdfn = (pdev->bus->number << 8) | pdev->devfn;
> 
> I think pci_dev_id() is the canonical way to do this? (same applies
> in 
> release)

Thanks.

> 
> > +	u64 base_addr = 0;
> > +	int rc;
> > +
> > +	rc = opal_npu_mem_alloc(phb->opal_id, bdfn, size, &base_addr);
> > +	if (rc) {
> > +		dev_warn(&pdev->dev,
> > +			 "OPAL could not allocate LPC memory, rc=%d\n",
> > rc);
> > +		return 0;
> > +	}
> > +
> > +	base_addr = be64_to_cpu(base_addr);
> 
> sparse doesn't like this, the way it's usually done is declare a
> __be64 
> variable, pass that to the opal call, then store the conversion in a 
> regular u64
> 

Ok.

> > +
> > +	rc = check_hotplug_memory_addressable(base_addr >> PAGE_SHIFT,
> > +					      size >> PAGE_SHIFT);
> > +	if (rc)
> > +		return 0;
> > +
> > +	return base_addr;
> > +}
> > +EXPORT_SYMBOL_GPL(pnv_ocxl_platform_lpc_setup);
> > +
> > +void pnv_ocxl_platform_lpc_release(struct pci_dev *pdev)
> > +{
> > +	struct pci_controller *hose = pci_bus_to_host(pdev->bus);
> > +	struct pnv_phb *phb = hose->private_data;
> > +	u32 bdfn = (pdev->bus->number << 8) | pdev->devfn;
> > +	int rc;
> > +
> > +	rc = opal_npu_mem_release(phb->opal_id, bdfn);
> > +	if (rc)
> > +		dev_warn(&pdev->dev,
> > +			 "OPAL reported rc=%d when releasing LPC
> > memory\n", rc);
> > +}
> > +EXPORT_SYMBOL_GPL(pnv_ocxl_platform_lpc_release);
> > +
> > +
> >   int pnv_ocxl_spa_remove_pe_from_cache(void *platform_data, int
> > pe_handle)
> >   {
> >   	struct spa_data *data = (struct spa_data *) platform_data;
> > diff --git a/include/linux/memory_hotplug.h
> > b/include/linux/memory_hotplug.h
> > index f46ea71b4ffd..3f5f1a642abe 100644
> > --- a/include/linux/memory_hotplug.h
> > +++ b/include/linux/memory_hotplug.h
> > @@ -339,6 +339,11 @@ static inline int remove_memory(int nid, u64
> > start, u64 size)
> >   static inline void __remove_memory(int nid, u64 start, u64 size)
> > {}
> >   #endif /* CONFIG_MEMORY_HOTREMOVE */
> >   
> > +#if CONFIG_MEMORY_HOTPLUG_SPARSE
> 
> This needs to be #ifdef.
> 

Yup, 0 day caught that one too :)

> > +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 2cecf07b396f..b39827dbd071 100644
> > --- a/mm/memory_hotplug.c
> > +++ b/mm/memory_hotplug.c
> > @@ -278,7 +278,7 @@ static int check_pfn_span(unsigned long pfn,
> > unsigned long nr_pages,
> >   	return 0;
> >   }
> >   
> > -static int check_hotplug_memory_addressable(unsigned long pfn,
> > +int check_hotplug_memory_addressable(unsigned long pfn,
> >   					    unsigned long nr_pages)
> >   {
> >   	const u64 max_addr = PFN_PHYS(pfn + nr_pages) - 1;
> > @@ -294,6 +294,7 @@ static int
> > check_hotplug_memory_addressable(unsigned long pfn,
> >   
> >   	return 0;
> >   }
> > +EXPORT_SYMBOL_GPL(check_hotplug_memory_addressable);
> 
> This export seems unnecessary, you don't seem to be using this
> function 
> in a module anywhere in this series AFAICT.
> 

This is used within this patch, in the map call.

> Also it looks like a whitespace fix from removing the static ended up
> in 
> patch #8 rather than here.

Thanks.

> 
> >   
> >   /*
> >    * Reasonably generic function for adding memory.  It is
> > 

-- 
Alastair D'Silva
Open Source Developer
Linux Technology Centre, IBM Australia
mob: 0423 762 819


  reply	other threads:[~2019-10-29  2:44 UTC|newest]

Thread overview: 155+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-10-25  4:46 [PATCH 00/10] Add support for OpenCAPI SCM devices Alastair D'Silva
2019-10-25  4:46 ` Alastair D'Silva
2019-10-25  4:46 ` Alastair D'Silva
2019-10-25  4:46 ` [PATCH 01/10] memory_hotplug: Add a bounds check to __add_pages Alastair D'Silva
2019-10-25  4:46   ` Alastair D'Silva
2019-10-25  4:46   ` Alastair D'Silva
2019-10-25  4:46 ` [PATCH 02/10] nvdimm: remove prototypes for nonexistent functions Alastair D'Silva
2019-10-25  4:46   ` Alastair D'Silva
2019-10-25  4:46   ` Alastair D'Silva
2019-10-27 23:41   ` Andrew Donnellan
2019-10-27 23:41     ` Andrew Donnellan
2019-10-27 23:41     ` Andrew Donnellan
2019-11-07 17:56   ` Frederic Barrat
2019-11-07 17:56     ` Frederic Barrat
2019-11-07 17:56     ` Frederic Barrat
2019-11-15  4:30   ` Dan Williams
2019-11-15  4:30     ` Dan Williams
2019-11-15  4:30     ` Dan Williams
2019-10-25  4:46 ` [PATCH 03/10] powerpc: Add OPAL calls for LPC memory alloc/release Alastair D'Silva
2019-10-25  4:46   ` Alastair D'Silva
2019-10-25  4:46   ` Alastair D'Silva
2019-11-07 17:57   ` Frederic Barrat
2019-11-07 17:57     ` Frederic Barrat
2019-11-07 17:57     ` Frederic Barrat
2019-10-25  4:46 ` [PATCH 04/10] powerpc: Map & release OpenCAPI LPC memory Alastair D'Silva
2019-10-25  4:46   ` Alastair D'Silva
2019-10-25  4:46   ` Alastair D'Silva
2019-10-27 21:24   ` kbuild test robot
2019-10-27 21:24     ` kbuild test robot
2019-10-27 21:24     ` kbuild test robot
2019-10-27 21:24     ` kbuild test robot
2019-10-27 21:59   ` kbuild test robot
2019-10-27 21:59     ` kbuild test robot
2019-10-27 21:59     ` kbuild test robot
2019-10-27 21:59     ` kbuild test robot
2019-10-28  2:34   ` kbuild test robot
2019-10-28  2:34     ` kbuild test robot
2019-10-28  2:34     ` kbuild test robot
2019-10-28  2:34     ` kbuild test robot
2019-10-29  1:49   ` Andrew Donnellan
2019-10-29  1:49     ` Andrew Donnellan
2019-10-29  1:49     ` Andrew Donnellan
2019-10-29  2:44     ` Alastair D'Silva [this message]
2019-10-29  2:44       ` Alastair D'Silva
2019-10-29  2:44       ` Alastair D'Silva
2019-10-29  2:47       ` Andrew Donnellan
2019-10-29  2:47         ` Andrew Donnellan
2019-10-29  2:47         ` Andrew Donnellan
2019-11-07 17:59   ` Frederic Barrat
2019-11-07 17:59     ` Frederic Barrat
2019-11-07 17:59     ` Frederic Barrat
2019-11-11  9:34   ` Aneesh Kumar K.V
2019-11-11  9:34     ` Aneesh Kumar K.V
2019-10-25  4:47 ` [PATCH 05/10] ocxl: Tally up the LPC memory on a link & allow it to be mapped Alastair D'Silva
2019-10-25  4:47   ` Alastair D'Silva
2019-10-25  4:47   ` Alastair D'Silva
2019-11-07 18:02   ` Frederic Barrat
2019-11-07 18:02     ` Frederic Barrat
2019-11-07 18:02     ` Frederic Barrat
2019-10-25  4:47 ` [PATCH 06/10] ocxl: Add functions to map/unmap LPC memory Alastair D'Silva
2019-10-25  4:47   ` Alastair D'Silva
2019-10-25  4:47   ` Alastair D'Silva
2019-11-07 18:05   ` Frederic Barrat
2019-11-07 18:05     ` Frederic Barrat
2019-11-07 18:05     ` Frederic Barrat
2019-10-25  4:47 ` [PATCH 07/10] ocxl: Save the device serial number in ocxl_fn Alastair D'Silva
2019-10-25  4:47   ` Alastair D'Silva
2019-10-25  4:47   ` Alastair D'Silva
2019-11-06  3:10   ` Andrew Donnellan
2019-11-06  3:10     ` Andrew Donnellan
2019-11-06  3:10     ` Andrew Donnellan
2019-11-07 18:18   ` Frederic Barrat
2019-11-07 18:18     ` Frederic Barrat
2019-11-07 18:18     ` Frederic Barrat
2019-10-25  4:47 ` [PATCH 08/10] nvdimm: Add driver for OpenCAPI Storage Class Memory Alastair D'Silva
2019-10-25  4:47   ` Alastair D'Silva
2019-10-25  4:47   ` Alastair D'Silva
2019-10-27 22:19   ` kbuild test robot
2019-10-27 22:19     ` kbuild test robot
2019-10-27 22:19     ` kbuild test robot
2019-10-27 22:19     ` kbuild test robot
2019-10-27 22:53   ` kbuild test robot
2019-10-27 22:53     ` kbuild test robot
2019-10-27 22:53     ` kbuild test robot
2019-10-27 22:53     ` kbuild test robot
2019-10-28  1:12   ` [RFC PATCH] nvdimm: scm_get() can be static kbuild test robot
2019-10-28  1:12     ` kbuild test robot
2019-10-28  1:12     ` kbuild test robot
2019-10-28  1:12     ` kbuild test robot
2019-11-11 11:14   ` [PATCH 08/10] nvdimm: Add driver for OpenCAPI Storage Class Memory Aneesh Kumar K.V
2019-11-11 11:14     ` Aneesh Kumar K.V
2019-11-12  5:37     ` Dan Williams
2019-11-12  5:37       ` Dan Williams
2019-11-12  5:41       ` Dan Williams
2019-11-12  5:41         ` Dan Williams
2019-11-14 13:41   ` Frederic Barrat
2019-11-14 13:41     ` Frederic Barrat
2019-11-14 13:41     ` Frederic Barrat
2019-11-14 16:35     ` Dan Williams
2019-11-14 16:35       ` Dan Williams
2019-11-14 16:35       ` Dan Williams
2019-11-18 23:47       ` Andrew Donnellan
2019-11-18 23:47         ` Andrew Donnellan
2019-11-18 23:47         ` Andrew Donnellan
2019-11-19  0:04         ` Dan Williams
2019-11-19  0:04           ` Dan Williams
2019-11-19  0:04           ` Dan Williams
2019-11-19  2:48         ` Alastair D'Silva
2019-11-19  2:48           ` Alastair D'Silva
2019-11-19  2:48           ` Alastair D'Silva
2019-11-19  3:26           ` Andrew Donnellan
2019-11-19  3:26             ` Andrew Donnellan
2019-11-19  3:26             ` Andrew Donnellan
2019-11-19  4:41             ` Dan Williams
2019-11-19  4:41               ` Dan Williams
2019-11-19  4:41               ` Dan Williams
2019-11-18 23:01     ` Alastair D'Silva
2019-11-18 23:01       ` Alastair D'Silva
2019-11-18 23:01       ` Alastair D'Silva
2019-10-25  4:47 ` [PATCH 09/10] powerpc: Enable OpenCAPI Storage Class Memory driver on bare metal Alastair D'Silva
2019-10-25  4:47   ` Alastair D'Silva
2019-10-25  4:47   ` Alastair D'Silva
2019-10-28  2:43   ` Oliver O'Halloran
2019-10-28  2:43     ` Oliver O'Halloran
2019-10-28  2:43     ` Oliver O'Halloran
2019-10-28  2:43     ` Oliver O'Halloran
2019-11-08  7:10   ` Frederic Barrat
2019-11-08  7:10     ` Frederic Barrat
2019-11-08  7:10     ` Frederic Barrat
2020-01-31  4:56     ` Alastair D'Silva
2020-01-31  4:56       ` Alastair D'Silva
2020-01-31  4:56       ` Alastair D'Silva
2020-01-31  5:14       ` Dan Williams
2020-01-31  5:14         ` Dan Williams
2020-01-31  5:14         ` Dan Williams
2019-11-11  9:46   ` Aneesh Kumar K.V
2019-11-11  9:46     ` Aneesh Kumar K.V
2019-10-25  4:47 ` [PATCH 10/10] ocxl: Conditionally bind SCM devices to the generic OCXL driver Alastair D'Silva
2019-10-25  4:47   ` Alastair D'Silva
2019-10-25  4:47   ` Alastair D'Silva
2019-10-26  6:43   ` Christoph Hellwig
2019-10-26  6:43     ` Christoph Hellwig
2019-10-26  6:43     ` Christoph Hellwig
2019-11-06  3:46   ` Andrew Donnellan
2019-11-06  3:46     ` Andrew Donnellan
2019-11-06  3:46     ` Andrew Donnellan
2019-11-07 18:08   ` Frederic Barrat
2019-11-07 18:08     ` Frederic Barrat
2019-11-07 18:08     ` Frederic Barrat
2019-11-08  0:37     ` Alastair D'Silva
2019-11-08  0:37       ` Alastair D'Silva
2019-11-08  0:37       ` Alastair D'Silva
2019-10-25  7:57 ` [PATCH 00/10] Add support for OpenCAPI SCM devices Geert Uytterhoeven
2019-10-25  7:57   ` Geert Uytterhoeven
2019-10-25  7:57   ` Geert Uytterhoeven

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=4dc37533df4f5566fdbe5c212289c438d0fe2c3b.camel@au1.ibm.com \
    --to=alastair@au1.ibm.com \
    --cc=aik@ozlabs.ru \
    --cc=ajd@linux.ibm.com \
    --cc=akpm@linux-foundation.org \
    --cc=allison@lohutok.net \
    --cc=anju@linux.vnet.ibm.com \
    --cc=anton@ozlabs.org \
    --cc=arnd@arndb.de \
    --cc=benh@kernel.crashing.org \
    --cc=cai@lca.pw \
    --cc=clg@kaod.org \
    --cc=david@gibson.dropbear.id.au \
    --cc=david@redhat.com \
    --cc=fbarrat@linux.ibm.com \
    --cc=geert+renesas@glider.be \
    --cc=gregkh@linuxfoundation.org \
    --cc=groug@kaod.org \
    --cc=hbathini@linux.ibm.com \
    --cc=hegdevasant@linux.vnet.ibm.com \
    --cc=krzk@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linux-nvdimm@lists.01.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=mahesh@linux.vnet.ibm.com \
    --cc=mhocko@suse.com \
    --cc=mpe@ellerman.id.au \
    --cc=osalvador@suse.com \
    --cc=pasha.tatashin@soleen.com \
    --cc=paulus@samba.org \
    --cc=richard.weiyang@gmail.com \
    --cc=tglx@linutronix.de \
    --cc=yamada.masahiro@socionext.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.