1. 22 Mar, 2022 17 commits
    • Linus Torvalds's avatar
      Revert "random: block in /dev/urandom" · 0313bc27
      Linus Torvalds authored
      This reverts commit 6f98a4bf.
      
      It turns out we still can't do this.  Way too many platforms that don't
      have any real source of randomness at boot and no jitter entropy because
      they don't even have a cycle counter.
      
      As reported by Guenter Roeck:
      
       "This causes a large number of qemu boot test failures for various
        architectures (arm, m68k, microblaze, sparc32, xtensa are the ones I
        observed).
      
        Common denominator is that boot hangs at 'Saving random seed:'"
      
      This isn't hugely unexpected - we tried it, it failed, so now we'll
      revert it.
      
      Link: https://lore.kernel.org/all/20220322155820.GA1745955@roeck-us.net/Reported-and-bisected-by: default avatarGuenter Roeck <linux@roeck-us.net>
      Cc: Jason Donenfeld <Jason@zx2c4.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      0313bc27
    • Linus Torvalds's avatar
      Merge tag 'audit-pr-20220321' of git://git.kernel.org/pub/scm/linux/kernel/git/pcmoore/audit · b47d5a4f
      Linus Torvalds authored
      Pull audit update from Paul Moore:
       "Just one audit patch queued for v5.18:
      
         - Change the AUDIT_TIME_* record generation so that they are
           generated at syscall exit time and subject to all of the normal
           syscall exit filtering.
      
           This should help reduce noise and ensure those records which are
           most relevant to the admin's audit configuration are recorded in
           the audit log"
      
      * tag 'audit-pr-20220321' of git://git.kernel.org/pub/scm/linux/kernel/git/pcmoore/audit:
        audit: log AUDIT_TIME_* records only from rules
      b47d5a4f
    • Linus Torvalds's avatar
      Merge tag 'selinux-pr-20220321' of git://git.kernel.org/pub/scm/linux/kernel/git/pcmoore/selinux · c269497d
      Linus Torvalds authored
      Pull selinux updates from Paul Moore:
       "We've got a number of SELinux patches queued up, the highlights are:
      
         - Fixup the security_fs_context_parse_param() LSM hook so it executes
           all of the LSM hook implementations unless a serious error occurs.
      
           We also correct the SELinux hook implementation so that it returns
           zero on success.
      
         - In addition to a few SELinux mount option parsing fixes, we
           simplified the parsing by moving it earlier in the process.
      
           The logic was that it was unlikely an admin/user would use the new
           mount API and not have the policy loaded before passing the SELinux
           options.
      
         - Properly fixed the LSM/SELinux/SCTP hooks with the addition of the
           security_sctp_assoc_established() hook.
      
           This work was done in conjunction with the netdev folks and should
           complete the move of the SCTP labeling from the endpoints to the
           associations.
      
         - Fixed a variety of sparse warnings caused by changes in the "__rcu"
           markings of some core kernel structures.
      
         - Ensure we access the superblock's LSM security blob using the
           stacking-safe accessors.
      
         - Added the ability for the kernel to always allow FIOCLEX and
           FIONCLEX if the "ioctl_skip_cloexec" policy capability is
           specified.
      
         - Various constifications improvements, type casting improvements,
           additional return value checks, and dead code/parameter removal.
      
         - Documentation fixes"
      
      * tag 'selinux-pr-20220321' of git://git.kernel.org/pub/scm/linux/kernel/git/pcmoore/selinux: (23 commits)
        selinux: shorten the policy capability enum names
        docs: fix 'make htmldocs' warning in SCTP.rst
        selinux: allow FIOCLEX and FIONCLEX with policy capability
        selinux: use correct type for context length
        selinux: drop return statement at end of void functions
        security: implement sctp_assoc_established hook in selinux
        security: add sctp_assoc_established hook
        selinux: parse contexts for mount options early
        selinux: various sparse fixes
        selinux: try to use preparsed sid before calling parse_sid()
        selinux: Fix selinux_sb_mnt_opts_compat()
        LSM: general protection fault in legacy_parse_param
        selinux: fix a type cast problem in cred_init_security()
        selinux: drop unused macro
        selinux: simplify cred_init_security
        selinux: do not discard const qualifier in cast
        selinux: drop unused parameter of avtab_insert_node
        selinux: drop cast to same type
        selinux: enclose macro arguments in parenthesis
        selinux: declare name parameter of hash_eval const
        ...
      c269497d
    • Linus Torvalds's avatar
      Merge tag 'integrity-v5.18' of git://git.kernel.org/pub/scm/linux/kernel/git/zohar/linux-integrity · 7f313ff0
      Linus Torvalds authored
      Pull integrity subsystem updates from Mimi Zohar:
       "Except for extending the 'encrypted' key type to support user provided
        data, the rest is code cleanup, __setup() usage bug fix, and a trivial
        change"
      
      * tag 'integrity-v5.18' of git://git.kernel.org/pub/scm/linux/kernel/git/zohar/linux-integrity:
        MAINTAINERS: add missing security/integrity/platform_certs
        EVM: fix the evm= __setup handler return value
        KEYS: encrypted: Instantiate key with user-provided decrypted data
        ima: define ima_max_digest_data struct without a flexible array variable
        ima: rename IMA_ACTION_FLAGS to IMA_NONACTION_FLAGS
        ima: Return error code obtained from securityfs functions
        MAINTAINERS: add missing "security/integrity" directory
        ima: Fix trivial typos in the comments
      7f313ff0
    • Linus Torvalds's avatar
      Merge tag 'Smack-for-5.18' of https://github.com/cschaufler/smack-next · 2c5a5358
      Linus Torvalds authored
      Pull smack update from Casey Schaufler:
       "A single fix to repair an incorrect use of ntohs() in IPv6 audit code.
        It's very minor and went unnoticed until lkp found it.
      
        It's been in next and passes all tests"
      
      * tag 'Smack-for-5.18' of https://github.com/cschaufler/smack-next:
        Fix incorrect type in assignment of ipv6 port for audit
      2c5a5358
    • Linus Torvalds's avatar
      Merge branch 'keys-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs · 6ca014cd
      Linus Torvalds authored
      Pull watch_queue fixes from David Howells:
       "Here are fixes for a couple more watch_queue bugs, both found by syzbot:
      
         - Fix error cleanup in watch_queue_set_size() where it tries to clean
           up all the pointers in the page list, even if they've not been
           allocated yet[1]. Unfortunately, __free_page() doesn't treat a NULL
           pointer as being "do nothing".
      
           A second report[2] looks like it's probably the same bug, but on
           arm64 rather than x86_64, but there's no reproducer.
      
         - Fix a missing kfree in free_watch() to actually free the watch[3]"
      
      Link: https://lore.kernel.org/r/000000000000b1807c05daad8f98@google.com/ [1]
      Link: https://lore.kernel.org/r/000000000000035b9c05daae8a5e@google.com/ [2]
      Link: https://lore.kernel.org/r/000000000000bc8eaf05dab91c63@google.com/ [3]
      
      * 'keys-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs:
        watch_queue: Actually free the watch
        watch_queue: Fix NULL dereference in error cleanup
      6ca014cd
    • Linus Torvalds's avatar
      Merge tag 'bounds-fixes-v5.18-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux · 8565d644
      Linus Torvalds authored
      Pull bounds fixes from Kees Cook:
       "These are a handful of buffer and array bounds fixes that I've been
        carrying in preparation for the coming memcpy improvements and the
        enabling of '-Warray-bounds' globally.
      
        There are additional similar fixes in other maintainer's trees, but
        these ended up getting carried by me. :)"
      
      * tag 'bounds-fixes-v5.18-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux:
        media: omap3isp: Use struct_group() for memcpy() region
        tpm: vtpm_proxy: Check length to avoid compiler warning
        alpha: Silence -Warray-bounds warnings
        m68k: cmpxchg: Dereference matching size
        intel_th: msu: Use memset_startat() for clearing hw header
        KVM: x86: Replace memset() "optimization" with normal per-field writes
      8565d644
    • Linus Torvalds's avatar
      Merge tag 'overflow-v5.18-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux · d0858cbd
      Linus Torvalds authored
      Pull overflow updates from Kees Cook:
       "These changes come in roughly two halves: support of Gustavo A. R.
        Silva's struct_size() work via additional helpers for catching
        overflow allocation size calculations, and conversions of selftests to
        KUnit (which includes some tweaks for UML + Clang):
      
         - Convert overflow selftest to KUnit
      
         - Convert stackinit selftest to KUnit
      
         - Implement size_t saturating arithmetic helpers
      
         - Allow struct_size() to be used in initializers"
      
      * tag 'overflow-v5.18-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux:
        lib: stackinit: Convert to KUnit
        um: Allow builds with Clang
        lib: overflow: Convert to Kunit
        overflow: Provide constant expression struct_size
        overflow: Implement size_t saturating arithmetic helpers
        test_overflow: Regularize test reporting output
      d0858cbd
    • Linus Torvalds's avatar
      Merge tag 'hardening-v5.18-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux · 2142b7f0
      Linus Torvalds authored
      Pull kernel hardening updates from Kees Cook:
      
       - Add arm64 Shadow Call Stack support for GCC 12 (Dan Li)
      
       - Avoid memset with stack offset randomization under Clang (Marco
         Elver)
      
       - Clean up stackleak plugin to play nice with .noinstr (Kees Cook)
      
       - Check stack depth for greater usercopy hardening coverage (Kees Cook)
      
      * tag 'hardening-v5.18-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux:
        arm64: Add gcc Shadow Call Stack support
        m68k: Implement "current_stack_pointer"
        xtensa: Implement "current_stack_pointer"
        usercopy: Check valid lifetime via stack depth
        stack: Constrain and fix stack offset randomization with Clang builds
        stack: Introduce CONFIG_RANDOMIZE_KSTACK_OFFSET
        gcc-plugins/stackleak: Ignore .noinstr.text and .entry.text
        gcc-plugins/stackleak: Exactly match strings instead of prefixes
        gcc-plugins/stackleak: Provide verbose mode
      2142b7f0
    • Linus Torvalds's avatar
      Merge tag 'pstore-v5.18-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux · fd2d7a4a
      Linus Torvalds authored
      Pull pstore updates from Kees Cook:
      
       - Don't use semaphores in always-atomic-context code (Jann Horn)
      
       - Add "ECC:" prefix to ECC messages (Vincent Whitchurch)
      
      * tag 'pstore-v5.18-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux:
        pstore: Don't use semaphores in always-atomic-context code
        pstore: Add prefix to ECC messages
      fd2d7a4a
    • Linus Torvalds's avatar
      Merge tag 'execve-v5.18-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux · b7a801f3
      Linus Torvalds authored
      Pull execve updates from Kees Cook:
       "Execve and binfmt updates.
      
        Eric and I have stepped up to be the active maintainers of this area,
        so here's our first collection. The bulk of the work was in coredump
        handling fixes; additional details are noted below:
      
         - Handle unusual AT_PHDR offsets (Akira Kawata)
      
         - Fix initial mapping size when PT_LOADs are not ordered (Alexey
           Dobriyan)
      
         - Move more code under CONFIG_COREDUMP (Alexey Dobriyan)
      
         - Fix missing mmap_lock in file_files_note (Eric W. Biederman)
      
         - Remove a.out support for alpha and m68k (Eric W. Biederman)
      
         - Include first pages of non-exec ELF libraries in coredump (Jann
           Horn)
      
         - Don't write past end of notes for regset gap in coredump (Rick
           Edgecombe)
      
         - Comment clean-ups (Tom Rix)
      
         - Force single empty string when argv is empty (Kees Cook)
      
         - Add NULL argv selftest (Kees Cook)
      
         - Properly redefine PT_GNU_* in terms of PT_LOOS (Kees Cook)
      
         - MAINTAINERS: Update execve entry with tree (Kees Cook)
      
         - Introduce initial KUnit testing for binfmt_elf (Kees Cook)"
      
      * tag 'execve-v5.18-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux:
        binfmt_elf: Don't write past end of notes for regset gap
        a.out: Stop building a.out/osf1 support on alpha and m68k
        coredump: Don't compile flat_core_dump when coredumps are disabled
        coredump: Use the vma snapshot in fill_files_note
        coredump/elf: Pass coredump_params into fill_note_info
        coredump: Remove the WARN_ON in dump_vma_snapshot
        coredump: Snapshot the vmas in do_coredump
        coredump: Move definition of struct coredump_params into coredump.h
        binfmt_elf: Introduce KUnit test
        ELF: Properly redefine PT_GNU_* in terms of PT_LOOS
        MAINTAINERS: Update execve entry with more details
        exec: cleanup comments
        fs/binfmt_elf: Refactor load_elf_binary function
        fs/binfmt_elf: Fix AT_PHDR for unusual ELF files
        binfmt: move more stuff undef CONFIG_COREDUMP
        selftests/exec: Test for empty string on NULL argv
        exec: Force single empty string when argv is empty
        coredump: Also dump first pages of non-executable ELF libraries
        ELF: fix overflow in total mapping size calculation
      b7a801f3
    • Linus Torvalds's avatar
      Merge tag 'spi-v5.18' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi · ad9c6ee6
      Linus Torvalds authored
      Pull spi updates from Mark Brown:
       "The overwhelming bulk of this pull request is a change from Uwe
        Kleine-König which changes the return type of the remove() function to
        void as part of some wider work he's doing to do this for all bus
        types, causing updates to most SPI device drivers. The branch with
        that on has been cross merged with a couple of other trees which added
        new SPI drivers this cycle, I'm not expecting any build issues
        resulting from the change.
      
        Otherwise it's been a relatively quiet release with some new device
        support, a few minor features and the welcome completion of the
        conversion of the subsystem to use GPIO descriptors rather than
        numbers:
      
         - Change return type of remove() to void.
      
         - Completion of the conversion of SPI controller drivers to use GPIO
           descriptors rather than numbers.
      
         - Quite a few DT schema conversions.
      
         - Support for multiple SPI devices on a bus in ACPI systems.
      
         - Big overhaul of the PXA2xx SPI driver.
      
         - Support for AMD AMDI0062, Intel Raptor Lake, Mediatek MT7986 and
           MT8186, nVidia Tegra210 and Tegra234, Renesas RZ/V2L, Tesla FSD and
           Sunplus SP7021"
      
      [ And this is obviously where that spi change that snuck into the
        regulator tree _should_ have been :^]
      
      * tag 'spi-v5.18' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi: (124 commits)
        spi: fsi: Implement a timeout for polling status
        spi: Fix erroneous sgs value with min_t()
        spi: tegra20: Use of_device_get_match_data()
        spi: mediatek: add ipm design support for MT7986
        spi: Add compatible for MT7986
        spi: sun4i: fix typos in comments
        spi: mediatek: support tick_delay without enhance_timing
        spi: Update clock-names property for arm pl022
        spi: rockchip-sfc: fix platform_get_irq.cocci warning
        spi: s3c64xx: Add spi port configuration for Tesla FSD SoC
        spi: dt-bindings: samsung: Add fsd spi compatible
        spi: topcliff-pch: Prevent usage of potentially stale DMA device
        spi: tegra210-quad: combined sequence mode
        spi: tegra210-quad: add acpi support
        spi: npcm-fiu: Fix typo ("npxm")
        spi: Fix Tegra QSPI example
        spi: qup: replace spin_lock_irqsave by spin_lock in hard IRQ
        spi: cadence: fix platform_get_irq.cocci warning
        spi: Update NXP Flexspi maintainer details
        dt-bindings: mfd: maxim,max77802: Convert to dtschema
        ...
      ad9c6ee6
    • Linus Torvalds's avatar
      Merge tag 'regulator-v5.18' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator · d6ccf451
      Linus Torvalds authored
      Pull regulator updates from Mark Brown:
       "Quite a quiet release for the regulator API, mainly a few new drivers
        plus a lot of fixes for the Raspberry Pi panel driver.
      
        There's also a SPI commit in here which I managed to apply to the
        wrong tree and then didn't notice until there were too many commits on
        top of it, sorry about that.
      
         - Make it easier to use the virtual consumer test driver with DT
           systems.
      
         - Substantial overhaul providing various fixes and robustness
           improvements for the Raspberry Pi panel driver.
      
         - Support for Qualcomm PMX65 and SDX65, Richtek RT5190A, and Texas
           Instruments TPS62864x"
      
      * tag 'regulator-v5.18' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator: (26 commits)
        regulator: qcom-rpmh: Add support for SDX65
        regulator: dt-bindings: Add PMX65 compatibles
        regulator: vctrl: Use min() instead of doing it manually
        regulator: rt5190a: Add support for Richtek RT5190A PMIC
        regulator: Add bindings for Richtek RT5190A PMIC
        regulator: Convert TPS62360 binding to json-schema
        regulator: cleanup comments
        regulator: virtual: add devicetree support
        regulator: virtual: warn against production use
        regulator: virtual: use dev_err_probe()
        regulator: tps62864: Fix bindings for SW property
        regulator: Add support for TPS6286x
        regulator: Add bindings for TPS62864x
        regulator/rpi-panel-attiny: Use two transactions for I2C read
        regulator/rpi-panel-attiny: Use the regmap cache
        regulator: rpi-panel: Remove get_brightness hook
        regulator: rpi-panel: Add GPIO control for panel and touch resets
        regulator: rpi-panel: Convert to drive lines directly
        regulator: rpi-panel: Ensure the backlight is off during probe.
        regulator: rpi-panel: Serialise operations.
        ...
      d6ccf451
    • Linus Torvalds's avatar
      Merge tag 'regmap-v5.18' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regmap · a50a8c38
      Linus Torvalds authored
      Pull regmap updates from Mark Brown:
       "A couple of small fixes, plus some new features that enable us to
        handle devices that reformat register addresses depending on the bus
        used to handle the control interface more gracefully"
      
      * tag 'regmap-v5.18' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regmap:
        regmap: allow a defined reg_base to be added to every address
        regmap: add configurable downshift for addresses
        regmap: irq: cleanup comments
        regmap-irq: Fix typo in comment
      a50a8c38
    • Linus Torvalds's avatar
      Merge tag 'hwmon-for-v5.18' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging · fd276877
      Linus Torvalds authored
      Pull hwmon updates from Guenter Roeck:
       "New drivers:
      
         - Texas Instruments TMP464 and TMP468 driver
      
         - Vicor PLI1209BC Digital Supervisor driver
      
         - ASUS EC driver
      
        Improvements to existing drivers:
      
         - adt7x10:
             - Convert to use regmap
             - convert to use with_info API
             - use hwmon_notify_event
             - other cleanup
      
         - aquacomputer_d5next:
             - Add support for Aquacomputer Farbwerk 360
      
         - asus_wmi_sensors:
             - Add ASUS ROG STRIX B450-F GAMING II
      
         - asus_wmi_ec_sensors:
             - Support T_Sensor on Prime X570-Pro
             - Deprecate driver (replaced by new driver)
      
         - axi-fan-control:
             - Use hwmon_notify_event
      
         - dell-smm:
             - Clean up CONFIG_I8K
             - disable fan type support for Inspiron 3505
             - various other cleanup
      
         - hwmon core:
             - Report attribute name with udev events
             - Add "label" attribute to ABI,
             - Add support for pwm auto channels attribute
      
         - max6639:
             - Add regulator support
      
         - lm70:
             - Add support for TI TMP125
      
         - lm83:
             - Cleanup, convert to use with_info API
      
         - mlxreg-fan:
             - Use pwm attribute for setting fan speed low limit
      
         - nct6775:
             - Add board ID's for ASUS ROG STRIX Z390/Z490/X570-* / PRIME
               X570-P, PRIME B550-PLUS, ASUS Pro B550M-C/PRIME B550M-A
             - Add support for TSI temperature registers
      
         - occ:
             - Add various new sysfs attributes
      
         - pmbus core:
             - Handle VIN unit off status
             - Add regulator supply into macro
             - Add get_error_flags support to regulator ops
      
         - pmbus/adm1275:
             - Allow setting sample averaging
      
         - pmbus/lm25066:
             - Add regulator support
      
         - pmbus/xdpe12284:
             - Add support for xdpe11280
             - register as regulator
      
         - powr1220:
             - Convert to with_info API
             - Add support for Lattice's POWR1014 power manager IC
      
         - sch56xx:
             - Cleanup and minor improvements
      
         - sch5627:
             - Add pwmX_auto_channels_temp support
      
         - tc654:
             - Add thermal_cooling device support"
      
      * tag 'hwmon-for-v5.18' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging: (86 commits)
        hwmon: (dell-smm) Add Inspiron 3505 to fan type blacklist
        hwmon: (pmbus) Add Vin unit off handling
        hwmon: (scpi-hwmon): Use of_device_get_match_data()
        hwmon: (axi-fan-control) Use hwmon_notify_event
        hwmon: (vexpress-hwmon) Use of_device_get_match_data()
        hwmon: Add driver for Texas Instruments TMP464 and TMP468
        dt-bindings: hwmon: add tmp464.yaml
        dt-bindings: hwmon: Add sample averaging properties for ADM1275
        hwmon: (adm1275) Allow setting sample averaging
        hwmon: (xdpe12284) Add regulator support
        hwmon: (xdpe12284) Add support for xdpe11280
        dt-bindings: trivial-devices: Add xdpe11280
        hwmon: (aquacomputer_d5next) Add support for Aquacomputer Farbwerk 360
        hwmon: (sch5627) Add pwmX_auto_channels_temp support
        hwmon: (core) Add support for pwm auto channels attribute
        hwmon: (lm70) Add ti,tmp125 support
        dt-bindings: Add ti,tmp125 temperature sensor binding
        hwmon: (pmbus/pli1209bc) Add regulator support
        hwmon: (pmbus) Add support for pli1209bc
        dt-bindings:trivial-devices: Add pli1209bc
        ...
      fd276877
    • Linus Torvalds's avatar
      Merge tag 'for-5.18/alloc-cleanups-2022-03-18' of git://git.kernel.dk/linux-block · d347ee54
      Linus Torvalds authored
      Pull bio_alloc() cleanups from Jens Axboe:
       "Filesystem cleanups to pass the bio op to bio_alloc() instead of
        setting it just before bio submission".
      
      * tag 'for-5.18/alloc-cleanups-2022-03-18' of git://git.kernel.dk/linux-block:
        f2fs: pass the bio operation to bio_alloc_bioset
        f2fs: don't pass a bio to f2fs_target_device
        nilfs2: pass the operation to bio_alloc
        ext4: pass the operation to bio_alloc
        mpage: pass the operation to bio_alloc
      d347ee54
    • Linus Torvalds's avatar
      Merge tag 'for-5.18/drivers-2022-03-18' of git://git.kernel.dk/linux-block · 69d1dea8
      Linus Torvalds authored
      Pull block driver updates from Jens Axboe:
      
       - NVMe updates via Christoph:
            - add vectored-io support for user-passthrough (Kanchan Joshi)
            - add verbose error logging (Alan Adamson)
            - support buffered I/O on block devices in nvmet (Chaitanya
              Kulkarni)
            - central discovery controller support (Martin Belanger)
            - fix and extended the globally unique idenfier validation
              (Christoph)
            - move away from the deprecated IDA APIs (Sagi Grimberg)
            - misc code cleanup (Keith Busch, Max Gurtovoy, Qinghua Jin,
              Chaitanya Kulkarni)
            - add lockdep annotations for in-kernel sockets (Chris Leech)
            - use vmalloc for ANA log buffer (Hannes Reinecke)
            - kerneldoc fixes (Chaitanya Kulkarni)
            - cleanups (Guoqing Jiang, Chaitanya Kulkarni, Christoph)
            - warn about shared namespaces without multipathing (Christoph)
      
       - MD updates via Song with a set of cleanups (Christoph, Mariusz, Paul,
         Erik, Dirk)
      
       - loop cleanups and queue depth configuration (Chaitanya)
      
       - null_blk cleanups and fixes (Chaitanya)
      
       - Use descriptive init/exit names in virtio_blk (Randy)
      
       - Use bvec_kmap_local() in drivers (Christoph)
      
       - bcache fixes (Mingzhe)
      
       - xen blk-front persistent grant speedups (Juergen)
      
       - rnbd fix and cleanup (Gioh)
      
       - Misc fixes (Christophe, Colin)
      
      * tag 'for-5.18/drivers-2022-03-18' of git://git.kernel.dk/linux-block: (76 commits)
        virtio_blk: eliminate anonymous module_init & module_exit
        nvme: warn about shared namespaces without CONFIG_NVME_MULTIPATH
        nvme: remove nvme_alloc_request and nvme_alloc_request_qid
        nvme: cleanup how disk->disk_name is assigned
        nvmet: move the call to nvmet_ns_changed out of nvmet_ns_revalidate
        nvmet: use snprintf() with PAGE_SIZE in configfs
        nvmet: don't fold lines
        nvmet-rdma: fix kernel-doc warning for nvmet_rdma_device_removal
        nvmet-fc: fix kernel-doc warning for nvmet_fc_unregister_targetport
        nvmet-fc: fix kernel-doc warning for nvmet_fc_register_targetport
        nvme-tcp: lockdep: annotate in-kernel sockets
        nvme-tcp: don't fold the line
        nvme-tcp: don't initialize ret variable
        nvme-multipath: call bio_io_error in nvme_ns_head_submit_bio
        nvme-multipath: use vmalloc for ANA log buffer
        xen/blkfront: speed up purge_persistent_grants()
        raid5: initialize the stripe_head embeeded bios as needed
        raid5-cache: statically allocate the recovery ra bio
        raid5-cache: fully initialize flush_bio when needed
        raid5-ppl: fully initialize the bio in ppl_new_iounit
        ...
      69d1dea8
  2. 21 Mar, 2022 23 commits
    • Linus Torvalds's avatar
      Merge tag 'for-5.18/block-2022-03-18' of git://git.kernel.dk/linux-block · 616355cc
      Linus Torvalds authored
      Pull block updates from Jens Axboe:
      
       - BFQ cleanups and fixes (Yu, Zhang, Yahu, Paolo)
      
       - blk-rq-qos completion fix (Tejun)
      
       - blk-cgroup merge fix (Tejun)
      
       - Add offline error return value to distinguish it from an IO error on
         the device (Song)
      
       - IO stats fixes (Zhang, Christoph)
      
       - blkcg refcount fixes (Ming, Yu)
      
       - Fix for indefinite dispatch loop softlockup (Shin'ichiro)
      
       - blk-mq hardware queue management improvements (Ming)
      
       - sbitmap dead code removal (Ming, John)
      
       - Plugging merge improvements (me)
      
       - Show blk-crypto capabilities in sysfs (Eric)
      
       - Multiple delayed queue run improvement (David)
      
       - Block throttling fixes (Ming)
      
       - Start deprecating auto module loading based on dev_t (Christoph)
      
       - bio allocation improvements (Christoph, Chaitanya)
      
       - Get rid of bio_devname (Christoph)
      
       - bio clone improvements (Christoph)
      
       - Block plugging improvements (Christoph)
      
       - Get rid of genhd.h header (Christoph)
      
       - Ensure drivers use appropriate flush helpers (Christoph)
      
       - Refcounting improvements (Christoph)
      
       - Queue initialization and teardown improvements (Ming, Christoph)
      
       - Misc fixes/improvements (Barry, Chaitanya, Colin, Dan, Jiapeng,
         Lukas, Nian, Yang, Eric, Chengming)
      
      * tag 'for-5.18/block-2022-03-18' of git://git.kernel.dk/linux-block: (127 commits)
        block: cancel all throttled bios in del_gendisk()
        block: let blkcg_gq grab request queue's refcnt
        block: avoid use-after-free on throttle data
        block: limit request dispatch loop duration
        block/bfq-iosched: Fix spelling mistake "tenative" -> "tentative"
        sr: simplify the local variable initialization in sr_block_open()
        block: don't merge across cgroup boundaries if blkcg is enabled
        block: fix rq-qos breakage from skipping rq_qos_done_bio()
        block: flush plug based on hardware and software queue order
        block: ensure plug merging checks the correct queue at least once
        block: move rq_qos_exit() into disk_release()
        block: do more work in elevator_exit
        block: move blk_exit_queue into disk_release
        block: move q_usage_counter release into blk_queue_release
        block: don't remove hctx debugfs dir from blk_mq_exit_queue
        block: move blkcg initialization/destroy into disk allocation/release handler
        sr: implement ->free_disk to simplify refcounting
        sd: implement ->free_disk to simplify refcounting
        sd: delay calling free_opal_dev
        sd: call sd_zbc_release_disk before releasing the scsi_device reference
        ...
      616355cc
    • Linus Torvalds's avatar
      Merge tag 'for-5.18/io_uring-statx-2022-03-18' of git://git.kernel.dk/linux-block · b080cee7
      Linus Torvalds authored
      Pull io_uring statx fixes from Jens Axboe:
       "On top of the main io_uring branch, this is to ensure that the
        filename component of statx is stable after submit.
      
        That requires a few VFS related changes"
      
      * tag 'for-5.18/io_uring-statx-2022-03-18' of git://git.kernel.dk/linux-block:
        io-uring: Make statx API stable
      b080cee7
    • Linus Torvalds's avatar
      Merge tag 'for-5.18/io_uring-2022-03-18' of git://git.kernel.dk/linux-block · af472a9e
      Linus Torvalds authored
      Pull io_uring updates from Jens Axboe:
      
       - Fixes for current file position. Still doesn't have the f_pos_lock
         sorted, but it's a step in the right direction (Dylan)
      
       - Tracing updates (Dylan, Stefan)
      
       - Improvements to io-wq locking (Hao)
      
       - Improvements for provided buffers (me, Pavel)
      
       - Support for registered file descriptors (me, Xiaoguang)
      
       - Support for ring messages (me)
      
       - Poll improvements (me)
      
       - Fix for fixed buffers and non-iterator reads/writes (me)
      
       - Support for NAPI on sockets (Olivier)
      
       - Ring quiesce improvements (Usama)
      
       - Misc fixes (Olivier, Pavel)
      
      * tag 'for-5.18/io_uring-2022-03-18' of git://git.kernel.dk/linux-block: (42 commits)
        io_uring: terminate manual loop iterator loop correctly for non-vecs
        io_uring: don't check unrelated req->open.how in accept request
        io_uring: manage provided buffers strictly ordered
        io_uring: fold evfd signalling under a slower path
        io_uring: thin down io_commit_cqring()
        io_uring: shuffle io_eventfd_signal() bits around
        io_uring: remove extra barrier for non-sqpoll iopoll
        io_uring: fix provided buffer return on failure for kiocb_done()
        io_uring: extend provided buf return to fails
        io_uring: refactor timeout cancellation cqe posting
        io_uring: normilise naming for fill_cqe*
        io_uring: cache poll/double-poll state with a request flag
        io_uring: cache req->apoll->events in req->cflags
        io_uring: move req->poll_refs into previous struct hole
        io_uring: make tracing format consistent
        io_uring: recycle apoll_poll entries
        io_uring: remove duplicated member check for io_msg_ring_prep()
        io_uring: allow submissions to continue on error
        io_uring: recycle provided buffers if request goes async
        io_uring: ensure reads re-import for selected buffers
        ...
      af472a9e
    • Linus Torvalds's avatar
      Merge branch 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 · 93e220a6
      Linus Torvalds authored
      Pull crypto updates from Herbert Xu:
       "API:
         - hwrng core now credits for low-quality RNG devices.
      
        Algorithms:
         - Optimisations for neon aes on arm/arm64.
         - Add accelerated crc32_be on arm64.
         - Add ffdheXYZ(dh) templates.
         - Disallow hmac keys < 112 bits in FIPS mode.
         - Add AVX assembly implementation for sm3 on x86.
      
        Drivers:
         - Add missing local_bh_disable calls for crypto_engine callback.
         - Ensure BH is disabled in crypto_engine callback path.
         - Fix zero length DMA mappings in ccree.
         - Add synchronization between mailbox accesses in octeontx2.
         - Add Xilinx SHA3 driver.
         - Add support for the TDES IP available on sama7g5 SoC in atmel"
      
      * 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6: (137 commits)
        crypto: xilinx - Turn SHA into a tristate and allow COMPILE_TEST
        MAINTAINERS: update HPRE/SEC2/TRNG driver maintainers list
        crypto: dh - Remove the unused function dh_safe_prime_dh_alg()
        hwrng: nomadik - Change clk_disable to clk_disable_unprepare
        crypto: arm64 - cleanup comments
        crypto: qat - fix initialization of pfvf rts_map_msg structures
        crypto: qat - fix initialization of pfvf cap_msg structures
        crypto: qat - remove unneeded assignment
        crypto: qat - disable registration of algorithms
        crypto: hisilicon/qm - fix memset during queues clearing
        crypto: xilinx: prevent probing on non-xilinx hardware
        crypto: marvell/octeontx - Use swap() instead of open coding it
        crypto: ccree - Fix use after free in cc_cipher_exit()
        crypto: ccp - ccp_dmaengine_unregister release dma channels
        crypto: octeontx2 - fix missing unlock
        hwrng: cavium - fix NULL but dereferenced coccicheck error
        crypto: cavium/nitrox - don't cast parameter in bit operations
        crypto: vmx - add missing dependencies
        MAINTAINERS: Add maintainer for Xilinx ZynqMP SHA3 driver
        crypto: xilinx - Add Xilinx SHA3 driver
        ...
      93e220a6
    • Linus Torvalds's avatar
      Merge tag 'random-5.18-rc1-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/crng/random · 5628b8de
      Linus Torvalds authored
      Pull random number generator updates from Jason Donenfeld:
       "There have been a few important changes to the RNG's crypto, but the
        intent for 5.18 has been to shore up the existing design as much as
        possible with modern cryptographic functions and proven constructions,
        rather than actually changing up anything fundamental to the RNG's
        design.
      
        So it's still the same old RNG at its core as before: it still counts
        entropy bits, and collects from the various sources with the same
        heuristics as before, and so forth. However, the cryptographic
        algorithms that transform that entropic data into safe random numbers
        have been modernized.
      
        Just as important, if not more, is that the code has been cleaned up
        and re-documented. As one of the first drivers in Linux, going back to
        1.3.30, its general style and organization was showing its age and
        becoming both a maintenance burden and an auditability impediment.
      
        Hopefully this provides a more solid foundation to build on for the
        future. I encourage you to open up the file in full, and maybe you'll
        remark, "oh, that's what it's doing," and enjoy reading it. That, at
        least, is the eventual goal, which this pull begins working toward.
      
        Here's a summary of the various patches in this pull:
      
         - /dev/urandom and /dev/random now do the same thing, per the patch
           we discussed on the list. I think this is worth trying out. If it
           does appear problematic, I've made sure to keep it standalone and
           revertible without any conflicts.
      
         - Fixes and cleanups for numerous integer type problems, locking
           issues, and general code quality concerns.
      
         - The input pool's LFSR has been replaced with a cryptographically
           secure hash function, which has security and performance benefits
           alike, and consequently allows us to count entropy bits linearly.
      
         - The pre-init injection now uses a real hash function too, instead
           of an LFSR or vanilla xor.
      
         - The interrupt handler's fast_mix() function now uses one round of
           SipHash, rather than the fake crypto that was there before.
      
         - All additions of RDRAND and RDSEED now go through the input pool's
           hash function, in part to mitigate ridiculous hypothetical CPU
           backdoors, but more so to have a consistent interface for ingesting
           entropy that's easy to analyze, making everything happen one way,
           instead of a potpourri of different ways.
      
         - The crng now works on per-cpu data, while also being in accordance
           with the actual "fast key erasure RNG" design. This allows us to
           fix several boot-time race complications associated with the prior
           dynamically allocated model, eliminates much locking, and makes our
           backtrack protection more robust.
      
         - Batched entropy now erases doled out values so that it's backtrack
           resistant.
      
         - Working closely with Sebastian, the interrupt handler no longer
           needs to take any locks at all, as we punt the
           synchronized/expensive operations to a workqueue. This is
           especially nice for PREEMPT_RT, where taking spinlocks in irq
           context is problematic. It also makes the handler faster for the
           rest of us.
      
         - Also working with Sebastian, we now do the right thing on CPU
           hotplug, so that we don't use stale entropy or fail to accumulate
           new entropy when CPUs come back online.
      
         - We handle virtual machines that fork / clone / snapshot, using the
           "vmgenid" ACPI specification for retrieving a unique new RNG seed,
           which we can use to also make WireGuard (and in the future, other
           things) safe across VM forks.
      
         - Around boot time, we now try to reseed more often if enough entropy
           is available, before settling on the usual 5 minute schedule.
      
         - Last, but certainly not least, the documentation in the file has
           been updated considerably"
      
      * tag 'random-5.18-rc1-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/crng/random: (60 commits)
        random: check for signal and try earlier when generating entropy
        random: reseed more often immediately after booting
        random: make consistent usage of crng_ready()
        random: use SipHash as interrupt entropy accumulator
        wireguard: device: clear keys on VM fork
        random: provide notifier for VM fork
        random: replace custom notifier chain with standard one
        random: do not export add_vmfork_randomness() unless needed
        virt: vmgenid: notify RNG of VM fork and supply generation ID
        ACPI: allow longer device IDs
        random: add mechanism for VM forks to reinitialize crng
        random: don't let 644 read-only sysctls be written to
        random: give sysctl_random_min_urandom_seed a more sensible value
        random: block in /dev/urandom
        random: do crng pre-init loading in worker rather than irq
        random: unify cycles_t and jiffies usage and types
        random: cleanup UUID handling
        random: only wake up writers after zap if threshold was passed
        random: round-robin registers as ulong, not u32
        random: clear fast pool, crng, and batches in cpuhp bring up
        ...
      5628b8de
    • Linus Torvalds's avatar
      Merge tag 'pnp-5.18-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm · f400bea2
      Linus Torvalds authored
      Pull PnP update from Rafael Wysocki:
       "Replace acpi_bus_get_device() in the PNP code with
        acpi_fetch_acpi_dev() which is better"
      
      * tag 'pnp-5.18-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
        PNP: Replace acpi_bus_get_device()
      f400bea2
    • Linus Torvalds's avatar
      Merge tag 'thermal-5.18-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm · f648372d
      Linus Torvalds authored
      Pull thermal control updates from Rafael Wysocki:
       "As far as new functionality is concerned, there is a new thermal
        driver for the Intel Hardware Feedback Interface (HFI) along with some
        intel-speed-select utility changes to support it. There are also new
        DT compatible strings for a couple of platforms, and thermal zones on
        some platforms will be registered as HWmon sensors now.
      
        Apart from the above, some drivers are updated (fixes mostly) and
        there is a new piece of documentation for the Intel DPTF (Dynamic
        Power and Thermal Framework) sysfs interface.
      
        Specifics:
      
         - Add a new thermal driver for the Intel Hardware Feedback Interface
           (HFI) including the HFI initialization, HFI notification interrupt
           handling and sending CPU capabilities change messages to user space
           via the thermal netlink interface (Ricardo Neri, Srinivas
           Pandruvada, Nathan Chancellor, Randy Dunlap).
      
         - Extend the intel-speed-select utility to handle out-of-band CPU
           configuration changes and add support for the CPU capabilities
           change messages sent over the thermal netlink interface by the new
           HFI thermal driver to it (Srinivas Pandruvada).
      
         - Convert the DT bindings to yaml format for the Exynos platform and
           fix and update the MAINTAINERS file for this driver (Krzysztof
           Kozlowski).
      
         - Register the thermal zones as HWmon sensors for the QCom's Tsens
           driver and TI thermal platforms (Dmitry Baryshkov, Romain Naour).
      
         - Add the msm8953 compatible documentation in the bindings (Luca
           Weiss).
      
         - Add the sm8150 platform support to the QCom LMh driver's DT binding
           (Thara Gopinath).
      
         - Check the command result from the IPC command to the BPMP in the
           Tegra driver (Mikko Perttunen).
      
         - Silence the error for normal configuration where the interrupt is
           optionnal in the Broadcom thermal driver (Florian Fainelli).
      
         - Remove remaining dead code from the TI thermal driver (Yue
           Haibing).
      
         - Don't use bitmap_weight() in end_power_clamp() in the powerclamp
           driver (Yury Norov).
      
         - Update the OS policy capabilities handshake in the int340x thermal
           driver (Srinivas Pandruvada).
      
         - Increase the policies bitmap size in int340x (Srinivas Pandruvada).
      
         - Replace acpi_bus_get_device() with acpi_fetch_acpi_dev() in the
           int340x thermal driver (Rafael Wysocki).
      
         - Check for NULL after calling kmemdup() in int340x (Jiasheng Jiang).
      
         - Add Intel Dynamic Power and Thermal Framework (DPTF) kernel
           interface documentation (Srinivas Pandruvada).
      
         - Fix bullet list warning in the thermal documentation (Randy
           Dunlap)"
      
      * tag 'thermal-5.18-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (30 commits)
        thermal: int340x: Update OS policy capability handshake
        thermal: int340x: Increase bitmap size
        Documentation: thermal: DPTF Documentation
        MAINTAINERS: thermal: samsung: update Krzysztof Kozlowski's email
        thermal/drivers/ti-soc-thermal: Remove unused function ti_thermal_get_temp()
        thermal/drivers/brcmstb_thermal: Interrupt is optional
        thermal: tegra-bpmp: Handle errors in BPMP response
        drivers/thermal/ti-soc-thermal: Add hwmon support
        dt-bindings: thermal: tsens: Add msm8953 compatible
        dt-bindings: thermal: Add sm8150 compatible string for LMh
        thermal/drivers/qcom/lmh: Add support for sm8150
        thermal/drivers/tsens: register thermal zones as hwmon sensors
        MAINTAINERS: thermal: samsung: Drop obsolete properties
        dt-bindings: thermal: samsung: Convert to dtschema
        tools/power/x86/intel-speed-select: v1.12 release
        tools/power/x86/intel-speed-select: HFI support
        tools/power/x86/intel-speed-select: OOB daemon mode
        thermal: intel: hfi: INTEL_HFI_THERMAL depends on NET
        thermal: netlink: Fix parameter type of thermal_genl_cpu_capability_event() stub
        thermal: Replace acpi_bus_get_device()
        ...
      f648372d
    • Linus Torvalds's avatar
      Merge tag 'pm-5.18-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm · 02b82b02
      Linus Torvalds authored
      Pull power management updates from Rafael Wysocki:
       "These are mostly fixes and cleanups all over the code and a new piece
        of documentation for Intel uncore frequency scaling.
      
        Functionality-wise, the intel_idle driver will support Sapphire Rapids
        Xeons natively now (with some extra facilities for controlling
        C-states more precisely on those systems), virtual guests will take
        the ACPI S4 hardware signature into account by default, the
        intel_pstate driver will take the defualt EPP value from the firmware,
        cpupower utility will support the AMD P-state driver added in the
        previous cycle, and there is a new tracer utility for that driver.
      
        Specifics:
      
         - Allow device_pm_check_callbacks() to be called from interrupt
           context without issues (Dmitry Baryshkov).
      
         - Modify devm_pm_runtime_enable() to automatically handle
           pm_runtime_dont_use_autosuspend() at driver exit time (Douglas
           Anderson).
      
         - Make the schedutil cpufreq governor use to_gov_attr_set() instead
           of open coding it (Kevin Hao).
      
         - Replace acpi_bus_get_device() with acpi_fetch_acpi_dev() in the
           cpufreq longhaul driver (Rafael Wysocki).
      
         - Unify show() and store() naming in cpufreq and make it use
           __ATTR_XX (Lianjie Zhang).
      
         - Make the intel_pstate driver use the EPP value set by the firmware
           by default (Srinivas Pandruvada).
      
         - Re-order the init checks in the powernow-k8 cpufreq driver (Mario
           Limonciello).
      
         - Make the ACPI processor idle driver check for architectural support
           for LPI to avoid using it on x86 by mistake (Mario Limonciello).
      
         - Add Sapphire Rapids Xeon support to the intel_idle driver (Artem
           Bityutskiy).
      
         - Add 'preferred_cstates' module argument to the intel_idle driver to
           work around C1 and C1E handling issue on Sapphire Rapids (Artem
           Bityutskiy).
      
         - Add core C6 optimization on Sapphire Rapids to the intel_idle
           driver (Artem Bityutskiy).
      
         - Optimize the haltpoll cpuidle driver a bit (Li RongQing).
      
         - Remove leftover text from intel_idle() kerneldoc comment and fix up
           white space in intel_idle (Rafael Wysocki).
      
         - Fix load_image_and_restore() error path (Ye Bin).
      
         - Fix typos in comments in the system wakeup hadling code (Tom Rix).
      
         - Clean up non-kernel-doc comments in hibernation code (Jiapeng
           Chong).
      
         - Fix __setup handler error handling in system-wide suspend and
           hibernation core code (Randy Dunlap).
      
         - Add device name to suspend_report_result() (Youngjin Jang).
      
         - Make virtual guests honour ACPI S4 hardware signature by default
           (David Woodhouse).
      
         - Block power off of a parent PM domain unless child is in deepest
           state (Ulf Hansson).
      
         - Use dev_err_probe() to simplify error handling for generic PM
           domains (Ahmad Fatoum).
      
         - Fix sleep-in-atomic bug caused by genpd_debug_remove() (Shawn Guo).
      
         - Document Intel uncore frequency scaling (Srinivas Pandruvada).
      
         - Add DTPM hierarchy description (Daniel Lezcano).
      
         - Change the locking scheme in DTPM (Daniel Lezcano).
      
         - Fix dtpm_cpu cleanup at exit time and missing virtual DTPM pointer
           release (Daniel Lezcano).
      
         - Make dtpm_node_callback[] static (kernel test robot).
      
         - Fix spelling mistake "initialze" -> "initialize" in
           dtpm_create_hierarchy() (Colin Ian King).
      
         - Add tracer tool for the amd-pstate driver (Jinzhou Su).
      
         - Fix PC6 displaying in turbostat on some systems (Artem Bityutskiy).
      
         - Add AMD P-State support to the cpupower utility (Huang Rui)"
      
      * tag 'pm-5.18-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (58 commits)
        cpufreq: powernow-k8: Re-order the init checks
        cpuidle: intel_idle: Drop redundant backslash at line end
        cpuidle: intel_idle: Update intel_idle() kerneldoc comment
        PM: hibernate: Honour ACPI hardware signature by default for virtual guests
        cpufreq: intel_pstate: Use firmware default EPP
        cpufreq: unify show() and store() naming and use __ATTR_XX
        PM: core: keep irq flags in device_pm_check_callbacks()
        cpuidle: haltpoll: Call cpuidle_poll_state_init() later
        Documentation: amd-pstate: add tracer tool introduction
        tools/power/x86/amd_pstate_tracer: Add tracer tool for AMD P-state
        tools/power/x86/intel_pstate_tracer: make tracer as a module
        cpufreq: amd-pstate: Add more tracepoint for AMD P-State module
        PM: sleep: Add device name to suspend_report_result()
        turbostat: fix PC6 displaying on some systems
        intel_idle: add core C6 optimization for SPR
        intel_idle: add 'preferred_cstates' module argument
        intel_idle: add SPR support
        PM: runtime: Have devm_pm_runtime_enable() handle pm_runtime_dont_use_autosuspend()
        ACPI: processor idle: Check for architectural support for LPI
        cpuidle: PSCI: Move the `has_lpi` check to the beginning of the function
        ...
      02b82b02
    • Linus Torvalds's avatar
      Merge tag 'acpi-5.18-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm · 242ba665
      Linus Torvalds authored
      Pull ACPI updates from Rafael Wysocki:
       "From the new functionality perspective, the most significant items
        here are the new driver for the 'ARM Generic Diagnostic Dump and
        Reset' device, the extension of fine grain fan control in the ACPI fan
        driver, and the change making it possible to use CPPC information to
        obtain CPU capacity.
      
        There are also a few new quirks, a bunch of fixes, including the
        platform-level _OSC handling change to make it actually take the
        platform firmware response into account, some code and documentation
        cleanups, and a notable update of the ACPI device enumeration
        documentation.
      
        Specifics:
      
         - Use uintptr_t and offsetof() in the ACPICA code to avoid compiler
           warnings regarding NULL pointer arithmetic (Rafael Wysocki).
      
         - Fix possible NULL pointer dereference in acpi_ns_walk_namespace()
           when passed "acpi=off" in the command line (Rafael Wysocki).
      
         - Fix and clean up acpi_os_read/write_port() (Rafael Wysocki).
      
         - Introduce acpi_bus_for_each_dev() and use it for walking all ACPI
           device objects in the Type C code (Rafael Wysocki).
      
         - Fix the _OSC platform capabilities negotioation and prevent CPPC
           from being used if the platform firmware indicates that it not
           supported via _OSC (Rafael Wysocki).
      
         - Use ida_alloc() instead of ida_simple_get() for ACPI enumeration of
           devices (Rafael Wysocki).
      
         - Add AGDI and CEDT to the list of known ACPI table signatures (Ilkka
           Koskinen, Robert Kiraly).
      
         - Add power management debug messages related to suspend-to-idle in
           two places (Rafael Wysocki).
      
         - Fix __acpi_node_get_property_reference() return value and clean up
           that function (Andy Shevchenko, Sakari Ailus).
      
         - Fix return value of the __setup handler in the ACPI PM timer clock
           source driver (Randy Dunlap).
      
         - Clean up double words in two comments (Tom Rix).
      
         - Add "skip i2c clients" quirks for Lenovo Yoga Tablet 1050F/L and
           Nextbook Ares 8 (Hans de Goede).
      
         - Clean up frequency invariance handling on x86 in the ACPI CPPC
           library (Huang Rui).
      
         - Work around broken XSDT on the Advantech DAC-BJ01 board (Mark
           Cilissen).
      
         - Make wakeup events checks in the ACPI EC driver more
           straightforward and clean up acpi_ec_submit_event() (Rafael
           Wysocki).
      
         - Make it possible to obtain the CPU capacity with the help of CPPC
           information (Ionela Voinescu).
      
         - Improve fine grained fan control in the ACPI fan driver and
           document it (Srinivas Pandruvada).
      
         - Add device HID and quirk for Microsoft Surface Go 3 to the ACPI
           battery driver (Maximilian Luz).
      
         - Make the ACPI driver for Intel SoCs (LPSS) let the SPI driver know
           the exact type of the controller (Andy Shevchenko).
      
         - Force native backlight mode on Clevo NL5xRU and NL5xNU (Werner
           Sembach).
      
         - Fix return value of __setup handlers in the APEI code (Randy
           Dunlap).
      
         - Add Arm Generic Diagnostic Dump and Reset device driver (Ilkka
           Koskinen).
      
         - Limit printable size of BERT table data (Darren Hart).
      
         - Fix up HEST and GHES initialization (Shuai Xue).
      
         - Update the ACPI device enumeration documentation and unify the ASL
           style in GPIO-related examples (Andy Shevchenko)"
      
      * tag 'acpi-5.18-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (52 commits)
        clocksource: acpi_pm: fix return value of __setup handler
        ACPI: bus: Avoid using CPPC if not supported by firmware
        Revert "ACPI: Pass the same capabilities to the _OSC regardless of the query flag"
        ACPI: video: Force backlight native for Clevo NL5xRU and NL5xNU
        arm64, topology: enable use of init_cpu_capacity_cppc()
        arch_topology: obtain cpu capacity using information from CPPC
        x86, ACPI: rename init_freq_invariance_cppc() to arch_init_invariance_cppc()
        ACPI: AGDI: Add driver for Arm Generic Diagnostic Dump and Reset device
        ACPI: tables: Add AGDI to the list of known table signatures
        ACPI/APEI: Limit printable size of BERT table data
        ACPI: docs: gpio-properties: Unify ASL style for GPIO examples
        ACPI / x86: Work around broken XSDT on Advantech DAC-BJ01 board
        ACPI: APEI: fix return value of __setup handlers
        x86/ACPI: CPPC: Move init_freq_invariance_cppc() into x86 CPPC
        x86: Expose init_freq_invariance() to topology header
        x86/ACPI: CPPC: Move AMD maximum frequency ratio setting function into x86 CPPC
        x86/ACPI: CPPC: Rename cppc_msr.c to cppc.c
        ACPI / x86: Add skip i2c clients quirk for Lenovo Yoga Tablet 1050F/L
        ACPI / x86: Add skip i2c clients quirk for Nextbook Ares 8
        ACPICA: Avoid walking the ACPI Namespace if it is not there
        ...
      242ba665
    • Linus Torvalds's avatar
      Merge tag 'docs-5.18' of git://git.lwn.net/linux · 346658a5
      Linus Torvalds authored
      Pull documentation updates from Jonathan Corbet:
       "It has been a moderately busy cycle for documentation; some of the
        highlights are:
      
         - Numerous PDF-generation improvements
      
         - Kees's new document with guidelines for researchers studying the
           development community.
      
         - The ongoing stream of Chinese translations
      
         - Thorsten's new document on regression handling
      
         - A major reworking of the internal documentation for the kernel-doc
           script.
      
        Plus the usual stream of typo fixes and such"
      
      * tag 'docs-5.18' of git://git.lwn.net/linux: (80 commits)
        docs/kernel-parameters: update description of mem=
        docs/zh_CN: Add sched-nice-design Chinese translation
        docs: scheduler: Convert schedutil.txt to ReST
        Docs: ktap: add code-block type
        docs: serial: fix a reference file name in driver.rst
        docs: UML: Mention telnetd for port channel
        docs/zh_CN: add damon reclaim translation
        docs/zh_CN: add damon usage translation
        docs/zh_CN: add admin-guide damon start translation
        docs/zh_CN: add admin-guide damon index translation
        docs/zh_CN: Refactoring the admin-guide directory index
        zh_CN: Add translation for admin-guide/mm/index.rst
        zh_CN: Add translations for admin-guide/mm/ksm.rst
        Add Chinese translation for vm/ksm.rst
        docs/zh_CN: Add sched-stats Chinese translation
        docs/zh_CN: add devicetree of_unittest translation
        docs/zh_CN: add devicetree usage-model translation
        docs/zh_CN: add devicetree index translation
        Documentation: describe how to apply incremental stable patches
        docs/zh_CN: add peci subsystem translation
        ...
      346658a5
    • Linus Torvalds's avatar
      Merge tag 'lkmm.2022.03.13a' of git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu · d2eb5500
      Linus Torvalds authored
      Pull memory model doc update from Paul McKenney:
       "An improved explanation of syntactic and semantic dependencies from
        Alan Stern"
      
      * tag 'lkmm.2022.03.13a' of git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu:
        tools/memory-model: Explain syntactic and semantic dependencies
      d2eb5500
    • Linus Torvalds's avatar
      Merge tag 'rcu.2022.03.13a' of git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu · 35dc0352
      Linus Torvalds authored
      Pull RCU updates from Paul McKenney:
      
       - Fix idle detection (Neeraj Upadhyay) and missing access marking
         detected by KCSAN.
      
       - Reduce coupling between rcu_barrier() and CPU-hotplug operations, so
         that rcu_barrier() no longer needs to do cpus_read_lock(). This may
         also someday allow system boot to bring CPUs online concurrently.
      
       - Enable more aggressive movement to per-CPU queueing when reacting to
         excessive lock contention due to workloads placing heavy update-side
         stress on RCU tasks.
      
       - Improvements to RCU priority boosting, including changes from Neeraj
         Upadhyay, Zqiang, and Alison Chaiken.
      
       - Various fixes improving test robustness and debug information.
      
       - Add tests for SRCU size transitions, further compress torture.sh
         build products, and improve debug output.
      
       - Miscellaneous fixes.
      
      * tag 'rcu.2022.03.13a' of git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu: (49 commits)
        rcu: Replace cpumask_weight with cpumask_empty where appropriate
        rcu: Remove __read_mostly annotations from rcu_scheduler_active externs
        rcu: Uninline multi-use function: finish_rcuwait()
        rcu: Mark writes to the rcu_segcblist structure's ->flags field
        kasan: Record work creation stack trace with interrupts enabled
        rcu: Inline __call_rcu() into call_rcu()
        rcu: Add mutex for rcu boost kthread spawning and affinity setting
        rcu: Fix description of kvfree_rcu()
        MAINTAINERS:  Add Frederic and Neeraj to their RCU files
        rcutorture: Provide non-power-of-two Tasks RCU scenarios
        rcutorture: Test SRCU size transitions
        torture: Make torture.sh help message match reality
        rcu-tasks: Set ->percpu_enqueue_shift to zero upon contention
        rcu-tasks: Use order_base_2() instead of ilog2()
        rcu: Create and use an rcu_rdp_cpu_online()
        rcu: Make rcu_barrier() no longer block CPU-hotplug operations
        rcu: Rework rcu_barrier() and callback-migration logic
        rcu: Refactor rcu_barrier() empty-list handling
        rcu: Kill rnp->ofl_seq and use only rcu_state.ofl_lock for exclusion
        torture: Change KVM environment variable to RCUTORTURE
        ...
      35dc0352
    • Linus Torvalds's avatar
      Merge tag 'for-5.18/parisc-1' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux · a04b1bf5
      Linus Torvalds authored
      Pull parisc architecture updates from Helge Deller:
      
       - add vDSO support (allows us to use non-executable stacks)
      
       - many TLB and cache flush optimizations (by Dave Anglin)
      
       - fix handling of probe non-access faults (by Dave Anglin)
      
       - fix invalidate/flush vmap routines (by Dave Anglin)
      
       - avoid using hardware single-step in kprobes
      
       - enable ARCH_HAS_DEBUG_VM_PGTABLE
      
       - many cleanups in unaligned handlers, e.g. rewrite of existing
         assembly code
      
       - always use the self-extracting kernel feature
      
       - big refacturing and code reductions regarding space-register usage in
         get_user() and put_user()
      
       - add fillrect() support to stifb graphics driver
      
      * tag 'for-5.18/parisc-1' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux: (23 commits)
        parisc: Fix invalidate/flush vmap routines
        parisc: Avoid flushing cache on cache-less machines
        parisc: Avoid using hardware single-step in kprobes
        parisc: Improve CPU socket and core bootup info text
        parisc: Enable ARCH_HAS_DEBUG_VM_PGTABLE
        parisc: Avoid calling SMP cache flush functions on cache-less machines
        parisc: Increase parisc_cache_flush_threshold setting
        parisc/unaligned: Enhance user-space visible output
        parisc/unaligned: Rewrite 32-bit inline assembly of emulate_sth()
        parisc/unaligned: Rewrite 32-bit inline assembly of emulate_ldd()
        parisc/unaligned: Rewrite inline assembly of emulate_ldw()
        parisc/unaligned: Rewrite inline assembly of emulate_ldh()
        parisc/unaligned: Use EFAULT fixup handler in unaligned handlers
        parisc: Reduce code size by optimizing get_current() function calls
        parisc: Use constants to encode the space registers like SR_KERNEL
        parisc: Use SR_USER and SR_KERNEL in get_user() and put_user()
        parisc: Add defines for various space register
        parisc: Always use the self-extracting kernel feature
        video/fbdev/stifb: Implement the stifb_fillrect() function
        parisc: Add vDSO support
        ...
      a04b1bf5
    • Linus Torvalds's avatar
      Merge tag 'irq-core-2022-03-21' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 93287e28
      Linus Torvalds authored
      Pull interrupt updates from Thomas Gleixner:
       "Core code:
      
         - Provide generic_handle_irq_safe() which can be invoked from any
           context (hard interrupt or threaded). This allows to remove ugly
           workarounds in drivers all over the place.
      
         - Use generic_handle_irq_safe() in the affected drivers.
      
         - The usual cleanups and improvements.
      
        Interrupt chip drivers:
      
         - Support for new interrupt chips or not yet supported variants:
           STM32MP14, Meson GPIO, Apple M1 PMU, Apple M1 AICv2, Qualcomm MPM
      
         - Convert the Xilinx driver to generic interrupt domains
      
         - Cleanup the irq_chip::name handling
      
         - The usual cleanups and improvements all over the place"
      
      * tag 'irq-core-2022-03-21' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (52 commits)
        irqchip: Add Qualcomm MPM controller driver
        dt-bindings: interrupt-controller: Add Qualcomm MPM support
        irqchip/apple-aic: Add support for AICv2
        irqchip/apple-aic: Support multiple dies
        irqchip/apple-aic: Dynamically compute register offsets
        irqchip/apple-aic: Switch to irq_domain_create_tree and sparse hwirqs
        irqchip/apple-aic: Add Fast IPI support
        dt-bindings: interrupt-controller: apple,aic2: New binding for AICv2
        PCI: apple: Change MSI handling to handle 4-cell AIC fwspec form
        irqchip/apple-aic: Fix cpumask allocation for FIQs
        irqchip/meson-gpio: Add support for meson s4 SoCs
        irqchip/meson-gpio: add select trigger type callback
        irqchip/meson-gpio: support more than 8 channels gpio irq
        dt-bindings: interrupt-controller: New binding for Meson-S4 SoCs
        irqchip/xilinx: Switch to GENERIC_IRQ_MULTI_HANDLER
        staging: greybus: gpio: Use generic_handle_irq_safe().
        net: usb: lan78xx: Use generic_handle_irq_safe().
        mfd: ezx-pcap: Use generic_handle_irq_safe().
        misc: hi6421-spmi-pmic: Use generic_handle_irq_safe().
        irqchip/sifive-plic: Disable S-mode IRQs if running in M-mode
        ...
      93287e28
    • Linus Torvalds's avatar
      Merge tag 'timers-core-2022-03-21' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 84c2e179
      Linus Torvalds authored
      Pull timer and timekeeping updates from Thomas Gleixner:
       "Core code:
      
         - Make the NOHZ handling of the timekeeping/tick core more robust to
           prevent a rare jiffies update stall.
      
         - Handle softirqs in the NOHZ/idle case correctly
      
        Drivers:
      
         - Add support for event stream scaling of the 1GHz counter on ARM(64)
      
         - Correct an error code check in the timer-of layer
      
         - The usual cleanups and improvements all over the place"
      
      * tag 'timers-core-2022-03-21' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (23 commits)
        lib/irq_poll: Declare IRQ_POLL softirq vector as ksoftirqd-parking safe
        tick/rcu: Stop allowing RCU_SOFTIRQ in idle
        tick/rcu: Remove obsolete rcu_needs_cpu() parameters
        tick: Detect and fix jiffies update stall
        clocksource/drivers/timer-of: Check return value of of_iomap in timer_of_base_init()
        clocksource/drivers/timer-microchip-pit64b: Use 5MHz for clockevent
        clocksource/drivers/timer-microchip-pit64b: Use notrace
        clocksource/drivers/timer-microchip-pit64b: Remove mmio selection
        dt-bindings: timer: Tegra: Convert text bindings to yaml
        clocksource/drivers/imx-tpm: Move tpm_read_sched_clock() under CONFIG_ARM
        clocksource/drivers/arm_arch_timer: Use event stream scaling when available
        clocksource/drivers/exynos_mct: Increase the size of name array
        clocksource/drivers/exynos_mct: Bump up mct max irq number
        clocksource/drivers/exynos_mct: Remove mct interrupt index enum
        clocksource/drivers/exynos_mct: Handle DTS with higher number of interrupts
        clocksource/drivers/timer-ti-dm: Fix regression from errata i940 fix
        clocksource/drivers/imx-tpm: Exclude sched clock for ARM64
        clocksource: Add a Kconfig option for WATCHDOG_MAX_SKEW
        clocksource/drivers/imx-tpm: Update name of clkevt
        clocksource/drivers/imx-tpm: Add CLOCK_EVT_FEAT_DYNIRQ
        ...
      84c2e179
    • Linus Torvalds's avatar
      Merge tag 'core-core-2022-03-21' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · bba90e09
      Linus Torvalds authored
      Pull core process handling RT latency updates from Thomas Gleixner:
      
       - Reduce the amount of work to release a task stack in context switch.
         There is no real reason to do cgroup accounting and memory freeing in
         this performance sensitive context.
      
         Aside of this the invoked functions cannot be called from this
         preemption disabled context on PREEMPT_RT enabled kernels. Solve this
         by moving the accounting into do_exit() and delaying the freeing of
         the stack unless the vmap stack can be cached.
      
       - Provide a mechanism to delay raising signals from atomic context on
         PREEMPT_RT enabled kernels as sighand::lock cannot be acquired. Store
         the information in the task struct and raise it in the exit path.
      
      * tag 'core-core-2022-03-21' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        signal, x86: Delay calling signals in atomic on RT enabled kernels
        fork: Use IS_ENABLED() in account_kernel_stack()
        fork: Only cache the VMAP stack in finish_task_switch()
        fork: Move task stack accounting to do_exit()
        fork: Move memcg_charge_kernel_stack() into CONFIG_VMAP_STACK
        fork: Don't assign the stack pointer in dup_task_struct()
        fork, IA64: Provide alloc_thread_stack_node() for IA64
        fork: Duplicate task_struct before stack allocation
        fork: Redo ifdefs around task stack handling
      bba90e09
    • Linus Torvalds's avatar
      Merge tag 'x86-pasid-2022-03-21' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 3fd33273
      Linus Torvalds authored
      Pull x86 PASID support from Thomas Gleixner:
       "Reenable ENQCMD/PASID support:
      
         - Simplify the PASID handling to allocate the PASID once, associate
           it to the mm of a process and free it on mm_exit().
      
           The previous attempt of refcounted PASIDs and dynamic
           alloc()/free() turned out to be error prone and too complex. The
           PASID space is 20bits, so the case of resource exhaustion is a pure
           academic concern.
      
         - Populate the PASID MSR on demand via #GP to avoid racy updates via
           IPIs.
      
         - Reenable ENQCMD and let objtool check for the forbidden usage of
           ENQCMD in the kernel.
      
         - Update the documentation for Shared Virtual Addressing accordingly"
      
      * tag 'x86-pasid-2022-03-21' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        Documentation/x86: Update documentation for SVA (Shared Virtual Addressing)
        tools/objtool: Check for use of the ENQCMD instruction in the kernel
        x86/cpufeatures: Re-enable ENQCMD
        x86/traps: Demand-populate PASID MSR via #GP
        sched: Define and initialize a flag to identify valid PASID in the task
        x86/fpu: Clear PASID when copying fpstate
        iommu/sva: Assign a PASID to mm on PASID allocation and free it on mm exit
        kernel/fork: Initialize mm's PASID
        iommu/ioasid: Introduce a helper to check for valid PASIDs
        mm: Change CONFIG option for mm->pasid field
        iommu/sva: Rename CONFIG_IOMMU_SVA_LIB to CONFIG_IOMMU_SVA
      3fd33273
    • Linus Torvalds's avatar
      Merge tag 'x86_cleanups_for_v5.18_rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · eaa54b14
      Linus Torvalds authored
      Pull x86 cleanups from Borislav Petkov:
      
       - Remove a misleading message and an unused function
      
      * tag 'x86_cleanups_for_v5.18_rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/nmi: Remove the 'strange power saving mode' hint from unknown NMI handler
        x86/pat: Remove the unused set_pages_array_wt() function
      eaa54b14
    • Linus Torvalds's avatar
      Merge tag 'x86_cc_for_v5.18_rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 6b9bfb13
      Linus Torvalds authored
      Pull x86 confidential computing updates from Borislav Petkov:
      
       - Add shared confidential computing code which will be used by both
         vendors instead of proliferating home-grown solutions for
         technologies (SEV/SNP and TDX) which are pretty similar
      
      * tag 'x86_cc_for_v5.18_rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/mm/cpa: Generalize __set_memory_enc_pgtable()
        x86/coco: Add API to handle encryption mask
        x86/coco: Explicitly declare type of confidential computing platform
        x86/cc: Move arch/x86/{kernel/cc_platform.c => coco/core.c}
      6b9bfb13
    • Linus Torvalds's avatar
      Merge tag 'x86_sgx_for_v5.18_rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 61e2658e
      Linus Torvalds authored
      Pull x86 SGX updates from Borislav Petkov:
      
       - A couple of fixes and improvements to the SGX selftests
      
      * tag 'x86_sgx_for_v5.18_rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        selftests/sgx: Treat CC as one argument
        selftests/x86: Add validity check and allow field splitting
        selftests/sgx: Remove extra newlines in test output
        selftests/sgx: Ensure enclave data available during debug print
        selftests/sgx: Do not attempt enclave build without valid enclave
        selftests/sgx: Fix NULL-pointer-dereference upon early test failure
      61e2658e
    • Linus Torvalds's avatar
      Merge tag 'x86_sev_for_v5.18_rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 88f30ac2
      Linus Torvalds authored
      Pull x86 SEV fix from Borislav Petkov:
      
       - Add a missing function section annotation
      
      * tag 'x86_sev_for_v5.18_rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/head64: Add missing __head annotation to sme_postprocess_startup()
      88f30ac2
    • Linus Torvalds's avatar
      Merge tag 'x86_paravirt_for_v5.18_rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 35cbdaf7
      Linus Torvalds authored
      Pull x86 paravirt improvement from Borislav Petkov:
      
       - Shorten CALL insns to pvops by a byte by using rip-relative
         addressing
      
      * tag 'x86_paravirt_for_v5.18_rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/paravirt: Use %rip-relative addressing in hook calls
      35cbdaf7
    • Linus Torvalds's avatar
      Merge tag 'x86_build_for_v5.18_rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · e10821b8
      Linus Torvalds authored
      Pull x86 Kconfig fix from Borislav Petkov:
      
       - Correct Kconfig symbol visibility on x86
      
      * tag 'x86_build_for_v5.18_rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/Kconfig: Select ARCH_SELECT_MEMORY_MODEL only if FLATMEM and SPARSEMEM are possible
      e10821b8