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

kernel test robot
2026-02-13T16:28:02Z

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@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