Page MenuHomePhabricator

Use SMC client_id field to pass agent_id to the SCMI.
Open, Needs TriagePublic



I'm currently working on the implementation of the SCMI protocol in AT-F. I have POC for renesas-rcar board.
Link to the POC: POC merge request
We're planning to use SCMI in virtualised systems where multiple channels should be used for the guests and selected SMC as transport. We expect more than 2 guests running simultaneously on the system.
In our case hypervisor is a Trusted agent which uses BASE_SET_DEVICE_PERMISSIONS (See of [1]) message to set permissions for the devices, passed through to the Guests. Each Guest gets agent_id and channel to send SCMI messages to.
Hypervisor also intercepts SMC requests from the Guests and pass channel_id via SMC to the Firmware on r7 bits [15:0] (See Section
4.1 of [1]) before redirecting them to the Firmware. Then Firmware converts channel_id to agent_id. Channel_id can't be equal to agent_id in our case, because, according to the of [0] - agent_id 0 is reserved to identify platform itself.

I couldn't find clear description about how to pass agent_id to the Firmware in the documents provided below.
So the question is: Am I able to use SMC client_id field to pass channel_id so the Firmware to get an agent_id or could you suggest the right way to do this?

I've also added link to the changes, we made to the Xen hypervisor, see [2].

[0] DEN0056
[1] DEN0028
[2] Xen mediator link

Event Timeline