]> git.baikalelectronics.ru Git - arm-tf.git/commitdiff
fix(psci): tighten psci_power_down_wfi behaviour
authorHarrison Mutai <harrison.mutai@arm.com>
Wed, 11 Jan 2023 17:01:04 +0000 (17:01 +0000)
committerHarrison Mutai <harrison.mutai@arm.com>
Mon, 23 Jan 2023 17:25:40 +0000 (17:25 +0000)
A processing element should never return from a wfi, however, due to a
hardware bug, certain CPUs may wake up because of an external event.
This patch tightens the behaviour of the common power down sequence, it
ensures the routine never returns by entering a wfi loop at its end. It
aligns with the behaviour of the platform implementations.

Change-Id: I36d8b0c64eccb71035bf164b4cd658d66ed7beb4
Signed-off-by: Harrison Mutai <harrison.mutai@arm.com>
lib/psci/aarch32/psci_helpers.S
lib/psci/aarch64/psci_helpers.S

index 5cc192e66ba45fea845007b34f817b6524a9656e..d28d469f385828c5daadf9c8f6ac33900634229b 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016-2018, ARM Limited and Contributors. All rights reserved.
+ * Copyright (c) 2016-2023, ARM Limited and Contributors. All rights reserved.
  *
  * SPDX-License-Identifier: BSD-3-Clause
  */
@@ -143,6 +143,7 @@ endfunc do_stack_maintenance
  */
 func psci_power_down_wfi
        dsb     sy              // ensure write buffer empty
+1:
        wfi
-       no_ret  plat_panic_handler
+       b       1b
 endfunc psci_power_down_wfi
index add968a7bef0be8ab6168128e65a461518aef6fc..0bb19884f0d45eefdc331a8d9a70bfab447b743d 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014-2018, ARM Limited and Contributors. All rights reserved.
+ * Copyright (c) 2014-2023, ARM Limited and Contributors. All rights reserved.
  *
  * SPDX-License-Identifier: BSD-3-Clause
  */
@@ -125,6 +125,7 @@ endfunc psci_do_pwrup_cache_maintenance
  */
 func psci_power_down_wfi
        dsb     sy              // ensure write buffer empty
+1:
        wfi
-       no_ret  plat_panic_handler
+       b       1b
 endfunc psci_power_down_wfi