Re: [PATCH] coresight: platform: check the availability of the endpoint before parse

From: Jie Gan

Date: Fri Mar 20 2026 - 04:46:48 EST



Hi Leo,

On 3/20/2026 4:25 PM, Leo Yan wrote:
On Fri, Mar 20, 2026 at 03:31:12PM +0800, Jie Gan wrote:
Check endpoint availability before parsing it. If parsing a connected
endpoint fails, the probe is deferred until the endpoint becomes
available, or eventually fails.

I want to clarify a bit the failure flow.

Does this mean coresight_find_device_by_fwnode() returns NULL when the
remote device is not found, resulting in -EPROBE_DEFER, but the probe
never waits for the remote device to become available?

It's about the coresight_find_device_by_fwnode() returns NULL, resulting in -EPROBE_DEFER. So the probe process will re-start after several seconds, but always failed because we have a "disabled" device node in DT(we can see this device in DT, but it never becomes available). It's ok if the device only has one remote device, but has issue with more than one remote devices.

Consider below situation:

device0
| |
device1 device2(status = "disabled")

The probe of device0 succeeds only when device1 and device2 are available at probe time. But I think it's ok to probe the device0 only with device1 available.

Thanks,
Jie


In some legacy cases, a replicator
has two output ports where one is disabled and the other is available.
The replicator probe always fails because the disabled endpoint never
becomes available for parsing. In addition, there is no need to defer
probing a device that is connected to a disabled device, which improves
probe performance.

Signed-off-by: Jie Gan <jie.gan@xxxxxxxxxxxxxxxx>
---
drivers/hwtracing/coresight/coresight-platform.c | 2 ++
1 file changed, 2 insertions(+)

diff --git a/drivers/hwtracing/coresight/coresight-platform.c b/drivers/hwtracing/coresight/coresight-platform.c
index 0ca3bd762454..e337b6e2bf32 100644
--- a/drivers/hwtracing/coresight/coresight-platform.c
+++ b/drivers/hwtracing/coresight/coresight-platform.c
@@ -220,6 +220,8 @@ static int of_coresight_parse_endpoint(struct device *dev,
rparent = of_coresight_get_port_parent(rep);
if (!rparent)
break;
+ if (!of_device_is_available(rparent))
+ break;
if (of_graph_parse_endpoint(rep, &rendpoint))
break;

---
base-commit: b5d083a3ed1e2798396d5e491432e887da8d4a06
change-id: 20260320-add-availability-check-4cb2ee6e520b

Best regards,
--
Jie Gan <jie.gan@xxxxxxxxxxxxxxxx>