android_kernel_samsung_sm8650/drivers/hwtracing/coresight
James Clark 6d702c7a22 coresight: Fix loss of connection info when a module is unloaded
[ Upstream commit c45b2835e7b205783bdfe08cc98fa86a7c5eeb74 ]

child_fwnode should be a read only property based on the DT or ACPI. If
it's cleared on the parent device when a child is unloaded, then when
the child is loaded again the connection won't be remade.

child_dev should be cleared instead which signifies that the connection
should be remade when the child_fwnode registers a new coresight_device.

Similarly the reference count shouldn't be decremented as long as the
parent device exists. The correct place to drop the reference is in
coresight_release_platform_data() which is already done.

Reproducible on Juno with the following steps:

  # load all coresight modules.
  $ cd /sys/bus/coresight/devices/
  $ echo 1 > tmc_etr0/enable_sink
  $ echo 1 > etm0/enable_source
  # Works fine ^

  $ echo 0 > etm0/enable_source
  $ rmmod coresight-funnel
  $ modprobe coresight-funnel
  $ echo 1 > etm0/enable_source
  -bash: echo: write error: Invalid argument

Fixes: 37ea1ffddf ("coresight: Use fwnode handle instead of device names")
Fixes: 2af89ebacf ("coresight: Clear the connection field properly")
Tested-by: Suzuki K Poulose <suzuki.poulose@arm.com>
Reviewed-by: Mike Leach <mike.leach@linaro.org>
Signed-off-by: James Clark <james.clark@arm.com>
Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com>
Link: https://lore.kernel.org/r/20230425143542.2305069-2-james.clark@arm.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
2023-07-19 16:21:54 +02:00
..
coresight-catu.c coresight: Re-use same function for similar sysfs register accessors 2022-08-31 10:55:28 -06:00
coresight-catu.h coresight: Make new csdev_access offsets unsigned 2022-08-31 10:56:36 -06:00
coresight-cfg-afdo.c coresight: config: Add preloaded configurations 2021-08-18 22:33:28 +02:00
coresight-cfg-preload.c coresight: configuration: Update API to introduce load owner concept 2021-11-26 11:27:21 -07:00
coresight-cfg-preload.h coresight: config: Add preloaded configurations 2021-08-18 22:33:28 +02:00
coresight-config.c coresight: config: Add configuration and feature generic functions 2021-08-18 22:33:27 +02:00
coresight-config.h coresight: syscfg: Update load and unload operations 2022-06-29 09:35:58 -06:00
coresight-core.c coresight: Fix loss of connection info when a module is unloaded 2023-07-19 16:21:54 +02:00
coresight-cpu-debug.c coresight: cpu-debug: Replace mutex with mutex_trylock on panic notifier 2022-05-09 16:03:24 +01:00
coresight-cti-core.c coresight: cti: Prevent negative values of enable count 2023-03-10 09:33:31 +01:00
coresight-cti-platform.c coresight: cti: Reduce scope for the variable 'cs_fwnode' in cti_plat_create_connection() 2021-02-04 17:00:32 +01:00
coresight-cti-sysfs.c coresight: cti: Add PM runtime call in enable_store 2023-03-10 09:33:31 +01:00
coresight-cti.h coresight: Include required headers in C files 2020-05-19 16:31:18 +02:00
coresight-etb10.c coresight: Re-use same function for similar sysfs register accessors 2022-08-31 10:55:28 -06:00
coresight-etm3x-core.c coresight: etm3x: Cleanup ETMTECR1 register accesses 2022-04-13 11:05:17 -06:00
coresight-etm3x-sysfs.c coresight: Re-use same function for similar sysfs register accessors 2022-08-31 10:55:28 -06:00
coresight-etm4x-cfg.c coresight: etm4x: Add complex configuration handlers to etmv4 2021-08-18 22:33:28 +02:00
coresight-etm4x-cfg.h coresight: config: Add preloaded configurations 2021-08-18 22:33:28 +02:00
coresight-etm4x-core.c coresight-etm4: Fix for() loop drvdata->nr_addr_cmp range bug 2023-04-13 16:55:30 +02:00
coresight-etm4x-sysfs.c coresight: etm4x: Expose default timestamp source in sysfs 2022-08-26 13:37:52 -06:00
coresight-etm4x.h coresight: etm4x: Do not access TRCIDR1 for identification 2023-04-13 16:55:30 +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: etm_pmu: Set the module field 2023-05-11 23:03:29 +09:00
coresight-etm-perf.h coresight: etm-perf: Update to activate selected configuration 2021-08-18 22:33:28 +02:00
coresight-etm.h coresight: etm: Clean up device specific data 2019-06-19 20:29:14 +02:00
coresight-funnel.c Merge branch 'devel-stable' of git://git.armlinux.org.uk/~rmk/linux-arm into char-misc-next 2021-02-05 11:15:43 +01:00
coresight-platform.c hwtracing: coresight: Replace acpi_bus_get_device() 2022-03-11 10:07:34 +00:00
coresight-priv.h coresight: Make new csdev_access offsets unsigned 2022-08-31 10:56:36 -06:00
coresight-replicator.c coresight: Re-use same function for similar sysfs register accessors 2022-08-31 10:55:28 -06:00
coresight-self-hosted-trace.h coresight: trbe: Prohibit trace before disabling TRBE 2021-10-27 11:45:33 -06:00
coresight-stm.c coresight: Re-use same function for similar sysfs register accessors 2022-08-31 10:55:28 -06:00
coresight-syscfg-configfs.c coresight: configfs: Allow configfs to activate configuration 2021-11-26 11:34:27 -07:00
coresight-syscfg-configfs.h coresight: configfs: Allow configfs to activate configuration 2021-11-26 11:34:27 -07:00
coresight-syscfg.c coresight: syscfg: Update load and unload operations 2022-06-29 09:35:58 -06:00
coresight-syscfg.h coresight: syscfg: Update load and unload operations 2022-06-29 09:35:58 -06:00
coresight-sysfs.c coresight: Export global symbols 2020-09-28 19:47:40 +02:00
coresight-tmc-core.c coresight: Re-use same function for similar sysfs register accessors 2022-08-31 10:55:28 -06:00
coresight-tmc-etf.c coresight: Update comments for removing cs_etm_find_snapshot() 2021-10-27 11:44:50 -06:00
coresight-tmc-etr.c coresight: Fix signedness bug in tmc_etr_buf_insert_barrier_packet() 2023-05-30 14:03:22 +01:00
coresight-tmc.h coresight: Make new csdev_access offsets unsigned 2022-08-31 10:56:36 -06:00
coresight-tpiu.c Merge branch 'devel-stable' of git://git.armlinux.org.uk/~rmk/linux-arm into char-misc-next 2021-02-05 11:15:43 +01:00
coresight-trbe.c coresight: trbe: remove cpuhp instance node before remove cpuhp state 2022-12-31 13:32:41 +01:00
coresight-trbe.h arm64/sysreg: Fix a few missed conversions 2022-09-21 09:24:29 +01:00
Kconfig coresight: trbe: fix Kconfig "its" grammar 2022-08-22 09:56:30 -06:00
Makefile coresight: syscfg: Add initial configfs support 2021-08-18 22:33:28 +02:00