1. 31 Aug, 2022 16 commits
    • Paul E. McKenney's avatar
      rcu: Make synchronize_rcu() fast path update ->gp_seq counters · 910e1209
      Paul E. McKenney authored
      This commit causes the early boot single-CPU synchronize_rcu() fastpath to
      update the rcu_state and rcu_node structures' ->gp_seq and ->gp_seq_needed
      counters.  This will allow the full-state polled grace-period APIs to
      detect all normal grace periods without the need to track the special
      combined polling-only counter, which is a step towards removing the
      ->rgos_polled field from the rcu_gp_oldstate, thereby reducing its size
      by one third.
      Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
      910e1209
    • Paul E. McKenney's avatar
      rcu-tasks: Remove grace-period fast-path rcu-tasks helper · 5f11bad6
      Paul E. McKenney authored
      Now that the grace-period fast path can only happen during the
      pre-scheduler portion of early boot, this fast path can no longer block
      run-time RCU Tasks and RCU Tasks Trace grace periods.  This commit
      therefore removes the conditional cond_resched_tasks_rcu_qs() invocation.
      Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
      5f11bad6
    • Paul E. McKenney's avatar
      rcu: Set rcu_data structures' initial ->gpwrap value to true · a5d1b0b6
      Paul E. McKenney authored
      It would be good do reduce the size of the rcu_gp_oldstate structure
      from three unsigned long instances to two, but this requires that the
      boot-time optimized grace periods update the various ->gp_seq fields.
      Updating these fields in the rcu_state structure and in all of the
      rcu_node structures is at least semi-reasonable, but updating them in
      all of the rcu_data structures is a bridge too far.  This means that if
      there are too many early boot-time grace periods, the ->gp_seq field in
      the rcu_data structure cannot be trusted.  This commit therefore sets
      each rcu_data structure's ->gpwrap field to provide the necessary impetus
      for a suitable level of distrust.
      Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
      a5d1b0b6
    • Paul E. McKenney's avatar
      rcu: Disable run-time single-CPU grace-period optimization · 258f887a
      Paul E. McKenney authored
      The run-time single-CPU grace-period optimization applies only to
      kernels built with CONFIG_SMP=y && CONFIG_PREEMPTION=y that are running
      on a single-CPU system.  But a kernel intended for a single-CPU system
      should instead be built with CONFIG_SMP=n, and in any case, single-CPU
      systems running Linux no longer appear to be the common case.  Plus this
      optimization results in the rcu_gp_oldstate structure being half again
      larger than it needs to be.
      
      This commit therefore disables the run-time single-CPU grace-period
      optimization, so that this optimization applies only during the
      pre-scheduler portion of the boot sequence.
      Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
      258f887a
    • Paul E. McKenney's avatar
      rcu: Add full-sized polling for cond_sync_exp_full() · 8df13f01
      Paul E. McKenney authored
      The cond_synchronize_rcu_expedited() API compresses the combined expedited and
      normal grace-period states into a single unsigned long, which conserves
      storage, but can miss grace periods in certain cases involving overlapping
      normal and expedited grace periods.  Missing the occasional grace period
      is usually not a problem, but there are use cases that care about each
      and every grace period.
      
      This commit therefore adds yet another member of the full-state RCU
      grace-period polling API, which is the cond_synchronize_rcu_exp_full()
      function.  This uses up to three times the storage (rcu_gp_oldstate
      structure instead of unsigned long), but is guaranteed not to miss
      grace periods.
      Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
      8df13f01
    • Paul E. McKenney's avatar
      rcu: Add full-sized polling for cond_sync_full() · b6fe4917
      Paul E. McKenney authored
      The cond_synchronize_rcu() API compresses the combined expedited and
      normal grace-period states into a single unsigned long, which conserves
      storage, but can miss grace periods in certain cases involving overlapping
      normal and expedited grace periods.  Missing the occasional grace period
      is usually not a problem, but there are use cases that care about each
      and every grace period.
      
      This commit therefore adds yet another member of the full-state RCU
      grace-period polling API, which is the cond_synchronize_rcu_full()
      function.  This uses up to three times the storage (rcu_gp_oldstate
      structure instead of unsigned long), but is guaranteed not to miss
      grace periods.
      
      [ paulmck: Apply feedback from kernel test robot and Julia Lawall. ]
      Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
      b6fe4917
    • Paul E. McKenney's avatar
      rcu: Remove blank line from poll_state_synchronize_rcu() docbook header · f21e0143
      Paul E. McKenney authored
      This commit removes the blank line preceding the oldstate parameter to
      the docbook header for the poll_state_synchronize_rcu() function and
      marks uses of this parameter later in that header.
      Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
      f21e0143
    • Paul E. McKenney's avatar
      rcu: Add full-sized polling for start_poll_expedited() · 6c502b14
      Paul E. McKenney authored
      The start_poll_synchronize_rcu_expedited() API compresses the combined
      expedited and normal grace-period states into a single unsigned long,
      which conserves storage, but can miss grace periods in certain cases
      involving overlapping normal and expedited grace periods.  Missing the
      occasional grace period is usually not a problem, but there are use
      cases that care about each and every grace period.
      
      This commit therefore adds yet another member of the
      full-state RCU grace-period polling API, which is the
      start_poll_synchronize_rcu_expedited_full() function.  This uses up to
      three times the storage (rcu_gp_oldstate structure instead of unsigned
      long), but is guaranteed not to miss grace periods.
      
      [ paulmck: Apply feedback from kernel test robot and Julia Lawall. ]
      Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
      6c502b14
    • Paul E. McKenney's avatar
      rcu: Add full-sized polling for start_poll() · 76ea3641
      Paul E. McKenney authored
      The start_poll_synchronize_rcu() API compresses the combined expedited and
      normal grace-period states into a single unsigned long, which conserves
      storage, but can miss grace periods in certain cases involving overlapping
      normal and expedited grace periods.  Missing the occasional grace period
      is usually not a problem, but there are use cases that care about each
      and every grace period.
      
      This commit therefore adds the next member of the full-state RCU
      grace-period polling API, namely the start_poll_synchronize_rcu_full()
      function.  This uses up to three times the storage (rcu_gp_oldstate
      structure instead of unsigned long), but is guaranteed not to miss
      grace periods.
      Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
      76ea3641
    • Paul E. McKenney's avatar
      rcutorture: Verify long-running reader prevents full polling from completing · f4754ad2
      Paul E. McKenney authored
      This commit adds full-state polling checks to accompany the old-style
      polling checks in the rcu_torture_one_read() function.  If a polling
      cycle within an RCU reader completes, a WARN_ONCE() is triggered.
      Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
      f4754ad2
    • Paul E. McKenney's avatar
      rcutorture: Remove redundant RTWS_DEF_FREE check · 37d6ade3
      Paul E. McKenney authored
      This check does nothing because the state at this point in the code
      because the rcu_torture_writer_state value is guaranteed to instead
      be RTWS_REPLACE.  This commit therefore removes this check.
      Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
      37d6ade3
    • Paul E. McKenney's avatar
      rcutorture: Verify RCU reader prevents full polling from completing · d594231a
      Paul E. McKenney authored
      This commit adds a test to rcu_torture_writer() that verifies that a
      ->get_gp_state_full() and ->poll_gp_state_full() polled grace-period
      sequence does not claim that a grace period elapsed within the confines
      of the corresponding read-side critical section.
      Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
      d594231a
    • Paul E. McKenney's avatar
      rcutorture: Allow per-RCU-flavor polled double-GP check · ed7d2f1a
      Paul E. McKenney authored
      Only vanilla RCU needs a double grace period for its compressed
      polled grace-period old-state cookie.  This commit therefore adds an
      rcu_torture_ops per-flavor function ->poll_need_2gp to allow this check
      to be adapted to the RCU flavor under test.  A NULL pointer for this
      function says that doubled grace periods are never needed.
      Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
      ed7d2f1a
    • Paul E. McKenney's avatar
      rcutorture: Abstract synchronous and polled API testing · ccb42229
      Paul E. McKenney authored
      This commit abstracts a do_rtws_sync() function that does synchronous
      grace-period testing, but also testing the polled API 25% of the time
      each for the normal and full-state variants of the polled API.
      Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
      ccb42229
    • Paul E. McKenney's avatar
      rcu: Add full-sized polling for get_state() · 3fdefca9
      Paul E. McKenney authored
      The get_state_synchronize_rcu() API compresses the combined expedited and
      normal grace-period states into a single unsigned long, which conserves
      storage, but can miss grace periods in certain cases involving overlapping
      normal and expedited grace periods.  Missing the occasional grace period
      is usually not a problem, but there are use cases that care about each
      and every grace period.
      
      This commit therefore adds the next member of the full-state RCU
      grace-period polling API, namely the get_state_synchronize_rcu_full()
      function.  This uses up to three times the storage (rcu_gp_oldstate
      structure instead of unsigned long), but is guaranteed not to miss
      grace periods.
      Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
      3fdefca9
    • Paul E. McKenney's avatar
      rcu: Add full-sized polling for get_completed*() and poll_state*() · 91a967fd
      Paul E. McKenney authored
      The get_completed_synchronize_rcu() and poll_state_synchronize_rcu()
      APIs compress the combined expedited and normal grace-period states into a
      single unsigned long, which conserves storage, but can miss grace periods
      in certain cases involving overlapping normal and expedited grace periods.
      Missing the occasional grace period is usually not a problem, but there
      are use cases that care about each and every grace period.
      
      This commit therefore adds the first members of the full-state RCU
      grace-period polling API, namely the get_completed_synchronize_rcu_full()
      and poll_state_synchronize_rcu_full() functions.  These use up to three
      times the storage (rcu_gp_oldstate structure instead of unsigned long),
      but which are guaranteed not to miss grace periods, at least in situations
      where the single-CPU grace-period optimization does not apply.
      Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
      91a967fd
  2. 14 Aug, 2022 10 commits
    • Linus Torvalds's avatar
      Linux 6.0-rc1 · 568035b0
      Linus Torvalds authored
      568035b0
    • Yury Norov's avatar
      radix-tree: replace gfp.h inclusion with gfp_types.h · 9f162193
      Yury Norov authored
      Radix tree header includes gfp.h for __GFP_BITS_SHIFT only. Now we
      have gfp_types.h for this.
      
      Fixes powerpc allmodconfig build:
      
         In file included from include/linux/nodemask.h:97,
                          from include/linux/mmzone.h:17,
                          from include/linux/gfp.h:7,
                          from include/linux/radix-tree.h:12,
                          from include/linux/idr.h:15,
                          from include/linux/kernfs.h:12,
                          from include/linux/sysfs.h:16,
                          from include/linux/kobject.h:20,
                          from include/linux/pci.h:35,
                          from arch/powerpc/kernel/prom_init.c:24:
         include/linux/random.h: In function 'add_latent_entropy':
      >> include/linux/random.h:25:46: error: 'latent_entropy' undeclared (first use in this function); did you mean 'add_latent_entropy'?
            25 |         add_device_randomness((const void *)&latent_entropy, sizeof(latent_entropy));
               |                                              ^~~~~~~~~~~~~~
               |                                              add_latent_entropy
         include/linux/random.h:25:46: note: each undeclared identifier is reported only once for each function it appears in
      Reported-by: default avatarkernel test robot <lkp@intel.com>
      CC: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
      CC: Andrew Morton <akpm@linux-foundation.org>
      CC: Jason A. Donenfeld <Jason@zx2c4.com>
      Signed-off-by: default avatarYury Norov <yury.norov@gmail.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      9f162193
    • Linus Torvalds's avatar
      Merge tag 'pull-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs · 74cbb480
      Linus Torvalds authored
      Pull vfs lseek fix from Al Viro:
       "Fix proc_reg_llseek() breakage. Always had been possible if somebody
        left NULL ->proc_lseek, became a practical issue now"
      
      * tag 'pull-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
        take care to handle NULL ->proc_lseek()
      74cbb480
    • Al Viro's avatar
      take care to handle NULL ->proc_lseek() · 3f61631d
      Al Viro authored
      Easily done now, just by clearing FMODE_LSEEK in ->f_mode
      during proc_reg_open() for such entries.
      
      Fixes: 868941b1 "fs: remove no_llseek"
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      3f61631d
    • Linus Torvalds's avatar
      Merge tag 'for-linus-6.0-rc1b-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip · 5d6a0f4d
      Linus Torvalds authored
      Pull more xen updates from Juergen Gross:
      
       - fix the handling of the "persistent grants" feature negotiation
         between Xen blkfront and Xen blkback drivers
      
       - a cleanup of xen.config and adding xen.config to Xen section in
         MAINTAINERS
      
       - support HVMOP_set_evtchn_upcall_vector, which is more compliant to
         "normal" interrupt handling than the global callback used up to now
      
       - further small cleanups
      
      * tag 'for-linus-6.0-rc1b-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip:
        MAINTAINERS: add xen config fragments to XEN HYPERVISOR sections
        xen: remove XEN_SCRUB_PAGES in xen.config
        xen/pciback: Fix comment typo
        xen/xenbus: fix return type in xenbus_file_read()
        xen-blkfront: Apply 'feature_persistent' parameter when connect
        xen-blkback: Apply 'feature_persistent' parameter when connect
        xen-blkback: fix persistent grants negotiation
        x86/xen: Add support for HVMOP_set_evtchn_upcall_vector
      5d6a0f4d
    • Linus Torvalds's avatar
      Merge tag 'perf-tools-fixes-for-v6.0-2022-08-13' of... · 96f86ff0
      Linus Torvalds authored
      Merge tag 'perf-tools-fixes-for-v6.0-2022-08-13' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux
      
      Pull more perf tool updates from Arnaldo Carvalho de Melo:
      
       - 'perf c2c' now supports ARM64, adjust its output to cope with
         differences with what is in x86_64. Now go find false sharing on
         ARM64 (at least Neoverse) as well!
      
       - Refactor the JSON processing, making the output more compact and thus
         reducing the size of the resulting perf binary
      
       - Improvements for 'perf offcpu' profiling, including tracking child
         processes
      
       - Update Intel JSON metrics and events files for broadwellde,
         broadwellx, cascadelakex, haswellx, icelakex, ivytown, jaketown,
         knightslanding, sapphirerapids, skylakex and snowridgex
      
       - Add 'perf stat' JSON output and a 'perf test' entry for it
      
       - Ignore memfd and anonymous mmap events if jitdump present
      
       - Refactor 'perf test' shell tests allowing subdirs
      
       - Fix an error handling path in 'parse_perf_probe_command()'
      
       - Fixes for the guest Intel PT tracing patchkit in the 1st batch of
         this merge window
      
       - Print debuginfod queries if -v option is used, to explain delays in
         processing when debuginfo servers are enabled to fetch DSOs with
         richer symbol tables
      
       - Improve error message for 'perf record -p not_existing_pid'
      
       - Fix openssl and libbpf feature detection
      
       - Add PMU pai_crypto event description for IBM z16 on 'perf list'
      
       - Fix typos and duplicated words on comments in various places
      
      * tag 'perf-tools-fixes-for-v6.0-2022-08-13' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux: (81 commits)
        perf test: Refactor shell tests allowing subdirs
        perf vendor events: Update events for snowridgex
        perf vendor events: Update events and metrics for skylakex
        perf vendor events: Update metrics for sapphirerapids
        perf vendor events: Update events for knightslanding
        perf vendor events: Update metrics for jaketown
        perf vendor events: Update metrics for ivytown
        perf vendor events: Update events and metrics for icelakex
        perf vendor events: Update events and metrics for haswellx
        perf vendor events: Update events and metrics for cascadelakex
        perf vendor events: Update events and metrics for broadwellx
        perf vendor events: Update metrics for broadwellde
        perf jevents: Fold strings optimization
        perf jevents: Compress the pmu_events_table
        perf metrics: Copy entire pmu_event in find metric
        perf pmu-events: Hide the pmu_events
        perf pmu-events: Don't assume pmu_event is an array
        perf pmu-events: Move test events/metrics to JSON
        perf test: Use full metric resolution
        perf pmu-events: Hide pmu_events_map
        ...
      96f86ff0
    • Linus Torvalds's avatar
      Merge tag 'powerpc-6.0-2' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux · d785610f
      Linus Torvalds authored
      Pull powerpc fixes from Michael Ellerman:
      
       - Ensure we never emit lwarx with EH=1 on 32-bit, because some 32-bit
         CPUs trap on it rather than ignoring it as they should.
      
       - Fix ftrace when building with clang, which was broken by some
         refactoring.
      
       - A couple of other minor fixes.
      
      Thanks to Christophe Leroy, Naveen N.  Rao, Nick Desaulniers, Ondrej
      Mosnacek, Pali Rohár, Russell Currey, and Segher Boessenkool.
      
      * tag 'powerpc-6.0-2' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux:
        powerpc/kexec: Fix build failure from uninitialised variable
        powerpc/ppc-opcode: Fix PPC_RAW_TW()
        powerpc64/ftrace: Fix ftrace for clang builds
        powerpc: Make eh value more explicit when using lwarx
        powerpc: Don't hide eh field of lwarx behind a macro
        powerpc: Fix eh field when calling lwarx on PPC32
      d785610f
    • Linus Torvalds's avatar
      Merge tag 'pull-work.misc' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs · aea23e7c
      Linus Torvalds authored
      Pull /proc/mounts fix from Al Viro:
       "Fix for /proc/mounts escaping - escape the '#' character too"
      
      * tag 'pull-work.misc' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
        vfs: escape hash as well
      aea23e7c
    • Linus Torvalds's avatar
      Merge tag '5.20-rc-smb3-client-fixes-part2' of git://git.samba.org/sfrench/cifs-2.6 · 332019e2
      Linus Torvalds authored
      Pull more cifs updates from Steve French:
      
       - two fixes for stable, one for a lock length miscalculation, and
         another fixes a lease break timeout bug
      
       - improvement to handle leases, allows the close timeout to be
         configured more safely
      
       - five restructuring/cleanup patches
      
      * tag '5.20-rc-smb3-client-fixes-part2' of git://git.samba.org/sfrench/cifs-2.6:
        cifs: Do not access tcon->cfids->cfid directly from is_path_accessible
        cifs: Add constructor/destructors for tcon->cfid
        SMB3: fix lease break timeout when multiple deferred close handles for the same file.
        smb3: allow deferred close timeout to be configurable
        cifs: Do not use tcon->cfid directly, use the cfid we get from open_cached_dir
        cifs: Move cached-dir functions into a separate file
        cifs: Remove {cifs,nfs}_fscache_release_page()
        cifs: fix lock length calculation
      332019e2
    • David Howells's avatar
      afs: Enable multipage folio support · 8549a263
      David Howells authored
      Enable multipage folio support for the afs filesystem.
      
      Support has already been implemented in netfslib, fscache and cachefiles
      and in most of afs, but I've waited for Matthew Wilcox's latest folio
      changes.
      
      Note that it does require a change to afs_write_begin() to return the
      correct subpage.  This is a "temporary" change as we're working on
      getting rid of the need for ->write_begin() and ->write_end()
      completely, at least as far as network filesystems are concerned - but
      it doesn't prevent afs from making use of the capability.
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      Acked-by: default avatarMatthew Wilcox (Oracle) <willy@infradead.org>
      Tested-by: kafs-testing@auristor.com
      Cc: Marc Dionne <marc.dionne@auristor.com>
      Cc: linux-afs@lists.infradead.org
      Link: https://lore.kernel.org/lkml/2274528.1645833226@warthog.procyon.org.uk/Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      8549a263
  3. 13 Aug, 2022 14 commits