Thread (11 messages) 11 messages, 3 authors, 2025-05-20

Re: [PATCH v3 3/4] clocksource/drivers/timer-vt8500: Prepare for watchdog functionality

From: Alexey Charkov <alchark@gmail.com>
Date: 2025-05-19 11:35:15
Also in: linux-devicetree, linux-watchdog, lkml, oe-kbuild-all

On Sun, May 18, 2025 at 5:24 AM kernel test robot [off-list ref] wrote:
Hi Alexey,

kernel test robot noticed the following build warnings:

[auto build test WARNING on 92a09c47464d040866cf2b4cd052bc60555185fb]

url:    https://github.com/intel-lab-lkp/linux/commits/Alexey-Charkov/dt-bindings-timer-via-vt8500-timer-Convert-to-YAML/20250516-025729
base:   92a09c47464d040866cf2b4cd052bc60555185fb
patch link:    https://lore.kernel.org/r/20250515-vt8500-timer-updates-v3-3-2197a1b062bd%40gmail.com
patch subject: [PATCH v3 3/4] clocksource/drivers/timer-vt8500: Prepare for watchdog functionality
config: loongarch-randconfig-r123-20250517 (https://download.01.org/0day-ci/archive/20250518/202505180911.hDevFA1N-lkp@intel.com/config)
compiler: loongarch64-linux-gcc (GCC) 14.2.0
reproduce: (https://download.01.org/0day-ci/archive/20250518/202505180911.hDevFA1N-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 [off-list ref]
| Closes: https://lore.kernel.org/oe-kbuild-all/202505180911.hDevFA1N-lkp@intel.com/ (local)

sparse warnings: (new ones prefixed by >>)
quoted
quoted
drivers/clocksource/timer-vt8500.c:201:51: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected void *platform_data @@     got void [noderef] __iomem *static [assigned] [toplevel] regbase @@
   drivers/clocksource/timer-vt8500.c:201:51: sparse:     expected void *platform_data
   drivers/clocksource/timer-vt8500.c:201:51: sparse:     got void [noderef] __iomem *static [assigned] [toplevel] regbase

vim +201 drivers/clocksource/timer-vt8500.c

   175
   176  /*
   177   * This probe gets called after the timer is already up and running. This will create
   178   * the watchdog device as a child since the registers are shared.
   179   */
   180  static int vt8500_timer_probe(struct platform_device *pdev)
   181  {
   182          struct platform_device *vt8500_watchdog_device;
   183          struct device *dev = &pdev->dev;
   184          int ret;
   185
   186          if (!sys_timer_ch) {
   187                  dev_info(dev, "Not enabling watchdog: only one irq was given");
   188                  return 0;
   189          }
   190
   191          if (!regbase)
   192                  return dev_err_probe(dev, -ENOMEM,
   193                          "Timer not initialized, cannot create watchdog");
   194
   195          vt8500_watchdog_device = platform_device_alloc("vt8500-wdt", -1);
   196          if (!vt8500_watchdog_device)
   197                  return dev_err_probe(dev, -ENOMEM,
   198                          "Failed to allocate vt8500-wdt");
   199
   200          /* Pass the base address as platform data and nothing else */
 > 201          vt8500_watchdog_device->dev.platform_data = regbase;
Frankly, given that this driver only applies to VT8500 (which is ARM
based), the warning appears a bit overzealous. After all, on ARM MMIO
addresses are in the same physical address space as normal memory
addresses, and furthermore this platform_data is never dereferenced
directly anyway.

I could silence the warning either by more aggressive casting or by
wrapping the pointer into some struct, but both of those sound a bit
overreaching. Would appreciate guidance from the list on how to best
approach this.

Best regards,
Alexey
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help