Commit graph

11359 commits

Author SHA1 Message Date
Tamas Ban
901b0a3015 fix(psa): extend measured boot logging
Print all the params of
rss_measured_boot_extend_measurement() to
the console to check parameter healthiness.

Signed-off-by: Tamas Ban <tamas.ban@arm.com>
Change-Id: I072fe5fef72c67e615ab64e06a9e1f6add5e9cfc
2022-10-07 11:32:48 +02:00
Tamas Ban
2c8f2a9ad4 fix(rss): determine the size of sw_type in RSS mboot metadata
Without setting the correct size of sw_type the metadata won't
be propagated to RSS through rss_measured_boot_extend_measurement()
API.

Signed-off-by: Tamas Ban <tamas.ban@arm.com>
Change-Id: I4066d4762689c96ac2ac8e8b8db5d2b1f108b550
2022-10-07 11:32:48 +02:00
Tamas Ban
471c9895a6 fix(psa): align with original API in tf-m-extras
The measured boot API is available in the tf-m-extras
repo:
partitions/measured_boot/interface/src/measured_boot_api.c

This change make the API behavior align with
the original implementation.

Signed-off-by: Tamas Ban <tamas.ban@arm.com>
Change-Id: Ie4af38b859f942b2ef090e92da64d75811b5b49b
2022-10-07 11:32:48 +02:00
Tamas Ban
e3a6fb84f5 fix(rss): clear the message buffer
Clear the MHU message buffer to remove assets from memory.

Signed-off-by: Tamas Ban <tamas.ban@arm.com>
Change-Id: I730e7b044eaf0bf517532a12146e4f542949544e
2022-10-07 11:32:48 +02:00
Tamas Ban
6cb5d3268f feat(tc): enable RSS backend based measured boot
Measurements taken during boot are stored in RSS.
These measurements are included in the platform
attestation token.

Change-Id: Iac3356f813fb417315681c718839319832a76191
Signed-off-by: David Vincze <david.vincze@arm.com>
Signed-off-by: Tamas Ban <tamas.ban@arm.com>
2022-10-07 11:32:48 +02:00
David Vincze
e6c131655f feat(tc): increase maximum BL1/BL2/BL31 sizes
The maximum size of BL1/BL2/BL31 is increased due to
the added new functionalities, such as RSS based
measured boot on TC2.

Change-Id: I939c7c3da6bf870db46b32cd2836c6737de278bb
Signed-off-by: David Vincze <david.vincze@arm.com>
Signed-off-by: Tamas Ban <tamas.ban@arm.com>
2022-10-07 11:32:48 +02:00
Tamas Ban
420deb5a0d feat(psa): remove initial attestation partition API
The attestation key derivation and platform attestation token
creation functionality is provided by the Delegated Attestation
partition in RSS.

Signed-off-by: Tamas Ban <tamas.ban@arm.com>
Change-Id: I2d8c0e6589d11e7c81c698adf75ee2a993e3a0c6
2022-10-07 11:32:48 +02:00
Tamas Ban
1bc78557c3 docs: add PLAT_RSS_COMMS_PAYLOAD_MAX_SIZE to porting-guide.rst
Signed-off-by: Tamas Ban <tamas.ban@arm.com>
Change-Id: I79761347919a0dfa86a29b5424f1d34fc4ab91cb
2022-10-07 11:32:48 +02:00
Tamas Ban
6aa71542f3 fix(rss): remove dependency on attestation header
Platform must define the maximum size of the message
over MHU.

Signed-off-by: Tamas Ban <tamas.ban@arm.com>
Change-Id: I91a6c132c946f4465178910b8ea83544f562e837
2022-10-07 11:32:48 +02:00
Tamas Ban
70247ddbbd fix(rss): rename AP-RSS message size macro
Adding PLAT_* prefix to indicate that the
platform needs to provide this definition.

Signed-off-by: Tamas Ban <tamas.ban@arm.com>
Change-Id: I0bd02be405fd8b1e625bd2b82647ebb2b58265fc
2022-10-07 11:32:48 +02:00
David Vincze
445130b127 feat(tc): add RSS-AP message size macro
Define the RSS_COMMS_PAYLOAD_MAX_SIZE macro. Its value is platform
specific and gives the largest message size which are exchanged
on the TC2 platform between RSS and AP.

Change-Id: Id831c282dc9a39755b82befead1a81767e217215
Signed-off-by: David Vincze <david.vincze@arm.com>
Signed-off-by: Tamas Ban <tamas.ban@arm.com>
2022-10-07 11:32:48 +02:00
David Vincze
6299c3a0f7 feat(tc): add MHU addresses for AP-RSS comms on TC2
Change-Id: I600485ca83f91378d07cac6cee484bc4a1bf2a9c
Signed-off-by: David Vincze <david.vincze@arm.com>
2022-10-07 11:32:48 +02:00
Tamas Ban
4b09ffef49 feat(psa): add delegated attestation partition API
Delegated attestation is a service provided by RSS to:
- Derive a delegated attestation key: Realm Attestation Key
- Query the platform attestation token

Signed-off-by: Tamas Ban <tamas.ban@arm.com>
Change-Id: I3edf09fcbef24bca7c8a000ffac8c1ab64dfb812
2022-10-07 11:32:48 +02:00
Tamas Ban
13a129e8dc fix(rss): reduce input validation for measured boot
Remove an assert, which checks whether output buffer is
provided, because in measured boot there is no output.

Signed-off-by: Tamas Ban <tamas.ban@arm.com>
Change-Id: I08db9c2eea1da2d7120c9872ffbf8d8ee45c8e08
2022-10-07 11:32:48 +02:00
Manish Pandey
7042fa6d39 Merge changes from topic "mb/drtm-preparatory-patches" into integration
* changes:
  docs(drtm): steps to run DRTM implementation
  docs(drtm): add platform APIs for DRTM
  feat(drtm): flush dcache before DLME launch
  feat(drtm): invalidate icache before DLME launch
  feat(drtm): ensure that passed region lies within Non-Secure region of DRAM
  feat(fvp): add plat API to validate that passed region is non-secure
  feat(drtm): ensure that no SDEI event registered during dynamic launch
  feat(drtm): prepare EL state during dynamic launch
  feat(drtm): prepare DLME data for DLME launch
  feat(drtm): take DRTM components measurements before DLME launch
  feat(drtm): add a few DRTM DMA protection APIs
  feat(drtm): add remediation driver support in DRTM
  feat(fvp): add plat API to set and get the DRTM error
  feat(drtm): add Event Log driver support for DRTM
  feat(drtm): check drtm arguments during dynamic launch
  feat(drtm): introduce drtm dynamic launch function
  refactor(measured-boot): split out a few Event Log driver functions
  feat(drtm): retrieve DRTM features
  feat(drtm): add platform functions for DRTM
  feat(sdei): add a function to return total number of events registered
  feat(drtm): add PCR entries for DRTM
  feat(drtm): update drtm setup function
  refactor(crypto): change CRYPTO_SUPPORT flag to numeric
  feat(mbedtls): update mbedTLS driver for DRTM support
  feat(fvp): add crypto support in BL31
  feat(crypto): update crypto module for DRTM support
  build(changelog): add new scope for mbedTLS and Crypto module
  feat(drtm): add standard DRTM service
  build(changelog): add new scope for DRTM service
  feat(fvp): increase MAX_XLAT_TABLES entries for DRTM support
  feat(fvp): increase BL31's stack size for DRTM support
  feat(fvp): add platform hooks for DRTM DMA protection
