On Fri, Nov 22, 2024 at 01:27:03PM +0100, Peter Zijlstra wrote: > On Thu, Oct 03, 2024 at 04:29:38PM -0700, Nathan Chancellor wrote: > > > $ /usr/bin/time -v make -skj"$(nproc)" ARCH=x86_64 LLVM=1 mrproper > > {def,amd_mem_encrypt.,fortify_source.,llvm_cov.}config bzImage > > ... > > vmlinux.o: warning: objtool: __sev_es_nmi_complete+0x6e: call to > > kasan_check_write() leaves .noinstr.text section > > vmlinux.o: warning: objtool: do_syscall_64+0x141: call to > > lockdep_hardirqs_off() leaves .noinstr.text section > > vmlinux.o: warning: objtool: do_int80_emulation+0x138: call to > > lockdep_hardirqs_off() leaves .noinstr.text section > > vmlinux.o: warning: objtool: handle_bug+0x5: call to > > kmsan_unpoison_entry_regs() leaves .noinstr.text section > > vmlinux.o: warning: objtool: syscall_enter_from_user_mode_prepare+0x105: > > call to lockdep_hardirqs_off() leaves .noinstr.text section > > vmlinux.o: warning: objtool: syscall_exit_to_user_mode+0x73: call to > > user_enter_irqoff() leaves .noinstr.text section > > vmlinux.o: warning: objtool: irqentry_enter_from_user_mode+0x105: call to > > lockdep_hardirqs_off() leaves .noinstr.text section > > vmlinux.o: warning: objtool: irqentry_exit_to_user_mode+0x62: call to > > user_enter_irqoff() leaves .noinstr.text section > > vmlinux.o: warning: objtool: irqentry_enter+0x45: call to > > lockdep_hardirqs_off() leaves .noinstr.text section > > vmlinux.o: warning: objtool: irqentry_exit+0x4a: call to > > lockdep_hardirqs_on() leaves .noinstr.text section > > vmlinux.o: warning: objtool: irqentry_nmi_enter+0x4: call to lockdep_off() > > leaves .noinstr.text section > > vmlinux.o: warning: objtool: irqentry_nmi_exit+0x67: call to lockdep_on() > > leaves .noinstr.text section > > vmlinux.o: warning: objtool: enter_s2idle_proper+0xb5: call to > > lockdep_hardirqs_off() leaves .noinstr.text section > > vmlinux.o: warning: objtool: cpuidle_enter_state+0x113: call to > > lockdep_hardirqs_off() leaves .noinstr.text section > > vmlinux.o: warning: objtool: default_idle_call+0xad: call to > > lockdep_hardirqs_on() leaves .noinstr.text section > > vmlinux.o: warning: objtool: cpu_idle_poll+0x29: call to > > lockdep_hardirqs_on() leaves .noinstr.text section > > vmlinux.o: warning: objtool: acpi_idle_enter_bm+0x118: call to > > lockdep_hardirqs_on() leaves .noinstr.text section > > vmlinux.o: warning: objtool: acpi_idle_do_entry+0x4: call to > > perf_lopwr_cb() leaves .noinstr.text section > > Just saw this fly by, that looks like something is buggered bad. Notably > lockdep_hardirqs_{on,off}() are noinstr. > > Is this patch-set causing this, or what?
These warnings are not present without CONFIG_LLVM_COV_PROFILE_ALL, so it certainly seems related to this patchset. In this configuration, CONFIG_KASAN and CONFIG_LOCKDEP are disabled, so these functions are simple 'static inline' functions. An immediate theory is that because this instrumentation is applied by the frontend, these functions will not actually be empty or simple, which may affect the ability to inline them and eliminate the instrumentation by the __no_profile from noinstr? It definitely seems like this should probably be investigated... Cheers, Nathan