From 870adafb68129c795d3d178f6ae2585228310c2f Mon Sep 17 00:00:00 2001 From: Benjamin Chan Date: Thu, 15 Sep 2016 22:49:49 -0400 Subject: [PATCH] msm: sde: Move SDE rotator timeout evtlog outside of spinlock During an timeout event in the SDE rotator driver, a spinlock with IRQ is disabled in order to capture the rotator hw status registers. If during this time performs an evtlog timeout logging, a mutex_lock within the logging sequence will cause a panic. We must and only should perform the evtlog timeout logging after the spinlock is released. CRs-Fixed: 1067811 Change-Id: I56b7e5713069ad8ac8d5ae43a492a0ab0f4e82ff Signed-off-by: Benjamin Chan --- drivers/media/platform/msm/sde/rotator/sde_rotator_r3.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/media/platform/msm/sde/rotator/sde_rotator_r3.c b/drivers/media/platform/msm/sde/rotator/sde_rotator_r3.c index 548131393835..e9d2dd5ec972 100644 --- a/drivers/media/platform/msm/sde/rotator/sde_rotator_r3.c +++ b/drivers/media/platform/msm/sde/rotator/sde_rotator_r3.c @@ -356,8 +356,6 @@ static void sde_hw_rotator_dump_status(struct sde_hw_rotator *rot) REGDMA_CSR_REGDMA_INVALID_CMD_RAM_OFFSET), SDE_ROTREG_READ(rot->mdss_base, REGDMA_CSR_REGDMA_FSM_STATE)); - - SDEROT_EVTLOG_TOUT_HANDLER("rot", "vbif_dbg_bus", "panic"); } /** @@ -1096,6 +1094,9 @@ static u32 sde_hw_rotator_wait_done_regdma( sts = (status & ROT_ERROR_BIT) ? -ENODEV : 0; + if (status & ROT_ERROR_BIT) + SDEROT_EVTLOG_TOUT_HANDLER("rot", "vbif_dbg_bus", "panic"); + return sts; }