Patch "dmaengine: pl330: issue_pending waits until WFP state" has been added to the 5.4-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    dmaengine: pl330: issue_pending waits until WFP state

to the 5.4-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     dmaengine-pl330-issue_pending-waits-until-wfp-state.patch
and it can be found in the queue-5.4 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 76ffcf0a9b4ee1e48e9f7ff7e68ace9bc1b457e6
Author: Bumyong Lee <bumyong.lee@xxxxxxxxxxx>
Date:   Tue Dec 19 14:50:26 2023 +0900

    dmaengine: pl330: issue_pending waits until WFP state
    
    [ Upstream commit 22a9d9585812440211b0b34a6bc02ade62314be4 ]
    
    According to DMA-330 errata notice[1] 71930, DMAKILL
    cannot clear internal signal, named pipeline_req_active.
    it makes that pl330 would wait forever in WFP state
    although dma already send dma request if pl330 gets
    dma request before entering WFP state.
    
    The errata suggests that polling until entering WFP state
    as workaround and then peripherals allows to issue dma request.
    
    [1]: https://developer.arm.com/documentation/genc008428/latest
    
    Signed-off-by: Bumyong Lee <bumyong.lee@xxxxxxxxxxx>
    Link: https://lore.kernel.org/r/20231219055026.118695-1-bumyong.lee@xxxxxxxxxxx
    Signed-off-by: Vinod Koul <vkoul@xxxxxxxxxx>
    Stable-dep-of: afc89870ea67 ("dmaengine: Revert "dmaengine: pl330: issue_pending waits until WFP state"")
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/dma/pl330.c b/drivers/dma/pl330.c
index 1d7d4b8d810a5..d12939c25a618 100644
--- a/drivers/dma/pl330.c
+++ b/drivers/dma/pl330.c
@@ -1051,6 +1051,9 @@ static bool _trigger(struct pl330_thread *thrd)
 
 	thrd->req_running = idx;
 
+	if (desc->rqtype == DMA_MEM_TO_DEV || desc->rqtype == DMA_DEV_TO_MEM)
+		UNTIL(thrd, PL330_STATE_WFP);
+
 	return true;
 }
 




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux