feat((smccc): add version FID for PMFIntroduce a version FID for PMF.Change-Id: I6b0a7f54aefc2839704e03c5da2243d7c85f8a49Signed-off-by: Govindraj Raja <govindraj.raja@arm.com>
refactor(smccc): move pmf to vendor el3 callsMove pmf support to vendor-specific EL3 Monitor Service Calls. Removepmf call count as it's not supported in vendor-specific el3 as perSMCCC Documenta
refactor(smccc): move pmf to vendor el3 callsMove pmf support to vendor-specific EL3 Monitor Service Calls. Removepmf call count as it's not supported in vendor-specific el3 as perSMCCC Documentation 1.5:https://developer.arm.com/documentation/den0028/latestAdd a deprecation notice to inform PMF is moved from arm-sip range tovendor-specific EL3 range. PMF support from arm-sip range will beremoved and will not available after TF-A 2.12 release.Change-Id: Ie1e14aa601d4fc3db352cd5621d842017a18e9ecSigned-off-by: Govindraj Raja <govindraj.raja@arm.com>
show more ...
fix(smccc): ensure that mpidr passed through SMC is validThere are various SMC calls which pass mpidr as an argument which iscurrently tested at random places in SMC call path.To make the mpidr v
fix(smccc): ensure that mpidr passed through SMC is validThere are various SMC calls which pass mpidr as an argument which iscurrently tested at random places in SMC call path.To make the mpidr validation check consistent across SMC calls, dothis check as part of SMC argument validation.This patch introduce a helper function is_valid_mpidr() to validatempidr and call it as part of validating SMC arguments at starting ofSMC handlers (which expect mpidr as an argument).Signed-off-by: Manish Pandey <manish.pandey2@arm.com>Change-Id: I11ea50e22caf17896cf4b2059b87029b2ba136b1
chore: update to use Arm word across TF-AAlign entire TF-A to use Arm in copyright header.Change-Id: Ief9992169efdab61d0da6bd8c5180de7a4bc2244Signed-off-by: Govindraj Raja <govindraj.raja@arm.co
chore: update to use Arm word across TF-AAlign entire TF-A to use Arm in copyright header.Change-Id: Ief9992169efdab61d0da6bd8c5180de7a4bc2244Signed-off-by: Govindraj Raja <govindraj.raja@arm.com>
build: always prefix section names with `.`Some of our specialized sections are not prefixed with the conventionalperiod. The compiler uses input section names to derive certain othersection name
build: always prefix section names with `.`Some of our specialized sections are not prefixed with the conventionalperiod. The compiler uses input section names to derive certain othersection names (e.g. `.rela.text`, `.relacpu_ops`), and these can bedifficult to select in linker scripts when there is a lack of adelimiter.This change introduces the period prefix to all specialized sectionnames.BREAKING-CHANGE: All input and output linker section names have been prefixed with the period character, e.g. `cpu_ops` -> `.cpu_ops`.Change-Id: I51c13c5266d5975fbd944ef4961328e72f82fc1cSigned-off-by: Chris Kay <chris.kay@arm.com>
Sanitise includes across codebaseEnforce full include path for includes. Deprecate old paths.The following folders inside include/lib have been left unchanged:- include/lib/cpus/${ARCH}- inclu
Sanitise includes across codebaseEnforce full include path for includes. Deprecate old paths.The following folders inside include/lib have been left unchanged:- include/lib/cpus/${ARCH}- include/lib/el3_runtime/${ARCH}The reason for this change is that having a global namespace forincludes isn't a good idea. It defeats one of the advantages of havingfolders and it introduces problems that are sometimes subtle (becauseyou may not know the header you are actually including if there are twoof them).For example, this patch had to be created because two headers werecalled the same way: e0ea0928d5b7 ("Fix gpio includes of mt8173 platformto avoid collision."). More recently, this patch has had similarproblems: 46f9b2c3a282 ("drivers: add tzc380 support").This problem was introduced in commit 4ecca33988b9 ("Move include andsource files to logical locations"). At that time, there weren't toomany headers so it wasn't a real issue. However, time has shown thatthis creates problems.Platforms that want to preserve the way they include headers may add theremoved paths to PLAT_INCLUDES, but this is discouraged.Change-Id: I39dc53ed98f9e297a5966e723d1936d6ccf2fc8fSigned-off-by: Antonio Nino Diaz <antonio.ninodiaz@arm.com>
Fix MISRA defects in PMFNo functional changes.Change-Id: I64abd72026082218a40b1a4b8f7dc26ff2478ba6Signed-off-by: Antonio Nino Diaz <antonio.ninodiaz@arm.com>
PIE: Position Independant Executable support for BL31This patch introduces Position Independant Executable(PIE) supportin TF-A. As a initial prototype, only BL31 can support PIE. A trivialdynamic
PIE: Position Independant Executable support for BL31This patch introduces Position Independant Executable(PIE) supportin TF-A. As a initial prototype, only BL31 can support PIE. A trivialdynamic linker is implemented which supports fixing up Global OffsetTable(GOT) and Dynamic relocations(.rela.dyn). The fixup_gdt_reloc()helper function implements this linker and this needs to be calledearly in the boot sequence prior to invoking C functions. The GOT isplaced in the RO section of BL31 binary for improved security and theBL31 linker script is modified to export the appropriate symbolsrequired for the dynamic linker.The C compiler always generates PC relative addresses to linker symbolsand hence referencing symbols exporting constants are a problem whenrelocating the binary. Hence the reference to the`__PERCPU_TIMESTAMP_SIZE__` symbol in PMF is removed and is now calculatedat runtime based on start and end addresses.Change-Id: I1228583ff92cf432963b7cef052e95d995cca93dSigned-off-by: Soby Mathew <soby.mathew@arm.com>
libc: Use printf and snprintf across codebasetf_printf and tf_snprintf are now called printf and snprintf, so thecode needs to be updated.Change-Id: Iffeee97afcd6328c4c2d30830d4923b964682d71Sig
libc: Use printf and snprintf across codebasetf_printf and tf_snprintf are now called printf and snprintf, so thecode needs to be updated.Change-Id: Iffeee97afcd6328c4c2d30830d4923b964682d71Signed-off-by: Antonio Nino Diaz <antonio.ninodiaz@arm.com>
Merge pull request #1313 from jonathanwright-ARM/jw/MISRA-switch-statementsFix switch statements to comply with MISRA rules
Clean usage of void pointers to access symbolsVoid pointers have been used to access linker symbols, by declaring anextern pointer, then taking the address of it. This limits symbolsvalues to ali
Clean usage of void pointers to access symbolsVoid pointers have been used to access linker symbols, by declaring anextern pointer, then taking the address of it. This limits symbolsvalues to aligned pointer values. To remove this restriction anIMPORT_SYM macro has been introduced, which declares it as a charpointer and casts it to the required type.Change-Id: I89877fc3b13ed311817bb8ba79d4872b89bfd3b0Signed-off-by: Joel Hutton <Joel.Hutton@Arm.com>
lib: fix switch statements to comply with MISRA rulesEnsure (where possible) that switch statements in lib comply with MISRArules 16.1 - 16.7.Change-Id: I52bc896fb7094d2b7569285686ee89f39f1ddd84
lib: fix switch statements to comply with MISRA rulesEnsure (where possible) that switch statements in lib comply with MISRArules 16.1 - 16.7.Change-Id: I52bc896fb7094d2b7569285686ee89f39f1ddd84Signed-off-by: Jonathan Wright <jonathan.wright@arm.com>
Rename 'smcc' to 'smccc'When the source code says 'SMCC' it is talking about the SMC CallingConvention. The correct acronym is SMCCC. This affects a few definitionsand file names.Some files hav
Rename 'smcc' to 'smccc'When the source code says 'SMCC' it is talking about the SMC CallingConvention. The correct acronym is SMCCC. This affects a few definitionsand file names.Some files have been renamed (smcc.h, smcc_helpers.h and smcc_macros.S)but the old files have been kept for compatibility, they include thenew ones with an ERROR_DEPRECATED guard.Change-Id: I78f94052a502436fdd97ca32c0fe86bd58173f2fSigned-off-by: Antonio Nino Diaz <antonio.ninodiaz@arm.com>
Use SPDX license identifiersTo make software license auditing simpler, use SPDX[0] licenseidentifiers instead of duplicating the license text in every file.NOTE: Files that have been imported by
Use SPDX license identifiersTo make software license auditing simpler, use SPDX[0] licenseidentifiers instead of duplicating the license text in every file.NOTE: Files that have been imported by FreeBSD have not been modified.[0]: https://spdx.org/Change-Id: I80a00e1f641b8cc075ca5a95b10607ed9ed8761aSigned-off-by: dp-arm <dimitris.papastamos@arm.com>
Add Performance Measurement Framework(PMF)This patch adds Performance Measurement Framework(PMF) in theARM Trusted Firmware. PMF is implemented as a library and theSMC interface is provided throu
Add Performance Measurement Framework(PMF)This patch adds Performance Measurement Framework(PMF) in theARM Trusted Firmware. PMF is implemented as a library and theSMC interface is provided through ARM SiP service.The PMF provides capturing, storing, dumping and retrieving thetime-stamps, by enabling the development of services by differentproviders, that can be easily integrated into ARM Trusted Firmware.The PMF capture and retrieval APIs can also do appropriate cachemaintenance operations to the timestamp memory when the callerindicates so.`pmf_main.c` consists of core functions that implement serviceregistration, initialization, storing, dumping and retrievingthe time-stamp.`pmf_smc.c` consists SMC handling for registered PMF services.`pmf.h` consists of the macros that can be used by the PMF serviceproviders to register service and declare time-stamp functions.`pmf_helpers.h` consists of internal macros that are used by `pmf.h`By default this feature is disabled in the ARM trusted firmware.To enable it set the boolean flag `ENABLE_PMF` to 1.NOTE: The caller is responsible for specifying the appropriate cachemaintenance flags and for acquiring/releasing appropriate locksbefore/after capturing/retrieving the time-stamps.Change-Id: Ib45219ac07c2a81b9726ef6bd9c190cc55e81854