SPRUJ28E November 2021 – September 2024 AM68 , AM68A , TDA4AL-Q1 , TDA4VE-Q1 , TDA4VL-Q1
The CLEC provides direct support for virtual-machine isolation via a hypervisor. Each event’s register window is deliberately spaced 64KB apart. This enables allocating individual event numbers to virtual machines via stage-2 translation. The 64KB spacing allows this to work even with the largest translation granule supported by ARM (64KB).
Individual functions associated with an event within each event’s window are spaced 4KB apart. This allows a standard operating system to open up, for instance, write access to an CLEC_ESR_j register for a single task, while blocking access to the event routing details in CLEC_MRR_j register.
The CLEC implements event lock registers (CLEC_GELRS / CLEC_GELRNS) that allow hypervisor to lock down the configuration of events, while still permitting write access to the event send register (CLEC_ESR_j) for that event.
In current implementation, the CLEC provides basic support for isolating virtual machines by partitioning incoming events in the address map. However, it does not provide any support for limiting event numbers assigned for outgoing events in CLEC_MRR_j[15-8] EXT_EVNUM. If such isolation is necessary, software can implement it in the hypervisor via para-virtualization calls, via trap-and-emulate for full virtualization.