Re: [PATCH] [v1] coresight: funnel: inport schedule by priority can not take work

From: Chao Xu

Date: Tue Oct 27 2026 - 11:30:50 EST


在 2026/10/27 16:41, Leo Yan 写道:

Hi,

On Sun, Oct 25, 2026 at 09:13:07PM +0800, Chao Xu wrote:
Before enable funnel, priority must be set. Changing the port
priorities in real time is not supported.
If the priority control register is written when one or more of ports
are enable, then the write is silently rejected.
Could you cite the relevant documentation in commit log?

The CoreSight SoC-600 TRM, section 9.11.2, PRIORITYCONTROL, a funnel
rejects priority register writes whenever any port is enabled. The
current sequence therefore prevent the configured priorities from
taking effect.

Write the priority register before enabling the first port.
v2 patch add.

Signed-off-by: Chao Xu <xuchao066@xxxxxxx>
---
drivers/hwtracing/coresight/coresight-funnel.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/hwtracing/coresight/coresight-funnel.c b/drivers/hwtracing/coresight/coresight-funnel.c
index af40814ce560..17f985798d7f 100644
--- a/drivers/hwtracing/coresight/coresight-funnel.c
+++ b/drivers/hwtracing/coresight/coresight-funnel.c
@@ -66,8 +66,8 @@ static int dynamic_funnel_enable_hw(struct funnel_drvdata *drvdata, int port)
functl &= ~FUNNEL_HOLDTIME_MASK;
functl |= FUNNEL_HOLDTIME;
functl |= (1 << port);
- writel_relaxed(functl, drvdata->base + FUNNEL_FUNCTL);
writel_relaxed(drvdata->priority, drvdata->base + FUNNEL_PRICTL);
+ writel_relaxed(functl, drvdata->base + FUNNEL_FUNCTL);
Please move the priority write into the first port branch:

/* Claim the device only when we enable the first slave */
if (!(functl & FUNNEL_ENSx_MASK)) {
rc = coresight_claim_device_unlocked(csdev);
if (rc)
goto done;

/* Update priorities while all ports are disabled */
writel_relaxed(drvdata->priority,
drvdata->base + FUNNEL_PRICTL);
}
here is more better then v1 patch, v2 patch will be sent.

Thanks,
Leo