2022-10-06 17:39:35 +02:00
Madhukar Pappireddy
ed397c9857 Merge "fix(qti): adding secure rm flag" into integration 2022-10-06 15:55:47 +02:00
Manish V Badarkhe
50a43b0f64 docs(drtm): steps to run DRTM implementation
Documented steps to run DRTM implementation.

Signed-off-by: Manish V Badarkhe <Manish.Badarkhe@arm.com>
Change-Id: I30dd8c1088a54a8906389c2584d922862610dae0
2022-10-06 14:02:25 +01:00
Lucian Paul-Trifu
b3b227ff20 docs(drtm): add platform APIs for DRTM
Documented platform APIs for DRTM

Signed-off-by: Lucian Paul-Trifu <lucian.paultrifu@gmail.com>
Signed-off-by: Manish V Badarkhe <manish.badarkhe@arm.com>
Change-Id: I22749c26bbe7b3271705dd3db07e8597fce6225b
2022-10-06 14:02:25 +01:00
Manish Pandey
67471e75b3 feat(drtm): flush dcache before DLME launch
Flush the data cache range before DLME launch to ensure that data
passed by DCE preamble is committed.

Signed-off-by: Manish Pandey <manish.pandey2@arm.com>
Change-Id: I9946fd3420a17b86d9f1483e8b2cd5880033454e
2022-10-06 14:02:25 +01:00
Manish Pandey
2c265975a7 feat(drtm): invalidate icache before DLME launch
As per DRTM beta0 spec table #28, Before the DLME is called the DCE
must invalidate all instruction caches.

Signed-off-by: Manish Pandey <manish.pandey2@arm.com>
Change-Id: I7efbb03d1d13346a8d898882fdbd7bbe8f1d49b2
2022-10-06 14:02:25 +01:00
Sandrine Bailleux
46bfa120fd Merge "build: forbid ENABLE_RME=1 when SEPARATE_CODE_AND_RODATA=0" into integration 2022-10-06 09:32:31 +02:00
Muhammad Arsath K F
b5959ab029 fix(qti): adding secure rm flag
Adding SECURE rm flag to support INTR_EL3_VALID_RM1 routing model.

Signed-off-by: Muhammad Arsath K F <quic_mkf@quicinc.com>
Change-Id: Ie72d62148e81d3cf7fb05f46124f846cc45d9d41
2022-10-06 06:47:14 +02:00
Madhukar Pappireddy
78842045c0 Merge "fix(semihosting): fix seek call failure check" into integration 2022-10-05 18:42:50 +02:00
Manish V Badarkhe
764aa951b2 feat(drtm): ensure that passed region lies within Non-Secure region of DRAM
Ensured DLME data region and DRTM parameters are lies within Non-Secure
region of DRAM by calling platform function 'plat_drtm_validate_ns_region'.

Signed-off-by: Manish V Badarkhe <Manish.Badarkhe@arm.com>
Change-Id: I93ead775f45ca7748193631f8f9eec4326fcf20a
2022-10-05 15:25:28 +01:00
Manish V Badarkhe
d5f225d95d feat(fvp): add plat API to validate that passed region is non-secure
Added a platform function to check passed region is within
the Non-Secure region of DRAM.

Signed-off-by: Manish V Badarkhe <Manish.Badarkhe@arm.com>
Change-Id: Ie5808fa6a1b6e6bc99f4185fa8acc52af0d5f14d
2022-10-05 15:25:28 +01:00
Manish Pandey
b1392f429c feat(drtm): ensure that no SDEI event registered during dynamic launch
Ensured no SDEI event are registered during dynamic launch.

Signed-off-by: Manish Pandey <manish.pandey2@arm.com>
Change-Id: Ied3b2d389aa3d9a96ace9078581d5e691f0b38a7
2022-10-05 15:25:28 +01:00
Manish Pandey
d1747e1b8e feat(drtm): prepare EL state during dynamic launch
Prepared EL state before dynamic launch

