Merge tag 'core-rcu-2021-02-17' of git://git.kernel.org/pub/scm/linux/kernel/git...
authorLinus Torvalds <torvalds@linux-foundation.org>
Sun, 21 Feb 2021 20:04:41 +0000 (12:04 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sun, 21 Feb 2021 20:04:41 +0000 (12:04 -0800)
Pull RCU updates from Ingo Molnar:
 "These are the latest RCU updates for v5.12:

   - Documentation updates.

   - Miscellaneous fixes.

   - kfree_rcu() updates: Addition of mem_dump_obj() to provide
     allocator return addresses to more easily locate bugs. This has a
     couple of RCU-related commits, but is mostly MM. Was pulled in with
     akpm's agreement.

   - Per-callback-batch tracking of numbers of callbacks, which enables
     better debugging information and smarter reactions to large numbers
     of callbacks.

   - The first round of changes to allow CPUs to be runtime switched
     from and to callback-offloaded state.

   - CONFIG_PREEMPT_RT-related changes.

   - RCU CPU stall warning updates.

   - Addition of polling grace-period APIs for SRCU.

   - Torture-test and torture-test scripting updates, including a
     "torture everything" script that runs rcutorture, locktorture,
     scftorture, rcuscale, and refscale. Plus does an allmodconfig
     build.

   - nolibc fixes for the torture tests"

* tag 'core-rcu-2021-02-17' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (130 commits)
  percpu_ref: Dump mem_dump_obj() info upon reference-count underflow
  rcu: Make call_rcu() print mem_dump_obj() info for double-freed callback
  mm: Make mem_obj_dump() vmalloc() dumps include start and length
  mm: Make mem_dump_obj() handle vmalloc() memory
  mm: Make mem_dump_obj() handle NULL and zero-sized pointers
  mm: Add mem_dump_obj() to print source of memory block
  tools/rcutorture: Fix position of -lgcc in mkinitrd.sh
  tools/nolibc: Fix position of -lgcc in the documented example
  tools/nolibc: Emit detailed error for missing alternate syscall number definitions
  tools/nolibc: Remove incorrect definitions of __ARCH_WANT_*
  tools/nolibc: Get timeval, timespec and timezone from linux/time.h
  tools/nolibc: Implement poll() based on ppoll()
  tools/nolibc: Implement fork() based on clone()
  tools/nolibc: Make getpgrp() fall back to getpgid(0)
  tools/nolibc: Make dup2() rely on dup3() when available
  tools/nolibc: Add the definition for dup()
  rcutorture: Add rcutree.use_softirq=0 to RUDE01 and TASKS01
  torture: Maintain torture-specific set of CPUs-online books
  torture: Clean up after torture-test CPU hotplugging
  rcutorture: Make object_debug also double call_rcu() heap object
  ...

1  2 
Documentation/admin-guide/kernel-parameters.txt
include/linux/mm.h

                        For example, to override I2C bus2:
                        omap_mux=i2c2_scl.i2c2_scl=0x100,i2c2_sda.i2c2_sda=0x100
  
 -      oprofile.timer= [HW]
 -                      Use timer interrupt instead of performance counters
 -
 -      oprofile.cpu_type=      Force an oprofile cpu type
 -                      This might be useful if you have an older oprofile
 -                      userland or if you want common events.
 -                      Format: { arch_perfmon }
 -                      arch_perfmon: [X86] Force use of architectural
 -                              perfmon on Intel CPUs instead of the
 -                              CPU specific event set.
 -                      timer: [X86] Force use of architectural NMI
 -                              timer mode (see also oprofile.timer
 -                              for generic hr timer mode)
 -
        oops=panic      Always panic on oopses. Default is to just kill the
                        process, but there is a small probability of
                        deadlocking the machine.
                        value, meaning that RCU_SOFTIRQ is used by default.
                        Specify rcutree.use_softirq=0 to use rcuc kthreads.
  
+                       But note that CONFIG_PREEMPT_RT=y kernels disable
+                       this kernel boot parameter, forcibly setting it
+                       to zero.
        rcutree.rcu_fanout_exact= [KNL]
                        Disable autobalancing of the rcu_node combining
                        tree.  This is used by rcutorture, and might
                        Set wakeup interval for idle CPUs that have
                        RCU callbacks (RCU_FAST_NO_HZ=y).
  
-       rcutree.rcu_idle_lazy_gp_delay= [KNL]
-                       Set wakeup interval for idle CPUs that have
-                       only "lazy" RCU callbacks (RCU_FAST_NO_HZ=y).
-                       Lazy RCU callbacks are those which RCU can
-                       prove do nothing more than free memory.
        rcutree.rcu_kick_kthreads= [KNL]
                        Cause the grace-period kthread to get an extra
                        wake_up() if it sleeps three times longer than
                        stress RCU, they don't participate in the actual
                        test, hence the "fake".
  
+       rcutorture.nocbs_nthreads= [KNL]
+                       Set number of RCU callback-offload togglers.
+                       Zero (the default) disables toggling.
+       rcutorture.nocbs_toggle= [KNL]
+                       Set the delay in milliseconds between successive
+                       callback-offload toggling attempts.
        rcutorture.nreaders= [KNL]
                        Set number of RCU readers.  The value -1 selects
                        N-1, where N is the number of CPUs.  A value
                        only normal grace-period primitives.  No effect
                        on CONFIG_TINY_RCU kernels.
  
+                       But note that CONFIG_PREEMPT_RT=y kernels enables
+                       this kernel boot parameter, forcibly setting
+                       it to the value one, that is, converting any
+                       post-boot attempt at an expedited RCU grace
+                       period to instead use normal non-expedited
+                       grace-period processing.
        rcupdate.rcu_task_ipi_delay= [KNL]
                        Set time in jiffies during which RCU tasks will
                        avoid sending IPIs, starting with the beginning
        refscale.verbose= [KNL]
                        Enable additional printk() statements.
  
+       refscale.verbose_batched= [KNL]
+                       Batch the additional printk() statements.  If zero
+                       (the default) or negative, print everything.  Otherwise,
+                       print every Nth verbose statement, where N is the value
+                       specified.
        relax_domain_level=
                        [KNL, SMP] Set scheduler's default relax_domain_level.
                        See Documentation/admin-guide/cgroup-v1/cpusets.rst.
                        are running concurrently, especially on systems
                        with rotating-rust storage.
  
+       torture.verbose_sleep_frequency= [KNL]
+                       Specifies how many verbose printk()s should be
+                       emitted between each sleep.  The default of zero
+                       disables verbose-printk() sleeping.
+       torture.verbose_sleep_duration= [KNL]
+                       Duration of each verbose-printk() sleep in jiffies.
        tp720=          [HW,PS2]
  
        tpm_suspend_pcr=[HW,TPM]
diff --combined include/linux/mm.h
@@@ -1584,7 -1584,7 +1584,7 @@@ struct address_space *page_mapping_file
   * ALLOC_NO_WATERMARKS and the low watermark was not
   * met implying that the system is under some pressure.
   */
 -static inline bool page_is_pfmemalloc(struct page *page)
 +static inline bool page_is_pfmemalloc(const struct page *page)
  {
        /*
         * Page index cannot be this large so this must be
@@@ -3177,5 -3177,7 +3177,7 @@@ unsigned long wp_shared_mapping_range(s
  
  extern int sysctl_nr_trim_pages;
  
+ void mem_dump_obj(void *object);
  #endif /* __KERNEL__ */
  #endif /* _LINUX_MM_H */