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)

Done

Assignee

Giacomo Travaglini

Reporter

Giacomo Travaglini

Components

Priority

Medium

Epic Link

None

Fix versions

Labels

None