diff options
author | Levi Yun <yeoreum.yun@arm.com> | 2024-08-05 17:33:47 +0100 |
---|---|---|
committer | mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> | 2025-01-17 14:55:42 +0000 |
commit | 79875fdde011735a8fe25823ef3f3b99cac49885 (patch) | |
tree | fab5be307c75d6293891dd7105a96aa78e7a16be /ArmPkg | |
parent | d1d690f3639e1daba29bf6e36a72a1a28df35263 (diff) | |
download | edk2-79875fdde011735a8fe25823ef3f3b99cac49885.tar.gz |
ArmPkg: Add FF-A partition information header
Partition descriptor is used to get partition information via
FFA_PARTITION_INFO_GET or FFA_PARTITION_INFO_GET_REGS FF-A ABI.
Adds defines for partition descriptor and some macros used to call above
ABIs.
Signed-off-by: Levi Yun <yeoreum.yun@arm.com>
Diffstat (limited to 'ArmPkg')
-rw-r--r-- | ArmPkg/Include/IndustryStandard/ArmFfaPartInfo.h | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/ArmPkg/Include/IndustryStandard/ArmFfaPartInfo.h b/ArmPkg/Include/IndustryStandard/ArmFfaPartInfo.h new file mode 100644 index 0000000000..fcee5575ac --- /dev/null +++ b/ArmPkg/Include/IndustryStandard/ArmFfaPartInfo.h @@ -0,0 +1,99 @@ +/** @file
+ Partition information description as specfied in the FF-A v1.2 specification.
+
+ Copyright (c) 2024, Arm Limited. All rights reserved.
+
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+
+ @par Glossary:
+ - FF-A - Firmware Framework for Arm A-profile
+ - ST - Start idx and Tag
+ - IM - Information Metadata
+ - PART - Partition
+ - PROP - Property
+ - PE - Processing Element
+ - INDEP - Independent
+ - AUX - Auxiliary
+
+
+ @par Reference(s):
+ - FF-A Version 1.2 [https://developer.arm.com/documentation/den0077/latest]
+
+**/
+
+#ifndef ARM_FFA_PART_INFO_H_
+#define ARM_FFA_PART_INFO_H_
+
+/** Partition info flags used in FFA_PARTITION_INFO_GET
+ * See FF-A spec chapter 13.8 FFA_PARTITION_INFO_GET
+ */
+#define FFA_PART_INFO_FLAG_TYPE_SHIFT 0
+#define FFA_PART_INFO_FLAG_TYPE_MASK 1
+#define FFA_PART_INFO_FLAG_TYPE_COUNT 1
+#define FFA_PART_INFO_FLAG_TYPE_DESC 0
+
+#define FFA_PART_INFO_IDX_MASK 0xffff
+#define FFA_PART_INFO_START_TAG_MASK 0xffff
+
+/** macro used in FFA_PARTITION_INFO_GET_REGS request
+ * See FF-A spec chapter 13.9 FFA_PARTITION_INFO_GET_REGS
+ */
+#define FFA_PART_INFO_START_IDX_SHIFT 0
+#define FFA_PART_INFO_START_TAG_SHIFT 16
+
+/** macro used in FFA_PARTITION_INFO_GET_REGS response
+ * See FF-A spec chapter 13.9 FFA_PARTITION_INFO_GET_REGS
+ */
+#define FFA_PART_INFO_METADATA_LAST_IDX_SHIFT 0
+#define FFA_PART_INFO_METADATA_CURRENT_IDX_SHIFT 16
+#define FFA_PART_INFO_METADATA_TAG_SHIFT 32
+
+/** Partition properties values in EFI_FFA_PART_INFO_DESC->PartitionProps
+ * See FF-A spec chapter 6.2 partition discovery.
+ */
+#define FFA_PART_PROP_RECV_DIRECT_REQ (1 << 0)
+#define FFA_PART_PROP_SEND_DIRECT_REQ (1 << 1)
+#define FFA_PART_PROP_SEND_INDIRECT_REQ (1 << 2)
+#define FFA_PART_PROP_RECV_INDIRECT_REQ (1 << 3)
+
+#define FFA_PART_PROP_ID_TYPE_SHIFT 4
+#define FFA_PART_PROP_ID_TYPE_MASK 0x3
+#define FFA_PART_PROP_ID_PE_EP 0x00
+#define FFA_PART_PROP_ID_STREAM_EP_INDEPENDENT 0x01
+#define FFA_PART_PROP_ID_STREAM_EP_DEPENDENT 0x02
+#define FFA_PART_PROP_ID_AUX 0x03
+
+#define FFA_PART_PROP_VM_STATUS_CREATED (1 << 6)
+#define FFA_PART_PROP_VM_STATUS_DESTROYED (1 << 7)
+
+#define FFA_PART_PROP_EXECUTE_STATE (1 << 8)
+
+#define FFA_PART_PROP_RECV_DIRECT_REQ2 (1 << 9)
+#define FFA_PART_PROP_SEND_DIRECT_REQ2 (1 << 10)
+
+typedef union {
+ /// Number of Execution context
+ UINT16 ExecContextCount;
+
+ /// ID of proxy endpoint for a dependent peripheral device
+ UINT16 ProxyPartitionId;
+} EXEC_CONTEXT;
+
+/** Partition information Descriptor in the FF-A v1.2 spec.
+ * See FF-A spec chapter 6.2 partition discovery.
+ */
+typedef struct {
+ /// Partition id
+ UINT16 PartitionId;
+
+ /// Execution context count or Proxy partition id
+ EXEC_CONTEXT ExecContextCountOrProxyPartitionId;
+
+ /// Flags to determine partition properties
+ UINT32 PartitionProps;
+
+ /// UUID of partition
+ UINT32 PartitionUuid[4];
+} EFI_FFA_PART_INFO_DESC;
+
+#endif
|