Patch "coresight: etm4x: Skip accessing TRCPDCR in save/restore" has been added to the 5.10-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

    coresight: etm4x: Skip accessing TRCPDCR in save/restore

to the 5.10-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:
     coresight-etm4x-skip-accessing-trcpdcr-in-save-resto.patch
and it can be found in the queue-5.10 subdirectory.

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



commit 75a98833038241ab7e19d0497526074a5a9beab9
Author: Suzuki K Poulose <suzuki.poulose@xxxxxxx>
Date:   Mon Feb 1 11:13:24 2021 -0700

    coresight: etm4x: Skip accessing TRCPDCR in save/restore
    
    [ Upstream commit df81b43802f43c0954a55e5d513e8750a1ab4d31 ]
    
    When the ETM is affected by Qualcomm errata, modifying the
    TRCPDCR could cause the system hang. Even though this is
    taken care of during enable/disable ETM, the ETM state
    save/restore could still access the TRCPDCR. Make sure
    we skip the access during the save/restore.
    
    Found by code inspection.
    
    Link: https://lore.kernel.org/r/20210110224850.1880240-3-suzuki.poulose@xxxxxxx
    Fixes: 02510a5aa78d ("coresight: etm4x: Add support to skip trace unit power up")
    Cc: Mathieu Poirier <mathieu.poirier@xxxxxxxxxx>
    Cc: Mike Leach <mike.leach@xxxxxxxxxx>
    Cc: Sai Prakash Ranjan <saiprakash.ranjan@xxxxxxxxxxxxxx>
    Cc: Tingwei Zhang <tingwei@xxxxxxxxxxxxxx>
    Tested-by: Sai Prakash Ranjan <saiprakash.ranjan@xxxxxxxxxxxxxx>
    Reviewed-by: Sai Prakash Ranjan <saiprakash.ranjan@xxxxxxxxxxxxxx>
    Signed-off-by: Suzuki K Poulose <suzuki.poulose@xxxxxxx>
    Signed-off-by: Mathieu Poirier <mathieu.poirier@xxxxxxxxxx>
    Link: https://lore.kernel.org/r/20210201181351.1475223-5-mathieu.poirier@xxxxxxxxxx
    Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/hwtracing/coresight/coresight-etm4x-core.c b/drivers/hwtracing/coresight/coresight-etm4x-core.c
index 95b54b0a36252..8b6666e6fddbf 100644
--- a/drivers/hwtracing/coresight/coresight-etm4x-core.c
+++ b/drivers/hwtracing/coresight/coresight-etm4x-core.c
@@ -1254,7 +1254,8 @@ static int etm4_cpu_save(struct etmv4_drvdata *drvdata)
 
 	state->trcclaimset = readl(drvdata->base + TRCCLAIMCLR);
 
-	state->trcpdcr = readl(drvdata->base + TRCPDCR);
+	if (!drvdata->skip_power_up)
+		state->trcpdcr = readl(drvdata->base + TRCPDCR);
 
 	/* wait for TRCSTATR.IDLE to go up */
 	if (coresight_timeout(drvdata->base, TRCSTATR, TRCSTATR_IDLE_BIT, 1)) {
@@ -1272,9 +1273,9 @@ static int etm4_cpu_save(struct etmv4_drvdata *drvdata)
 	 * potentially save power on systems that respect the TRCPDCR_PU
 	 * despite requesting software to save/restore state.
 	 */
-	writel_relaxed((state->trcpdcr & ~TRCPDCR_PU),
-			drvdata->base + TRCPDCR);
-
+	if (!drvdata->skip_power_up)
+		writel_relaxed((state->trcpdcr & ~TRCPDCR_PU),
+				drvdata->base + TRCPDCR);
 out:
 	CS_LOCK(drvdata->base);
 	return ret;
@@ -1368,7 +1369,8 @@ static void etm4_cpu_restore(struct etmv4_drvdata *drvdata)
 
 	writel_relaxed(state->trcclaimset, drvdata->base + TRCCLAIMSET);
 
-	writel_relaxed(state->trcpdcr, drvdata->base + TRCPDCR);
+	if (!drvdata->skip_power_up)
+		writel_relaxed(state->trcpdcr, drvdata->base + TRCPDCR);
 
 	drvdata->state_needs_restore = false;
 



[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