mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Vyacheslav Yurkov via B4 Relay
	<devnull+V.Yurkov.EXT.bruker.com@kernel.org>,
	Rob Herring <robh@kernel.org>,
	Krzysztof Kozlowski <krzk@kernel.org>,
	Conor Dooley <conor+dt@kernel.org>
Cc: llvm@lists.linux.dev, oe-kbuild-all@lists.linux.dev,
	devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
	Vyacheslav Yurkov <V.Yurkov.EXT@bruker.com>
Subject: Re: [PATCH 2/2] bus: add Altera timeout bridge driver
Date: Mon, 5 Oct 2026 04:01:13 +0800	[thread overview]
Message-ID: <202610050325.ZOPvf8XR-lkp@intel.com> (raw)
In-Reply-To: <20261003-feature-timeout-ip-v1-2-8837c311d571@bruker.com>

Hi Vyacheslav,

kernel test robot noticed the following build errors:

[auto build test ERROR on a74306e2e676f9775457366fc047a660fbf02f26]

url:    https://github.com/intel-lab-lkp/linux/commits/Vyacheslav-Yurkov-via-B4-Relay/dt-bindings-bus-Add-binding-for-Altera-AXI-Timeout-Bridge/20261003-201919
base:   a74306e2e676f9775457366fc047a660fbf02f26
patch link:    https://lore.kernel.org/r/20261003-feature-timeout-ip-v1-2-8837c311d571%40bruker.com
patch subject: [PATCH 2/2] bus: add Altera timeout bridge driver
config: s390-allmodconfig (https://download.01.org/0day-ci/archive/20261005/202610050325.ZOPvf8XR-lkp@intel.com/config)
compiler: clang version 24.0.0git (https://github.com/llvm/llvm-project 5f609f950d2e80addf5566623013db68394334db)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20261005/202610050325.ZOPvf8XR-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/202610050325.ZOPvf8XR-lkp@intel.com/

All error/warnings (new ones prefixed by >>):

>> drivers/bus/altera-timeout-bridge.c:60:11: error: call to undeclared function 'readl'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
      60 |         result = readl(driver_data->bridge_registers + offset);
         |                  ^
>> drivers/bus/altera-timeout-bridge.c:69:2: error: call to undeclared function 'writel'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
      69 |         writel(value, driver_data->bridge_registers + offset);
         |         ^
>> drivers/bus/altera-timeout-bridge.c:187:38: warning: cast from 'void (*)(struct kernfs_node *)' to 'void (*)(void *)' converts to incompatible function type [-Wcast-function-type-strict]
     187 |         ret = devm_add_action_or_reset(dev, (void (*)(void *))sysfs_put, driver_data->irq_node);
         |                                             ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/device/devres.h:181:34: note: expanded from macro 'devm_add_action_or_reset'
     181 |         __devm_add_action_or_reset(dev, action, data, #action)
         |                                         ^~~~~~
   1 warning and 2 errors generated.


vim +/readl +60 drivers/bus/altera-timeout-bridge.c

    53	
    54	static u32
    55	bridge_reg_read(struct altera_timeout_bridge_data *driver_data,
    56			u32 offset)
    57	{
    58		u32 result;
    59	
  > 60		result = readl(driver_data->bridge_registers + offset);
    61	
    62		return result;
    63	}
    64	
    65	static void bridge_reg_write(
    66		struct altera_timeout_bridge_data *driver_data,
    67		int offset, u32 value)
    68	{
  > 69		writel(value, driver_data->bridge_registers + offset);
    70	}
    71	
    72	static irqreturn_t altera_timeout_bridge_isr(int irq, void *data)
    73	{
    74		struct altera_timeout_bridge_data *driver_data = data;
    75		u32 timed_out_address;
    76		resource_size_t effective_base_address;
    77		resource_size_t effective_timed_out_address;
    78	
    79		atomic_inc(&driver_data->irq_count);
    80	
    81		// Read and print the timed-out address (encoded in the lower nibble
    82		// 0x8..0xF according to AXI Timeout Bridge IP (CSR Interrupt Status Information)
    83		timed_out_address = bridge_reg_read(
    84			driver_data,
    85			ALTERA_TIMEOUT_BRIDGE_REG_TIMED_OUT_ADDRESS);
    86		effective_base_address = driver_data->bridge_register_resource->start;
    87		effective_timed_out_address = effective_base_address + timed_out_address;
    88		pr_err("%s: timeout at address 0x%llx\n",
    89			__func__, (unsigned long long)effective_timed_out_address);
    90	
    91		// Reset IRQ status in the bridge
    92		bridge_reg_write(
    93			driver_data,
    94			ALTERA_TIMEOUT_BRIDGE_REG_IRQ_STATUS_RESET,
    95			0x1);
    96		// notify the user space
    97		sysfs_notify_dirent(driver_data->irq_node);
    98	
    99		return IRQ_HANDLED;
   100	}
   101	static int altera_timeout_bridge_probe(struct platform_device *pdev)
   102	{
   103		struct device *dev = &pdev->dev;
   104		const struct of_device_id *match;
   105		const struct of_dev_auxdata *lookup = dev_get_platdata(dev);
   106		struct device_node *np = dev->of_node;
   107		struct altera_timeout_bridge_data *driver_data;
   108		int ret = 0;
   109		int irq = -1;
   110	
   111		/*
   112		 * Allow user to use driver_override to bind this driver to a
   113		 * transparent bus device which has a different compatible string
   114		 * that's not listed in simple_pm_bus_of_match. We don't want to do any
   115		 * of the simple-pm-bus tasks for these devices, so return early.
   116		 */
   117		if (device_has_driver_override(&pdev->dev))
   118			return 0;
   119	
   120		match = of_match_device(dev->driver->of_match_table, dev);
   121	
   122		/* Use a fall back logic like in simple-pm-bus */
   123		if (match && match->data) {
   124			if (of_property_match_string(np, "compatible", match->compatible) == 0)
   125				return 0;
   126			else
   127				return -ENODEV;
   128		}
   129	
   130		driver_data =
   131			devm_kzalloc(&pdev->dev, sizeof(*driver_data), GFP_KERNEL);
   132		if (!driver_data) {
   133			dev_err(&pdev->dev,
   134				"%s: kzalloc failed: no memory for the driver's data, returning ENOMEM\n",
   135				__func__);
   136			return -ENOMEM;
   137		}
   138	
   139		driver_data->dev = dev;
   140		platform_set_drvdata(pdev, driver_data);
   141	
   142		driver_data->bridge_register_resource =
   143			platform_get_resource(pdev, IORESOURCE_MEM, 0);
   144		if (!driver_data->bridge_register_resource) {
   145			dev_err(dev,
   146				"%s: missing required reg binding\n",
   147				__func__);
   148			return -ENOENT;
   149		}
   150		driver_data->bridge_registers =
   151			devm_ioremap_resource(dev,
   152					     driver_data->bridge_register_resource);
   153		if (IS_ERR(driver_data->bridge_registers)) {
   154			dev_err(dev,
   155				"%s: ioremap_resource failed for bridge-status MMIO, returning PTR_ERR(%ld)\n",
   156				__func__, PTR_ERR(driver_data->bridge_registers));
   157			return PTR_ERR(driver_data->bridge_registers);
   158		}
   159	
   160		irq = platform_get_irq(pdev, 0);
   161		if (irq < 0) {
   162			dev_err(dev,
   163				"%s: platform_get_irq failed: %d\n", __func__, irq);
   164			return irq;
   165		}
   166	
   167		ret = devm_request_irq(dev, irq,
   168				       altera_timeout_bridge_isr,
   169				       0,
   170				       dev_name(dev),
   171				       driver_data);
   172		if (ret) {
   173			dev_err(dev,
   174				"%s: devm_request_irq failed for IRQ %d: %d\n",
   175				__func__, irq, ret);
   176			return ret;
   177		}
   178	
   179		ret = devm_device_add_group(dev, &altera_timeout_bridge_sysfs_group);
   180		if (ret)
   181			return ret;
   182	
   183		driver_data->irq_node = sysfs_get_dirent(dev->kobj.sd, "timeout_irq");
   184		if (!driver_data->irq_node)
   185			return -ENOENT;
   186	
 > 187		ret = devm_add_action_or_reset(dev, (void (*)(void *))sysfs_put, driver_data->irq_node);
   188		if (ret)
   189			return ret;
   190	
   191		if (np)
   192			of_platform_populate(np, NULL, lookup, &pdev->dev);
   193	
   194		return 0;
   195	}
   196	

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

      parent reply	other threads:[~2026-10-04 20:01 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-03 20:19 [PATCH 0/2] Add " Vyacheslav Yurkov via B4 Relay
2026-10-03 20:19 ` [PATCH 1/2] dt-bindings: bus: Add binding for Altera AXI Timeout Bridge Vyacheslav Yurkov via B4 Relay
2026-10-03 21:18   ` Krzysztof Kozlowski
2026-10-03 20:19 ` [PATCH 2/2] bus: add Altera timeout bridge driver Vyacheslav Yurkov via B4 Relay
2026-10-03 21:24   ` Krzysztof Kozlowski
2026-10-04 20:01   ` kernel test robot [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202610050325.ZOPvf8XR-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=V.Yurkov.EXT@bruker.com \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=devnull+V.Yurkov.EXT.bruker.com@kernel.org \
    --cc=krzk@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=llvm@lists.linux.dev \
    --cc=oe-kbuild-all@lists.linux.dev \
    --cc=robh@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®