linux-edac.vger.kernel.org archive mirror
 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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).