* [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).