[PATCH v6 00/13] fix several inconsistencies with sysfs configuration in etmX

Yeoreum Yun posted 13 patches 1 month, 3 weeks ago
There is a newer version of this series
drivers/hwtracing/coresight/coresight-etm.h   |  46 ++-
.../coresight/coresight-etm3x-core.c          | 101 ++---
.../coresight/coresight-etm3x-sysfs.c         | 159 +++----
.../hwtracing/coresight/coresight-etm4x-cfg.c |   3 +-
.../coresight/coresight-etm4x-core.c          | 388 ++++++++++--------
.../coresight/coresight-etm4x-sysfs.c         | 202 +++++----
drivers/hwtracing/coresight/coresight-etm4x.h | 190 +++++----
7 files changed, 606 insertions(+), 483 deletions(-)
[PATCH v6 00/13] fix several inconsistencies with sysfs configuration in etmX
Posted by Yeoreum Yun 1 month, 3 weeks ago
The current ETMx configuration via sysfs can lead to the following
inconsistencies:

  - If a configuration is modified via sysfs while a perf session is
    active, the running configuration may differ between before
    a sched-out and after a subsequent sched-in.

  - If a perf session and sysfs session tries to enable concurrently,
    configuration from configfs could be corrupted (etm4).

  - There is chance to corrupt drvdata->config if perf session tries
    to enabled among handling cscfg_csdev_disable_active_config()
    in etm4_disable_sysfs() (etm4).

To resolve these inconsistencies, the configuration should be separated into:

  - active_config, which is applied configuration for the current session
  - config, which stores the settings configured via sysfs.

and apply configuration from configfs after taking a mode.

Also, This patch set includes some small fixes:
  - missing trace id release in etm4x.
  - underflow issue for nrseqstate.
  - wrong check in etm4x_sspcicrn_present().
  - missing call of cscfg_csdev_disable_active_config()

This patch based on v7.0

Patch History
=============
from v5 to v6:
  - fix missing of calling cscfg_csdev_disable_active_config()
  - add rb & fixes tags.
  - add ss_status field in etm4x_drvdata to expose STATUS and PENDING bits.
  - https://lore.kernel.org/all/20260415165528.3369607-1-yeoreum.yun@arm.com/

from v4 to v5:
  - add rb-tag.
  - fix underflow issue for nrseqstate.
  - fix wrong check in etm4_sspcicrn_present().
  - remove redundant fields on etmv4_save_state.
  - rename caps->ss_status to ss_cmp.
  - fix wrong location of etm4_release_trace_id.
  - https://lore.kernel.org/all/20260413142003.3549310-1-yeoreum.yun@arm.com/

from v3 to v4:
  - change etm_drvdata->spinlock type to raw_spin_lock_t
  - remove redundant call etmX_enable_hw() with starting_cpu() callsback.
  - fix missing trace id release.
  - add missing docs.
  - https://lore.kernel.org/all/20260412175506.412301-1-yeoreum.yun@arm.com/

from v2 to v3:
  - fix build error for etm3x.
  - fix checkpatch warning.
  - https://lore.kernel.org/all/20260410074310.2693385-1-yeoreum.yun@arm.com/

from v1 to v2
  - rebased to v7.0-rc7.
  - introduce etmX_caps structure to save etmX's capabilities.
  - remove ss_status from etmv4_config.
  - modify active_config after taking a mode (perf/sysfs).
  - https://lore.kernel.org/all/20260317181705.2456271-1-yeoreum.yun@arm.com/

Yeoreum Yun (13):
  coresight: etm4x: fix wrong check of etm4x_sspcicrn_present()
  coresight: etm4x: fix underflow for nrseqstate
  coresight: etm4x: introduce struct etm4_caps
  coresight: etm4x: exclude ss_status from drvdata->config
  coresight: etm4x: remove redundant fields in etmv4_save_state
  coresight: etm4x: fix leaked trace id
  coresight: etm4x: fix inconsistencies with sysfs configuration
  coresight: etm4x: remove redundant call etm4_enable_hw() with hotplug
  coresight: etm4x: missing cscfg_csdev_disable_active_config() in perf
    enable
  coresight: etm3x: change drvdata->spinlock type to raw_spin_lock_t
  coresight: etm3x: introduce struct etm_caps
  coresight: etm3x: fix inconsistencies with sysfs configuration
  coresight: etm3x: remove redundant call etm_enable_hw() with hotplug

 drivers/hwtracing/coresight/coresight-etm.h   |  46 ++-
 .../coresight/coresight-etm3x-core.c          | 101 ++---
 .../coresight/coresight-etm3x-sysfs.c         | 159 +++----
 .../hwtracing/coresight/coresight-etm4x-cfg.c |   3 +-
 .../coresight/coresight-etm4x-core.c          | 388 ++++++++++--------
 .../coresight/coresight-etm4x-sysfs.c         | 202 +++++----
 drivers/hwtracing/coresight/coresight-etm4x.h | 190 +++++----
 7 files changed, 606 insertions(+), 483 deletions(-)


