static void mdp5_irq_error_handler(struct mdp_irq *irq, uint32_t irqstatus) { struct mdp5_kms *mdp5_kms = container_of(irq, struct mdp5_kms, error_handler); static DEFINE_RATELIMIT_STATE(rs, 5*HZ, 1); extern bool dumpstate; DRM_ERROR_RATELIMITED("errors: %08x\n", irqstatus); if (dumpstate && __ratelimit(&rs)) { struct drm_printer p = drm_info_printer(mdp5_kms->dev->dev); drm_state_dump(mdp5_kms->dev, &p); if (mdp5_kms->smp) mdp5_smp_dump(mdp5_kms->smp, &p); } }
static int smp_show(struct seq_file *m, void *arg) { struct drm_info_node *node = (struct drm_info_node *) m->private; struct drm_device *dev = node->minor->dev; struct msm_drm_private *priv = dev->dev_private; struct mdp5_kms *mdp5_kms = to_mdp5_kms(to_mdp_kms(priv->kms)); struct drm_printer p = drm_seq_file_printer(m); if (!mdp5_kms->smp) { drm_printf(&p, "no SMP pool\n"); return 0; } mdp5_smp_dump(mdp5_kms->smp, &p); return 0; }