2021-07-11 07:29:26

by Dwaipayan Ray

[permalink] [raw]
Subject: [PATCH] drivers:edac: Use DEVICE_ATTR helper macros

Instead of "open coding" DEVICE_ATTR, use the corresponding
helper macros DEVICE_ATTR_{RW,RO_WO}.

Some function names needed to be changed to match the device
conventions <foo>_show and <foo>_store, but the functionality
itself is unchanged.

Signed-off-by: Dwaipayan Ray <[email protected]>
---

Build tested only with CONFIG_EDAC_DEBUG=y

drivers/edac/amd64_edac.c | 35 +++++++++++++++--------------------
1 file changed, 15 insertions(+), 20 deletions(-)

diff --git a/drivers/edac/amd64_edac.c b/drivers/edac/amd64_edac.c
index f0d8f60acee1..088dad0c7b40 100644
--- a/drivers/edac/amd64_edac.c
+++ b/drivers/edac/amd64_edac.c
@@ -567,12 +567,12 @@ static ssize_t reg##_show(struct device *dev, \
}

EDAC_DCT_ATTR_SHOW(dhar);
-EDAC_DCT_ATTR_SHOW(dbam0);
-EDAC_DCT_ATTR_SHOW(top_mem);
-EDAC_DCT_ATTR_SHOW(top_mem2);
+EDAC_DCT_ATTR_SHOW(dbam);
+EDAC_DCT_ATTR_SHOW(topmem);
+EDAC_DCT_ATTR_SHOW(topmem2);