base-commit: 028ef9c96e96197026887c0f092424679298aae8
--
LEVI:{C3F47F37-75D8-414A-A8BA-3980EC8A46D7}
Re: [PATCH v6 00/13] fix several inconsistencies with sysfs configuration in etmX
Posted by Yeoreum Yun 1 month, 2 weeks ago
Gentle ping in case of forgotten.

> The current ETMx configuration via sysfs can lead to the following
> inconsistencies:
> 
>   - If a configuration is modified via sysfs while a perf session is
>     active, the running configuration may differ between before
>     a sched-out and after a subsequent sched-in.
> 
>   - If a perf session and sysfs session tries to enable concurrently,
>     configuration from configfs could be corrupted (etm4).
> 
>   - There is chance to corrupt drvdata->config if perf session tries
>     to enabled among handling cscfg_csdev_disable_active_config()
>     in etm4_disable_sysfs() (etm4).
> 
> To resolve these inconsistencies, the configuration should be separated into:
> 
>   - active_config, which is applied configuration for the current session
>   - config, which stores the settings configured via sysfs.
> 
> and apply configuration from configfs after taking a mode.
> 
> Also, This patch set includes some small fixes:
>   - missing trace id release in etm4x.
>   - underflow issue for nrseqstate.
>   - wrong check in etm4x_sspcicrn_present().
>   - missing call of cscfg_csdev_disable_active_config()
> 
> This patch based on v7.0
> 
> Patch History
> =============
> from v5 to v6:
>   - fix missing of calling cscfg_csdev_disable_active_config()
>   - add rb & fixes tags.
>   - add ss_status field in etm4x_drvdata to expose STATUS and PENDING bits.
>   - https://lore.kernel.org/all/20260415165528.3369607-1-yeoreum.yun@arm.com/
> 
> from v4 to v5:
>   - add rb-tag.
>   - fix underflow issue for nrseqstate.
>   - fix wrong check in etm4_sspcicrn_present().
>   - remove redundant fields on etmv4_save_state.
>   - rename caps->ss_status to ss_cmp.
>   - fix wrong location of etm4_release_trace_id.
>   - https://lore.kernel.org/all/20260413142003.3549310-1-yeoreum.yun@arm.com/
> 
> from v3 to v4:
>   - change etm_drvdata->spinlock type to raw_spin_lock_t
>   - remove redundant call etmX_enable_hw() with starting_cpu() callsback.
>   - fix missing trace id release.
>   - add missing docs.
>   - https://lore.kernel.org/all/20260412175506.412301-1-yeoreum.yun@arm.com/
> 
> from v2 to v3:
>   - fix build error for etm3x.
>   - fix checkpatch warning.
>   - https://lore.kernel.org/all/20260410074310.2693385-1-yeoreum.yun@arm.com/
> 
> from v1 to v2
>   - rebased to v7.0-rc7.
>   - introduce etmX_caps structure to save etmX's capabilities.
>   - remove ss_status from etmv4_config.
>   - modify active_config after taking a mode (perf/sysfs).
>   - https://lore.kernel.org/all/20260317181705.2456271-1-yeoreum.yun@arm.com/
> 
> Yeoreum Yun (13):
>   coresight: etm4x: fix wrong check of etm4x_sspcicrn_present()
>   coresight: etm4x: fix underflow for nrseqstate
>   coresight: etm4x: introduce struct etm4_caps
>   coresight: etm4x: exclude ss_status from drvdata->config
>   coresight: etm4x: remove redundant fields in etmv4_save_state
>   coresight: etm4x: fix leaked trace id
>   coresight: etm4x: fix inconsistencies with sysfs configuration
>   coresight: etm4x: remove redundant call etm4_enable_hw() with hotplug
>   coresight: etm4x: missing cscfg_csdev_disable_active_config() in perf
>     enable
>   coresight: etm3x: change drvdata->spinlock type to raw_spin_lock_t
>   coresight: etm3x: introduce struct etm_caps
>   coresight: etm3x: fix inconsistencies with sysfs configuration
>   coresight: etm3x: remove redundant call etm_enable_hw() with hotplug
> 
>  drivers/hwtracing/coresight/coresight-etm.h   |  46 ++-
>  .../coresight/coresight-etm3x-core.c          | 101 ++---
>  .../coresight/coresight-etm3x-sysfs.c         | 159 +++----
>  .../hwtracing/coresight/coresight-etm4x-cfg.c |   3 +-
>  .../coresight/coresight-etm4x-core.c          | 388 ++++++++++--------
>  .../coresight/coresight-etm4x-sysfs.c         | 202 +++++----
>  drivers/hwtracing/coresight/coresight-etm4x.h | 190 +++++----
>  7 files changed, 606 insertions(+), 483 deletions(-)
> 
> 
> base-commit: 028ef9c96e96197026887c0f092424679298aae8
> --
> LEVI:{C3F47F37-75D8-414A-A8BA-3980EC8A46D7}
> 

-- 
Sincerely,
Yeoreum Yun
Re: [PATCH v6 00/13] fix several inconsistencies with sysfs configuration in etmX
Posted by Leo Yan 1 month, 2 weeks ago
On Fri, May 01, 2026 at 01:55:46PM +0100, Yeoreum Yun wrote:
> Gentle ping in case of forgotten.

This is on my todo list - let me finish the task in hand and then I will
play a bit this series.

Thanks,
Leo