Skip to content

Forward FF-A power management messages to registered Secure Partitions on AArch64 #73

Description

@aidangarske

Context

FF-A 1.2 (DEN0077A section 18.2.4) lets a Secure Partition register through its manifest for power management messages, which the SPMC then forwards to it. The AArch64 SPMD now sends the SPMC the Table 18.6 message for every CPU_SUSPEND, CPU_OFF, SYSTEM_OFF and SYSTEM_RESET (#44). The SPMC still answers alone, because no manifest partition takes FF-A messages yet (messaging must be none). The Table 18.7 warm boot message is also unsent, since no power-down state or warm boot exists.

Origin

#44, PR #29 (recorded as unsupported in docs/FF-A-Compatibility.md)

What is needed

  • Manifest: the optional power_management list of PSCI operations in the ffa section, accepted only for a partition with direct messaging
  • SPMC: forward the Table 18.6 request to each registered partition that is waiting, in SPMC-scheduled mode, and answer the SPMD with DENIED if any partition denies
  • SPMC: deny FFA_RUN, FFA_YIELD and direct requests from a partition while it processes the message
  • The Table 18.7 warm boot message once a power-down state or warm boot exists

Blockers and dependencies

Needs a manifest partition that takes FF-A direct messages. The warm boot message also needs multi-core or power-down support.

Acceptance criteria

  • Host rows for the manifest field and the forwarding and aggregation rules
  • A QEMU negative where a registered partition answers DENIED and CPU_SUSPEND returns DENIED, on both engines
  • The unsupported row in docs/FF-A-Compatibility.md becomes an implemented row

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    P3Low: cleanup, warnings, hardware-gated or future worktodoDeferred work tracked for later

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions