[U-Boot] arm: Leave smccc calls in .text when efi_loader=n

Message ID 20190211141358.65023-1-agraf@suse.de
State Accepted
Commit 2f8ab1218f74dbaeffffb0a53094ead58bee41c5
Delegated to: Alexander Graf
Headers show
Series
  • [U-Boot] arm: Leave smccc calls in .text when efi_loader=n
Related show

Commit Message

Alexander Graf Feb. 11, 2019, 2:13 p.m.
Commit 81ea00838c6 ("efi_loader: PSCI reset and shutdown") put the SMCCC
assembly code into the efi specific code section. This is wrong when we
do not have EFI_LOADER enabled, as that strips efi runtime sections from
the output binary

Reported-by: Michal Simek <monstr@monstr.eu>
Fixes: 81ea00838c6 ("efi_loader: PSCI reset and shutdown")
Signed-off-by: Alexander Graf <agraf@suse.de>
---
 arch/arm/cpu/armv7/smccc-call.S | 2 ++
 arch/arm/cpu/armv8/smccc-call.S | 2 ++
 2 files changed, 4 insertions(+)

Comments

Michal Simek Feb. 11, 2019, 2:56 p.m. | #1
On 11. 02. 19 15:13, Alexander Graf wrote:
> Commit 81ea00838c6 ("efi_loader: PSCI reset and shutdown") put the SMCCC
> assembly code into the efi specific code section. This is wrong when we
> do not have EFI_LOADER enabled, as that strips efi runtime sections from
> the output binary
> 
> Reported-by: Michal Simek <monstr@monstr.eu>
> Fixes: 81ea00838c6 ("efi_loader: PSCI reset and shutdown")
> Signed-off-by: Alexander Graf <agraf@suse.de>
> ---
>  arch/arm/cpu/armv7/smccc-call.S | 2 ++
>  arch/arm/cpu/armv8/smccc-call.S | 2 ++
>  2 files changed, 4 insertions(+)
> 
> diff --git a/arch/arm/cpu/armv7/smccc-call.S b/arch/arm/cpu/armv7/smccc-call.S
> index eae69e36c3..f70728f2c4 100644
> --- a/arch/arm/cpu/armv7/smccc-call.S
> +++ b/arch/arm/cpu/armv7/smccc-call.S
> @@ -7,7 +7,9 @@
>  #include <asm/opcodes-sec.h>
>  #include <asm/opcodes-virt.h>
>  
> +#ifdef CONFIG_EFI_LOADER
>  	.section	.text.efi_runtime
> +#endif
>  
>  #define UNWIND(x...)
>  	/*
> diff --git a/arch/arm/cpu/armv8/smccc-call.S b/arch/arm/cpu/armv8/smccc-call.S
> index 86de4b4089..dc92b28777 100644
> --- a/arch/arm/cpu/armv8/smccc-call.S
> +++ b/arch/arm/cpu/armv8/smccc-call.S
> @@ -6,7 +6,9 @@
>  #include <linux/arm-smccc.h>
>  #include <generated/asm-offsets.h>
>  
> +#ifdef CONFIG_EFI_LOADER
>  	.section	.text.efi_runtime
> +#endif
>  
>  	.macro SMCCC instr
>  	.cfi_startproc
> 

Reported-by: Siva Durga Prasad Paladugu <siva.durga.paladugu@xilinx.com>
Tested-by: Michal Simek <monstr@monstr.eu>

Thanks,
Michal

Patch

diff --git a/arch/arm/cpu/armv7/smccc-call.S b/arch/arm/cpu/armv7/smccc-call.S
index eae69e36c3..f70728f2c4 100644
--- a/arch/arm/cpu/armv7/smccc-call.S
+++ b/arch/arm/cpu/armv7/smccc-call.S
@@ -7,7 +7,9 @@ 
 #include <asm/opcodes-sec.h>
 #include <asm/opcodes-virt.h>
 
+#ifdef CONFIG_EFI_LOADER
 	.section	.text.efi_runtime
+#endif
 
 #define UNWIND(x...)
 	/*
diff --git a/arch/arm/cpu/armv8/smccc-call.S b/arch/arm/cpu/armv8/smccc-call.S
index 86de4b4089..dc92b28777 100644
--- a/arch/arm/cpu/armv8/smccc-call.S
+++ b/arch/arm/cpu/armv8/smccc-call.S
@@ -6,7 +6,9 @@ 
 #include <linux/arm-smccc.h>
 #include <generated/asm-offsets.h>
 
+#ifdef CONFIG_EFI_LOADER
 	.section	.text.efi_runtime
+#endif
 
 	.macro SMCCC instr
 	.cfi_startproc