blob: 13449ba6d6aed8382aa72e70c4635ed6e7c208df [file] [log] [blame]
Govindraj Rajabedf4ef2024-02-23 16:50:52 -06001Vendor Specific EL3 Monitor Service Calls
2=========================================
3
4This document enumerates and describes the Vendor Specific EL3 Monitor Service
5Calls.
6
7These are Service Calls defined by the vendor of the EL3 Monitor.
8They are accessed via ``SMC`` ("SMC calls") instruction executed from Exception
9Levels 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 Raja79cd7a02024-03-07 15:24:19 -060022Vendor-specific EL3 monitor services are as follows:
23
24+-----------------------------------+-----------------------+---------------------------------------------+
25| SMC Function Identifier | Service Type | FID's Usage |
26+===================================+=======================+=============================================+
Govindraj Rajacd29ad52024-04-15 12:42:13 -050027| 0x87000010 - 0x8700001F (SMC32) | DebugFS Interface | | 0 - 11 are in use. |
28+-----------------------------------+ | | 12 - 15 are reserved for future expansion.|
Govindraj Raja79cd7a02024-03-07 15:24:19 -060029| 0xC7000010 - 0xC700001F (SMC64) | | |
30+-----------------------------------+-----------------------+---------------------------------------------+
Govindraj Raja560537e2024-04-23 11:48:48 -050031| 0x87000020 - 0x8700002F (SMC32) | Performance | | 0,1 is in use. |
32+-----------------------------------+ Measurement Framework | | 2 - 15 are reserved for future expansion. |
Govindraj Rajacd29ad52024-04-15 12:42:13 -050033| 0xC7000020 - 0xC700002F (SMC64) | (PMF) | |
34+-----------------------------------+-----------------------+---------------------------------------------+
Govindraj Rajab2298f92024-03-19 17:46:22 -050035| 0x87000030 - 0x8700FFFF (SMC32) | Reserved | | reserved for future expansion |
36+-----------------------------------+ | |
37| 0xC7000030 - 0xC700FFFF (SMC64) | | |
38+-----------------------------------+-----------------------+---------------------------------------------+
Govindraj Raja79cd7a02024-03-07 15:24:19 -060039
Govindraj Rajab2298f92024-03-19 17:46:22 -050040Source definitions for vendor-specific EL3 Monitor Service Calls used by TF-A are located in
Govindraj Rajabedf4ef2024-02-23 16:50:52 -060041the ``ven_el3_svc.h`` header file.
42
Govindraj Rajab2298f92024-03-19 17:46:22 -050043+----------------------------+----------------------------+--------------------------------+
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
51Each sub service will have its own version, one FID allocated for sub service version.
52
53Some 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 Rajacd29ad52024-04-15 12:42:13 -050060
61Performance Measurement Framework (PMF)
62---------------------------------------
63
64The :ref:`Performance Measurement Framework <firmware_design_pmf>`
65allows callers to retrieve timestamps captured at various paths in TF-A
66execution.
Govindraj Raja79cd7a02024-03-07 15:24:19 -060067
68DebugFS interface
69-----------------
70
71The optional DebugFS interface is accessed through Vendor specific EL3 service. Refer
72to :ref:`DebugFS interface` documentation for further details and usage.
73
Govindraj Rajabedf4ef2024-02-23 16:50:52 -060074--------------
75
76*Copyright (c) 2024, Arm Limited and Contributors. All rights reserved.*
77
78.. _SMC Calling Convention: https://developer.arm.com/docs/den0028/latest