Building the Linux kernel with Clang and LLVM
 help / color / mirror / Atom feed
* [stefandoesinger-zx297520:dlink 120/131] drivers/rpmsg/zx29_smd.c:205:66: warning: cast to smaller integer type 'unsigned int' from 'struct zx29_smd *'
@ 2026-09-03  5:49 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2026-09-03  5:49 UTC (permalink / raw)
  To: Stefan Dösinger ; +Cc: llvm, oe-kbuild-all

tree:   https://gitlab.com/stefandoesinger/zx297520-kernel dlink
head:   4132307830800b020a6d29d27cb3fec3cb5fbb90
commit: ffc256cf7e9bea66ecdb62566ec625760720329b [120/131] rpmsg polling
config: sparc64-allmodconfig (https://download.01.org/0day-ci/archive/20260903/202609031311.esEudpZG-lkp@intel.com/config)
compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260903/202609031311.esEudpZG-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/oe-kbuild-all/202609031311.esEudpZG-lkp@intel.com/

All warnings (new ones prefixed by >>):

>> drivers/rpmsg/zx29_smd.c:205:66: warning: cast to smaller integer type 'unsigned int' from 'struct zx29_smd *' [-Wpointer-to-int-cast]
     205 |         dev_info(&zx29_smd->pdev->dev, "zx29_smd_rx_work smd 0x%08x\n", (unsigned int)zx29_smd);
         |                                                                         ^~~~~~~~~~~~~~~~~~~~~~
   include/linux/dev_printk.h:160:67: note: expanded from macro 'dev_info'
     160 |         dev_printk_index_wrap(_dev_info, KERN_INFO, dev, dev_fmt(fmt), ##__VA_ARGS__)
         |                                                                          ^~~~~~~~~~~
   include/linux/dev_printk.h:110:23: note: expanded from macro 'dev_printk_index_wrap'
     110 |                 _p_func(dev, fmt, ##__VA_ARGS__);                       \
         |                                     ^~~~~~~~~~~
   drivers/rpmsg/zx29_smd.c:337:92: warning: cast to smaller integer type 'unsigned int' from 'u8 *' (aka 'unsigned char *') [-Wpointer-to-int-cast]
     337 |                 dev_info(&pdev->dev, "zx29_smd->data_r phys 0x%08x virt 0x%08x\n", zx29_smd->recv->base, (unsigned int)zx29_smd->data_r);
         |                                                                                                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/dev_printk.h:160:67: note: expanded from macro 'dev_info'
     160 |         dev_printk_index_wrap(_dev_info, KERN_INFO, dev, dev_fmt(fmt), ##__VA_ARGS__)
         |                                                                          ^~~~~~~~~~~
   include/linux/dev_printk.h:110:23: note: expanded from macro 'dev_printk_index_wrap'
     110 |                 _p_func(dev, fmt, ##__VA_ARGS__);                       \
         |                                     ^~~~~~~~~~~
   drivers/rpmsg/zx29_smd.c:367:52: warning: cast to smaller integer type 'unsigned int' from 'u8 *' (aka 'unsigned char *') [-Wpointer-to-int-cast]
     367 |         dev_info(&pdev->dev, "zx29_smd->data_s 0x%08x\n", (unsigned int)zx29_smd->data_s);
         |                                                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/dev_printk.h:160:67: note: expanded from macro 'dev_info'
     160 |         dev_printk_index_wrap(_dev_info, KERN_INFO, dev, dev_fmt(fmt), ##__VA_ARGS__)
         |                                                                          ^~~~~~~~~~~
   include/linux/dev_printk.h:110:23: note: expanded from macro 'dev_printk_index_wrap'
     110 |                 _p_func(dev, fmt, ##__VA_ARGS__);                       \
         |                                     ^~~~~~~~~~~
   drivers/rpmsg/zx29_smd.c:193:13: warning: unused function 'zx29_smd_release_device' [-Wunused-function]
     193 | static void zx29_smd_release_device(struct device *dev)
         |             ^~~~~~~~~~~~~~~~~~~~~~~
   4 warnings generated.


vim +205 drivers/rpmsg/zx29_smd.c

   197	
   198	static void zx29_smd_rx_work(struct work_struct *work)
   199	{
   200		struct zx29_smd *zx29_smd = to_zx29_rpmsg_device_work(work);
   201		u32 send_pos, len, pkg_len, processed = 0;
   202		const struct msg_hdr *hdr;
   203		u8 *ptr, *alloc = NULL;
   204	
 > 205		dev_info(&zx29_smd->pdev->dev, "zx29_smd_rx_work smd 0x%08x\n", (unsigned int)zx29_smd);
   206		dev_info(&zx29_smd->pdev->dev, "zx29_smd_rx_work channel 0x%08x\n", zx29_smd->ept.addr);
   207	
   208		if (!zx29_smd->data_r) {
   209			dev_info(&zx29_smd->pdev->dev, "receive base not mapped\n");
   210			// FIXME: I guess I can't do that in an IRQ context
   211			return;
   212			/*
   213			dev_info(&zx29_smd->pdev->dev, "trying to ioremap 0x%08x\n", zx29_smd->recv->base);
   214			zx29_smd->data_r = devm_memremap(&zx29_smd->pdev->dev,
   215						         zx29_smd->recv->base, zx29_smd->recv->size,
   216							 MEMREMAP_WT);
   217			dev_info(&zx29_smd->pdev->dev, "zx29_smd->data_r phys 0x%08x virt 0x%08x\n",
   218				 zx29_smd->recv->base, (unsigned int)zx29_smd->data_r);
   219			*/
   220		}
   221	
   222		for (;;) {
   223			send_pos = zx29_smd->recv->send_pos;
   224	
   225			if (send_pos == zx29_smd->recv->recv_pos) {
   226				break;
   227			}
   228	
   229			dev_info(&zx29_smd->pdev->dev, "old recv %u new incoming %u. Ringbuffer size %u\n",
   230					zx29_smd->recv->recv_pos, send_pos, zx29_smd->recv->size);
   231	
   232			if (send_pos > zx29_smd->recv->recv_pos) {
   233				ptr = zx29_smd->data_r + zx29_smd->recv->recv_pos;
   234				len = send_pos - zx29_smd->recv->recv_pos;
   235				if (send_pos == zx29_smd->recv->size) {
   236					dev_info(&zx29_smd->pdev->dev, "send_pos == size\n");
   237				} else {
   238					dev_info(&zx29_smd->pdev->dev, "easy default path\n");
   239				}
   240			} else if (!send_pos) {
   241				dev_info(&zx29_smd->pdev->dev, "send_pos == 0\n");
   242				ptr = zx29_smd->data_r + zx29_smd->recv->recv_pos;
   243				len = zx29_smd->recv->size - zx29_smd->recv->recv_pos;
   244			} else {
   245				dev_info(&zx29_smd->pdev->dev, "wraparound\n");
   246				len = zx29_smd->recv->size - zx29_smd->recv->recv_pos + send_pos;
   247				alloc = kzalloc(len, GFP_KERNEL);
   248	
   249				memcpy(alloc, zx29_smd->data_r + zx29_smd->recv->recv_pos,
   250				zx29_smd->recv->size - zx29_smd->recv->recv_pos);
   251				memcpy(alloc + zx29_smd->recv->size - zx29_smd->recv->recv_pos, zx29_smd->data_r,
   252				send_pos);
   253			}
   254	
   255			hdr = (const struct msg_hdr *)ptr;
   256			pkg_len = ZX29_MSG_ALIGN(hdr->len) + sizeof(*hdr);
   257			if (hdr->magic != ZX29_MSG_MAGIC) {
   258				dev_info(&zx29_smd->pdev->dev, "Invalid magic 0x%04x\n", hdr->magic);
   259			} else if (pkg_len > len) {
   260				dev_info(&zx29_smd->pdev->dev, "Header length 0x%04x, in buffer 0x%04x\n",
   261					hdr->len, len);
   262			} else {
   263				if (!hdr->len) {
   264					dev_info(&zx29_smd->pdev->dev, "Zero-length packet\n");
   265				}
   266				zx29_smd->ept.cb(&zx29_smd->rpdev, ptr + sizeof(*hdr), hdr->len, zx29_smd->ept.priv, RPMSG_ADDR_ANY);
   267			}
   268	
   269			kfree(alloc);
   270			zx29_smd->recv->recv_pos = (zx29_smd->recv->recv_pos + pkg_len) % zx29_smd->recv->size;
   271			processed++;
   272		}
   273	
   274		if (!processed) {
   275			dev_info(&zx29_smd->pdev->dev, "No messages processed?\n");
   276		}
   277	}
   278	

--
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-09-03  5:50 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-03  5:49 [stefandoesinger-zx297520:dlink 120/131] drivers/rpmsg/zx29_smd.c:205:66: warning: cast to smaller integer type 'unsigned int' from 'struct zx29_smd *' kernel test robot

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox