linux/drivers/hwtracing/coresight
Suzuki K Poulose b9866bb168 coresight: Handle failures in enabling a trace path
coresight_enable_path() enables the components in a trace
path from a given source to a sink, excluding the source.
The operation is performed in the reverse order; the sink
first and then backwards in the list. However, if we encounter
an error in enabling any of the component, we simply disable
all the components in the given path irrespective of whether
we enabled some of the components in the enable iteration.
This could interfere with another trace session if one of the
link devices is turned off (e.g, TMC-ETF). So, we need to
make sure that we only disable those components which were
actually enabled from the iteration.

This patch achieves the same by refactoring the coresight_disable_path
to accept a "node" to start from in the forward order, which can
then be used from the error path of coresight_enable_path().
With this change, we don't issue a disable call back for a component
which didn't get enabled. This change of behavior triggers
a bug in coresight_enable_link(), where we leave the refcount
on the device and will prevent the device from being enabled
forever. So, we also drop the refcount in the coresight_enable_link()
if the operation failed.

Also, with the refactoring, we always start after the first node (which
is the "SOURCE" device) for disabling the entire path. This implies,
we must not find a "SOURCE" in the middle of the path. Hence, added
a WARN_ON() to make sure the paths we get are sane, rather than
simply ignoring them.

Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com>
Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2018-09-25 20:09:18 +02:00
..
coresight-catu.c coresight: catu: Plug in CATU as a backend for ETR buffer 2018-07-15 13:52:59 +02:00
coresight-catu.h coresight: catu: Plug in CATU as a backend for ETR buffer 2018-07-15 13:52:59 +02:00
coresight-cpu-debug.c coresight: Remove %px for printing pcsr value 2018-05-14 16:20:00 +02:00
coresight-dynamic-replicator.c coresight: Convert driver messages to dev_dbg 2018-09-25 20:09:17 +02:00
coresight-etb10.c coresight: etb10: Splitting function etb_enable() 2018-09-25 20:09:18 +02:00
coresight-etm3x-sysfs.c coresight: etm3x: Don't use contextID with PID namespaces 2018-07-15 13:52:56 +02:00
coresight-etm3x.c coresight: Convert driver messages to dev_dbg 2018-09-25 20:09:17 +02:00
coresight-etm4x-sysfs.c coresight: etm4x: Don't use contextID with PID namespaces 2018-07-15 13:52:56 +02:00
coresight-etm4x.c coresight: etm4x: Configure EL2 exception level when kernel is running in HYP 2018-09-25 20:09:18 +02:00
coresight-etm4x.h coresight: etm4x: Don't use contextID with PID namespaces 2018-07-15 13:52:56 +02:00
coresight-etm-cp14.c coresight: Moving framework and drivers to SPDX identifier 2018-05-14 16:19:59 +02:00
coresight-etm-perf.c coresight: perf: Remove set_buffer call back 2018-09-25 20:09:18 +02:00
coresight-etm-perf.h coresight: perf: Add helper to retrieve sink configuration 2018-09-25 20:09:18 +02:00
coresight-etm.h coresight: etm3x: Don't use contextID with PID namespaces 2018-07-15 13:52:56 +02:00
coresight-funnel.c coresight: Convert driver messages to dev_dbg 2018-09-25 20:09:17 +02:00
coresight-priv.h coresight: perf: Remove set_buffer call back 2018-09-25 20:09:18 +02:00
coresight-replicator.c coresight: Convert driver messages to dev_dbg 2018-09-25 20:09:17 +02:00
coresight-stm.c coresight: Convert driver messages to dev_dbg 2018-09-25 20:09:17 +02:00
coresight-tmc-etf.c coresight: tmc: Fix byte-address alignment for RRP 2018-09-25 20:09:18 +02:00
coresight-tmc-etr.c coresight: etm-perf: Add support for ETR backend 2018-09-25 20:09:18 +02:00
coresight-tmc.c coresight: Convert driver messages to dev_dbg 2018-09-25 20:09:17 +02:00
coresight-tmc.h coresight: etm-perf: Add support for ETR backend 2018-09-25 20:09:18 +02:00
coresight-tpiu.c coresight: perf: Remove set_buffer call back 2018-09-25 20:09:18 +02:00
coresight.c coresight: Handle failures in enabling a trace path 2018-09-25 20:09:18 +02:00
Kconfig coresight: Introduce support for Coresight Address Translation Unit 2018-07-15 13:52:58 +02:00
Makefile coresight: Introduce support for Coresight Address Translation Unit 2018-07-15 13:52:58 +02:00
of_coresight.c coresight: Cleanup coresight DT bindings 2018-09-25 20:09:17 +02:00