[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[RFC PATCH v1 01/26] xen/arm/cca: add RMI v2.0 ABI definitions


  • To: xen-devel@xxxxxxxxxxxxxxxxxxxx
  • From: Koichiro Den <den@xxxxxxxxxxxxx>
  • Date: Fri, 15 May 2026 13:07:47 +0900
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none header.from=valinux.co.jp; dkim=pass header.d=valinux.co.jp; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=zRhAUy+m4ZSSA0NruENsBXlnXW5tyOZSqdGUD5wIM0s=; b=EpJZGwSGz6JOqw3WAskam2PoOMh0S4o9azLj8jWg3jRuW/zPR7KKX8VHbSEC9jQkVNOHguOMb/rc32PxvckU7SgTtA5yOJtqoc4UBCkoJU6kqkHzdRMs0hPPpj0a+oi0sAUTV/P+t6om8iiAidnJy7zQUyJcilylvgiZ/iHzy+bosQJRd/aqHBp5MLBTc1nkttoTTwpBNbrYbPDxtYE6asurPzfW+G/dDDnyY3Z9FkG+8a7mrPgj9egtchynQ16sBq1Ar3FRhM87vGAJOtOKvbljhJ4CML6BVKDhL92yCX6/1upFRfMVWkhTYJrvVWa6H+hrkPVPQ26SFm3KAGeYKQ==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=OJxL/IMpQJmUgRs5VxGI2XICEhI0T5gC1vXu7RVdLRjyOvg3Q1naipgsfgabtHM9Ubh05H06f99AqtlTozYNDO6H80s97StjGz7cXZGRpfFHn1ElYGNoNVUQ5bGeJFEiisXAZZkMcQnv6uX7ohPqNLb6U70k9baqPyCzdgCAX9EXgS30jm5xYheS5Ry24UvZgxQx6/ScXNyRte+7Psih6fLyLhiDYgemdJeCF/KwCFaIwr6N86CaX91MwL92UN0rFZsQ3RdfOjQ0EQ64nxUf8Af/zztrJ7mRjHJtvuMJ9eKqyS65f7v/2gcdlswp8NRp7kJmQI/xdwdk6hWWKlGQVg==
  • Authentication-results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=valinux.co.jp header.i="@valinux.co.jp" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
  • Authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp;
  • Cc: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, Anthony PERARD <anthony.perard@xxxxxxxxxx>, Michal Orzel <michal.orzel@xxxxxxx>, Jan Beulich <jbeulich@xxxxxxxx>, Julien Grall <julien@xxxxxxx>, Roger Pau Monné <roger.pau@xxxxxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>, "Daniel P. Smith" <dpsmith@xxxxxxxxxxxxxxxxxxxx>, Juergen Gross <jgross@xxxxxxxx>, Bertrand Marquis <bertrand.marquis@xxxxxxx>, Volodymyr Babchuk <Volodymyr_Babchuk@xxxxxxxx>
  • Delivery-date: Fri, 15 May 2026 04:08:38 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

Define the RMI v2.0 commands and types Xen needs to manage Realm VPEs.

Signed-off-by: Koichiro Den <den@xxxxxxxxxxxxx>
---
 xen/arch/arm/cca/rmi-abi.h | 433 +++++++++++++++++++++++++++++++++++++
 1 file changed, 433 insertions(+)
 create mode 100644 xen/arch/arm/cca/rmi-abi.h

diff --git a/xen/arch/arm/cca/rmi-abi.h b/xen/arch/arm/cca/rmi-abi.h
new file mode 100644
index 000000000000..7afb1ae05bca
--- /dev/null
+++ b/xen/arch/arm/cca/rmi-abi.h
@@ -0,0 +1,433 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * RMI v2.0 ABI definitions used by Xen from DEN0137 2.0-bet1.
+ */
+
+#ifndef ARM_CCA_RMI_ABI_H
+#define ARM_CCA_RMI_ABI_H
+
+#include <xen/types.h>
+
+#define ARM_CCA_RMI_ABI_VERSION_MAJOR      2U
+#define ARM_CCA_RMI_ABI_VERSION_MINOR      0U
+#define ARM_CCA_RMI_ABI_VERSION            \
+    (((uint32_t)ARM_CCA_RMI_ABI_VERSION_MAJOR << 16) | \
+     ARM_CCA_RMI_ABI_VERSION_MINOR)
+
+#define ARM_CCA_RMI_VERSION_GET_MAJOR(_v)  ((_v) >> 16)
+#define ARM_CCA_RMI_VERSION_GET_MINOR(_v)  ((_v) & 0xffffU)
+
+#define ARM_CCA_RMI_FID_BASE               0xC4000150U
+#define ARM_CCA_RMI_FID(_off)              (ARM_CCA_RMI_FID_BASE + (_off))
+
+/* DEN0137 2.0-bet1 - B4.5 RMI commands */
+#define ARM_CCA_RMI_VERSION_FID                   ARM_CCA_RMI_FID(0x0)
+#define ARM_CCA_RMI_RTT_DATA_MAP_INIT_FID         ARM_CCA_RMI_FID(0x3)
+#define ARM_CCA_RMI_REALM_ACTIVATE_FID            ARM_CCA_RMI_FID(0x7)
+#define ARM_CCA_RMI_REALM_CREATE_FID              ARM_CCA_RMI_FID(0x8)
+#define ARM_CCA_RMI_REALM_DESTROY_FID             ARM_CCA_RMI_FID(0x9)
+#define ARM_CCA_RMI_REC_CREATE_FID                ARM_CCA_RMI_FID(0xa)
+#define ARM_CCA_RMI_REC_DESTROY_FID               ARM_CCA_RMI_FID(0xb)
+#define ARM_CCA_RMI_REC_ENTER_FID                 ARM_CCA_RMI_FID(0xc)
+#define ARM_CCA_RMI_RTT_CREATE_FID                ARM_CCA_RMI_FID(0xd)
+#define ARM_CCA_RMI_RTT_DESTROY_FID               ARM_CCA_RMI_FID(0xe)
+#define ARM_CCA_RMI_RTT_READ_ENTRY_FID            ARM_CCA_RMI_FID(0x11)
+#define ARM_CCA_RMI_RTT_DEV_VALIDATE_FID          ARM_CCA_RMI_FID(0x13)
+#define ARM_CCA_RMI_PSCI_COMPLETE_FID             ARM_CCA_RMI_FID(0x14)
+#define ARM_CCA_RMI_FEATURES_FID                  ARM_CCA_RMI_FID(0x15)
+#define ARM_CCA_RMI_RTT_FOLD_FID                  ARM_CCA_RMI_FID(0x16)
+#define ARM_CCA_RMI_RTT_INIT_RIPAS_FID            ARM_CCA_RMI_FID(0x18)
+#define ARM_CCA_RMI_RTT_SET_RIPAS_FID             ARM_CCA_RMI_FID(0x19)
+#define ARM_CCA_RMI_VSMMU_CREATE_FID              ARM_CCA_RMI_FID(0x1a)
+#define ARM_CCA_RMI_VSMMU_DESTROY_FID             ARM_CCA_RMI_FID(0x1b)
+#define ARM_CCA_RMI_RMM_CONFIG_SET_FID            ARM_CCA_RMI_FID(0x1e)
+#define ARM_CCA_RMI_PSMMU_IRQ_NOTIFY_FID          ARM_CCA_RMI_FID(0x1f)
+#define ARM_CCA_RMI_PDEV_ABORT_FID                ARM_CCA_RMI_FID(0x24)
+#define ARM_CCA_RMI_PDEV_COMMUNICATE_FID          ARM_CCA_RMI_FID(0x25)
+#define ARM_CCA_RMI_PDEV_CREATE_FID               ARM_CCA_RMI_FID(0x26)
+#define ARM_CCA_RMI_PDEV_DESTROY_FID              ARM_CCA_RMI_FID(0x27)
+#define ARM_CCA_RMI_PDEV_GET_STATE_FID            ARM_CCA_RMI_FID(0x28)
+#define ARM_CCA_RMI_PDEV_STREAM_KEY_REFRESH_FID   ARM_CCA_RMI_FID(0x2a)
+#define ARM_CCA_RMI_PDEV_SET_PUBKEY_FID           ARM_CCA_RMI_FID(0x2b)
+#define ARM_CCA_RMI_PDEV_STOP_FID                 ARM_CCA_RMI_FID(0x2c)
+#define ARM_CCA_RMI_RTT_AUX_CREATE_FID            ARM_CCA_RMI_FID(0x2d)
+#define ARM_CCA_RMI_RTT_AUX_DESTROY_FID           ARM_CCA_RMI_FID(0x2e)
+#define ARM_CCA_RMI_RTT_AUX_FOLD_FID              ARM_CCA_RMI_FID(0x2f)
+#define ARM_CCA_RMI_VDEV_ABORT_FID                ARM_CCA_RMI_FID(0x35)
+#define ARM_CCA_RMI_VDEV_COMMUNICATE_FID          ARM_CCA_RMI_FID(0x36)
+#define ARM_CCA_RMI_VDEV_CREATE_FID               ARM_CCA_RMI_FID(0x37)
+#define ARM_CCA_RMI_VDEV_DESTROY_FID              ARM_CCA_RMI_FID(0x38)
+#define ARM_CCA_RMI_VDEV_GET_STATE_FID            ARM_CCA_RMI_FID(0x39)
+#define ARM_CCA_RMI_VDEV_UNLOCK_FID               ARM_CCA_RMI_FID(0x3a)
+#define ARM_CCA_RMI_RTT_SET_S2AP_FID              ARM_CCA_RMI_FID(0x3b)
+#define ARM_CCA_RMI_VDEV_COMPLETE_FID             ARM_CCA_RMI_FID(0x3e)
+#define ARM_CCA_RMI_VDEV_GET_INTERFACE_REPORT_FID ARM_CCA_RMI_FID(0x80)
+#define ARM_CCA_RMI_VDEV_GET_MEASUREMENTS_FID     ARM_CCA_RMI_FID(0x81)
+#define ARM_CCA_RMI_VDEV_LOCK_FID                 ARM_CCA_RMI_FID(0x82)
+#define ARM_CCA_RMI_VDEV_START_FID                ARM_CCA_RMI_FID(0x83)
+#define ARM_CCA_RMI_VSMMU_EVENT_NOTIFY_FID        ARM_CCA_RMI_FID(0x86)
+#define ARM_CCA_RMI_PSMMU_ACTIVATE_FID            ARM_CCA_RMI_FID(0x87)
+#define ARM_CCA_RMI_PSMMU_DEACTIVATE_FID          ARM_CCA_RMI_FID(0x88)
+#define ARM_CCA_RMI_PSMMU_ST_L2_CREATE_FID        ARM_CCA_RMI_FID(0x8b)
+#define ARM_CCA_RMI_PSMMU_ST_L2_DESTROY_FID       ARM_CCA_RMI_FID(0x8c)
+#define ARM_CCA_RMI_DPT_L0_CREATE_FID             ARM_CCA_RMI_FID(0x8d)
+#define ARM_CCA_RMI_DPT_L0_DESTROY_FID            ARM_CCA_RMI_FID(0x8e)
+#define ARM_CCA_RMI_DPT_L1_CREATE_FID             ARM_CCA_RMI_FID(0x8f)
+#define ARM_CCA_RMI_DPT_L1_DESTROY_FID            ARM_CCA_RMI_FID(0x90)
+#define ARM_CCA_RMI_GRANULE_TRACKING_GET_FID      ARM_CCA_RMI_FID(0x91)
+#define ARM_CCA_RMI_GRANULE_TRACKING_SET_FID      ARM_CCA_RMI_FID(0x93)
+#define ARM_CCA_RMI_RMM_CONFIG_GET_FID            ARM_CCA_RMI_FID(0x9c)
+#define ARM_CCA_RMI_VSMMU_EVENT_COMPLETE_FID      ARM_CCA_RMI_FID(0x9e)
+#define ARM_CCA_RMI_PSMMU_EVENT_DISCARD_FID       ARM_CCA_RMI_FID(0xa0)
+#define ARM_CCA_RMI_GRANULE_RANGE_DELEGATE_FID    ARM_CCA_RMI_FID(0xa1)
+#define ARM_CCA_RMI_GRANULE_RANGE_UNDELEGATE_FID  ARM_CCA_RMI_FID(0xa2)
+#define ARM_CCA_RMI_GPT_L1_CREATE_FID             ARM_CCA_RMI_FID(0xa3)
+#define ARM_CCA_RMI_GPT_L1_DESTROY_FID            ARM_CCA_RMI_FID(0xa4)
+#define ARM_CCA_RMI_RTT_DATA_MAP_FID              ARM_CCA_RMI_FID(0xa5)
+#define ARM_CCA_RMI_RTT_DATA_UNMAP_FID            ARM_CCA_RMI_FID(0xa6)
+#define ARM_CCA_RMI_RTT_DEV_MAP_FID               ARM_CCA_RMI_FID(0xa7)
+#define ARM_CCA_RMI_RTT_DEV_UNMAP_FID             ARM_CCA_RMI_FID(0xa8)
+#define ARM_CCA_RMI_RTT_ARCH_DEV_MAP_FID          ARM_CCA_RMI_FID(0xa9)
+#define ARM_CCA_RMI_RTT_ARCH_DEV_UNMAP_FID        ARM_CCA_RMI_FID(0xaa)
+#define ARM_CCA_RMI_RTT_UNPROT_MAP_FID            ARM_CCA_RMI_FID(0xab)
+#define ARM_CCA_RMI_RTT_UNPROT_UNMAP_FID          ARM_CCA_RMI_FID(0xac)
+#define ARM_CCA_RMI_RTT_AUX_PROT_MAP_FID          ARM_CCA_RMI_FID(0xad)
+#define ARM_CCA_RMI_RTT_AUX_PROT_UNMAP_FID        ARM_CCA_RMI_FID(0xae)
+#define ARM_CCA_RMI_RTT_AUX_UNPROT_MAP_FID        ARM_CCA_RMI_FID(0xaf)
+#define ARM_CCA_RMI_RTT_AUX_UNPROT_UNMAP_FID      ARM_CCA_RMI_FID(0xb0)
+#define ARM_CCA_RMI_REALM_TERMINATE_FID           ARM_CCA_RMI_FID(0xb1)
+#define ARM_CCA_RMI_RMM_ACTIVATE_FID              ARM_CCA_RMI_FID(0xb2)
+#define ARM_CCA_RMI_OP_CONTINUE_FID               ARM_CCA_RMI_FID(0xb3)
+#define ARM_CCA_RMI_PDEV_STREAM_CONNECT_FID       ARM_CCA_RMI_FID(0xb4)
+#define ARM_CCA_RMI_PDEV_STREAM_DISCONNECT_FID    ARM_CCA_RMI_FID(0xb5)
+#define ARM_CCA_RMI_PDEV_STREAM_COMPLETE_FID      ARM_CCA_RMI_FID(0xb6)
+#define ARM_CCA_RMI_PDEV_STREAM_KEY_PURGE_FID     ARM_CCA_RMI_FID(0xb7)
+#define ARM_CCA_RMI_OP_MEM_DONATE_FID             ARM_CCA_RMI_FID(0xb8)
+#define ARM_CCA_RMI_OP_MEM_RECLAIM_FID            ARM_CCA_RMI_FID(0xb9)
+#define ARM_CCA_RMI_OP_CANCEL_FID                 ARM_CCA_RMI_FID(0xba)
+#define ARM_CCA_RMI_VSMMU_FEATURES_FID            ARM_CCA_RMI_FID(0xbb)
+#define ARM_CCA_RMI_VSMMU_CMD_GET_FID             ARM_CCA_RMI_FID(0xbc)
+#define ARM_CCA_RMI_VSMMU_CMD_COMPLETE_FID        ARM_CCA_RMI_FID(0xbd)
+
+/* DEN0137 2.0-bet1 - B4.6.1 RmiAddrBlockSize type */
+#define ARM_CCA_RMI_PAGE_L3                 0U
+#define ARM_CCA_RMI_BLOCK_L2                1U
+#define ARM_CCA_RMI_BLOCK_L1                2U
+#define ARM_CCA_RMI_BLOCK_L0                3U
+
+/* DEN0137 2.0-bet1 - B4.6.5 RmiAddrRangeDesc4KB type */
+#define ARM_CCA_RMI_ADDR_DESC_4K_SZ_SHIFT   0U
+#define ARM_CCA_RMI_ADDR_DESC_4K_SZ_WIDTH   2U
+#define ARM_CCA_RMI_ADDR_DESC_4K_CNT_SHIFT  2U
+#define ARM_CCA_RMI_ADDR_DESC_4K_CNT_WIDTH  10U
+#define ARM_CCA_RMI_ADDR_DESC_4K_ADDR_SHIFT 12U
+#define ARM_CCA_RMI_ADDR_DESC_4K_ADDR_WIDTH 40U
+#define ARM_CCA_RMI_ADDR_DESC_4K_ST_SHIFT   63U
+#define ARM_CCA_RMI_ADDR_DESC_4K_ST_WIDTH   1U
+
+/* DEN0137 2.0-bet1 - B4.6.10 RmiContinueBeyond type */
+#define ARM_CCA_RMI_CONTINUE_KEEP_GOING     0U
+#define ARM_CCA_RMI_CONTINUE_STOP           1U
+
+/* DEN0137 2.0-bet1 - B4.6.12 RmiDataFlags type */
+#define ARM_CCA_RMI_DATA_FLAGS_MEASURE_SHIFT 0U
+#define ARM_CCA_RMI_DATA_FLAGS_MEASURE_WIDTH 1U
+
+/* DEN0137 2.0-bet1 - B4.6.13 RmiDataMeasureContent type */
+#define ARM_CCA_RMI_NO_MEASURE_CONTENT       0U
+#define ARM_CCA_RMI_MEASURE_CONTENT          1U
+
+#define ARM_CCA_RMI_DATA_FLAGS_MEASURE_CONTENT \
+    (ARM_CCA_RMI_MEASURE_CONTENT << ARM_CCA_RMI_DATA_FLAGS_MEASURE_SHIFT)
+
+/* DEN0137 2.0-bet1 - B4.6.22 RmiFeature type */
+#define ARM_CCA_RMI_FEATURE_FALSE                         0U
+#define ARM_CCA_RMI_FEATURE_TRUE                          1U
+
+/* DEN0137 2.0-bet1 - B4.6.23 RmiFeatureRegister0 type */
+#define ARM_CCA_RMI_FEATURE_REGISTER_0_S2SZ_SHIFT          0U
+#define ARM_CCA_RMI_FEATURE_REGISTER_0_S2SZ_WIDTH          8U
+#define ARM_CCA_RMI_FEATURE_REGISTER_0_LPA2_SHIFT          8U
+#define ARM_CCA_RMI_FEATURE_REGISTER_0_LPA2_WIDTH          1U
+#define ARM_CCA_RMI_FEATURE_REGISTER_0_SVE_SHIFT           9U
+#define ARM_CCA_RMI_FEATURE_REGISTER_0_SVE_WIDTH           1U
+#define ARM_CCA_RMI_FEATURE_REGISTER_0_SVE_VL_SHIFT        10U
+#define ARM_CCA_RMI_FEATURE_REGISTER_0_SVE_VL_WIDTH        4U
+#define ARM_CCA_RMI_FEATURE_REGISTER_0_NUM_BPS_SHIFT       14U
+#define ARM_CCA_RMI_FEATURE_REGISTER_0_NUM_BPS_WIDTH       6U
+#define ARM_CCA_RMI_FEATURE_REGISTER_0_NUM_WPS_SHIFT       20U
+#define ARM_CCA_RMI_FEATURE_REGISTER_0_NUM_WPS_WIDTH       6U
+#define ARM_CCA_RMI_FEATURE_REGISTER_0_PMU_SHIFT           26U
+#define ARM_CCA_RMI_FEATURE_REGISTER_0_PMU_WIDTH           1U
+#define ARM_CCA_RMI_FEATURE_REGISTER_0_PMU_NUM_CTRS_SHIFT  27U
+#define ARM_CCA_RMI_FEATURE_REGISTER_0_PMU_NUM_CTRS_WIDTH  5U
+
+/* DEN0137 2.0-bet1 - B4.6.24 RmiFeatureRegister1 type */
+#define ARM_CCA_RMI_FEATURE_REGISTER_1_RMI_GRAN_SZ_4KB_SHIFT  0U
+#define ARM_CCA_RMI_FEATURE_REGISTER_1_RMI_GRAN_SZ_4KB_WIDTH  1U
+#define ARM_CCA_RMI_FEATURE_REGISTER_1_RMI_GRAN_SZ_16KB_SHIFT 1U
+#define ARM_CCA_RMI_FEATURE_REGISTER_1_RMI_GRAN_SZ_16KB_WIDTH 1U
+#define ARM_CCA_RMI_FEATURE_REGISTER_1_RMI_GRAN_SZ_64KB_SHIFT 2U
+#define ARM_CCA_RMI_FEATURE_REGISTER_1_RMI_GRAN_SZ_64KB_WIDTH 1U
+#define ARM_CCA_RMI_FEATURE_REGISTER_1_HASH_SHA_256_SHIFT     3U
+#define ARM_CCA_RMI_FEATURE_REGISTER_1_HASH_SHA_256_WIDTH     1U
+#define ARM_CCA_RMI_FEATURE_REGISTER_1_HASH_SHA_384_SHIFT     4U
+#define ARM_CCA_RMI_FEATURE_REGISTER_1_HASH_SHA_384_WIDTH     1U
+#define ARM_CCA_RMI_FEATURE_REGISTER_1_HASH_SHA_512_SHIFT     5U
+#define ARM_CCA_RMI_FEATURE_REGISTER_1_HASH_SHA_512_WIDTH     1U
+#define ARM_CCA_RMI_FEATURE_REGISTER_1_MAX_RECS_ORDER_SHIFT   6U
+#define ARM_CCA_RMI_FEATURE_REGISTER_1_MAX_RECS_ORDER_WIDTH   4U
+#define ARM_CCA_RMI_FEATURE_REGISTER_1_L0GPTSZ_SHIFT          10U
+#define ARM_CCA_RMI_FEATURE_REGISTER_1_L0GPTSZ_WIDTH          4U
+#define ARM_CCA_RMI_FEATURE_REGISTER_1_PPS_SHIFT              14U
+#define ARM_CCA_RMI_FEATURE_REGISTER_1_PPS_WIDTH              3U
+
+/* DEN0137 2.0-bet1 - B4.6.27 RmiFeatureRegister4 type */
+#define ARM_CCA_RMI_FEATURE_REGISTER_4_MEC_COUNT_SHIFT 0U
+#define ARM_CCA_RMI_FEATURE_REGISTER_4_MEC_COUNT_WIDTH 64U
+
+/* DEN0137 2.0-bet1 - B4.6.29 RmiGranuleSize type */
+#define ARM_CCA_RMI_GRANULE_SIZE_4KB         0U
+#define ARM_CCA_RMI_GRANULE_SIZE_16KB        1U
+#define ARM_CCA_RMI_GRANULE_SIZE_64KB        2U
+
+/* DEN0137 2.0-bet1 - B4.6.30 RmiHashAlgorithm type */
+#define ARM_CCA_RMI_HASH_SHA_256            0U
+#define ARM_CCA_RMI_HASH_SHA_512            1U
+#define ARM_CCA_RMI_HASH_SHA_384            2U
+
+/* DEN0137 2.0-bet1 - B4.6.35 RmiMecPolicy type */
+#define ARM_CCA_RMI_MEC_POLICY_SHARED       0U
+#define ARM_CCA_RMI_MEC_POLICY_PRIVATE      1U
+
+/* DEN0137 2.0-bet1 - B4.6.36 RmiMemCategory type */
+#define ARM_CCA_RMI_MEM_CATEGORY_CONVENTIONAL 0U
+#define ARM_CCA_RMI_MEM_CATEGORY_DEV_NCOH     1U
+#define ARM_CCA_RMI_MEM_CATEGORY_DEV_COH      2U
+
+/* DEN0137 2.0-bet1 - B4.6.37 RmiOpCanCancel type */
+#define ARM_CCA_RMI_OP_CANNOT_CANCEL        0U
+#define ARM_CCA_RMI_OP_CAN_CANCEL           1U
+
+/* DEN0137 2.0-bet1 - B4.6.38 RmiOpMemContig type */
+#define ARM_CCA_RMI_OP_MEM_NON_CONTIG       0U
+#define ARM_CCA_RMI_OP_MEM_CONTIG           1U
+
+/* DEN0137 2.0-bet1 - B4.6.39 RmiOpMemDonateReq type */
+#define ARM_CCA_RMI_OP_DONATE_BLK_SIZE_SHIFT   0U
+#define ARM_CCA_RMI_OP_DONATE_BLK_SIZE_WIDTH   2U
+#define ARM_CCA_RMI_OP_DONATE_BLK_COUNT_SHIFT  2U
+#define ARM_CCA_RMI_OP_DONATE_BLK_COUNT_WIDTH  14U
+#define ARM_CCA_RMI_OP_DONATE_MEM_CONTIG_SHIFT 16U
+#define ARM_CCA_RMI_OP_DONATE_MEM_CONTIG_WIDTH 1U
+#define ARM_CCA_RMI_OP_DONATE_MEM_STATE_SHIFT  17U
+#define ARM_CCA_RMI_OP_DONATE_MEM_STATE_WIDTH  1U
+
+/* DEN0137 2.0-bet1 - B4.6.40 RmiOpMemReq type */
+#define ARM_CCA_RMI_OP_MEM_REQ_NONE         0U
+#define ARM_CCA_RMI_OP_MEM_REQ_DONATE       1U
+#define ARM_CCA_RMI_OP_MEM_REQ_RECLAIM      2U
+
+/* DEN0137 2.0-bet1 - B4.6.41 RmiOpMemState type */
+#define ARM_CCA_RMI_OP_MEM_DELEGATED        0U
+#define ARM_CCA_RMI_OP_MEM_UNDELEGATED      1U
+
+/* DEN0137 2.0-bet1 - B4.6.60 RmiRealmFlags0 type */
+#define ARM_CCA_RMI_REALM_FLAGS0_MEC_POLICY_SHIFT 7U
+#define ARM_CCA_RMI_REALM_FLAGS0_MEC_POLICY_WIDTH 2U
+#define ARM_CCA_RMI_REALM_FLAGS0_MEC_POLICY(policy) \
+    ((uint64_t)(policy) << ARM_CCA_RMI_REALM_FLAGS0_MEC_POLICY_SHIFT)
+
+/* DEN0137 2.0-bet1 - B4.6.62 RmiRealmParams type */
+#define ARM_CCA_RMI_PARAMS_SIZE             0x1000U
+#define ARM_CCA_RMI_RPV_SIZE                64U
+
+struct arm_cca_rmi_realm_params {
+    uint64_t flags0;
+    uint8_t  s2sz;
+    uint8_t  __pad0[0x10 - 0x09];
+    uint8_t  sve_vl;
+    uint8_t  __pad1[0x18 - 0x11];
+    uint8_t  num_bps;
+    uint8_t  __pad2[0x20 - 0x19];
+    uint8_t  num_wps;
+    uint8_t  __pad3[0x28 - 0x21];
+    uint8_t  pmu_num_ctrs;
+    uint8_t  __pad4[0x30 - 0x29];
+    uint8_t  hash_algo;
+    uint8_t  __pad5[0x38 - 0x31];
+    uint64_t num_aux_planes;
+    uint8_t  __pad6[0x400 - 0x40];
+    uint8_t  rpv[ARM_CCA_RMI_RPV_SIZE];
+    uint64_t ats_plane;
+    uint8_t  __pad7[0x808 - 0x448];
+    uint64_t rtt_base;
+    int64_t  rtt_level_start;
+    uint32_t rtt_num_start;
+    uint8_t  __pad8[0x820 - 0x81c];
+    uint64_t flags1;
+    uint8_t  __pad9[0xf80 - 0x828];
+    uint64_t aux_rtt_base[3];
+    uint8_t  __pad10[ARM_CCA_RMI_PARAMS_SIZE - 0xf98];
+} __packed;
+
+/* DEN0137 2.0-bet1 - B4.6.63 RmiRecCreateFlags type */
+#define ARM_CCA_RMI_REC_CREATE_RUNNABLE     (1UL << 0)
+
+/* DEN0137 2.0-bet1 - B4.6.64 RmiRecEnter type */
+#define ARM_CCA_RMI_REC_ENTER_SIZE          0x800U
+#define ARM_CCA_RMI_REC_NR_GPRS             31U
+
+struct arm_cca_rmi_rec_enter {
+    uint64_t flags;
+    uint8_t  __pad0[0x200 - 0x008];
+    uint64_t gprs[ARM_CCA_RMI_REC_NR_GPRS];
+    uint8_t  __pad1[ARM_CCA_RMI_REC_ENTER_SIZE -
+                    (0x200 + ARM_CCA_RMI_REC_NR_GPRS * 8)];
+} __packed;
+
+/* DEN0137 2.0-bet1 - B4.6.65 RmiRecEnterFlags type */
+#define ARM_CCA_RMI_REC_ENTER_FLAG_EMUL_MMIO        (1UL << 0)
+#define ARM_CCA_RMI_REC_ENTER_FLAG_INJECT_SEA       (1UL << 1)
+#define ARM_CCA_RMI_REC_ENTER_FLAG_TRAP_WFI         (1UL << 2)
+#define ARM_CCA_RMI_REC_ENTER_FLAG_TRAP_WFE         (1UL << 3)
+#define ARM_CCA_RMI_REC_ENTER_FLAG_RIPAS_RESPONSE   (1UL << 4)
+#define ARM_CCA_RMI_REC_ENTER_FLAG_S2AP_RESPONSE    (1UL << 5)
+#define ARM_CCA_RMI_REC_ENTER_FLAG_DEV_MEM_RESPONSE (1UL << 6)
+#define ARM_CCA_RMI_REC_ENTER_FLAG_FORCE_P0         (1UL << 7)
+
+/* DEN0137 2.0-bet1 - B4.6.66 RmiRecExit type */
+#define ARM_CCA_RMI_REC_EXIT_SIZE           0x800U
+
+struct arm_cca_rmi_rec_exit {
+    uint8_t  exit_reason;
+    uint8_t  __pad0[0x100 - 0x001];
+    uint64_t esr;
+    uint64_t far;
+    uint64_t hpfar;
+    uint64_t rtt_tree;
+    uint8_t  __pad1[0x200 - 0x120];
+    uint64_t gprs[ARM_CCA_RMI_REC_NR_GPRS];
+    uint8_t  __pad2[0x400 - (0x200 + ARM_CCA_RMI_REC_NR_GPRS * 8)];
+    uint64_t cntp_ctl;
+    uint64_t cntp_cval;
+    uint64_t cntv_ctl;
+    uint64_t cntv_cval;
+    uint8_t  __pad3[0x500 - 0x420];
+    uint64_t ripas_base;
+    uint64_t ripas_top;
+    uint8_t  ripas_value;
+    uint8_t  __pad4[0x520 - 0x511];
+    uint64_t s2ap_base;
+    uint64_t s2ap_top;
+    uint64_t vdev_id_1;
+    uint64_t vdev_id_2;
+    uint64_t dev_mem_base;
+    uint64_t dev_mem_top;
+    uint64_t dev_mem_pa;
+    uint8_t  __pad5[0x600 - 0x558];
+    uint16_t imm;
+    uint8_t  __pad6[0x608 - 0x602];
+    uint64_t plane;
+    uint8_t  __pad7[0x700 - 0x610];
+    uint8_t  pmu_ovf_status;
+    uint8_t  __pad8[0x710 - 0x701];
+    uint64_t vsmmu;
+    uint8_t  __pad9[ARM_CCA_RMI_REC_EXIT_SIZE - 0x718];
+} __packed;
+
+/* DEN0137 2.0-bet1 - B4.6.67 RmiRecExitReason type */
+#define ARM_CCA_RMI_EXIT_SYNC                  0U
+#define ARM_CCA_RMI_EXIT_IRQ                   1U
+#define ARM_CCA_RMI_EXIT_FIQ                   2U
+#define ARM_CCA_RMI_EXIT_PSCI                  3U
+#define ARM_CCA_RMI_EXIT_RIPAS_CHANGE          4U
+#define ARM_CCA_RMI_EXIT_HOST_CALL             5U
+#define ARM_CCA_RMI_EXIT_SERROR                6U
+#define ARM_CCA_RMI_EXIT_S2AP_CHANGE           7U
+#define ARM_CCA_RMI_EXIT_VDEV_REQUEST          8U
+#define ARM_CCA_RMI_EXIT_VDEV_VALIDATE_MAPPING 9U
+#define ARM_CCA_RMI_EXIT_VSMMU_COMMAND         10U
+
+/* DEN0137 2.0-bet1 - B4.6.69 RmiRecParams type */
+#define ARM_CCA_RMI_REC_CREATE_NR_GPRS      8U
+
+struct arm_cca_rmi_rec_params {
+    uint64_t flags;
+    uint8_t  __pad0[0x100 - 0x008];
+    uint64_t mpidr;
+    uint8_t  __pad1[0x200 - 0x108];
+    uint64_t pc;
+    uint8_t  __pad2[0x300 - 0x208];
+    uint64_t gprs[ARM_CCA_RMI_REC_CREATE_NR_GPRS];
+    uint8_t  __pad3[ARM_CCA_RMI_PARAMS_SIZE -
+                    (0x300 + ARM_CCA_RMI_REC_CREATE_NR_GPRS * 8)];
+} __packed;
+
+/* DEN0137 2.0-bet1 - B4.6.70 RmiRecRun type */
+#define ARM_CCA_RMI_REC_RUN_SIZE            0x1000U
+
+struct arm_cca_rmi_rec_run {
+    struct arm_cca_rmi_rec_enter enter;
+    struct arm_cca_rmi_rec_exit  exit;
+} __packed;
+
+/* DEN0137 2.0-bet1 - B4.6.73 RmiResult type */
+#define ARM_CCA_RMI_RESULT_STATUS_SHIFT     0U
+#define ARM_CCA_RMI_RESULT_STATUS_WIDTH     8U
+#define ARM_CCA_RMI_RESULT_DATA_SHIFT       8U
+
+/* DEN0137 2.0-bet1 - B4.6.74 RmiResultDataIncomplete type */
+#define ARM_CCA_RMI_RESULT_INCOMPLETE_MEM_SHIFT        0U
+#define ARM_CCA_RMI_RESULT_INCOMPLETE_MEM_WIDTH        2U
+#define ARM_CCA_RMI_RESULT_INCOMPLETE_CAN_CANCEL_SHIFT 2U
+#define ARM_CCA_RMI_RESULT_INCOMPLETE_CAN_CANCEL_WIDTH 1U
+
+/* DEN0137 2.0-bet1 - B4.6.77 RmiRipas type */
+#define ARM_CCA_RMI_RIPAS_EMPTY             0U
+#define ARM_CCA_RMI_RIPAS_RAM               1U
+#define ARM_CCA_RMI_RIPAS_DESTROYED         2U
+#define ARM_CCA_RMI_RIPAS_DEV               3U
+
+/* DEN0137 2.0-bet1 - B4.6.78 RmiRmmConfig type */
+#define ARM_CCA_RMI_RMM_CONFIG_SIZE         0x1000U
+#define ARM_CCA_RMI_TRACKING_4KB_REGION_1GB 0U
+
+struct arm_cca_rmi_rmm_config {
+    uint8_t  tracking_region_size;
+    uint8_t  __pad0[0x8 - 0x1];
+    uint8_t  rmi_granule_size;
+    uint8_t  __pad1[ARM_CCA_RMI_RMM_CONFIG_SIZE - 0x9];
+} __packed;
+
+/* DEN0137 2.0-bet1 - B4.6.80 RmiRttAddrType type */
+#define ARM_CCA_RMI_ADDR_TYPE_NONE          0U
+#define ARM_CCA_RMI_ADDR_TYPE_SINGLE        1U
+#define ARM_CCA_RMI_ADDR_TYPE_LIST          2U
+
+/* DEN0137 2.0-bet1 - B4.6.93 RmiStatusCode type */
+#define ARM_CCA_RMI_SUCCESS                 0U
+#define ARM_CCA_RMI_ERROR_INPUT             1U
+#define ARM_CCA_RMI_ERROR_REALM             2U
+#define ARM_CCA_RMI_ERROR_REC               3U
+#define ARM_CCA_RMI_ERROR_RTT               4U
+#define ARM_CCA_RMI_ERROR_NOT_SUPPORTED     5U
+#define ARM_CCA_RMI_ERROR_DEVICE            6U
+#define ARM_CCA_RMI_ERROR_RTT_AUX           7U
+#define ARM_CCA_RMI_ERROR_PSMMU_ST          8U
+#define ARM_CCA_RMI_ERROR_DPT               9U
+#define ARM_CCA_RMI_BUSY                    10U
+#define ARM_CCA_RMI_ERROR_GLOBAL            11U
+#define ARM_CCA_RMI_ERROR_TRACKING          12U
+#define ARM_CCA_RMI_INCOMPLETE              13U
+#define ARM_CCA_RMI_BLOCKED                 14U
+#define ARM_CCA_RMI_ERROR_GPT               15U
+#define ARM_CCA_RMI_ERROR_GRANULE           16U
+
+/* DEN0137 2.0-bet1 - B4.6.94 RmiTrackingRegionState type */
+#define ARM_CCA_RMI_TRACKING_RESERVED       0U
+#define ARM_CCA_RMI_TRACKING_NONE           1U
+#define ARM_CCA_RMI_TRACKING_FINE           2U
+#define ARM_CCA_RMI_TRACKING_COARSE         3U
+
+#endif /* ARM_CCA_RMI_ABI_H */
-- 
2.51.0




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.