Govindraj Raja | bedf4ef | 2024-02-23 16:50:52 -0600 | [diff] [blame] | 1 | Vendor Specific EL3 Monitor Service Calls |
| 2 | ========================================= |
| 3 | |
| 4 | This document enumerates and describes the Vendor Specific EL3 Monitor Service |
| 5 | Calls. |
| 6 | |
| 7 | These are Service Calls defined by the vendor of the EL3 Monitor. |
| 8 | They are accessed via ``SMC`` ("SMC calls") instruction executed from Exception |
| 9 | Levels below EL3. SMC calls for Vendor Specific EL3 Monitor Services: |
| 10 | |
| 11 | - Follow `SMC Calling Convention`_; |
| 12 | - Use SMC function IDs that fall in the vendor-specific EL3 range, which are |
| 13 | |
| 14 | +---------------------------+--------------------------------------------------+ |
| 15 | | SMC Function Identifier | Service Type | |
| 16 | +===========================+==================================================+ |
| 17 | | 0x87000000 - 0x8700FFFF | SMC32: Vendor Specific EL3 Monitor Service Calls | |
| 18 | +---------------------------+--------------------------------------------------+ |
| 19 | | 0xC7000000 - 0xC700FFFF | SMC64: Vendor Specific EL3 Monitor Service Calls | |
| 20 | +---------------------------+--------------------------------------------------+ |
| 21 | |
Govindraj Raja | 79cd7a0 | 2024-03-07 15:24:19 -0600 | [diff] [blame] | 22 | Vendor-specific EL3 monitor services are as follows: |
| 23 | |
| 24 | +-----------------------------------+-----------------------+---------------------------------------------+ |
| 25 | | SMC Function Identifier | Service Type | FID's Usage | |
| 26 | +===================================+=======================+=============================================+ |
Govindraj Raja | cd29ad5 | 2024-04-15 12:42:13 -0500 | [diff] [blame] | 27 | | 0x87000010 - 0x8700001F (SMC32) | DebugFS Interface | | 0 - 11 are in use. | |
| 28 | +-----------------------------------+ | | 12 - 15 are reserved for future expansion.| |
Govindraj Raja | 79cd7a0 | 2024-03-07 15:24:19 -0600 | [diff] [blame] | 29 | | 0xC7000010 - 0xC700001F (SMC64) | | | |
| 30 | +-----------------------------------+-----------------------+---------------------------------------------+ |
Govindraj Raja | 560537e | 2024-04-23 11:48:48 -0500 | [diff] [blame] | 31 | | 0x87000020 - 0x8700002F (SMC32) | Performance | | 0,1 is in use. | |
| 32 | +-----------------------------------+ Measurement Framework | | 2 - 15 are reserved for future expansion. | |
Govindraj Raja | cd29ad5 | 2024-04-15 12:42:13 -0500 | [diff] [blame] | 33 | | 0xC7000020 - 0xC700002F (SMC64) | (PMF) | | |
| 34 | +-----------------------------------+-----------------------+---------------------------------------------+ |
Govindraj Raja | b2298f9 | 2024-03-19 17:46:22 -0500 | [diff] [blame] | 35 | | 0x87000030 - 0x8700FFFF (SMC32) | Reserved | | reserved for future expansion | |
| 36 | +-----------------------------------+ | | |
| 37 | | 0xC7000030 - 0xC700FFFF (SMC64) | | | |
| 38 | +-----------------------------------+-----------------------+---------------------------------------------+ |
Govindraj Raja | 79cd7a0 | 2024-03-07 15:24:19 -0600 | [diff] [blame] | 39 | |
Govindraj Raja | b2298f9 | 2024-03-19 17:46:22 -0500 | [diff] [blame] | 40 | Source definitions for vendor-specific EL3 Monitor Service Calls used by TF-A are located in |
Govindraj Raja | bedf4ef | 2024-02-23 16:50:52 -0600 | [diff] [blame] | 41 | the ``ven_el3_svc.h`` header file. |
| 42 | |
Govindraj Raja | b2298f9 | 2024-03-19 17:46:22 -0500 | [diff] [blame] | 43 | +----------------------------+----------------------------+--------------------------------+ |
| 44 | | VEN_EL3_SVC_VERSION_MAJOR | VEN_EL3_SVC_VERSION_MINOR | Changes | |
| 45 | +============================+============================+================================+ |
| 46 | | 1 | 0 | Added Debugfs and PMF services.| |
| 47 | +----------------------------+----------------------------+--------------------------------+ |
| 48 | |
| 49 | *Table 1: Showing different versions of Vendor-specific service and changes done with each version* |
| 50 | |
| 51 | Each sub service will have its own version, one FID allocated for sub service version. |
| 52 | |
| 53 | Some ground rules when one should update top level version. |
| 54 | - VEN_EL3_SVC_VERSION_MAJOR is incremented when any of the sub service version discovery |
| 55 | FID changes or the FID that was allocated for discovery changes. So any breaking subfeature |
| 56 | discovery changes will lead to major version update. |
| 57 | - VEN_EL3_SVC_VERSION_MINOR is incremented when we add a new FID or a new sub service. |
| 58 | For example adding an new monitor service at 0x30, Debugfs starts at 0x10 and PMF |
| 59 | starts at 0x20 next one will start at 0x30, this will need a update to minor version. |
Govindraj Raja | cd29ad5 | 2024-04-15 12:42:13 -0500 | [diff] [blame] | 60 | |
| 61 | Performance Measurement Framework (PMF) |
| 62 | --------------------------------------- |
| 63 | |
| 64 | The :ref:`Performance Measurement Framework <firmware_design_pmf>` |
| 65 | allows callers to retrieve timestamps captured at various paths in TF-A |
| 66 | execution. |
Govindraj Raja | 79cd7a0 | 2024-03-07 15:24:19 -0600 | [diff] [blame] | 67 | |
| 68 | DebugFS interface |
| 69 | ----------------- |
| 70 | |
| 71 | The optional DebugFS interface is accessed through Vendor specific EL3 service. Refer |
| 72 | to :ref:`DebugFS interface` documentation for further details and usage. |
| 73 | |
Govindraj Raja | bedf4ef | 2024-02-23 16:50:52 -0600 | [diff] [blame] | 74 | -------------- |
| 75 | |
| 76 | *Copyright (c) 2024, Arm Limited and Contributors. All rights reserved.* |
| 77 | |
| 78 | .. _SMC Calling Convention: https://developer.arm.com/docs/den0028/latest |