[PATCH v3 17/31] coresight: etm4x: Remove redundant condition checks in save and restore
Mike Leach
mike.leach at linaro.org
Thu Oct 2 05:57:38 PDT 2025
On Mon, 15 Sept 2025 at 11:34, Leo Yan <leo.yan at arm.com> wrote:
>
> Since a dedicated callback is now used to determine whether context save
> and restore operations are needed, performing the same check within the
> save and restore callbacks is redundant.
>
> The save and restore flows currently use two-level functions: the first
> level handles the condition check, while the second level performs the
> low level operations. As the checks are no longer necessary, simplify
> the logic into single-level functions.
>
> Signed-off-by: Leo Yan <leo.yan at arm.com>
> ---
> drivers/hwtracing/coresight/coresight-etm4x-core.c | 35 ++--------------------
> 1 file changed, 3 insertions(+), 32 deletions(-)
>
> diff --git a/drivers/hwtracing/coresight/coresight-etm4x-core.c b/drivers/hwtracing/coresight/coresight-etm4x-core.c
> index 66aefdb002f075446572df9c4eed9093da19a066..b63433e80d305588c18b084408496690480a7af0 100644
> --- a/drivers/hwtracing/coresight/coresight-etm4x-core.c
> +++ b/drivers/hwtracing/coresight/coresight-etm4x-core.c
> @@ -1854,10 +1854,10 @@ static bool etm4_need_context_save_restore(struct coresight_device *csdev)
> return false;
> }
>
> -static int __etm4_cpu_save(struct etmv4_drvdata *drvdata)
> +static int etm4_cpu_save(struct coresight_device *csdev)
> {
> int ret = 0;
> - struct coresight_device *csdev = drvdata->csdev;
> + struct etmv4_drvdata *drvdata = dev_get_drvdata(csdev->dev.parent);
> struct csdev_access *csa;
> struct device *etm_dev;
>
> @@ -1905,40 +1905,11 @@ static int __etm4_cpu_save(struct etmv4_drvdata *drvdata)
> return ret;
> }
>
> -static int etm4_cpu_save(struct coresight_device *csdev)
> -{
> - struct etmv4_drvdata *drvdata = dev_get_drvdata(csdev->dev.parent);
> - int ret = 0;
> -
> - if (pm_save_enable != PARAM_PM_SAVE_SELF_HOSTED)
> - return 0;
> -
> - /*
> - * Save and restore the ETM Trace registers only if
> - * the ETM is active.
> - */
> - if (coresight_get_mode(drvdata->csdev))
> - ret = __etm4_cpu_save(drvdata);
> - return ret;
> -}
> -
> -static void __etm4_cpu_restore(struct etmv4_drvdata *drvdata)
> -{
> - if (WARN_ON(!drvdata->csdev))
> - return;
> -
> - etm4_enable_hw(drvdata, false);
> -}
> -
> static void etm4_cpu_restore(struct coresight_device *csdev)
> {
> struct etmv4_drvdata *drvdata = dev_get_drvdata(csdev->dev.parent);
>
> - if (pm_save_enable != PARAM_PM_SAVE_SELF_HOSTED)
> - return;
> -
> - if (coresight_get_mode(drvdata->csdev))
> - __etm4_cpu_restore(drvdata);
> + etm4_enable_hw(drvdata, false);
> }
>
> static const struct coresight_ops_source etm4_source_ops = {
>
> --
> 2.34.1
>
Reviewed-by: Mike Leach <mike.leach at linaro.org>
--
Mike Leach
Principal Engineer, ARM Ltd.
Manchester Design Centre. UK
More information about the linux-arm-kernel
mailing list