On 28 January 2016 at 23:58, Matt Fleming <matt@xxxxxxxxxxxxxxxxxxx> wrote: > On Thu, 28 Jan, at 12:07:32PM, Ard Biesheuvel wrote: >> After moving arm64-stub.c to libstub/, all of its sections are emitted >> as .init.xxx sections automatically, and the __init annotation of >> handle_kernel_image() causes it to end up in .init.init.text, which is >> not recognized as an __init section by the linker scripts. So drop the >> annotation. >> >> Signed-off-by: Ard Biesheuvel <ard.biesheuvel@xxxxxxxxxx> >> --- >> drivers/firmware/efi/libstub/arm64-stub.c | 14 +++++++------- >> 1 file changed, 7 insertions(+), 7 deletions(-) >> >> diff --git a/drivers/firmware/efi/libstub/arm64-stub.c b/drivers/firmware/efi/libstub/arm64-stub.c >> index 78dfbd34b6bf..9e0342745e4f 100644 >> --- a/drivers/firmware/efi/libstub/arm64-stub.c >> +++ b/drivers/firmware/efi/libstub/arm64-stub.c >> @@ -13,13 +13,13 @@ >> #include <asm/efi.h> >> #include <asm/sections.h> >> >> -efi_status_t __init handle_kernel_image(efi_system_table_t *sys_table_arg, >> - unsigned long *image_addr, >> - unsigned long *image_size, >> - unsigned long *reserve_addr, >> - unsigned long *reserve_size, >> - unsigned long dram_base, >> - efi_loaded_image_t *image) >> +efi_status_t handle_kernel_image(efi_system_table_t *sys_table_arg, >> + unsigned long *image_addr, >> + unsigned long *image_size, >> + unsigned long *reserve_addr, >> + unsigned long *reserve_size, >> + unsigned long dram_base, >> + efi_loaded_image_t *image) >> { >> efi_status_t status; >> unsigned long kernel_size, kernel_memsize = 0; >> -- >> 2.5.0 >> > > Would it make more sense to #undef __init in one of the arm64 efistub > header files? I'm thinking of the case where some poor unsuspecting > developer writes a new function and marks it as __init, and we miss it > during review. > Yes, I can add it to efistub.h, and make sure it gets included in all the files Should we #undef it and #define it to a string that is easily grep'ed for, so it is easy to find the explanatory comment that goes along with it? E.g., #define __init __init_not_supported_in_efi_stub > At least if we do the #undef we can document why __init makes no sense > in the EFI stub, and at the same time automatically fix things up. > > An alternative would be to write some Kbuild magic that complains if > it sees __init, but that seems like more work than is reasonable. -- To unsubscribe from this list: send the line "unsubscribe linux-efi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html