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

Chao Xu xuchao066 at 163.com
Tue Oct 27 08:17:33 PDT 2026


在 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 at 163.com>
>> ---
>>   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




More information about the linux-arm-kernel mailing list