1. 21 Sep, 2022 2 commits
  2. 20 Sep, 2022 6 commits
    • Yury Norov's avatar
      lib/cpumask: add FORCE_NR_CPUS config option · 6f9c07be
      Yury Norov authored
      The size of cpumasks is hard-limited by compile-time parameter NR_CPUS,
      but defined at boot-time when kernel parses ACPI/DT tables, and stored in
      nr_cpu_ids. In many practical cases, number of CPUs for a target is known
      at compile time, and can be provided with NR_CPUS.
      
      In that case, compiler may be instructed to rely on NR_CPUS as on actual
      number of CPUs, not an upper limit. It allows to optimize many cpumask
      routines and significantly shrink size of the kernel image.
      
      This patch adds FORCE_NR_CPUS option to teach the compiler to rely on
      NR_CPUS and enable corresponding optimizations.
      
      If FORCE_NR_CPUS=y, kernel will not set nr_cpu_ids at boot, but only check
      that the actual number of possible CPUs is equal to NR_CPUS, and WARN if
      that doesn't hold.
      
      The new option is especially useful in embedded applications because
      kernel configurations are unique for each SoC, the number of CPUs is
      constant and known well, and memory limitations are typically harder.
      
      For my 4-CPU ARM64 build with NR_CPUS=4, FORCE_NR_CPUS=y saves 46KB:
        add/remove: 3/4 grow/shrink: 46/729 up/down: 652/-46952 (-46300)
      Signed-off-by: default avatarYury Norov <yury.norov@gmail.com>
      6f9c07be
    • Yury Norov's avatar
      powerpc/64: don't refer nr_cpu_ids in asm code when it's undefined · 546a073d
      Yury Norov authored
      generic_secondary_common_init() calls LOAD_REG_ADDR(r7, nr_cpu_ids)
      conditionally on CONFIG_SMP. However, if 'NR_CPUS == 1', kernel doesn't
      use the nr_cpu_ids, and in C code, it's just:
        #if NR_CPUS == 1
        #define nr_cpu_ids
        ...
      
      This series makes declaration of nr_cpu_ids conditional on NR_CPUS == 1,
      and that reveals the issue, because compiler can't link the
      LOAD_REG_ADDR(r7, nr_cpu_ids) against nonexisting symbol.
      
      Current code looks unsafe for those who build kernel with CONFIG_SMP=y and
      NR_CPUS == 1. This is weird configuration, but not disallowed.
      
      Fix the linker error by replacing LOAD_REG_ADDR() with LOAD_REG_IMMEDIATE()
      conditionally on NR_CPUS == 1.
      
      As the following patch adds CONFIG_FORCE_NR_CPUS option that has the
      similar effect on nr_cpu_ids, make the generic_secondary_common_init()
      conditional on it too.
      Reported-by: default avatarStephen Rothwell <sfr@canb.auug.org.au>
      Signed-off-by: default avatarYury Norov <yury.norov@gmail.com>
      546a073d
    • Yury Norov's avatar
      lib/cpumask: deprecate nr_cpumask_bits · aa47a7c2
      Yury Norov authored
      Cpumask code is written in assumption that when CONFIG_CPUMASK_OFFSTACK
      is enabled, all cpumasks have boot-time defined size, otherwise the size
      is always NR_CPUS.
      
      The latter is wrong because the number of possible cpus is always
      calculated on boot, and it may be less than NR_CPUS.
      
      On my 4-cpu arm64 VM the nr_cpu_ids is 4, as expected, and nr_cpumask_bits
      is 256, which corresponds to NR_CPUS. This not only leads to useless
      traversing of cpumask bits greater than 4, this also makes some cpumask
      routines fail.
      
      For example, cpumask_full(0b1111000..000) would erroneously return false
      in the example above because tail bits in the mask are all unset.
      
      This patch deprecates nr_cpumask_bits and wires it to nr_cpu_ids
      unconditionally, so that cpumask routines will not waste time traversing
      unused part of cpu masks. It also fixes cpumask_full() and similar
      routines.
      
      As a side effect, because now a length of cpumasks is defined at run-time
      even if CPUMASK_OFFSTACK is disabled, compiler can't optimize corresponding
      functions.
      
      It increases kernel size by ~2.5KB if OFFSTACK is off. This is addressed in
      the following patch.
      Signed-off-by: default avatarYury Norov <yury.norov@gmail.com>
      aa47a7c2
    • Yury Norov's avatar
      lib/cpumask: delete misleading comment · 7102b3bb
      Yury Norov authored
      The comment says that HOTPLUG config option enables all cpus in
      cpu_possible_mask up to NR_CPUs. This is wrong. Even if HOTPLUG is
      enabled, the mask is populated on boot with respect to ACPI/DT records.
      Signed-off-by: default avatarYury Norov <yury.norov@gmail.com>
      7102b3bb
    • Yury Norov's avatar
      smp: add set_nr_cpu_ids() · 38bef8e5
      Yury Norov authored
      In preparation to support compile-time nr_cpu_ids, add a setter for
      the variable.
      
      This is a no-op for all arches.
      Signed-off-by: default avatarYury Norov <yury.norov@gmail.com>
      38bef8e5
    • Yury Norov's avatar
      smp: don't declare nr_cpu_ids if NR_CPUS == 1 · 53fc190c
      Yury Norov authored
      SMP and NR_CPUS are independent options, hence nr_cpu_ids may be
      declared even if NR_CPUS == 1, which is useless.
      Signed-off-by: default avatarYury Norov <yury.norov@gmail.com>
      53fc190c
  3. 09 Sep, 2022 1 commit
    • Phil Auld's avatar
      drivers/base: Fix unsigned comparison to -1 in CPUMAP_FILE_MAX_BYTES · b9be19ee
      Phil Auld authored
      As PAGE_SIZE is unsigned long, -1 > PAGE_SIZE when NR_CPUS <= 3.
      This leads to very large file sizes:
      
      topology$ ls -l
      total 0
      -r--r--r-- 1 root root 18446744073709551615 Sep  5 11:59 core_cpus
      -r--r--r-- 1 root root                 4096 Sep  5 11:59 core_cpus_list
      -r--r--r-- 1 root root                 4096 Sep  5 10:58 core_id
      -r--r--r-- 1 root root 18446744073709551615 Sep  5 10:10 core_siblings
      -r--r--r-- 1 root root                 4096 Sep  5 11:59 core_siblings_list
      -r--r--r-- 1 root root 18446744073709551615 Sep  5 11:59 die_cpus
      -r--r--r-- 1 root root                 4096 Sep  5 11:59 die_cpus_list
      -r--r--r-- 1 root root                 4096 Sep  5 11:59 die_id
      -r--r--r-- 1 root root 18446744073709551615 Sep  5 11:59 package_cpus
      -r--r--r-- 1 root root                 4096 Sep  5 11:59 package_cpus_list
      -r--r--r-- 1 root root                 4096 Sep  5 10:58 physical_package_id
      -r--r--r-- 1 root root 18446744073709551615 Sep  5 10:10 thread_siblings
      -r--r--r-- 1 root root                 4096 Sep  5 11:59 thread_siblings_list
      
      Adjust the inequality to catch the case when NR_CPUS is configured
      to a small value.
      
      Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
      Cc: "Rafael J. Wysocki" <rafael@kernel.org>
      Cc: Yury Norov <yury.norov@gmail.com>
      Cc: stable@vger.kernel.org
      Cc: feng xiangjun <fengxj325@gmail.com>
      Fixes: 7ee951ac ("drivers/base: fix userspace break from using bin_attributes for cpumap and cpulist")
      Reported-by: default avatarfeng xiangjun <fengxj325@gmail.com>
      Signed-off-by: default avatarPhil Auld <pauld@redhat.com>
      Signed-off-by: default avatarYury Norov <yury.norov@gmail.com>
      b9be19ee
  4. 04 Sep, 2022 5 commits
    • Linus Torvalds's avatar
      Linux 6.0-rc4 · 7e18e42e
      Linus Torvalds authored
      7e18e42e
    • Linus Torvalds's avatar
      Merge tag 'powerpc-6.0-4' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux · 59954972
      Linus Torvalds authored
      Pull powerpc fixes from Michael Ellerman:
      
       - Fix handling of PCI domains in /proc on 32-bit systems using the
         recently added support for numbering buses from zero for each domain.
      
       - A fix and a revert for some changes to use READ/WRITE_ONCE() which
         caused problems with KASAN enabled due to sanitisation calls being
         introduced in low-level paths that can't cope with it.
      
       - Fix build errors on 32-bit caused by the syscall table being
         misaligned sometimes.
      
       - Two fixes to get IBM Cell native machines booting again, which had
         bit-rotted while my QS22 was temporarily out of action.
      
       - Fix the papr_scm driver to not assume the order of events returned by
         the hypervisor is stable, and a related compile fix.
      
      Thanks to Aneesh Kumar K.V, Christophe Leroy, Jordan Niethe, Kajol Jain,
      Masahiro Yamada, Nathan Chancellor, Pali Rohár, Vaibhav Jain, and Zhouyi
      Zhou.
      
      * tag 'powerpc-6.0-4' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux:
        powerpc/papr_scm: Ensure rc is always initialized in papr_scm_pmu_register()
        Revert "powerpc/irq: Don't open code irq_soft_mask helpers"
        powerpc: Fix hard_irq_disable() with sanitizer
        powerpc/rtas: Fix RTAS MSR[HV] handling for Cell
        Revert "powerpc: Remove unused FW_FEATURE_NATIVE references"
        powerpc: align syscall table for ppc32
        powerpc/pci: Enable PCI domains in /proc when PCI bus numbers are not unique
        powerpc/papr_scm: Fix nvdimm event mappings
      59954972
    • Linus Torvalds's avatar
      Merge tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm · 685ed983
      Linus Torvalds authored
      Pull kvm fixes from Paolo Bonzini:
       "s390:
      
         - PCI interpretation compile fixes
      
        RISC-V:
      
         - fix unused variable warnings in vcpu_timer.c
      
         - move extern sbi_ext declarations to a header
      
        x86:
      
         - check validity of argument to KVM_SET_MP_STATE
      
         - use guest's global_ctrl to completely disable guest PEBS
      
         - fix a memory leak on memory allocation failure
      
         - mask off unsupported and unknown bits of IA32_ARCH_CAPABILITIES
      
         - fix build failure with Clang integrated assembler
      
         - fix MSR interception
      
         - always flush TLBs when enabling dirty logging"
      
      * tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm:
        KVM: x86: check validity of argument to KVM_SET_MP_STATE
        perf/x86/core: Completely disable guest PEBS via guest's global_ctrl
        KVM: x86: fix memoryleak in kvm_arch_vcpu_create()
        KVM: x86: Mask off unsupported and unknown bits of IA32_ARCH_CAPABILITIES
        KVM: s390: pci: Hook to access KVM lowlevel from VFIO
        riscv: kvm: move extern sbi_ext declarations to a header
        riscv: kvm: vcpu_timer: fix unused variable warnings
        KVM: selftests: Fix ambiguous mov in KVM_ASM_SAFE()
        KVM: selftests: Fix KVM_EXCEPTION_MAGIC build with Clang
        KVM: VMX: Heed the 'msr' argument in msr_write_intercepted()
        kvm: x86: mmu: Always flush TLBs when enabling dirty logging
        kvm: x86: mmu: Drop the need_remote_flush() function
      685ed983
    • Nick Desaulniers's avatar
      Makefile.extrawarn: re-enable -Wformat for clang; take 2 · b0839b28
      Nick Desaulniers authored
      -Wformat was recently re-enabled for builds with clang, then quickly
      re-disabled, due to concerns stemming from the frequency of default
      argument promotion related warning instances.
      
      commit 258fafcd ("Makefile.extrawarn: re-enable -Wformat for clang")
      commit 21f9c8a1 ("Revert "Makefile.extrawarn: re-enable -Wformat for clang"")
      
      ISO WG14 has ratified N2562 to address default argument promotion
      explicitly for printf, as part of the upcoming ISO C2X standard.
      
      The behavior of clang was changed in clang-16 to not warn for the cited
      cases in all language modes.
      
      Add a version check, so that users of clang-16 now get the full effect
      of -Wformat. For older clang versions, re-enable flags under the
      -Wformat group that way users still get some useful checks related to
      format strings, without noisy default argument promotion warnings. I
      intentionally omitted -Wformat-y2k and -Wformat-security from being
      re-enabled, which are also part of -Wformat in clang-16.
      
      Link: https://github.com/ClangBuiltLinux/linux/issues/378
      Link: https://github.com/llvm/llvm-project/issues/57102
      Link: https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2562.pdfSuggested-by: default avatarJustin Stitt <jstitt007@gmail.com>
      Suggested-by: default avatarNathan Chancellor <nathan@kernel.org>
      Suggested-by: default avatarYoungmin Nam <youngmin.nam@samsung.com>
      Signed-off-by: default avatarNick Desaulniers <ndesaulniers@google.com>
      Reviewed-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      Reviewed-by: default avatarNathan Chancellor <nathan@kernel.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      b0839b28
    • Linus Torvalds's avatar
      Merge tag 'gpio-fixes-for-v6.0-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux · 7726d4c3
      Linus Torvalds authored
      Pull gpio fixes from Bartosz Golaszewski:
       "A a set of fixes from the GPIO subsystem.
      
        Most are small driver fixes except the realtek-otto driver patch which
        is pretty big but addresses a significant flaw that can cause the CPU
        to stay infinitely busy on uncleared ISR on some platforms.
      
        Summary:
         - MAINTAINERS update
         - fix resource leaks in gpio-mockup and gpio-pxa
         - add missing locking in gpio-pca953x
         - use 32-bit I/O in gpio-realtek-otto
         - make irq_chip structures immutable in four more drivers"
      
      * tag 'gpio-fixes-for-v6.0-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux:
        gpio: ws16c48: Make irq_chip immutable
        gpio: 104-idio-16: Make irq_chip immutable
        gpio: 104-idi-48: Make irq_chip immutable
        gpio: 104-dio-48e: Make irq_chip immutable
        gpio: realtek-otto: switch to 32-bit I/O
        gpio: pca953x: Add mutex_lock for regcache sync in PM
        gpio: mockup: remove gpio debugfs when remove device
        gpio: pxa: use devres for the clock struct
        MAINTAINERS: rectify entry for XILINX GPIO DRIVER
      7726d4c3
  5. 03 Sep, 2022 19 commits
  6. 02 Sep, 2022 7 commits
    • Linus Torvalds's avatar
      Merge tag 'block-6.0-2022-09-02' of git://git.kernel.dk/linux-block · d895ec79
      Linus Torvalds authored
      Pull block fixes from Jens Axboe:
      
       - NVMe pull request via Christoph:
           - error handling fix for the new auth code (Hannes Reinecke)
           - fix unhandled tcp states in nvmet_tcp_state_change (Maurizio
             Lombardi)
           - add NVME_QUIRK_BOGUS_NID for Lexar NM610 (Shyamin Ayesh)
      
       - Add documentation for the ublk driver merged in this merge window
         (Ming)
      
      * tag 'block-6.0-2022-09-02' of git://git.kernel.dk/linux-block:
        Documentation: document ublk
        nvmet-tcp: fix unhandled tcp states in nvmet_tcp_state_change()
        nvmet-auth: add missing goto in nvmet_setup_auth()
        nvme-pci: add NVME_QUIRK_BOGUS_NID for Lexar NM610
      d895ec79
    • Linus Torvalds's avatar
      Merge tag 'io_uring-6.0-2022-09-02' of git://git.kernel.dk/linux-block · cec53f4c
      Linus Torvalds authored
      Pull io_uring fixes from Jens Axboe:
      
       - A single fix for over-eager retries for networking (Pavel)
      
       - Revert the notification slot support for zerocopy sends.
      
         It turns out that even after more than a year or development and
         testing, there's not full agreement on whether just using plain
         ordered notifications is Good Enough to avoid the complexity of using
         the notifications slots. Because of that, we decided that it's best
         left to a future final decision.
      
         We can always bring back this feature, but we can't really change it
         or remove it once we've released 6.0 with it enabled. The reverts
         leave the usual CQE notifications as the primary interface for
         knowing when data was sent, and when it was acked. (Pavel)
      
      * tag 'io_uring-6.0-2022-09-02' of git://git.kernel.dk/linux-block:
        selftests/net: return back io_uring zc send tests
        io_uring/net: simplify zerocopy send user API
        io_uring/notif: remove notif registration
        Revert "io_uring: rename IORING_OP_FILES_UPDATE"
        Revert "io_uring: add zc notification flush requests"
        selftests/net: temporarily disable io_uring zc test
        io_uring/net: fix overexcessive retries
      cec53f4c
    • Linus Torvalds's avatar
      Merge tag '6.0-rc3-smb3-client-fixes' of git://git.samba.org/sfrench/cifs-2.6 · 1551f8f2
      Linus Torvalds authored
      Pull cifs fixes from Steve French:
       "Five fixes, all also marked for stable:
      
         - fixes for collapse range and insert range (also fixes xfstest
           generic/031)
      
         - memory leak fix"
      
      * tag '6.0-rc3-smb3-client-fixes' of git://git.samba.org/sfrench/cifs-2.6:
        cifs: fix small mempool leak in SMB2_negotiate()
        smb3: use filemap_write_and_wait_range instead of filemap_write_and_wait
        smb3: fix temporary data corruption in insert range
        smb3: fix temporary data corruption in collapse range
        smb3: Move the flush out of smb2_copychunk_range() into its callers
      1551f8f2
    • Linus Torvalds's avatar
      Merge tag 'landlock-6.0-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/mic/linux · 0c95f022
      Linus Torvalds authored
      Pull landlock fix from Mickaël Salaün:
       "This fixes a mis-handling of the LANDLOCK_ACCESS_FS_REFER right when
        multiple rulesets/domains are stacked.
      
        The expected behaviour was that an additional ruleset can only
        restrict the set of permitted operations, but in this particular case,
        it was potentially possible to re-gain the LANDLOCK_ACCESS_FS_REFER
        right"
      
      * tag 'landlock-6.0-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/mic/linux:
        landlock: Fix file reparenting without explicit LANDLOCK_ACCESS_FS_REFER
      0c95f022
    • Linus Torvalds's avatar
      Merge tag 'mmc-v6.0-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc · b307e704
      Linus Torvalds authored
      Pull MMC fixes from Ulf Hansson:
      
       - Fix workaround for SD UHS-I voltage switch
      
      * tag 'mmc-v6.0-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc:
        mmc: core: Fix inconsistent sd3_bus_mode at UHS-I SD voltage switch failure
        mmc: core: Fix UHS-I SD 1.8V workaround branch
      b307e704
    • Linus Torvalds's avatar
      Merge tag 'drm-fixes-2022-09-02' of git://anongit.freedesktop.org/drm/drm · 1e8e515e
      Linus Torvalds authored
      Pull drm fixes from Dave Airlie:
       "Regular fixes pull. One core dma-buf fix, then two weeks of i915
        fixes, a lot of amdgpu fixes mostly for new IP, and a bunch of msm
        fixes, mostly modesetting ones.
      
        Nothing seems too bad at this point.
      
        dma-buf/dma-resv:
         - Fence-handling fix
      
        i915:
         - GVT fixes including fix for a CommetLake regression in mmio table
           and misc doc and typo fixes
         - Fix CCS handling
         - Fix for guc requests after reset
         - Display DSI related fixes
         - Display backlight related fixes
         - Fix for a null pointer dereference
         - HDMI related quirk for ECS Liva Q2 with GLK graphics
         - Skip wm/ddb readout for disabled pipes
      
        amdgpu:
         - FRU error message fix
         - MES 11 updates
         - DCN 3.2.x fixes
         - DCN 3.1.4 fixes
         - Fix possible use after free in CS IOCTL
         - SMU 13.0.x fixes
         - Fix iolink reporting on devices with direct connections to CPU
         - GFX10 tap delay firmware fixes
      
        msm:
         - Fix for inconsistent indenting in msm_dsi_dphy_timing_calc_v3().
         - Fix to make eDP the first connector in the connected list.
         - Fix to populate intf_cfg correctly before calling reset_intf_cfg().
         - Specify the correct number of DSI regulators for SDM660.
         - Specify the correct number of DSI regulators for MSM8996.
         - Fix for removing DP_RECOVERED_CLOCK_OUT_EN bit for tps4 link training
         - Fix probe-deferral crash in gpu devfreq
         - Fix gpu debugfs deadlock"
      
      * tag 'drm-fixes-2022-09-02' of git://anongit.freedesktop.org/drm/drm: (51 commits)
        drm/amd/amdgpu: skip ucode loading if ucode_size == 0
        drm/amdgpu: only init tap_delay ucode when it's included in ucode binary
        drm/amd/display: Fix black flash when switching from ODM2to1 to ODMBypass
        drm/amd/display: Fix check for stream and plane
        drm/amd/display: Re-initialize viewport after pipe merge
        drm/amd/display: Use correct plane for CAB cursor size allocation
        drm/amdgpu: ensure no PCIe peer access for CPU XGMI iolinks
        drm/amd/pm: bump SMU 13.0.0 driver_if header version
        drm/amd/pm: use vbios carried pptable for all SMU13.0.7 SKUs
        drm/amd/pm: use vbios carried pptable for those supported SKUs
        drm/amd/display: fix wrong register access
        drm/amd/display: use actual cursor size instead of max for CAB allocation
        drm/amd/display: disable display fresh from MALL on an edge case for DCN321
        drm/amd/display: Fix CAB cursor size allocation for DCN32/321
        drm/amd/display: Missing HPO instance added
        drm/amd/display: set dig fifo read start level to 7 before dig fifo reset
        drm/amdgpu: Fix use-after-free in amdgpu_cs_ioctl
        drm/amd/display: Fix OTG H timing reset for dcn314
        drm/amd/display: Fix DCN32 DPSTREAMCLK_CNTL programming
        drm/amdgpu: Update mes_v11_api_def.h
        ...
      1e8e515e
    • Linus Torvalds's avatar
      Merge tag 'driver-core-6.0-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core · 0b3acd1c
      Linus Torvalds authored
      Pull driver core fixes from Greg KH:
       "Here are some small driver core fixes for some oft-reported problems
        in 6.0-rc1.  They include:
      
         - a bunch of reverts to handle driver_deferred_probe_check_state()
           problems that were part of the 6.0-rc1 merge.
      
         - firmware_loader bugfixes now that the code is being properly tested
           and used by others
      
         - arch_topology fix
      
         - deferred driver probe bugfix to solve a long-suffering amba bus
           problem that many people have reported.
      
        All of these have been in linux-next for a while with no reported
        problems"
      
      * tag 'driver-core-6.0-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core:
        firmware_loader: Fix memory leak in firmware upload
        firmware_loader: Fix use-after-free during unregister
        arch_topology: Silence early cacheinfo errors when non-existent
        driver core: Don't probe devices after bus_type.match() probe deferral
        Revert "iommu/of: Delete usage of driver_deferred_probe_check_state()"
        Revert "PM: domains: Delete usage of driver_deferred_probe_check_state()"
        Revert "net: mdio: Delete usage of driver_deferred_probe_check_state()"
        Revert "driver core: Delete driver_deferred_probe_check_state()"
      0b3acd1c