Re: [PATCH v5 3/9] of: fdt: Add generic support for handling elf core headers property
by kernel test robot
Hi Geert,
I love your patch! Yet something to improve:
[auto build test ERROR on robh/for-next]
[also build test ERROR on arm64/for-next/core arm/for-next linus/master v5.14-rc5 next-20210811]
[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/Geert-Uytterhoeven/Add-generic-s...
base: https://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git for-next
config: ia64-allmodconfig (attached as .config)
compiler: ia64-linux-gcc (GCC) 10.3.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://github.com/0day-ci/linux/commit/34ef57fdde286c4999f0deea8ee16d56d...
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Geert-Uytterhoeven/Add-generic-support-for-kdump-DT-properties/20210811-165455
git checkout 34ef57fdde286c4999f0deea8ee16d56d2ac3bae
# save the attached .config to linux build tree
mkdir build_dir
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-10.3.0 make.cross O=build_dir ARCH=ia64 SHELL=/bin/bash drivers/
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All errors (new ones prefixed by >>):
>> drivers/of/fdt.c:593:20: error: conflicting types for 'reserve_elfcorehdr'
593 | static void __init reserve_elfcorehdr(void)
| ^~~~~~~~~~~~~~~~~~
In file included from arch/ia64/include/asm/mmzone.h:16,
from arch/ia64/include/asm/nodedata.h:17,
from arch/ia64/include/asm/processor.h:81,
from arch/ia64/include/asm/thread_info.h:12,
from include/linux/thread_info.h:60,
from include/asm-generic/preempt.h:5,
from ./arch/ia64/include/generated/asm/preempt.h:1,
from include/linux/preempt.h:78,
from include/linux/rcupdate.h:27,
from include/linux/rculist.h:11,
from include/linux/pid.h:5,
from include/linux/sched.h:14,
from include/linux/ptrace.h:6,
from arch/ia64/include/asm/user.h:32,
from include/linux/user.h:1,
from include/linux/elfcore.h:5,
from include/linux/crash_core.h:6,
from include/linux/kexec.h:18,
from include/linux/crash_dump.h:5,
from drivers/of/fdt.c:11:
arch/ia64/include/asm/meminit.h:43:12: note: previous declaration of 'reserve_elfcorehdr' was here
43 | extern int reserve_elfcorehdr(u64 *start, u64 *end);
| ^~~~~~~~~~~~~~~~~~
vim +/reserve_elfcorehdr +593 drivers/of/fdt.c
584
585 /*
586 * reserve_elfcorehdr() - reserves memory for elf core header
587 *
588 * This function reserves the memory occupied by an elf core header
589 * described in the device tree. This region contains all the
590 * information about primary kernel's core image and is used by a dump
591 * capture kernel to access the system memory on primary kernel.
592 */
> 593 static void __init reserve_elfcorehdr(void)
594 {
595 if (!IS_ENABLED(CONFIG_CRASH_DUMP) || !elfcorehdr_size)
596 return;
597
598 if (memblock_is_region_reserved(elfcorehdr_addr, elfcorehdr_size)) {
599 pr_warn("elfcorehdr is overlapped\n");
600 return;
601 }
602
603 memblock_reserve(elfcorehdr_addr, elfcorehdr_size);
604
605 pr_info("Reserving %llu KiB of memory at 0x%llx for elfcorehdr\n",
606 elfcorehdr_size >> 10, elfcorehdr_addr);
607 }
608
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 1 month
[xlnx:xlnx_rebase_v5.10 137/1761] drivers/misc/xilinx_flex_pm.c:235:53: error: too many arguments to function call, expected 2, have 3
by kernel test robot
tree: https://github.com/Xilinx/linux-xlnx xlnx_rebase_v5.10
head: e14d4574ca81a569ee6d07e03271f2ae2dad38e4
commit: a488ba0fdc7388872e2b5ae378612d4e7ea70cb0 [137/1761] misc: xilinx_flex: Add support for the flex noc Performance Monitor
config: s390-randconfig-r012-20210812 (attached as .config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 767496d19cb9a1fbba57ff08095faa161998ee36)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# install s390 cross compiling tool for clang build
# apt-get install binutils-s390x-linux-gnu
# https://github.com/Xilinx/linux-xlnx/commit/a488ba0fdc7388872e2b5ae378612...
git remote add xlnx https://github.com/Xilinx/linux-xlnx
git fetch --no-tags xlnx xlnx_rebase_v5.10
git checkout a488ba0fdc7388872e2b5ae378612d4e7ea70cb0
# save the attached .config to linux build tree
mkdir build_dir
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross O=build_dir ARCH=s390 SHELL=/bin/bash drivers/crypto/xilinx/ drivers/fpga/ drivers/media/i2c/ drivers/misc/ drivers/net/ethernet/xilinx/ drivers/regulator/ drivers/s390/net/ drivers/s390/scsi/ drivers/staging/
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All errors (new ones prefixed by >>):
In file included from arch/s390/include/asm/io.h:80:
include/asm-generic/io.h:490:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
val = __le32_to_cpu((__le32 __force)__raw_readl(PCI_IOBASE + addr));
~~~~~~~~~~ ^
include/uapi/linux/byteorder/big_endian.h:34:59: note: expanded from macro '__le32_to_cpu'
#define __le32_to_cpu(x) __swab32((__force __u32)(__le32)(x))
^
include/uapi/linux/swab.h:119:21: note: expanded from macro '__swab32'
___constant_swab32(x) : \
^
include/uapi/linux/swab.h:19:12: note: expanded from macro '___constant_swab32'
(((__u32)(x) & (__u32)0x000000ffUL) << 24) | \
^
In file included from drivers/misc/xilinx_flex_pm.c:10:
In file included from include/linux/io.h:13:
In file included from arch/s390/include/asm/io.h:80:
include/asm-generic/io.h:490:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
val = __le32_to_cpu((__le32 __force)__raw_readl(PCI_IOBASE + addr));
~~~~~~~~~~ ^
include/uapi/linux/byteorder/big_endian.h:34:59: note: expanded from macro '__le32_to_cpu'
#define __le32_to_cpu(x) __swab32((__force __u32)(__le32)(x))
^
include/uapi/linux/swab.h:119:21: note: expanded from macro '__swab32'
___constant_swab32(x) : \
^
include/uapi/linux/swab.h:20:12: note: expanded from macro '___constant_swab32'
(((__u32)(x) & (__u32)0x0000ff00UL) << 8) | \
^
In file included from drivers/misc/xilinx_flex_pm.c:10:
In file included from include/linux/io.h:13:
In file included from arch/s390/include/asm/io.h:80:
include/asm-generic/io.h:490:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
val = __le32_to_cpu((__le32 __force)__raw_readl(PCI_IOBASE + addr));
~~~~~~~~~~ ^
include/uapi/linux/byteorder/big_endian.h:34:59: note: expanded from macro '__le32_to_cpu'
#define __le32_to_cpu(x) __swab32((__force __u32)(__le32)(x))
^
include/uapi/linux/swab.h:119:21: note: expanded from macro '__swab32'
___constant_swab32(x) : \
^
include/uapi/linux/swab.h:21:12: note: expanded from macro '___constant_swab32'
(((__u32)(x) & (__u32)0x00ff0000UL) >> 8) | \
^
In file included from drivers/misc/xilinx_flex_pm.c:10:
In file included from include/linux/io.h:13:
In file included from arch/s390/include/asm/io.h:80:
include/asm-generic/io.h:490:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
val = __le32_to_cpu((__le32 __force)__raw_readl(PCI_IOBASE + addr));
~~~~~~~~~~ ^
include/uapi/linux/byteorder/big_endian.h:34:59: note: expanded from macro '__le32_to_cpu'
#define __le32_to_cpu(x) __swab32((__force __u32)(__le32)(x))
^
include/uapi/linux/swab.h:119:21: note: expanded from macro '__swab32'
___constant_swab32(x) : \
^
include/uapi/linux/swab.h:22:12: note: expanded from macro '___constant_swab32'
(((__u32)(x) & (__u32)0xff000000UL) >> 24)))
^
In file included from drivers/misc/xilinx_flex_pm.c:10:
In file included from include/linux/io.h:13:
In file included from arch/s390/include/asm/io.h:80:
include/asm-generic/io.h:490:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
val = __le32_to_cpu((__le32 __force)__raw_readl(PCI_IOBASE + addr));
~~~~~~~~~~ ^
include/uapi/linux/byteorder/big_endian.h:34:59: note: expanded from macro '__le32_to_cpu'
#define __le32_to_cpu(x) __swab32((__force __u32)(__le32)(x))
^
include/uapi/linux/swab.h:120:12: note: expanded from macro '__swab32'
__fswab32(x))
^
In file included from drivers/misc/xilinx_flex_pm.c:10:
In file included from include/linux/io.h:13:
In file included from arch/s390/include/asm/io.h:80:
include/asm-generic/io.h:501:33: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
__raw_writeb(value, PCI_IOBASE + addr);
~~~~~~~~~~ ^
include/asm-generic/io.h:511:59: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
__raw_writew((u16 __force)cpu_to_le16(value), PCI_IOBASE + addr);
~~~~~~~~~~ ^
include/asm-generic/io.h:521:59: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
__raw_writel((u32 __force)cpu_to_le32(value), PCI_IOBASE + addr);
~~~~~~~~~~ ^
include/asm-generic/io.h:609:20: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
readsb(PCI_IOBASE + addr, buffer, count);
~~~~~~~~~~ ^
include/asm-generic/io.h:617:20: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
readsw(PCI_IOBASE + addr, buffer, count);
~~~~~~~~~~ ^
include/asm-generic/io.h:625:20: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
readsl(PCI_IOBASE + addr, buffer, count);
~~~~~~~~~~ ^
include/asm-generic/io.h:634:21: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
writesb(PCI_IOBASE + addr, buffer, count);
~~~~~~~~~~ ^
include/asm-generic/io.h:643:21: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
writesw(PCI_IOBASE + addr, buffer, count);
~~~~~~~~~~ ^
include/asm-generic/io.h:652:21: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
writesl(PCI_IOBASE + addr, buffer, count);
~~~~~~~~~~ ^
>> drivers/misc/xilinx_flex_pm.c:235:53: error: too many arguments to function call, expected 2, have 3
ret = zynqmp_pm_probe_counter_write(domain, reg, val);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~
include/linux/firmware/xlnx-zynqmp.h:914:19: note: 'zynqmp_pm_probe_counter_write' declared here
static inline int zynqmp_pm_probe_counter_write(u32 reg, u32 value)
^
drivers/misc/xilinx_flex_pm.c:252:53: error: too many arguments to function call, expected 2, have 3
ret = zynqmp_pm_probe_counter_write(domain, reg, val);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~
include/linux/firmware/xlnx-zynqmp.h:914:19: note: 'zynqmp_pm_probe_counter_write' declared here
static inline int zynqmp_pm_probe_counter_write(u32 reg, u32 value)
^
20 warnings and 2 errors generated.
vim +235 drivers/misc/xilinx_flex_pm.c
152
153 /**
154 * xflex_sysfs_cmd - Implements sysfs operations
155 * @dev: Device structure
156 * @buf: Value to write
157 * @cmd: sysfs cmd
158 *
159 * Return: value read from the sysfs cmd on success and negative error code
160 * otherwise.
161 */
162 static int xflex_sysfs_cmd(struct device *dev, const char *buf,
163 enum xflex_sysfs_cmd_codes cmd)
164 {
165 struct xflex_dev_info *flexpm = to_xflex_dev_info(dev);
166 u32 domain, src, offset, reg, val, counter;
167 int ret;
168 u32 pm_api_ret[4] = {0, 0, 0, 0};
169
170 mutex_lock(&flexpm->mutex);
171
172 switch (cmd) {
173 case XFLEX_GET_COUNTER_LPD_WRRSP:
174 reg = flexpm->counterid_lpd | FPM_WRRSP_L | FPM_VAL;
175 domain = FPM_LPD;
176
177 break;
178
179 case XFLEX_GET_COUNTER_LPD_WRREQ:
180 reg = flexpm->counterid_lpd | FPM_WRRSP_L | FPM_VAL;
181 domain = FPM_LPD;
182
183 break;
184
185 case XFLEX_GET_COUNTER_LPD_RDRSP:
186 reg = flexpm->counterid_lpd | FPM_RDRSP_L | FPM_VAL;
187 domain = FPM_LPD;
188
189 break;
190
191 case XFLEX_GET_COUNTER_LPD_RDREQ:
192 reg = flexpm->counterid_lpd | FPM_RDREQ_L | FPM_VAL;
193 domain = FPM_LPD;
194
195 break;
196
197 case XFLEX_SET_COUNTER_LPD:
198 ret = kstrtou32(buf, 0, &val);
199 if (ret < 0)
200 goto exit_unlock;
201
202 flexpm->counterid_lpd = val;
203 reset_default(dev, val, FPM_LPD);
204 break;
205
206 case XFLEX_SET_PORT_COUNTER_FPD:
207 ret = kstrtou32(buf, 0, &val);
208 if (ret < 0)
209 goto exit_unlock;
210
211 counter = flexpm->counterid_fpd * FPM_COUNTER_OFFSET;
212 offset = FPM_PORT_SEL_OFFSET + counter * FPM_COUNTER_OFFSET;
213 fpm_reg(flexpm->basefpd, val, offset);
214 break;
215
216 case XFLEX_SET_PORT_COUNTER_LPD:
217 ret = kstrtou32(buf, 0, &val);
218 if (ret < 0)
219 goto exit_unlock;
220
221 counter = flexpm->counterid_lpd * FPM_COUNTER_OFFSET;
222 offset = FPM_PORT_SEL_OFFSET + counter * FPM_COUNTER_OFFSET;
223 fpm_reg(flexpm->baselpd, val, offset);
224 break;
225
226 case XFLEX_SET_SRC_COUNTER_LPD:
227 reg = flexpm->counterid_lpd;
228 domain = FPM_LPD;
229 ret = kstrtou32(buf, 0, &val);
230 if (ret < 0)
231 goto exit_unlock;
232
233 for (src = 0; src < FPM_NUM_COUNTERS; src++) {
234 reg = reg | FPM_SRC | (src << FPM_PROBE_SHIFT);
> 235 ret = zynqmp_pm_probe_counter_write(domain, reg, val);
236 if (ret < 0) {
237 dev_err(dev, "Counter write error %d\n", ret);
238 goto exit_unlock;
239 }
240 }
241 break;
242
243 case XFLEX_SET_SRC_COUNTER_FPD:
244 reg = flexpm->counterid_fpd;
245 domain = FPM_FPD;
246 ret = kstrtou32(buf, 0, &val);
247 if (ret < 0)
248 goto exit_unlock;
249
250 for (src = 0; src < FPM_NUM_COUNTERS; src++) {
251 reg = reg | FPM_SRC | (src << FPM_PROBE_SHIFT);
252 ret = zynqmp_pm_probe_counter_write(domain, reg, val);
253 if (ret < 0) {
254 dev_err(dev, "Counter write error %d\n", ret);
255 goto exit_unlock;
256 }
257 }
258 break;
259
260 case XFLEX_SET_COUNTER_FPD:
261 ret = kstrtou32(buf, 0, &val);
262 if (ret < 0)
263 goto exit_unlock;
264
265 flexpm->counterid_fpd = val;
266 reset_default(dev, val, FPM_FPD);
267 break;
268
269 case XFLEX_GET_COUNTER_FPD_WRRSP:
270 reg = flexpm->counterid_fpd | FPM_WRRSP_L | FPM_VAL;
271 domain = FPM_FPD;
272
273 break;
274
275 case XFLEX_GET_COUNTER_FPD_WRREQ:
276 reg = flexpm->counterid_fpd | FPM_WRREQ_L | FPM_VAL;
277 domain = FPM_FPD;
278
279 break;
280
281 case XFLEX_GET_COUNTER_FPD_RDRSP:
282 reg = flexpm->counterid_fpd | FPM_RDRSP_L | FPM_VAL;
283 domain = FPM_FPD;
284
285 break;
286
287 case XFLEX_GET_COUNTER_FPD_RDREQ:
288 reg = flexpm->counterid_fpd | FPM_RDREQ_L | FPM_VAL;
289 domain = FPM_FPD;
290
291 break;
292
293 default:
294 dev_err(dev, "Invalid option\n");
295 break;
296 }
297
298 ret = zynqmp_pm_probe_counter_read(domain, reg, &pm_api_ret[0]);
299
300 if (ret < 0) {
301 dev_err(dev, "Counter read error %d\n", ret);
302 return ret;
303 }
304 mutex_unlock(&flexpm->mutex);
305 return pm_api_ret[1];
306
307 exit_unlock:
308 mutex_unlock(&flexpm->mutex);
309 return ret;
310 }
311
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 1 month
[xlnx:xlnx_rebase_v5.10 917/1761] drivers/misc/jesd204b/jesd_phy.c:97:6: warning: variable 'pll' set but not used
by kernel test robot
tree: https://github.com/Xilinx/linux-xlnx xlnx_rebase_v5.10
head: e14d4574ca81a569ee6d07e03271f2ae2dad38e4
commit: 99ac99c4c6134cc12abee1f845a897eafb125ba3 [917/1761] misc: jesd204b driver support
config: m68k-randconfig-r014-20210812 (attached as .config)
compiler: m68k-linux-gcc (GCC) 10.3.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://github.com/Xilinx/linux-xlnx/commit/99ac99c4c6134cc12abee1f845a89...
git remote add xlnx https://github.com/Xilinx/linux-xlnx
git fetch --no-tags xlnx xlnx_rebase_v5.10
git checkout 99ac99c4c6134cc12abee1f845a897eafb125ba3
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-10.3.0 make.cross ARCH=m68k
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All warnings (new ones prefixed by >>):
drivers/misc/jesd204b/jesd_phy.c: In function 'read_plls':
>> drivers/misc/jesd204b/jesd_phy.c:97:6: warning: variable 'pll' set but not used [-Wunused-but-set-variable]
97 | int pll = st->pll;
| ^~~
drivers/misc/jesd204b/jesd_phy.c: At top level:
>> drivers/misc/jesd204b/jesd_phy.c:172:6: warning: no previous prototype for 'jesd204_phy_set_speed' [-Wmissing-prototypes]
172 | void jesd204_phy_set_speed(struct jesd204b_phy_state *st, u32 band)
| ^~~~~~~~~~~~~~~~~~~~~
vim +/pll +97 drivers/misc/jesd204b/jesd_phy.c
93
94 static void read_plls(struct jesd204b_phy_state *st)
95 {
96 int i;
> 97 int pll = st->pll;
98 u32 no_of_common_drp_interfaces = 1;
99
100 if (st->pll == CPLL)
101 no_of_common_drp_interfaces = jesd204b_phy_read(
102 st, NR_TRANS_DRP_INTERFACES);
103 else
104 no_of_common_drp_interfaces = jesd204b_phy_read(
105 st, NR_COMMON_DRP_INTERFACES);
106
107 for (i = 0; i < no_of_common_drp_interfaces; i++) {
108 jesd204b_phy_write(st, CHANNEL_XCVR_SEL, i);
109 pll = jesd204b_phy_read(st, CHANNEL_XCVR_TXPLL);
110 pll = jesd204b_phy_read(st, CHANNEL_XCVR_RXPLL);
111 }
112 }
113
114 static void configure_plls(struct jesd204b_phy_state *st, u32 pll)
115 {
116 int i;
117 u32 no_of_common_drp_interfaces;
118
119 if (pll == CPLL)
120 no_of_common_drp_interfaces = jesd204b_phy_read(
121 st, NR_TRANS_DRP_INTERFACES);
122 else
123 no_of_common_drp_interfaces = jesd204b_phy_read(
124 st, NR_COMMON_DRP_INTERFACES);
125
126 for (i = 0; i < no_of_common_drp_interfaces; i++) {
127 jesd204b_phy_write(st, CHANNEL_XCVR_SEL, i);
128 jesd204b_phy_write(st, CHANNEL_XCVR_TXPLL, pll);
129 jesd204b_phy_write(st, CHANNEL_XCVR_RXPLL, pll);
130 }
131 }
132
133 static void configure_channel_drp(struct jesd204b_phy_state *st, u32 setting)
134 {
135 u32 i, j, addr, temp, no_of_common_drp_interfaces;
136 u32 no_channel_drp_reg = GTX7S_QPLL_NUM_CHANNEL_DRP_REGS;
137
138 no_of_common_drp_interfaces = jesd204b_phy_read(
139 st, NR_TRANS_DRP_INTERFACES);
140
141 if (st->pll == CPLL)
142 no_channel_drp_reg = GTX7S_CPLL_NUM_CHANNEL_DRP_REGS;
143 for (i = 0; i < no_of_common_drp_interfaces; i++) {
144 jesd204b_phy_write(st, CHANNEL_DRP_BASE, i);
145 for (j = 0; j < no_channel_drp_reg; j++) {
146 /* Get the register address */
147 if (st->pll == QPLL) {
148 addr = get_gtx7s_qpll_address_lut(j);
149
150 /* Read the register */
151 temp = read_channel_drp_reg(st, addr);
152
153 temp &= (0xFFFF ^ (get_gtx7s_qpll_mask_lut(j)));
154 temp |= ((get_gtx7s_qpll_param_lut(j, setting)
155 << get_gtx7s_qpll_offset_lut(j))
156 & get_gtx7s_qpll_mask_lut(j));
157 } else {
158 addr = get_gtx7s_cpll_address_lut(j);
159
160 temp = read_channel_drp_reg(st, addr);
161
162 temp &= (0xFFFF ^ (get_gtx7s_cpll_mask_lut(j)));
163 temp |= ((get_gtx7s_cpll_param_lut(j, setting)
164 << get_gtx7s_cpll_offset_lut(j))
165 & get_gtx7s_cpll_mask_lut(j));
166 }
167 write_channel_drp_reg(st, addr, temp);
168 }
169 }
170 }
171
> 172 void jesd204_phy_set_speed(struct jesd204b_phy_state *st, u32 band)
173 {
174 /* make sure we have the correct PLL's selected. */
175 configure_channel_drp(st, band);
176 }
177
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 1 month
[xlnx:xlnx_rebase_v5.10 861/1760] drivers/hwmon/pmbus/tps544.c:67:9: error: too few arguments to function 'pmbus_read_word_data'
by kernel test robot
tree: https://github.com/Xilinx/linux-xlnx xlnx_rebase_v5.10
head: bf98c1493fb23bfd7e2678498b7e337ce2cd1d53
commit: 0bae0f6f49084612f2df5dc148733573fc96f863 [861/1760] pmbus: Add new tps544 power regulator driver
config: m68k-randconfig-r014-20210812 (attached as .config)
compiler: m68k-linux-gcc (GCC) 10.3.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://github.com/Xilinx/linux-xlnx/commit/0bae0f6f49084612f2df5dc148733...
git remote add xlnx https://github.com/Xilinx/linux-xlnx
git fetch --no-tags xlnx xlnx_rebase_v5.10
git checkout 0bae0f6f49084612f2df5dc148733573fc96f863
# save the attached .config to linux build tree
mkdir build_dir
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-10.3.0 make.cross O=build_dir ARCH=m68k SHELL=/bin/bash drivers/hwmon/pmbus/ drivers/irqchip/ drivers/misc/
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All errors (new ones prefixed by >>):
drivers/hwmon/pmbus/tps544.c: In function 'tps544_read_word_data':
>> drivers/hwmon/pmbus/tps544.c:67:9: error: too few arguments to function 'pmbus_read_word_data'
67 | return pmbus_read_word_data(client, page, reg);
| ^~~~~~~~~~~~~~~~~~~~
In file included from drivers/hwmon/pmbus/tps544.c:16:
drivers/hwmon/pmbus/pmbus.h:479:5: note: declared here
479 | int pmbus_read_word_data(struct i2c_client *client, int page, int phase,
| ^~~~~~~~~~~~~~~~~~~~
drivers/hwmon/pmbus/tps544.c: In function 'tps544_probe':
>> drivers/hwmon/pmbus/tps544.c:287:23: error: assignment to 'int (*)(struct i2c_client *, int, int, int)' from incompatible pointer type 'int (*)(struct i2c_client *, int, int)' [-Werror=incompatible-pointer-types]
287 | info->read_word_data = tps544_read_word_data;
| ^
>> drivers/hwmon/pmbus/tps544.c:320:32: error: passing argument 2 of 'pmbus_do_probe' from incompatible pointer type [-Werror=incompatible-pointer-types]
320 | return pmbus_do_probe(client, id, info);
| ^~
| |
| const struct i2c_device_id *
In file included from drivers/hwmon/pmbus/tps544.c:16:
drivers/hwmon/pmbus/pmbus.h:492:73: note: expected 'struct pmbus_driver_info *' but argument is of type 'const struct i2c_device_id *'
492 | int pmbus_do_probe(struct i2c_client *client, struct pmbus_driver_info *info);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
>> drivers/hwmon/pmbus/tps544.c:320:9: error: too many arguments to function 'pmbus_do_probe'
320 | return pmbus_do_probe(client, id, info);
| ^~~~~~~~~~~~~~
In file included from drivers/hwmon/pmbus/tps544.c:16:
drivers/hwmon/pmbus/pmbus.h:492:5: note: declared here
492 | int pmbus_do_probe(struct i2c_client *client, struct pmbus_driver_info *info);
| ^~~~~~~~~~~~~~
drivers/hwmon/pmbus/tps544.c: In function 'tps544_read_word_data':
drivers/hwmon/pmbus/tps544.c:68:1: error: control reaches end of non-void function [-Werror=return-type]
68 | }
| ^
cc1: some warnings being treated as errors
vim +/pmbus_read_word_data +67 drivers/hwmon/pmbus/tps544.c
64
65 static int tps544_read_word_data(struct i2c_client *client, int page, int reg)
66 {
> 67 return pmbus_read_word_data(client, page, reg);
68 }
69
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 1 month
[avpatel:riscv_kvm_aia_v1 35/41] drivers/irqchip/irq-riscv-imsic.c:269:12: error: 'struct imsic_priv' has no member named 'base_ipi'
by kernel test robot
tree: https://github.com/avpatel/linux.git riscv_kvm_aia_v1
head: 3b8557c56e78d27255d6da1da59f40b35b8c4a31
commit: b6d8139e22dcf8bcfe9a4c89b1dde6c59591eab8 [35/41] irqchip: Add RISC-V incoming MSI controller driver
config: riscv-randconfig-p001-20210811 (attached as .config)
compiler: riscv32-linux-gcc (GCC) 10.3.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://github.com/avpatel/linux/commit/b6d8139e22dcf8bcfe9a4c89b1dde6c59...
git remote add avpatel https://github.com/avpatel/linux.git
git fetch --no-tags avpatel riscv_kvm_aia_v1
git checkout b6d8139e22dcf8bcfe9a4c89b1dde6c59591eab8
# save the attached .config to linux build tree
mkdir build_dir
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-10.3.0 make.cross O=build_dir ARCH=riscv SHELL=/bin/bash drivers/
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All errors (new ones prefixed by >>):
drivers/irqchip/irq-riscv-imsic.c: In function 'imsic_ids_local_sync':
>> drivers/irqchip/irq-riscv-imsic.c:269:12: error: 'struct imsic_priv' has no member named 'base_ipi'
269 | if ((priv->base_ipi <= i) &&
| ^~
drivers/irqchip/irq-riscv-imsic.c:270:17: error: 'struct imsic_priv' has no member named 'base_ipi'
270 | (i < (priv->base_ipi + priv->nr_ipis)))
| ^~
>> drivers/irqchip/irq-riscv-imsic.c:270:36: error: 'struct imsic_priv' has no member named 'nr_ipis'; did you mean 'nr_ids'?
270 | (i < (priv->base_ipi + priv->nr_ipis)))
| ^~~~~~~
| nr_ids
vim +269 drivers/irqchip/irq-riscv-imsic.c
262
263 static void imsic_ids_local_sync(struct imsic_priv *priv)
264 {
265 int i;
266
267 raw_spin_lock(&priv->ids_lock);
268 for (i = 1; i <= priv->nr_ids; i++) {
> 269 if ((priv->base_ipi <= i) &&
> 270 (i < (priv->base_ipi + priv->nr_ipis)))
271 continue;
272 if (test_bit(i, priv->ids_enabled_bimap))
273 csr_write(CSR_SETEIENUM, i);
274 else
275 csr_write(CSR_CLREIENUM, i);
276 }
277 raw_spin_unlock(&priv->ids_lock);
278 }
279
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 1 month
[jimc:dd-drm-next 10/11] lib/test_dynamic_debug.c:185:16: error: too few arguments to function 'dynamic_debug_register_tracer'
by kernel test robot
tree: https://github.com/jimc/linux.git dd-drm-next
head: 1658a41496c77287b265b1de6dfe79a9a65fef09
commit: 03e1630af27012c72b182bcada6bb8f194ae6d75 [10/11] dyndbg: RFC add tracer facility RFC
config: mips-allyesconfig (attached as .config)
compiler: mips-linux-gcc (GCC) 10.3.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://github.com/jimc/linux/commit/03e1630af27012c72b182bcada6bb8f194ae...
git remote add jimc https://github.com/jimc/linux.git
git fetch --no-tags jimc dd-drm-next
git checkout 03e1630af27012c72b182bcada6bb8f194ae6d75
# save the attached .config to linux build tree
mkdir build_dir
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-10.3.0 make.cross O=build_dir ARCH=mips SHELL=/bin/bash lib/
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All errors (new ones prefixed by >>):
lib/test_dynamic_debug.c: In function 'do_register_test':
lib/test_dynamic_debug.c:185:49: warning: passing argument 1 of 'dynamic_debug_register_tracer' discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
185 | match_count = dynamic_debug_register_tracer(tst->qry, tracer);
| ~~~^~~~~
In file included from include/linux/printk.h:456,
from include/linux/kernel.h:19,
from include/linux/list.h:9,
from include/linux/module.h:12,
from lib/test_dynamic_debug.c:18:
include/linux/dynamic_debug.h:297:41: note: expected 'char *' but argument is of type 'const char *'
297 | int dynamic_debug_register_tracer(char *query, const char *mod,
| ~~~~~~^~~~~
>> lib/test_dynamic_debug.c:185:16: error: too few arguments to function 'dynamic_debug_register_tracer'
185 | match_count = dynamic_debug_register_tracer(tst->qry, tracer);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from include/linux/printk.h:456,
from include/linux/kernel.h:19,
from include/linux/list.h:9,
from include/linux/module.h:12,
from lib/test_dynamic_debug.c:18:
include/linux/dynamic_debug.h:297:5: note: declared here
297 | int dynamic_debug_register_tracer(char *query, const char *mod,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/test_dynamic_debug.c: In function 'test_dynamic_debug_init':
>> lib/test_dynamic_debug.c:212:53: error: passing argument 2 of 'dynamic_debug_register_tracer' from incompatible pointer type [-Werror=incompatible-pointer-types]
212 | "module test_dynamic_debug func do_debugging +T", my_tracer);
| ^~~~~~~~~
| |
| int (*)(const char *, char *, char *, struct va_format *)
In file included from include/linux/printk.h:456,
from include/linux/kernel.h:19,
from include/linux/list.h:9,
from include/linux/module.h:12,
from lib/test_dynamic_debug.c:18:
include/linux/dynamic_debug.h:297:60: note: expected 'const char *' but argument is of type 'int (*)(const char *, char *, char *, struct va_format *)'
297 | int dynamic_debug_register_tracer(char *query, const char *mod,
| ~~~~~~~~~~~~^~~
lib/test_dynamic_debug.c:211:16: error: too few arguments to function 'dynamic_debug_register_tracer'
211 | match_count = dynamic_debug_register_tracer(
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from include/linux/printk.h:456,
from include/linux/kernel.h:19,
from include/linux/list.h:9,
from include/linux/module.h:12,
from lib/test_dynamic_debug.c:18:
include/linux/dynamic_debug.h:297:5: note: declared here
297 | int dynamic_debug_register_tracer(char *query, const char *mod,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/test_dynamic_debug.c:217:35: error: passing argument 2 of 'dynamic_debug_register_tracer' from incompatible pointer type [-Werror=incompatible-pointer-types]
217 | "module test_dynamic_debug +T", my_tracer);
| ^~~~~~~~~
| |
| int (*)(const char *, char *, char *, struct va_format *)
In file included from include/linux/printk.h:456,
from include/linux/kernel.h:19,
from include/linux/list.h:9,
from include/linux/module.h:12,
from lib/test_dynamic_debug.c:18:
include/linux/dynamic_debug.h:297:60: note: expected 'const char *' but argument is of type 'int (*)(const char *, char *, char *, struct va_format *)'
297 | int dynamic_debug_register_tracer(char *query, const char *mod,
| ~~~~~~~~~~~~^~~
lib/test_dynamic_debug.c:216:16: error: too few arguments to function 'dynamic_debug_register_tracer'
216 | match_count = dynamic_debug_register_tracer(
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from include/linux/printk.h:456,
from include/linux/kernel.h:19,
from include/linux/list.h:9,
from include/linux/module.h:12,
from lib/test_dynamic_debug.c:18:
include/linux/dynamic_debug.h:297:5: note: declared here
297 | int dynamic_debug_register_tracer(char *query, const char *mod,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> lib/test_dynamic_debug.c:228:53: error: passing argument 2 of 'dynamic_debug_unregister_tracer' from incompatible pointer type [-Werror=incompatible-pointer-types]
228 | "module test_dynamic_debug func do_debugging -T", my_tracer);
| ^~~~~~~~~
| |
| int (*)(const char *, char *, char *, struct va_format *)
In file included from include/linux/printk.h:456,
from include/linux/kernel.h:19,
from include/linux/list.h:9,
from include/linux/module.h:12,
from lib/test_dynamic_debug.c:18:
include/linux/dynamic_debug.h:309:68: note: expected 'const char *' but argument is of type 'int (*)(const char *, char *, char *, struct va_format *)'
309 | int dynamic_debug_unregister_tracer(const char *query, const char *mod,
| ~~~~~~~~~~~~^~~
>> lib/test_dynamic_debug.c:227:16: error: too few arguments to function 'dynamic_debug_unregister_tracer'
227 | match_count = dynamic_debug_unregister_tracer(
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from include/linux/printk.h:456,
from include/linux/kernel.h:19,
from include/linux/list.h:9,
from include/linux/module.h:12,
from lib/test_dynamic_debug.c:18:
include/linux/dynamic_debug.h:309:5: note: declared here
309 | int dynamic_debug_unregister_tracer(const char *query, const char *mod,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/test_dynamic_debug.c:235:53: error: passing argument 2 of 'dynamic_debug_unregister_tracer' from incompatible pointer type [-Werror=incompatible-pointer-types]
235 | "module test_dynamic_debug func do_debugging -T", my_tracer);
| ^~~~~~~~~
| |
| int (*)(const char *, char *, char *, struct va_format *)
In file included from include/linux/printk.h:456,
from include/linux/kernel.h:19,
from include/linux/list.h:9,
from include/linux/module.h:12,
from lib/test_dynamic_debug.c:18:
include/linux/dynamic_debug.h:309:68: note: expected 'const char *' but argument is of type 'int (*)(const char *, char *, char *, struct va_format *)'
309 | int dynamic_debug_unregister_tracer(const char *query, const char *mod,
| ~~~~~~~~~~~~^~~
lib/test_dynamic_debug.c:234:16: error: too few arguments to function 'dynamic_debug_unregister_tracer'
234 | match_count = dynamic_debug_unregister_tracer(
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from include/linux/printk.h:456,
from include/linux/kernel.h:19,
from include/linux/list.h:9,
from include/linux/module.h:12,
from lib/test_dynamic_debug.c:18:
include/linux/dynamic_debug.h:309:5: note: declared here
309 | int dynamic_debug_unregister_tracer(const char *query, const char *mod,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
At top level:
lib/test_dynamic_debug.c:181:13: warning: 'do_register_test' defined but not used [-Wunused-function]
181 | static void do_register_test(struct register_test *tst, void *tracer)
| ^~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
vim +/dynamic_debug_register_tracer +185 lib/test_dynamic_debug.c
> 18 #include <linux/module.h>
19
20 static int __bad_tracer;
21
22 static int trace_ct = 0;
23 static int test_ct = 0;
24 static int errors = 0;
25 static int verbose = 0;
26
27
28 module_param_named(use_bad_tracer, __bad_tracer, int, 0644);
29 MODULE_PARM_DESC(use_bad_tracer,
30 "use broken tracer, recursing with pr_debug\n"
31 "\tonly works at modprobe time\n");
32
33 static int (*my_tracer)(const char *decorator, char *prefix, char *label, struct va_format *vaf);
34
35 static int good_tracer(const char *decorator, char *prefix, char *label, struct va_format *vaf)
36 {
37 trace_ct++;
38 if (verbose)
39 pr_notice("my_tracer: %pV", vaf);
40 return 0;
41 }
42
43 static int bad_tracer(const char *decorator, char *prefix, char *label, struct va_format *vaf)
44 {
45 /* dont try pr_debug, it recurses back here */
46 pr_debug("oops! recursion, crash?\n");
47 return 0;
48 }
49
50 static void pick_tracer(void)
51 {
52 if (__bad_tracer)
53 my_tracer = bad_tracer;
54 else
55 my_tracer = good_tracer;
56 }
57
58 static int expect_count(int want, const char *story)
59 {
60 test_ct++;
61 if (want != trace_ct) {
62 pr_err("expect_count: want %d, got %d: %s\n", want, trace_ct, story);
63 errors++;
64 trace_ct = 0;
65 return 1;
66 }
67 pr_info("pass %d, hits %d, on \"%s\"\n", test_ct, want, story);
68 trace_ct = 0;
69 return 0;
70 }
71
72 /* call pr_debug (4 * reps) + 2 times, for tracer side-effects */
73 static void do_debugging(int reps)
74 {
75 int i;
76
77 pr_debug("Entry:\n");
78 pr_info(" do_debugging %d time(s)\n", reps);
79 for (i = 0; i < reps; i++) {
80 pr_debug("hi: %d\n", i);
81 pr_debug("mid: %d\n", i);
82 pr_debug("low: %d\n", i);
83 pr_debug("low:lower: %d subcategory test\n", i);
84 }
85 pr_debug("Exit:\n");
86 }
87
88 static void expect_matches(int want, int got, const char *story)
89 {
90 // todo: got <0 are errors, bubbled up
91 if (got != want)
92 pr_warn(" match_count wrong: want %d got %d %s\n", want, got, story);
93 else
94 pr_info(" ok: %d matches by \"%s\"\n", want, story);
95
96 // ? count errs ? separately ?
97 }
98
99 static int report(char *who)
100 {
101 if (errors)
102 pr_err("%s failed %d of %d tests\n", who, errors, test_ct);
103 else
104 pr_info("%s passed %d tests\n", who, test_ct);
105 return errors;
106 }
107
108 struct exec_test {
109 int matches;
110 int loops;
111 int hits;
112 const char *mod;
113 const char *qry;
114 };
115
116 static void do_exec_test(struct exec_test *tst)
117 {
118 int match_count;
119
120 match_count = dynamic_debug_exec_queries(tst->qry, tst->mod);
121 expect_matches(tst->matches, match_count, tst->qry);
122 do_debugging(tst->loops);
123 expect_count(tst->hits, tst->qry);
124 }
125
126 static const char my_mod[] = "test_dynamic_debug";
127
128 /* these tests rely on register stuff having been done ?? */
129 struct exec_test exec_tests[] = {
130
131 /* standard use is my_mod, for `modprobe $module dyndbg=+p` */
132
133 /* no modification probe */
134 { 6, 2, 0, my_mod, "func do_debugging +_" },
135
136 /* use original single string query style */
137 { 6, 3, 0, NULL, "module test_dynamic_debug func do_debugging -T" },
138
139 /* this is mildly preferred */
140 { 6, 3, 0, my_mod, "func do_debugging -T" },
141
142 /* enable all DUT */
143 { 6, 4, 18, my_mod, "func do_debugging +T" },
144
145 /* disable 1 call */
146 { 1, 4, 14, my_mod, "format '^hi:' -T" },
147
148 /* disable 1 call */
149 { 1, 4, 10, my_mod, "format '^mid:' -T" },
150
151 /* repeat same disable */
152 { 1, 4, 10, my_mod, "format '^mid:' -T" },
153
154 /* repeat same disable, diff run ct */
155 { 1, 5, 12, my_mod, "format '^mid:' -T" },
156
157 /* include subclass */
158 { 2, 4, 2, my_mod, "format '^low:' -T" },
159
160 /* re-disable, exclude subclass */
161 { 1, 4, 2, my_mod, "format '^low: ' -T" },
162
163 /* enable, exclude subclass */
164 { 1, 4, 6, my_mod, "format '^low: ' +T" },
165
166 /* enable the subclass */
167 { 1, 4, 10, my_mod, "format '^low:lower:' +T" },
168
169 /* enable the subclass */
170 { 1, 6, 14, my_mod, "format '^low:lower:' +T" },
171 };
172
173 struct register_test {
174 int matches;
175 int loops;
176 int hits;
177 // const char *mod; maybe should have
178 const char *qry;
179 };
180
181 static void do_register_test(struct register_test *tst, void *tracer)
182 {
183 int match_count;
184
> 185 match_count = dynamic_debug_register_tracer(tst->qry, tracer);
186 expect_matches(tst->matches, match_count, tst->qry);
187 do_debugging(tst->loops);
188 expect_count(tst->hits, tst->qry);
189 }
190
191 /* these tests rely on register stuff having been done ?? */
192 struct register_test register_tests[] = {
193
194 { 6, 3, 0, "module test_dynamic_debug func do_debugging +T" },
195
196 { 11, 3, 0, "module test_dynamic_debug +T" },
197
198 };
199
200 static int __init test_dynamic_debug_init(void)
201 {
202 int match_count; /* rc from ddebug_exec_queries. meh. */
203 int i;
204
205 pick_tracer();
206
207 pr_debug("Entry:\n");
208 do_debugging(3);
209 expect_count(0, "nothing unless dyndbg=+T at modprobe");
210
211 match_count = dynamic_debug_register_tracer(
> 212 "module test_dynamic_debug func do_debugging +T", my_tracer);
213 expect_matches(6, match_count,
214 "tracing do_debugging()s pr_debugs");
215
216 match_count = dynamic_debug_register_tracer(
217 "module test_dynamic_debug +T", my_tracer);
218 expect_matches(11, match_count,
219 "tracing whole module's pr_debugs");
220
221 do_debugging(2);
222 expect_count(10, "do_debugging 2 times after +T");
223
224 for (i = 0; i < ARRAY_SIZE(exec_tests); i++)
225 do_exec_test(&exec_tests[i]);
226
> 227 match_count = dynamic_debug_unregister_tracer(
> 228 "module test_dynamic_debug func do_debugging -T", my_tracer);
229 expect_matches(6, match_count,
230 "unregister do_debugging()s tracers");
231 do_debugging(4);
232 expect_count(0, "everything is off");
233
234 match_count = dynamic_debug_unregister_tracer(
235 "module test_dynamic_debug func do_debugging -T", my_tracer);
236
237 expect_matches(6, match_count,
238 "re-unregister, same count, not a change count");
239 report("init");
240 pr_debug("Exit:\n");
241 return 0;
242 }
243
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 1 month
Re: [PATCH v4 1/5] block: Add concurrent positioning ranges support
by kernel test robot
Hi Damien,
I love your patch! Perhaps something to improve:
[auto build test WARNING on block/for-next]
[also build test WARNING on mkp-scsi/for-next scsi/for-next linus/master v5.14-rc5 next-20210811]
[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/Damien-Le-Moal/Initial-support-f...
base: https://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git for-next
config: hexagon-randconfig-r041-20210810 (attached as .config)
compiler: clang version 12.0.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://github.com/0day-ci/linux/commit/2055ecb9ea719e82d4db70d303fdac48c...
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Damien-Le-Moal/Initial-support-for-multi-actuator-HDDs/20210812-102824
git checkout 2055ecb9ea719e82d4db70d303fdac48c33acd47
# save the attached .config to linux build tree
mkdir build_dir
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross O=build_dir ARCH=hexagon SHELL=/bin/bash
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All warnings (new ones prefixed by >>):
>> block/blk-cranges.c:111: warning: expecting prototype for blk_register_cranges(). Prototype was for disk_register_cranges() instead
vim +111 block/blk-cranges.c
99
100 /**
101 * blk_register_cranges - register with sysfs a set of concurrent ranges
102 * @disk: Target disk
103 * @new_cranges: New set of concurrent ranges
104 *
105 * Register with sysfs a set of concurrent ranges for @disk. If @new_cranges
106 * is not NULL, this set of concurrent ranges is registered and the
107 * old set specified by q->cranges is unregistered. Otherwise, q->cranges
108 * is registered if it is not already.
109 */
110 int disk_register_cranges(struct gendisk *disk, struct blk_cranges *new_cranges)
> 111 {
112 struct request_queue *q = disk->queue;
113 struct blk_cranges *cranges;
114 int i, ret;
115
116 lockdep_assert_held(&q->sysfs_dir_lock);
117 lockdep_assert_held(&q->sysfs_lock);
118
119 /* If a new range set is specified, unregister the old one */
120 if (new_cranges) {
121 if (q->cranges)
122 disk_unregister_cranges(disk);
123 q->cranges = new_cranges;
124 }
125
126 cranges = q->cranges;
127 if (!cranges)
128 return 0;
129
130 /*
131 * At this point, cranges is the new set of sector ranges that needs
132 * to be registered with sysfs.
133 */
134 WARN_ON(cranges->sysfs_registered);
135 ret = kobject_init_and_add(&cranges->kobj, &blk_cranges_ktype,
136 &q->kobj, "%s", "cranges");
137 if (ret) {
138 q->cranges = NULL;
139 kfree(cranges);
140 return ret;
141 }
142
143 for (i = 0; i < cranges->nr_ranges; i++) {
144 cranges->ranges[i].queue = q;
145 ret = kobject_init_and_add(&cranges->ranges[i].kobj,
146 &blk_crange_ktype, &cranges->kobj,
147 "%d", i);
148 if (ret) {
149 while (--i >= 0)
150 kobject_del(&cranges->ranges[i].kobj);
151 kobject_del(&cranges->kobj);
152 kobject_put(&cranges->kobj);
153 return ret;
154 }
155 }
156
157 cranges->sysfs_registered = true;
158
159 return 0;
160 }
161
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 1 month