* [boqun:rust-rcu 14/27] rust/helpers/interrupt.c:17:9: warning: static function 'arch_local_save_flags' is used in an inline function with external linkage @ 2026-07-13 4:45 kernel test robot 2026-07-15 19:12 ` Boqun Feng 0 siblings, 1 reply; 5+ messages in thread From: kernel test robot @ 2026-07-13 4:45 UTC (permalink / raw) To: Lyude Paul Cc: llvm, oe-kbuild-all, Boqun Feng, Benno Lossin, Andreas Hindborg, Gary Guo tree: https://git.kernel.org/pub/scm/linux/kernel/git/boqun/linux.git rust-rcu head: dcecd5f6e71e2437c8abe333ee2426fbe63e6398 commit: 27e30521043c39ca18ea3e28f825f9c7bd30b580 [14/27] rust: Introduce interrupt module config: s390-randconfig-002-20260713 (https://download.01.org/0day-ci/archive/20260713/202607131219.euJHPSJ5-lkp@intel.com/config) compiler: clang version 17.0.6 (https://github.com/llvm/llvm-project 6009708b4367171ccdbf4b5905cb6a803753fe18) rustc: rustc 1.96.0 (ac68faa20 2026-05-25) reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260713/202607131219.euJHPSJ5-lkp@intel.com/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp@intel.com> | Closes: https://lore.kernel.org/oe-kbuild-all/202607131219.euJHPSJ5-lkp@intel.com/ All warnings (new ones prefixed by >>): In file included from rust/helpers/helpers.c:68: >> rust/helpers/interrupt.c:17:9: warning: static function 'arch_local_save_flags' is used in an inline function with external linkage [-Wstatic-in-inline] 17 | return irqs_disabled(); | ^ include/linux/irqflags.h:256:3: note: expanded from macro 'irqs_disabled' 256 | raw_local_save_flags(_flags); \ | ^ include/linux/irqflags.h:184:11: note: expanded from macro 'raw_local_save_flags' 184 | flags = arch_local_save_flags(); \ | ^ rust/helpers/interrupt.c:15:1: note: use 'static' to give inline function 'rust_helper_irqs_disabled' internal linkage 15 | __rust_helper bool rust_helper_irqs_disabled(void) | ^ | static rust/helpers/helpers.c:38:23: note: expanded from macro '__rust_helper' 38 | #define __rust_helper __always_inline | ^ include/linux/compiler_attributes.h:55:41: note: expanded from macro '__always_inline' 55 | #define __always_inline inline __attribute__((__always_inline__)) | ^ include/linux/compiler_types.h:235:16: note: expanded from macro 'inline' 235 | #define inline inline __gnu_inline __inline_maybe_unused notrace | ^ arch/s390/include/asm/irqflags.h:46:48: note: 'arch_local_save_flags' declared here 46 | static arch_local_irq_attributes unsigned long arch_local_save_flags(void) | ^ 1 warning generated. -- In file included from rust/helpers/helpers.c:68: >> rust/helpers/interrupt.c:17:9: warning: static function 'arch_local_save_flags' is used in an inline function with external linkage [-Wstatic-in-inline] 17 | return irqs_disabled(); | ^ include/linux/irqflags.h:256:3: note: expanded from macro 'irqs_disabled' 256 | raw_local_save_flags(_flags); \ | ^ include/linux/irqflags.h:184:11: note: expanded from macro 'raw_local_save_flags' 184 | flags = arch_local_save_flags(); \ | ^ rust/helpers/interrupt.c:15:1: note: use 'static' to give inline function 'rust_helper_irqs_disabled' internal linkage 15 | __rust_helper bool rust_helper_irqs_disabled(void) | ^ | static rust/helpers/helpers.c:38:23: note: expanded from macro '__rust_helper' 38 | #define __rust_helper __always_inline | ^ include/linux/compiler_attributes.h:55:41: note: expanded from macro '__always_inline' 55 | #define __always_inline inline __attribute__((__always_inline__)) | ^ include/linux/compiler_types.h:235:16: note: expanded from macro 'inline' 235 | #define inline inline __gnu_inline __inline_maybe_unused notrace | ^ arch/s390/include/asm/irqflags.h:46:48: note: 'arch_local_save_flags' declared here 46 | static arch_local_irq_attributes unsigned long arch_local_save_flags(void) | ^ 1 warning generated. warning: 1 warning emitted vim +/arch_local_save_flags +17 rust/helpers/interrupt.c 14 15 __rust_helper bool rust_helper_irqs_disabled(void) 16 { > 17 return irqs_disabled(); -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [boqun:rust-rcu 14/27] rust/helpers/interrupt.c:17:9: warning: static function 'arch_local_save_flags' is used in an inline function with external linkage 2026-07-13 4:45 [boqun:rust-rcu 14/27] rust/helpers/interrupt.c:17:9: warning: static function 'arch_local_save_flags' is used in an inline function with external linkage kernel test robot @ 2026-07-15 19:12 ` Boqun Feng 2026-07-16 11:42 ` Ilya Leoshkevich 2026-07-16 11:56 ` Heiko Carstens 0 siblings, 2 replies; 5+ messages in thread From: Boqun Feng @ 2026-07-15 19:12 UTC (permalink / raw) To: kernel test robot Cc: Lyude Paul, llvm, oe-kbuild-all, Benno Lossin, Andreas Hindborg, Gary Guo, Ilya Leoshkevich, Heiko Carstens, Vasily Gorbik, Alexander Gordeev, Christian Borntraeger, Sven Schnelle, linux-s390 [Cc s390] On Mon, Jul 13, 2026 at 12:45:07PM +0800, kernel test robot wrote: > tree: https://git.kernel.org/pub/scm/linux/kernel/git/boqun/linux.git rust-rcu > head: dcecd5f6e71e2437c8abe333ee2426fbe63e6398 > commit: 27e30521043c39ca18ea3e28f825f9c7bd30b580 [14/27] rust: Introduce interrupt module > config: s390-randconfig-002-20260713 (https://download.01.org/0day-ci/archive/20260713/202607131219.euJHPSJ5-lkp@intel.com/config) > compiler: clang version 17.0.6 (https://github.com/llvm/llvm-project 6009708b4367171ccdbf4b5905cb6a803753fe18) > rustc: rustc 1.96.0 (ac68faa20 2026-05-25) > reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260713/202607131219.euJHPSJ5-lkp@intel.com/reproduce) > > If you fix the issue in a separate patch/commit (i.e. not just a new version of > the same patch/commit), kindly add following tags > | Reported-by: kernel test robot <lkp@intel.com> > | Closes: https://lore.kernel.org/oe-kbuild-all/202607131219.euJHPSJ5-lkp@intel.com/ > > All warnings (new ones prefixed by >>): > > In file included from rust/helpers/helpers.c:68: > >> rust/helpers/interrupt.c:17:9: warning: static function 'arch_local_save_flags' is used in an inline function with external linkage [-Wstatic-in-inline] > 17 | return irqs_disabled(); > | ^ > include/linux/irqflags.h:256:3: note: expanded from macro 'irqs_disabled' > 256 | raw_local_save_flags(_flags); \ > | ^ > include/linux/irqflags.h:184:11: note: expanded from macro 'raw_local_save_flags' > 184 | flags = arch_local_save_flags(); \ > | ^ > rust/helpers/interrupt.c:15:1: note: use 'static' to give inline function 'rust_helper_irqs_disabled' internal linkage > 15 | __rust_helper bool rust_helper_irqs_disabled(void) > | ^ > | static > rust/helpers/helpers.c:38:23: note: expanded from macro '__rust_helper' > 38 | #define __rust_helper __always_inline > | ^ > include/linux/compiler_attributes.h:55:41: note: expanded from macro '__always_inline' > 55 | #define __always_inline inline __attribute__((__always_inline__)) > | ^ > include/linux/compiler_types.h:235:16: note: expanded from macro 'inline' > 235 | #define inline inline __gnu_inline __inline_maybe_unused notrace > | ^ > arch/s390/include/asm/irqflags.h:46:48: note: 'arch_local_save_flags' declared here > 46 | static arch_local_irq_attributes unsigned long arch_local_save_flags(void) > | ^ > 1 warning generated. > -- > In file included from rust/helpers/helpers.c:68: > >> rust/helpers/interrupt.c:17:9: warning: static function 'arch_local_save_flags' is used in an inline function with external linkage [-Wstatic-in-inline] > 17 | return irqs_disabled(); > | ^ > include/linux/irqflags.h:256:3: note: expanded from macro 'irqs_disabled' > 256 | raw_local_save_flags(_flags); \ > | ^ > include/linux/irqflags.h:184:11: note: expanded from macro 'raw_local_save_flags' > 184 | flags = arch_local_save_flags(); \ > | ^ > rust/helpers/interrupt.c:15:1: note: use 'static' to give inline function 'rust_helper_irqs_disabled' internal linkage > 15 | __rust_helper bool rust_helper_irqs_disabled(void) > | ^ > | static > rust/helpers/helpers.c:38:23: note: expanded from macro '__rust_helper' > 38 | #define __rust_helper __always_inline > | ^ > include/linux/compiler_attributes.h:55:41: note: expanded from macro '__always_inline' > 55 | #define __always_inline inline __attribute__((__always_inline__)) > | ^ > include/linux/compiler_types.h:235:16: note: expanded from macro 'inline' > 235 | #define inline inline __gnu_inline __inline_maybe_unused notrace > | ^ > arch/s390/include/asm/irqflags.h:46:48: note: 'arch_local_save_flags' declared here > 46 | static arch_local_irq_attributes unsigned long arch_local_save_flags(void) > | ^ > 1 warning generated. > warning: 1 warning emitted > This seems not a Rust-only issue to me, basically you got the warning whenever you have an inline function calling irqs_disabled(). I'm a bit curious why 1b301f5f28ba ("s390/irqflags: do not instrument arch_local_irq_*() with KMSAN") wanted to add noinline when KMSAN=y, all you need is noinstr, no? Regards, Boqun > > vim +/arch_local_save_flags +17 rust/helpers/interrupt.c > > 14 > 15 __rust_helper bool rust_helper_irqs_disabled(void) > 16 { > > 17 return irqs_disabled(); > > -- > 0-DAY CI Kernel Test Service > https://github.com/intel/lkp-tests/wiki ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [boqun:rust-rcu 14/27] rust/helpers/interrupt.c:17:9: warning: static function 'arch_local_save_flags' is used in an inline function with external linkage 2026-07-15 19:12 ` Boqun Feng @ 2026-07-16 11:42 ` Ilya Leoshkevich 2026-07-16 11:56 ` Heiko Carstens 1 sibling, 0 replies; 5+ messages in thread From: Ilya Leoshkevich @ 2026-07-16 11:42 UTC (permalink / raw) To: Boqun Feng, kernel test robot Cc: Lyude Paul, llvm, oe-kbuild-all, Benno Lossin, Andreas Hindborg, Gary Guo, Heiko Carstens, Vasily Gorbik, Alexander Gordeev, Christian Borntraeger, Sven Schnelle, linux-s390 On 7/15/26 21:12, Boqun Feng wrote: > [Cc s390] > > On Mon, Jul 13, 2026 at 12:45:07PM +0800, kernel test robot wrote: >> tree: https://git.kernel.org/pub/scm/linux/kernel/git/boqun/linux.git rust-rcu >> head: dcecd5f6e71e2437c8abe333ee2426fbe63e6398 >> commit: 27e30521043c39ca18ea3e28f825f9c7bd30b580 [14/27] rust: Introduce interrupt module >> config: s390-randconfig-002-20260713 (https://download.01.org/0day-ci/archive/20260713/202607131219.euJHPSJ5-lkp@intel.com/config) >> compiler: clang version 17.0.6 (https://github.com/llvm/llvm-project 6009708b4367171ccdbf4b5905cb6a803753fe18) >> rustc: rustc 1.96.0 (ac68faa20 2026-05-25) >> reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260713/202607131219.euJHPSJ5-lkp@intel.com/reproduce) >> >> If you fix the issue in a separate patch/commit (i.e. not just a new version of >> the same patch/commit), kindly add following tags >> | Reported-by: kernel test robot <lkp@intel.com> >> | Closes: https://lore.kernel.org/oe-kbuild-all/202607131219.euJHPSJ5-lkp@intel.com/ >> >> All warnings (new ones prefixed by >>): >> >> In file included from rust/helpers/helpers.c:68: >>>> rust/helpers/interrupt.c:17:9: warning: static function 'arch_local_save_flags' is used in an inline function with external linkage [-Wstatic-in-inline] >> 17 | return irqs_disabled(); >> | ^ >> include/linux/irqflags.h:256:3: note: expanded from macro 'irqs_disabled' >> 256 | raw_local_save_flags(_flags); \ >> | ^ >> include/linux/irqflags.h:184:11: note: expanded from macro 'raw_local_save_flags' >> 184 | flags = arch_local_save_flags(); \ >> | ^ >> rust/helpers/interrupt.c:15:1: note: use 'static' to give inline function 'rust_helper_irqs_disabled' internal linkage >> 15 | __rust_helper bool rust_helper_irqs_disabled(void) >> | ^ >> | static >> rust/helpers/helpers.c:38:23: note: expanded from macro '__rust_helper' >> 38 | #define __rust_helper __always_inline >> | ^ >> include/linux/compiler_attributes.h:55:41: note: expanded from macro '__always_inline' >> 55 | #define __always_inline inline __attribute__((__always_inline__)) >> | ^ >> include/linux/compiler_types.h:235:16: note: expanded from macro 'inline' >> 235 | #define inline inline __gnu_inline __inline_maybe_unused notrace >> | ^ >> arch/s390/include/asm/irqflags.h:46:48: note: 'arch_local_save_flags' declared here >> 46 | static arch_local_irq_attributes unsigned long arch_local_save_flags(void) >> | ^ >> 1 warning generated. >> -- >> In file included from rust/helpers/helpers.c:68: >>>> rust/helpers/interrupt.c:17:9: warning: static function 'arch_local_save_flags' is used in an inline function with external linkage [-Wstatic-in-inline] >> 17 | return irqs_disabled(); >> | ^ >> include/linux/irqflags.h:256:3: note: expanded from macro 'irqs_disabled' >> 256 | raw_local_save_flags(_flags); \ >> | ^ >> include/linux/irqflags.h:184:11: note: expanded from macro 'raw_local_save_flags' >> 184 | flags = arch_local_save_flags(); \ >> | ^ >> rust/helpers/interrupt.c:15:1: note: use 'static' to give inline function 'rust_helper_irqs_disabled' internal linkage >> 15 | __rust_helper bool rust_helper_irqs_disabled(void) >> | ^ >> | static >> rust/helpers/helpers.c:38:23: note: expanded from macro '__rust_helper' >> 38 | #define __rust_helper __always_inline >> | ^ >> include/linux/compiler_attributes.h:55:41: note: expanded from macro '__always_inline' >> 55 | #define __always_inline inline __attribute__((__always_inline__)) >> | ^ >> include/linux/compiler_types.h:235:16: note: expanded from macro 'inline' >> 235 | #define inline inline __gnu_inline __inline_maybe_unused notrace >> | ^ >> arch/s390/include/asm/irqflags.h:46:48: note: 'arch_local_save_flags' declared here >> 46 | static arch_local_irq_attributes unsigned long arch_local_save_flags(void) >> | ^ >> 1 warning generated. >> warning: 1 warning emitted >> > > This seems not a Rust-only issue to me, basically you got the warning > whenever you have an inline function calling irqs_disabled(). I'm a bit > curious why 1b301f5f28ba ("s390/irqflags: do not instrument > arch_local_irq_*() with KMSAN") wanted to add noinline when KMSAN=y, all > you need is noinstr, no? Hi, Unfortunately if a function is inlined, then noinstr is not honored. The reason for using noinstr for these functions is interaction of instrumentation with lockdep, so inlining them into non-noinstr callers breaks KMSAN in a way that is described in the commit message. Best regards, Ilya > > Regards, > Boqun > >> >> vim +/arch_local_save_flags +17 rust/helpers/interrupt.c >> >> 14 >> 15 __rust_helper bool rust_helper_irqs_disabled(void) >> 16 { >> > 17 return irqs_disabled(); >> >> -- >> 0-DAY CI Kernel Test Service >> https://github.com/intel/lkp-tests/wiki ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [boqun:rust-rcu 14/27] rust/helpers/interrupt.c:17:9: warning: static function 'arch_local_save_flags' is used in an inline function with external linkage 2026-07-15 19:12 ` Boqun Feng 2026-07-16 11:42 ` Ilya Leoshkevich @ 2026-07-16 11:56 ` Heiko Carstens 2026-07-16 13:54 ` Ilya Leoshkevich 1 sibling, 1 reply; 5+ messages in thread From: Heiko Carstens @ 2026-07-16 11:56 UTC (permalink / raw) To: Boqun Feng, Ilya Leoshkevich Cc: kernel test robot, Lyude Paul, llvm, oe-kbuild-all, Benno Lossin, Andreas Hindborg, Gary Guo, Vasily Gorbik, Alexander Gordeev, Christian Borntraeger, Sven Schnelle, linux-s390 On Wed, Jul 15, 2026 at 12:12:53PM -0700, Boqun Feng wrote: > [Cc s390] > > In file included from rust/helpers/helpers.c:68: > > >> rust/helpers/interrupt.c:17:9: warning: static function 'arch_local_save_flags' is used in an inline function with external linkage [-Wstatic-in-inline] > > 17 | return irqs_disabled(); > > | ^ > > include/linux/irqflags.h:256:3: note: expanded from macro 'irqs_disabled' > > 256 | raw_local_save_flags(_flags); \ > > | ^ > > include/linux/irqflags.h:184:11: note: expanded from macro 'raw_local_save_flags' > > 184 | flags = arch_local_save_flags(); \ > > | ^ > > rust/helpers/interrupt.c:15:1: note: use 'static' to give inline function 'rust_helper_irqs_disabled' internal linkage > > 15 | __rust_helper bool rust_helper_irqs_disabled(void) > > | ^ > > | static > > rust/helpers/helpers.c:38:23: note: expanded from macro '__rust_helper' > > 38 | #define __rust_helper __always_inline > > | ^ > > include/linux/compiler_attributes.h:55:41: note: expanded from macro '__always_inline' > > 55 | #define __always_inline inline __attribute__((__always_inline__)) > > | ^ > > include/linux/compiler_types.h:235:16: note: expanded from macro 'inline' > > 235 | #define inline inline __gnu_inline __inline_maybe_unused notrace > > | ^ > > arch/s390/include/asm/irqflags.h:46:48: note: 'arch_local_save_flags' declared here > > 46 | static arch_local_irq_attributes unsigned long arch_local_save_flags(void) > > | ^ > > 1 warning generated. > > warning: 1 warning emitted > > > > This seems not a Rust-only issue to me, basically you got the warning > whenever you have an inline function calling irqs_disabled(). I'm a bit > curious why 1b301f5f28ba ("s390/irqflags: do not instrument > arch_local_irq_*() with KMSAN") wanted to add noinline when KMSAN=y, all > you need is noinstr, no? While the combination of __always_inline and noinstr _seems_ to work with clang, this looks just wrong to me. I guess we really would need a (single) out-of-line variant of the affected functions in question for KMSAN. Ilya, since that was your commit, does that sound sane? ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [boqun:rust-rcu 14/27] rust/helpers/interrupt.c:17:9: warning: static function 'arch_local_save_flags' is used in an inline function with external linkage 2026-07-16 11:56 ` Heiko Carstens @ 2026-07-16 13:54 ` Ilya Leoshkevich 0 siblings, 0 replies; 5+ messages in thread From: Ilya Leoshkevich @ 2026-07-16 13:54 UTC (permalink / raw) To: Heiko Carstens, Boqun Feng Cc: kernel test robot, Lyude Paul, llvm, oe-kbuild-all, Benno Lossin, Andreas Hindborg, Gary Guo, Vasily Gorbik, Alexander Gordeev, Christian Borntraeger, Sven Schnelle, linux-s390 On 7/16/26 13:56, Heiko Carstens wrote: > On Wed, Jul 15, 2026 at 12:12:53PM -0700, Boqun Feng wrote: >> [Cc s390] >>> In file included from rust/helpers/helpers.c:68: >>>>> rust/helpers/interrupt.c:17:9: warning: static function 'arch_local_save_flags' is used in an inline function with external linkage [-Wstatic-in-inline] >>> 17 | return irqs_disabled(); >>> | ^ >>> include/linux/irqflags.h:256:3: note: expanded from macro 'irqs_disabled' >>> 256 | raw_local_save_flags(_flags); \ >>> | ^ >>> include/linux/irqflags.h:184:11: note: expanded from macro 'raw_local_save_flags' >>> 184 | flags = arch_local_save_flags(); \ >>> | ^ >>> rust/helpers/interrupt.c:15:1: note: use 'static' to give inline function 'rust_helper_irqs_disabled' internal linkage >>> 15 | __rust_helper bool rust_helper_irqs_disabled(void) >>> | ^ >>> | static >>> rust/helpers/helpers.c:38:23: note: expanded from macro '__rust_helper' >>> 38 | #define __rust_helper __always_inline >>> | ^ >>> include/linux/compiler_attributes.h:55:41: note: expanded from macro '__always_inline' >>> 55 | #define __always_inline inline __attribute__((__always_inline__)) >>> | ^ >>> include/linux/compiler_types.h:235:16: note: expanded from macro 'inline' >>> 235 | #define inline inline __gnu_inline __inline_maybe_unused notrace >>> | ^ >>> arch/s390/include/asm/irqflags.h:46:48: note: 'arch_local_save_flags' declared here >>> 46 | static arch_local_irq_attributes unsigned long arch_local_save_flags(void) >>> | ^ >>> 1 warning generated. >>> warning: 1 warning emitted >>> >> >> This seems not a Rust-only issue to me, basically you got the warning >> whenever you have an inline function calling irqs_disabled(). I'm a bit >> curious why 1b301f5f28ba ("s390/irqflags: do not instrument >> arch_local_irq_*() with KMSAN") wanted to add noinline when KMSAN=y, all >> you need is noinstr, no? > > While the combination of __always_inline and noinstr _seems_ to work > with clang, this looks just wrong to me. I guess we really would need > a (single) out-of-line variant of the affected functions in question > for KMSAN. > > Ilya, since that was your commit, does that sound sane? Hi, sure, making them out-of-line would make life easier. I will look into it. ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2026-07-16 13:54 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-07-13 4:45 [boqun:rust-rcu 14/27] rust/helpers/interrupt.c:17:9: warning: static function 'arch_local_save_flags' is used in an inline function with external linkage kernel test robot 2026-07-15 19:12 ` Boqun Feng 2026-07-16 11:42 ` Ilya Leoshkevich 2026-07-16 11:56 ` Heiko Carstens 2026-07-16 13:54 ` Ilya Leoshkevich
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.