-static ssize_t hole_show(struct device *dev, struct device_attribute *mattr,
- char *data)
+static ssize_t dram_hole_show(struct device *dev, struct device_attribute *mattr,
+ char *data)
{
struct mem_ctl_info *mci = to_mci(dev);

@@ -589,11 +589,11 @@ static ssize_t hole_show(struct device *dev, struct device_attribute *mattr,
/*
* update NUM_DBG_ATTRS in case you add new members
*/
-static DEVICE_ATTR(dhar, S_IRUGO, dhar_show, NULL);
-static DEVICE_ATTR(dbam, S_IRUGO, dbam0_show, NULL);
-static DEVICE_ATTR(topmem, S_IRUGO, top_mem_show, NULL);
-static DEVICE_ATTR(topmem2, S_IRUGO, top_mem2_show, NULL);
-static DEVICE_ATTR(dram_hole, S_IRUGO, hole_show, NULL);
+static DEVICE_ATTR_RO(dhar);
+static DEVICE_ATTR_RO(dbam);
+static DEVICE_ATTR_RO(topmem);
+static DEVICE_ATTR_RO(topmem2);
+static DEVICE_ATTR_RO(dram_hole);

static struct attribute *dbg_attrs[] = {
&dev_attr_dhar.attr,
@@ -802,16 +802,11 @@ static ssize_t inject_write_store(struct device *dev,
* update NUM_INJ_ATTRS in case you add new members
*/

-static DEVICE_ATTR(inject_section, S_IRUGO | S_IWUSR,
- inject_section_show, inject_section_store);
-static DEVICE_ATTR(inject_word, S_IRUGO | S_IWUSR,
- inject_word_show, inject_word_store);
-static DEVICE_ATTR(inject_ecc_vector, S_IRUGO | S_IWUSR,
- inject_ecc_vector_show, inject_ecc_vector_store);
-static DEVICE_ATTR(inject_write, S_IWUSR,
- NULL, inject_write_store);
-static DEVICE_ATTR(inject_read, S_IWUSR,
- NULL, inject_read_store);
+static DEVICE_ATTR_RW(inject_section);
+static DEVICE_ATTR_RW(inject_word);
+static DEVICE_ATTR_RW(inject_ecc_vector);
+static DEVICE_ATTR_WO(inject_write);
+static DEVICE_ATTR_WO(inject_read);

static struct attribute *inj_attrs[] = {
&dev_attr_inject_section.attr,
--
2.28.0


2021-07-11 11:50:53

by kernel test robot

[permalink] [raw]
Subject: Re: [PATCH] drivers:edac: Use DEVICE_ATTR helper macros

Hi Dwaipayan,

I love your patch! Yet something to improve:

[auto build test ERROR on ras/edac-for-next]
[also build test ERROR on v5.13 next-20210709]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url: https://github.com/0day-ci/linux/commits/Dwaipayan-Ray/drivers-edac-Use-DEVICE_ATTR-helper-macros/20210711-152925
base: https://git.kernel.org/pub/scm/linux/kernel/git/ras/ras.git edac-for-next
config: i386-allyesconfig (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce (this is a W=1 build):
# https://github.com/0day-ci/linux/commit/adad6ecbf0efe710fee1495b85d840ad53825124
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Dwaipayan-Ray/drivers-edac-Use-DEVICE_ATTR-helper-macros/20210711-152925
git checkout adad6ecbf0efe710fee1495b85d840ad53825124
# save the attached .config to linux build tree
mkdir build_dir
make W=1 O=build_dir ARCH=i386 SHELL=/bin/bash

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <[email protected]>

All errors (new ones prefixed by >>):

drivers/edac/amd64_edac.c: In function 'dbam_show':
>> drivers/edac/amd64_edac.c:570:20: error: 'struct amd64_pvt' has no member named 'dbam'; did you mean 'dbam0'?
570 | EDAC_DCT_ATTR_SHOW(dbam);
| ^~~~
drivers/edac/amd64_edac.c:566:48: note: in definition of macro 'EDAC_DCT_ATTR_SHOW'
566 | return sprintf(data, "0x%016llx\n", (u64)pvt->reg); \
| ^~~
drivers/edac/amd64_edac.c: In function 'topmem_show':
>> drivers/edac/amd64_edac.c:571:20: error: 'struct amd64_pvt' has no member named 'topmem'; did you mean 'top_mem'?
571 | EDAC_DCT_ATTR_SHOW(topmem);
| ^~~~~~
drivers/edac/amd64_edac.c:566:48: note: in definition of macro 'EDAC_DCT_ATTR_SHOW'
566 | return sprintf(data, "0x%016llx\n", (u64)pvt->reg); \
| ^~~
drivers/edac/amd64_edac.c: In function 'topmem2_show':
>> drivers/edac/amd64_edac.c:572:20: error: 'struct amd64_pvt' has no member named 'topmem2'; did you mean 'top_mem2'?
572 | EDAC_DCT_ATTR_SHOW(topmem2);
| ^~~~~~~
drivers/edac/amd64_edac.c:566:48: note: in definition of macro 'EDAC_DCT_ATTR_SHOW'
566 | return sprintf(data, "0x%016llx\n", (u64)pvt->reg); \
| ^~~
drivers/edac/amd64_edac.c:567:1: error: control reaches end of non-void function [-Werror=return-type]
567 | }
| ^
drivers/edac/amd64_edac.c:572:1: note: in expansion of macro 'EDAC_DCT_ATTR_SHOW'
572 | EDAC_DCT_ATTR_SHOW(topmem2);
| ^~~~~~~~~~~~~~~~~~
drivers/edac/amd64_edac.c: In function 'topmem_show':
drivers/edac/amd64_edac.c:567:1: error: control reaches end of non-void function [-Werror=return-type]
567 | }
| ^
drivers/edac/amd64_edac.c:571:1: note: in expansion of macro 'EDAC_DCT_ATTR_SHOW'
571 | EDAC_DCT_ATTR_SHOW(topmem);
| ^~~~~~~~~~~~~~~~~~
drivers/edac/amd64_edac.c: In function 'dbam_show':
drivers/edac/amd64_edac.c:567:1: error: control reaches end of non-void function [-Werror=return-type]
567 | }
| ^
drivers/edac/amd64_edac.c:570:1: note: in expansion of macro 'EDAC_DCT_ATTR_SHOW'
570 | EDAC_DCT_ATTR_SHOW(dbam);
| ^~~~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors


vim +570 drivers/edac/amd64_edac.c

568
569 EDAC_DCT_ATTR_SHOW(dhar);
> 570 EDAC_DCT_ATTR_SHOW(dbam);
> 571 EDAC_DCT_ATTR_SHOW(topmem);
> 572 EDAC_DCT_ATTR_SHOW(topmem2);
573

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]


Attachments:
(No filename) (3.99 kB)
.config.gz (63.73 kB)
Download all attachments