Change-Id: I3940cd7fc74da1a1addbeb08ae34f16771395e61
Signed-off-by: Manish Pandey <manish.pandey2@arm.com>
Signed-off-by: Lucian Paul-Trifu <lucian.paultrifu@gmail.com>
2022-10-05 15:25:28 +01:00
Manish V Badarkhe
d42119cc29 feat(drtm): prepare DLME data for DLME launch
Prepared DLME data before DLME launch

Change-Id: I28e2132d9c832ab5bd25cf884925b99cc48258ea
Signed-off-by: Manish V Badarkhe <Manish.Badarkhe@arm.com>
2022-10-05 15:25:28 +01:00
Manish V Badarkhe
2090e55283 feat(drtm): take DRTM components measurements before DLME launch
Taken measurement of various DRTM components in the Event Log
buffer to pass it to DLME.

Change-Id: Ic56620161f42596d22bf40d5c83c041cbce0b618
Signed-off-by: Manish V Badarkhe <Manish.Badarkhe@arm.com>
2022-10-05 15:25:28 +01:00
Manish V Badarkhe
2b13a98599 feat(drtm): add a few DRTM DMA protection APIs
Added DRTM DMA protections APIs, and called them during
the DLME launch and DRTM SMC handling.

Change-Id: I29e7238c04e2ca9f26600276c5c05bff5387789e
Signed-off-by: Manish V Badarkhe <Manish.Badarkhe@arm.com>
2022-10-05 15:25:28 +01:00
Manish V Badarkhe
1436e37dcb feat(drtm): add remediation driver support in DRTM
Added remediation driver for DRTM to set/get the error
from non-volatile memory

Change-Id: I8f0873dcef4936693e0f39a3c95096cb689c04b7
Signed-off-by: Manish V Badarkhe <Manish.Badarkhe@arm.com>
Signed-off-by: Lucian Paul-Trifu <lucian.paultrifu@gmail.com>
2022-10-05 15:25:28 +01:00
Manish V Badarkhe
586f60cc57 feat(fvp): add plat API to set and get the DRTM error
Added a platform function to set and get DRTM error.
Also, added a platform function to reset the system.

Signed-off-by: Manish V Badarkhe <Manish.Badarkhe@arm.com>
Change-Id: I471f2387f8c78b21a06af063a6fa02cda3646557
2022-10-05 15:25:28 +01:00
Manish V Badarkhe
40814266d5 feat(drtm): add Event Log driver support for DRTM
Added Event Log driver support for DRTM. This driver
is responsible for the doing the hash measurement of
various DRTM components as per [1], and putting these
measurements in the Event Log buffer.

[1]: https://developer.arm.com/documentation/den0113/a, section 3.16

Change-Id: I9892c313cf6640b82e261738116fe00f7975ee12
Signed-off-by: Manish V Badarkhe <Manish.Badarkhe@arm.com>
2022-10-05 15:25:28 +01:00
Manish Pandey
40e1fad69b feat(drtm): check drtm arguments during dynamic launch
Check the sanity of arguments before dynamic launch.

Change-Id: Iad68f852b09851b0c55a55df6ba16576e105758a
Signed-off-by: Manish Pandey <manish.pandey2@arm.com>
Signed-off-by: Lucian Paul-Trifu <lucian.paultrifu@gmail.com>
2022-10-05 15:25:28 +01:00
Manish Pandey
bd6cc0b238 feat(drtm): introduce drtm dynamic launch function
This function is placeholder for checking all the necessary conditions
before doing drtm dynamic launch.
In this patch following conditions are checked (based on Table 31 of
DRTM spec beta0), rest of the conditions will be added in later
patches.
 - Only boot PE is online
 - Caller execution state is AArch64
 - Caller exception level is NS-EL2 or NS-EL1

