| #
5b46aacc |
| 04-Oct-2024 |
Yann Gautier <yann.gautier@st.com> |
refactor(tc): add plat_rse_comms_init
The same way it is done for neoverse_rd, create a plat_rse_comms_init() function to call rse_comms_init().
Signed-off-by: Yann Gautier <yann.gautier@st.com> Ch
refactor(tc): add plat_rse_comms_init
The same way it is done for neoverse_rd, create a plat_rse_comms_init() function to call rse_comms_init().
Signed-off-by: Yann Gautier <yann.gautier@st.com> Change-Id: I12f3b8a38a5369decb4b97f8aceeb0dc81cbea28
show more ...
|
| #
a7739550 |
| 24-Sep-2024 |
Yann Gautier <yann.gautier@st.com> |
refactor(arm)!: rename PLAT_MHU_VERSION flag
In order to support a platform without MHU in RSE, update the flag PLAT_MHU_VERSION. It is renamed PLAT_MHU and can take the following entries: NO_MHU, M
refactor(arm)!: rename PLAT_MHU_VERSION flag
In order to support a platform without MHU in RSE, update the flag PLAT_MHU_VERSION. It is renamed PLAT_MHU and can take the following entries: NO_MHU, MHUv1, MHUv2, MHUv3...
Signed-off-by: Yann Gautier <yann.gautier@st.com> Change-Id: Ia72e590088ce62ba8c9009f341b6135926947bee
show more ...
|
| #
fcb80d7d |
| 11-Feb-2025 |
Manish Pandey <manish.pandey2@arm.com> |
Merge changes I765a7fa0,Ic33f0b6d,I8d1a88c7,I381f96be,I698fa849, ... into integration
* changes: fix(cpus): clear CPUPWRCTLR_EL1.CORE_PWRDN_EN_BIT on reset chore(docs): drop the "wfi" from `pwr_
Merge changes I765a7fa0,Ic33f0b6d,I8d1a88c7,I381f96be,I698fa849, ... into integration
* changes: fix(cpus): clear CPUPWRCTLR_EL1.CORE_PWRDN_EN_BIT on reset chore(docs): drop the "wfi" from `pwr_domain_pwr_down_wfi` chore(psci): drop skip_wfi variable feat(arm): convert arm platforms to expect a wakeup fix(cpus): avoid SME related loss of context on powerdown feat(psci): allow cores to wake up from powerdown refactor: panic after calling psci_power_down_wfi() refactor(cpus): undo errata mitigations feat(cpus): add sysreg_bit_toggle
show more ...
|
| #
697290a9 |
| 04-Feb-2025 |
Manish V Badarkhe <manish.badarkhe@arm.com> |
Merge changes from topic "us_tc_trng" into integration
* changes: feat(tc): get entropy with PSA Crypto API feat(psa): add interface with RSE for retrieving entropy fix(psa): guard Crypto APIs
Merge changes from topic "us_tc_trng" into integration
* changes: feat(tc): get entropy with PSA Crypto API feat(psa): add interface with RSE for retrieving entropy fix(psa): guard Crypto APIs with CRYPTO_SUPPORT feat(tc): enable trng feat(tc): initialize the RSE communication in earlier phase
show more ...
|
| #
8f0235fb |
| 31-Jan-2025 |
Leo Yan <leo.yan@arm.com> |
feat(tc): get entropy with PSA Crypto API
The PSA Crypto API is available with sending messages to RSE. Change to invoke PSA Crypto API for getting entropy.
Change-Id: I4b2dc4eb99606c2425b64949d9c
feat(tc): get entropy with PSA Crypto API
The PSA Crypto API is available with sending messages to RSE. Change to invoke PSA Crypto API for getting entropy.
Change-Id: I4b2dc4eb99606c2425b64949d9c3f5c576883758 Signed-off-by: Leo Yan <leo.yan@arm.com> Signed-off-by: Icen Zeyada <Icen.Zeyada2@arm.com>
show more ...
|
| #
2ae197ac |
| 16-May-2024 |
Leo Yan <leo.yan@arm.com> |
feat(tc): enable trng
Enable the trng on the platform, which can be used by other features. `rng-seed` has been removed and enabled `FEAT_RNG_TRAP` to trap to EL3 when accessing system registers RND
feat(tc): enable trng
Enable the trng on the platform, which can be used by other features. `rng-seed` has been removed and enabled `FEAT_RNG_TRAP` to trap to EL3 when accessing system registers RNDR and RNDRRS
Change-Id: Ibde39115f285e67d31b14863c75beaf37493deca Signed-off-by: Leo Yan <leo.yan@arm.com> Signed-off-by: Icen Zeyada <Icen.Zeyada2@arm.com>
show more ...
|
| #
45c7328c |
| 20-Sep-2024 |
Boyan Karatotev <boyan.karatotev@arm.com> |
fix(cpus): avoid SME related loss of context on powerdown
Travis' and Gelas' TRMs tell us to disable SME (set PSTATE.{ZA, SM} to 0) when we're attempting to power down. What they don't tell us is th
fix(cpus): avoid SME related loss of context on powerdown
Travis' and Gelas' TRMs tell us to disable SME (set PSTATE.{ZA, SM} to 0) when we're attempting to power down. What they don't tell us is that if this isn't done, the powerdown request will be rejected. On the CPU_OFF path that's not a problem - we can force SVCR to 0 and be certain the core will power off.
On the suspend to powerdown path, however, we cannot do this. The TRM also tells us that the sequence could also be aborted on eg. GIC interrupts. If this were to happen when we have overwritten SVCR to 0, upon a return to the caller they would experience a loss of context. We know that at least Linux may call into PSCI with SVCR != 0. One option is to save the entire SME context which would be quite expensive just to work around. Another option is to downgrade the request to a normal suspend when SME was left on. This option is better as this is expected to happen rarely enough to ignore the wasted power and we don't want to burden the generic (correct) path with needless context management.
Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com> Change-Id: I698fa8490ebf51461f6aa8bba84f9827c5c46ad4
show more ...
|
| #
2b5e00d4 |
| 19-Dec-2024 |
Boyan Karatotev <boyan.karatotev@arm.com> |
feat(psci): allow cores to wake up from powerdown
The simplistic view of a core's powerdown sequence is that power is atomically cut upon calling `wfi`. However, it turns out that it has lots to do
feat(psci): allow cores to wake up from powerdown
The simplistic view of a core's powerdown sequence is that power is atomically cut upon calling `wfi`. However, it turns out that it has lots to do - it has to talk to the interconnect to exit coherency, clean caches, check for RAS errors, etc. These take significant amounts of time and are certainly not atomic. As such there is a significant window of opportunity for external events to happen. Many of these steps are not destructive to context, so theoretically, the core can just "give up" half way (or roll certain actions back) and carry on running. The point in this sequence after which roll back is not possible is called the point of no return.
One of these actions is the checking for RAS errors. It is possible for one to happen during this lengthy sequence, or at least remain undiscovered until that point. If the core were to continue powerdown when that happens, there would be no (easy) way to inform anyone about it. Rejecting the powerdown and letting software handle the error is the best way to implement this.
Arm cores since at least the a510 have included this exact feature. So far it hasn't been deemed necessary to account for it in firmware due to the low likelihood of this happening. However, events like GIC wakeup requests are much more probable. Older cores will powerdown and immediately power back up when this happens. Travis and Gelas include a feature similar to the RAS case above, called powerdown abandon. The idea is that this will improve the latency to service the interrupt by saving on work which the core and software need to do.
So far firmware has relied on the `wfi` being the point of no return and if it doesn't explicitly detect a pending interrupt quite early on, it will embark onto a sequence that it expects to end with shutdown. To accommodate for it not being a point of no return, we must undo all of the system management we did, just like in the warm boot entrypoint.
To achieve that, the pwr_domain_pwr_down_wfi hook must not be terminal. Most recent platforms do some platform management and finish on the standard `wfi`, followed by a panic or an endless loop as this is expected to not return. To make this generic, any platform that wishes to support wakeups must instead let common code call `psci_power_down_wfi()` right after. Besides wakeups, this lets common code handle powerdown errata better as well.
Then, the CPU_OFF case is simple - PSCI does not allow it to return. So the best that can be done is to attempt the `wfi` a few times (the choice of 32 is arbitrary) in the hope that the wakeup is transient. If it isn't, the only choice is to panic, as the system is likely to be in a bad state, eg. interrupts weren't routed away. The same applies for SYSTEM_OFF, SYSTEM_RESET, and SYSTEM_RESET2. There the panic won't matter as the system is going offline one way or another. The RAS case will be considered in a separate patch.
Now, the CPU_SUSPEND case is more involved. First, to powerdown it must wipe its context as it is not written on warm boot. But it cannot be overwritten in case of a wakeup. To avoid the catch 22, save a copy that will only be used if powerdown fails. That is about 500 bytes on the stack so it hopefully doesn't tip anyone over any limits. In future that can be avoided by having a core manage its own context.
Second, when the core wakes up, it must undo anything it did to prepare for poweroff, which for the cores we care about, is writing CPUPWRCTLR_EL1.CORE_PWRDN_EN. The least intrusive for the cpu library way of doing this is to simply call the power off hook again and have the hook toggle the bit. If in the future there need to be more complex sequences, their direction can be advised on the value of this bit.
Third, do the actual "resume". Most of the logic is already there for the retention suspend, so that only needs a small touch up to apply to the powerdown case as well. The missing bit is the powerdown specific state management. Luckily, the warmboot entrypoint does exactly that already too, so steal that and we're done.
All of this is hidden behind a FEAT_PABANDON flag since it has a large memory and runtime cost that we don't want to burden non pabandon cores with.
Finally, do some function renaming to better reflect their purpose and make names a little bit more consistent.
Change-Id: I2405b59300c2e24ce02e266f91b7c51474c1145f Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
show more ...
|
| #
56d88420 |
| 03-Feb-2025 |
Olivier Deprez <olivier.deprez@arm.com> |
Merge "feat(tc): enable stack protector" into integration
|
| #
d1de6b2b |
| 15-May-2024 |
Leo Yan <leo.yan@arm.com> |
feat(tc): enable stack protector
Enable the compiler's stack protector for detecting stack overflow issues.
Though TC platform can generate RNG from RSE via MHU channel, the stack protector canary
feat(tc): enable stack protector
Enable the compiler's stack protector for detecting stack overflow issues.
Though TC platform can generate RNG from RSE via MHU channel, the stack protector canary is used prior to MHU channel initialization.
Thus, currently here simply returns a value of the combination of a timer's value and a compile-time constant.
Signed-off-by: Leo Yan <leo.yan@arm.com> Signed-off-by: Icen Zeyada <Icen.Zeyada2@arm.com> Change-Id: I68fcc7782637b2b6b4dbbc81bc15df8c5ce0040b
show more ...
|
| #
bf6b1513 |
| 23-Jan-2025 |
Manish V Badarkhe <manish.badarkhe@arm.com> |
Merge changes I70b68b06,I7b180c3e,Id4ad925d,Ie31933e0,Ie8fe1f1d, ... into integration
* changes: refactor(tc): rename TC_FPGA_ANDROID_IMG_IN_RAM fix(tc): modify ethernet configuration for TC4 FP
Merge changes I70b68b06,I7b180c3e,Id4ad925d,Ie31933e0,Ie8fe1f1d, ... into integration
* changes: refactor(tc): rename TC_FPGA_ANDROID_IMG_IN_RAM fix(tc): modify ethernet configuration for TC4 FPGA fix(tc): modify gpio controller base addr for TC4 FPGA fix(tc): modify DPU configuration in dts for TC4 FPGA fix(tc): modify mmc configuration for TC4 FPGA feat(tc): configure UART for TC4 FPGA
show more ...
|
| #
bea55e3c |
| 15-Aug-2024 |
Jagdish Gediya <jagdish.gediya@arm.com> |
refactor(tc): rename TC_FPGA_ANDROID_IMG_IN_RAM
Rename TC_FPGA_ANDROID_IMG_IN_RAM to TC_FPGA_FS_IMG_IN_RAM to use it for debian loading to ram as well.
Change-Id: I70b68b06501d17dcebbe78bee8fec0a70
refactor(tc): rename TC_FPGA_ANDROID_IMG_IN_RAM
Rename TC_FPGA_ANDROID_IMG_IN_RAM to TC_FPGA_FS_IMG_IN_RAM to use it for debian loading to ram as well.
Change-Id: I70b68b06501d17dcebbe78bee8fec0a701106c92 Signed-off-by: Jagdish Gediya <jagdish.gediya@arm.com> Signed-off-by: Icen.Zeyada <Icen.Zeyada2@arm.com>
show more ...
|
| #
4817b85d |
| 13-Dec-2024 |
Manish V Badarkhe <manish.badarkhe@arm.com> |
Merge "feat(tc): initialize MHU channels with RSE" into integration
|
| #
0328f342 |
| 21-May-2024 |
Leo Yan <leo.yan@arm.com> |
feat(tc): initialize MHU channels with RSE
Initialize MHU channels between TF-A and RSE, this is a preparation for later sending messages to RSE.
Signed-off-by: Leo Yan <leo.yan@arm.com> Signed-off
feat(tc): initialize MHU channels with RSE
Initialize MHU channels between TF-A and RSE, this is a preparation for later sending messages to RSE.
Signed-off-by: Leo Yan <leo.yan@arm.com> Signed-off-by: Icen Zeyada <Icen.Zeyada2@arm.com> Change-Id: I66095cafcc1d48249cf957a49dc1dad3059a0010
show more ...
|
| #
22bde5b4 |
| 05-Dec-2024 |
Olivier Deprez <olivier.deprez@arm.com> |
Merge "fix(tc): replace vencoder with simple panel for kernel > 6.6" into integration
|
| #
1d2d96dd |
| 19-Apr-2024 |
Jagdish Gediya <jagdish.gediya@arm.com> |
fix(tc): replace vencoder with simple panel for kernel > 6.6
The component-aware simple encoder has become outdated with the latest upstream DRM subsystem changes since Linux kernel commit 4cfe5cc02
fix(tc): replace vencoder with simple panel for kernel > 6.6
The component-aware simple encoder has become outdated with the latest upstream DRM subsystem changes since Linux kernel commit 4cfe5cc02e3f ("drm/arm/komeda: Remove component framework and add a simple encoder")
To address this we introduce a new compilation flag `TC_DPU_USE_SIMPLE_PANEL` for control panel vs. encoder enablement. This flag is set when the kernel version is >= 6.6 and 0 when the kernel version is < 6.6.
We also rename the `vencoder_in` node to `lcd_in` to avoid unnecessary conditional code for vencoder vs. simple panel enablement.
Signed-off-by: Jagdish Gediya <jagdish.gediya@arm.com> Signed-off-by: Icen Zeyada <Icen.Zeyada2@arm.com> Change-Id: Ibb14a56911cfb406b2181a22cc40db58d8ceaa8d
show more ...
|
| #
15e5c6c9 |
| 05-Dec-2024 |
Olivier Deprez <olivier.deprez@arm.com> |
Merge changes I00d2de7b,I5ec82646 into integration
* changes: feat(tc): fpga: Enable support for loading FIP image to DRAM feat(tc): allow Android load and Boot From RAM
|
| #
969b7591 |
| 23-Apr-2024 |
Vishnu Satheesh <vishnu.satheesh@arm.com> |
feat(tc): fpga: Enable support for loading FIP image to DRAM
This patch enable support for loading FIP image into DRAM rather than flash drive.
Change-Id: I00d2de7b22e315db7f3e8a835ddd414ab297b554
feat(tc): fpga: Enable support for loading FIP image to DRAM
This patch enable support for loading FIP image into DRAM rather than flash drive.
Change-Id: I00d2de7b22e315db7f3e8a835ddd414ab297b554 Signed-off-by: Vishnu Satheesh <vishnu.satheesh@arm.com> Signed-off-by: Icen Zeyada <Icen.Zeyada2@arm.com>
show more ...
|
| #
932e64a1 |
| 23-Apr-2024 |
Vishnu Satheesh <vishnu.satheesh@arm.com> |
feat(tc): allow Android load and Boot From RAM
This commit introduces the below changes: * Define TC_FPGA_ANDROID_IMG_IN_RAM config variable * Add phram node in dts. * Memory configuration for loadi
feat(tc): allow Android load and Boot From RAM
This commit introduces the below changes: * Define TC_FPGA_ANDROID_IMG_IN_RAM config variable * Add phram node in dts. * Memory configuration for loading Android image
Change-Id: I5ec82646cb2993e7b5976e702ebcc8efa51d1128 Signed-off-by: Vishnu Satheesh <vishnu.satheesh@arm.com> Signed-off-by: Leo Yan <leo.yan@arm.com> Signed-off-by: Icen Zeyada <Icen.Zeyada2@arm.com>
show more ...
|
| #
0bc3e4a1 |
| 04-Nov-2024 |
Manish Pandey <manish.pandey2@arm.com> |
Merge "chore(tc): mark TC2 platform as deprecated in Makefile" into integration
|
| #
df32faa7 |
| 31-Oct-2024 |
Manish V Badarkhe <Manish.Badarkhe@arm.com> |
chore(tc): mark TC2 platform as deprecated in Makefile
Following recent commit [1], update the Makefile to mark the TC2 platform as deprecated and trigger a build failure if someone attempts to buil
chore(tc): mark TC2 platform as deprecated in Makefile
Following recent commit [1], update the Makefile to mark the TC2 platform as deprecated and trigger a build failure if someone attempts to build the TC0 or TC1 platform.
[1]: https://review.trustedfirmware.org/c/TF-A/trusted-firmware-a/+/31702
Signed-off-by: Manish V Badarkhe <Manish.Badarkhe@arm.com> Change-Id: Ib6ed4933328e35209443ceec59f1e2056881f927
show more ...
|
| #
7dd66eec |
| 05-Sep-2024 |
Manish V Badarkhe <manish.badarkhe@arm.com> |
Merge changes from topic "jc/tcr2_asymmetric_support" into integration
* changes: feat(cm): handle asymmetry for FEAT_TCR2 feat(tc): make TCR2 feature asymmetric
|
| #
3e8a82a0 |
| 02-Sep-2024 |
Jayanth Dodderi Chidanand <jayanthdodderi.chidanand@arm.com> |
feat(tc): make TCR2 feature asymmetric
Signed-off-by: Jayanth Dodderi Chidanand <jayanthdodderi.chidanand@arm.com> Change-Id: I6209dc46ddecaa09cc1220fe9488b3771ea6dc38
|
| #
8e9bdc5b |
| 29-Aug-2024 |
Manish V Badarkhe <manish.badarkhe@arm.com> |
Merge changes from topic "us_tc4_rebase_v2" into integration
* changes: feat(tc): bind DPU SMMU on TC4 feat(tc): bind GPU SMMU on TC4 feat(tc): update DT for Drage GPU feat(tc): enable SME a
Merge changes from topic "us_tc4_rebase_v2" into integration
* changes: feat(tc): bind DPU SMMU on TC4 feat(tc): bind GPU SMMU on TC4 feat(tc): update DT for Drage GPU feat(tc): enable SME and SME2 options for TC4 feat(tc): add new TC4 RoS definitions feat(tc): add system generic timer register definition for TC4 feat(tc): allow TARGET_VERSION=4 feat(tc): add MHUv3 register addresses for TC4 feat(tc): add device tree binding for TC4
show more ...
|
| #
9face212 |
| 08-Jan-2024 |
Jackson Cooper-Driver <jackson.cooper-driver@arm.com> |
feat(tc): enable SME and SME2 options for TC4
Set the Make flags for TF-A to be able to enable SME and SME2 features. Note that we enable these architectural features for both the secure and non-sec
feat(tc): enable SME and SME2 options for TC4
Set the Make flags for TF-A to be able to enable SME and SME2 features. Note that we enable these architectural features for both the secure and non-secure worlds, which is required on TC4.
In the case of the non-secure world, we specify a value of 2 for the flag which specifies that TF-A should check the feature register to ensure that the feature is present before enabling it. This allows these flags to be compatible with all platforms and stops TF-A doing anything different if it does not detect that the feature is present.
Change-Id: I51f8c7e3eb1cf06767f4b155c93269e1f129f730 Signed-off-by: Jackson Cooper-Driver <jackson.cooper-driver@arm.com> Signed-off-by: Leo Yan <leo.yan@arm.com>
show more ...
|