On Mon, 26 Oct 2026 at 19:16, Henry Zhang <[email protected]> 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 <[email protected]>
Reviewed-by: Dave Stevenson <[email protected]> > --- > 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 >
