arm64/efi: move arm64 specific stub C code to libstub
PATCH 1/1 arm64/efi: move arm64 specific stub C code to libstub
Now that we added special handling to the C files in libstub, move the one remaining arm64 specific EFI stub C file to libstub as well, so that it gets the same treatment. This should prevent future changes from resulting in binaries that may execute incorrectly in UEFI context.
With efi-entry.S the only remaining EFI stub source file under arch/arm64, we can also simplify the Makefile logic somewhat.
---
I would like to suggest that this be taken on top of the stuff that is queued for 4.4 at the moment (if it is not too late already).
arch/arm64/kernel/Makefile | 9 ++------- drivers/firmware/efi/libstub/Makefile | 3 +++ arch/arm64/kernel/efi-stub.c => drivers/firmware/efi/libstub/arm64-stub.c | 0 3 files changed, 5 insertions(+), 7 deletions(-)
arch/arm64/kernel/Makefile +2 -7
@@ -4,11 +4,8 @@ CPPFLAGS_vmlinux.lds := -DTEXT_OFFSET=$(TEXT_OFFSET) AFLAGS_head.o := -DTEXT_OFFSET=$(TEXT_OFFSET) -CFLAGS_efi-stub.o := -DTEXT_OFFSET=$(TEXT_OFFSET) CFLAGS_armv8_deprecated.o := -I$(src) -KASAN_SANITIZE_efi-stub.o := n - CFLAGS_REMOVE_ftrace.o = -pg CFLAGS_REMOVE_insn.o = -pg CFLAGS_REMOVE_return_address.o = -pg
@@ -22,9 +19,7 @@ arm64-obj-y := debug-monitors.o entry.o irq.o fpsimd.o \ cpufeature.o alternative.o cacheinfo.o \ smp.o smp_spin_table.o topology.o -stub-obj := efi-stub.o efi-entry.o -extra-y := $(stub-obj) -stub-obj := $(patsubst %.o,%.stub.o,$(stub-obj)) +extra-$(CONFIG_EFI) := efi-entry.o OBJCOPYFLAGS := --prefix-symbols=__efistub_ $(obj)/%.stub.o: $(obj)/%.o FORCE
@@ -42,7 +37,7 @@ arm64-obj-$(CONFIG_CPU_PM) += sleep.o suspend.o arm64-obj-$(CONFIG_CPU_IDLE) += cpuidle.o arm64-obj-$(CONFIG_JUMP_LABEL) += jump_label.o arm64-obj-$(CONFIG_KGDB) += kgdb.o -arm64-obj-$(CONFIG_EFI) += efi.o $(stub-obj) +arm64-obj-$(CONFIG_EFI) += efi.o efi-entry.stub.o arm64-obj-$(CONFIG_PCI) += pci.o arm64-obj-$(CONFIG_ARMV8_DEPRECATED) += armv8_deprecated.o arm64-obj-$(CONFIG_ACPI) += acpi.o
drivers/firmware/efi/libstub/Makefile +3 -0
@@ -34,6 +34,9 @@ $(obj)/lib-%.o: $(srctree)/lib/%.c FORCE lib-$(CONFIG_EFI_ARMSTUB) += arm-stub.o fdt.o string.o \ $(patsubst %.c,lib-%.o,$(arm-deps)) +lib-$(CONFIG_ARM64) += arm64-stub.o +CFLAGS_arm64-stub.o := -DTEXT_OFFSET=$(TEXT_OFFSET) + # # arm64 puts the stub in the kernel proper, which will unnecessarily retain all # code indefinitely unless it is annotated as __init/__initdata/__initconst etc.
drivers/firmware/efi/libstub/arm64-stub.c renamed from arch/arm64/kernel/efi-stub.c +0 -0
Signature · 1 line
2.1.4
PATCH 1/1 arm64/efi: move arm64 specific stub C code to libstub
Quoted 5 lines · Ard Biesheuvel
Now that we added special handling to the C files in libstub, move the one remaining arm64 specific EFI stub C file to libstub as well, so that it gets the same treatment. This should prevent future changes from resulting in binaries that may execute incorrectly in UEFI context.
Sorry, I'm coming at this cache-cold: What special handling was added to libstub that you want to make use of here?
Quoted 8 lines
With
efi-entry.Sthe only remaining EFI stub source file underarch/arm64, we can also simplify theMakefilelogic somewhat.Signed-off-by Ard Biesheuvel <[email protected]>---
I would like to suggest that this be taken on top of the stuff that is queued for 4.4 at the moment (if it is not too late already).
That's upto the tip folks (Cc'd). Ingo, would you consider applying a minimal build cleanup patch like this for v4.4?
Quoted 62 lines
arch/arm64/kernel/Makefile | 9 ++------- drivers/firmware/efi/libstub/Makefile | 3 +++ arch/arm64/kernel/efi-stub.c => drivers/firmware/efi/libstub/arm64-stub.c | 0 3 files changed, 5 insertions(+), 7 deletions(-)arch/arm64/kernel/Makefile +2
-7@@ -4,11 +4,8 @@ CPPFLAGS_vmlinux.lds := -DTEXT_OFFSET=$(TEXT_OFFSET) AFLAGS_head.o := -DTEXT_OFFSET=$(TEXT_OFFSET) -CFLAGS_efi-stub.o := -DTEXT_OFFSET=$(TEXT_OFFSET) CFLAGS_armv8_deprecated.o := -I$(src) -KASAN_SANITIZE_efi-stub.o := n - CFLAGS_REMOVE_ftrace.o = -pg CFLAGS_REMOVE_insn.o = -pg CFLAGS_REMOVE_return_address.o = -pg@@ -22,9 +19,7 @@ arm64-obj-y := debug-monitors.o entry.o irq.o fpsimd.o \ cpufeature.o alternative.o cacheinfo.o \ smp.o smp_spin_table.o topology.o -stub-obj := efi-stub.o efi-entry.o -extra-y := $(stub-obj) -stub-obj := $(patsubst %.o,%.stub.o,$(stub-obj)) +extra-$(CONFIG_EFI) := efi-entry.o OBJCOPYFLAGS := --prefix-symbols=__efistub_ $(obj)/%.stub.o: $(obj)/%.o FORCE@@ -42,7 +37,7 @@ arm64-obj-$(CONFIG_CPU_PM) += sleep.o suspend.o arm64-obj-$(CONFIG_CPU_IDLE) += cpuidle.o arm64-obj-$(CONFIG_JUMP_LABEL) += jump_label.o arm64-obj-$(CONFIG_KGDB) += kgdb.o -arm64-obj-$(CONFIG_EFI) += efi.o $(stub-obj) +arm64-obj-$(CONFIG_EFI) += efi.o efi-entry.stub.o arm64-obj-$(CONFIG_PCI) += pci.o arm64-obj-$(CONFIG_ARMV8_DEPRECATED) += armv8_deprecated.o arm64-obj-$(CONFIG_ACPI) += acpi.odrivers/firmware/efi/libstub/Makefile +3
-0@@ -34,6 +34,9 @@ $(obj)/lib-%.o: $(srctree)/lib/%.c FORCE lib-$(CONFIG_EFI_ARMSTUB) += arm-stub.o fdt.o string.o \ $(patsubst %.c,lib-%.o,$(arm-deps)) +lib-$(CONFIG_ARM64) += arm64-stub.o +CFLAGS_arm64-stub.o := -DTEXT_OFFSET=$(TEXT_OFFSET) + # # arm64 puts the stub in the kernel proper, which will unnecessarily retain all # code indefinitely unless it is annotated as __init/__initdata/__initconst etc.drivers/firmware/efi/libstub/arm64-stub.c renamed from arch/arm64/kernel/efi-stub.c +0
-0Signature · 1 line
2.1.4
PATCH 1/1 arm64/efi: move arm64 specific stub C code to libstub
Quoted 10 lines · Matt Fleming
Quoted 5 lines · Ard Biesheuvel
Now that we added special handling to the C files in libstub, move the one remaining arm64 specific EFI stub C file to libstub as well, so that it gets the same treatment. This should prevent future changes from resulting in binaries that may execute incorrectly in UEFI context.
Sorry, I'm coming at this cache-cold: What special handling was added to libstub that you want to make use of here?
This is about the libstub patches that you reviewed ~2 weeks ago and that have been queued in Catalin's arm64 tree for 4.4
Quoted 12 lines
Quoted 8 lines
With
efi-entry.Sthe only remaining EFI stub source file underarch/arm64, we can also simplify theMakefilelogic somewhat.Signed-off-by Ard Biesheuvel <[email protected]>---
I would like to suggest that this be taken on top of the stuff that is queued for 4.4 at the moment (if it is not too late already).
That's upto the tip folks (Cc'd). Ingo, would you consider applying a minimal build cleanup patch like this for v4.4?
Actually, the suggestion was aimed at Catalin, who has all the libstub and KASAN patches queued that this patch depends on. Apologies for the confusion.
Thanks,
Ard.
Quoted 62 lines
Quoted 62 lines
arch/arm64/kernel/Makefile | 9 ++------- drivers/firmware/efi/libstub/Makefile | 3 +++ arch/arm64/kernel/efi-stub.c => drivers/firmware/efi/libstub/arm64-stub.c | 0 3 files changed, 5 insertions(+), 7 deletions(-)arch/arm64/kernel/Makefile +2
-7@@ -4,11 +4,8 @@ CPPFLAGS_vmlinux.lds := -DTEXT_OFFSET=$(TEXT_OFFSET) AFLAGS_head.o := -DTEXT_OFFSET=$(TEXT_OFFSET) -CFLAGS_efi-stub.o := -DTEXT_OFFSET=$(TEXT_OFFSET) CFLAGS_armv8_deprecated.o := -I$(src) -KASAN_SANITIZE_efi-stub.o := n - CFLAGS_REMOVE_ftrace.o = -pg CFLAGS_REMOVE_insn.o = -pg CFLAGS_REMOVE_return_address.o = -pg@@ -22,9 +19,7 @@ arm64-obj-y := debug-monitors.o entry.o irq.o fpsimd.o \ cpufeature.o alternative.o cacheinfo.o \ smp.o smp_spin_table.o topology.o -stub-obj := efi-stub.o efi-entry.o -extra-y := $(stub-obj) -stub-obj := $(patsubst %.o,%.stub.o,$(stub-obj)) +extra-$(CONFIG_EFI) := efi-entry.o OBJCOPYFLAGS := --prefix-symbols=__efistub_ $(obj)/%.stub.o: $(obj)/%.o FORCE@@ -42,7 +37,7 @@ arm64-obj-$(CONFIG_CPU_PM) += sleep.o suspend.o arm64-obj-$(CONFIG_CPU_IDLE) += cpuidle.o arm64-obj-$(CONFIG_JUMP_LABEL) += jump_label.o arm64-obj-$(CONFIG_KGDB) += kgdb.o -arm64-obj-$(CONFIG_EFI) += efi.o $(stub-obj) +arm64-obj-$(CONFIG_EFI) += efi.o efi-entry.stub.o arm64-obj-$(CONFIG_PCI) += pci.o arm64-obj-$(CONFIG_ARMV8_DEPRECATED) += armv8_deprecated.o arm64-obj-$(CONFIG_ACPI) += acpi.odrivers/firmware/efi/libstub/Makefile +3
-0@@ -34,6 +34,9 @@ $(obj)/lib-%.o: $(srctree)/lib/%.c FORCE lib-$(CONFIG_EFI_ARMSTUB) += arm-stub.o fdt.o string.o \ $(patsubst %.c,lib-%.o,$(arm-deps)) +lib-$(CONFIG_ARM64) += arm64-stub.o +CFLAGS_arm64-stub.o := -DTEXT_OFFSET=$(TEXT_OFFSET) + # # arm64 puts the stub in the kernel proper, which will unnecessarily retain all # code indefinitely unless it is annotated as __init/__initdata/__initconst etc.drivers/firmware/efi/libstub/arm64-stub.c renamed from arch/arm64/kernel/efi-stub.c +0
-1--2.1.4
PATCH 1/1 arm64/efi: move arm64 specific stub C code to libstub
Quoted 24 lines · Ard Biesheuvel
Quoted 10 lines · Matt Fleming
Quoted 5 lines · Ard Biesheuvel
Now that we added special handling to the C files in libstub, move the one remaining arm64 specific EFI stub C file to libstub as well, so that it gets the same treatment. This should prevent future changes from resulting in binaries that may execute incorrectly in UEFI context.
Sorry, I'm coming at this cache-cold: What special handling was added to libstub that you want to make use of here?
This is about the libstub patches that you reviewed ~2 weeks ago and that have been queued in Catalin's arm64 tree for 4.4
Quoted 9 lines
Quoted 8 lines
With
efi-entry.Sthe only remaining EFI stub source file underarch/arm64, we can also simplify theMakefilelogic somewhat.Signed-off-by Ard Biesheuvel <[email protected]>---
I would like to suggest that this be taken on top of the stuff that is queued for 4.4 at the moment (if it is not too late already).
Quoted 7 lines
Quoted 3 lines
That's upto the tip folks (Cc'd). Ingo, would you consider applying a minimal build cleanup patch like this for v4.4?
Actually, the suggestion was aimed at Catalin, who has all the libstub and KASAN patches queued that this patch depends on. Apologies for the confusion.
Fair enough. In that case (for the drivers/firmware bits),
PATCH 1/1 arm64/efi: move arm64 specific stub C code to libstub
In reply to Ard BiesheuvelQuoted 6 lines · Ard Biesheuvel
Now that we added special handling to the C files in libstub, move the one remaining arm64 specific EFI stub C file to libstub as well, so that it gets the same treatment. This should prevent future changes from resulting in binaries that may execute incorrectly in UEFI context.
Quoted 8 lines
With
efi-entry.Sthe only remaining EFI stub source file underarch/arm64, we can also simplify theMakefilelogic somewhat.Signed-off-by Ard Biesheuvel <[email protected]>---
I would like to suggest that this be taken on top of the stuff that is queued for 4.4 at the moment (if it is not too late already).
Applied. Thanks.
Signature · 1 line
Catalin
PATCH 1/1 arm64/efi: move arm64 specific stub C code to libstub
Quoted 10 lines · Catalin Marinas
Quoted 9 lines · Ard Biesheuvel
Now that we added special handling to the C files in libstub, move the one remaining arm64 specific EFI stub C file to libstub as well, so that it gets the same treatment. This should prevent future changes from resulting in binaries that may execute incorrectly in UEFI context.
With
efi-entry.Sthe only remaining EFI stub source file underarch/arm64, we can also simplify theMakefilelogic somewhat.
Quoted 8 lines
Quoted 5 lines
Signed-off-by Ard Biesheuvel <[email protected]>---
I would like to suggest that this be taken on top of the stuff that is queued for 4.4 at the moment (if it is not too late already).
Applied. Thanks.
Please note (before you push it out), that Will just pulled a 4.3-rc fix that changes arch/arm64/kernel/efi-stub.c
Catalin Marinas
maintainerPATCH 1/1 arm64/efi: move arm64 specific stub C code to libstub
Quoted 14 lines · Ard Biesheuvel
Quoted 13 lines · Catalin Marinas
Quoted 12 lines · Ard Biesheuvel
Now that we added special handling to the C files in libstub, move the one remaining arm64 specific EFI stub C file to libstub as well, so that it gets the same treatment. This should prevent future changes from resulting in binaries that may execute incorrectly in UEFI context.
With
efi-entry.Sthe only remaining EFI stub source file underarch/arm64, we can also simplify theMakefilelogic somewhat.Signed-off-by Ard Biesheuvel <[email protected]>---
Quoted 7 lines
Quoted 4 lines
Quoted 2 lines
I would like to suggest that this be taken on top of the stuff that is queued for 4.4 at the moment (if it is not too late already).
Applied. Thanks.
Please note (before you push it out), that Will just pulled a 4.3-rc fix that changes
arch/arm64/kernel/efi-stub.c
Thanks for the heads up. Apparently git is smart enough to move the patched file if I merge my upstream branch into Will's without even complaining.
Signature · 1 line
Catalin
PATCH 1/1 arm64/efi: move arm64 specific stub C code to libstub
In reply to Ard BiesheuvelQuoted 10 lines · Ard Biesheuvel
Now that we added special handling to the C files in libstub, move the one remaining arm64 specific EFI stub C file to libstub as well, so that it gets the same treatment. This should prevent future changes from resulting in binaries that may execute incorrectly in UEFI context.
With
efi-entry.Sthe only remaining EFI stub source file underarch/arm64, we can also simplify theMakefilelogic somewhat.Signed-off-by Ard Biesheuvel <[email protected]>
I'm a little late here, but I've been running this for a few days in an EFI/ACPI environment without any issues.
So if there are any further merges..
Thanks,