All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] edac: cpc925: Drop unused memory size DT parsing
@ 2023-03-19 15:01 Rob Herring
  2023-03-19 15:01 ` [PATCH 2/2] edac: cpc925: Use of_get_cpu_hwid() to read CPU node 'reg' Rob Herring
  2023-04-18 16:05 ` [PATCH 1/2] edac: cpc925: Drop unused memory size DT parsing Rob Herring
  0 siblings, 2 replies; 7+ messages in thread
From: Rob Herring @ 2023-03-19 15:01 UTC (permalink / raw)
  To: Borislav Petkov, Tony Luck, James Morse, Mauro Carvalho Chehab,
	Robert Richter
  Cc: linux-edac, linux-kernel

The 'total_mem' memory size is parsed from DT, but never used anywhere.
Just drop it as drivers shouldn't really do their own parsing of common
bindings, and memblock would be a better way to get memory size now
anyways.

Signed-off-by: Rob Herring <robh@kernel.org>
---
 drivers/edac/cpc925_edac.c | 34 ----------------------------------
 1 file changed, 34 deletions(-)

diff --git a/drivers/edac/cpc925_edac.c b/drivers/edac/cpc925_edac.c
index 9797e6d60dde..ee193aae8e14 100644
--- a/drivers/edac/cpc925_edac.c
+++ b/drivers/edac/cpc925_edac.c
@@ -263,7 +263,6 @@ enum brgctrl_bits {
 /* Private structure for edac memory controller */
 struct cpc925_mc_pdata {
 	void __iomem *vbase;
-	unsigned long total_mem;
 	const char *name;
 	int edac_idx;
 };
@@ -280,37 +279,6 @@ struct cpc925_dev_info {
 	void (*check)(struct edac_device_ctl_info *edac_dev);
 };
 
-/* Get total memory size from Open Firmware DTB */
-static void get_total_mem(struct cpc925_mc_pdata *pdata)
-{
-	struct device_node *np = NULL;
-	const unsigned int *reg, *reg_end;
-	int len, sw, aw;
-	unsigned long start, size;
-
-	np = of_find_node_by_type(NULL, "memory");
-	if (!np)
-		return;
-
-	aw = of_n_addr_cells(np);
-	sw = of_n_size_cells(np);
-	reg = (const unsigned int *)of_get_property(np, "reg", &len);
-	reg_end = reg + len/4;
-
-	pdata->total_mem = 0;
-	do {
-		start = of_read_number(reg, aw);
-		reg += aw;
-		size = of_read_number(reg, sw);
-		reg += sw;
-		edac_dbg(1, "start 0x%lx, size 0x%lx\n", start, size);
-		pdata->total_mem += size;
-	} while (reg < reg_end);
-
-	of_node_put(np);
-	edac_dbg(0, "total_mem 0x%lx\n", pdata->total_mem);
-}
-
 static void cpc925_init_csrows(struct mem_ctl_info *mci)
 {
 	struct cpc925_mc_pdata *pdata = mci->pvt_info;
@@ -321,8 +289,6 @@ static void cpc925_init_csrows(struct mem_ctl_info *mci)
 	u32 mbmr, mbbar, bba, grain;
 	unsigned long row_size, nr_pages, last_nr_pages = 0;
 
-	get_total_mem(pdata);
-
 	for (index = 0; index < mci->nr_csrows; index++) {
 		mbmr = __raw_readl(pdata->vbase + REG_MBMR_OFFSET +
 				   0x20 * index);
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 2/2] edac: cpc925: Use of_get_cpu_hwid() to read CPU node 'reg'
  2023-03-19 15:01 [PATCH 1/2] edac: cpc925: Drop unused memory size DT parsing Rob Herring
@ 2023-03-19 15:01 ` Rob Herring
  2023-04-18 17:50   ` Borislav Petkov
  2023-04-18 16:05 ` [PATCH 1/2] edac: cpc925: Drop unused memory size DT parsing Rob Herring
  1 sibling, 1 reply; 7+ messages in thread
From: Rob Herring @ 2023-03-19 15:01 UTC (permalink / raw)
  To: Borislav Petkov, Tony Luck, James Morse, Mauro Carvalho Chehab,
	Robert Richter
  Cc: linux-edac, linux-kernel

Replace open coded reading of CPU nodes' "reg" properties with
of_get_cpu_hwid() dedicated for this purpose.

Signed-off-by: Rob Herring <robh@kernel.org>
---
 drivers/edac/cpc925_edac.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/edac/cpc925_edac.c b/drivers/edac/cpc925_edac.c
index ee193aae8e14..0182436c1b5a 100644
--- a/drivers/edac/cpc925_edac.c
+++ b/drivers/edac/cpc925_edac.c
@@ -557,13 +557,13 @@ static u32 cpc925_cpu_mask_disabled(void)
 	mask = APIMASK_ADI0 | APIMASK_ADI1;
 
 	for_each_of_cpu_node(cpunode) {
-		const u32 *reg = of_get_property(cpunode, "reg", NULL);
-		if (reg == NULL || *reg > 2) {
+		int hwid = of_get_cpu_hwid(cpunode, 0);
+		if ((hwid < 0) || (hwid > 2)) {
 			cpc925_printk(KERN_ERR, "Bad reg value at %pOF\n", cpunode);
 			continue;
 		}
 
-		mask &= ~APIMASK_ADI(*reg);
+		mask &= ~APIMASK_ADI(hwid);
 	}
 
 	if (mask != (APIMASK_ADI0 | APIMASK_ADI1)) {
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH 1/2] edac: cpc925: Drop unused memory size DT parsing
  2023-03-19 15:01 [PATCH 1/2] edac: cpc925: Drop unused memory size DT parsing Rob Herring
  2023-03-19 15:01 ` [PATCH 2/2] edac: cpc925: Use of_get_cpu_hwid() to read CPU node 'reg' Rob Herring
@ 2023-04-18 16:05 ` Rob Herring
  1 sibling, 0 replies; 7+ messages in thread
From: Rob Herring @ 2023-04-18 16:05 UTC (permalink / raw)
  To: Borislav Petkov, Tony Luck, James Morse, Mauro Carvalho Chehab,
	Robert Richter
  Cc: linux-edac, linux-kernel

On Sun, Mar 19, 2023 at 10:01:40AM -0500, Rob Herring wrote:
> The 'total_mem' memory size is parsed from DT, but never used anywhere.
> Just drop it as drivers shouldn't really do their own parsing of common
> bindings, and memblock would be a better way to get memory size now
> anyways.
> 
> Signed-off-by: Rob Herring <robh@kernel.org>
> ---
>  drivers/edac/cpc925_edac.c | 34 ----------------------------------
>  1 file changed, 34 deletions(-)

Ping.

> 
> diff --git a/drivers/edac/cpc925_edac.c b/drivers/edac/cpc925_edac.c
> index 9797e6d60dde..ee193aae8e14 100644
> --- a/drivers/edac/cpc925_edac.c
> +++ b/drivers/edac/cpc925_edac.c
> @@ -263,7 +263,6 @@ enum brgctrl_bits {
>  /* Private structure for edac memory controller */
>  struct cpc925_mc_pdata {
>  	void __iomem *vbase;
> -	unsigned long total_mem;
>  	const char *name;
>  	int edac_idx;
>  };
> @@ -280,37 +279,6 @@ struct cpc925_dev_info {
>  	void (*check)(struct edac_device_ctl_info *edac_dev);
>  };
>  
> -/* Get total memory size from Open Firmware DTB */
> -static void get_total_mem(struct cpc925_mc_pdata *pdata)
> -{
> -	struct device_node *np = NULL;
> -	const unsigned int *reg, *reg_end;
> -	int len, sw, aw;
> -	unsigned long start, size;
> -
> -	np = of_find_node_by_type(NULL, "memory");
> -	if (!np)
> -		return;
> -
> -	aw = of_n_addr_cells(np);
> -	sw = of_n_size_cells(np);
> -	reg = (const unsigned int *)of_get_property(np, "reg", &len);
> -	reg_end = reg + len/4;
> -
> -	pdata->total_mem = 0;
> -	do {
> -		start = of_read_number(reg, aw);
> -		reg += aw;
> -		size = of_read_number(reg, sw);
> -		reg += sw;
> -		edac_dbg(1, "start 0x%lx, size 0x%lx\n", start, size);
> -		pdata->total_mem += size;
> -	} while (reg < reg_end);
> -
> -	of_node_put(np);
> -	edac_dbg(0, "total_mem 0x%lx\n", pdata->total_mem);
> -}
> -
>  static void cpc925_init_csrows(struct mem_ctl_info *mci)
>  {
>  	struct cpc925_mc_pdata *pdata = mci->pvt_info;
> @@ -321,8 +289,6 @@ static void cpc925_init_csrows(struct mem_ctl_info *mci)
>  	u32 mbmr, mbbar, bba, grain;
>  	unsigned long row_size, nr_pages, last_nr_pages = 0;
>  
> -	get_total_mem(pdata);
> -
>  	for (index = 0; index < mci->nr_csrows; index++) {
>  		mbmr = __raw_readl(pdata->vbase + REG_MBMR_OFFSET +
>  				   0x20 * index);
> -- 
> 2.39.2
> 

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 2/2] edac: cpc925: Use of_get_cpu_hwid() to read CPU node 'reg'
  2023-03-19 15:01 ` [PATCH 2/2] edac: cpc925: Use of_get_cpu_hwid() to read CPU node 'reg' Rob Herring
@ 2023-04-18 17:50   ` Borislav Petkov
  2023-04-19 18:45     ` Rob Herring
  0 siblings, 1 reply; 7+ messages in thread
From: Borislav Petkov @ 2023-04-18 17:50 UTC (permalink / raw)
  To: Rob Herring
  Cc: Tony Luck, James Morse, Mauro Carvalho Chehab, Robert Richter,
	linux-edac, linux-kernel

On Sun, Mar 19, 2023 at 10:01:41AM -0500, Rob Herring wrote:
> Replace open coded reading of CPU nodes' "reg" properties with
> of_get_cpu_hwid() dedicated for this purpose.
> 
> Signed-off-by: Rob Herring <robh@kernel.org>
> ---
>  drivers/edac/cpc925_edac.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/edac/cpc925_edac.c b/drivers/edac/cpc925_edac.c
> index ee193aae8e14..0182436c1b5a 100644
> --- a/drivers/edac/cpc925_edac.c
> +++ b/drivers/edac/cpc925_edac.c
> @@ -557,13 +557,13 @@ static u32 cpc925_cpu_mask_disabled(void)
>  	mask = APIMASK_ADI0 | APIMASK_ADI1;
>  
>  	for_each_of_cpu_node(cpunode) {
> -		const u32 *reg = of_get_property(cpunode, "reg", NULL);
> -		if (reg == NULL || *reg > 2) {
> +		int hwid = of_get_cpu_hwid(cpunode, 0);
> +		if ((hwid < 0) || (hwid > 2)) {
>  			cpc925_printk(KERN_ERR, "Bad reg value at %pOF\n", cpunode);
>  			continue;
>  		}
>  
> -		mask &= ~APIMASK_ADI(*reg);
> +		mask &= ~APIMASK_ADI(hwid);
>  	}
>  
>  	if (mask != (APIMASK_ADI0 | APIMASK_ADI1)) {
> -- 

$ grep CPC925 .config
CONFIG_EDAC_CPC925=m

$ make ARCH=powerpc CROSS_COMPILE=/home/boris/src/crosstool/gcc-11.1.0-nolibc/powerpc64-linux/bin/powerpc64-linux-
...
ERROR: modpost: ".of_get_cpu_hwid" [drivers/edac/cpc925_edac.ko] undefined!
make[1]: *** [scripts/Makefile.modpost:136: Module.symvers] Error 1
make: *** [Makefile:1980: modpost] Error 2

-- 
Regards/Gruss,
    Boris.

https://people.kernel.org/tglx/notes-about-netiquette

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 2/2] edac: cpc925: Use of_get_cpu_hwid() to read CPU node 'reg'
  2023-04-18 17:50   ` Borislav Petkov
@ 2023-04-19 18:45     ` Rob Herring
  2023-04-19 18:55       ` Borislav Petkov
  0 siblings, 1 reply; 7+ messages in thread
From: Rob Herring @ 2023-04-19 18:45 UTC (permalink / raw)
  To: Borislav Petkov
  Cc: Tony Luck, James Morse, Mauro Carvalho Chehab, Robert Richter,
	linux-edac, linux-kernel

On Tue, Apr 18, 2023 at 07:50:00PM +0200, Borislav Petkov wrote:
> On Sun, Mar 19, 2023 at 10:01:41AM -0500, Rob Herring wrote:
> > Replace open coded reading of CPU nodes' "reg" properties with
> > of_get_cpu_hwid() dedicated for this purpose.
> > 
> > Signed-off-by: Rob Herring <robh@kernel.org>
> > ---
> >  drivers/edac/cpc925_edac.c | 6 +++---
> >  1 file changed, 3 insertions(+), 3 deletions(-)
> > 
> > diff --git a/drivers/edac/cpc925_edac.c b/drivers/edac/cpc925_edac.c
> > index ee193aae8e14..0182436c1b5a 100644
> > --- a/drivers/edac/cpc925_edac.c
> > +++ b/drivers/edac/cpc925_edac.c
> > @@ -557,13 +557,13 @@ static u32 cpc925_cpu_mask_disabled(void)
> >  	mask = APIMASK_ADI0 | APIMASK_ADI1;
> >  
> >  	for_each_of_cpu_node(cpunode) {
> > -		const u32 *reg = of_get_property(cpunode, "reg", NULL);
> > -		if (reg == NULL || *reg > 2) {
> > +		int hwid = of_get_cpu_hwid(cpunode, 0);
> > +		if ((hwid < 0) || (hwid > 2)) {
> >  			cpc925_printk(KERN_ERR, "Bad reg value at %pOF\n", cpunode);
> >  			continue;
> >  		}
> >  
> > -		mask &= ~APIMASK_ADI(*reg);
> > +		mask &= ~APIMASK_ADI(hwid);
> >  	}
> >  
> >  	if (mask != (APIMASK_ADI0 | APIMASK_ADI1)) {
> > -- 
> 
> $ grep CPC925 .config
> CONFIG_EDAC_CPC925=m
> 
> $ make ARCH=powerpc CROSS_COMPILE=/home/boris/src/crosstool/gcc-11.1.0-nolibc/powerpc64-linux/bin/powerpc64-linux-
> ...
> ERROR: modpost: ".of_get_cpu_hwid" [drivers/edac/cpc925_edac.ko] undefined!
> make[1]: *** [scripts/Makefile.modpost:136: Module.symvers] Error 1
> make: *** [Makefile:1980: modpost] Error 2

I'd rather not export of_get_cpu_hwid() which is otherwise only used in 
arch code. I think I'll rewrite this in terms of for_each_possible_cpu() 
and topology_core_id(). Though that would make a UP build not enable 
core 1, but that seems undesirable anyways. 

Rob

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 2/2] edac: cpc925: Use of_get_cpu_hwid() to read CPU node 'reg'
  2023-04-19 18:45     ` Rob Herring
@ 2023-04-19 18:55       ` Borislav Petkov
  2023-04-20 13:56         ` Rob Herring
  0 siblings, 1 reply; 7+ messages in thread
From: Borislav Petkov @ 2023-04-19 18:55 UTC (permalink / raw)
  To: Rob Herring
  Cc: Tony Luck, James Morse, Mauro Carvalho Chehab, Robert Richter,
	linux-edac, linux-kernel

On Wed, Apr 19, 2023 at 01:45:47PM -0500, Rob Herring wrote:
> I'd rather not export of_get_cpu_hwid() which is otherwise only used in 
> arch code. I think I'll rewrite this in terms of for_each_possible_cpu() 
> and topology_core_id(). Though that would make a UP build not enable 
> core 1, but that seems undesirable anyways.

TBH I'm not sure this driver is even worth any effort besides simply
deleting it. I see one commit which reads like someone was really using
it:

ce395088832b ("cpc925_edac: Support single-processor configurations")

but that one is from 2011 and since then it has received only API
modifications/cleanups.

But if I delete it, someone might crawl out of the woodwork and say it
is still used...

-- 
Regards/Gruss,
    Boris.

https://people.kernel.org/tglx/notes-about-netiquette

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 2/2] edac: cpc925: Use of_get_cpu_hwid() to read CPU node 'reg'
  2023-04-19 18:55       ` Borislav Petkov
@ 2023-04-20 13:56         ` Rob Herring
  0 siblings, 0 replies; 7+ messages in thread
From: Rob Herring @ 2023-04-20 13:56 UTC (permalink / raw)
  To: Borislav Petkov, Arnd Bergmann, Michael Ellerman
  Cc: Tony Luck, James Morse, Mauro Carvalho Chehab, Robert Richter,
	linux-edac, linux-kernel

+Arnd, Michael E

On Wed, Apr 19, 2023 at 1:55 PM Borislav Petkov <bp@alien8.de> wrote:
>
> On Wed, Apr 19, 2023 at 01:45:47PM -0500, Rob Herring wrote:
> > I'd rather not export of_get_cpu_hwid() which is otherwise only used in
> > arch code. I think I'll rewrite this in terms of for_each_possible_cpu()
> > and topology_core_id(). Though that would make a UP build not enable
> > core 1, but that seems undesirable anyways.
>
> TBH I'm not sure this driver is even worth any effort besides simply
> deleting it. I see one commit which reads like someone was really using
> it:
>
> ce395088832b ("cpc925_edac: Support single-processor configurations")
>
> but that one is from 2011 and since then it has received only API
> modifications/cleanups.
>
> But if I delete it, someone might crawl out of the woodwork and say it
> is still used...

Yeah, I came to that conclusion as well. It's only used by "maple"
(aka PPC970FX Evaluation Board) as the kernel has to instantiate this
device (rather than DT). Seems like a 20 year old eval board is
unlikely to have any users, so perhaps the whole platform could be
removed.

Rob

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2023-04-20 13:57 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-03-19 15:01 [PATCH 1/2] edac: cpc925: Drop unused memory size DT parsing Rob Herring
2023-03-19 15:01 ` [PATCH 2/2] edac: cpc925: Use of_get_cpu_hwid() to read CPU node 'reg' Rob Herring
2023-04-18 17:50   ` Borislav Petkov
2023-04-19 18:45     ` Rob Herring
2023-04-19 18:55       ` Borislav Petkov
2023-04-20 13:56         ` Rob Herring
2023-04-18 16:05 ` [PATCH 1/2] edac: cpc925: Drop unused memory size DT parsing Rob Herring

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.