1. 31 Aug, 2022 16 commits
    • Willy Tarreau's avatar
      selftests/nolibc: "sysroot" target installs a local copy of the sysroot · b25c5284
      Willy Tarreau authored
      It's not convenient to rely on a sysroot built in another directory,
      especially when running cross-compilation tests, where one has to
      switch back and forth between directories.
      
      Let's make it possible to install the sysroot directly in the test
      directory. It's not big and even benefits from being copied by arch
      so that it's easier to switch between archs if needed. The new
      "sysroot" target does this, it just calls "headers_standalone" from
      nolibc to install the sysroot right here.
      Signed-off-by: default avatarWilly Tarreau <w@1wt.eu>
      Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
      b25c5284
    • Willy Tarreau's avatar
      selftests/nolibc: add a "run" target to start the kernel in QEMU · 662ea60e
      Willy Tarreau authored
      The "run" target will build the kernel and start it in QEMU. The
      "rerun" target will not have the kernel dependency and will just try
      to start QEMU. The QEMU architecture used to start the kernel is
      derived from the configured ARCH. This might need to be improved
      for archs which include different variants under the same name
      (mips vs mipsel, +/-64, riscv32 vs riscv64). This could be tested
      for i386, x86, arm, arm64, mips and riscv (the later two reporting
      issues on some tests).
      
      It is possible to pass a test specification for nolibc-test in the TEST
      variable, which will be passed as-is as NOLIBC_TEST.
      
      On success, the number of successful tests is printed. On failure, failed
      lines are individually printed.
      Signed-off-by: default avatarWilly Tarreau <w@1wt.eu>
      Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
      662ea60e
    • Willy Tarreau's avatar
      selftests/nolibc: add a "defconfig" target · 5c43fd79
      Willy Tarreau authored
      While most archs will work fine with "make defconfig", not all will
      do, and it's not always easy to remember the most suitable choice to
      use for a specific architecture.
      
      This adds a "defconfig" target to the Makefile so that one may easily
      run "make -C ... defconfig" and make sure to clean and rebuild a fresh
      config. This is *not* used by default because we want to preserve the
      user's config by default.
      Signed-off-by: default avatarWilly Tarreau <w@1wt.eu>
      Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
      5c43fd79
    • Willy Tarreau's avatar
      selftests/nolibc: add a "kernel" target to build the kernel with the initramfs · d248cabf
      Willy Tarreau authored
      The "kernel" target rebuilds the kernel with the current config for the
      selected arch, with an initramfs containing the nolibc-test utility.
      
      Since image names depend on the architecture, the currently supported
      ones are referenced and resolved based on the architecture.
      Signed-off-by: default avatarWilly Tarreau <w@1wt.eu>
      Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
      d248cabf
    • Willy Tarreau's avatar
      selftests/nolibc: support glibc as well · 1da02f51
      Willy Tarreau authored
      Adding support for glibc can be useful to distinguish between bugs in
      nolibc and bugs in the kernel when a syscall reports an unusual value.
      
      It's not that much work and should not affect the long term
      maintainability of the tests. The necessary changes can essentially be
      summed up like this:
        - set _GNU_SOURCE a the top to access some definitions
        - many includes added when we know we don't come from nolibc (missing
          the stdio include guard)
        - disable gettid() which is not exposed by glibc
        - disable gettimeofday's support of bad pointers since these  crash
          in glibc
        - add a simple itoa() for errorname(); strerror() is too verbose (no
          way to get short messages). strerrorname_np() was added in modern
          glibc (2.32) to do exactly this but that 's too recent to be usable
          as the default fallback.
        - use the standard ioperm() definition. May be we need to implement
          ioperm() in nolibc if that's useful.
      Signed-off-by: default avatarWilly Tarreau <w@1wt.eu>
      Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
      1da02f51
    • Willy Tarreau's avatar
      selftests/nolibc: condition some tests on /proc existence · 7172f1c6
      Willy Tarreau authored
      If /proc is not available (program run inside a chroot or without
      sufficient permissions), it's better to disable the associated tests.
      Some will be preserved like the ones which check for a failure to
      create some entries there since they're still supposed to fail.
      Signed-off-by: default avatarWilly Tarreau <w@1wt.eu>
      Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
      7172f1c6
    • Willy Tarreau's avatar
      selftests/nolibc: recreate and populate /dev and /proc if missing · 1a5454f6
      Willy Tarreau authored
      Most of the time the program will be run alone in an initramfs. There
      is no value in requiring the user to populate /dev and /proc for such
      tests, we can do it ourselves, and it participates to the tests at the
      same time.
      
      What's done here is that when called as init (getpid()==1) we check
      if /dev exists or create it, if /dev/console and /dev/null exists,
      otherwise we try to mount a devtmpfs there, and if it fails we fall
      back to mknod. The console is reopened if stdout was closed. Finally
      /proc is created and mounted if /proc/self cannot be found. This is
      sufficient for most tests.
      Signed-off-by: default avatarWilly Tarreau <w@1wt.eu>
      Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
      1a5454f6
    • Willy Tarreau's avatar
      selftests/nolibc: on x86, support exiting with isa-debug-exit · aa73a86c
      Willy Tarreau authored
      QEMU, when started with "-device isa-debug-exit -no-reboot" will exit
      with status code 2N+1 when N is written to 0x501. This is particularly
      convenient for automated tests but this is not portable. As such we
      only enable this on x86_64 when pid==1. In addition, this requires an
      ioperm() call but in order not to have to define arch-specific syscalls
      we just perform the syscall by hand there.
      Signed-off-by: default avatarWilly Tarreau <w@1wt.eu>
      Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
      aa73a86c
    • Willy Tarreau's avatar
      selftests/nolibc: exit with poweroff on success when getpid() == 1 · f49896d7
      Willy Tarreau authored
      The idea is to ease automated testing under qemu. If the test succeeds
      while running as PID 1, indicating the system was booted with init=/test,
      let's just power off so that qemu can exit with a successful code. In
      other situations it will exit and provoke a panic, which may be caught
      for example with CONFIG_PVPANIC.
      Signed-off-by: default avatarWilly Tarreau <w@1wt.eu>
      Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
      f49896d7
    • Willy Tarreau's avatar
      selftests/nolibc: add a few tests for some libc functions · 95bc9894
      Willy Tarreau authored
      The test series called "stdlib" covers some libc functions (string,
      stdlib etc). By default they are automatically run after "syscall"
      but may be requested in argument or in variable NOLIBC_TEST.
      Signed-off-by: default avatarWilly Tarreau <w@1wt.eu>
      Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
      95bc9894
    • Willy Tarreau's avatar
      selftests/nolibc: implement a few tests for various syscalls · b4844fa0
      Willy Tarreau authored
      This adds 63 tests covering about 34 syscalls. Both successes and
      failures are tested. Two tests fail when run as unprivileged user
      (link_dir which returns EACCESS instead of EPERM, and chroot which
      returns EPERM). One test (execve("/")) expects to fail on EACCESS,
      but needs to have valid arguments otherwise the kernel will log a
      message. And a few tests require /proc to be mounted.
      
      The code is not pretty since all tests are one-liners, sometimes
      resulting in long lines, especially when using compount statements to
      preset a line, but it's convenient and doesn't obfuscate the code,
      which is important to understand what failed.
      Signed-off-by: default avatarWilly Tarreau <w@1wt.eu>
      Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
      b4844fa0
    • Willy Tarreau's avatar
      selftests/nolibc: support a test definition format · 23da7bc9
      Willy Tarreau authored
      It now becomes possible to pass a string either in argv[1] or in the
      NOLIBC_TEST environment variable (the former having precedence), to
      specify which tests to run. The format is:
      
         testname[:range]*[,testname...]
      
      Where a range is either a single value or the min and max numbers of the
      test IDs in a sequence, delimited by a dash. Multiple ranges are possible.
      This should provide enough flexibility to focus on certain failing parts
      just by playing with the boot command line in a boot loader or in qemu
      depending on what is accessible.
      Signed-off-by: default avatarWilly Tarreau <w@1wt.eu>
      Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
      23da7bc9
    • Willy Tarreau's avatar
      selftests/nolibc: add basic infrastructure to ease creation of nolibc tests · 362aecb2
      Willy Tarreau authored
      This creates a "nolibc" selftest that intends to test various parts of
      the nolibc component, both in terms of build and execution for a given
      architecture.
      
      The aim is for it to be as simple to run as a kernel build, by just
      passing the compiler (for the build) and the ARCH (for kernel and
      execution).
      
      It brings a basic squeleton made of a single C file that will ease testing
      and error reporting. The code will be arranged so that it remains easy to
      add basic tests for syscalls or library calls that may rely on a condition
      to be executed, and whose result is compared to a value or to an error
      with a specific errno value.
      
      Tests will just use a relative line number in switch/case statements as
      an index, saving the user from having to maintain arrays and complicated
      functions which can often just be one-liners.
      
      MAINTAINERS was updated.
      Signed-off-by: default avatarWilly Tarreau <w@1wt.eu>
      Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
      362aecb2
    • Willy Tarreau's avatar
      tools/nolibc: make sys_mmap() automatically use the right __NR_mmap definition · 364702f7
      Willy Tarreau authored
      __NR_mmap2 was used for i386 but it's also needed for other archs such
      as RISCV32 or ARM. Let's decide to use it based on the __NR_mmap2
      definition as it's not defined on other archs.
      Signed-off-by: default avatarWilly Tarreau <w@1wt.eu>
      Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
      364702f7
    • Willy Tarreau's avatar
      tools/nolibc: fix build warning in sys_mmap() when my_syscall6 is not defined · 8b53e83b
      Willy Tarreau authored
      We return -ENOSYS when there's no syscall6() operation, but we must cast
      it to void* to avoid a warning.
      Signed-off-by: default avatarWilly Tarreau <w@1wt.eu>
      Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
      8b53e83b
    • Willy Tarreau's avatar
      tools/nolibc: make argc 32-bit in riscv startup code · a30d551f
      Willy Tarreau authored
      The "ld a0, 0(sp)" instruction doesn't build on RISCV32 because that
      would load a 64-bit value into a 32-bit register. But argc 32-bit,
      not 64, so we ought to use "lw" here. Tested on both RISCV32 and
      RISCV64.
      
      Cc: Pranith Kumar <bobby.prani@gmail.com>
      Signed-off-by: default avatarWilly Tarreau <w@1wt.eu>
      Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
      a30d551f
  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