Implement SCMI in gem5 - Base Protocol
Description
As described in the Arm SCMI documentation:
https://developer.arm.com/architectures/system-architectures/software-standards/scmi
SCMI is a set of operating system-independent software interfaces that are used in system management. SCMI is extensible and currently provides interfaces for:
• Discovery and self-description of the interfaces it supports.
• Power domain management, which is the ability to place a given device or domain into the various power-saving states that it supports.
• Performance management, which is the ability to control the performance of a domain that is composed of compute engines such as application processors (APs), GPUs, or other accelerators.
• Clock management, which is the ability to set and inquire rates on platform-managed clocks.
• Sensor management, which is the ability to read sensor data, and be notified of sensor value changes.
Those bulletpoints are different PROTOCOLS of the specification. The first one, the BASE protocol is mandatory, and should be implemented first together with the SCMI classes.
Testing could be done with:
1) SCMI unit tests: https://github.com/ARM-software/scmi-tests
2) Linux scmi firmware driver: https://elixir.bootlin.com/linux/v4.18/source/drivers/firmware/arm_scmi
Option 1 should be preferred to Option 2, since the latter consists on manually checking if things work.
Further reads:
SCPI: https://developer.arm.com/documentation/dui0922/g/
SCMI: https://static.linaro.org/connect/san19/presentations/san19-207.pdf
This ticket wil be marked as completed as we implement:
Base Protocol (the only mandatory one in SCMI)