aboutsummaryrefslogtreecommitdiff
path: root/drivers/firmware
diff options
context:
space:
mode:
authorYann Gautier <yann.gautier@st.com>2020-07-17 14:20:15 +0200
committerTom Rini <trini@konsulko.com>2020-08-04 23:30:02 -0400
commit5cc7df7ebaccc0d02e3322a35b2dcb47951bc9ae (patch)
tree4714adad5d0daf13c94c177d91086490203f2a5e /drivers/firmware
parent06fc4573b9d0878dd1d3b302884601263fe6e85f (diff)
downloadu-boot-5cc7df7ebaccc0d02e3322a35b2dcb47951bc9ae.zip
u-boot-5cc7df7ebaccc0d02e3322a35b2dcb47951bc9ae.tar.gz
u-boot-5cc7df7ebaccc0d02e3322a35b2dcb47951bc9ae.tar.bz2
psci: put psci_method in .data section if EFI_LOADER is not enabled
Move the variable psci_method in .data section when EFI is not activated and the psci driver safely access it before relocation. Without this patch the variable is located in .bss section and the psci probe requested before relocation corrupts the device tree (probe is requested by board_f.c::print_resetinfo()). When EFI_LOADER is activated, this variable in already located in the .data.efi_runtime section by __efi_runtime_data. Signed-off-by: Yann Gautier <yann.gautier@st.com> Signed-off-by: Patrick Delaunay <patrick.delaunay@st.com>
Diffstat (limited to 'drivers/firmware')
-rw-r--r--drivers/firmware/psci.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/firmware/psci.c b/drivers/firmware/psci.c
index 23cf807..7d2e49f 100644
--- a/drivers/firmware/psci.c
+++ b/drivers/firmware/psci.c
@@ -25,7 +25,11 @@
#define PSCI_METHOD_HVC 1
#define PSCI_METHOD_SMC 2
+#if CONFIG_IS_ENABLED(EFI_LOADER)
int __efi_runtime_data psci_method;
+#else
+int psci_method __attribute__ ((section(".data")));
+#endif
unsigned long __efi_runtime invoke_psci_fn
(unsigned long function_id, unsigned long arg0,