Arm Scmi Archicture

简介

Arm System Control and Management Interface

  • Discovery and self-description of the interfaces implemented by the platform.
  • Agent-specific resource isolation interfaces for dynamically configuring an SCMI-compliant agent’s access to devices and protocols.
  • Power domain management interfaces to place a given device or domain into the various power-saving states that it supports.
  • Performance management interfaces to control the performance of a domain which, in turn, is composed of compute engines, such as Application Processors (APs), GPUs, or other accelerators.
  • Clock management interfaces to set and enquire rates on platform-managed clocks.
  • Sensor management interfaces to read sensor data and be notified of sensor value changes.
  • Reset management interfaces to reset peripherals or reset domains.

Archicture

SCMI 1.0 (May 2017)

2022-01-18_13-26-07_screenshot.png

  1. Discovery and self-description of the interfaces it supports
  2. Power domain management, which is the ability to place a given device or domain into the various power-saving states that it supports
  3. 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.
  4. Clock management, which is the ability to set and inquire rates on platform-managed clocks.
  5. Sensor management, which is the ability to read sensor data, and be notified of sensor value changes.

SCMI 2.0 (July 2019)

2022-01-18_13-28-01_screenshot.png

  1. fast channel support
  2. Power Domain Management pre-notification suppor
  3. Agent-specific Resource Isolation capability as a part of Base protocol.
  4. Reset Management Protocol.
  5. Renamed Mailbox Transport to more appropriate Shared Memory based Transport and made changes to allow SMC/HVC based doorbells.
  6. Added support for notifications to agents on performance level change events triggered by external factors.

SCMI 3.1 (Jan 2022)

2022-01-18_13-29-54_screenshot.png

Usage

  • basic usage
  • 支持trusted world的使用方法
  • 虚拟化系统中的使用方法
  • 支持硬件虚拟化的使用方法

basic usage

2022-01-18_15-52-40_screenshot.png

支持trusted world的使用方法

2022-01-18_15-51-54_screenshot.png

虚拟化系统中的使用方法

2022-01-18_15-50-05_screenshot.png

支持硬件虚拟化的使用方法

2022-01-18_15-39-13_screenshot.png

Performance

fastcall

部份场景对性能有一定的要求(DVFS)

2022-01-18_15-54-30_screenshot.png

Security

permission control

2022-01-18_16-01-05_screenshot.png

  1. Hypervisor has access to all channels.
    • Each channel has a unique agent-id allocated by System Controller.
      • Discoverable by BASE_DISCOVER_AGENT command
  2. Hypervisor chooses channels to allocate to VMs.
  3. Hypervisor configures access permissions of agents
    • BASE_SET_DEVICE_PERMISSIONS
    • BASE_SET_PROTOCOL_PERMISSIONS
    • BASE_RESET_AGENT_CONFIGURATION
    • Only one control channel has permissions to use above commands. Access control imposed at boot by System Controller.
    • Control channel identification is done through firmware tables and is not discoverable.
  1. Hypervisors maps configured channels into VM space and starts VM.
  2. VM can use channel mapped to its space.
    • Can send commands to access resources allowed by the hypervisor over the channel.

Realm Management Extension (RME)

Armv9-A: Realm Management Extension (RME)
https://developer.arm.com/documentation/den0129/aa

refs

Contact me via :)
虚怀乃若谷,水深则流缓。