Re: [PATCH v10 5/6] PCI: endpoint: makeup pci-epf-vntb.c

From: kernel test robot
Date: Sun Sep 18 2022 - 08:54:38 EST


Hi Frank,

I love your patch! Perhaps something to improve:

[auto build test WARNING on jonmason-ntb/ntb-next]
[also build test WARNING on driver-core/driver-core-testing linus/master v6.0-rc5 next-20220916]
[cannot apply to tip/irq/core]
[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/Frank-Li/platform-msi-export-symbol-platform_msi_create_irq_domain/20220914-060955
base: https://github.com/jonmason/ntb ntb-next
config: mips-randconfig-s042-20220918 (https://download.01.org/0day-ci/archive/20220918/202209182035.SS1p5KkG-lkp@xxxxxxxxx/config)
compiler: mips-linux-gcc (GCC) 12.1.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# apt-get install sparse
# sparse version: v0.6.4-39-gce1a6720-dirty
# https://github.com/intel-lab-lkp/linux/commit/c0b811e4bf3a50a612ed143d284880e09790eff5
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Frank-Li/platform-msi-export-symbol-platform_msi_create_irq_domain/20220914-060955
git checkout c0b811e4bf3a50a612ed143d284880e09790eff5
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=mips SHELL=/bin/bash

If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@xxxxxxxxx>

sparse warnings: (new ones prefixed by >>)
>> drivers/pci/endpoint/functions/pci-epf-vntb.c:258:47: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *mem @@ got void * @@
drivers/pci/endpoint/functions/pci-epf-vntb.c:258:47: sparse: expected void const volatile [noderef] __iomem *mem
drivers/pci/endpoint/functions/pci-epf-vntb.c:258:47: sparse: got void *
>> drivers/pci/endpoint/functions/pci-epf-vntb.c:260:47: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *mem @@ got void * @@
drivers/pci/endpoint/functions/pci-epf-vntb.c:260:47: sparse: expected void volatile [noderef] __iomem *mem
drivers/pci/endpoint/functions/pci-epf-vntb.c:260:47: sparse: got void *
drivers/pci/endpoint/functions/pci-epf-vntb.c:560:66: sparse: sparse: incorrect type in argument 3 (different address spaces) @@ expected void [noderef] __iomem *virt_addr @@ got void *[assigned] mw_addr @@
drivers/pci/endpoint/functions/pci-epf-vntb.c:560:66: sparse: expected void [noderef] __iomem *virt_addr
drivers/pci/endpoint/functions/pci-epf-vntb.c:560:66: sparse: got void *[assigned] mw_addr
drivers/pci/endpoint/functions/pci-epf-vntb.c:1106:33: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected void [noderef] __iomem *base @@ got struct epf_ntb_ctrl *reg @@
drivers/pci/endpoint/functions/pci-epf-vntb.c:1106:33: sparse: expected void [noderef] __iomem *base
drivers/pci/endpoint/functions/pci-epf-vntb.c:1106:33: sparse: got struct epf_ntb_ctrl *reg
drivers/pci/endpoint/functions/pci-epf-vntb.c:1117:33: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected void [noderef] __iomem *base @@ got struct epf_ntb_ctrl *reg @@
drivers/pci/endpoint/functions/pci-epf-vntb.c:1117:33: sparse: expected void [noderef] __iomem *base
drivers/pci/endpoint/functions/pci-epf-vntb.c:1117:33: sparse: got struct epf_ntb_ctrl *reg
drivers/pci/endpoint/functions/pci-epf-vntb.c:1128:33: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected void [noderef] __iomem *base @@ got struct epf_ntb_ctrl *reg @@
drivers/pci/endpoint/functions/pci-epf-vntb.c:1128:33: sparse: expected void [noderef] __iomem *base
drivers/pci/endpoint/functions/pci-epf-vntb.c:1128:33: sparse: got struct epf_ntb_ctrl *reg
drivers/pci/endpoint/functions/pci-epf-vntb.c:1140:33: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected void [noderef] __iomem *base @@ got struct epf_ntb_ctrl *reg @@
drivers/pci/endpoint/functions/pci-epf-vntb.c:1140:33: sparse: expected void [noderef] __iomem *base
drivers/pci/endpoint/functions/pci-epf-vntb.c:1140:33: sparse: got struct epf_ntb_ctrl *reg

vim +258 drivers/pci/endpoint/functions/pci-epf-vntb.c

236
237 /**
238 * epf_ntb_cmd_handler() - Handle commands provided by the NTB Host
239 * @work: work_struct for the epf_ntb_epc
240 *
241 * Workqueue function that gets invoked for the two epf_ntb_epc
242 * periodically (once every 5ms) to see if it has received any commands
243 * from NTB host. The host can send commands to configure doorbell or
244 * configure memory window or to update link status.
245 */
246 static void epf_ntb_cmd_handler(struct work_struct *work)
247 {
248 struct epf_ntb_ctrl *ctrl;
249 u32 command, argument;
250 struct epf_ntb *ntb;
251 struct device *dev;
252 int ret;
253 int i;
254
255 ntb = container_of(work, struct epf_ntb, cmd_handler.work);
256
257 for (i = 1; i < ntb->db_count; i++) {
> 258 if (readl_relaxed(ntb->epf_db + i * ENTRY_SIZE)) {
259 ntb_db_event(&ntb->ntb, i);
> 260 writel(0, ntb->epf_db + i * ENTRY_SIZE);
261 }
262 }
263
264 ctrl = ntb->reg;
265 command = ctrl->command;
266 if (!command)
267 goto reset_handler;
268 argument = ctrl->argument;
269
270 ctrl->command = 0;
271 ctrl->argument = 0;
272
273 ctrl = ntb->reg;
274 dev = &ntb->epf->dev;
275
276 switch (command) {
277 case COMMAND_CONFIGURE_DOORBELL:
278 ctrl->command_status = COMMAND_STATUS_OK;
279 break;
280 case COMMAND_TEARDOWN_DOORBELL:
281 ctrl->command_status = COMMAND_STATUS_OK;
282 break;
283 case COMMAND_CONFIGURE_MW:
284 ret = epf_ntb_configure_mw(ntb, argument);
285 if (ret < 0)
286 ctrl->command_status = COMMAND_STATUS_ERROR;
287 else
288 ctrl->command_status = COMMAND_STATUS_OK;
289 break;
290 case COMMAND_TEARDOWN_MW:
291 epf_ntb_teardown_mw(ntb, argument);
292 ctrl->command_status = COMMAND_STATUS_OK;
293 break;
294 case COMMAND_LINK_UP:
295 ntb->linkup = true;
296 ret = epf_ntb_link_up(ntb, true);
297 if (ret < 0)
298 ctrl->command_status = COMMAND_STATUS_ERROR;
299 else
300 ctrl->command_status = COMMAND_STATUS_OK;
301 goto reset_handler;
302 case COMMAND_LINK_DOWN:
303 ntb->linkup = false;
304 ret = epf_ntb_link_up(ntb, false);
305 if (ret < 0)
306 ctrl->command_status = COMMAND_STATUS_ERROR;
307 else
308 ctrl->command_status = COMMAND_STATUS_OK;
309 break;
310 default:
311 dev_err(dev, "UNKNOWN command: %d\n", command);
312 break;
313 }
314
315 reset_handler:
316 queue_delayed_work(kpcintb_workqueue, &ntb->cmd_handler,
317 msecs_to_jiffies(5));
318 }
319

--
0-DAY CI Kernel Test Service
https://01.org/lkp