• Marek Vasut's avatar
    spi: stm32: Rate-limit the 'Communication suspended' message · ea8be08c
    Marek Vasut authored
    The 'spi_stm32 44004000.spi: Communication suspended' message means that
    when using PIO, the kernel did not read the FIFO fast enough and so the
    SPI controller paused the transfer. Currently, this is printed on every
    single such event, so if the kernel is busy and the controller is pausing
    the transfers often, the kernel will be all the more busy scrolling this
    message into the log buffer every few milliseconds. That is not helpful.
    
    Instead, rate-limit the message and print it every once in a while. It is
    not possible to use the default dev_warn_ratelimited(), because that is
    still too verbose, as it prints 10 lines (DEFAULT_RATELIMIT_BURST) every
    5 seconds (DEFAULT_RATELIMIT_INTERVAL). The policy here is to print 1 line
    every 50 seconds (DEFAULT_RATELIMIT_INTERVAL * 10), because 1 line is more
    than enough and the cycles saved on printing are better left to the CPU to
    handle the SPI. However, dev_warn_once() is also not useful, as the user
    should be aware that this condition is possibly recurring or ongoing. Thus
    the custom rate-limit policy.
    
    Finally, turn the message from dev_warn() to dev_dbg(), since the system
    does not suffer any sort of malfunction if this message appears, it is
    just slowing down. This further reduces the printing into the log buffer
    and frees the CPU to do useful work.
    
    Fixes: dcbe0d84 ("spi: add driver for STM32 SPI controller")
    Signed-off-by: default avatarMarek Vasut <marex@denx.de>
    Cc: Alexandre Torgue <alexandre.torgue@st.com>
    Cc: Amelie Delaunay <amelie.delaunay@st.com>
    Cc: Antonio Borneo <borneo.antonio@gmail.com>
    Cc: Mark Brown <broonie@kernel.org>
    Link: https://lore.kernel.org/r/20200905151913.117775-1-marex@denx.deSigned-off-by: default avatarMark Brown <broonie@kernel.org>
    ea8be08c
spi-stm32.c 58.7 KB