All of lore.kernel.org
 help / color / mirror / Atom feed
* [char-misc:char-misc-testing 56/61] drivers/uio/uio_fsl_elbc_gpcm.c:323:19: sparse: sparse: unsigned value that used to be signed checked against zero?
@ 2026-08-01 11:39 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2026-08-01 11:39 UTC (permalink / raw)
  To: oe-kbuild; +Cc: lkp

:::::: 
:::::: Manual check reason: "low confidence static check warning: drivers/uio/uio_fsl_elbc_gpcm.c:323:19: sparse: sparse: unsigned value that used to be signed checked against zero?"
:::::: 

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
TO: Rosen Penev <rosenp@gmail.com>
CC: "Greg Kroah-Hartman" <gregkh@linuxfoundation.org>

Hi Rosen,

FYI, the error/warning was bisected to this commit, please ignore it if it's irrelevant.

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc.git char-misc-testing
head:   220190f97da558e67cd01c62f1b84fe77b267a5a
commit: c8295feb756f5e3ccf02c14a90a2ee0aed95e409 [56/61] uio: fsl_elbc_gpcm: use platform helpers for resource and IRQ
:::::: branch date: 23 hours ago
:::::: commit date: 23 hours ago
config: powerpc-randconfig-r111-20260801 (https://download.01.org/0day-ci/archive/20260801/202608011915.yZ4ITuSe-lkp@intel.com/config)
compiler: powerpc-linux-gcc (GCC) 14.3.0
sparse: v0.6.5-rc1
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260801/202608011915.yZ4ITuSe-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@intel.com>
| Closes: https://lore.kernel.org/r/202608011915.yZ4ITuSe-lkp@intel.com/

sparse warnings: (new ones prefixed by >>)
   drivers/uio/uio_fsl_elbc_gpcm.c:85:53: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected struct fsl_lbc_bank *bank @@     got struct fsl_lbc_bank [noderef] __iomem * @@
   drivers/uio/uio_fsl_elbc_gpcm.c:85:53: sparse:     expected struct fsl_lbc_bank *bank
   drivers/uio/uio_fsl_elbc_gpcm.c:85:53: sparse:     got struct fsl_lbc_bank [noderef] __iomem *
   drivers/uio/uio_fsl_elbc_gpcm.c:89:43: sparse: sparse: incorrect type in argument 1 (different base types) @@     expected unsigned int const volatile [noderef] [usertype] __iomem *addr @@     got restricted __be32 * @@
   drivers/uio/uio_fsl_elbc_gpcm.c:89:43: sparse:     expected unsigned int const volatile [noderef] [usertype] __iomem *addr
   drivers/uio/uio_fsl_elbc_gpcm.c:89:43: sparse:     got restricted __be32 *
   drivers/uio/uio_fsl_elbc_gpcm.c:93:43: sparse: sparse: incorrect type in argument 1 (different base types) @@     expected unsigned int const volatile [noderef] [usertype] __iomem *addr @@     got restricted __be32 * @@
   drivers/uio/uio_fsl_elbc_gpcm.c:93:43: sparse:     expected unsigned int const volatile [noderef] [usertype] __iomem *addr
   drivers/uio/uio_fsl_elbc_gpcm.c:93:43: sparse:     got restricted __be32 *
   drivers/uio/uio_fsl_elbc_gpcm.c:104:53: sparse: sparse: incorrect type in initializer (different address spaces) @@     expected struct fsl_lbc_bank *bank @@     got struct fsl_lbc_bank [noderef] __iomem * @@
   drivers/uio/uio_fsl_elbc_gpcm.c:104:53: sparse:     expected struct fsl_lbc_bank *bank
   drivers/uio/uio_fsl_elbc_gpcm.c:104:53: sparse:     got struct fsl_lbc_bank [noderef] __iomem *
   drivers/uio/uio_fsl_elbc_gpcm.c:116:31: sparse: sparse: incorrect type in argument 1 (different base types) @@     expected unsigned int const volatile [noderef] [usertype] __iomem *addr @@     got restricted __be32 * @@
   drivers/uio/uio_fsl_elbc_gpcm.c:116:31: sparse:     expected unsigned int const volatile [noderef] [usertype] __iomem *addr
   drivers/uio/uio_fsl_elbc_gpcm.c:116:31: sparse:     got restricted __be32 *
   drivers/uio/uio_fsl_elbc_gpcm.c:117:31: sparse: sparse: incorrect type in argument 1 (different base types) @@     expected unsigned int const volatile [noderef] [usertype] __iomem *addr @@     got restricted __be32 * @@
   drivers/uio/uio_fsl_elbc_gpcm.c:117:31: sparse:     expected unsigned int const volatile [noderef] [usertype] __iomem *addr
   drivers/uio/uio_fsl_elbc_gpcm.c:117:31: sparse:     got restricted __be32 *
   drivers/uio/uio_fsl_elbc_gpcm.c:131:27: sparse: sparse: incorrect type in argument 1 (different base types) @@     expected unsigned int volatile [noderef] [usertype] __iomem *addr @@     got restricted __be32 * @@
   drivers/uio/uio_fsl_elbc_gpcm.c:131:27: sparse:     expected unsigned int volatile [noderef] [usertype] __iomem *addr
   drivers/uio/uio_fsl_elbc_gpcm.c:131:27: sparse:     got restricted __be32 *
   drivers/uio/uio_fsl_elbc_gpcm.c:139:27: sparse: sparse: incorrect type in argument 1 (different base types) @@     expected unsigned int volatile [noderef] [usertype] __iomem *addr @@     got restricted __be32 * @@
   drivers/uio/uio_fsl_elbc_gpcm.c:139:27: sparse:     expected unsigned int volatile [noderef] [usertype] __iomem *addr
   drivers/uio/uio_fsl_elbc_gpcm.c:139:27: sparse:     got restricted __be32 *
   drivers/uio/uio_fsl_elbc_gpcm.c:345:46: sparse: sparse: incorrect type in argument 1 (different base types) @@     expected unsigned int const volatile [noderef] [usertype] __iomem *addr @@     got restricted __be32 [noderef] __iomem * @@
   drivers/uio/uio_fsl_elbc_gpcm.c:345:46: sparse:     expected unsigned int const volatile [noderef] [usertype] __iomem *addr
   drivers/uio/uio_fsl_elbc_gpcm.c:345:46: sparse:     got restricted __be32 [noderef] __iomem *
   drivers/uio/uio_fsl_elbc_gpcm.c:346:46: sparse: sparse: incorrect type in argument 1 (different base types) @@     expected unsigned int const volatile [noderef] [usertype] __iomem *addr @@     got restricted __be32 [noderef] __iomem * @@
   drivers/uio/uio_fsl_elbc_gpcm.c:346:46: sparse:     expected unsigned int const volatile [noderef] [usertype] __iomem *addr
   drivers/uio/uio_fsl_elbc_gpcm.c:346:46: sparse:     got restricted __be32 [noderef] __iomem *
   drivers/uio/uio_fsl_elbc_gpcm.c:375:34: sparse: sparse: incorrect type in argument 1 (different base types) @@     expected unsigned int volatile [noderef] [usertype] __iomem *addr @@     got restricted __be32 [noderef] __iomem * @@
   drivers/uio/uio_fsl_elbc_gpcm.c:375:34: sparse:     expected unsigned int volatile [noderef] [usertype] __iomem *addr
   drivers/uio/uio_fsl_elbc_gpcm.c:375:34: sparse:     got restricted __be32 [noderef] __iomem *
   drivers/uio/uio_fsl_elbc_gpcm.c:376:34: sparse: sparse: incorrect type in argument 1 (different base types) @@     expected unsigned int volatile [noderef] [usertype] __iomem *addr @@     got restricted __be32 [noderef] __iomem * @@
   drivers/uio/uio_fsl_elbc_gpcm.c:376:34: sparse:     expected unsigned int volatile [noderef] [usertype] __iomem *addr
   drivers/uio/uio_fsl_elbc_gpcm.c:376:34: sparse:     got restricted __be32 [noderef] __iomem *
>> drivers/uio/uio_fsl_elbc_gpcm.c:323:19: sparse: sparse: unsigned value that used to be signed checked against zero?
   drivers/uio/uio_fsl_elbc_gpcm.c:322:31: sparse: signed value source

vim +323 drivers/uio/uio_fsl_elbc_gpcm.c

fbc4a8a85777e06 John Ogness        2014-12-09  297  
fbc4a8a85777e06 John Ogness        2014-12-09  298  static int uio_fsl_elbc_gpcm_probe(struct platform_device *pdev)
fbc4a8a85777e06 John Ogness        2014-12-09  299  {
fbc4a8a85777e06 John Ogness        2014-12-09  300  	struct device_node *node = pdev->dev.of_node;
fbc4a8a85777e06 John Ogness        2014-12-09  301  	struct fsl_elbc_gpcm *priv;
fbc4a8a85777e06 John Ogness        2014-12-09  302  	struct uio_info *info;
fbc4a8a85777e06 John Ogness        2014-12-09  303  	char *uio_name = NULL;
c8295feb756f5e3 Rosen Penev        2026-07-22  304  	struct resource *res;
c8295feb756f5e3 Rosen Penev        2026-07-22  305  	void __iomem *base;
fbc4a8a85777e06 John Ogness        2014-12-09  306  	unsigned int irq;
fbc4a8a85777e06 John Ogness        2014-12-09  307  	u32 reg_br_cur;
fbc4a8a85777e06 John Ogness        2014-12-09  308  	u32 reg_or_cur;
fbc4a8a85777e06 John Ogness        2014-12-09  309  	u32 reg_br_new;
fbc4a8a85777e06 John Ogness        2014-12-09  310  	u32 reg_or_new;
fbc4a8a85777e06 John Ogness        2014-12-09  311  	int ret;
fbc4a8a85777e06 John Ogness        2014-12-09  312  
fbc4a8a85777e06 John Ogness        2014-12-09  313  	if (!fsl_lbc_ctrl_dev || !fsl_lbc_ctrl_dev->regs)
fbc4a8a85777e06 John Ogness        2014-12-09  314  		return -ENODEV;
fbc4a8a85777e06 John Ogness        2014-12-09  315  
c8295feb756f5e3 Rosen Penev        2026-07-22  316  	/* map the memory resource */
c8295feb756f5e3 Rosen Penev        2026-07-22  317  	base = devm_platform_get_and_ioremap_resource(pdev, 0, &res);
c8295feb756f5e3 Rosen Penev        2026-07-22  318  	if (IS_ERR(base))
c8295feb756f5e3 Rosen Penev        2026-07-22  319  		return PTR_ERR(base);
c8295feb756f5e3 Rosen Penev        2026-07-22  320  
c8295feb756f5e3 Rosen Penev        2026-07-22  321  	/* get optional irq value */
c8295feb756f5e3 Rosen Penev        2026-07-22  322  	irq = platform_get_irq(pdev, 0);
c8295feb756f5e3 Rosen Penev        2026-07-22 @323  	if (irq < 0)
c8295feb756f5e3 Rosen Penev        2026-07-22  324  		return irq;
c8295feb756f5e3 Rosen Penev        2026-07-22  325  
fbc4a8a85777e06 John Ogness        2014-12-09  326  	/* allocate private data */
d57801c45f53e3d Alexandru Ardelean 2020-11-19  327  	priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL);
fbc4a8a85777e06 John Ogness        2014-12-09  328  	if (!priv)
fbc4a8a85777e06 John Ogness        2014-12-09  329  		return -ENOMEM;
fbc4a8a85777e06 John Ogness        2014-12-09  330  	priv->dev = &pdev->dev;
fbc4a8a85777e06 John Ogness        2014-12-09  331  	priv->lbc = fsl_lbc_ctrl_dev->regs;
fbc4a8a85777e06 John Ogness        2014-12-09  332  
fbc4a8a85777e06 John Ogness        2014-12-09  333  	/* get device tree data */
c8295feb756f5e3 Rosen Penev        2026-07-22  334  	ret = get_of_data(priv, node, res, &reg_br_new, &reg_or_new,
c8295feb756f5e3 Rosen Penev        2026-07-22  335  			  &uio_name);
fbc4a8a85777e06 John Ogness        2014-12-09  336  	if (ret)
d57801c45f53e3d Alexandru Ardelean 2020-11-19  337  		return ret;
fbc4a8a85777e06 John Ogness        2014-12-09  338  
fbc4a8a85777e06 John Ogness        2014-12-09  339  	/* allocate UIO structure */
d57801c45f53e3d Alexandru Ardelean 2020-11-19  340  	info = devm_kzalloc(&pdev->dev, sizeof(*info), GFP_KERNEL);
d57801c45f53e3d Alexandru Ardelean 2020-11-19  341  	if (!info)
d57801c45f53e3d Alexandru Ardelean 2020-11-19  342  		return -ENOMEM;
fbc4a8a85777e06 John Ogness        2014-12-09  343  
fbc4a8a85777e06 John Ogness        2014-12-09  344  	/* get current BR/OR values */
fbc4a8a85777e06 John Ogness        2014-12-09  345  	reg_br_cur = in_be32(&priv->lbc->bank[priv->bank].br);
fbc4a8a85777e06 John Ogness        2014-12-09 @346  	reg_or_cur = in_be32(&priv->lbc->bank[priv->bank].or);
fbc4a8a85777e06 John Ogness        2014-12-09  347  
fbc4a8a85777e06 John Ogness        2014-12-09  348  	/* if bank already configured, make sure it matches */
fbc4a8a85777e06 John Ogness        2014-12-09  349  	if ((reg_br_cur & BR_V)) {
fbc4a8a85777e06 John Ogness        2014-12-09  350  		if ((reg_br_cur & BR_MSEL) != BR_MS_GPCM ||
fbc4a8a85777e06 John Ogness        2014-12-09  351  		    (reg_br_cur & reg_or_cur & BR_BA)
c8295feb756f5e3 Rosen Penev        2026-07-22  352  		     != fsl_lbc_addr(res->start)) {
fbc4a8a85777e06 John Ogness        2014-12-09  353  			dev_err(priv->dev,
fbc4a8a85777e06 John Ogness        2014-12-09  354  				"bank in use by another peripheral\n");
d57801c45f53e3d Alexandru Ardelean 2020-11-19  355  			return -ENODEV;
fbc4a8a85777e06 John Ogness        2014-12-09  356  		}
fbc4a8a85777e06 John Ogness        2014-12-09  357  
fbc4a8a85777e06 John Ogness        2014-12-09  358  		/* warn if behavior settings changing */
fbc4a8a85777e06 John Ogness        2014-12-09  359  		if ((reg_br_cur & ~(BR_BA | BR_V)) !=
fbc4a8a85777e06 John Ogness        2014-12-09  360  		    (reg_br_new & ~(BR_BA | BR_V))) {
fbc4a8a85777e06 John Ogness        2014-12-09  361  			dev_warn(priv->dev,
fbc4a8a85777e06 John Ogness        2014-12-09  362  				 "modifying BR settings: 0x%08x -> 0x%08x",
fbc4a8a85777e06 John Ogness        2014-12-09  363  				 reg_br_cur, reg_br_new);
fbc4a8a85777e06 John Ogness        2014-12-09  364  		}
fbc4a8a85777e06 John Ogness        2014-12-09  365  		if ((reg_or_cur & ~OR_GPCM_AM) != (reg_or_new & ~OR_GPCM_AM)) {
fbc4a8a85777e06 John Ogness        2014-12-09  366  			dev_warn(priv->dev,
fbc4a8a85777e06 John Ogness        2014-12-09  367  				 "modifying OR settings: 0x%08x -> 0x%08x",
fbc4a8a85777e06 John Ogness        2014-12-09  368  				 reg_or_cur, reg_or_new);
fbc4a8a85777e06 John Ogness        2014-12-09  369  		}
fbc4a8a85777e06 John Ogness        2014-12-09  370  	}
fbc4a8a85777e06 John Ogness        2014-12-09  371  
fbc4a8a85777e06 John Ogness        2014-12-09  372  	/* configure the bank (force base address and GPCM) */
fbc4a8a85777e06 John Ogness        2014-12-09  373  	reg_br_new &= ~(BR_BA | BR_MSEL);
c8295feb756f5e3 Rosen Penev        2026-07-22  374  	reg_br_new |= fsl_lbc_addr(res->start) | BR_MS_GPCM | BR_V;
fbc4a8a85777e06 John Ogness        2014-12-09  375  	out_be32(&priv->lbc->bank[priv->bank].or, reg_or_new);
fbc4a8a85777e06 John Ogness        2014-12-09  376  	out_be32(&priv->lbc->bank[priv->bank].br, reg_br_new);
fbc4a8a85777e06 John Ogness        2014-12-09  377  
fbc4a8a85777e06 John Ogness        2014-12-09  378  	/* set all UIO data */
d57801c45f53e3d Alexandru Ardelean 2020-11-19  379  	info->mem[0].name = devm_kasprintf(&pdev->dev, GFP_KERNEL, "%pOFn", node);
c8295feb756f5e3 Rosen Penev        2026-07-22  380  	if (!info->mem[0].name)
c8295feb756f5e3 Rosen Penev        2026-07-22  381  		return -ENODEV;
d48fb15e6ad142e Li Qiang           2025-10-15  382  
c8295feb756f5e3 Rosen Penev        2026-07-22  383  	info->mem[0].internal_addr = base;
c8295feb756f5e3 Rosen Penev        2026-07-22  384  	info->mem[0].addr = res->start;
c8295feb756f5e3 Rosen Penev        2026-07-22  385  	info->mem[0].size = resource_size(res);
fbc4a8a85777e06 John Ogness        2014-12-09  386  	info->mem[0].memtype = UIO_MEM_PHYS;
fbc4a8a85777e06 John Ogness        2014-12-09  387  	info->priv = priv;
fbc4a8a85777e06 John Ogness        2014-12-09  388  	info->name = uio_name;
fbc4a8a85777e06 John Ogness        2014-12-09  389  	info->version = "0.0.1";
e48031603ae6440 Christophe Leroy   2022-10-06  390  	if (irq) {
fbc4a8a85777e06 John Ogness        2014-12-09  391  		if (priv->irq_handler) {
fbc4a8a85777e06 John Ogness        2014-12-09  392  			info->irq = irq;
fbc4a8a85777e06 John Ogness        2014-12-09  393  			info->irq_flags = IRQF_SHARED;
fbc4a8a85777e06 John Ogness        2014-12-09  394  			info->handler = priv->irq_handler;
fbc4a8a85777e06 John Ogness        2014-12-09  395  		} else {
e48031603ae6440 Christophe Leroy   2022-10-06  396  			irq = 0;
fbc4a8a85777e06 John Ogness        2014-12-09  397  			dev_warn(priv->dev, "ignoring irq, no handler\n");
fbc4a8a85777e06 John Ogness        2014-12-09  398  		}
fbc4a8a85777e06 John Ogness        2014-12-09  399  	}
fbc4a8a85777e06 John Ogness        2014-12-09  400  
fbc4a8a85777e06 John Ogness        2014-12-09  401  	if (priv->init)
fbc4a8a85777e06 John Ogness        2014-12-09  402  		priv->init(info);
fbc4a8a85777e06 John Ogness        2014-12-09  403  
fbc4a8a85777e06 John Ogness        2014-12-09  404  	/* register UIO device */
fbc4a8a85777e06 John Ogness        2014-12-09  405  	if (uio_register_device(priv->dev, info) != 0) {
fbc4a8a85777e06 John Ogness        2014-12-09  406  		dev_err(priv->dev, "UIO registration failed\n");
fbc4a8a85777e06 John Ogness        2014-12-09  407  		ret = -ENODEV;
fbc4a8a85777e06 John Ogness        2014-12-09  408  		goto out_err2;
fbc4a8a85777e06 John Ogness        2014-12-09  409  	}
fbc4a8a85777e06 John Ogness        2014-12-09  410  
fbc4a8a85777e06 John Ogness        2014-12-09  411  	/* store private data */
fbc4a8a85777e06 John Ogness        2014-12-09  412  	platform_set_drvdata(pdev, info);
fbc4a8a85777e06 John Ogness        2014-12-09  413  
fbc4a8a85777e06 John Ogness        2014-12-09  414  	dev_info(priv->dev,
fbc4a8a85777e06 John Ogness        2014-12-09  415  		 "eLBC/GPCM device (%s) at 0x%llx, bank %d, irq=%d\n",
c8295feb756f5e3 Rosen Penev        2026-07-22  416  		 priv->name, (unsigned long long)res->start, priv->bank,
e48031603ae6440 Christophe Leroy   2022-10-06  417  		 irq ? : -1);
fbc4a8a85777e06 John Ogness        2014-12-09  418  
fbc4a8a85777e06 John Ogness        2014-12-09  419  	return 0;
fbc4a8a85777e06 John Ogness        2014-12-09  420  out_err2:
fbc4a8a85777e06 John Ogness        2014-12-09  421  	if (priv->shutdown)
fbc4a8a85777e06 John Ogness        2014-12-09  422  		priv->shutdown(info, true);
fbc4a8a85777e06 John Ogness        2014-12-09  423  	return ret;
fbc4a8a85777e06 John Ogness        2014-12-09  424  }
fbc4a8a85777e06 John Ogness        2014-12-09  425  

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2026-08-01 11:39 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-01 11:39 [char-misc:char-misc-testing 56/61] drivers/uio/uio_fsl_elbc_gpcm.c:323:19: sparse: sparse: unsigned value that used to be signed checked against zero? kernel test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.