From: kernel test robot <lkp@intel.com>
To: "Paul E. McKenney" <paulmck@kernel.org>
Cc: llvm@lists.linux.dev, oe-kbuild-all@lists.linux.dev,
linux-kernel@vger.kernel.org
Subject: [paulmck-rcu:for-neeraj.2024.07.10a 30/42] kernel/rcu/tree_stall.h:798:49: error: call to undeclared function 'csd_lock_is_stuck'; ISO C99 and later do not support implicit function declarations
Date: Thu, 11 Jul 2024 09:16:39 +0800 [thread overview]
Message-ID: <202407110950.SoSbeyIm-lkp@intel.com> (raw)
tree: https://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git for-neeraj.2024.07.10a
head: 6dfea2d3ac9e0874587c0c1d05fd829f520d5458
commit: 3e7a44e2495502599af4ac67d39b9fbbd8217557 [30/42] rcu: Summarize RCU CPU stall warnings during CSD-lock stalls
config: s390-allnoconfig (https://download.01.org/0day-ci/archive/20240711/202407110950.SoSbeyIm-lkp@intel.com/config)
compiler: clang version 19.0.0git (https://github.com/llvm/llvm-project a0c6b8aef853eedaa0980f07c0a502a5a8a9740e)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240711/202407110950.SoSbeyIm-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/202407110950.SoSbeyIm-lkp@intel.com/
All errors (new ones prefixed by >>):
In file included from kernel/rcu/tree.c:40:
In file included from include/linux/cpu.h:17:
In file included from include/linux/node.h:18:
In file included from include/linux/device.h:32:
In file included from include/linux/device/driver.h:21:
In file included from include/linux/module.h:19:
In file included from include/linux/elf.h:6:
In file included from arch/s390/include/asm/elf.h:173:
In file included from arch/s390/include/asm/mmu_context.h:11:
In file included from arch/s390/include/asm/pgalloc.h:18:
In file included from include/linux/mm.h:2253:
include/linux/vmstat.h:514:36: warning: arithmetic between different enumeration types ('enum node_stat_item' and 'enum lru_list') [-Wenum-enum-conversion]
514 | return node_stat_name(NR_LRU_BASE + lru) + 3; // skip "nr_"
| ~~~~~~~~~~~ ^ ~~~
In file included from kernel/rcu/tree.c:53:
In file included from include/linux/tick.h:8:
In file included from include/linux/clockchips.h:14:
In file included from include/linux/clocksource.h:22:
In file included from arch/s390/include/asm/io.h:93:
include/asm-generic/io.h:548:31: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
548 | val = __raw_readb(PCI_IOBASE + addr);
| ~~~~~~~~~~ ^
include/asm-generic/io.h:561:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
561 | val = __le16_to_cpu((__le16 __force)__raw_readw(PCI_IOBASE + addr));
| ~~~~~~~~~~ ^
include/uapi/linux/byteorder/big_endian.h:37:59: note: expanded from macro '__le16_to_cpu'
37 | #define __le16_to_cpu(x) __swab16((__force __u16)(__le16)(x))
| ^
include/uapi/linux/swab.h:102:54: note: expanded from macro '__swab16'
102 | #define __swab16(x) (__u16)__builtin_bswap16((__u16)(x))
| ^
In file included from kernel/rcu/tree.c:53:
In file included from include/linux/tick.h:8:
In file included from include/linux/clockchips.h:14:
In file included from include/linux/clocksource.h:22:
In file included from arch/s390/include/asm/io.h:93:
include/asm-generic/io.h:574:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
574 | val = __le32_to_cpu((__le32 __force)__raw_readl(PCI_IOBASE + addr));
| ~~~~~~~~~~ ^
include/uapi/linux/byteorder/big_endian.h:35:59: note: expanded from macro '__le32_to_cpu'
35 | #define __le32_to_cpu(x) __swab32((__force __u32)(__le32)(x))
| ^
include/uapi/linux/swab.h:115:54: note: expanded from macro '__swab32'
115 | #define __swab32(x) (__u32)__builtin_bswap32((__u32)(x))
| ^
In file included from kernel/rcu/tree.c:53:
In file included from include/linux/tick.h:8:
In file included from include/linux/clockchips.h:14:
In file included from include/linux/clocksource.h:22:
In file included from arch/s390/include/asm/io.h:93:
include/asm-generic/io.h:585:33: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
585 | __raw_writeb(value, PCI_IOBASE + addr);
| ~~~~~~~~~~ ^
include/asm-generic/io.h:595:59: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
595 | __raw_writew((u16 __force)cpu_to_le16(value), PCI_IOBASE + addr);
| ~~~~~~~~~~ ^
include/asm-generic/io.h:605:59: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
605 | __raw_writel((u32 __force)cpu_to_le32(value), PCI_IOBASE + addr);
| ~~~~~~~~~~ ^
include/asm-generic/io.h:693:20: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
693 | readsb(PCI_IOBASE + addr, buffer, count);
| ~~~~~~~~~~ ^
include/asm-generic/io.h:701:20: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
701 | readsw(PCI_IOBASE + addr, buffer, count);
| ~~~~~~~~~~ ^
include/asm-generic/io.h:709:20: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
709 | readsl(PCI_IOBASE + addr, buffer, count);
| ~~~~~~~~~~ ^
include/asm-generic/io.h:718:21: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
718 | writesb(PCI_IOBASE + addr, buffer, count);
| ~~~~~~~~~~ ^
include/asm-generic/io.h:727:21: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
727 | writesw(PCI_IOBASE + addr, buffer, count);
| ~~~~~~~~~~ ^
include/asm-generic/io.h:736:21: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
736 | writesl(PCI_IOBASE + addr, buffer, count);
| ~~~~~~~~~~ ^
In file included from kernel/rcu/tree.c:5638:
>> kernel/rcu/tree_stall.h:798:49: error: call to undeclared function 'csd_lock_is_stuck'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
798 | if (READ_ONCE(csd_lock_suppress_rcu_stall) && csd_lock_is_stuck()) {
| ^
13 warnings and 1 error generated.
vim +/csd_lock_is_stuck +798 kernel/rcu/tree_stall.h
725
726 static void check_cpu_stall(struct rcu_data *rdp)
727 {
728 bool self_detected;
729 unsigned long gs1;
730 unsigned long gs2;
731 unsigned long gps;
732 unsigned long j;
733 unsigned long jn;
734 unsigned long js;
735 struct rcu_node *rnp;
736
737 lockdep_assert_irqs_disabled();
738 if ((rcu_stall_is_suppressed() && !READ_ONCE(rcu_kick_kthreads)) ||
739 !rcu_gp_in_progress())
740 return;
741 rcu_stall_kick_kthreads();
742
743 /*
744 * Check if it was requested (via rcu_cpu_stall_reset()) that the FQS
745 * loop has to set jiffies to ensure a non-stale jiffies value. This
746 * is required to have good jiffies value after coming out of long
747 * breaks of jiffies updates. Not doing so can cause false positives.
748 */
749 if (READ_ONCE(rcu_state.nr_fqs_jiffies_stall) > 0)
750 return;
751
752 j = jiffies;
753
754 /*
755 * Lots of memory barriers to reject false positives.
756 *
757 * The idea is to pick up rcu_state.gp_seq, then
758 * rcu_state.jiffies_stall, then rcu_state.gp_start, and finally
759 * another copy of rcu_state.gp_seq. These values are updated in
760 * the opposite order with memory barriers (or equivalent) during
761 * grace-period initialization and cleanup. Now, a false positive
762 * can occur if we get an new value of rcu_state.gp_start and a old
763 * value of rcu_state.jiffies_stall. But given the memory barriers,
764 * the only way that this can happen is if one grace period ends
765 * and another starts between these two fetches. This is detected
766 * by comparing the second fetch of rcu_state.gp_seq with the
767 * previous fetch from rcu_state.gp_seq.
768 *
769 * Given this check, comparisons of jiffies, rcu_state.jiffies_stall,
770 * and rcu_state.gp_start suffice to forestall false positives.
771 */
772 gs1 = READ_ONCE(rcu_state.gp_seq);
773 smp_rmb(); /* Pick up ->gp_seq first... */
774 js = READ_ONCE(rcu_state.jiffies_stall);
775 smp_rmb(); /* ...then ->jiffies_stall before the rest... */
776 gps = READ_ONCE(rcu_state.gp_start);
777 smp_rmb(); /* ...and finally ->gp_start before ->gp_seq again. */
778 gs2 = READ_ONCE(rcu_state.gp_seq);
779 if (gs1 != gs2 ||
780 ULONG_CMP_LT(j, js) ||
781 ULONG_CMP_GE(gps, js))
782 return; /* No stall or GP completed since entering function. */
783 rnp = rdp->mynode;
784 jn = jiffies + ULONG_MAX / 2;
785 self_detected = READ_ONCE(rnp->qsmask) & rdp->grpmask;
786 if (rcu_gp_in_progress() &&
787 (self_detected || ULONG_CMP_GE(j, js + RCU_STALL_RAT_DELAY)) &&
788 cmpxchg(&rcu_state.jiffies_stall, js, jn) == js) {
789 /*
790 * If a virtual machine is stopped by the host it can look to
791 * the watchdog like an RCU stall. Check to see if the host
792 * stopped the vm.
793 */
794 if (kvm_check_and_clear_guest_paused())
795 return;
796
797 rcu_stall_notifier_call_chain(RCU_STALL_NOTIFY_NORM, (void *)j - gps);
> 798 if (READ_ONCE(csd_lock_suppress_rcu_stall) && csd_lock_is_stuck()) {
799 pr_err("INFO: %s detected stall, but suppressed full report due to a stuck CSD-lock.\n", rcu_state.name);
800 } else if (self_detected) {
801 /* We haven't checked in, so go dump stack. */
802 print_cpu_stall(gps);
803 } else {
804 /* They had a few time units to dump stack, so complain. */
805 print_other_cpu_stall(gs2, gps);
806 }
807
808 if (READ_ONCE(rcu_cpu_stall_ftrace_dump))
809 rcu_ftrace_dump(DUMP_ALL);
810
811 if (READ_ONCE(rcu_state.jiffies_stall) == jn) {
812 jn = jiffies + 3 * rcu_jiffies_till_stall_check() + 3;
813 WRITE_ONCE(rcu_state.jiffies_stall, jn);
814 }
815 }
816 }
817
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
reply other threads:[~2024-07-11 1:16 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202407110950.SoSbeyIm-lkp@intel.com \
--to=lkp@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=llvm@lists.linux.dev \
--cc=oe-kbuild-all@lists.linux.dev \
--cc=paulmck@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.