| b23ab8eb | 20-Jan-2021 |
Andre Przywara <andre.przywara@arm.com> |
allwinner: Allow conditional compilation of SCPI and native PSCI ops
Now that we have split the native and the SCPI version of the PSCI ops, we can introduce build options to compile in either or bo
allwinner: Allow conditional compilation of SCPI and native PSCI ops
Now that we have split the native and the SCPI version of the PSCI ops, we can introduce build options to compile in either or both of them.
If one version is not compiled in, some stub functions make sure the common code still compiles and makes the right decisions.
By default both version are enabled (as before), but one of them can be disabled on the make command line, or via a platform specific Makefile.
Change-Id: I0c019d8700c0208365eacf57809fb8bc608eb9c0 Signed-off-by: Andre Przywara <andre.przywara@arm.com> Signed-off-by: Samuel Holland <samuel@sholland.org>
show more ...
|
| fe753c97 | 16-Jan-2021 |
Samuel Holland <samuel@sholland.org> |
allwinner: Split native and SCPI-based PSCI implementations
In order to keep SCP firmware as optional, the original, limited native PSCI implementation was kept around as a fallback. This turned out
allwinner: Split native and SCPI-based PSCI implementations
In order to keep SCP firmware as optional, the original, limited native PSCI implementation was kept around as a fallback. This turned out to be a good decision, as some newer SoCs omit the ARISC, and thus cannot run SCP firmware.
However, keeping the two implementations in one file makes things unnecessarily messy. First, it is difficult to compile out the SCPI-based implementation where it is not applicable. Second the check is done in each callback, while scpi_available is only updated at boot. This makes the individual callbacks unnecessarily complicated.
It is cleaner to provide two entirely separate implementations in two separate files. The native implementation does not support any kind of CPU suspend, so its callbacks are greatly simplified. One function, sunxi_validate_ns_entrypoint, is shared between the two implementations.
Finally, the logic for choosing between implementations is kept in a third file, to provide for platforms where only one implementation is applicable and the other is compiled out.
Change-Id: I4914f07d8e693dbce218e0e2394bef15c42945f8 Signed-off-by: Samuel Holland <samuel@sholland.org>
show more ...
|
| dae98b3a | 16-Jan-2021 |
Samuel Holland <samuel@sholland.org> |
allwinner: psci: Improve system shutdown/reset sequence
- When the SCPI shutdown/reset command returns success, the SCP is still waiting for the CPU to enter WFI. Do that. - Peform board-level pow
allwinner: psci: Improve system shutdown/reset sequence
- When the SCPI shutdown/reset command returns success, the SCP is still waiting for the CPU to enter WFI. Do that. - Peform board-level poweroff before CPU poweroff. If there is a PMIC available, it will turn everything off including the CPUs, so doing CPU poweroff first is a waste of cycles. - During poweroff, attempt to turn off the local CPU using the ARISC. This should use slightly less power than just an infinite WFI. - Drop the WFI in the reset failure path. The panic will hang anyway.
Change-Id: I897efecb3fe4e77a56041b97dd273156ec51ef8e Signed-off-by: Samuel Holland <samuel@sholland.org>
show more ...
|
| 975d076d | 23-Jan-2021 |
Samuel Holland <samuel@sholland.org> |
allwinner: psci: Drop .pwr_domain_pwr_down_wfi callback
When operating on the local cpu, sunxi_cpu_power_off_self() only "arms" the ARISC to perform the power-off process; the SCP waits for the CPU
allwinner: psci: Drop .pwr_domain_pwr_down_wfi callback
When operating on the local cpu, sunxi_cpu_power_off_self() only "arms" the ARISC to perform the power-off process; the SCP waits for the CPU to enter WFI before acutally powering it off. Since this matches the expected split between .pwr_domain_off and .pwr_domain_pwr_down_wfi, we can move the sunxi_cpu_power_off_self() call to sunxi_pwr_domain_off(). Since that change makes sunxi_pwr_down_wfi() equivalent to the default implementation, the callback is no longer needed.
Change-Id: I7d65f66c550d1c69fa5e9945affd7a25b3d3ef42 Signed-off-by: Samuel Holland <samuel@sholland.org>
show more ...
|
| a1d349be | 24-Jan-2021 |
Samuel Holland <samuel@sholland.org> |
allwinner: Separate code to power off self and other CPUs
Currently, sunxi_cpu_off() has two separate code paths: one for the local CPU, and one for other CPUs. Let's split them in to two functions.
allwinner: Separate code to power off self and other CPUs
Currently, sunxi_cpu_off() has two separate code paths: one for the local CPU, and one for other CPUs. Let's split them in to two functions. This actually simplifies things, because all callers either operate on the local CPU only (sunxi_pwr_down_wfi()) or other CPUs only (sunxi_cpu_power_off_others()). This avoids needing a second MPIDR read to choose the appropriate code path.
Change-Id: I55de85025235cc95466bfa106831fc4c2368f527 Signed-off-by: Samuel Holland <samuel@sholland.org>
show more ...
|
| ed267c92 | 24-Jan-2021 |
Samuel Holland <samuel@sholland.org> |
allwinner: Leave CPU power alone during BL31 setup
Disabling secondary CPUs during boot is unnecessary because the other CPUs are already in reset, and it saves an entirely insignificant amount of p
allwinner: Leave CPU power alone during BL31 setup
Disabling secondary CPUs during boot is unnecessary because the other CPUs are already in reset, and it saves an entirely insignificant amount of power. Let's remove this bit of code that was added mostly "because we can", and along with it remove an unconditional dependency on the CPU ops functions.
Signed-off-by: Samuel Holland <samuel@sholland.org> Change-Id: Ia77a1b722da6ba989c3992b656a6cde3f2238fd7
show more ...
|
| 814dce8f | 16-Jan-2021 |
Samuel Holland <samuel@sholland.org> |
allwinner: psci: Invert check in .validate_ns_entrypoint
Checking the exceptional case and letting the success case fall through is not only more idiomatic, but it also allows adding more exceptiona
allwinner: psci: Invert check in .validate_ns_entrypoint
Checking the exceptional case and letting the success case fall through is not only more idiomatic, but it also allows adding more exceptional cases in the future, such as a check for overlapping secure DRAM.
Change-Id: I720441a6a8853fd7f211ebe851f14d921a6db03d Signed-off-by: Samuel Holland <samuel@sholland.org>
show more ...
|
| 772ef7e7 | 16-Jan-2021 |
Samuel Holland <samuel@sholland.org> |
allwinner: psci: Drop MPIDR check from .pwr_domain_on
This duplicated the logic in psci_validate_mpidr() which was already called from psci_cpu_on().
Change-Id: I96ee92f1ce3e9cc2985b4e229ba86ebd27b
allwinner: psci: Drop MPIDR check from .pwr_domain_on
This duplicated the logic in psci_validate_mpidr() which was already called from psci_cpu_on().
Change-Id: I96ee92f1ce3e9cc2985b4e229ba86ebd27b79915 Signed-off-by: Samuel Holland <samuel@sholland.org>
show more ...
|
| a1473c99 | 16-Jan-2021 |
Samuel Holland <samuel@sholland.org> |
allwinner: psci: Drop .get_node_hw_state callback
This optional PSCI function was only implemented when SCPI was available. However, the underlying SCPI function is not able to fulfill the necessary
allwinner: psci: Drop .get_node_hw_state callback
This optional PSCI function was only implemented when SCPI was available. However, the underlying SCPI function is not able to fulfill the necessary contract. First, the SCPI protocol has no way to represent HW_STANDBY at the CPU power level. Second, the SCPI implementation maintains its own logical view of power states, and its implementation of SCPI_CMD_GET_CSS_POWER_STATE does not actually query the hardware. Thus it cannot provide "the physical view of power state", as required for this function by the PSCI specification.
Since the function is optional, drop it.
Change-Id: I5f3a0810ac19ddeb3c0c5d35aeb09f09a0b80c1d Signed-off-by: Samuel Holland <samuel@sholland.org>
show more ...
|
| aeb727f3 | 09-Dec-2020 |
Yann Gautier <yann.gautier@st.com> |
stm32mp1: correct plat_crash_console_flush()
The base address of UART peripheral should be given in R0, not in R1. Otherwise the console_stm32_core_flush issues an assert message. This issue was hig
stm32mp1: correct plat_crash_console_flush()
The base address of UART peripheral should be given in R0, not in R1. Otherwise the console_stm32_core_flush issues an assert message. This issue was highlighted with recent changes in console flush functions.
Change-Id: Iead01986fdbbf30ad2fd9fa515a1d2b611b4e591 Signed-off-by: Yann Gautier <yann.gautier@st.com>
show more ...
|
| d194afa7 | 20-Jan-2021 |
Manish Pandey <manish.pandey2@arm.com> |
Merge changes I44ef50da,I9802e9a3 into integration
* changes: plat/arm/css/sgi: Fix assert expression issue plat/arm/css/sgi: Fix bl32 receive event - 0xC4000061 issue |
| c5a25e40 | 20-Jan-2021 |
Madhukar Pappireddy <madhukar.pappireddy@arm.com> |
Merge "plat: xilinx: versal: Remove code duplication" into integration |
| 0301d09c | 11-Jan-2021 |
Ming Huang <huangming@linux.alibaba.com> |
plat/arm/css/sgi: Fix assert expression issue
Violation of MISRA-C Rule 14.4
Signed-off-by: Ming Huang <huangming@linux.alibaba.com> Change-Id: I44ef50dadb54fb056a91f3de962b6e63ba6d7ac4 |
| 9feb1e2f | 09-Nov-2020 |
Ming Huang <huangming@linux.alibaba.com> |
plat/arm/css/sgi: Fix bl32 receive event - 0xC4000061 issue
The issue is that, when interrupt is triggered and RAS handler is entered, after interrupt handler finishes, TF-A will re-enter bl32 and t
plat/arm/css/sgi: Fix bl32 receive event - 0xC4000061 issue
The issue is that, when interrupt is triggered and RAS handler is entered, after interrupt handler finishes, TF-A will re-enter bl32 and then crash. sdei_dispatch_event() may return failing result in some cases, for example kernel may not have registered a handler or RAS event may happen early during boot. We restore the NS context when sdei_dispatch_event() returns failing result.
error log : Received delegated event X0 : 0xC4000061 X1 : 0x0 X2 : 0x0 X3 : 0x0 Received event - 0xC4000061 on cpu 0 UnRecognized Event - 0xC4000061 Failed delegated event 0xC4000061, Status Invalid Parameter Unhandled Exception in EL3. x30 = 0x000000000401f700 x0 = 0xfffffffffffffffe x1 = 0xfffffffffffffffe x2 = 0x00000000600003c0
Signed-off-by: Ming Huang <huangming@linux.alibaba.com> Change-Id: I9802e9a32eee0ac3b5a8bcc0362d0b0e3b71dc9f
show more ...
|
| 6b2924bb | 20-Jan-2021 |
Manish Pandey <manish.pandey2@arm.com> |
Merge changes Ic9bacaf3,I99a18dbb,I34803060,I3ed55aa4,Ic8eed072, ... into integration
* changes: doc: renesas: Update RZ/G2 code owner list plat: renesas: rzg: DT memory node enhancements rene
Merge changes Ic9bacaf3,I99a18dbb,I34803060,I3ed55aa4,Ic8eed072, ... into integration
* changes: doc: renesas: Update RZ/G2 code owner list plat: renesas: rzg: DT memory node enhancements renesas: rzg: emmc: Enable RZ/G2M support plat: renesas: rzg: Add HopeRun HiHope RZ/G2M board support drivers: renesas: rzg: Add HiHope RZ/G2M board support tools: renesas: Add tool support for RZ/G2 platforms
show more ...
|
| 4d8c1819 | 05-Jan-2021 |
Jagadeesh Ujja <jagadeesh.ujja@arm.com> |
plat/arm: css: Turn ON/OFF redistributor in sync with GIC CPU interface ON/OFF
Turn ON/OFF GIC redistributor in sync with GIC CPU interface ON/OFF.
Issue : The Linux prompt hangs when all the cores
plat/arm: css: Turn ON/OFF redistributor in sync with GIC CPU interface ON/OFF
Turn ON/OFF GIC redistributor in sync with GIC CPU interface ON/OFF.
Issue : The Linux prompt hangs when all the cores in a cluster are turned OFF and we try to turn ON a core in that cluster. Previously when TF-A turns ON a core, TF-A first turns ON the redistributor followed by the core. This did not match the flow when turning OFF a core, as TF-A did not turn OFF redistributor when the corresponding core[s] are disabled. This hang is resolved by disabling redistributor as cores are disabled, keeping them in sync.
Signed-off-by: Jagadeesh Ujja <jagadeesh.ujja@arm.com> Change-Id: Ifd04fdcfd47b45e00f874f15b098471883d023f0
show more ...
|
| f621d5fb | 20-Jan-2021 |
Rajan Vaja <rajan.vaja@xilinx.com> |
plat: xilinx: versal: Remove code duplication
Some switch cases uses same operation. So, club switch cases which uses same operation and remove duplicate code.
Signed-off-by: Rajan Vaja <rajan.vaja
plat: xilinx: versal: Remove code duplication
Some switch cases uses same operation. So, club switch cases which uses same operation and remove duplicate code.
Signed-off-by: Rajan Vaja <rajan.vaja@xilinx.com> Change-Id: I260b474c0ff3f2ca102c32d4af2e4abba2b8f57c
show more ...
|
| b4734308 | 20-Jan-2021 |
Peng Fan <peng.fan@nxp.com> |
drivers: move scmi-msg out of st
Make the scmi-msg driver reused by others.
Signed-off-by: Peng Fan <peng.fan@nxp.com> Change-Id: I5bc35fd4dab70f45c09b8aab65af4209cf23b124 |
| 2fb5ed47 | 28-Aug-2020 |
Graeme Gregory <graeme@nuviainc.com> |
qemu/qemu_sbsa: add support for sbsa-ref Embedded Controller
This allows PSCI in TF-A to signal platform power states to QEMU via a controller in secure space.
This required a sbsa-ref specific ver
qemu/qemu_sbsa: add support for sbsa-ref Embedded Controller
This allows PSCI in TF-A to signal platform power states to QEMU via a controller in secure space.
This required a sbsa-ref specific version of PSCI functions for the platform. Also adjusted the MMU range to also include the new EC.
Add a new MMU region for the embedded controller and increase the size of xlat tables by one for the new region.
Signed-off-by: Graeme Gregory <graeme@nuviainc.com> Change-Id: Iece8a88947f11e82ab8988e460a8a66ad175a5ee
show more ...
|
| 5565ede4 | 28-Aug-2020 |
Graeme Gregory <graeme@nuviainc.com> |
qemu/qemu_sbsa: topology is different from qemu so add handling
sbsa-ref in QEMU creates clusers of 8 cores, it may create up to 512 cores in upto 64 clusters. Implement a qemu_sbsa specific topolog
qemu/qemu_sbsa: topology is different from qemu so add handling
sbsa-ref in QEMU creates clusers of 8 cores, it may create up to 512 cores in upto 64 clusters. Implement a qemu_sbsa specific topology file and increase the BL31_SIZE to accommodate the bigger table sizes. Change platform_def.h for new topology. Correct PLATFORM_CPU_PER_CLUSTER_SHIFT so plat_helpers.S calculates correct result.
Signed-off-by: Graeme Gregory <graeme@nuviainc.com> Change-Id: Idc5d70394c0956b759ad2c86f9fda8f293f2cfa7
show more ...
|
| 916a7e11 | 16-Dec-2020 |
Graeme Gregory <graeme@nuviainc.com> |
qemu/common : change DEVICE2 definition for MMU
DEVICE2 is not currently used on qemu platform but is needed for a future patch for qemu_sbsa platform. Change its definition to RW and add it to all
qemu/common : change DEVICE2 definition for MMU
DEVICE2 is not currently used on qemu platform but is needed for a future patch for qemu_sbsa platform. Change its definition to RW and add it to all levels of arm-tf similar to DEVICE1 definition.
Signed-off-by: Graeme Gregory <graeme@nuviainc.com> Change-Id: I03495471bfd423b61ad44ec4953fb25f76aa54bf
show more ...
|
| 3063177e | 16-Dec-2020 |
Graeme Gregory <graeme@nuviainc.com> |
qemu/aarch64/plat_helpers.S : calculate the position shift
Rather than re-create this file in multiple qemu variants instead caclulate the shift needed to convert MPIDR to position.
Add a new PLATF
qemu/aarch64/plat_helpers.S : calculate the position shift
Rather than re-create this file in multiple qemu variants instead caclulate the shift needed to convert MPIDR to position.
Add a new PLATFORM_CPU_PER_CLUSTER_SHIFT define in platform_def.h for both qemu and qemu_sbsa to enable this calculation.
Signed-off-by: Graeme Gregory <graeme@nuviainc.com> Change-Id: I0e3a86354aa716d95150a3a34b15287cd70c8fd2
show more ...
|
| 83683ddd | 28-Oct-2020 |
Tomas Pilar <tomas@nuviainc.com> |
plat/qemu: Use RNDR in stack protector
When getting a stack protector canary value, check if cpu supports FEAT_RNG and use that. Fallback to old method of using a (hardcoded value ^ timer).
Signed-
plat/qemu: Use RNDR in stack protector
When getting a stack protector canary value, check if cpu supports FEAT_RNG and use that. Fallback to old method of using a (hardcoded value ^ timer).
Signed-off-by: Tomas Pilar <tomas@nuviainc.com> Change-Id: I8181acf8e31661d4cc82bc3a4078f8751909e725
show more ...
|
| 94a73ef3 | 18-Dec-2020 |
Biju Das <biju.das.jz@bp.renesas.com> |
plat: renesas: rzg: DT memory node enhancements
Add DT node support for channel 0 where physical memory is split between 32bit space and 64bit space.
Signed-off-by: Biju Das <biju.das.jz@bp.renesas
plat: renesas: rzg: DT memory node enhancements
Add DT node support for channel 0 where physical memory is split between 32bit space and 64bit space.
Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com> Reviewed-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com> Change-Id: I99a18dbb14cdb54100a836c16445242e430794e3
show more ...
|
| db10bad9 | 07-Dec-2020 |
Biju Das <biju.das.jz@bp.renesas.com> |
plat: renesas: rzg: Add HopeRun HiHope RZ/G2M board support
The HiHope RZ/G2M board from HopeRun consists of main board (HopeRun HiHope RZ/G2M main board) and sub board(HopeRun HiHope RZ/G2M sub boa
plat: renesas: rzg: Add HopeRun HiHope RZ/G2M board support
The HiHope RZ/G2M board from HopeRun consists of main board (HopeRun HiHope RZ/G2M main board) and sub board(HopeRun HiHope RZ/G2M sub board). The HiHope RZ/G2M sub board sits below the HiHope RZ/G2M main board.
This patch adds the required board support to boot HopeRun HiHope RZ/G2M board.
Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com> Reviewed-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com> Change-Id: I3ed55aa4a2cc5c9d9cd6440e087bcd93186520c7
show more ...
|