Commit 33159b9f authored by Suzuki K Poulose's avatar Suzuki K Poulose Committed by Junhao He
Browse files

coresight: etm4x: Do not hardcode IOMEM access for register restore

mainline inclusion
from mainline-v6.10-rc1
commit 1e7ba33fa591de1cf60afffcabb45600b3607025
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/IAKVFA
CVE: NA

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=1e7ba33fa591de1cf60afffcabb45600b3607025



--------------------------------

When we restore the register state for ETM4x, while coming back
from CPU idle, we hardcode IOMEM access. This is wrong and could
blow up for an ETM with system instructions access (and for ETE).

Fixes: f5bd5236 ("coresight: etm4x: Convert all register accesses")
Reported-by: default avatarYabin Cui <yabinc@google.com>
Reviewed-by: default avatarMike Leach <mike.leach@linaro.org>
Signed-off-by: default avatarSuzuki K Poulose <suzuki.poulose@arm.com>
Tested-by: default avatarYabin Cui <yabinc@google.com>
Link: https://lore.kernel.org/r/20240412142702.2882478-2-suzuki.poulose@arm.com


Signed-off-by: default avatarJunhao He <hejunhao3@huawei.com>
parent 0566c194
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -1755,8 +1755,10 @@ static void __etm4_cpu_restore(struct etmv4_drvdata *drvdata)
{
	int i;
	struct etmv4_save_state *state = drvdata->save_state;
	struct csdev_access tmp_csa = CSDEV_ACCESS_IOMEM(drvdata->base);
	struct csdev_access *csa = &tmp_csa;
	struct csdev_access *csa = &drvdata->csdev->access;

	if (WARN_ON(!drvdata->csdev))
		return;

	etm4_cs_unlock(drvdata, csa);
	etm4x_relaxed_write32(csa, state->trcclaimset, TRCCLAIMSET);