Signed-off-by: Manish Pandey <manish.pandey2@arm.com>
Change-Id: I622b946bc191bb39f828831336ceafbc10834c19
2022-10-05 15:25:28 +01:00
Manish V Badarkhe
b9b175086c refactor(measured-boot): split out a few Event Log driver functions
Reorganized a few Event Log functions into multiple functions so that
they can be used for the upcoming DRTM feature. This change mainly
implements below new functions -
1. event_log_buf_init - called by 'event_log_init' to initialise Event
   Log buffer
2. event_log_write_specid_event - called by 'event_log_fixed_header' to
   write specification id event to Event Log buffer
3. event_log_measure and event_log_record - called by
   'event_log_measure_and_record' to measure and record the measurement
   to the Event Log buffer

Change-Id: I1aabb57f79bead726fcf36d59839702cd6a3521d
Signed-off-by: Manish V Badarkhe <Manish.Badarkhe@arm.com>
2022-10-05 15:25:28 +01:00
Manish V Badarkhe
e9467afb2d feat(drtm): retrieve DRTM features
Retrieved below DRTM features via DRTM_FEATURES SMC call -
1. TPM features
2. Minimum memory requirement
3. Boot PE ID
4. DMA protection

Change-Id: Ia6dc497259541ce30a6550afa35d95d9a9a366af
Signed-off-by: Manish V Badarkhe <Manish.Badarkhe@arm.com>
Signed-off-by: Lucian Paul-Trifu <lucian.paultrifu@gmail.com>
2022-10-05 15:25:28 +01:00
johpow01
2a1cdee4f5 feat(drtm): add platform functions for DRTM
Added platform hooks to retrieve DRTM features and
address map.
Additionally, implemented these hooks for the FVP platform.

Signed-off-by: John Powell <john.powell@arm.com>
Signed-off-by: Manish V Badarkhe <Manish.Badarkhe@arm.com>
Change-Id: I5621cc9807ffff8139ae8876250147f7b2c76759
2022-10-05 15:25:28 +01:00
John Powell
e6381f9cf8 feat(sdei): add a function to return total number of events registered
This patch adds a public API to return the total number of registered
events. The purpose of this is primarily for DRTM to ensure that no
SDEI event can interfere with a dynamic launch.

Signed-off-by: John Powell <john.powell@arm.com>
Change-Id: I1d1cba2da7d5566cc340620ee1ce7d7844740b86
2022-10-05 15:25:28 +01:00
Manish V Badarkhe
ff1e42e20a feat(drtm): add PCR entries for DRTM
Added PCR entries for the measurement performed by the
DCE and D-CRTM in DRTM implementation

Signed-off-by: Manish V Badarkhe <manish.badarkhe@arm.com>
Change-Id: Ib9bfafe7fa2efa1cc36d7ff138468d648235dcf1
2022-10-05 15:25:28 +01:00
Manish V Badarkhe
d54792bd93 feat(drtm): update drtm setup function
Updated DRTM setup functionality that mainly does below 2 things
1. Initialise the DRTM DMA protection, this function assumes the
   platform must support complete DMA protection.
2. Initialise the Crypto module that will be useful to calculate
   the hash of various DRTM element involved.

Signed-off-by: Manish V Badarkhe <manish.badarkhe@arm.com>
Signed-off-by: Lucian Paul-Trifu <lucian.paultrifu@gmail.com>
Change-Id: I3d6e4d534686d391fa7626094d2b2535dac74e00
2022-10-05 15:25:28 +01:00
Manish V Badarkhe
2bf4f27f58 refactor(crypto): change CRYPTO_SUPPORT flag to numeric
Updated CRYPTO_SUPPORT flag to numeric to provide below
supports -
1. CRYPTO_SUPPORT = 1 -> Authentication verification only
2. CRYPTO_SUPPORT = 2 -> Hash calculation only
3. CRYPTO_SUPPORT = 3 -> Authentication verification and
                         hash calculation

