Quoting Jordan Crouse (2018-04-05 23:00:50) > diff --git a/drivers/gpu/drm/msm/msm_debugfs.c b/drivers/gpu/drm/msm/msm_debugfs.c > index ba74cb4f94df..fd535dab3d5b 100644 > --- a/drivers/gpu/drm/msm/msm_debugfs.c > +++ b/drivers/gpu/drm/msm/msm_debugfs.c > @@ -25,13 +25,22 @@ static int msm_gpu_show(struct drm_device *dev, struct seq_file *m) > { > struct msm_drm_private *priv = dev->dev_private; > struct msm_gpu *gpu = priv->gpu; > + struct msm_gpu_state *state; > > - if (gpu) { > - seq_printf(m, "%s Status:\n", gpu->name); > - pm_runtime_get_sync(&gpu->pdev->dev); > - gpu->funcs->show(gpu, m); > - pm_runtime_put_sync(&gpu->pdev->dev); > - } > + if (!gpu) > + return 0; > + > + pm_runtime_get_sync(&gpu->pdev->dev); > + state = gpu->funcs->gpu_state_get(gpu); > + pm_runtime_put_sync(&gpu->pdev->dev); > + > + if (IS_ERR(state)) > + return PTR_ERR(state); > + > + seq_printf(m, "%s Status:\n", gpu->name); > + gpu->funcs->show(gpu, state, m); > + > + gpu->funcs->gpu_state_put(state); Ah. This be trickier than it appears thanks to how seq_file tries to keep the interface simple :) For a large buffer, seq_file will call the show multiple times to convert it into a single string, which it then iterates over. (iirc) Ideally, you grab the error state on open, and then use the drm_printer_iterator you have to feed the chunks to seqfs. At a minimum, I do recommend you stick the get into the seq_open callback, as my memory says the show will be called multiple times. -Chris -- To unsubscribe from this list: send the line "unsubscribe linux-arm-msm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html