Patch "soc: ti: omap-prm: use atomic iopoll instead of sleeping one" has been added to the 5.7-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

    soc: ti: omap-prm: use atomic iopoll instead of sleeping one

to the 5.7-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:
     soc-ti-omap-prm-use-atomic-iopoll-instead-of-sleepin.patch
and it can be found in the queue-5.7 subdirectory.

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



commit 1c988ce76f672c8249dd8c22c939b4d04b72c55f
Author: Tero Kristo <t-kristo@xxxxxx>
Date:   Thu May 14 10:37:18 2020 +0300

    soc: ti: omap-prm: use atomic iopoll instead of sleeping one
    
    [ Upstream commit 98ece19f247159a51003796ede7112fef2df5d7f ]
    
    The reset handling APIs for omap-prm can be invoked PM runtime which
    runs in atomic context. For this to work properly, switch to atomic
    iopoll version instead of the current which can sleep. Otherwise,
    this throws a "BUG: scheduling while atomic" warning. Issue is seen
    rather easily when CONFIG_PREEMPT is enabled.
    
    Signed-off-by: Tero Kristo <t-kristo@xxxxxx>
    Acked-by: Santosh Shilimkar <ssantosh@xxxxxxxxxx>
    Signed-off-by: Tony Lindgren <tony@xxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/soc/ti/omap_prm.c b/drivers/soc/ti/omap_prm.c
index 96c6f777519c0..c9b3f9ebf0bbf 100644
--- a/drivers/soc/ti/omap_prm.c
+++ b/drivers/soc/ti/omap_prm.c
@@ -256,10 +256,10 @@ static int omap_reset_deassert(struct reset_controller_dev *rcdev,
 		goto exit;
 
 	/* wait for the status to be set */
-	ret = readl_relaxed_poll_timeout(reset->prm->base +
-					 reset->prm->data->rstst,
-					 v, v & BIT(st_bit), 1,
-					 OMAP_RESET_MAX_WAIT);
+	ret = readl_relaxed_poll_timeout_atomic(reset->prm->base +
+						 reset->prm->data->rstst,
+						 v, v & BIT(st_bit), 1,
+						 OMAP_RESET_MAX_WAIT);
 	if (ret)
 		pr_err("%s: timedout waiting for %s:%lu\n", __func__,
 		       reset->prm->data->name, id);



[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