2024-02-13 11:22:04

by Jiri Slaby

[permalink] [raw]
Subject: [PATCH 0/7] EDAC: remove unused structure members

Hi,

this series removes unused EDAC structure members as found by
clang-struct (and manually checked by me).

I admit I could not even compile-test octeon files, hopefully
kernel-test robot would catch mistakes in there.

Cc: Andre Przywara <[email protected]>
Cc: Bjorn Andersson <[email protected]>
Cc: Borislav Petkov <[email protected]>
Cc: Dinh Nguyen <[email protected]>
Cc: Douglas Thompson <[email protected]>
Cc: James Morse <[email protected]>
Cc: Jan Luebbe <[email protected]>
Cc: Johannes Thumshirn <[email protected]>
Cc: Khuong Dinh <[email protected]>
Cc: Konrad Dybcio <[email protected]>
Cc: [email protected]
Cc: Manivannan Sadhasivam <[email protected]>
Cc: Mauro Carvalho Chehab <[email protected]>
Cc: Michal Simek <[email protected]>
Cc: Palmer Dabbelt <[email protected]>
Cc: Paul Walmsley <[email protected]>
Cc: Ralf Baechle <[email protected]>
Cc: Robert Richter <[email protected]>
Cc: Sai Krishna Potthuri <[email protected]>
Cc: Shubhrajyoti Datta <[email protected]>
Cc: Tony Luck <[email protected]>
Cc: Yazen Ghannam <[email protected]>

Jiri Slaby (SUSE) (7):
EDAC/amd64: Remove amd64_pvt::ext_nbcfg
EDAC/device: Remove edac_dev_sysfs_block_attribute::{block,value}
EDAC/device: Remove edac_dev_sysfs_block_attribute::store()
EDAC: Remove dynamic attributes from edac_device_alloc_ctl_info()
EDAC: Remove edac_pci_ctl_info::edac_subsys
EDAC: Remove edac_pci_ctl_info::complete
EDAC: Remove edac_device_ctl_info::removal_complete

drivers/edac/altera_edac.c | 8 ++---
drivers/edac/amd64_edac.h | 1 -
drivers/edac/amd8111_edac.c | 3 +-
drivers/edac/armada_xp_edac.c | 2 +-
drivers/edac/cpc925_edac.c | 2 +-
drivers/edac/edac_device.c | 53 ++------------------------------
drivers/edac/edac_device.h | 22 ++-----------
drivers/edac/edac_device_sysfs.c | 22 ++-----------
drivers/edac/edac_pci.h | 5 ---
drivers/edac/highbank_l2_edac.c | 2 +-
drivers/edac/mpc85xx_edac.c | 2 +-
drivers/edac/octeon_edac-l2c.c | 2 +-
drivers/edac/octeon_edac-pc.c | 2 +-
drivers/edac/qcom_edac.c | 1 -
drivers/edac/sifive_edac.c | 3 +-
drivers/edac/thunderx_edac.c | 6 ++--
drivers/edac/xgene_edac.c | 10 +++---
drivers/edac/zynqmp_edac.c | 2 +-
18 files changed, 26 insertions(+), 122 deletions(-)

--
2.43.1



2024-02-13 11:22:13

by Jiri Slaby

[permalink] [raw]
Subject: [PATCH 1/7] EDAC/amd64: Remove amd64_pvt::ext_nbcfg

Commit cfe40fdb4a46 (amd64_edac: add driver header) added amd64_pvt
struct with ext_nbcfg in it. But noone used that member since then.

Therefore, remove it.

Found by https://github.com/jirislaby/clang-struct.

Signed-off-by: Jiri Slaby (SUSE) <[email protected]>
Cc: Yazen Ghannam <[email protected]>
Cc: Borislav Petkov <[email protected]>
Cc: Tony Luck <[email protected]>
Cc: James Morse <[email protected]>
Cc: Mauro Carvalho Chehab <[email protected]>
Cc: Robert Richter <[email protected]>
Cc: [email protected]
---
drivers/edac/amd64_edac.h | 1 -
1 file changed, 1 deletion(-)

diff --git a/drivers/edac/amd64_edac.h b/drivers/edac/amd64_edac.h
index 1665f7932bac..b879b12971e7 100644
--- a/drivers/edac/amd64_edac.h
+++ b/drivers/edac/amd64_edac.h
@@ -345,7 +345,6 @@ struct amd64_pvt {
u32 dchr1; /* DRAM Configuration High DCT1 reg */
u32 nbcap; /* North Bridge Capabilities */
u32 nbcfg; /* F10 North Bridge Configuration */
- u32 ext_nbcfg; /* Extended F10 North Bridge Configuration */
u32 dhar; /* DRAM Hoist reg */
u32 dbam0; /* DRAM Base Address Mapping reg for DCT0 */
u32 dbam1; /* DRAM Base Address Mapping reg for DCT1 */
--
2.43.1


2024-02-13 11:22:20

by Jiri Slaby

[permalink] [raw]
Subject: [PATCH 2/7] EDAC/device: Remove edac_dev_sysfs_block_attribute::{block,value}

It's unused. And it never was since its addition in fd309a9d8e63e
(drivers/edac: fix leaf sysfs attribute). Drop it.

Found by https://github.com/jirislaby/clang-struct.

Signed-off-by: Jiri Slaby (SUSE) <[email protected]>
Cc: Douglas Thompson <[email protected]>
Cc: Borislav Petkov <[email protected]>
Cc: Tony Luck <[email protected]>
Cc: James Morse <[email protected]>
Cc: Mauro Carvalho Chehab <[email protected]>
Cc: Robert Richter <[email protected]>
Cc: [email protected]
---
drivers/edac/edac_device.c | 2 --
drivers/edac/edac_device.h | 6 ------
2 files changed, 8 deletions(-)

diff --git a/drivers/edac/edac_device.c b/drivers/edac/edac_device.c
index 0689e1510721..0e18729111d4 100644
--- a/drivers/edac/edac_device.c
+++ b/drivers/edac/edac_device.c
@@ -162,8 +162,6 @@ edac_device_alloc_ctl_info(unsigned pvt_sz, char *dev_name, unsigned nr_instance
attrib->show = attrib_spec[attr].show;
attrib->store = attrib_spec[attr].store;

- attrib->block = blk; /* up link */
-
edac_dbg(4, "alloc-attrib=%p attrib_name='%s' attrib-spec=%p spec-name=%s\n",
attrib, attrib->attr.name,
&attrib_spec[attr],
diff --git a/drivers/edac/edac_device.h b/drivers/edac/edac_device.h
index 7db22a4c83ef..c4704b5b1e9f 100644
--- a/drivers/edac/edac_device.h
+++ b/drivers/edac/edac_device.h
@@ -99,18 +99,12 @@ struct edac_dev_sysfs_attribute {
* can have an array of the following. The show and store functions
* will be filled in with the show/store function in the
* low level driver.
- *
- * The 'value' field will be the actual value field used for
- * counting
*/
struct edac_dev_sysfs_block_attribute {
struct attribute attr;
ssize_t (*show)(struct kobject *, struct attribute *, char *);
ssize_t (*store)(struct kobject *, struct attribute *,
const char *, size_t);
- struct edac_device_block *block;
-
- unsigned int value;
};

/* device block control structure */
--
2.43.1


2024-02-13 11:22:29

by Jiri Slaby

[permalink] [raw]
Subject: [PATCH 3/7] EDAC/device: Remove edac_dev_sysfs_block_attribute::store()

Noone uses this store hook (both BLOCK_ATTR() pass NULL). It actually
never was since its addition in fd309a9d8e63e (drivers/edac: fix leaf
sysfs attribute), so drop it.

Found by https://github.com/jirislaby/clang-struct.

Signed-off-by: Jiri Slaby (SUSE) <[email protected]>
Cc: Borislav Petkov <[email protected]>
Cc: Tony Luck <[email protected]>
Cc: James Morse <[email protected]>
Cc: Mauro Carvalho Chehab <[email protected]>
Cc: Robert Richter <[email protected]>
Cc: [email protected]
---
drivers/edac/edac_device.c | 1 -
drivers/edac/edac_device.h | 9 +++------
drivers/edac/edac_device_sysfs.c | 22 +++-------------------
3 files changed, 6 insertions(+), 26 deletions(-)

diff --git a/drivers/edac/edac_device.c b/drivers/edac/edac_device.c
index 0e18729111d4..8c2aa5bcf1b7 100644
--- a/drivers/edac/edac_device.c
+++ b/drivers/edac/edac_device.c
@@ -160,7 +160,6 @@ edac_device_alloc_ctl_info(unsigned pvt_sz, char *dev_name, unsigned nr_instance
*/
attrib->attr = attrib_spec[attr].attr;
attrib->show = attrib_spec[attr].show;
- attrib->store = attrib_spec[attr].store;

edac_dbg(4, "alloc-attrib=%p attrib_name='%s' attrib-spec=%p spec-name=%s\n",
attrib, attrib->attr.name,
diff --git a/drivers/edac/edac_device.h b/drivers/edac/edac_device.h
index c4704b5b1e9f..a39752432c90 100644
--- a/drivers/edac/edac_device.h
+++ b/drivers/edac/edac_device.h
@@ -95,16 +95,13 @@ struct edac_dev_sysfs_attribute {
*
* used in leaf 'block' nodes for adding controls/attributes
*
- * each block in each instance of the containing control structure
- * can have an array of the following. The show and store functions
- * will be filled in with the show/store function in the
- * low level driver.
+ * each block in each instance of the containing control structure can
+ * have an array of the following. The show function will be filled in
+ * with the show function in the low level driver.
*/
struct edac_dev_sysfs_block_attribute {
struct attribute attr;
ssize_t (*show)(struct kobject *, struct attribute *, char *);
- ssize_t (*store)(struct kobject *, struct attribute *,
- const char *, size_t);
};

/* device block control structure */
diff --git a/drivers/edac/edac_device_sysfs.c b/drivers/edac/edac_device_sysfs.c
index 237a542e045a..fcebc4ffea26 100644
--- a/drivers/edac/edac_device_sysfs.c
+++ b/drivers/edac/edac_device_sysfs.c
@@ -457,35 +457,19 @@ static ssize_t edac_dev_block_show(struct kobject *kobj,
return -EIO;
}

-/* Function to 'store' fields into the edac_dev 'block' structure */
-static ssize_t edac_dev_block_store(struct kobject *kobj,
- struct attribute *attr,
- const char *buffer, size_t count)
-{
- struct edac_dev_sysfs_block_attribute *block_attr;
-
- block_attr = to_block_attr(attr);
-
- if (block_attr->store)
- return block_attr->store(kobj, attr, buffer, count);
- return -EIO;
-}
-
/* edac_dev file operations for a 'block' */
static const struct sysfs_ops device_block_ops = {
.show = edac_dev_block_show,
- .store = edac_dev_block_store
};

-#define BLOCK_ATTR(_name,_mode,_show,_store) \
+#define BLOCK_ATTR(_name,_mode,_show) \
static struct edac_dev_sysfs_block_attribute attr_block_##_name = { \
.attr = {.name = __stringify(_name), .mode = _mode }, \
.show = _show, \
- .store = _store, \
};

-BLOCK_ATTR(ce_count, S_IRUGO, block_ce_count_show, NULL);
-BLOCK_ATTR(ue_count, S_IRUGO, block_ue_count_show, NULL);
+BLOCK_ATTR(ce_count, S_IRUGO, block_ce_count_show);
+BLOCK_ATTR(ue_count, S_IRUGO, block_ue_count_show);

/* list of edac_dev 'block' attributes */
static struct attribute *device_block_attrs[] = {
--
2.43.1


2024-02-13 11:22:40

by Jiri Slaby

[permalink] [raw]
Subject: [PATCH 4/7] EDAC: Remove dynamic attributes from edac_device_alloc_ctl_info()

Dynamic attributes are not passed from any caller of
edac_device_alloc_ctl_info(). Drop this unused/untested functionality
completely.

Signed-off-by: Jiri Slaby (SUSE) <[email protected]>
Cc: Dinh Nguyen <[email protected]>
Cc: Borislav Petkov <[email protected]>
Cc: Tony Luck <[email protected]>
Cc: James Morse <[email protected]>
Cc: Mauro Carvalho Chehab <[email protected]>
Cc: Robert Richter <[email protected]>
Cc: Jan Luebbe <[email protected]>
Cc: Andre Przywara <[email protected]>
Cc: Johannes Thumshirn <[email protected]>
Cc: Ralf Baechle <[email protected]>
Cc: Manivannan Sadhasivam <[email protected]>
Cc: Bjorn Andersson <[email protected]>
Cc: Konrad Dybcio <[email protected]>
Cc: Palmer Dabbelt <[email protected]>
Cc: Paul Walmsley <[email protected]>
Cc: Khuong Dinh <[email protected]>
Cc: Shubhrajyoti Datta <[email protected]>
Cc: Sai Krishna Potthuri <[email protected]>
Cc: Michal Simek <[email protected]>
Cc: [email protected]
---
drivers/edac/altera_edac.c | 8 ++----
drivers/edac/amd8111_edac.c | 3 +-
drivers/edac/armada_xp_edac.c | 2 +-
drivers/edac/cpc925_edac.c | 2 +-
drivers/edac/edac_device.c | 50 ++-------------------------------
drivers/edac/edac_device.h | 4 ---
drivers/edac/highbank_l2_edac.c | 2 +-
drivers/edac/mpc85xx_edac.c | 2 +-
drivers/edac/octeon_edac-l2c.c | 2 +-
drivers/edac/octeon_edac-pc.c | 2 +-
drivers/edac/qcom_edac.c | 1 -
drivers/edac/sifive_edac.c | 3 +-
drivers/edac/thunderx_edac.c | 6 ++--
drivers/edac/xgene_edac.c | 10 +++----
drivers/edac/zynqmp_edac.c | 2 +-
15 files changed, 20 insertions(+), 79 deletions(-)

diff --git a/drivers/edac/altera_edac.c b/drivers/edac/altera_edac.c
index ae17ce4d9722..fe89f5c4837f 100644
--- a/drivers/edac/altera_edac.c
+++ b/drivers/edac/altera_edac.c
@@ -737,8 +737,7 @@ static int altr_edac_device_probe(struct platform_device *pdev)
}

dci = edac_device_alloc_ctl_info(sizeof(*drvdata), ecc_name,
- 1, ecc_name, 1, 0, NULL, 0,
- dev_instance++);
+ 1, ecc_name, 1, 0, dev_instance++);

if (!dci) {
edac_printk(KERN_ERR, EDAC_DEVICE,
@@ -1514,7 +1513,7 @@ static int altr_portb_setup(struct altr_edac_device_dev *device)
/* Create the PortB EDAC device */
edac_idx = edac_device_alloc_index();
dci = edac_device_alloc_ctl_info(sizeof(*altdev), ecc_name, 1,
- ecc_name, 1, 0, NULL, 0, edac_idx);
+ ecc_name, 1, 0, edac_idx);
if (!dci) {
edac_printk(KERN_ERR, EDAC_DEVICE,
"%s: Unable to allocate PortB EDAC device\n",
@@ -1921,8 +1920,7 @@ static int altr_edac_a10_device_add(struct altr_arria10_edac *edac,

edac_idx = edac_device_alloc_index();
dci = edac_device_alloc_ctl_info(sizeof(*altdev), ecc_name,
- 1, ecc_name, 1, 0, NULL, 0,
- edac_idx);
+ 1, ecc_name, 1, 0, edac_idx);

if (!dci) {
edac_printk(KERN_ERR, EDAC_DEVICE,
diff --git a/drivers/edac/amd8111_edac.c b/drivers/edac/amd8111_edac.c
index ca718f63fcbc..a6d3013d5823 100644
--- a/drivers/edac/amd8111_edac.c
+++ b/drivers/edac/amd8111_edac.c
@@ -366,8 +366,7 @@ static int amd8111_dev_probe(struct pci_dev *dev,
dev_info->edac_idx = edac_device_alloc_index();
dev_info->edac_dev =
edac_device_alloc_ctl_info(0, dev_info->ctl_name, 1,
- NULL, 0, 0,
- NULL, 0, dev_info->edac_idx);
+ NULL, 0, 0, dev_info->edac_idx);
if (!dev_info->edac_dev) {
ret = -ENOMEM;
goto err_dev_put;
diff --git a/drivers/edac/armada_xp_edac.c b/drivers/edac/armada_xp_edac.c
index 25517c99b3ea..589bc81f1249 100644
--- a/drivers/edac/armada_xp_edac.c
+++ b/drivers/edac/armada_xp_edac.c
@@ -523,7 +523,7 @@ static int aurora_l2_probe(struct platform_device *pdev)
dev_warn(&pdev->dev, "data ECC is not enabled\n");

dci = edac_device_alloc_ctl_info(sizeof(*drvdata),
- "cpu", 1, "L", 1, 2, NULL, 0, 0);
+ "cpu", 1, "L", 1, 2, 0);
if (!dci)
return -ENOMEM;

diff --git a/drivers/edac/cpc925_edac.c b/drivers/edac/cpc925_edac.c
index 5075dc7526e3..eb702bc3aa29 100644
--- a/drivers/edac/cpc925_edac.c
+++ b/drivers/edac/cpc925_edac.c
@@ -797,7 +797,7 @@ static void cpc925_add_edac_devices(void __iomem *vbase)
dev_info->edac_idx = edac_device_alloc_index();
dev_info->edac_dev =
edac_device_alloc_ctl_info(0, dev_info->ctl_name,
- 1, NULL, 0, 0, NULL, 0, dev_info->edac_idx);
+ 1, NULL, 0, 0, dev_info->edac_idx);
if (!dev_info->edac_dev) {
cpc925_printk(KERN_ERR, "No memory for edac device\n");
goto err1;
diff --git a/drivers/edac/edac_device.c b/drivers/edac/edac_device.c
index 8c2aa5bcf1b7..621dc2a5d034 100644
--- a/drivers/edac/edac_device.c
+++ b/drivers/edac/edac_device.c
@@ -56,14 +56,12 @@ static void edac_device_dump_device(struct edac_device_ctl_info *edac_dev)
struct edac_device_ctl_info *
edac_device_alloc_ctl_info(unsigned pvt_sz, char *dev_name, unsigned nr_instances,
char *blk_name, unsigned nr_blocks, unsigned off_val,
- struct edac_dev_sysfs_block_attribute *attrib_spec,
- unsigned nr_attrib, int device_index)
+ int device_index)
{
- struct edac_dev_sysfs_block_attribute *dev_attrib, *attrib_p, *attrib;
struct edac_device_block *dev_blk, *blk_p, *blk;
struct edac_device_instance *dev_inst, *inst;
struct edac_device_ctl_info *dev_ctl;
- unsigned instance, block, attr;
+ unsigned instance, block;
void *pvt;
int err;

@@ -85,15 +83,6 @@ edac_device_alloc_ctl_info(unsigned pvt_sz, char *dev_name, unsigned nr_instance

dev_ctl->blocks = dev_blk;

- if (nr_attrib) {
- dev_attrib = kcalloc(nr_attrib, sizeof(struct edac_dev_sysfs_block_attribute),
- GFP_KERNEL);
- if (!dev_attrib)
- goto free;
-
- dev_ctl->attribs = dev_attrib;
- }
-
if (pvt_sz) {
pvt = kzalloc(pvt_sz, GFP_KERNEL);
if (!pvt)
@@ -132,41 +121,6 @@ edac_device_alloc_ctl_info(unsigned pvt_sz, char *dev_name, unsigned nr_instance

edac_dbg(4, "instance=%d inst_p=%p block=#%d block_p=%p name='%s'\n",
instance, inst, block, blk, blk->name);
-
- /* if there are NO attributes OR no attribute pointer
- * then continue on to next block iteration
- */
- if ((nr_attrib == 0) || (attrib_spec == NULL))
- continue;
-
- /* setup the attribute array for this block */
- blk->nr_attribs = nr_attrib;
- attrib_p = &dev_attrib[block*nr_instances*nr_attrib];
- blk->block_attributes = attrib_p;
-
- edac_dbg(4, "THIS BLOCK_ATTRIB=%p\n",
- blk->block_attributes);
-
- /* Initialize every user specified attribute in this
- * block with the data the caller passed in
- * Each block gets its own copy of pointers,
- * and its unique 'value'
- */
- for (attr = 0; attr < nr_attrib; attr++) {
- attrib = &attrib_p[attr];
-
- /* populate the unique per attrib
- * with the code pointers and info
- */
- attrib->attr = attrib_spec[attr].attr;
- attrib->show = attrib_spec[attr].show;
-
- edac_dbg(4, "alloc-attrib=%p attrib_name='%s' attrib-spec=%p spec-name=%s\n",
- attrib, attrib->attr.name,
- &attrib_spec[attr],
- attrib_spec[attr].attr.name
- );
- }
}
}

diff --git a/drivers/edac/edac_device.h b/drivers/edac/edac_device.h
index a39752432c90..55be019c12ca 100644
--- a/drivers/edac/edac_device.h
+++ b/drivers/edac/edac_device.h
@@ -208,7 +208,6 @@ struct edac_device_ctl_info {
u32 nr_instances;
struct edac_device_instance *instances;
struct edac_device_block *blocks;
- struct edac_dev_sysfs_block_attribute *attribs;

/* Event counters for the this whole EDAC Device */
struct edac_device_counter counters;
@@ -236,8 +235,6 @@ extern struct edac_device_ctl_info *edac_device_alloc_ctl_info(
char *edac_device_name, unsigned nr_instances,
char *edac_block_name, unsigned nr_blocks,
unsigned offset_value,
- struct edac_dev_sysfs_block_attribute *block_attributes,
- unsigned nr_attribs,
int device_index);

/* The offset value can be:
@@ -347,7 +344,6 @@ static inline void __edac_device_free_ctl_info(struct edac_device_ctl_info *ci)
{
if (ci) {
kfree(ci->pvt_info);
- kfree(ci->attribs);
kfree(ci->blocks);
kfree(ci->instances);
kfree(ci);
diff --git a/drivers/edac/highbank_l2_edac.c b/drivers/edac/highbank_l2_edac.c
index 5646c049a934..282ca6535f8f 100644
--- a/drivers/edac/highbank_l2_edac.c
+++ b/drivers/edac/highbank_l2_edac.c
@@ -54,7 +54,7 @@ static int highbank_l2_err_probe(struct platform_device *pdev)
int res = 0;

dci = edac_device_alloc_ctl_info(sizeof(*drvdata), "cpu",
- 1, "L", 1, 2, NULL, 0, 0);
+ 1, "L", 1, 2, 0);
if (!dci)
return -ENOMEM;

diff --git a/drivers/edac/mpc85xx_edac.c b/drivers/edac/mpc85xx_edac.c
index c1bc53f4e184..e8945d4adbad 100644
--- a/drivers/edac/mpc85xx_edac.c
+++ b/drivers/edac/mpc85xx_edac.c
@@ -496,7 +496,7 @@ static int mpc85xx_l2_err_probe(struct platform_device *op)
return -ENOMEM;

edac_dev = edac_device_alloc_ctl_info(sizeof(*pdata),
- "cpu", 1, "L", 1, 2, NULL, 0,
+ "cpu", 1, "L", 1, 2,
edac_dev_idx);
if (!edac_dev) {
devres_release_group(&op->dev, mpc85xx_l2_err_probe);
diff --git a/drivers/edac/octeon_edac-l2c.c b/drivers/edac/octeon_edac-l2c.c
index 4015eb9af6fe..919095d10528 100644
--- a/drivers/edac/octeon_edac-l2c.c
+++ b/drivers/edac/octeon_edac-l2c.c
@@ -138,7 +138,7 @@ static int octeon_l2c_probe(struct platform_device *pdev)

/* 'Tags' are block 0, 'Data' is block 1*/
l2c = edac_device_alloc_ctl_info(0, "l2c", num_tads, "l2c", 2, 0,
- NULL, 0, edac_device_alloc_index());
+ edac_device_alloc_index());
if (!l2c)
return -ENOMEM;

diff --git a/drivers/edac/octeon_edac-pc.c b/drivers/edac/octeon_edac-pc.c
index ea8a8e337b1e..b8404cc7b65f 100644
--- a/drivers/edac/octeon_edac-pc.c
+++ b/drivers/edac/octeon_edac-pc.c
@@ -92,7 +92,7 @@ static int co_cache_error_probe(struct platform_device *pdev)
platform_set_drvdata(pdev, p);

p->ed = edac_device_alloc_ctl_info(0, "cpu", num_possible_cpus(),
- "cache", 2, 0, NULL, 0,
+ "cache", 2, 0,
edac_device_alloc_index());
if (!p->ed)
goto err;
diff --git a/drivers/edac/qcom_edac.c b/drivers/edac/qcom_edac.c
index 5539917c01dd..d3cd4cc54ace 100644
--- a/drivers/edac/qcom_edac.c
+++ b/drivers/edac/qcom_edac.c
@@ -349,7 +349,6 @@ static int qcom_llcc_edac_probe(struct platform_device *pdev)
/* Allocate edac control info */
edev_ctl = edac_device_alloc_ctl_info(0, "qcom-llcc", 1, "bank",
llcc_driv_data->num_banks, 1,
- NULL, 0,
edac_device_alloc_index());

if (!edev_ctl)
diff --git a/drivers/edac/sifive_edac.c b/drivers/edac/sifive_edac.c
index b844e2626fd5..a2b193dc6604 100644
--- a/drivers/edac/sifive_edac.c
+++ b/drivers/edac/sifive_edac.c
@@ -52,8 +52,7 @@ static int ecc_register(struct platform_device *pdev)
platform_set_drvdata(pdev, p);

p->dci = edac_device_alloc_ctl_info(0, "sifive_ecc", 1, "sifive_ecc",
- 1, 1, NULL, 0,
- edac_device_alloc_index());
+ 1, 1, edac_device_alloc_index());
if (!p->dci)
return -ENOMEM;

diff --git a/drivers/edac/thunderx_edac.c b/drivers/edac/thunderx_edac.c
index 90d46e5c4ff0..fab9891e569a 100644
--- a/drivers/edac/thunderx_edac.c
+++ b/drivers/edac/thunderx_edac.c
@@ -1365,8 +1365,7 @@ static int thunderx_ocx_probe(struct pci_dev *pdev,
idx = edac_device_alloc_index();
snprintf(name, sizeof(name), "OCX%d", idx);
edac_dev = edac_device_alloc_ctl_info(sizeof(struct thunderx_ocx),
- name, 1, "CCPI", 1,
- 0, NULL, 0, idx);
+ name, 1, "CCPI", 1, 0, idx);
if (!edac_dev) {
dev_err(&pdev->dev, "Cannot allocate EDAC device\n");
return -ENOMEM;
@@ -2004,8 +2003,7 @@ static int thunderx_l2c_probe(struct pci_dev *pdev,
snprintf(name, sizeof(name), fmt, idx);

edac_dev = edac_device_alloc_ctl_info(sizeof(struct thunderx_l2c),
- name, 1, "L2C", 1, 0,
- NULL, 0, idx);
+ name, 1, "L2C", 1, 0, idx);
if (!edac_dev) {
dev_err(&pdev->dev, "Cannot allocate EDAC device\n");
return -ENOMEM;
diff --git a/drivers/edac/xgene_edac.c b/drivers/edac/xgene_edac.c
index 1b50f8160013..fd87f1b2c145 100644
--- a/drivers/edac/xgene_edac.c
+++ b/drivers/edac/xgene_edac.c
@@ -913,8 +913,8 @@ static int xgene_edac_pmd_add(struct xgene_edac *edac, struct device_node *np,

snprintf(edac_name, sizeof(edac_name), "l2c%d", pmd);
edac_dev = edac_device_alloc_ctl_info(sizeof(*ctx),
- edac_name, 1, "l2c", 1, 2, NULL,
- 0, edac_device_alloc_index());
+ edac_name, 1, "l2c", 1, 2,
+ edac_device_alloc_index());
if (!edac_dev) {
rc = -ENOMEM;
goto err_group;
@@ -1208,8 +1208,7 @@ static int xgene_edac_l3_add(struct xgene_edac *edac, struct device_node *np,

edac_idx = edac_device_alloc_index();
edac_dev = edac_device_alloc_ctl_info(sizeof(*ctx),
- "l3c", 1, "l3c", 1, 0, NULL, 0,
- edac_idx);
+ "l3c", 1, "l3c", 1, 0, edac_idx);
if (!edac_dev) {
rc = -ENOMEM;
goto err_release_group;
@@ -1748,8 +1747,7 @@ static int xgene_edac_soc_add(struct xgene_edac *edac, struct device_node *np,

edac_idx = edac_device_alloc_index();
edac_dev = edac_device_alloc_ctl_info(sizeof(*ctx),
- "SOC", 1, "SOC", 1, 2, NULL, 0,
- edac_idx);
+ "SOC", 1, "SOC", 1, 2, edac_idx);
if (!edac_dev) {
rc = -ENOMEM;
goto err_release_group;
diff --git a/drivers/edac/zynqmp_edac.c b/drivers/edac/zynqmp_edac.c
index 2d9a5cfd8931..c9dc78d8c824 100644
--- a/drivers/edac/zynqmp_edac.c
+++ b/drivers/edac/zynqmp_edac.c
@@ -381,7 +381,7 @@ static int edac_probe(struct platform_device *pdev)
}

dci = edac_device_alloc_ctl_info(sizeof(*priv), ZYNQMP_OCM_EDAC_STRING,
- 1, ZYNQMP_OCM_EDAC_STRING, 1, 0, NULL, 0,
+ 1, ZYNQMP_OCM_EDAC_STRING, 1, 0,
edac_device_alloc_index());
if (!dci)
return -ENOMEM;
--
2.43.1


2024-02-13 11:22:48

by Jiri Slaby

[permalink] [raw]
Subject: [PATCH 6/7] EDAC: Remove edac_pci_ctl_info::complete

edac_pci_ctl_info::complete is not used since commit 458e5ff13e1b (edac:
core: remove completion-wait for complete with rcu_barrier). Drop it.

Found by https://github.com/jirislaby/clang-struct.

Signed-off-by: Jiri Slaby (SUSE) <[email protected]>
Cc: Borislav Petkov <[email protected]>
Cc: Tony Luck <[email protected]>
Cc: James Morse <[email protected]>
Cc: Mauro Carvalho Chehab <[email protected]>
Cc: Robert Richter <[email protected]>
Cc: [email protected]
---
drivers/edac/edac_pci.h | 3 ---
1 file changed, 3 deletions(-)

diff --git a/drivers/edac/edac_pci.h b/drivers/edac/edac_pci.h
index 4159a3ef0dbf..3f47cd9b2b03 100644
--- a/drivers/edac/edac_pci.h
+++ b/drivers/edac/edac_pci.h
@@ -22,7 +22,6 @@
#ifndef _EDAC_PCI_H_
#define _EDAC_PCI_H_

-#include <linux/completion.h>
#include <linux/device.h>
#include <linux/edac.h>
#include <linux/kobject.h>
@@ -70,8 +69,6 @@ struct edac_pci_ctl_info {

unsigned long start_time; /* edac_pci load start time (jiffies) */

- struct completion complete;
-
/* sysfs top name under 'edac' directory
* and instance name:
* cpu/cpu0/...
--
2.43.1


2024-02-13 11:23:06

by Jiri Slaby

[permalink] [raw]
Subject: [PATCH 7/7] EDAC: Remove edac_device_ctl_info::removal_complete

edac_device_ctl_info::removal_complete is not used since commit
458e5ff13e1b (edac: core: remove completion-wait for complete with
rcu_barrier). Drop it.

Found by https://github.com/jirislaby/clang-struct.

Signed-off-by: Jiri Slaby (SUSE) <[email protected]>
Cc: Borislav Petkov <[email protected]>
Cc: Tony Luck <[email protected]>
Cc: James Morse <[email protected]>
Cc: Mauro Carvalho Chehab <[email protected]>
Cc: Robert Richter <[email protected]>
Cc: [email protected]
---
drivers/edac/edac_device.h | 3 ---
1 file changed, 3 deletions(-)

diff --git a/drivers/edac/edac_device.h b/drivers/edac/edac_device.h
index 55be019c12ca..034711d71ebf 100644
--- a/drivers/edac/edac_device.h
+++ b/drivers/edac/edac_device.h
@@ -22,7 +22,6 @@
#ifndef _EDAC_DEVICE_H_
#define _EDAC_DEVICE_H_

-#include <linux/completion.h>
#include <linux/device.h>
#include <linux/edac.h>
#include <linux/kobject.h>
@@ -191,8 +190,6 @@ struct edac_device_ctl_info {

unsigned long start_time; /* edac_device load start time (jiffies) */

- struct completion removal_complete;
-
/* sysfs top name under 'edac' directory
* and instance name:
* cpu/cpu0/...
--
2.43.1


2024-02-13 11:30:05

by Jiri Slaby

[permalink] [raw]
Subject: [PATCH 5/7] EDAC: Remove edac_pci_ctl_info::edac_subsys

It was never used since its addition in commit 91b99041c1d5
(drivers/edac: updated PCI monitoring). Drop it.

Found by https://github.com/jirislaby/clang-struct.

Signed-off-by: Jiri Slaby (SUSE) <[email protected]>
Cc: Borislav Petkov <[email protected]>
Cc: Tony Luck <[email protected]>
Cc: James Morse <[email protected]>
Cc: Mauro Carvalho Chehab <[email protected]>
Cc: Robert Richter <[email protected]>
Cc: [email protected]
---
drivers/edac/edac_pci.h | 2 --
1 file changed, 2 deletions(-)

diff --git a/drivers/edac/edac_pci.h b/drivers/edac/edac_pci.h
index 5175f5724cfa..4159a3ef0dbf 100644
--- a/drivers/edac/edac_pci.h
+++ b/drivers/edac/edac_pci.h
@@ -48,8 +48,6 @@ struct edac_pci_ctl_info {

int pci_idx;

- struct bus_type *edac_subsys; /* pointer to subsystem */
-
/* the internal state of this controller instance */
int op_state;
/* work struct for this instance */
--
2.43.1


2024-02-14 20:23:28

by Yazen Ghannam

[permalink] [raw]
Subject: Re: [PATCH 1/7] EDAC/amd64: Remove amd64_pvt::ext_nbcfg

On 2/13/2024 6:20 AM, Jiri Slaby (SUSE) wrote:
> Commit cfe40fdb4a46 (amd64_edac: add driver header) added amd64_pvt
> struct with ext_nbcfg in it. But noone used that member since then.
>
> Therefore, remove it.
>
> Found by https://github.com/jirislaby/clang-struct.
>
> Signed-off-by: Jiri Slaby (SUSE) <[email protected]>
> Cc: Yazen Ghannam <[email protected]>
> Cc: Borislav Petkov <[email protected]>
> Cc: Tony Luck <[email protected]>
> Cc: James Morse <[email protected]>
> Cc: Mauro Carvalho Chehab <[email protected]>
> Cc: Robert Richter <[email protected]>
> Cc: [email protected]
> ---
> drivers/edac/amd64_edac.h | 1 -
> 1 file changed, 1 deletion(-)
>
> diff --git a/drivers/edac/amd64_edac.h b/drivers/edac/amd64_edac.h
> index 1665f7932bac..b879b12971e7 100644
> --- a/drivers/edac/amd64_edac.h
> +++ b/drivers/edac/amd64_edac.h
> @@ -345,7 +345,6 @@ struct amd64_pvt {
> u32 dchr1; /* DRAM Configuration High DCT1 reg */
> u32 nbcap; /* North Bridge Capabilities */
> u32 nbcfg; /* F10 North Bridge Configuration */
> - u32 ext_nbcfg; /* Extended F10 North Bridge Configuration */
> u32 dhar; /* DRAM Hoist reg */
> u32 dbam0; /* DRAM Base Address Mapping reg for DCT0 */
> u32 dbam1; /* DRAM Base Address Mapping reg for DCT1 */

This field likely was intended to be used with the EXT_NB_MCA_CFG definition.
But I agree it's not used and can be removed.

Reviewed-by: Yazen Ghannam <[email protected]>

Thanks,
Yazen

2024-03-08 09:01:28

by Jiri Slaby

[permalink] [raw]
Subject: Re: [PATCH 0/7] EDAC: remove unused structure members

Any plans on looking into/commenting/merging this :)?

On 13. 02. 24, 12:20, Jiri Slaby (SUSE) wrote:
> Hi,
>
> this series removes unused EDAC structure members as found by
> clang-struct (and manually checked by me).
>
> I admit I could not even compile-test octeon files, hopefully
> kernel-test robot would catch mistakes in there.
>
> Cc: Andre Przywara <[email protected]>
> Cc: Bjorn Andersson <[email protected]>
> Cc: Borislav Petkov <[email protected]>
> Cc: Dinh Nguyen <[email protected]>
> Cc: Douglas Thompson <[email protected]>
> Cc: James Morse <[email protected]>
> Cc: Jan Luebbe <[email protected]>
> Cc: Johannes Thumshirn <[email protected]>
> Cc: Khuong Dinh <[email protected]>
> Cc: Konrad Dybcio <[email protected]>
> Cc: [email protected]
> Cc: Manivannan Sadhasivam <[email protected]>
> Cc: Mauro Carvalho Chehab <[email protected]>
> Cc: Michal Simek <[email protected]>
> Cc: Palmer Dabbelt <[email protected]>
> Cc: Paul Walmsley <[email protected]>
> Cc: Ralf Baechle <[email protected]>
> Cc: Robert Richter <[email protected]>
> Cc: Sai Krishna Potthuri <[email protected]>
> Cc: Shubhrajyoti Datta <[email protected]>
> Cc: Tony Luck <[email protected]>
> Cc: Yazen Ghannam <[email protected]>
>
> Jiri Slaby (SUSE) (7):
> EDAC/amd64: Remove amd64_pvt::ext_nbcfg
> EDAC/device: Remove edac_dev_sysfs_block_attribute::{block,value}
> EDAC/device: Remove edac_dev_sysfs_block_attribute::store()
> EDAC: Remove dynamic attributes from edac_device_alloc_ctl_info()
> EDAC: Remove edac_pci_ctl_info::edac_subsys
> EDAC: Remove edac_pci_ctl_info::complete
> EDAC: Remove edac_device_ctl_info::removal_complete
>
> drivers/edac/altera_edac.c | 8 ++---
> drivers/edac/amd64_edac.h | 1 -
> drivers/edac/amd8111_edac.c | 3 +-
> drivers/edac/armada_xp_edac.c | 2 +-
> drivers/edac/cpc925_edac.c | 2 +-
> drivers/edac/edac_device.c | 53 ++------------------------------
> drivers/edac/edac_device.h | 22 ++-----------
> drivers/edac/edac_device_sysfs.c | 22 ++-----------
> drivers/edac/edac_pci.h | 5 ---
> drivers/edac/highbank_l2_edac.c | 2 +-
> drivers/edac/mpc85xx_edac.c | 2 +-
> drivers/edac/octeon_edac-l2c.c | 2 +-
> drivers/edac/octeon_edac-pc.c | 2 +-
> drivers/edac/qcom_edac.c | 1 -
> drivers/edac/sifive_edac.c | 3 +-
> drivers/edac/thunderx_edac.c | 6 ++--
> drivers/edac/xgene_edac.c | 10 +++---
> drivers/edac/zynqmp_edac.c | 2 +-
> 18 files changed, 26 insertions(+), 122 deletions(-)
>

--
js
suse labs


2024-03-08 09:17:25

by Borislav Petkov

[permalink] [raw]
Subject: Re: [PATCH 0/7] EDAC: remove unused structure members

On Fri, Mar 08, 2024 at 10:01:14AM +0100, Jiri Slaby wrote:
> Any plans on looking into/commenting/merging this :)?

Plans: yes, time: none.

You're on the todo list tho.

--
Regards/Gruss,
Boris.

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

2024-03-27 17:40:50

by Borislav Petkov

[permalink] [raw]
Subject: Re: [PATCH 0/7] EDAC: remove unused structure members

On Tue, Feb 13, 2024 at 12:20:44PM +0100, Jiri Slaby (SUSE) wrote:
> Jiri Slaby (SUSE) (7):
> EDAC/amd64: Remove amd64_pvt::ext_nbcfg
> EDAC/device: Remove edac_dev_sysfs_block_attribute::{block,value}
> EDAC/device: Remove edac_dev_sysfs_block_attribute::store()
> EDAC: Remove dynamic attributes from edac_device_alloc_ctl_info()
> EDAC: Remove edac_pci_ctl_info::edac_subsys
> EDAC: Remove edac_pci_ctl_info::complete
> EDAC: Remove edac_device_ctl_info::removal_complete

All applied, the last three squashed into one patch.

Thx.

--
Regards/Gruss,
Boris.

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