summaryrefslogtreecommitdiff
path: root/drivers/powercap
diff options
context:
space:
mode:
authorAmelie Delaunay <amelie.delaunay@st.com>2020-01-29 16:36:27 +0100
committerVinod Koul <vkoul@kernel.org>2020-02-25 11:15:05 +0530
commit409ffc4d990c157f876f105d06e11c1f21444cb7 (patch)
tree97c70db56329ad0ff7d6bc176f909a953963c5d5 /drivers/powercap
parent32ce108833a8424c686d9f82db231a6039290d41 (diff)
dmaengine: stm32-dma: fix sleeping function called from invalid context
This patch fixes BUG: sleeping function called from invalid context in stm32_dma_disable_chan function. The goal of this function is to force channel disable if it has not been disabled by hardware. This consists in clearing STM32_DMA_SCR_EN bit and read it as 0 to ensure the channel is well disabled and the last transfer is over. In previous implementation, the waiting loop was based on a do...while (1) with a call to cond_resched to give the scheduler a chance to run a higher priority process. But in some conditions, stm32_dma_disable_chan can be called while preemption is disabled, on a stm32_dma_stop call for example. So cond_resched must not be used. To avoid this, use readl_relaxed_poll_timeout_atomic to poll STM32_DMA_SCR_EN bit cleared. Signed-off-by: Amelie Delaunay <amelie.delaunay@st.com> Link: https://lore.kernel.org/r/20200129153628.29329-8-amelie.delaunay@st.com Signed-off-by: Vinod Koul <vkoul@kernel.org>
Diffstat (limited to 'drivers/powercap')
0 files changed, 0 insertions, 0 deletions