1. 02 Nov, 2021 16 commits
    • Linus Torvalds's avatar
      Merge tag 'hwmon-for-v5.16' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging · d54f4860
      Linus Torvalds authored
      Pull hwmon updates from Guenter Roeck:
       "New driver:
      
         - Maxim MAX6620
      
        Notable functional enhancements:
      
         - Add Asus WMI support to nct6775 driver, and list boards supporting
           it
      
         - Move TMP461 support from tm401 driver to lm90 driver
      
         - Add support for fanX_min, fanX_max and fanX_target to dell-smm
           driver, and clean it up while doing so
      
         - Extend mlxreg-fan driver to support multiple cooling devices and
           multiple PWM channels. Also increase number of supported fan
           tachometers.
      
         - Add a new customer ID (for ASRock) to nct6683 driver
      
         - Make temperature/voltage sensors on nct7802 configurable
      
         - Add mfg_id debugfs entry to pmbus/ibm-cffps driver
      
         - Support configurable sense resistor values in pmbus/lm25066, and
           fix various coefficients
      
         - Use generic notification mechanism in raspberrypi driver
      
        Notable cleanups:
      
         - Convert various devicetree bindings to dtschema, and add missing
           bindings
      
         - Convert i5500_temp and tmp103 drivers to
           devm_hwmon_device_register_with_info
      
         - Clean up non-bool "valid" data fields
      
         - Improve devicetree configurability for tmp421 driver"
      
      * tag 'hwmon-for-v5.16' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging: (73 commits)
        hwmon: (nct7802) Add of_node_put() before return
        hwmon: (tmp401) Drop support for TMP461
        hwmon: (lm90) Add basic support for TI TMP461
        hwmon: (lm90) Introduce flag indicating extended temperature support
        hwmon: (nct6775) add ProArt X570-CREATOR WIFI.
        hwmon: (nct7802) Make temperature/voltage sensors configurable
        dt-bindings: hwmon: Add nct7802 bindings
        hwmon: (dell-smm) Speed up setting of fan speed
        hwmon: (dell-smm) Add comment explaining usage of i8k_config_data[]
        hwmon: (dell-smm) Return -ENOIOCTLCMD instead of -EINVAL
        hwmon: (dell-smm) Use strscpy_pad()
        hwmon: (dell-smm) Sort includes in alphabetical order
        hwmon: (tmp421) Add of_node_put() before return
        hwmon: (max31722) Warn about failure to put device in stand-by in .remove()
        hwmon: (acpi_power_meter) Use acpi_bus_get_acpi_device()
        hwmon: (dell-smm) Add support for fanX_min, fanX_max and fanX_target
        dt-bindings: hwmon: allow specifying channels for tmp421
        hwmon: (tmp421) ignore non-channel related DT nodes
        hwmon: (tmp421) update documentation
        hwmon: (tmp421) support HWMON_T_ENABLE
        ...
      d54f4860
    • Linus Torvalds's avatar
      Merge tag 'spi-v5.16' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi · 2019295c
      Linus Torvalds authored
      Pull spi updates from Mark Brown:
       "This is quite a quiet release for SPI, there's been a bit of cleanup
        to the core from Uwe but nothing functionality wise.
      
        We have added several new drivers, Cadence XSPI, Ingenic JZ47xx,
        Qualcomm SC7280 and SC7180 and Xilinx Versal OSPI"
      
      * tag 'spi-v5.16' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi: (41 commits)
        spi: Convert NXP flexspi to json schema
        spi: spi-geni-qcom: Add support for GPI dma
        spi: fsi: Fix contention in the FSI2SPI engine
        spi: spi-rpc-if: Check return value of rpcif_sw_init()
        spi: tegra210-quad: Put device into suspend on driver removal
        spi: tegra20-slink: Put device into suspend on driver removal
        spi: bcm-qspi: Fix missing clk_disable_unprepare() on error in bcm_qspi_probe()
        spi: at91-usart: replacing legacy gpio interface for gpiod
        spi: replace snprintf in show functions with sysfs_emit
        spi: cadence: Add of_node_put() before return
        spi: orion: Add of_node_put() before goto
        spi: cadence-quadspi: fix dma_unmap_single() call
        spi: tegra20: fix build with CONFIG_PM_SLEEP=n
        spi: bcm-qspi: add support for 3-wire mode for half duplex transfer
        spi: bcm-qspi: Add mspi spcr3 32/64-bits xfer mode
        spi: Make several public functions private to spi.c
        spi: Reorder functions to simplify the next commit
        spi: Remove unused function spi_busnum_to_master()
        spi: Move comment about chipselect check to the right place
        spi: fsi: Print status on error
        ...
      2019295c
    • Linus Torvalds's avatar
      Merge tag 'regulator-v5.16' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator · 1260d242
      Linus Torvalds authored
      Pull regulator updates from Mark Brown:
       "Thanks to the removal of the unused TPS80021 driver the regulator
        updates for this cycle actually have a negative diffstat.
      
        Otherwise it's been quite a quiet release, lots of fixes and small
        improvements with the biggest individual changes being several
        conversions of DT bindings to YAML format"
      
      * tag 'regulator-v5.16' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator: (34 commits)
        regulator: Don't error out fixed regulator in regulator_sync_voltage()
        regulator: tps80031: Remove driver
        regulator: Fix SY7636A breakage
        regulator: uniphier: Add binding for NX1 SoC
        regulator: uniphier: Add USB-VBUS compatible string for NX1 SoC
        regulator: qcom,rpmh: Add compatible for PM6350
        regulator: qcom-rpmh: Add PM6350 regulators
        regulator: sy7636a: Remove requirement on sy7636a mfd
        regulator: tps62360: replacing legacy gpio interface for gpiod
        regulator: lp872x: Remove lp872x_dvs_state
        regulator: lp872x: replacing legacy gpio interface for gpiod
        regulator: dt-bindings: samsung,s5m8767: convert to dtschema
        regulator: dt-bindings: samsung,s2mpa01: convert to dtschema
        regulator: dt-bindings: samsung,s2m: convert to dtschema
        dt-bindings: clock: samsung,s2mps11: convert to dtschema
        regulator: dt-bindings: samsung,s5m8767: correct s5m8767,pmic-buck-default-dvs-idx property
        regulator: s5m8767: do not use reset value as DVS voltage if GPIO DVS is disabled
        regulator: dt-bindings: maxim,max8973: convert to dtschema
        regulator: dt-bindings: maxim,max8997: convert to dtschema
        regulator: dt-bindings: maxim,max8952: convert to dtschema
        ...
      1260d242
    • Linus Torvalds's avatar
      Merge tag 'regmap-v5.16' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regmap · d2cdb122
      Linus Torvalds authored
      Pull regmap update from Mark Brown:
       "A single change to use the maximum transfer and message sizes
        advertised by SPI controllers to configure limits within the
        regmap core, ensuring better interoperation"
      
      * tag 'regmap-v5.16' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regmap:
        regmap: spi: Set regmap max raw r/w from max_transfer_size
      d2cdb122
    • Linus Torvalds's avatar
      Merge tag 'mailbox-v5.16' of git://git.linaro.org/landing-teams/working/fujitsu/integration · 247ee3e7
      Linus Torvalds authored
      Pull mailbox updates from Jassi Brar:
       "qcom:
         - add support for qcm2290
         - consolidate msm8994 type apcs_data
      
        mtk:
         - fix clock id usage
      
        apple:
         - add driver for ASC/M3 controllers
      
        pcc:
         - reorganise PCC pcc_mbox_request_channel
         - add support for PCCT extended PCC subspaces
      
        misc:
         - make use of devm_platform_ioremap_resource()
         - change Altera, PCC and Apple mailbox maintainers"
      
      * tag 'mailbox-v5.16' of git://git.linaro.org/landing-teams/working/fujitsu/integration: (38 commits)
        mailbox: imx: support i.MX8ULP S4 MU
        dt-bindings: mailbox: imx-mu: add i.MX8ULP S400 MU support
        ACPI/PCC: Add maintainer for PCC mailbox driver
        mailbox: pcc: Move bulk of PCCT parsing into pcc_mbox_probe
        mailbox: pcc: Add support for PCCT extended PCC subspaces(type 3/4)
        mailbox: pcc: Drop handling invalid bit-width in {read,write}_register
        mailbox: pcc: Avoid accessing PCCT table in pcc_send_data and pcc_mbox_irq
        mailbox: pcc: Add PCC register bundle and associated accessor functions
        mailbox: pcc: Rename doorbell ack to platform interrupt ack register
        mailbox: pcc: Use PCC mailbox channel pointer instead of standard
        mailbox: pcc: Add pcc_mbox_chan structure to hold shared memory region info
        mailbox: pcc: Consolidate subspace doorbell register parsing
        mailbox: pcc: Consolidate subspace interrupt information parsing
        mailbox: pcc: Refactor all PCC channel information into a structure
        mailbox: pcc: Fix kernel doc warnings
        mailbox: apple: Add driver for Apple mailboxes
        dt-bindings: mailbox: Add Apple mailbox bindings
        MAINTAINERS: Add Apple mailbox files
        mailbox: mtk-cmdq: Fix local clock ID usage
        mailbox: mtk-cmdq: Validate alias_id on probe
        ...
      247ee3e7
    • Linus Torvalds's avatar
      Merge tag 'mmc-v5.16' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc · 8a73c77c
      Linus Torvalds authored
      Pull MMC and MEMSTICK updates from Ulf Hansson:
       "MMC core:
         - Update maintainer and URL for the mmc-utils
         - Set default label for slot-gpio in case of no con-id
         - Convert MMC card DT bindings to a schema
         - Add optional host specific tuning support for eMMC HS400
         - Add error handling of add_disk()
      
        MMC host:
         - mtk-sd: Add host specific tuning support for eMMC HS400
         - mtk-sd: Make DMA handling more robust
         - dw_mmc: Prevent hangs for some data writes
         - dw_mmc: Move away from using the ->init_card() callback
         - mxs-mmc: Manage the regulator in the error path and in ->remove()
         - sdhci-cadence: Add support for the Microchip MPFS variant
         - sdhci-esdhc-imx: Add support for the NXP S32G2 variant
         - sdhci-of-arasan: Add support for the Intel Thunder Bay variant
         - sdhci-omap: Prepare to support more SoCs
         - sdhci-omap: Add support for omap3 and omap4 variants
         - sdhci-omap: Add support for power management
         - sdhci-omap: Add support for system wakeups
         - sdhci-msm: Add support for the msm8226 variant
         - sdhci-sprd: Verify that the DLL locks according to spec
      
        MEMSTICK:
         - Add error handling of add_disk()
         - A couple of small fixes and improvements"
      
      * tag 'mmc-v5.16' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc: (60 commits)
        docs: mmc: update maintainer name and URL
        mmc: dw_mmc: exynos: Fix spelling mistake "candiates" -> candidates
        MAINTAINERS: drop obsolete file pattern in SDHCI DRIVER section
        mmc: sdhci-esdhc-imx: add NXP S32G2 support
        dt-bindings: mmc: fsl-imx-esdhc: add NXP S32G2 support
        mmc: dw_mmc: Drop use of ->init_card() callback
        mmc: sdhci-omap: Fix build if CONFIG_PM_SLEEP is not set
        mmc: sdhci-omap: Remove forward declaration of sdhci_omap_context_save()
        memstick: r592: Fix a UAF bug when removing the driver
        mmc: mxs-mmc: disable regulator on error and in the remove function
        mmc: sdhci-omap: Configure optional wakeirq
        mmc: sdhci-omap: Allow SDIO card power off and enable aggressive PM
        mmc: sdhci-omap: Implement PM runtime functions
        mmc: sdhci-omap: Add omap_offset to support omap3 and earlier
        mmc: sdhci-omap: Handle voltages to add support omap4
        dt-bindings: sdhci-omap: Update binding for legacy SoCs
        mmc: sdhci-pci: Remove dead code (rst_n_gpio et al)
        mmc: sdhci-pci: Remove dead code (cd_gpio, cd_irq et al)
        mmc: sdhci-pci: Remove dead code (struct sdhci_pci_data et al)
        mmc: sdhci: Remove unused prototype declaration in the header
        ...
      8a73c77c
    • Linus Torvalds's avatar
      Merge tag 'for-linus-5.16-1' of https://github.com/cminyard/linux-ipmi · 316b7eaa
      Linus Torvalds authored
      Pull IPMI driver updates from Corey Minyard:
       "A new type of low-level IPMI driver is added for direct communication
        over the IPMI message bus without a BMC between the driver and the
        bus.
      
        Other than that, lots of little bug fixes and enhancements"
      
      * tag 'for-linus-5.16-1' of https://github.com/cminyard/linux-ipmi:
        ipmi: kcs_bmc: Fix a memory leak in the error handling path of 'kcs_bmc_serio_add_device()'
        char: ipmi: replace snprintf in show functions with sysfs_emit
        ipmi: ipmb: fix dependencies to eliminate build error
        ipmi:ipmb: Add OF support
        ipmi: bt: Add ast2600 compatible string
        ipmi: bt-bmc: Use registers directly
        ipmi: ipmb: Fix off-by-one size check on rcvlen
        ipmi:ssif: Use depends on, not select, for I2C
        ipmi: Add docs for the IPMI IPMB driver
        ipmi: Add docs for IPMB direct addressing
        ipmi:ipmb: Add initial support for IPMI over IPMB
        ipmi: Add support for IPMB direct messages
        ipmi: Export ipmb_checksum()
        ipmi: Fix a typo
        ipmi: Check error code before processing BMC response
        ipmi:devintf: Return a proper error when recv buffer too small
        ipmi: Disable some operations during a panic
        ipmi:watchdog: Set panic count to proper value on a panic
      316b7eaa
    • Linus Torvalds's avatar
      Merge tag 'leds-5.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/pavel/linux-leds · 4dee0606
      Linus Torvalds authored
      Pull LED updates from Pavel Machek:
       "Johannes pointed out that locking is still problematic with triggers
        list, attempt to solve that by using RCU"
      
      * tag 'leds-5.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/pavel/linux-leds:
        leds: trigger: Disable CPU trigger on PREEMPT_RT
        leds: trigger: use RCU to protect the led_cdevs list
        led-class-flash: fix -Wrestrict warning
      4dee0606
    • Linus Torvalds's avatar
      Merge tag 'media/v5.16-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media · 73d21a35
      Linus Torvalds authored
      Pull media updates from Mauro Carvalho Chehab:
      
       - New driver for SK Hynix Hi-846 8M pixel camera
      
       - New driver for the ov13b10 camera
      
       - New driver for Renesas R-Car ISP
      
       - mtk-vcodec gained support for version 2 of decoder firmware ABI
      
       - The legacy sir_ir driver got removed
      
       - videobuf2: the vb2_mem_ops kAPI had some improvements
      
       - lots of cleanups, fixes and new features at device drivers
      
      * tag 'media/v5.16-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: (328 commits)
        media: venus: core: Add sdm660 DT compatible and resource struct
        media: dt-bindings: media: venus: Add sdm660 dt schema
        media: venus: vdec: decoded picture buffer handling during reconfig sequence
        media: venus: Handle fatal errors during encoding and decoding
        media: venus: helpers: Add helper to mark fatal vb2 error
        media: venus: hfi: Check for sys error on session hfi functions
        media: venus: Make sys_error flag an atomic bitops
        media: venus: venc: Use pmruntime autosuspend
        media: allegro: write vui parameters for HEVC
        media: allegro: nal-hevc: implement generator for vui
        media: allegro: write correct colorspace into SPS
        media: allegro: extract nal value lookup functions to header
        media: allegro: correctly scale the bit rate in SPS
        media: allegro: remove external QP table
        media: allegro: fix row and column in response message
        media: allegro: add control to disable encoder buffer
        media: allegro: add encoder buffer support
        media: allegro: add pm_runtime support
        media: allegro: lookup VCU settings
        media: allegro: fix module removal if initialization failed
        ...
      73d21a35
    • Linus Torvalds's avatar
      Merge tag 'Smack-for-5.16' of https://github.com/cschaufler/smack-next · 6f2b76a4
      Linus Torvalds authored
      Pull smack updates from Casey Schaufler:
       "Multiple corrections to smackfs:
      
         - a change for overlayfs support that corrects the initial attributes
           on created files
      
         - code clean-up for netlabel processing
      
         - several fixes in smackfs for a variety of reasons
      
         - Errors reported by W=1 have been addressed
      
        All told, nothing challenging"
      
      * tag 'Smack-for-5.16' of https://github.com/cschaufler/smack-next:
        smackfs: use netlbl_cfg_cipsov4_del() for deleting cipso_v4_doi
        smackfs: use __GFP_NOFAIL for smk_cipso_doi()
        Smack: fix W=1 build warnings
        smack: remove duplicated hook function
        Smack:- Use overlay inode label in smack_inode_copy_up()
        smack: Guard smack_ipv6_lock definition within a SMACK_IPV6_PORT_LABELING block
        smackfs: Fix use-after-free in netlbl_catmap_walk()
      6f2b76a4
    • Linus Torvalds's avatar
      Merge tag 'fallthrough-fixes-clang-5.16-rc1' of... · f2786f43
      Linus Torvalds authored
      Merge tag 'fallthrough-fixes-clang-5.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gustavoars/linux
      
      Pull fallthrough fixes from Gustavo A. R. Silva:
       "Fix some fall-through warnings when building with Clang and
        -Wimplicit-fallthrough"
      
      * tag 'fallthrough-fixes-clang-5.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gustavoars/linux:
        pcmcia: db1xxx_ss: Fix fall-through warning for Clang
        MIPS: Fix fall-through warnings for Clang
        scsi: st: Fix fall-through warning for Clang
      f2786f43
    • Linus Torvalds's avatar
      Merge tag 'kspp-misc-fixes-5.16-rc1' of... · bf953917
      Linus Torvalds authored
      Merge tag 'kspp-misc-fixes-5.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gustavoars/linux
      
      Pull hardening fixes and cleanups from Gustavo A. R. Silva:
       "Various hardening fixes and cleanups that I've been collecting during
        the last development cycle:
      
        Fix -Wcast-function-type error:
      
         - firewire: Remove function callback casts (Oscar Carter)
      
        Fix application of sizeof operator:
      
         - firmware/psci: fix application of sizeof to pointer (jing yangyang)
      
        Replace open coded instances with size_t saturating arithmetic
        helpers:
      
         - assoc_array: Avoid open coded arithmetic in allocator arguments
           (Len Baker)
      
         - writeback: prefer struct_size over open coded arithmetic (Len
           Baker)
      
         - aio: Prefer struct_size over open coded arithmetic (Len Baker)
      
         - dmaengine: pxa_dma: Prefer struct_size over open coded arithmetic
           (Len Baker)
      
        Flexible array transformation:
      
         - KVM: PPC: Replace zero-length array with flexible array member (Len
           Baker)
      
        Use 2-factor argument multiplication form:
      
         - nouveau/svm: Use kvcalloc() instead of kvzalloc() (Gustavo A. R.
           Silva)
      
         - xfs: Use kvcalloc() instead of kvzalloc() (Gustavo A. R. Silva)"
      
      * tag 'kspp-misc-fixes-5.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gustavoars/linux:
        firewire: Remove function callback casts
        nouveau/svm: Use kvcalloc() instead of kvzalloc()
        firmware/psci: fix application of sizeof to pointer
        dmaengine: pxa_dma: Prefer struct_size over open coded arithmetic
        KVM: PPC: Replace zero-length array with flexible array member
        aio: Prefer struct_size over open coded arithmetic
        writeback: prefer struct_size over open coded arithmetic
        xfs: Use kvcalloc() instead of kvzalloc()
        assoc_array: Avoid open coded arithmetic in allocator arguments
      bf953917
    • Linus Torvalds's avatar
      Merge tag 'seccomp-v5.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux · a5a9e006
      Linus Torvalds authored
      Pull seccomp updates from Kees Cook:
       "These are x86-specific, but I carried these since they're also
        seccomp-specific.
      
        This flips the defaults for spec_store_bypass_disable and
        spectre_v2_user from "seccomp" to "prctl", as enough time has passed
        to allow system owners to have updated the defensive stances of their
        various workloads, and it's long overdue to unpessimize seccomp
        threads.
      
        Extensive rationale and details are in Andrea's main patch.
      
        Summary:
      
         - set spec_store_bypass_disable & spectre_v2_user to prctl (Andrea Arcangeli)"
      
      * tag 'seccomp-v5.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux:
        x86: deduplicate the spectre_v2_user documentation
        x86: change default to spec_store_bypass_disable=prctl spectre_v2_user=prctl
      a5a9e006
    • Linus Torvalds's avatar
      Merge tag 'overflow-v5.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux · 2dc26d98
      Linus Torvalds authored
      Pull overflow updates from Kees Cook:
       "The end goal of the current buffer overflow detection work[0] is to
        gain full compile-time and run-time coverage of all detectable buffer
        overflows seen via array indexing or memcpy(), memmove(), and
        memset(). The str*() family of functions already have full coverage.
      
        While much of the work for these changes have been on-going for many
        releases (i.e. 0-element and 1-element array replacements, as well as
        avoiding false positives and fixing discovered overflows[1]), this
        series contains the foundational elements of several related buffer
        overflow detection improvements by providing new common helpers and
        FORTIFY_SOURCE changes needed to gain the introspection required for
        compiler visibility into array sizes. Also included are a handful of
        already Acked instances using the helpers (or related clean-ups), with
        many more waiting at the ready to be taken via subsystem-specific
        trees[2].
      
        The new helpers are:
      
         - struct_group() for gaining struct member range introspection
      
         - memset_after() and memset_startat() for clearing to the end of
           structures
      
         - DECLARE_FLEX_ARRAY() for using flex arrays in unions or alone in
           structs
      
        Also included is the beginning of the refactoring of FORTIFY_SOURCE to
        support memcpy() introspection, fix missing and regressed coverage
        under GCC, and to prepare to fix the currently broken Clang support.
        Finishing this work is part of the larger series[0], but depends on
        all the false positives and buffer overflow bug fixes to have landed
        already and those that depend on this series to land.
      
        As part of the FORTIFY_SOURCE refactoring, a set of both a
        compile-time and run-time tests are added for FORTIFY_SOURCE and the
        mem*()-family functions respectively. The compile time tests have
        found a legitimate (though corner-case) bug[6] already.
      
        Please note that the appearance of "panic" and "BUG" in the
        FORTIFY_SOURCE refactoring are the result of relocating existing code,
        and no new use of those code-paths are expected nor desired.
      
        Finally, there are two tree-wide conversions for 0-element arrays and
        flexible array unions to gain sane compiler introspection coverage
        that result in no known object code differences.
      
        After this series (and the changes that have now landed via netdev and
        usb), we are very close to finally being able to build with
        -Warray-bounds and -Wzero-length-bounds.
      
        However, due corner cases in GCC[3] and Clang[4], I have not included
        the last two patches that turn on these options, as I don't want to
        introduce any known warnings to the build. Hopefully these can be
        solved soon"
      
      Link: https://lore.kernel.org/lkml/20210818060533.3569517-1-keescook@chromium.org/ [0]
      Link: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/log/?qt=grep&q=FORTIFY_SOURCE [1]
      Link: https://lore.kernel.org/lkml/202108220107.3E26FE6C9C@keescook/ [2]
      Link: https://lore.kernel.org/lkml/3ab153ec-2798-da4c-f7b1-81b0ac8b0c5b@roeck-us.net/ [3]
      Link: https://bugs.llvm.org/show_bug.cgi?id=51682 [4]
      Link: https://lore.kernel.org/lkml/202109051257.29B29745C0@keescook/ [5]
      Link: https://lore.kernel.org/lkml/20211020200039.170424-1-keescook@chromium.org/ [6]
      
      * tag 'overflow-v5.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux: (30 commits)
        fortify: strlen: Avoid shadowing previous locals
        compiler-gcc.h: Define __SANITIZE_ADDRESS__ under hwaddress sanitizer
        treewide: Replace 0-element memcpy() destinations with flexible arrays
        treewide: Replace open-coded flex arrays in unions
        stddef: Introduce DECLARE_FLEX_ARRAY() helper
        btrfs: Use memset_startat() to clear end of struct
        string.h: Introduce memset_startat() for wiping trailing members and padding
        xfrm: Use memset_after() to clear padding
        string.h: Introduce memset_after() for wiping trailing members/padding
        lib: Introduce CONFIG_MEMCPY_KUNIT_TEST
        fortify: Add compile-time FORTIFY_SOURCE tests
        fortify: Allow strlen() and strnlen() to pass compile-time known lengths
        fortify: Prepare to improve strnlen() and strlen() warnings
        fortify: Fix dropped strcpy() compile-time write overflow check
        fortify: Explicitly disable Clang support
        fortify: Move remaining fortify helpers into fortify-string.h
        lib/string: Move helper functions out of string.c
        compiler_types.h: Remove __compiletime_object_size()
        cm4000_cs: Use struct_group() to zero struct cm4000_dev region
        can: flexcan: Use struct_group() to zero struct flexcan_regs regions
        ...
      2dc26d98
    • Linus Torvalds's avatar
      Merge tag 'hardening-v5.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux · f594e28d
      Linus Torvalds authored
      Pull compiler hardening updates from Kees Cook:
       "These are various compiler-related hardening feature updates. Notable
        is the addition of an explicit limited rationale for, and deprecation
        schedule of, gcc-plugins.
      
        gcc-plugins:
         - remove support for GCC 4.9 and older (Ard Biesheuvel)
         - remove duplicate include in gcc-common.h (Ye Guojin)
         - Explicitly document purpose and deprecation schedule (Kees Cook)
         - Remove cyc_complexity (Kees Cook)
      
        instrumentation:
         - Avoid harmless Clang option under CONFIG_INIT_STACK_ALL_ZERO (Kees Cook)
      
        Clang LTO:
         - kallsyms: strip LTO suffixes from static functions (Nick Desaulniers)"
      
      * tag 'hardening-v5.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux:
        gcc-plugins: remove duplicate include in gcc-common.h
        gcc-plugins: Remove cyc_complexity
        gcc-plugins: Explicitly document purpose and deprecation schedule
        kallsyms: strip LTO suffixes from static functions
        gcc-plugins: remove support for GCC 4.9 and older
        hardening: Avoid harmless Clang option under CONFIG_INIT_STACK_ALL_ZERO
      f594e28d
    • Linus Torvalds's avatar
      Merge tag 'cpu-to-thread_info-v5.16-rc1' of... · 01463374
      Linus Torvalds authored
      Merge tag 'cpu-to-thread_info-v5.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux
      
      Pull thread_info update to move 'cpu' back from task_struct from Kees Cook:
       "Cross-architecture update to move task_struct::cpu back into
        thread_info on arm64, x86, s390, powerpc, and riscv. All Acked by arch
        maintainers.
      
        Quoting Ard Biesheuvel:
      
           'Move task_struct::cpu back into thread_info
      
            Keeping CPU in task_struct is problematic for architectures that
            define raw_smp_processor_id() in terms of this field, as it
            requires linux/sched.h to be included, which causes a lot of pain
            in terms of circular dependencies (aka 'header soup')
      
            This series moves it back into thread_info (where it came from)
            for all architectures that enable THREAD_INFO_IN_TASK, addressing
            the header soup issue as well as some pointless differences in the
            implementations of task_cpu() and set_task_cpu()'"
      
      * tag 'cpu-to-thread_info-v5.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux:
        riscv: rely on core code to keep thread_info::cpu updated
        powerpc: smp: remove hack to obtain offset of task_struct::cpu
        sched: move CPU field back into thread_info if THREAD_INFO_IN_TASK=y
        powerpc: add CPU field to struct thread_info
        s390: add CPU field to struct thread_info
        x86: add CPU field to struct thread_info
        arm64: add CPU field to struct thread_info
      01463374
  2. 01 Nov, 2021 24 commits
    • Linus Torvalds's avatar
      Merge tag 'm68k-for-v5.16-tag1' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k · 03feb7c5
      Linus Torvalds authored
      Pull m68k updates from Geert Uytterhoeven:
      
       - A small comma vs semicolon cleanup
      
       - defconfig updates
      
      * tag 'm68k-for-v5.16-tag1' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k:
        m68k: defconfig: Update defconfigs for v5.15-rc1
        m68k: muldi3: Use semicolon instead of comma
      03feb7c5
    • Linus Torvalds's avatar
      Merge tag 'for-5.16/parisc-1' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux · 552ebfe0
      Linus Torvalds authored
      Pull parisc updates from Helge Deller:
       "Lots of new features and fixes:
      
         - Added TOC (table of content) support, which is a debugging feature
           which is either initiated by pressing the TOC button or via command
           in the BMC. If pressed the Linux built-in KDB/KGDB will be called
           (Sven Schnelle)
      
         - Fix CONFIG_PREEMPT (Sven)
      
         - Fix unwinder on 64-bit kernels (Sven)
      
         - Various kgdb fixes (Sven)
      
         - Added KFENCE support (me)
      
         - Switch to ARCH_STACKWALK implementation (me)
      
         - Fix ptrace check on syscall return (me)
      
         - Fix kernel crash with fixmaps on PA1.x machines (me)
      
         - Move thread_info into task struct, aka CONFIG_THREAD_INFO_IN_TASK
           (me)
      
         - Updated defconfigs
      
         - Smaller cleanups, including Makefile cleanups (Masahiro Yamada),
           use kthread_run() macro (Cai Huoqing), use swap() macro (Yihao
           Han)"
      
      * tag 'for-5.16/parisc-1' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux: (36 commits)
        parisc: Fix set_fixmap() on PA1.x CPUs
        parisc: Use swap() to swap values in setup_bootmem()
        parisc: Update defconfigs
        parisc: decompressor: clean up Makefile
        parisc: decompressor: remove repeated depenency of misc.o
        parisc: Remove unused constants from asm-offsets.c
        parisc/ftrace: use static key to enable/disable function graph tracer
        parisc/ftrace: set function trace function
        parisc: Make use of the helper macro kthread_run()
        parisc: mark xchg functions notrace
        parisc: enhance warning regarding usage of O_NONBLOCK
        parisc: Drop ifdef __KERNEL__ from non-uapi kernel headers
        parisc: Use PRIV_USER and PRIV_KERNEL in ptrace.h
        parisc: Use PRIV_USER in syscall.S
        parisc/kgdb: add kgdb_roundup() to make kgdb work with idle polling
        parisc: Move thread_info into task struct
        parisc: add support for TOC (transfer of control)
        parisc/firmware: add functions to retrieve TOC data
        parisc: add PIM TOC data structures
        parisc: move virt_map macro to assembly.h
        ...
      552ebfe0
    • Linus Torvalds's avatar
      Merge tag 'arm64-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux · 46f87632
      Linus Torvalds authored
      Pull arm64 updates from Will Deacon:
       "There's the usual summary below, but the highlights are support for
        the Armv8.6 timer extensions, KASAN support for asymmetric MTE, the
        ability to kexec() with the MMU enabled and a second attempt at
        switching to the generic pfn_valid() implementation.
      
        Summary:
      
         - Support for the Arm8.6 timer extensions, including a
           self-synchronising view of the system registers to elide some
           expensive ISB instructions.
      
         - Exception table cleanup and rework so that the fixup handlers
           appear correctly in backtraces.
      
         - A handful of miscellaneous changes, the main one being selection of
           CONFIG_HAVE_POSIX_CPU_TIMERS_TASK_WORK.
      
         - More mm and pgtable cleanups.
      
         - KASAN support for "asymmetric" MTE, where tag faults are reported
           synchronously for loads (via an exception) and asynchronously for
           stores (via a register).
      
         - Support for leaving the MMU enabled during kexec relocation, which
           significantly speeds up the operation.
      
         - Minor improvements to our perf PMU drivers.
      
         - Improvements to the compat vDSO build system, particularly when
           building with LLVM=1.
      
         - Preparatory work for handling some Coresight TRBE tracing errata.
      
         - Cleanup and refactoring of the SVE code to pave the way for SME
           support in future.
      
         - Ensure SCS pages are unpoisoned immediately prior to freeing them
           when KASAN is enabled for the vmalloc area.
      
         - Try moving to the generic pfn_valid() implementation again now that
           the DMA mapping issue from last time has been resolved.
      
         - Numerous improvements and additions to our FPSIMD and SVE
           selftests"
      
      [ armv8.6 timer updates were in a shared branch and already came in
        through -tip in the timer pull  - Linus ]
      
      * tag 'arm64-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux: (85 commits)
        arm64: Select POSIX_CPU_TIMERS_TASK_WORK
        arm64: Document boot requirements for FEAT_SME_FA64
        arm64/sve: Fix warnings when SVE is disabled
        arm64/sve: Add stub for sve_max_virtualisable_vl()
        arm64: errata: Add detection for TRBE write to out-of-range
        arm64: errata: Add workaround for TSB flush failures
        arm64: errata: Add detection for TRBE overwrite in FILL mode
        arm64: Add Neoverse-N2, Cortex-A710 CPU part definition
        selftests: arm64: Factor out utility functions for assembly FP tests
        arm64: vmlinux.lds.S: remove `.fixup` section
        arm64: extable: add load_unaligned_zeropad() handler
        arm64: extable: add a dedicated uaccess handler
        arm64: extable: add `type` and `data` fields
        arm64: extable: use `ex` for `exception_table_entry`
        arm64: extable: make fixup_exception() return bool
        arm64: extable: consolidate definitions
        arm64: gpr-num: support W registers
        arm64: factor out GPR numbering helpers
        arm64: kvm: use kvm_exception_table_entry
        arm64: lib: __arch_copy_to_user(): fold fixups into body
        ...
      46f87632
    • Linus Torvalds's avatar
      Merge tag 'x86_sgx_for_v5.16_rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 879dbe9f
      Linus Torvalds authored
      Pull x86 SGX updates from Borislav Petkov:
       "Add a SGX_IOC_VEPC_REMOVE ioctl to the /dev/sgx_vepc virt interface
        with which EPC pages can be put back into their uninitialized state
        without having to reopen /dev/sgx_vepc, which could not be possible
        anymore after startup due to security policies"
      
      * tag 'x86_sgx_for_v5.16_rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/sgx/virt: implement SGX_IOC_VEPC_REMOVE ioctl
        x86/sgx/virt: extract sgx_vepc_remove_page
      879dbe9f
    • Linus Torvalds's avatar
      Merge tag 'x86_sev_for_v5.16_rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 20273d25
      Linus Torvalds authored
      Pull x86 SEV updates from Borislav Petkov:
      
       - Export sev_es_ghcb_hv_call() so that HyperV Isolation VMs can use it
         too
      
       - Non-urgent fixes and cleanups
      
      * tag 'x86_sev_for_v5.16_rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/sev: Expose sev_es_ghcb_hv_call() for use by HyperV
        x86/sev: Allow #VC exceptions on the VC2 stack
        x86/sev: Fix stack type check in vc_switch_off_ist()
        x86/sme: Use #define USE_EARLY_PGTABLE_L5 in mem_encrypt_identity.c
        x86/sev: Carve out HV call's return value verification
      20273d25
    • Linus Torvalds's avatar
      Merge tag 'x86_misc_for_v5.16_rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 160729af
      Linus Torvalds authored
      Pull misc x86 changes from Borislav Petkov:
      
       - Use the proper interface for the job: get_unaligned() instead of
         memcpy() in the insn decoder
      
       - A randconfig build fix
      
      * tag 'x86_misc_for_v5.16_rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/insn: Use get_unaligned() instead of memcpy()
        x86/Kconfig: Fix an unused variable error in dell-smm-hwmon
      160729af
    • Linus Torvalds's avatar
      Merge tag 'x86_cpu_for_v5.16_rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · e0f4c59d
      Linus Torvalds authored
      Pull x86 cpu updates from Borislav Petkov:
      
       - Start checking a CPUID bit on AMD Zen3 which states that the CPU
         clears the segment base when a null selector is written. Do the
         explicit detection on older CPUs, zen2 and hygon specifically, which
         have the functionality but do not advertize the CPUID bit. Factor in
         the presence of a hypervisor underneath the kernel and avoid doing
         the explicit check there which the HV might've decided to not
         advertize for migration safety reasons, or similar.
      
       - Add support for a new X86 CPU vendor: VORTEX. Needed for whitelisting
         those CPUs in the hardware vulnerabilities detection
      
       - Force the compiler to use rIP-relative addressing in the fallback
         path of static_cpu_has(), in order to avoid unnecessary register
         pressure
      
      * tag 'x86_cpu_for_v5.16_rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/cpu: Fix migration safety with X86_BUG_NULL_SEL
        x86/CPU: Add support for Vortex CPUs
        x86/umip: Downgrade warning messages to debug loglevel
        x86/asm: Avoid adding register pressure for the init case in static_cpu_has()
        x86/asm: Add _ASM_RIP() macro for x86-64 (%rip) suffix
      e0f4c59d
    • Linus Torvalds's avatar
      Merge tag 'x86_cleanups_for_v5.16_rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 18398bb8
      Linus Torvalds authored
      Pull x86 cleanups from Borislav Petkov:
       "The usual round of random minor fixes and cleanups all over the place"
      
      * tag 'x86_cleanups_for_v5.16_rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/Makefile: Remove unneeded whitespaces before tabs
        x86/of: Kill unused early_init_dt_scan_chosen_arch()
        x86: Fix misspelled Kconfig symbols
        x86/Kconfig: Remove references to obsolete Kconfig symbols
        x86/smp: Remove unnecessary assignment to local var freq_scale
      18398bb8
    • Linus Torvalds's avatar
      Merge tag 'x86_cc_for_v5.16_rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 6e5772c8
      Linus Torvalds authored
      Pull generic confidential computing updates from Borislav Petkov:
       "Add an interface called cc_platform_has() which is supposed to be used
        by confidential computing solutions to query different aspects of the
        system.
      
        The intent behind it is to unify testing of such aspects instead of
        having each confidential computing solution add its own set of tests
        to code paths in the kernel, leading to an unwieldy mess"
      
      * tag 'x86_cc_for_v5.16_rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        treewide: Replace the use of mem_encrypt_active() with cc_platform_has()
        x86/sev: Replace occurrences of sev_es_active() with cc_platform_has()
        x86/sev: Replace occurrences of sev_active() with cc_platform_has()
        x86/sme: Replace occurrences of sme_active() with cc_platform_has()
        powerpc/pseries/svm: Add a powerpc version of cc_platform_has()
        x86/sev: Add an x86 version of cc_platform_has()
        arch/cc: Introduce a function to check for confidential computing features
        x86/ioremap: Selectively build arch override encryption functions
      6e5772c8
    • Linus Torvalds's avatar
      Merge tag 'x86_build_for_v5.16_rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 57f45de7
      Linus Torvalds authored
      Pull x86 build fix from Borislav Petkov:
      
       - A single fix to hdimage when using older versions of mtools
      
      * tag 'x86_build_for_v5.16_rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/boot: Fix make hdimage with older versions of mtools
      57f45de7
    • Linus Torvalds's avatar
      Merge tag 'ras_core_for_v5.16_rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 158405e8
      Linus Torvalds authored
      Pull RAS updates from Borislav Petkov:
      
       - Get rid of a bunch of function pointers used in MCA land in favor of
         normal functions. This is in preparation of making the MCA code
         noinstr-aware
      
       - When the kernel copies data from user addresses and it encounters a
         machine check, a SIGBUS is sent to that process. Change this action
         to either an -EFAULT which is returned to the user or a short write,
         making the recovery action a lot more user-friendly
      
      * tag 'ras_core_for_v5.16_rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/mce: Sort mca_config members to get rid of unnecessary padding
        x86/mce: Get rid of the ->quirk_no_way_out() indirect call
        x86/mce: Get rid of msr_ops
        x86/mce: Get rid of machine_check_vector
        x86/mce: Get rid of the mce_severity function pointer
        x86/mce: Drop copyin special case for #MC
        x86/mce: Change to not send SIGBUS error during copy from user
      158405e8
    • Linus Torvalds's avatar
      Merge tag 'efi-next-for-v5.16' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 93351d2c
      Linus Torvalds authored
      Pull EFI updates from Borislav Petkov:
       "The last EFI pull request which is forwarded through the tip tree, for
        v5.16. From now on, Ard will be sending stuff directly.
      
        Disable EFI runtime services by default on PREEMPT_RT, while adding
        the ability to re-enable them on demand by passing efi=runtime on the
        command line"
      
      * tag 'efi-next-for-v5.16' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        efi: Allow efi=runtime
        efi: Disable runtime services on RT
      93351d2c
    • Linus Torvalds's avatar
      Merge tag 'edac_updates_for_v5.16' of git://git.kernel.org/pub/scm/linux/kernel/git/ras/ras · fe354159
      Linus Torvalds authored
      Pull EDAC updates from Borislav Petkov:
       "A small pile of EDAC updates which the autumn wind blew my way. :)
      
         - amd64_edac: Add support for three-rank interleaving mode which is
           present on AMD zen2 servers
      
         - The usual fixes and cleanups all over EDAC land"
      
      * tag 'edac_updates_for_v5.16' of git://git.kernel.org/pub/scm/linux/kernel/git/ras/ras:
        EDAC/sb_edac: Fix top-of-high-memory value for Broadwell/Haswell
        EDAC/ti: Remove redundant error messages
        EDAC/amd64: Handle three rank interleaving mode
        EDAC/mc_sysfs: Print MC-scope sysfs counters unsigned
        EDAC/al_mc: Make use of the helper function devm_add_action_or_reset()
        EDAC/mc: Replace strcpy(), sprintf() and snprintf() with strscpy() or scnprintf()
      fe354159
    • Linus Torvalds's avatar
      mm: fix mismerge of folio page flag manipulators · e6643593
      Linus Torvalds authored
      I had missed a semantic conflict between commit d389a4a8 ("mm: Add
      folio flag manipulation functions") from the folio tree, and commit
      eac96c3e ("mm: filemap: check if THP has hwpoisoned subpage for PMD
      page fault") that added a new set of page flags.
      
      My build tests had too many options enabled, which hid this issue.  But
      if you didn't have MEMORY_FAILURE or TRANSPARENT_HUGEPAGE enabled, you'd
      end up with build errors like this:
      
        include/linux/page-flags.h:806:29: error: macro "PAGEFLAG_FALSE" requires 2 arguments, but only 1 given
          806 | PAGEFLAG_FALSE(HasHWPoisoned)
              |                             ^
      
      due to the missing lowercase name used for folio function naming.
      
      Fixes: 49f8275c ("Merge tag 'folio-5.16' of git://git.infradead.org/users/willy/pagecache")
      Reported-by: default avatarNaresh Kamboju <naresh.kamboju@linaro.org>
      Reported-by: default avatarYang Shi <shy828301@gmail.com>
      Cc: Matthew Wilcox <willy@infradead.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      e6643593
    • Linus Torvalds's avatar
      Merge tag 'x86-fpu-2021-11-01' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 8cb1ae19
      Linus Torvalds authored
      Pull x86 fpu updates from Thomas Gleixner:
      
       - Cleanup of extable fixup handling to be more robust, which in turn
         allows to make the FPU exception fixups more robust as well.
      
       - Change the return code for signal frame related failures from
         explicit error codes to a boolean fail/success as that's all what the
         calling code evaluates.
      
       - A large refactoring of the FPU code to prepare for adding AMX
         support:
      
            - Distangle the public header maze and remove especially the
              misnomed kitchen sink internal.h which is despite it's name
              included all over the place.
      
            - Add a proper abstraction for the register buffer storage (struct
              fpstate) which allows to dynamically size the buffer at runtime
              by flipping the pointer to the buffer container from the default
              container which is embedded in task_struct::tread::fpu to a
              dynamically allocated container with a larger register buffer.
      
            - Convert the code over to the new fpstate mechanism.
      
            - Consolidate the KVM FPU handling by moving the FPU related code
              into the FPU core which removes the number of exports and avoids
              adding even more export when AMX has to be supported in KVM.
              This also removes duplicated code which was of course
              unnecessary different and incomplete in the KVM copy.
      
            - Simplify the KVM FPU buffer handling by utilizing the new
              fpstate container and just switching the buffer pointer from the
              user space buffer to the KVM guest buffer when entering
              vcpu_run() and flipping it back when leaving the function. This
              cuts the memory requirements of a vCPU for FPU buffers in half
              and avoids pointless memory copy operations.
      
              This also solves the so far unresolved problem of adding AMX
              support because the current FPU buffer handling of KVM inflicted
              a circular dependency between adding AMX support to the core and
              to KVM. With the new scheme of switching fpstate AMX support can
              be added to the core code without affecting KVM.
      
            - Replace various variables with proper data structures so the
              extra information required for adding dynamically enabled FPU
              features (AMX) can be added in one place
      
       - Add AMX (Advanced Matrix eXtensions) support (finally):
      
         AMX is a large XSTATE component which is going to be available with
         Saphire Rapids XEON CPUs. The feature comes with an extra MSR
         (MSR_XFD) which allows to trap the (first) use of an AMX related
         instruction, which has two benefits:
      
          1) It allows the kernel to control access to the feature
      
          2) It allows the kernel to dynamically allocate the large register
             state buffer instead of burdening every task with the the extra
             8K or larger state storage.
      
         It would have been great to gain this kind of control already with
         AVX512.
      
         The support comes with the following infrastructure components:
      
          1) arch_prctl() to
              - read the supported features (equivalent to XGETBV(0))
              - read the permitted features for a task
              - request permission for a dynamically enabled feature
      
             Permission is granted per process, inherited on fork() and
             cleared on exec(). The permission policy of the kernel is
             restricted to sigaltstack size validation, but the syscall
             obviously allows further restrictions via seccomp etc.
      
          2) A stronger sigaltstack size validation for sys_sigaltstack(2)
             which takes granted permissions and the potentially resulting
             larger signal frame into account. This mechanism can also be used
             to enforce factual sigaltstack validation independent of dynamic
             features to help with finding potential victims of the 2K
             sigaltstack size constant which is broken since AVX512 support
             was added.
      
          3) Exception handling for #NM traps to catch first use of a extended
             feature via a new cause MSR. If the exception was caused by the
             use of such a feature, the handler checks permission for that
             feature. If permission has not been granted, the handler sends a
             SIGILL like the #UD handler would do if the feature would have
             been disabled in XCR0. If permission has been granted, then a new
             fpstate which fits the larger buffer requirement is allocated.
      
             In the unlikely case that this allocation fails, the handler
             sends SIGSEGV to the task. That's not elegant, but unavoidable as
             the other discussed options of preallocation or full per task
             permissions come with their own set of horrors for kernel and/or
             userspace. So this is the lesser of the evils and SIGSEGV caused
             by unexpected memory allocation failures is not a fundamentally
             new concept either.
      
             When allocation succeeds, the fpstate properties are filled in to
             reflect the extended feature set and the resulting sizes, the
             fpu::fpstate pointer is updated accordingly and the trap is
             disarmed for this task permanently.
      
          4) Enumeration and size calculations
      
          5) Trap switching via MSR_XFD
      
             The XFD (eXtended Feature Disable) MSR is context switched with
             the same life time rules as the FPU register state itself. The
             mechanism is keyed off with a static key which is default
             disabled so !AMX equipped CPUs have zero overhead. On AMX enabled
             CPUs the overhead is limited by comparing the tasks XFD value
             with a per CPU shadow variable to avoid redundant MSR writes. In
             case of switching from a AMX using task to a non AMX using task
             or vice versa, the extra MSR write is obviously inevitable.
      
             All other places which need to be aware of the variable feature
             sets and resulting variable sizes are not affected at all because
             they retrieve the information (feature set, sizes) unconditonally
             from the fpstate properties.
      
          6) Enable the new AMX states
      
         Note, this is relatively new code despite the fact that AMX support
         is in the works for more than a year now.
      
         The big refactoring of the FPU code, which allowed to do a proper
         integration has been started exactly 3 weeks ago. Refactoring of the
         existing FPU code and of the original AMX patches took a week and has
         been subject to extensive review and testing. The only fallout which
         has not been caught in review and testing right away was restricted
         to AMX enabled systems, which is completely irrelevant for anyone
         outside Intel and their early access program. There might be dragons
         lurking as usual, but so far the fine grained refactoring has held up
         and eventual yet undetected fallout is bisectable and should be
         easily addressable before the 5.16 release. Famous last words...
      
         Many thanks to Chang Bae and Dave Hansen for working hard on this and
         also to the various test teams at Intel who reserved extra capacity
         to follow the rapid development of this closely which provides the
         confidence level required to offer this rather large update for
         inclusion into 5.16-rc1
      
      * tag 'x86-fpu-2021-11-01' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (110 commits)
        Documentation/x86: Add documentation for using dynamic XSTATE features
        x86/fpu: Include vmalloc.h for vzalloc()
        selftests/x86/amx: Add context switch test
        selftests/x86/amx: Add test cases for AMX state management
        x86/fpu/amx: Enable the AMX feature in 64-bit mode
        x86/fpu: Add XFD handling for dynamic states
        x86/fpu: Calculate the default sizes independently
        x86/fpu/amx: Define AMX state components and have it used for boot-time checks
        x86/fpu/xstate: Prepare XSAVE feature table for gaps in state component numbers
        x86/fpu/xstate: Add fpstate_realloc()/free()
        x86/fpu/xstate: Add XFD #NM handler
        x86/fpu: Update XFD state where required
        x86/fpu: Add sanity checks for XFD
        x86/fpu: Add XFD state to fpstate
        x86/msr-index: Add MSRs for XFD
        x86/cpufeatures: Add eXtended Feature Disabling (XFD) feature bit
        x86/fpu: Reset permission and fpstate on exec()
        x86/fpu: Prepare fpu_clone() for dynamically enabled features
        x86/fpu/signal: Prepare for variable sigframe length
        x86/signal: Use fpu::__state_user_size for sigalt stack validation
        ...
      8cb1ae19
    • Linus Torvalds's avatar
      Merge tag 'x86-apic-2021-11-01' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 7d20dd32
      Linus Torvalds authored
      Pull x86/apic update from Thomas Gleixner:
       "A single commit which reduces cache misses in __x2apic_send_IPI_mask()
        significantly by converting x86_cpu_to_logical_apicid() to an array
        instead of using per CPU storage.
      
        This reduces the cost for a full broadcast on a dual socket system
        with 256 CPUs from 33 down to 11 microseconds"
      
      * tag 'x86-apic-2021-11-01' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/apic: Reduce cache line misses in __x2apic_send_IPI_mask()
      7d20dd32
    • Linus Torvalds's avatar
      Merge tag 'sched-core-2021-11-01' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 9a7e0a90
      Linus Torvalds authored
      Pull scheduler updates from Thomas Gleixner:
      
       - Revert the printk format based wchan() symbol resolution as it can
         leak the raw value in case that the symbol is not resolvable.
      
       - Make wchan() more robust and work with all kind of unwinders by
         enforcing that the task stays blocked while unwinding is in progress.
      
       - Prevent sched_fork() from accessing an invalid sched_task_group
      
       - Improve asymmetric packing logic
      
       - Extend scheduler statistics to RT and DL scheduling classes and add
         statistics for bandwith burst to the SCHED_FAIR class.
      
       - Properly account SCHED_IDLE entities
      
       - Prevent a potential deadlock when initial priority is assigned to a
         newly created kthread. A recent change to plug a race between cpuset
         and __sched_setscheduler() introduced a new lock dependency which is
         now triggered. Break the lock dependency chain by moving the priority
         assignment to the thread function.
      
       - Fix the idle time reporting in /proc/uptime for NOHZ enabled systems.
      
       - Improve idle balancing in general and especially for NOHZ enabled
         systems.
      
       - Provide proper interfaces for live patching so it does not have to
         fiddle with scheduler internals.
      
       - Add cluster aware scheduling support.
      
       - A small set of tweaks for RT (irqwork, wait_task_inactive(), various
         scheduler options and delaying mmdrop)
      
       - The usual small tweaks and improvements all over the place
      
      * tag 'sched-core-2021-11-01' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (69 commits)
        sched/fair: Cleanup newidle_balance
        sched/fair: Remove sysctl_sched_migration_cost condition
        sched/fair: Wait before decaying max_newidle_lb_cost
        sched/fair: Skip update_blocked_averages if we are defering load balance
        sched/fair: Account update_blocked_averages in newidle_balance cost
        x86: Fix __get_wchan() for !STACKTRACE
        sched,x86: Fix L2 cache mask
        sched/core: Remove rq_relock()
        sched: Improve wake_up_all_idle_cpus() take #2
        irq_work: Also rcuwait for !IRQ_WORK_HARD_IRQ on PREEMPT_RT
        irq_work: Handle some irq_work in a per-CPU thread on PREEMPT_RT
        irq_work: Allow irq_work_sync() to sleep if irq_work() no IRQ support.
        sched/rt: Annotate the RT balancing logic irqwork as IRQ_WORK_HARD_IRQ
        sched: Add cluster scheduler level for x86
        sched: Add cluster scheduler level in core and related Kconfig for ARM64
        topology: Represent clusters of CPUs within a die
        sched: Disable -Wunused-but-set-variable
        sched: Add wrapper for get_wchan() to keep task blocked
        x86: Fix get_wchan() to support the ORC unwinder
        proc: Use task_is_running() for wchan in /proc/$pid/stat
        ...
      9a7e0a90
    • Linus Torvalds's avatar
      Merge tag 'timers-core-2021-10-31' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 57a315cd
      Linus Torvalds authored
      Pull timer updates from Thomas Gleixner:
       "Time, timers and timekeeping updates:
      
         - No core updates
      
         - No new clocksource/event driver
      
         - A large rework of the ARM architected timer driver to prepare for
           the support of the upcoming ARMv8.6 support
      
         - Fix Kconfig options for Exynos MCT, Samsung PWM and TI DM timers
      
         - Address a namespace collison in the ARC sp804 timer driver"
      
      * tag 'timers-core-2021-10-31' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        clocksource/drivers/timer-ti-dm: Select TIMER_OF
        clocksource/drivers/exynosy: Depend on sub-architecture for Exynos MCT and Samsung PWM
        clocksource/drivers/arch_arm_timer: Move workaround synchronisation around
        clocksource/drivers/arm_arch_timer: Fix masking for high freq counters
        clocksource/drivers/arm_arch_timer: Drop unnecessary ISB on CVAL programming
        clocksource/drivers/arm_arch_timer: Remove any trace of the TVAL programming interface
        clocksource/drivers/arm_arch_timer: Work around broken CVAL implementations
        clocksource/drivers/arm_arch_timer: Advertise 56bit timer to the core code
        clocksource/drivers/arm_arch_timer: Move MMIO timer programming over to CVAL
        clocksource/drivers/arm_arch_timer: Fix MMIO base address vs callback ordering issue
        clocksource/drivers/arm_arch_timer: Move drop _tval from erratum function names
        clocksource/drivers/arm_arch_timer: Move system register timer programming over to CVAL
        clocksource/drivers/arm_arch_timer: Extend write side of timer register accessors to u64
        clocksource/drivers/arm_arch_timer: Drop CNT*_TVAL read accessors
        clocksource/arm_arch_timer: Add build-time guards for unhandled register accesses
        clocksource/drivers/arc_timer: Eliminate redefined macro error
      57a315cd
    • Linus Torvalds's avatar
      Merge tag 'objtool-core-2021-10-31' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 43aa0a19
      Linus Torvalds authored
      Pull objtool updates from Thomas Gleixner:
      
       - Improve retpoline code patching by separating it from alternatives
         which reduces memory footprint and allows to do better optimizations
         in the actual runtime patching.
      
       - Add proper retpoline support for x86/BPF
      
       - Address noinstr warnings in x86/kvm, lockdep and paravirtualization
         code
      
       - Add support to handle pv_opsindirect calls in the noinstr analysis
      
       - Classify symbols upfront and cache the result to avoid redundant
         str*cmp() invocations.
      
       - Add a CFI hash to reduce memory consumption which also reduces
         runtime on a allyesconfig by ~50%
      
       - Adjust XEN code to make objtool handling more robust and as a side
         effect to prevent text fragmentation due to placement of the
         hypercall page.
      
      * tag 'objtool-core-2021-10-31' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (41 commits)
        bpf,x86: Respect X86_FEATURE_RETPOLINE*
        bpf,x86: Simplify computing label offsets
        x86,bugs: Unconditionally allow spectre_v2=retpoline,amd
        x86/alternative: Add debug prints to apply_retpolines()
        x86/alternative: Try inline spectre_v2=retpoline,amd
        x86/alternative: Handle Jcc __x86_indirect_thunk_\reg
        x86/alternative: Implement .retpoline_sites support
        x86/retpoline: Create a retpoline thunk array
        x86/retpoline: Move the retpoline thunk declarations to nospec-branch.h
        x86/asm: Fixup odd GEN-for-each-reg.h usage
        x86/asm: Fix register order
        x86/retpoline: Remove unused replacement symbols
        objtool,x86: Replace alternatives with .retpoline_sites
        objtool: Shrink struct instruction
        objtool: Explicitly avoid self modifying code in .altinstr_replacement
        objtool: Classify symbols
        objtool: Support pv_opsindirect calls for noinstr
        x86/xen: Rework the xen_{cpu,irq,mmu}_opsarrays
        x86/xen: Mark xen_force_evtchn_callback() noinstr
        x86/xen: Make irq_disable() noinstr
        ...
      43aa0a19
    • Linus Torvalds's avatar
      Merge tag 'locking-core-2021-10-31' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 595b28fb
      Linus Torvalds authored
      Pull locking updates from Thomas Gleixner:
      
       - Move futex code into kernel/futex/ and split up the kitchen sink into
         seperate files to make integration of sys_futex_waitv() simpler.
      
       - Add a new sys_futex_waitv() syscall which allows to wait on multiple
         futexes.
      
         The main use case is emulating Windows' WaitForMultipleObjects which
         allows Wine to improve the performance of Windows Games. Also native
         Linux games can benefit from this interface as this is a common wait
         pattern for this kind of applications.
      
       - Add context to ww_mutex_trylock() to provide a path for i915 to
         rework their eviction code step by step without making lockdep upset
         until the final steps of rework are completed. It's also useful for
         regulator and TTM to avoid dropping locks in the non contended path.
      
       - Lockdep and might_sleep() cleanups and improvements
      
       - A few improvements for the RT substitutions.
      
       - The usual small improvements and cleanups.
      
      * tag 'locking-core-2021-10-31' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (44 commits)
        locking: Remove spin_lock_flags() etc
        locking/rwsem: Fix comments about reader optimistic lock stealing conditions
        locking: Remove rcu_read_{,un}lock() for preempt_{dis,en}able()
        locking/rwsem: Disable preemption for spinning region
        docs: futex: Fix kernel-doc references
        futex: Fix PREEMPT_RT build
        futex2: Documentation: Document sys_futex_waitv() uAPI
        selftests: futex: Test sys_futex_waitv() wouldblock
        selftests: futex: Test sys_futex_waitv() timeout
        selftests: futex: Add sys_futex_waitv() test
        futex,arm: Wire up sys_futex_waitv()
        futex,x86: Wire up sys_futex_waitv()
        futex: Implement sys_futex_waitv()
        futex: Simplify double_lock_hb()
        futex: Split out wait/wake
        futex: Split out requeue
        futex: Rename mark_wake_futex()
        futex: Rename: match_futex()
        futex: Rename: hb_waiter_{inc,dec,pending}()
        futex: Split out PI futex
        ...
      595b28fb
    • Linus Torvalds's avatar
      Merge tag 'perf-core-2021-10-31' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 91e1c99e
      Linus Torvalds authored
      Pull perf updates from Thomas Gleixner:
       "Core:
      
         - Allow ftrace to instrument parts of the perf core code
      
         - Add a new mem_hops field to perf_mem_data_src which allows to
           represent intra-node/package or inter-node/off-package details to
           prepare for next generation systems which have more hieararchy
           within the node/pacakge level.
      
        Tools:
      
         - Update for the new mem_hops field in perf_mem_data_src
      
        Arch:
      
         - A set of constraints fixes for the Intel uncore PMU
      
         - The usual set of small fixes and improvements for x86 and PPC"
      
      * tag 'perf-core-2021-10-31' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        perf/x86/intel: Fix ICL/SPR INST_RETIRED.PREC_DIST encodings
        powerpc/perf: Fix data source encodings for L2.1 and L3.1 accesses
        tools/perf: Add mem_hops field in perf_mem_data_src structure
        perf: Add mem_hops field in perf_mem_data_src structure
        perf: Add comment about current state of PERF_MEM_LVL_* namespace and remove an extra line
        perf/core: Allow ftrace for functions in kernel/event/core.c
        perf/x86: Add new event for AUX output counter index
        perf/x86: Add compiler barrier after updating BTS
        perf/x86/intel/uncore: Fix Intel SPR M3UPI event constraints
        perf/x86/intel/uncore: Fix Intel SPR M2PCIE event constraints
        perf/x86/intel/uncore: Fix Intel SPR IIO event constraints
        perf/x86/intel/uncore: Fix Intel SPR CHA event constraints
        perf/x86/intel/uncore: Fix Intel ICX IIO event constraints
        perf/x86/intel/uncore: Fix invalid unit check
        perf/x86/intel/uncore: Support extra IMC channel on Ice Lake server
      91e1c99e
    • Linus Torvalds's avatar
      Merge tag 'irq-core-2021-10-31' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 5a47ebe9
      Linus Torvalds authored
      Pull irq updates from Thomas Gleixner:
       "Updates for the interrupt subsystem:
      
        Core changes:
      
         - Prevent a potential deadlock when initial priority is assigned to a
           newly created interrupt thread. A recent change to plug a race
           between cpuset and __sched_setscheduler() introduced a new lock
           dependency which is now triggered. Break the lock dependency chain
           by moving the priority assignment to the thread function.
      
         - A couple of small updates to make the irq core RT safe.
      
         - Confine the irq_cpu_online/offline() API to the only left unfixable
           user Cavium Octeon so that it does not grow new usage.
      
         - A small documentation update
      
        Driver changes:
      
         - A large cross architecture rework to move irq_enter/exit() into the
           architecture code to make addressing the NOHZ_FULL/RCU issues
           simpler.
      
         - The obligatory new irq chip driver for Microchip EIC
      
         - Modularize a few irq chip drivers
      
         - Expand usage of devm_*() helpers throughout the driver code
      
         - The usual small fixes and improvements all over the place"
      
      * tag 'irq-core-2021-10-31' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (53 commits)
        h8300: Fix linux/irqchip.h include mess
        dt-bindings: irqchip: renesas-irqc: Document r8a774e1 bindings
        MIPS: irq: Avoid an unused-variable error
        genirq: Hide irq_cpu_{on,off}line() behind a deprecated option
        irqchip/mips-gic: Get rid of the reliance on irq_cpu_online()
        MIPS: loongson64: Drop call to irq_cpu_offline()
        irq: remove handle_domain_{irq,nmi}()
        irq: remove CONFIG_HANDLE_DOMAIN_IRQ_IRQENTRY
        irq: riscv: perform irqentry in entry code
        irq: openrisc: perform irqentry in entry code
        irq: csky: perform irqentry in entry code
        irq: arm64: perform irqentry in entry code
        irq: arm: perform irqentry in entry code
        irq: add a (temporary) CONFIG_HANDLE_DOMAIN_IRQ_IRQENTRY
        irq: nds32: avoid CONFIG_HANDLE_DOMAIN_IRQ
        irq: arc: avoid CONFIG_HANDLE_DOMAIN_IRQ
        irq: add generic_handle_arch_irq()
        irq: unexport handle_irq_desc()
        irq: simplify handle_domain_{irq,nmi}()
        irq: mips: simplify do_domain_IRQ()
        ...
      5a47ebe9
    • Linus Torvalds's avatar
      Merge tag 'for-5.16-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux · 037c50bf
      Linus Torvalds authored
      Pull btrfs updates from David Sterba:
       "The updates this time are more under the hood and enhancing existing
        features (subpage with compression and zoned namespaces).
      
        Performance related:
      
         - misc small inode logging improvements (+3% throughput, -11% latency
           on sample dbench workload)
      
         - more efficient directory logging: bulk item insertion, less tree
           searches and locking
      
         - speed up bulk insertion of items into a b-tree, which is used when
           logging directories, when running delayed items for directories
           (fsync and transaction commits) and when running the slow path
           (full sync) of an fsync (bulk creation run time -4%, deletion -12%)
      
        Core:
      
         - continued subpage support
            - make defragmentation work
            - make compression write work
      
         - zoned mode
            - support ZNS (zoned namespaces), zone capacity is number of
              usable blocks in each zone
            - add dedicated block group (zoned) for relocation, to prevent
              out of order writes in some cases
            - greedy block group reclaim, pick the ones with least usable
              space first
      
         - preparatory work for send protocol updates
      
         - error handling improvements
      
         - cleanups and refactoring
      
        Fixes:
      
         - lockdep warnings
            - in show_devname callback, on seeding device
            - device delete on loop device due to conversions to workqueues
      
         - fix deadlock between chunk allocation and chunk btree modifications
      
         - fix tracking of missing device count and status"
      
      * tag 'for-5.16-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux: (140 commits)
        btrfs: remove root argument from check_item_in_log()
        btrfs: remove root argument from add_link()
        btrfs: remove root argument from btrfs_unlink_inode()
        btrfs: remove root argument from drop_one_dir_item()
        btrfs: clear MISSING device status bit in btrfs_close_one_device
        btrfs: call btrfs_check_rw_degradable only if there is a missing device
        btrfs: send: prepare for v2 protocol
        btrfs: fix comment about sector sizes supported in 64K systems
        btrfs: update device path inode time instead of bd_inode
        fs: export an inode_update_time helper
        btrfs: fix deadlock when defragging transparent huge pages
        btrfs: sysfs: convert scnprintf and snprintf to sysfs_emit
        btrfs: make btrfs_super_block size match BTRFS_SUPER_INFO_SIZE
        btrfs: update comments for chunk allocation -ENOSPC cases
        btrfs: fix deadlock between chunk allocation and chunk btree modifications
        btrfs: zoned: use greedy gc for auto reclaim
        btrfs: check-integrity: stop storing the block device name in btrfsic_dev_state
        btrfs: use btrfs_get_dev_args_from_path in dev removal ioctls
        btrfs: add a btrfs_get_dev_args_from_path helper
        btrfs: handle device lookup with btrfs_dev_lookup_args
        ...
      037c50bf
    • Linus Torvalds's avatar
      btrfs: fix lzo_decompress_bio() kmap leakage · 2cf3f813
      Linus Torvalds authored
      Commit ccaa66c8 reinstated the kmap/kunmap that had been dropped in
      commit 8c945d32 ("btrfs: compression: drop kmap/kunmap from lzo").
      
      However, it seems to have done so incorrectly due to the change not
      reverting cleanly, and lzo_decompress_bio() ended up not having a
      matching "kunmap()" to the "kmap()" that was put back.
      
      Also, any assert that the page pointer is not NULL should be before the
      kmap() of said pointer, since otherwise you'd just oops in the kmap()
      before the assert would even trigger.
      
      I noticed this when trying to verify my btrfs merge, and things not
      adding up.  I'm doing this fixup before re-doing my merge, because this
      commit needs to also be backported to 5.15 (after verification from the
      btrfs people).
      
      Fixes: ccaa66c8 ("Revert 'btrfs: compression: drop kmap/kunmap from lzo'")
      Cc: David Sterba <dsterba@suse.com>
      Cc: stable@kernel.org
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      2cf3f813