This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TDA4VH-Q1: Event communication between clusters is not possible.

Part Number: TDA4VH-Q1
Other Parts Discussed in Thread: TDA4VH

Tool/software:

I am trying to synchronize with A72 cluster0 core0 using ARM sev/wfe instructions and the following steps.

1. A72 cluster0 core1 : wfe instruction execution, waiting for A72 cluster0 core0
2. A72 cluster0 core2 : wfe instruction execution, waiting for A72 cluster0 core0
3. A72 cluster0 core3 : wfe instruction execution, waiting for A72 cluster0 core0
4. A72 cluster1 core0 : wfe instruction execution, waiting for A72 cluster0 core0
5. A72 cluster1 core1 : wfe instruction execution, waiting for A72 cluster0 core0
6. A72 cluster1 core2 : wfe instruction execution, waiting for A72 cluster0 core0
7. A72 cluster1 core3 : wfe instruction execution, waiting for A72 cluster0 core0
8. A72 cluster0 core0 : sev instruction execution
9. all cores wake-up

However, even if a sev instruction is issued from a core belonging to cluster0, only the wfe of the core belonging to cluster0 is released.
The core belonging to cluster1 remains in the wfe state.
It appears that sev is not issued across clusters.

I believe all cores will be notified because the “ARM® Cortex®-A72 MPCore Processor Technical Reference Manual” contains the following statement.


Is there a setting required for inter-cluster communication in the SoC?

  • Hello,

    Has your code enable the SMPEN enable in each core?  Some broadcast operations in muticore require this setting.

    Each cluster does have an EVENTI and EVENTO interface as referenced.  A scan of docs shows these are hooked to events 512-519 in the MSMC CLEC.  This cross linking should result in cross connected signals.  There is some routing options in the CLEC MMRs.  SMP Linux and SMP QNX does run on TDA4VH and they do use SEV/WFE so my guess would be some setup for cross cluster coherency is not in place in your custom system.  For cross cluster coherency operations it is required to implement https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/refs/heads/master/plat/ti/k3/common/k3_helpers.S#128 the the K3_EXCLUSIVE_SNOOP_DELAY option.  Other options in the ATF start up are also required to ensure stable operation across conditions.

    Regards,
    Richard W.
  • Hello,

    I made a bare metal test putting cores on cluster0 into WFE and cores on cluster1 into an SEV loop.  Without the CLEC linkage the SEV did not cross the cores as described.  With the linkage the SEV signal crosses the cluster.  The A72 cores do not have a route to program the CLEC, but it can be programmed by the C7 or a system master.  Some care must be take for secure state when depending on the MRR secure claim setting (bit31).

    After programming the linkage between the 2 clusters the WFE/SEV behaved as expected.  See the attached video for a reproduction and fix you can use in your RTOS.

    Regards,
    Richard W.
  • Hello,

    Thank you for your response. I also apologize for not replying.
    I set the SMPEN bit and the Snoop-delayed exclusive handling bit, but the result was the same.
    I will refer to the video.