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,v2 patch add.
On Sun, Oct 25, 2026 at 09:13:07PM +0800, Chao Xu wrote:
Before enable funnel, priority must be set. Changing the portCould you cite the relevant documentation in commit log?
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.
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.
here is more better then v1 patch, v2 patch will be sent.
Signed-off-by: Chao Xu <xuchao066@xxxxxxx>Please move the priority write into the first port branch:
---
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);
/* 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);
}
Thanks,
Leo