i386: modpost apic related warning fixes
PATCH 1/1 i386: modpost apic related warning fixes
o Modpost generates warnings for i386 if compiled with CONFIG_RELOCATABLE=y
WARNING: vmlinux - Section mismatch: reference to .init.text:find_unisys_acpi_oem_table from .text between 'acpi_madt_oem_check' (at offset 0xc0101eda) and 'enable_apic_mode'
WARNING: vmlinux - Section mismatch: reference to .init.text:acpi_get_table_header_early from .text between 'acpi_madt_oem_check' (at offset 0xc0101ef0) and 'enable_apic_mode'
WARNING: vmlinux - Section mismatch: reference to .init.text:parse_unisys_oem from .text between 'acpi_madt_oem_check' (at offset 0xc0101f2e) and 'enable_apic_mode'
WARNING: vmlinux - Section mismatch: reference to .init.text:setup_unisys from .text between 'acpi_madt_oem_check' (at offset 0xc0101f37) and 'enable_apic_mode'WARNING: vmlinux - Section mismatch: reference to .init.text:parse_unisys_oem from .text between 'mps_oem_check' (at offset 0xc0101ec7) and 'acpi_madt_oem_check'
WARNING: vmlinux - Section mismatch: reference to .init.text:es7000_sw_apic from .text between 'enable_apic_mode' (at offset 0xc0101f48) and 'check_apicid_present'
o Some functions which are inline (acpi_madt_oem_check) are not inlined by compiler as these functions are accessed using function pointer. These functions are put in .text section and they in-turn access __init type functions hence modpost generates warnings.
o Do not iniline acpi_madt_oem_check, instead make it __init.
---
arch/i386/mach-generic/es7000.c | 41 ++++++++++++++++++++++++++++ include/asm-i386/mach-es7000/mach_apic.h | 7 ---- include/asm-i386/mach-es7000/mach_mpparse.h | 32 --------------------- scripts/mod/modpost.c | 1 4 files changed, 42 insertions(+), 39 deletions(-)
include/asm-i386/mach-es7000/mach_mpparse.h renamed from include/asm-i386/mach-es7000/mach_mpparse.h~modpost-apic-related-warning-fixes +0 -32
@@ -18,18 +18,6 @@ extern int parse_unisys_oem (char *oemptextern int find_unisys_acpi_oem_table (unsigned long *oem_addr);extern void setup_unisys (void ); -static inline int mps_oem_check (struct mp_config_table *mpc,char *oem, -char *productid) -{ -if (mpc->mpc_oemptr) { -struct mp_config_oemtable *oem_table = - (struct mp_config_oemtable *)mpc->mpc_oemptr; -if (!strncmp (oem,"UNISYS" ,6 )) -return parse_unisys_oem ((char *)oem_table); - } -return 0 ; -} -#ifdef CONFIG_ACPI static inline int es7000_check_dsdt (void ) {
@@ -40,26 +28,6 @@ static inline int es7000_check_dsdt(voidreturn 1 ;return 0 ; } - -/* Hook from generic ACPI tables.c */ -static inline int acpi_madt_oem_check (char *oem_id,char *oem_table_id) -{ -unsigned long oem_addr; -if (!find_unisys_acpi_oem_table (&oem_addr)) { -if (es7000_check_dsdt ()) -return parse_unisys_oem ((char *)oem_addr); -else { -setup_unisys (); -return 1 ; - } - } -return 0 ; -} -#else -static inline int acpi_madt_oem_check (char *oem_id,char *oem_table_id) -{ -return 0 ; -}#endif #endif /* __ASM_MACH_MPPARSE_H */
arch/i386/mach-generic/es7000.c renamed from arch/i386/mach-generic/es7000.c~modpost-apic-related-warning-fixes +41 -0
45 lines not on this page · raw message
include/asm-i386/mach-es7000/mach_apic.h renamed from include/asm-i386/mach-es7000/mach_apic.h~modpost-apic-related-warning-fixes +0 -7
@@ -73,13 +73,6 @@ static inline void init_apic_ldr(void)apic_write_around (APIC_LDR , val); } -extern void es7000_sw_apic (void ); -static inline void enable_apic_mode (void ) -{ -es7000_sw_apic (); -return ; -} -extern int apic_version [MAX_APICS ];static inline void setup_apic_routing (void ) {
scripts/mod/modpost.c renamed from scripts/mod/modpost.c~modpost-apic-related-warning-fixes +1 -0
@@ -606,6 +606,7 @@ static int secref_whitelist(const char *"_probe" ,"_probe_one" ,"_console" , +"apic_es7000" , NULL };
_