feat(rmm): add PCIe IO info to Boot manifest
- Add PCIe and SMMUv3 related information to DTS for
configurations with ENABLE_RME=1.
- Add entries for PCIe IO memory regions to Boot manifest
- Update RMMD_MANIFEST_VERSION_MINOR from 3 to 4.
- Read PCIe related information from DTB and write it to
Boot manifest.
- Rename structures that used to describe DRAM layout
and now describe both DRAM and PCIe IO memory regions:
- ns_dram_bank -> memory_bank
- ns_dram_info -> memory_info.
Change-Id: Ib75d1af86076f724f5c330074e231f1c2ba8e21d
Signed-off-by: AlexeiFedorov <Alexei.Fedorov@arm.com>
diff --git a/docs/components/rmm-el3-comms-spec.rst b/docs/components/rmm-el3-comms-spec.rst
index 79e1d2c..f1ca031 100644
--- a/docs/components/rmm-el3-comms-spec.rst
+++ b/docs/components/rmm-el3-comms-spec.rst
@@ -53,7 +53,7 @@
consistency with the versioning schemes used in other parts of RMM.
This document specifies the 0.4 version of Boot Interface ABI and RMM-EL3
-services specification and the 0.3 version of the Boot Manifest.
+services specification and the 0.4 version of the Boot Manifest.
.. _rmm_el3_boot_interface:
@@ -182,12 +182,12 @@
This Boot Manifest is versioned independently of the Boot Interface, to help
evolve the former independent of the latter.
-The current version for the Boot Manifest is ``v0.3`` and the rules explained
+The current version for the Boot Manifest is ``v0.4`` and the rules explained
in :ref:`rmm_el3_ifc_versioning` apply on this version as well.
-The Boot Manifest v0.3 has the following fields:
+The Boot Manifest v0.4 has the following fields:
- - version : Version of the Manifest (v0.3)
+ - version : Version of the Manifest (v0.4)
- plat_data : Pointer to the platform specific data and not specified by this
document. These data are optional and can be NULL.
- plat_dram : Structure encoding the NS DRAM information on the platform. This
@@ -720,61 +720,65 @@
RMM-EL3 Boot Manifest structure
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-The RMM-EL3 Boot Manifest v0.3 structure contains platform boot information passed
-from EL3 to RMM. The size of the Boot Manifest is 64 bytes.
+The RMM-EL3 Boot Manifest v0.4 structure contains platform boot information passed
+from EL3 to RMM. The size of the Boot Manifest is 112 bytes.
The members of the RMM-EL3 Boot Manifest structure are shown in the following
table:
-+--------------+--------+----------------+----------------------------------------+
-| Name | Offset | Type | Description |
-+==============+========+================+========================================+
-| version | 0 | uint32_t | Boot Manifest version |
-+--------------+--------+----------------+----------------------------------------+
-| padding | 4 | uint32_t | Reserved, set to 0 |
-+--------------+--------+----------------+----------------------------------------+
-| plat_data | 8 | uintptr_t | Pointer to Platform Data section |
-+--------------+--------+----------------+----------------------------------------+
-| plat_dram | 16 | ns_dram_info | NS DRAM Layout Info structure |
-+--------------+--------+----------------+----------------------------------------+
-| plat_console | 40 | console_list | List of consoles available to RMM |
-+--------------+--------+----------------+----------------------------------------+
++--------------------+--------+-------------------+----------------------------------------------+
+| Name | Offset | Type | Description |
++====================+========+===================+==============================================+
+| version | 0 | uint32_t | Boot Manifest version |
++--------------------+--------+-------------------+----------------------------------------------+
+| padding | 4 | uint32_t | Reserved, set to 0 |
++--------------------+--------+-------------------+----------------------------------------------+
+| plat_data | 8 | uintptr_t | Pointer to Platform Data section |
++--------------------+--------+-------------------+----------------------------------------------+
+| plat_dram | 16 | memory_info | NS DRAM Layout Info structure |
++--------------------+--------+-------------------+----------------------------------------------+
+| plat_console | 40 | console_list | List of consoles available to RMM |
++--------------------+--------+-------------------+----------------------------------------------+
+| plat_ncoh_region | 64 | memory_info | Device non-coherent ranges Info structure |
++--------------------+--------+-------------------+----------------------------------------------+
+| plat_coh_region | 88 | memory_info | Device coherent ranges Info structure |
++--------------------+--------+-------------------+----------------------------------------------+
-.. _ns_dram_info_struct:
+.. _memory_info_struct:
-NS DRAM Layout Info structure
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Memory Info structure
+~~~~~~~~~~~~~~~~~~~~~~
-NS DRAM Layout Info structure contains information about platform Non-secure
-DRAM layout. The members of this structure are shown in the table below:
+Memory Info structure contains information about platform memory layout.
+The members of this structure are shown in the table below:
+-----------+--------+----------------+----------------------------------------+
| Name | Offset | Type | Description |
+===========+========+================+========================================+
-| num_banks | 0 | uint64_t | Number of NS DRAM banks |
+| num_banks | 0 | uint64_t | Number of memory banks/device regions |
+-----------+--------+----------------+----------------------------------------+
-| banks | 8 | ns_dram_bank * | Pointer to 'ns_dram_bank'[] array |
+| banks | 8 | memory_bank * | Pointer to 'memory_bank'[] array |
+-----------+--------+----------------+----------------------------------------+
| checksum | 16 | uint64_t | Checksum |
+-----------+--------+----------------+----------------------------------------+
Checksum is calculated as two's complement sum of 'num_banks', 'banks' pointer
-and DRAM banks data array pointed by it.
+and memory banks data array pointed by it.
-.. _ns_dram_bank_struct:
+.. _memory_bank_struct:
-NS DRAM Bank structure
-~~~~~~~~~~~~~~~~~~~~~~
+Memory Bank/Device region structure
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-NS DRAM Bank structure contains information about each Non-secure DRAM bank:
+Memory Bank structure contains information about each memory bank/device region:
-+-----------+--------+----------------+----------------------------------------+
-| Name | Offset | Type | Description |
-+===========+========+================+========================================+
-| base | 0 | uintptr_t | Base address |
-+-----------+--------+----------------+----------------------------------------+
-| size | 8 | uint64_t | Size of bank in bytes |
-+-----------+--------+----------------+----------------------------------------+
++-----------+--------+----------------+--------------------------------------------+
+| Name | Offset | Type | Description |
++===========+========+================+============================================+
+| base | 0 | uintptr_t | Base address |
++-----------+--------+----------------+--------------------------------------------+
+| size | 8 | uint64_t | Size of memory bank/device region in bytes |
++-----------+--------+----------------+--------------------------------------------+
.. _console_list_struct:
@@ -784,15 +788,15 @@
Console List structure contains information about the available consoles for RMM.
The members of this structure are shown in the table below:
-+--------------+--------+----------------+----------------------------------------+
-| Name | Offset | Type | Description |
-+==============+========+================+========================================+
-| num_consoles | 0 | uint64_t | Number of consoles |
-+--------------+--------+----------------+----------------------------------------+
-| consoles | 8 | console_info * | Pointer to 'console_info'[] array |
-+--------------+--------+----------------+----------------------------------------+
-| checksum | 16 | uint64_t | Checksum |
-+--------------+--------+----------------+----------------------------------------+
++--------------+--------+----------------+-------------------------------------+
+| Name | Offset | Type | Description |
++==============+========+================+=====================================+
+| num_consoles | 0 | uint64_t | Number of consoles |
++--------------+--------+----------------+-------------------------------------+
+| consoles | 8 | console_info * | Pointer to 'console_info'[] array |
++--------------+--------+----------------+-------------------------------------+
+| checksum | 16 | uint64_t | Checksum |
++--------------+--------+----------------+-------------------------------------+
Checksum is calculated as two's complement sum of 'num_consoles', 'consoles'
pointer and the consoles array pointed by it.
@@ -804,28 +808,28 @@
Console Info structure contains information about each Console available to RMM.
-+-----------+--------+---------------+----------------------------------------+
-| Name | Offset | Type | Description |
-+===========+========+===============+========================================+
-| base | 0 | uintptr_t | Console Base address |
-+-----------+--------+---------------+----------------------------------------+
-| map_pages | 8 | uint64_t | Num of pages to map for console MMIO |
-+-----------+--------+---------------+----------------------------------------+
-| name | 16 | char[] | Name of console |
-+-----------+--------+---------------+----------------------------------------+
-| clk_in_hz | 24 | uint64_t | UART clock (in hz) for console |
-+-----------+--------+---------------+----------------------------------------+
-| baud_rate | 32 | uint64_t | Baud rate |
-+-----------+--------+---------------+----------------------------------------+
-| flags | 40 | uint64_t | Additional flags (RES0) |
-+-----------+--------+---------------+----------------------------------------+
++-----------+--------+---------------+-----------------------------------------+
+| Name | Offset | Type | Description |
++===========+========+===============+=========================================+
+| base | 0 | uintptr_t | Console Base address |
++-----------+--------+---------------+-----------------------------------------+
+| map_pages | 8 | uint64_t | Num of pages to map for console MMIO |
++-----------+--------+---------------+-----------------------------------------+
+| name | 16 | char[8] | Name of console |
++-----------+--------+---------------+-----------------------------------------+
+| clk_in_hz | 24 | uint64_t | UART clock (in Hz) for console |
++-----------+--------+---------------+-----------------------------------------+
+| baud_rate | 32 | uint64_t | Baud rate |
++-----------+--------+---------------+-----------------------------------------+
+| flags | 40 | uint64_t | Additional flags (RES0) |
++-----------+--------+---------------+-----------------------------------------+
.. _el3_token_sign_request_struct:
EL3 Token Sign Request structure
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-This structure represents a realm attestation toekn signing request.
+This structure represents a realm attestation token signing request.
+-------------+--------+---------------+-----------------------------------------+
| Name | Offset | Type | Description |