Change-Id: Ib34f31457a6c87d2356d736ad2d048dc787da56f
Signed-off-by: Manish V Badarkhe <Manish.Badarkhe@arm.com>
2022-10-05 15:25:28 +01:00
Manish V Badarkhe
8b653909b7 feat(mbedtls): update mbedTLS driver for DRTM support
Updated mbedTLS driver to include mbedTLS functions necessary for a
DRTM supported build.

Signed-off-by: Manish V Badarkhe <manish.badarkhe@arm.com>
Change-Id: If0120374a971519cf84f93e0c59e1a320a72cd97
2022-10-05 15:25:28 +01:00
Manish V Badarkhe
c9bd1bacff feat(fvp): add crypto support in BL31
DRTM implementation needs crypto support in BL31 to calculate
hash of various DRTM components

Signed-off-by: Manish V Badarkhe <manish.badarkhe@arm.com>
Change-Id: I659ce8e54550946db253d23f150cca8b2fa7b880
2022-10-05 15:25:28 +01:00
Manish V Badarkhe
e43caf3890 feat(crypto): update crypto module for DRTM support
Updated crypto module to include crypto calls necessary for a
DRTM supported build.

Signed-off-by: Manish V Badarkhe <manish.badarkhe@arm.com>
Change-Id: I4f945997824393f46864b7fb7fd380308a025452
2022-10-05 15:25:28 +01:00
Manish V Badarkhe
9e0d2bae7e build(changelog): add new scope for mbedTLS and Crypto module
Added new scope for mbedTLS and Crypto module.

Change-Id: I127e7e32f103210e0a1c4c3072afa7249a24a7db
Signed-off-by: Manish V Badarkhe <Manish.Badarkhe@arm.com>
2022-10-05 15:25:28 +01:00
Manish V Badarkhe
e62748e3f1 feat(drtm): add standard DRTM service
Added a dummy DRTM setup function and also, introduced DRTM SMCs
handling as per DRTM spec [1]. Few basic SMCs are handled in this
change such as ARM_DRTM_SVC_VERSION and ARM_DRTM_SVC_FEATURES
that returns DRTM version and functions ids supported respectively,
and others are dummy for now.

[1]: https://developer.arm.com/documentation/den0113/latest

Signed-off-by: Manish V Badarkhe <manish.badarkhe@arm.com>
Signed-off-by: Lucian Paul-Trifu <lucian.paultrifu@gmail.com>
Change-Id: I8c7afe920c78e064cbab2298f59e6837c70ba8ff
2022-10-05 15:25:28 +01:00
Manish V Badarkhe
7b224f19f4 build(changelog): add new scope for DRTM service
Added new scope for DRTM service.

Signed-off-by: Manish V Badarkhe <Manish.Badarkhe@arm.com>
Change-Id: Idffb178026ef2910102b55e640d5f5bf904e6064
2022-10-05 15:25:28 +01:00
Manish V Badarkhe
8a8dace5a5 feat(fvp): increase MAX_XLAT_TABLES entries for DRTM support
DRTM implementation maps the DLME data region provided by the
DCE-preamble in BL31, hence increased MAX_XLAT_TABLES entries
count.

Signed-off-by: Manish V Badarkhe <manish.badarkhe@arm.com>
Signed-off-by: Lucian Paul-Trifu <lucian.paultrifu@gmail.com>
Change-Id: I5f0ac69e009c4f81d3590fdb1f4c0a7f73c5c99d
2022-10-05 15:25:28 +01:00
Lucian Paul-Trifu
44df105ff8 feat(fvp): increase BL31's stack size for DRTM support
The stack size of BL31 has been increased to accommodate the
introduction of mbedTLS support for DRTM.

Signed-off-by: Manish V Badarkhe <manish.badarkhe@arm.com>
Signed-off-by: Lucian Paul-Trifu <lucian.paultrifu@gmail.com>
Change-Id: Id0beacf4df553af4ecbe714af20e71604ccfed59
2022-10-05 15:25:28 +01:00