Re: [PATCH v3 2/4] drm/vc4: dsi: Rate-limit error interrupt messages

From: Dave Stevenson

Date: Wed Oct 28 2026 - 10:54:04 EST


On Mon, 26 Oct 2026 at 19:16, Henry Zhang <henryzhang62@xxxxxxxxx> wrote:
>
> The error interrupts (contention, sequence and timeout errors) are
> always enabled and each one is logged with drm_err() from the interrupt
> handler. When a peripheral leaves the data lanes in a bad state, the
> same error is raised again as soon as it is acknowledged. On a
> Raspberry Pi 4 a "data lane 0 sequence error" was seen at more than
> 50000 interrupts per second; printing every one of them, mostly to a
> serial console, starved the rest of the system to the point that the
> SD card driver timed out and the board had to be reset.
>
> Use drm_err_ratelimited() so that the errors stay visible without
> taking the system down.
>
> Signed-off-by: Henry Zhang <henryzhang62@xxxxxxxxx>

Reviewed-by: Dave Stevenson <dave.stevenson@xxxxxxxxxxxxxxx>

> ---
> drivers/gpu/drm/vc4/vc4_dsi.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/vc4/vc4_dsi.c b/drivers/gpu/drm/vc4/vc4_dsi.c
> index 5452b727a..face44a23 100644
> --- a/drivers/gpu/drm/vc4/vc4_dsi.c
> +++ b/drivers/gpu/drm/vc4/vc4_dsi.c
> @@ -1487,8 +1487,8 @@ static void dsi_handle_error(struct vc4_dsi *dsi,
> if (!(stat & bit))
> return;
>
> - drm_err(dsi->bridge.dev, "DSI%d: %s error\n", dsi->variant->port,
> - type);
> + drm_err_ratelimited(dsi->bridge.dev, "DSI%d: %s error\n",
> + dsi->variant->port, type);
> *ret = IRQ_HANDLED;
> }
>
> --
> 2.47.3
>