[PATCH v1 2/2] LRW UART: serial: add driver for the LRW UART

kernel test robot lkp at intel.com
Fri Feb 13 08:27:22 PST 2026


Hi LiuQingtao,

kernel test robot noticed the following build warnings:

[auto build test WARNING on tty/tty-testing]
[also build test WARNING on tty/tty-next tty/tty-linus robh/for-next usb/usb-testing usb/usb-next usb/usb-linus linus/master v6.19 next-20260212]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/LiuQingtao/LRW-UART-dt-bindings-Add-binding-for-LRW-UART/20260213-173610
base:   https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty.git tty-testing
patch link:    https://lore.kernel.org/r/20260213093334.9217-3-qtliu%40mail.ustc.edu.cn
patch subject: [PATCH v1 2/2] LRW UART: serial: add driver for the LRW UART
config: m68k-allmodconfig (https://download.01.org/0day-ci/archive/20260214/202602140029.NXkDToZ7-lkp@intel.com/config)
compiler: m68k-linux-gcc (GCC) 15.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260214/202602140029.NXkDToZ7-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 at intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202602140029.NXkDToZ7-lkp@intel.com/

All warnings (new ones prefixed by >>):

   In file included from arch/m68k/include/asm/bug.h:32,
                    from include/linux/bug.h:5,
                    from include/linux/thread_info.h:13,
                    from include/asm-generic/preempt.h:5,
                    from ./arch/m68k/include/generated/asm/preempt.h:1,
                    from include/linux/preempt.h:79,
                    from include/linux/spinlock.h:56,
                    from include/linux/mmzone.h:8,
                    from include/linux/gfp.h:7,
                    from include/linux/umh.h:4,
                    from include/linux/kmod.h:9,
                    from include/linux/module.h:18,
                    from drivers/tty/serial/lrw_uart.c:8:
   drivers/tty/serial/lrw_uart.c: In function 'lrw_uart_dma_rx_irq':
>> drivers/tty/serial/lrw_uart.c:973:23: warning: format '%zu' expects argument of type 'size_t', but argument 6 has type 'long unsigned int' [-Wformat=]
     973 |                       "pending %zu exceeds DMA buffer size %zu\n",
         |                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/asm-generic/bug.h:142:62: note: in definition of macro '__WARN_printf'
     142 |                 warn_slowpath_fmt(__FILE__, __LINE__, taint, arg);      \
         |                                                              ^~~
   include/linux/once_lite.h:31:25: note: in expansion of macro 'WARN'
      31 |                         func(__VA_ARGS__);                              \
         |                         ^~~~
   include/asm-generic/bug.h:185:9: note: in expansion of macro 'DO_ONCE_LITE_IF'
     185 |         DO_ONCE_LITE_IF(condition, WARN, 1, format)
         |         ^~~~~~~~~~~~~~~
   drivers/tty/serial/lrw_uart.c:972:13: note: in expansion of macro 'WARN_ONCE'
     972 |         if (WARN_ONCE(pending > LRW_UART_DMA_BUFFER_SIZE,
         |             ^~~~~~~~~
   drivers/tty/serial/lrw_uart.c:973:62: note: format string is defined here
     973 |                       "pending %zu exceeds DMA buffer size %zu\n",
         |                                                            ~~^
         |                                                              |
         |                                                              unsigned int
         |                                                            %lu
   drivers/tty/serial/lrw_uart.c: In function 'lrw_uart_dma_rx_callback':
   drivers/tty/serial/lrw_uart.c:1022:23: warning: format '%zu' expects argument of type 'size_t', but argument 6 has type 'long unsigned int' [-Wformat=]
    1022 |                       "pending %zu exceeds DMA buffer size %zu\n",
         |                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/asm-generic/bug.h:142:62: note: in definition of macro '__WARN_printf'
     142 |                 warn_slowpath_fmt(__FILE__, __LINE__, taint, arg);      \
         |                                                              ^~~
   include/linux/once_lite.h:31:25: note: in expansion of macro 'WARN'
      31 |                         func(__VA_ARGS__);                              \
         |                         ^~~~
   include/asm-generic/bug.h:185:9: note: in expansion of macro 'DO_ONCE_LITE_IF'
     185 |         DO_ONCE_LITE_IF(condition, WARN, 1, format)
         |         ^~~~~~~~~~~~~~~
   drivers/tty/serial/lrw_uart.c:1021:13: note: in expansion of macro 'WARN_ONCE'
    1021 |         if (WARN_ONCE(pending > LRW_UART_DMA_BUFFER_SIZE,
         |             ^~~~~~~~~
   drivers/tty/serial/lrw_uart.c:1022:62: note: format string is defined here
    1022 |                       "pending %zu exceeds DMA buffer size %zu\n",
         |                                                            ~~^
         |                                                              |
         |                                                              unsigned int
         |                                                            %lu


vim +973 drivers/tty/serial/lrw_uart.c

   943	
   944	static void lrw_uart_dma_rx_irq(struct lrw_uart_port *sup)
   945	{
   946		struct lrw_uart_dmarx_data *dmarx = &sup->dmarx;
   947		struct dma_chan *rxchan = dmarx->chan;
   948		struct lrw_uart_dmabuf *dbuf = dmarx->use_buf_b ?
   949			&dmarx->dbuf_b : &dmarx->dbuf_a;
   950		size_t pending;
   951		struct dma_tx_state state;
   952		enum dma_status dmastat;
   953	
   954		/*
   955		 * Pause the transfer so we can trust the current counter,
   956		 * do this before we pause the LRW UART block, else we may
   957		 * overflow the FIFO.
   958		 */
   959		if (dmaengine_pause(rxchan))
   960			dev_err(sup->port.dev, "unable to pause DMA transfer\n");
   961		dmastat = rxchan->device->device_tx_status(rxchan,
   962							   dmarx->cookie, &state);
   963		if (dmastat != DMA_PAUSED)
   964			dev_err(sup->port.dev, "unable to pause DMA transfer\n");
   965	
   966		/* Disable RX DMA - incoming data will wait in the FIFO */
   967		sup->dmacr &= ~UARTFCCR_RXDMAE;
   968		lrw_uart_write(sup->dmacr, sup, REG_FCCR);
   969		sup->dmarx.running = false;
   970	
   971		pending = dbuf->len - state.residue;
   972		if (WARN_ONCE(pending > LRW_UART_DMA_BUFFER_SIZE,
 > 973			      "pending %zu exceeds DMA buffer size %zu\n",
   974			      pending, LRW_UART_DMA_BUFFER_SIZE))
   975			pending = LRW_UART_DMA_BUFFER_SIZE;
   976		/* Then we terminate the transfer - we now know our residue */
   977		dmaengine_terminate_all(rxchan);
   978	
   979		/*
   980		 * This will take the chars we have so far and insert
   981		 * into the framework.
   982		 */
   983		lrw_uart_dma_rx_chars(sup, pending, dmarx->use_buf_b, true);
   984	
   985		/* Switch buffer & re-trigger DMA job */
   986		dmarx->use_buf_b = !dmarx->use_buf_b;
   987		if (lrw_uart_dma_rx_trigger_dma(sup)) {
   988			dev_dbg(sup->port.dev,
   989				"could not retrigger RX DMA job fall back to interrupt mode\n");
   990			sup->im |= UARTIMSC_RXIM;
   991			lrw_uart_write(sup->im, sup, REG_IMSC);
   992		}
   993	}
   994	

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



More information about the linux-riscv mailing list