ARM SMC Calling Convention interface
v2 cover ARM SMC Calling Convention interface
Hi,
This patch set is based on the Generic TEE subsystem v6 patchset
(https://lwn.net/Articles/662495/) sent out two weeks ago. By isolating the ARM SMC Calling Convention patches that are useful for other purposes than to support the Generic TEE subsystem some complexity is removed from that patch set.
This patch set adds a common interface to do an SMC or HVC following ARM SMC Calling Convention. The interface is implemented for both the arm and arm64 architectures and updates the PSCI driver to use this interface instead for firmware communication.
v2:
* Added unwinding support in the assembly functions
Thanks,
Jens
Jens Wiklander (4):
arm/arm64: add arm-smccc
arm: add implementation for arm-smccc
arm64: add implementation for arm-smccc
drivers: psci: replace psci firmware calls
arch/arm/Kconfig | 1 + arch/arm/kernel/Makefile | 3 +- arch/arm/kernel/psci-call.S | 31 ------------- arch/arm/kernel/smccc-call.S | 50 +++++++++++++++++++++ arch/arm/kernel/smccc.c | 18 ++++++++ arch/arm64/Kconfig | 1 + arch/arm64/kernel/Makefile | 3 +- arch/arm64/kernel/asm-offsets.c | 3 ++ arch/arm64/kernel/psci-call.S | 28 ------------ arch/arm64/kernel/smccc-call.S | 43 ++++++++++++++++++ arch/arm64/kernel/smccc.c | 18 ++++++++ drivers/firmware/psci.c | 23 +++++++++- include/linux/arm-smccc.h | 98 +++++++++++++++++++++++++++++++++++++++++ init/Kconfig | 3 ++ 14 files changed, 260 insertions(+), 63 deletions(-) delete mode 100644 arch/arm/kernel/psci-call.S create mode 100644 arch/arm/kernel/smccc-call.S create mode 100644 arch/arm/kernel/smccc.c delete mode 100644 arch/arm64/kernel/psci-call.S create mode 100644 arch/arm64/kernel/smccc-call.S create mode 100644 arch/arm64/kernel/smccc.c create mode 100644 include/linux/arm-smccc.h
Signature · 1 line
1.9.1
PATCH v2 1/4 arm/arm64: add arm-smccc
Adds helpers to do SMC and HVC based on ARM SMC Calling Convention. CONFIG_HAVE_ARM_SMCCC is enabled for architectures that may support the SMC or HVC instruction. It's the responsibility of the caller to know if the SMC instruction is supported by the platform.
This patch doesn't provide an implementation of the declared functions. Later patches will bring in implementations and set CONFIG_HAVE_ARM_SMCCC for ARM and ARM64 respectively.
--- include/linux/arm-smccc.h | 98 +++++++++++++++++++++++++++++++++++++++++++++++ init/Kconfig | 3 ++ 2 files changed, 101 insertions(+) create mode 100644 include/linux/arm-smccc.h
include/linux/arm-smccc.h new file +98 -0
@@ -0,0 +1,98 @@ +/* +* Copyright (c) 2015, Linaro Limited +* +* This software is licensed under the terms of the GNU General Public +* License version 2, as published by the Free Software Foundation, and +* may be copied, distributed, and modified under those terms. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +*/ +#ifndef __LINUX_ARM_SMCCC_H +#define __LINUX_ARM_SMCCC_H + +#include <linux/types.h> +#include <linux/linkage.h> + +/* +* This file provides common defines for ARM SMC Calling Convention as +* specified in +* http://infocenter.arm.com/help/topic/com.arm.doc.den0028a/index.html +*/ + +#define ARM_SMCCC_SMC_32 (0 << 30) +#define ARM_SMCCC_SMC_64 (1 << 30) +#define ARM_SMCCC_FAST_CALL (1 << 31) +#define ARM_SMCCC_STD_CALL (0 << 31) + +#define ARM_SMCCC_OWNER_MASK 0x3F +#define ARM_SMCCC_OWNER_SHIFT 24 + +#define ARM_SMCCC_FUNC_MASK 0xFFFF + +#define ARM_SMCCC_IS_FAST_CALL (smc_val) ((smc_val) & ARM_SMCCC_FAST_CALL) +#define ARM_SMCCC_IS_64 (smc_val) ((smc_val) & ARM_SMCCC_SMC_64) +#define ARM_SMCCC_FUNC_NUM (smc_val) ((smc_val) & ARM_SMCCC_FUNC_MASK) +#define ARM_SMCCC_OWNER_NUM (smc_val) \ + (((smc_val) >> ARM_SMCCC_OWNER_SHIFT) & ARM_SMCCC_OWNER_MASK) + +#define ARM_SMCCC_CALL_VAL (type, calling_convention, owner, func_num) \ + ((type) | (calling_convention) | \ + (((owner) & ARM_SMCCC_OWNER_MASK) << ARM_SMCCC_OWNER_SHIFT) | \ + ((func_num) & ARM_SMCCC_FUNC_MASK)) + +#define ARM_SMCCC_OWNER_ARCH 0 +#define ARM_SMCCC_OWNER_CPU 1 +#define ARM_SMCCC_OWNER_SIP 2 +#define ARM_SMCCC_OWNER_OEM 3 +#define ARM_SMCCC_OWNER_STANDARD 4 +#define ARM_SMCCC_OWNER_TRUSTED_APP 48 +#define ARM_SMCCC_OWNER_TRUSTED_APP_END 49 +#define ARM_SMCCC_OWNER_TRUSTED_OS 50 +#define ARM_SMCCC_OWNER_TRUSTED_OS_END 63 + +/** +* struct arm_smccc_res - Result from SMC/HVC call +* @a0-a3 result values from registers 0 to 3 +*/ +struct arm_smccc_res { +unsigned long a0; +unsigned long a1; +unsigned long a2; +unsigned long a3; +}; + +/** +* arm_smccc_smc() - make SMC calls +* @a0-a7: arguments passed in registers 0 to 7 +* @res: result values from registers 0 to 3 +* +* This function is used to make SMC calls following SMC Calling Convention. +* The content of the supplied param are copied to registers 0 to 7 prior +* to the SMC instruction. The return values are updated with the content +* from register 0 to 3 on return from the SMC instruction. +*/ +asmlinkage void arm_smccc_smc(unsigned long a0, unsigned long a1, +unsigned long a2,unsigned long a3,unsigned long a4, +unsigned long a5,unsigned long a6,unsigned long a7, +struct arm_smccc_res *res); + +/** +* arm_smccc_hvc() - make HVC calls +* @a0-a7: arguments passed in registers 0 to 7 +* @res: result values from registers 0 to 3 +* +* This function is used to make HVC calls following SMC Calling +* Convention. The content of the supplied param are copied to registers 0 +* to 7 prior to the HVC instruction. The return values are updated with +* the content from register 0 to 3 on return from the HVC instruction. +*/ +asmlinkage void arm_smccc_hvc(unsigned long a0, unsigned long a1, +unsigned long a2,unsigned long a3,unsigned long a4, +unsigned long a5,unsigned long a6,unsigned long a7, +struct arm_smccc_res *res); + +#endif /*__LINUX_ARM_SMCCC_H*/
init/Kconfig +3 -0
@@ -2061,3 +2061,6 @@ config ASN1 functions to call on what tags. source "kernel/Kconfig.locks" + +config HAVE_ARM_SMCCC + bool
Signature · 1 line
1.9.1
PATCH v2 2/4 arm: add implementation for arm-smccc
In reply to Jens WiklanderAdds implementation for arm-smccc and enables CONFIG_HAVE_SMCCC for architectures that may support arm-smccc. It's the responsibility of the caller to know if the SMC instruction is supported by the platform.
--- arch/arm/Kconfig | 1 + arch/arm/kernel/Makefile | 2 ++ arch/arm/kernel/smccc-call.S | 50 ++++++++++++++++++++++++++++++++++++++++++++ arch/arm/kernel/smccc.c | 18 ++++++++++++++++ 4 files changed, 71 insertions(+) create mode 100644 arch/arm/kernel/smccc-call.S create mode 100644 arch/arm/kernel/smccc.c
arch/arm/Kconfig +1 -0
@@ -325,6 +325,7 @@ config ARCH_MULTIPLATFORM select CLKSRC_OF select COMMON_CLK select GENERIC_CLOCKEVENTS + select HAVE_ARM_SMCCC if CPU_V7 select MIGHT_HAVE_PCI select MULTI_IRQ_HANDLER select SPARSE_IRQ
arch/arm/kernel/Makefile +2 -0
@@ -92,4 +92,6 @@ obj-y += psci-call.o obj-$(CONFIG_SMP) += psci_smp.o endif +obj-$(CONFIG_HAVE_ARM_SMCCC) += smccc-call.o smccc.o + extra-y := $(head-y) vmlinux.lds
arch/arm/kernel/smccc-call.S new file +50 -0
50 lines not on this page · raw message
arch/arm/kernel/smccc.c new file +18 -0
@@ -0,0 +1,18 @@ +/* +* Copyright (c) 2015, Linaro Limited +* +* This software is licensed under the terms of the GNU General Public +* License version 2, as published by the Free Software Foundation, and +* may be copied, distributed, and modified under those terms. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +*/ +#include <linux/export.h> +#include <linux/arm-smccc.h> + +EXPORT_SYMBOL_GPL (arm_smccc_smc); +EXPORT_SYMBOL_GPL (arm_smccc_hvc);
Signature · 1 line
1.9.1
PATCH v2 2/4 arm: add implementation for arm-smccc
Quoted 5 lines · Jens Wiklander
Adds implementation for arm-smccc and enables
CONFIG_HAVE_SMCCCfor architectures that may support arm-smccc. It's the responsibility of the caller to know if the SMC instruction is supported by the platform.Signed-off-by Jens Wiklander <[email protected]>
PATCH v2 3/4 arm64: add implementation for arm-smccc
In reply to Jens WiklanderAdds implementation for arm-smccc and enables CONFIG_HAVE_SMCCC.
--- arch/arm64/Kconfig | 1 + arch/arm64/kernel/Makefile | 1 + arch/arm64/kernel/asm-offsets.c | 3 +++ arch/arm64/kernel/smccc-call.S | 43 +++++++++++++++++++++++++++++++++++++++++ arch/arm64/kernel/smccc.c | 18 +++++++++++++++++ 5 files changed, 66 insertions(+) create mode 100644 arch/arm64/kernel/smccc-call.S create mode 100644 arch/arm64/kernel/smccc.c
arch/arm64/Kconfig +1 -0
@@ -89,6 +89,7 @@ config ARM64 select SPARSE_IRQ select SYSCTL_EXCEPTION_TRACE select HAVE_CONTEXT_TRACKING + select HAVE_ARM_SMCCC help ARM 64-bit (AArch64) Linux support.
arch/arm64/kernel/Makefile +1 -0
@@ -36,6 +36,7 @@ arm64-obj-$(CONFIG_EFI) += efi.o efi-stub.o efi-entry.o arm64-obj-$(CONFIG_PCI) += pci.o arm64-obj-$(CONFIG_ARMV8_DEPRECATED) += armv8_deprecated.o arm64-obj-$(CONFIG_ACPI) += acpi.o +arm64-obj-$(CONFIG_HAVE_ARM_SMCCC) += smccc-call.o smccc.o obj-y += $(arm64-obj-y) vdso/ obj-m += $(arm64-obj-m)
arch/arm64/kernel/asm-offsets.c +3 -0
@@ -28,6 +28,7 @@#include <asm/suspend.h> #include <asm/vdso_datapage.h> #include <linux/kbuild.h> +#include <linux/arm-smccc.h> int main (void ) {
@@ -161,5 +162,7 @@ int main(void)DEFINE (SLEEP_SAVE_SP_PHYS , offsetof(struct sleep_save_sp , save_ptr_stash_phys));DEFINE (SLEEP_SAVE_SP_VIRT , offsetof(struct sleep_save_sp , save_ptr_stash));#endif +DEFINE (ARM_SMCCC_RES_X0_OFFS , offsetof(struct arm_smccc_res , a0)); +DEFINE (ARM_SMCCC_RES_X2_OFFS , offsetof(struct arm_smccc_res , a2));return 0 ; }
arch/arm64/kernel/smccc-call.S new file +43 -0
43 lines not on this page · raw message
arch/arm64/kernel/smccc.c new file +18 -0
@@ -0,0 +1,18 @@ +/* +* Copyright (c) 2015, Linaro Limited +* +* This software is licensed under the terms of the GNU General Public +* License version 2, as published by the Free Software Foundation, and +* may be copied, distributed, and modified under those terms. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +*/ +#include <linux/export.h> +#include <linux/arm-smccc.h> + +EXPORT_SYMBOL_GPL (arm_smccc_smc); +EXPORT_SYMBOL_GPL (arm_smccc_hvc);
Signature · 1 line
1.9.1
PATCH v2 3/4 arm64: add implementation for arm-smccc
Quoted 30 lines · Jens Wiklander
Adds implementation for arm-smccc and enables
CONFIG_HAVE_SMCCC.Signed-off-by Jens Wiklander <[email protected]>--- arch/arm64/Kconfig | 1 + arch/arm64/kernel/Makefile | 1 + arch/arm64/kernel/asm-offsets.c | 3 +++ arch/arm64/kernel/smccc-call.S | 43 +++++++++++++++++++++++++++++++++++++++++ arch/arm64/kernel/smccc.c | 18 +++++++++++++++++ 5 files changed, 66 insertions(+) create mode 100644 arch/arm64/kernel/smccc-call.S create mode 100644 arch/arm64/kernel/smccc.carch/arm64/Kconfig +1
-0@@ -89,6 +89,7 @@ config ARM64 select SPARSE_IRQ select SYSCTL_EXCEPTION_TRACE select HAVE_CONTEXT_TRACKING + select HAVE_ARM_SMCCC help ARM 64-bit (AArch64) Linux support.arch/arm64/kernel/Makefile +0
-0
arch/arm64/kernel/Makefile arm64-obj-$(CONFIG_EFI) += efi.o efi-stub.o efi-entry.o · line 39
Quoted 4 lines
arch/arm64/kernel/Makefile +1
-0@@ -36,6 +36,7 @@ arm64-obj-$(CONFIG_EFI) += efi.o efi-stub.o efi-entry.o arm64-obj-$(CONFIG_PCI) += pci.o arm64-obj-$(CONFIG_ARMV8_DEPRECATED) += armv8_deprecated.o arm64-obj-$(CONFIG_ACPI) += acpi.o +arm64-obj-$(CONFIG_HAVE_ARM_SMCCC) += smccc-call.o smccc.o
I think you can just stick these in arm64-obj-y, since that option will never be turned off.
Quoted 85 lines
arch/arm64/kernel/Makefile +0
-0obj-y += $(arm64-obj-y) vdso/ obj-m += $(arm64-obj-m)arch/arm64/kernel/asm-offsets.c +3
-0@@ -28,6 +28,7 @@#include <asm/suspend.h> #include <asm/vdso_datapage.h> #include <linux/kbuild.h> +#include <linux/arm-smccc.h> int main (void ) {@@ -161,5 +162,7 @@ int main(void)DEFINE (SLEEP_SAVE_SP_PHYS , offsetof(struct sleep_save_sp , save_ptr_stash_phys));DEFINE (SLEEP_SAVE_SP_VIRT , offsetof(struct sleep_save_sp , save_ptr_stash));#endif +DEFINE (ARM_SMCCC_RES_X0_OFFS , offsetof(struct arm_smccc_res , a0)); +DEFINE (ARM_SMCCC_RES_X2_OFFS , offsetof(struct arm_smccc_res , a2));return 0 ; }arch/arm64/kernel/smccc-call.S new file +43
-0@@ -0,0 +1,43 @@ +/* + * Copyright (c) 2015, Linaro Limited + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License Version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + */ +#include <linux/linkage.h> +#include <asm/asm-offsets.h> + + .macro SMCCC instr + .cfi_startproc + \instr #0 + ldr x4, [sp] + stp x0, x1, [x4, #ARM_SMCCC_RES_X0_OFFS] + stp x2, x3, [x4, #ARM_SMCCC_RES_X2_OFFS] + ret + .cfi_endproc + .endm + +/* + * void arm_smccc_smc(unsigned long a0, unsigned long a1, unsigned long a2, + * unsigned long a3, unsigned long a4, unsigned long a5, + * unsigned long a6, unsigned long a7, struct arm_smccc_res *res) + */ +ENTRY(arm_smccc_smc) + SMCCC smc +ENDPROC(arm_smccc_smc) + +/* + * void arm_smccc_hvc(unsigned long a0, unsigned long a1, unsigned long a2, + * unsigned long a3, unsigned long a4, unsigned long a5, + * unsigned long a6, unsigned long a7, struct arm_smccc_res *res) + */ +ENTRY(arm_smccc_hvc) + SMCCC hvc +ENDPROC(arm_smccc_hvc)arch/arm64/kernel/smccc.c new file +8
-0@@ -0,0 +1,18 @@ +/* +* Copyright (c) 2015, Linaro Limited +* +* This software is licensed under the terms of the GNU General Public +* License version 2, as published by the Free Software Foundation, and +* may be copied, distributed, and modified under those terms. +* +* This program is distributed in the hope that it will be useful,
arch/arm64/kernel/smccc.c line 18
Quoted 10 lines
arch/arm64/kernel/smccc.c new file +10
-0+* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +*/ +#include <linux/export.h> +#include <linux/arm-smccc.h> + +EXPORT_SYMBOL_GPL (arm_smccc_smc); +EXPORT_SYMBOL_GPL (arm_smccc_hvc);
You can just put these in arch/arm64/kernel/arm64ksyms.c, which is where the rest of the EXPORTs for asm symbols live.
With those changes:
Will
PATCH v2 4/4 drivers: psci: replace psci firmware calls
In reply to Jens WiklanderSwitch to use a generic interface for issuing SMC/HVC based on ARM SMC Calling Convention. Removes now the now unused psci-call.S.
--- arch/arm/kernel/Makefile | 1 - arch/arm/kernel/psci-call.S | 31 ------------------------------- arch/arm64/kernel/Makefile | 2 +- arch/arm64/kernel/psci-call.S | 28 ---------------------------- drivers/firmware/psci.c | 23 +++++++++++++++++++++-- 5 files changed, 22 insertions(+), 63 deletions(-) delete mode 100644 arch/arm/kernel/psci-call.S delete mode 100644 arch/arm64/kernel/psci-call.S
arch/arm/kernel/Makefile +0 -1
@@ -88,7 +88,6 @@ obj-$(CONFIG_EARLY_PRINTK) += early_printk.o obj-$(CONFIG_ARM_VIRT_EXT) += hyp-stub.o ifeq ($(CONFIG_ARM_PSCI),y) -obj-y += psci-call.o obj-$(CONFIG_SMP) += psci_smp.o endif
arch/arm/kernel/psci-call.S deleted +0 -31
@@ -1,31 +0,0 @@ -/* - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * Copyright (C) 2015 ARM Limited - * - * Author: Mark Rutland <[email protected]> - */ - -#include <linux/linkage.h> - -#include <asm/opcodes-sec.h> -#include <asm/opcodes-virt.h> - -/* int __invoke_psci_fn_hvc(u32 function_id, u32 arg0, u32 arg1, u32 arg2) */ -ENTRY(__invoke_psci_fn_hvc) - __HVC(0) - bx lr -ENDPROC(__invoke_psci_fn_hvc) - -/* int __invoke_psci_fn_smc(u32 function_id, u32 arg0, u32 arg1, u32 arg2) */ -ENTRY(__invoke_psci_fn_smc) - __SMC(0) - bx lr -ENDPROC(__invoke_psci_fn_smc)
arch/arm64/kernel/Makefile +1 -1
@@ -15,7 +15,7 @@ CFLAGS_REMOVE_return_address.o = -pg arm64-obj-y := debug-monitors.o entry.o irq.o fpsimd.o \ entry-fpsimd.o process.o ptrace.o setup.o signal.o \ sys.o stacktrace.o time.o traps.o io.o vdso.o \ - hyp-stub.o psci.o psci-call.o cpu_ops.o insn.o \ + hyp-stub.o psci.o cpu_ops.o insn.o \ return_address.o cpuinfo.o cpu_errata.o \ cpufeature.o alternative.o cacheinfo.o \ smp.o smp_spin_table.o topology.o
arch/arm64/kernel/psci-call.S deleted +0 -28
@@ -1,28 +0,0 @@ -/* - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * Copyright (C) 2015 ARM Limited - * - * Author: Will Deacon <[email protected]> - */ - -#include <linux/linkage.h> - -/* int __invoke_psci_fn_hvc(u64 function_id, u64 arg0, u64 arg1, u64 arg2) */ -ENTRY(__invoke_psci_fn_hvc) - hvc #0 - ret -ENDPROC(__invoke_psci_fn_hvc) - -/* int __invoke_psci_fn_smc(u64 function_id, u64 arg0, u64 arg1, u64 arg2) */ -ENTRY(__invoke_psci_fn_smc) - smc #0 - ret -ENDPROC(__invoke_psci_fn_smc)
drivers/firmware/psci.c +21 -2
@@ -19,6 +19,7 @@#include <linux/pm.h> #include <linux/printk.h> #include <linux/psci.h> +#include <linux/arm-smccc.h> #include <linux/reboot.h> #include <uapi/linux/psci.h>
@@ -56,8 +57,6 @@ struct psci_operations psci_ops;typedef unsigned long (psci_fn )(unsigned long ,unsigned long ,unsigned long ,unsigned long ); -asmlinkage psci_fn __invoke_psci_fn_hvc; -asmlinkage psci_fn __invoke_psci_fn_smc;static psci_fn *invoke_psci_fn;enum psci_function {
@@ -70,6 +69,26 @@ enum psci_function {static u32 psci_function_id[PSCI_FN_MAX ]; +static unsigned long __invoke_psci_fn_hvc (unsigned long function_id, +unsigned long arg0,unsigned long arg1, +unsigned long arg2) +{ +struct arm_smccc_res res; + +arm_smccc_hvc (function_id, arg0, arg1, arg2,0 ,0 ,0 ,0 , &res); +return res.a0; +} + +static unsigned long __invoke_psci_fn_smc (unsigned long function_id, +unsigned long arg0,unsigned long arg1, +unsigned long arg2) +{ +struct arm_smccc_res res; + +arm_smccc_smc (function_id, arg0, arg1, arg2,0 ,0 ,0 ,0 , &res); +return res.a0; +} +static int psci_to_linux_errno (int errno) {switch (errno) {
Signature · 1 line
1.9.1
PATCH v2 4/4 drivers: psci: replace psci firmware calls
Quoted 4 lines · Jens Wiklander
Switch to use a generic interface for issuing SMC/HVC based on ARM SMC Calling Convention. Removes now the now unused
psci-call.S.Signed-off-by Jens Wiklander <[email protected]>
Quoted 9 lines
--- arch/arm/kernel/Makefile | 1 - arch/arm/kernel/psci-call.S | 31 ------------------------------- arch/arm64/kernel/Makefile | 2 +- arch/arm64/kernel/psci-call.S | 28 ---------------------------- drivers/firmware/psci.c | 23 +++++++++++++++++++++-- 5 files changed, 22 insertions(+), 63 deletions(-) delete mode 100644 arch/arm/kernel/psci-call.S delete mode 100644 arch/arm64/kernel/psci-call.S
Thanks for doing this:
Will