Building the Linux kernel with Clang and LLVM
 help / color / mirror / Atom feed
* [jirislaby:devel 20/64] arch/powerpc/kernel/legacy_serial.c:149:40: error: incompatible function pointer types assigning to 'u32 (*)(struct uart_port *, unsigned int)' (aka 'unsigned int (*)(struct uart_port *, unsigned int)') from 'unsigned int (struct uart_port *, int)'
@ 2025-05-13  4:14 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2025-05-13  4:14 UTC (permalink / raw)
  To: Jiri Slaby (SUSE); +Cc: llvm, oe-kbuild-all

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/jirislaby/linux.git devel
head:   f060943a6971b43116b370a038e41046e9421154
commit: 2c711abcb8fcb6ffb47c2b315e9e52a94d6b11a7 [20/64] serial: sanitize uart_port::serial_{in,out}() types
config: powerpc-randconfig-001-20250513 (https://download.01.org/0day-ci/archive/20250513/202505131208.nNLau4Ty-lkp@intel.com/config)
compiler: clang version 21.0.0git (https://github.com/llvm/llvm-project f819f46284f2a79790038e1f6649172789734ae8)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250513/202505131208.nNLau4Ty-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/202505131208.nNLau4Ty-lkp@intel.com/

All errors (new ones prefixed by >>):

>> arch/powerpc/kernel/legacy_serial.c:149:40: error: incompatible function pointer types assigning to 'u32 (*)(struct uart_port *, unsigned int)' (aka 'unsigned int (*)(struct uart_port *, unsigned int)') from 'unsigned int (struct uart_port *, int)' [-Wincompatible-function-pointer-types]
     149 |                 legacy_serial_ports[index].serial_in = tsi_serial_in;
         |                                                      ^ ~~~~~~~~~~~~~
>> arch/powerpc/kernel/legacy_serial.c:150:41: error: incompatible function pointer types assigning to 'void (*)(struct uart_port *, unsigned int, u32)' (aka 'void (*)(struct uart_port *, unsigned int, unsigned int)') from 'void (struct uart_port *, int, int)' [-Wincompatible-function-pointer-types]
     150 |                 legacy_serial_ports[index].serial_out = tsi_serial_out;
         |                                                       ^ ~~~~~~~~~~~~~~
   2 errors generated.


vim +149 arch/powerpc/kernel/legacy_serial.c

7df5659eefad9b Arnd Bergmann          2011-06-27   74  
463ce0e103f419 Benjamin Herrenschmidt 2005-11-23   75  static int __init add_legacy_port(struct device_node *np, int want_index,
463ce0e103f419 Benjamin Herrenschmidt 2005-11-23   76  				  int iotype, phys_addr_t base,
b580d46ce833f6 Kumar Gala             2005-12-20   77  				  phys_addr_t taddr, unsigned long irq,
0ebfff1491ef85 Benjamin Herrenschmidt 2006-07-03   78  				  upf_t flags, int irq_check_parent)
463ce0e103f419 Benjamin Herrenschmidt 2005-11-23   79  {
13ae40370f62cd Stephen Chivers        2014-04-20   80  	const __be32 *clk, *spd, *rs;
a7f67bdf2c9f24 Jeremy Kerr            2006-07-12   81  	u32 clock = BASE_BAUD * 16;
13ae40370f62cd Stephen Chivers        2014-04-20   82  	u32 shift = 0;
463ce0e103f419 Benjamin Herrenschmidt 2005-11-23   83  	int index;
463ce0e103f419 Benjamin Herrenschmidt 2005-11-23   84  
463ce0e103f419 Benjamin Herrenschmidt 2005-11-23   85  	/* get clock freq. if present */
e2eb63927bfcb5 Stephen Rothwell       2007-04-03   86  	clk = of_get_property(np, "clock-frequency", NULL);
31df1678d7732b David Woodhouse        2005-11-24   87  	if (clk && *clk)
f14362d1fe81ce Ian Munsie             2010-10-01   88  		clock = be32_to_cpup(clk);
463ce0e103f419 Benjamin Herrenschmidt 2005-11-23   89  
463ce0e103f419 Benjamin Herrenschmidt 2005-11-23   90  	/* get default speed if present */
e2eb63927bfcb5 Stephen Rothwell       2007-04-03   91  	spd = of_get_property(np, "current-speed", NULL);
463ce0e103f419 Benjamin Herrenschmidt 2005-11-23   92  
13ae40370f62cd Stephen Chivers        2014-04-20   93  	/* get register shift if present */
13ae40370f62cd Stephen Chivers        2014-04-20   94  	rs = of_get_property(np, "reg-shift", NULL);
13ae40370f62cd Stephen Chivers        2014-04-20   95  	if (rs && *rs)
13ae40370f62cd Stephen Chivers        2014-04-20   96  		shift = be32_to_cpup(rs);
13ae40370f62cd Stephen Chivers        2014-04-20   97  
463ce0e103f419 Benjamin Herrenschmidt 2005-11-23   98  	/* If we have a location index, then try to use it */
463ce0e103f419 Benjamin Herrenschmidt 2005-11-23   99  	if (want_index >= 0 && want_index < MAX_LEGACY_SERIAL_PORTS)
463ce0e103f419 Benjamin Herrenschmidt 2005-11-23  100  		index = want_index;
463ce0e103f419 Benjamin Herrenschmidt 2005-11-23  101  	else
463ce0e103f419 Benjamin Herrenschmidt 2005-11-23  102  		index = legacy_serial_count;
463ce0e103f419 Benjamin Herrenschmidt 2005-11-23  103  
463ce0e103f419 Benjamin Herrenschmidt 2005-11-23  104  	/* if our index is still out of range, that mean that
463ce0e103f419 Benjamin Herrenschmidt 2005-11-23  105  	 * array is full, we could scan for a free slot but that
463ce0e103f419 Benjamin Herrenschmidt 2005-11-23  106  	 * make little sense to bother, just skip the port
463ce0e103f419 Benjamin Herrenschmidt 2005-11-23  107  	 */
463ce0e103f419 Benjamin Herrenschmidt 2005-11-23  108  	if (index >= MAX_LEGACY_SERIAL_PORTS)
463ce0e103f419 Benjamin Herrenschmidt 2005-11-23  109  		return -1;
463ce0e103f419 Benjamin Herrenschmidt 2005-11-23  110  	if (index >= legacy_serial_count)
463ce0e103f419 Benjamin Herrenschmidt 2005-11-23  111  		legacy_serial_count = index + 1;
463ce0e103f419 Benjamin Herrenschmidt 2005-11-23  112  
463ce0e103f419 Benjamin Herrenschmidt 2005-11-23  113  	/* Check if there is a port who already claimed our slot */
b0d436c739b0d4 Anton Blanchard        2013-08-07  114  	if (legacy_serial_infos[index].np != NULL) {
463ce0e103f419 Benjamin Herrenschmidt 2005-11-23  115  		/* if we still have some room, move it, else override */
463ce0e103f419 Benjamin Herrenschmidt 2005-11-23  116  		if (legacy_serial_count < MAX_LEGACY_SERIAL_PORTS) {
0ebfff1491ef85 Benjamin Herrenschmidt 2006-07-03  117  			printk(KERN_DEBUG "Moved legacy port %d -> %d\n",
463ce0e103f419 Benjamin Herrenschmidt 2005-11-23  118  			       index, legacy_serial_count);
463ce0e103f419 Benjamin Herrenschmidt 2005-11-23  119  			legacy_serial_ports[legacy_serial_count] =
463ce0e103f419 Benjamin Herrenschmidt 2005-11-23  120  				legacy_serial_ports[index];
463ce0e103f419 Benjamin Herrenschmidt 2005-11-23  121  			legacy_serial_infos[legacy_serial_count] =
463ce0e103f419 Benjamin Herrenschmidt 2005-11-23  122  				legacy_serial_infos[index];
463ce0e103f419 Benjamin Herrenschmidt 2005-11-23  123  			legacy_serial_count++;
463ce0e103f419 Benjamin Herrenschmidt 2005-11-23  124  		} else {
0ebfff1491ef85 Benjamin Herrenschmidt 2006-07-03  125  			printk(KERN_DEBUG "Replacing legacy port %d\n", index);
463ce0e103f419 Benjamin Herrenschmidt 2005-11-23  126  		}
463ce0e103f419 Benjamin Herrenschmidt 2005-11-23  127  	}
463ce0e103f419 Benjamin Herrenschmidt 2005-11-23  128  
463ce0e103f419 Benjamin Herrenschmidt 2005-11-23  129  	/* Now fill the entry */
463ce0e103f419 Benjamin Herrenschmidt 2005-11-23  130  	memset(&legacy_serial_ports[index], 0,
463ce0e103f419 Benjamin Herrenschmidt 2005-11-23  131  	       sizeof(struct plat_serial8250_port));
463ce0e103f419 Benjamin Herrenschmidt 2005-11-23  132  	if (iotype == UPIO_PORT)
463ce0e103f419 Benjamin Herrenschmidt 2005-11-23  133  		legacy_serial_ports[index].iobase = base;
463ce0e103f419 Benjamin Herrenschmidt 2005-11-23  134  	else
8dacaedf04467e Benjamin Herrenschmidt 2005-11-29  135  		legacy_serial_ports[index].mapbase = base;
7df5659eefad9b Arnd Bergmann          2011-06-27  136  
463ce0e103f419 Benjamin Herrenschmidt 2005-11-23  137  	legacy_serial_ports[index].iotype = iotype;
463ce0e103f419 Benjamin Herrenschmidt 2005-11-23  138  	legacy_serial_ports[index].uartclk = clock;
463ce0e103f419 Benjamin Herrenschmidt 2005-11-23  139  	legacy_serial_ports[index].irq = irq;
b580d46ce833f6 Kumar Gala             2005-12-20  140  	legacy_serial_ports[index].flags = flags;
13ae40370f62cd Stephen Chivers        2014-04-20  141  	legacy_serial_ports[index].regshift = shift;
463ce0e103f419 Benjamin Herrenschmidt 2005-11-23  142  	legacy_serial_infos[index].taddr = taddr;
463ce0e103f419 Benjamin Herrenschmidt 2005-11-23  143  	legacy_serial_infos[index].np = of_node_get(np);
463ce0e103f419 Benjamin Herrenschmidt 2005-11-23  144  	legacy_serial_infos[index].clock = clock;
f14362d1fe81ce Ian Munsie             2010-10-01  145  	legacy_serial_infos[index].speed = spd ? be32_to_cpup(spd) : 0;
0ebfff1491ef85 Benjamin Herrenschmidt 2006-07-03  146  	legacy_serial_infos[index].irq_check_parent = irq_check_parent;
463ce0e103f419 Benjamin Herrenschmidt 2005-11-23  147  
7df5659eefad9b Arnd Bergmann          2011-06-27  148  	if (iotype == UPIO_TSI) {
7df5659eefad9b Arnd Bergmann          2011-06-27 @149  		legacy_serial_ports[index].serial_in = tsi_serial_in;
7df5659eefad9b Arnd Bergmann          2011-06-27 @150  		legacy_serial_ports[index].serial_out = tsi_serial_out;
7df5659eefad9b Arnd Bergmann          2011-06-27  151  	}
7df5659eefad9b Arnd Bergmann          2011-06-27  152  
b7c670d673d118 Rob Herring            2017-08-21  153  	printk(KERN_DEBUG "Found legacy serial port %d for %pOF\n",
b7c670d673d118 Rob Herring            2017-08-21  154  	       index, np);
0ebfff1491ef85 Benjamin Herrenschmidt 2006-07-03  155  	printk(KERN_DEBUG "  %s=%llx, taddr=%llx, irq=%lx, clk=%d, speed=%d\n",
463ce0e103f419 Benjamin Herrenschmidt 2005-11-23  156  	       (iotype == UPIO_PORT) ? "port" : "mem",
463ce0e103f419 Benjamin Herrenschmidt 2005-11-23  157  	       (unsigned long long)base, (unsigned long long)taddr, irq,
463ce0e103f419 Benjamin Herrenschmidt 2005-11-23  158  	       legacy_serial_ports[index].uartclk,
463ce0e103f419 Benjamin Herrenschmidt 2005-11-23  159  	       legacy_serial_infos[index].speed);
463ce0e103f419 Benjamin Herrenschmidt 2005-11-23  160  
463ce0e103f419 Benjamin Herrenschmidt 2005-11-23  161  	return index;
463ce0e103f419 Benjamin Herrenschmidt 2005-11-23  162  }
463ce0e103f419 Benjamin Herrenschmidt 2005-11-23  163  

:::::: The code at line 149 was first introduced by commit
:::::: 7df5659eefad9b6d457ccdee016bd78bd064cfc0 serial/8250: Move UPIO_TSI to powerpc

:::::: TO: Arnd Bergmann <arnd@arndb.de>
:::::: CC: Benjamin Herrenschmidt <benh@kernel.crashing.org>

-- 
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:[~2025-05-13  4:15 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-05-13  4:14 [jirislaby:devel 20/64] arch/powerpc/kernel/legacy_serial.c:149:40: error: incompatible function pointer types assigning to 'u32 (*)(struct uart_port *, unsigned int)' (aka 'unsigned int (*)(struct uart_port *, unsigned int)') from 'unsigned int (struct uart_port *, int)' 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