lkml.org 
[lkml]   [2020]   [Jun]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH 4/9] x86/entry: __always_inline irqflags for noinstr
    vmlinux.o: warning: objtool: lockdep_hardirqs_on()+0x65: call to arch_local_save_flags() leaves .noinstr.text section
    vmlinux.o: warning: objtool: lockdep_hardirqs_off()+0x5d: call to arch_local_save_flags() leaves .noinstr.text section
    vmlinux.o: warning: objtool: lock_is_held_type()+0x35: call to arch_local_irq_save() leaves .noinstr.text section
    vmlinux.o: warning: objtool: check_preemption_disabled()+0x31: call to arch_local_save_flags() leaves .noinstr.text section
    vmlinux.o: warning: objtool: check_preemption_disabled()+0x33: call to arch_irqs_disabled_flags() leaves .noinstr.text section
    vmlinux.o: warning: objtool: lock_is_held_type()+0x2f: call to native_irq_disable() leaves .noinstr.text section

    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    ---
    arch/x86/include/asm/irqflags.h | 20 ++++++++++----------
    1 file changed, 10 insertions(+), 10 deletions(-)

    --- a/arch/x86/include/asm/irqflags.h
    +++ b/arch/x86/include/asm/irqflags.h
    @@ -17,7 +17,7 @@

    /* Declaration required for gcc < 4.9 to prevent -Werror=missing-prototypes */
    extern inline unsigned long native_save_fl(void);
    -extern inline unsigned long native_save_fl(void)
    +extern __always_inline unsigned long native_save_fl(void)
    {
    unsigned long flags;

    @@ -44,12 +44,12 @@ extern inline void native_restore_fl(uns
    :"memory", "cc");
    }

    -static inline void native_irq_disable(void)
    +static __always_inline void native_irq_disable(void)
    {
    asm volatile("cli": : :"memory");
    }

    -static inline void native_irq_enable(void)
    +static __always_inline void native_irq_enable(void)
    {
    asm volatile("sti": : :"memory");
    }
    @@ -74,22 +74,22 @@ static inline __cpuidle void native_halt
    #ifndef __ASSEMBLY__
    #include <linux/types.h>

    -static inline notrace unsigned long arch_local_save_flags(void)
    +static __always_inline unsigned long arch_local_save_flags(void)
    {
    return native_save_fl();
    }

    -static inline notrace void arch_local_irq_restore(unsigned long flags)
    +static __always_inline void arch_local_irq_restore(unsigned long flags)
    {
    native_restore_fl(flags);
    }

    -static inline notrace void arch_local_irq_disable(void)
    +static __always_inline void arch_local_irq_disable(void)
    {
    native_irq_disable();
    }

    -static inline notrace void arch_local_irq_enable(void)
    +static __always_inline void arch_local_irq_enable(void)
    {
    native_irq_enable();
    }
    @@ -115,7 +115,7 @@ static inline __cpuidle void halt(void)
    /*
    * For spinlocks, etc:
    */
    -static inline notrace unsigned long arch_local_irq_save(void)
    +static __always_inline unsigned long arch_local_irq_save(void)
    {
    unsigned long flags = arch_local_save_flags();
    arch_local_irq_disable();
    @@ -159,12 +159,12 @@ static inline notrace unsigned long arch
    #endif /* CONFIG_PARAVIRT_XXL */

    #ifndef __ASSEMBLY__
    -static inline int arch_irqs_disabled_flags(unsigned long flags)
    +static __always_inline int arch_irqs_disabled_flags(unsigned long flags)
    {
    return !(flags & X86_EFLAGS_IF);
    }

    -static inline int arch_irqs_disabled(void)
    +static __always_inline int arch_irqs_disabled(void)
    {
    unsigned long flags = arch_local_save_flags();


    \
     
     \ /
      Last update: 2020-06-03 13:56    [W:3.261 / U:0.612 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site