[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <202408220634.Irq2TUcL-lkp@intel.com>
Date: Thu, 22 Aug 2024 08:07:07 +0800
From: kernel test robot <lkp@...el.com>
To: Zhao Qunqin <zhaoqunqin@...ngson.cn>, chenhuacai@...nel.org,
kernel@...0n.name, bp@...en8.de, tony.luck@...el.com,
james.morse@....com, mchehab@...nel.org, rric@...nel.org,
robh@...nel.org, krzk+dt@...nel.org, conor+dt@...nel.org
Cc: oe-kbuild-all@...ts.linux.dev, loongarch@...ts.linux.dev,
linux-kernel@...r.kernel.org, linux-edac@...r.kernel.org,
devicetree@...r.kernel.org, zhaoqunqin <zhaoqunqin@...ngson.cn>
Subject: Re: [PATCH v1 1/2] Loongarch: EDAC driver for loongson memory
controller
Hi Zhao,
kernel test robot noticed the following build errors:
[auto build test ERROR on ras/edac-for-next]
[also build test ERROR on robh/for-next linus/master v6.11-rc4 next-20240821]
[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#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Zhao-Qunqin/Loongarch-EDAC-driver-for-loongson-memory-controller/20240821-145127
base: https://git.kernel.org/pub/scm/linux/kernel/git/ras/ras.git edac-for-next
patch link: https://lore.kernel.org/r/20240821064728.8642-2-zhaoqunqin%40loongson.cn
patch subject: [PATCH v1 1/2] Loongarch: EDAC driver for loongson memory controller
config: loongarch-allmodconfig (https://download.01.org/0day-ci/archive/20240822/202408220634.Irq2TUcL-lkp@intel.com/config)
compiler: loongarch64-linux-gcc (GCC) 14.1.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240822/202408220634.Irq2TUcL-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@...el.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202408220634.Irq2TUcL-lkp@intel.com/
All errors (new ones prefixed by >>):
drivers/edac/loongson_edac.c: In function 'get_dimm_config':
>> drivers/edac/loongson_edac.c:90:16: error: implicit declaration of function 'EDAC_DIMM_PTR' [-Wimplicit-function-declaration]
90 | dimm = EDAC_DIMM_PTR(mci->layers, mci->dimms, mci->n_layers,
| ^~~~~~~~~~~~~
>> drivers/edac/loongson_edac.c:90:14: error: assignment to 'struct dimm_info *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
90 | dimm = EDAC_DIMM_PTR(mci->layers, mci->dimms, mci->n_layers,
| ^
drivers/edac/loongson_edac.c: At top level:
>> drivers/edac/loongson_edac.c:181:27: error: initialization of 'void (*)(struct platform_device *)' from incompatible pointer type 'int (*)(struct platform_device *)' [-Wincompatible-pointer-types]
181 | .remove = loongson_edac_remove,
| ^~~~~~~~~~~~~~~~~~~~
drivers/edac/loongson_edac.c:181:27: note: (near initialization for 'loongson_edac_driver.<anonymous>.remove')
vim +/EDAC_DIMM_PTR +90 drivers/edac/loongson_edac.c
80
81 static int get_dimm_config(struct mem_ctl_info *mci)
82 {
83 u32 size, npages;
84 struct dimm_info *dimm;
85
86 /* size not used */
87 size = -1;
88 npages = MiB_TO_PAGES(size);
89
> 90 dimm = EDAC_DIMM_PTR(mci->layers, mci->dimms, mci->n_layers,
91 0, 0, 0);
92 dimm->nr_pages = npages;
93 snprintf(dimm->label, sizeof(dimm->label),
94 "MC#%uChannel#%u_DIMM#%u",
95 mci->mc_idx, 0, 0);
96 dimm->grain = 8;
97
98 return 0;
99 }
100
101 static void loongson_pvt_init(struct mem_ctl_info *mci, u64 *vbase)
102 {
103 struct loongson_edac_pvt *pvt = mci->pvt_info;
104
105 pvt->ecc_base = vbase;
106 pvt->last_ce_count = loongson_read_ecc(mci);
107 }
108
109 static int loongson_edac_probe(struct platform_device *pdev)
110 {
111 struct resource *rs;
112 struct mem_ctl_info *mci;
113 struct edac_mc_layer layers[2];
114 struct loongson_edac_pvt *pvt;
115 u64 *vbase = NULL;
116
117 rs = platform_get_resource(pdev, IORESOURCE_MEM, 0);
118 if (!rs)
119 return -EINVAL;
120 if (rs->start) {
121 vbase = devm_ioremap(&pdev->dev, rs->start, resource_size(rs));
122 if (!vbase)
123 return -ENOMEM;
124 }
125
126 /* allocate a new MC control structure */
127 layers[0].type = EDAC_MC_LAYER_CHANNEL;
128 layers[0].size = 1;
129 layers[0].is_virt_csrow = false;
130 layers[1].type = EDAC_MC_LAYER_SLOT;
131 layers[1].size = 1;
132 layers[1].is_virt_csrow = true;
133 mci = edac_mc_alloc(0, ARRAY_SIZE(layers), layers, sizeof(*pvt));
134 if (mci == NULL)
135 return -ENOMEM;
136
137 edac_dbg(0, "MC: mci = %p\n", mci);
138
139 mci->mc_idx = idx++;
140 mci->mtype_cap = MEM_FLAG_RDDR4;
141 mci->edac_ctl_cap = EDAC_FLAG_NONE;
142 mci->edac_cap = EDAC_FLAG_NONE;
143 mci->mod_name = "loongson_edac.c";
144 mci->ctl_name = "loongson_edac_ctl";
145 mci->dev_name = "loongson_edac_dev";
146 mci->ctl_page_to_phys = NULL;
147 mci->pdev = &pdev->dev;
148 mci->error_desc.grain = 8;
149 /* Set the function pointer to an actual operation function */
150 mci->edac_check = loongson_edac_check;
151
152 loongson_pvt_init(mci, vbase);
153 get_dimm_config(mci);
154
155 if (edac_mc_add_mc(mci)) {
156 edac_dbg(0, "MC: failed edac_mc_add_mc()\n");
157 edac_mc_free(mci);
158 }
159 return 0;
160 }
161
162 static int loongson_edac_remove(struct platform_device *pdev)
163 {
164 struct mem_ctl_info *mci = edac_mc_del_mc(&pdev->dev);
165
166 if (mci) {
167 edac_mc_free(mci);
168 return 0;
169 }
170 return -ENODEV;
171 }
172
173 static const struct of_device_id loongson_edac_of_match[] = {
174 { .compatible = "loongson,ls-mc-edac", },
175 {}
176 };
177 MODULE_DEVICE_TABLE(of, loongson_edac_of_match);
178
179 static struct platform_driver loongson_edac_driver = {
180 .probe = loongson_edac_probe,
> 181 .remove = loongson_edac_remove,
182 .driver = {
183 .name = "ls-mc-edac",
184 .owner = THIS_MODULE,
185 .of_match_table = loongson_edac_of_match,
186 },
187 };
188
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
Powered by blists - more mailing lists