Messages in this thread | | | Subject | Re: [PATCH v2] coresight: Serialize enabling/disabling a link device. | From | Suzuki K Poulose <> | Date | Mon, 12 Aug 2019 11:48:20 +0100 |
| |
Hi Yabin,
On 12/08/2019 11:38, Suzuki K Poulose wrote: > > Hi Yabin, > > On 09/08/2019 22:45, Yabin Cui wrote: >> When tracing etm data of multiple threads on multiple cpus through perf >> interface, some link devices are shared between paths of different cpus. >> It creates race conditions when different cpus wants to enable/disable >> the same link device at the same time. >> >> Example 1: >> Two cpus want to enable different ports of a coresight funnel, thus >> calling the funnel enable operation at the same time. But the funnel >> enable operation isn't reentrantable. >> >> Example 2: >> For an enabled coresight dynamic replicator with refcnt=1, one cpu wants >> to disable it, while another cpu wants to enable it. Ideally we still have >> an enabled replicator with refcnt=1 at the end. But in reality the result >> is uncertain. >> >> Since coresight devices claim themselves when enabled for self-hosted >> usage, the race conditions above usually make the link devices not usable >> after many cycles. >> >> To fix the race conditions, this patch adds a spinlock to serialize >> enabling/disabling a link device.
Please could you also add :
Fixes : a06ae8609b3dd ("coresight: add CoreSight core layer framework")
Suzuki
| |