1. 08 Jul, 2021 9 commits
    • Sven Schnelle's avatar
      s390/signal: switch to using vdso for sigreturn and syscall restart · df29a744
      Sven Schnelle authored
      with generic entry, there's a bug when it comes to restarting of signals.
      The failing sequence is:
      
      a) a signal is coming in, and no handler is registered, so the lower
         part of arch_do_signal_or_restart() in arch/s390/kernel/signal.c
         sets PIF_SYSCALL_RESTART.
      
      b) a second signal gets pending while the kernel is still in the exit
         loop, and for that one, a handler exists.
      
      c) The first part of arch_do_signal_or_restart() is called. That part
         calls handle_signal(), which sets up stack + registers for handling
         the signal.
      
      d) __do_syscall() in arch/s390/kernel/syscall.c checks for
         PIF_SYSCALL_RESTART right before leaving to userspace. If it is set,
         it restart's the syscall. However, the registers are already setup
         for handling a signal from c). The syscall is now restarted with the
         wrong arguments.
      
      Change the code to:
      
      - use vdso for syscall_restart() instead of PIF_SYSCALL_RESTART because
        we cannot rewind and go back to userspace on s390 because the system call
        number might be encoded in the svc instruction.
      - for all other syscalls we rewind the PSW and return to userspace.
      
      Cc: <stable@kernel.org> # v5.12+ d57778fe: s390/vdso: always enable vdso
      Cc: <stable@kernel.org> # v5.12+ 686341f2: s390/vdso64: add sigreturn,rt_sigreturn and restart_syscall
      Cc: <stable@kernel.org> # v5.12+ 43e1f76b: s390/vdso: rename VDSO64_LBASE to VDSO_LBASE
      Cc: <stable@kernel.org> # v5.12+ 779df224: s390/vdso: add minimal compat vdso
      Cc: <stable@kernel.org> # v5.12+
      Signed-off-by: default avatarSven Schnelle <svens@linux.ibm.com>
      Reviewed-by: default avatarHeiko Carstens <hca@linux.ibm.com>
      Signed-off-by: default avatarVasily Gorbik <gor@linux.ibm.com>
      df29a744
    • Sven Schnelle's avatar
      s390/vdso: add minimal compat vdso · 779df224
      Sven Schnelle authored
      Add a small vdso for 31 bit compat application that provides
      trampolines for calls to sigreturn,rt_sigreturn,syscall_restart.
      This is requird for moving these syscalls away from the signal
      frame to the vdso. Note that this patch effectively disables
      CONFIG_COMPAT when using clang to compile the kernel. clang
      doesn't support 31 bit mode.
      
      We want to redirect sigreturn and restart_syscall to the vdso. However,
      the kernel cannot parse the ELF vdso file, so we need to generate header
      files which contain the offsets of the syscall instructions in the vdso
      page.
      Signed-off-by: default avatarSven Schnelle <svens@linux.ibm.com>
      Reviewed-by: default avatarHeiko Carstens <hca@linux.ibm.com>
      Signed-off-by: default avatarVasily Gorbik <gor@linux.ibm.com>
      779df224
    • Sven Schnelle's avatar
      s390/vdso: rename VDSO64_LBASE to VDSO_LBASE · 43e1f76b
      Sven Schnelle authored
      Will be used by both vdso32 and vdso64, so change the name.
      Signed-off-by: default avatarSven Schnelle <svens@linux.ibm.com>
      Reviewed-by: default avatarHeiko Carstens <hca@linux.ibm.com>
      Signed-off-by: default avatarVasily Gorbik <gor@linux.ibm.com>
      43e1f76b
    • Sven Schnelle's avatar
      s390/vdso64: add sigreturn,rt_sigreturn and restart_syscall · 686341f2
      Sven Schnelle authored
      Add minimalistic trampolines to vdso64 so we can return from signal
      without using the stack which requires pgm check handler hacks when
      NX is enabled.
      
      restart_syscall will be called from vdso to work around the architectural
      limitation that the syscall number might be encoded in the svc instruction,
      and therefore can not be changed.
      Signed-off-by: default avatarSven Schnelle <svens@linux.ibm.com>
      Reviewed-by: default avatarHeiko Carstens <hca@linux.ibm.com>
      Signed-off-by: default avatarVasily Gorbik <gor@linux.ibm.com>
      686341f2
    • Sven Schnelle's avatar
      s390/vdso: always enable vdso · d57778fe
      Sven Schnelle authored
      With the upcoming move of the svc sigreturn instruction from
      the signal frame to vdso we need to have vdso always enabled.
      Signed-off-by: default avatarSven Schnelle <svens@linux.ibm.com>
      Reviewed-by: default avatarHeiko Carstens <hca@linux.ibm.com>
      Signed-off-by: default avatarVasily Gorbik <gor@linux.ibm.com>
      d57778fe
    • Heiko Carstens's avatar
      s390/ap: get rid of register asm · b9639b31
      Heiko Carstens authored
      Using register asm statements has been proven to be very error prone,
      especially when using code instrumentation where gcc may add function
      calls, which clobbers register contents in an unexpected way.
      
      Therefore get rid of register asm statements in ap code. There are also
      potential bugs, depending on inline decisions of the compiler.
      
      E.g. for:
      
      static inline struct ap_queue_status ap_tapq(ap_qid_t qid, unsigned long *info)
      {
      	register unsigned long reg0 asm ("0") = qid;
      	register struct ap_queue_status reg1 asm ("1");
      	register unsigned long reg2 asm ("2");
      
      	asm volatile(".long 0xb2af0000"         /* PQAP(TAPQ) */
      		     : "=d" (reg1), "=d" (reg2)
      		     : "d" (reg0)
      		     : "cc");
      	if (info)
      		*info = reg2;
      	return reg1;
      }
      
      In case of KCOV the "if (info)" line could cause a generated function
      call, which could clobber the contents of both reg2, and reg1.
      
      Similar can happen in case of KASAN for the "*info = reg2" line.
      
      Even though compilers will likely inline the function and optimize
      things away, this is not guaranteed.
      
      To get rid of this bug class, simply get rid of register asm constructs.
      
      Note: The inline function ap_dqap() will be handled in a
      separate patch because this one requires an addressing of the
      odd register of a register pair (which is done with %N[xxx] in
      the assembler code) and that's currently not supported by clang.
      Signed-off-by: default avatarHeiko Carstens <hca@linux.ibm.com>
      Signed-off-by: default avatarHarald Freudenberger <freude@linux.ibm.com>
      Signed-off-by: default avatarVasily Gorbik <gor@linux.ibm.com>
      b9639b31
    • Sven Schnelle's avatar
      s390/irq: remove HAVE_IRQ_EXIT_ON_IRQ_STACK · 0aa4ff76
      Sven Schnelle authored
      This is no longer true since we switched to generic entry. The code
      switches to the IRQ stack before calling do_IRQ, but switches back
      to the kernel stack before calling irq_exit().
      
      Fixes: 56e62a73 ("s390: convert to generic entry")
      Signed-off-by: default avatarSven Schnelle <svens@linux.ibm.com>
      Reviewed-by: default avatarHeiko Carstens <hca@linux.ibm.com>
      Signed-off-by: default avatarVasily Gorbik <gor@linux.ibm.com>
      0aa4ff76
    • Ilya Leoshkevich's avatar
      s390/traps: do not test MONITOR CALL without CONFIG_BUG · b8e9cc20
      Ilya Leoshkevich authored
      tinyconfig fails to boot, because without CONFIG_BUG report_bug()
      always returns BUG_TRAP_TYPE_BUG, which causes mc 0,0 in
      test_monitor_call() to panic. Fix by skipping the test without
      CONFIG_BUG.
      Signed-off-by: default avatarIlya Leoshkevich <iii@linux.ibm.com>
      Reviewed-by: default avatarHeiko Carstens <hca@linux.ibm.com>
      Signed-off-by: default avatarVasily Gorbik <gor@linux.ibm.com>
      b8e9cc20
    • Harald Freudenberger's avatar
      s390/ap: Rework ap_dqap to deal with messages greater than recv buffer · 1f0d22de
      Harald Freudenberger authored
      Rework of the ap_dqap() inline function with the dqap inline assembler
      invocation and the caller code in ap_queue.c to be able to handle
      replies which exceed the receive buffer size.
      
      ap_dqap() now provides two additional parameters to handle together
      with the caller the case where a reply in the firmware queue entry
      exceeds the given message buffer size. It depends on the caller how to
      exactly handle this. The behavior implemented now by ap_sm_recv() in
      ap_queue.c is to simple purge this entry from the firmware queue and
      let the caller 'receive' a -EMSGSIZE for the request without
      delivering any reply data - not even a truncated reply message.
      
      However, the reworked ap_dqap() could now get invoked in a way that
      the message is received in multiple parts and the caller assembles the
      parts into one reply message.
      Signed-off-by: default avatarHarald Freudenberger <freude@linux.ibm.com>
      Suggested-by: default avatarJuergen Christ <jchrist@linux.ibm.com>
      Reviewed-by: default avatarJuergen Christ <jchrist@linux.ibm.com>
      Signed-off-by: default avatarVasily Gorbik <gor@linux.ibm.com>
      1f0d22de
  2. 05 Jul, 2021 13 commits
  3. 04 Jul, 2021 7 commits
    • Linus Torvalds's avatar
      Merge tag 's390-5.14-1' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux · 2bb919b6
      Linus Torvalds authored
      Pull s390 updates from Vasily Gorbik:
      
       - Rework inline asm to get rid of error prone "register asm"
         constructs, which are problematic especially when code
         instrumentation is enabled.
      
         In particular introduce and use register pair union to allocate
         even/odd register pairs. Unfortunately this breaks compatibility with
         older clang compilers and minimum clang version for s390 has been
         raised to 13.
      
           https://lore.kernel.org/linux-next/CAK7LNARuSmPCEy-ak0erPrPTgZdGVypBROFhtw+=3spoGoYsyw@mail.gmail.com/
      
       - Fix gcc 11 warnings, which triggered various minor reworks all over
         the code.
      
       - Add zstd kernel image compression support.
      
       - Rework boot CPU lowcore handling.
      
       - De-duplicate and move kernel memory layout setup logic earlier.
      
       - Few fixes in preparation for FORTIFY_SOURCE performing compile-time
         and run-time field bounds checking for mem functions.
      
       - Remove broken and unused power management support leftovers in s390
         drivers.
      
       - Disable stack-protector for decompressor and purgatory to fix
         buildroot build.
      
       - Fix vt220 sclp console name to match the char device name.
      
       - Enable HAVE_IOREMAP_PROT and add zpci_set_irq()/zpci_clear_irq() in
         zPCI code.
      
       - Remove some implausible WARN_ON_ONCEs and remove arch specific
         counter transaction call backs in favour of default transaction
         handling in perf code.
      
       - Extend/add new uevents for online/config/mode state changes of AP
         card / queue device in zcrypt.
      
       - Minor entry and ccwgroup code improvements.
      
       - Other small various fixes and improvements all over the code.
      
      * tag 's390-5.14-1' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux: (91 commits)
        s390/dasd: use register pair instead of register asm
        s390/qdio: get rid of register asm
        s390/ioasm: use symbolic names for asm operands
        s390/ioasm: get rid of register asm
        s390/cmf: get rid of register asm
        s390/lib,string: get rid of register asm
        s390/lib,uaccess: get rid of register asm
        s390/string: get rid of register asm
        s390/cmpxchg: use register pair instead of register asm
        s390/mm,pages-states: get rid of register asm
        s390/lib,xor: get rid of register asm
        s390/timex: get rid of register asm
        s390/hypfs: use register pair instead of register asm
        s390/zcrypt: Switch to flexible array member
        s390/speculation: Use statically initialized const for instructions
        virtio/s390: get rid of open-coded kvm hypercall
        s390/pci: add zpci_set_irq()/zpci_clear_irq()
        scripts/min-tool-version.sh: Raise minimum clang version to 13.0.0 for s390
        s390/ipl: use register pair instead of register asm
        s390/mem_detect: fix tprot() program check new psw handling
        ...
      2bb919b6
    • Linus Torvalds's avatar
      Merge tag 'csky-for-linus-5.14-rc1' of git://github.com/c-sky/csky-linux · 0d4d4c6f
      Linus Torvalds authored
      Pull arch/csky updates from Guo Ren:
       "A small cleanup and a fixup"
      
      * tag 'csky-for-linus-5.14-rc1' of git://github.com/c-sky/csky-linux:
        csky: Kconfig: Remove unused selects
        csky: syscache: Fixup duplicate cache flush
      0d4d4c6f
    • Linus Torvalds's avatar
      Merge tag 'cxl-for-5.14' of git://git.kernel.org/pub/scm/linux/kernel/git/cxl/cxl · 0c66a95c
      Linus Torvalds authored
      Pull CXL (Compute Express Link) updates from Dan Williams:
       "This subsystem is still in the build-out phase as the bulk of the
        update is improvements to enumeration and fleshing out the device
        model. In terms of new features, more mailbox commands have been added
        to the allowed-list in support of persistent memory provisioning
        support targeting v5.15.
      
        The critical update from an enumeration perspective is support for the
        CXL Fixed Memory Window Structure that indicates to Linux which system
        physical address ranges decode to the CXL Host Bridges in the system.
        This allows the driver to detect which address ranges have been mapped
        by firmware and what address ranges are available for future hotplug.
      
        So, again, mostly skeleton this round, with more meat targeting v5.15.
      
        Summary:
      
         - Add support for the CXL Fixed Memory Window Structure, a recent
           extension of the ACPI CEDT (CXL Early Discovery Table)
      
         - Add infrastructure for component registers
      
         - Add HDM (Host-managed device memory) decoder definitions
      
         - Define a device model for an HDM decoder tree
      
         - Bridge CXL persistent memory capabilities to an NVDIMM bus /
           device-model
      
         - Switch to fine grained mapping of CXL MMIO registers to allow
           different drivers / system software to own individual register
           blocks
      
         - Enable media provisioning commands, and publish the label storage
           area size in sysfs
      
         - Miscellaneous cleanups and fixes"
      
      * tag 'cxl-for-5.14' of git://git.kernel.org/pub/scm/linux/kernel/git/cxl/cxl: (34 commits)
        cxl/pci: Rename CXL REGLOC ID
        cxl/acpi: Use the ACPI CFMWS to create static decoder objects
        cxl/acpi: Add the Host Bridge base address to CXL port objects
        cxl/pmem: Register 'pmem' / cxl_nvdimm devices
        libnvdimm: Drop unused device power management support
        libnvdimm: Export nvdimm shutdown helper, nvdimm_delete()
        cxl/pmem: Add initial infrastructure for pmem support
        cxl/core: Add cxl-bus driver infrastructure
        cxl/pci: Add media provisioning required commands
        cxl/component_regs: Fix offset
        cxl/hdm: Fix decoder count calculation
        cxl/acpi: Introduce cxl_decoder objects
        cxl/acpi: Enumerate host bridge root ports
        cxl/acpi: Add downstream port data to cxl_port instances
        cxl/Kconfig: Default drivers to CONFIG_CXL_BUS
        cxl/acpi: Introduce the root of a cxl_port topology
        cxl/pci: Fixup devm_cxl_iomap_block() to take a 'struct device *'
        cxl/pci: Add HDM decoder capabilities
        cxl/pci: Reserve individual register block regions
        cxl/pci: Map registers based on capabilities
        ...
      0c66a95c
    • Linus Torvalds's avatar
      Merge branch 'i2c/for-mergewindow' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux · 855ff900
      Linus Torvalds authored
      Pull i2c updates from Wolfram Sang:
      
       - core supports now bus regulators controlling power for SCL/SDA
      
       - quite some DT binding conversions to YAML
      
       - added a seperate DT binding for the optional SMBus Alert feature
      
       - documentation with examples how to deal with I2C sysfs files
      
       - some bigger rework for the i801 driver
      
       - and a few usual driver updates
      
      * 'i2c/for-mergewindow' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux: (42 commits)
        i2c: ali1535: mention that the device should not be disabled
        i2c: mpc: Restore reread of I2C status register
        i2c: core-smbus: Expose PEC calculate function for generic use
        Documentation: i2c: Add doc for I2C sysfs
        i2c: core: Disable client irq on reboot/shutdown
        dt-bindings: i2c: update bindings for MT8195 SoC
        i2c: imx: Fix some checkpatch warnings
        i2c: davinci: Simplify with dev_err_probe()
        i2c: cadence: Simplify with dev_err_probe()
        i2c: xiic: Simplify with dev_err_probe()
        i2c: cadence: Clear HOLD bit before xfer_size register rolls over
        dt-bindings: i2c: ce4100: Replace "ti,pcf8575" by "nxp,pcf8575"
        i2c: i801: Improve i801_setup_hstcfg
        i2c: i801: Use driver name constant instead of function dev_driver_string
        i2c: i801: Simplify initialization of i2c_board_info in i801_probe_optional_slaves
        i2c: i801: Improve status polling
        i2c: cht-wc: Replace of_node by NULL
        i2c: riic: Add RZ/G2L support
        dt-bindings: i2c: renesas,riic: Document RZ/G2L I2C controller
        dt-bindings: i2c: renesas,iic: Convert to json-schema
        ...
      855ff900
    • Martin K. Petersen's avatar
      scsi: blkcg: Fix application ID config options · d2500a0c
      Martin K. Petersen authored
      Commit d2bcbeab ("scsi: blkcg: Add app identifier support for
      blkcg") introduced an FC_APPID config option under SCSI. However, the
      added config option is not used anywhere. Simply remove it.
      
      The block layer BLK_CGROUP_FC_APPID config option is what actually
      controls whether the application ID code should be built or not. Make
      this option dependent on NVMe over FC since that is currently the only
      transport which supports the capability.
      
      Fixes: d2bcbeab ("scsi: blkcg: Add app identifier support for blkcg")
      Reported-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
      Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      d2500a0c
    • Guo Ren's avatar
      csky: Kconfig: Remove unused selects · 90dc8c0e
      Guo Ren authored
       - GENERIC_ALLOCATOR is duplicated
       - Remove USB_ARCH_HAS_OHCI & USB_ARCH_HAS_EHCI, because they
         have been removed from linux.
      Signed-off-by: default avatarGuo Ren <guoren@linux.alibaba.com>
      Cc: Arnd Bergmann <arnd@arndb.de>
      90dc8c0e
    • Guo Ren's avatar
      csky: syscache: Fixup duplicate cache flush · 6ea42c84
      Guo Ren authored
      The current csky logic of sys_cacheflush is wrong, it'll cause
      icache flush call dcache flush again. Now fixup it with a
      conditional "break & fallthrough".
      
      Fixes: 997153b9 ("csky: Add flush_icache_mm to defer flush icache all")
      Fixes: 0679d29d ("csky: fix syscache.c fallthrough warning")
      Acked-by: default avatarRandy Dunlap <rdunlap@infradead.org>
      Co-Developed-by: default avatarRandy Dunlap <rdunlap@infradead.org>
      Signed-off-by: default avatarGuo Ren <guoren@linux.alibaba.com>
      Cc: Arnd Bergmann <arnd@arndb.de>
      6ea42c84
  4. 03 Jul, 2021 8 commits
    • Linus Torvalds's avatar
      Merge tag 'leds-5.14-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/pavel/linux-leds · 303392fd
      Linus Torvalds authored
      Pull LED updates from Pavel Machek:
       "This contains quite a lot of fixes, with more fixes in my inbox that
        did not make it (sorry)"
      
      * tag 'leds-5.14-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/pavel/linux-leds: (36 commits)
        leds: lgm: Fix up includes
        leds: ktd2692: Fix an error handling path
        leds: as3645a: Fix error return code in as3645a_parse_node()
        leds: turris-omnia: add missing MODULE_DEVICE_TABLE
        leds: lp55xx: Initialize enable GPIO direction to output
        leds: lm36274: Add missed property.h
        leds: el15203000: Make error handling more robust
        leds: pwm: Make error handling more robust
        leds: lt3593: Make use of device properties
        leds: lp50xx: Put fwnode in error case during ->probe()
        leds: lm3697: Don't spam logs when probe is deferred
        leds: lm3692x: Put fwnode in any case during ->probe()
        leds: lm36274: Correct headers (of*.h -> mod_devicetable.h)
        leds: lm36274: Put fwnode in error case during ->probe()
        leds: lm3532: Make error handling more robust
        leds: lm3532: select regmap I2C API
        leds: lgm-sso: Drop duplicate NULL check for GPIO operations
        leds: lgm-sso: Remove unneeded of_match_ptr()
        leds: lgm-sso: Fix clock handling
        leds: el15203000: Introduce to_el15203000_led() helper
        ...
      303392fd
    • Linus Torvalds's avatar
      Merge tag 'vfio-v5.14-rc1' of git://github.com/awilliam/linux-vfio · 8e8d9442
      Linus Torvalds authored
      Pull VFIO updates from Alex Williamson:
      
       - Module reference fixes, structure renaming (Max Gurtovoy)
      
       - Export and use common pci_dev_trylock() (Luis Chamberlain)
      
       - Enable direct mdev device creation and probing by parent (Christoph
         Hellwig & Jason Gunthorpe)
      
       - Fix mdpy error path leak (Colin Ian King)
      
       - Fix mtty list entry leak (Jason Gunthorpe)
      
       - Enforce mtty device limit (Alex Williamson)
      
       - Resolve concurrent vfio-pci mmap faults (Alex Williamson)
      
      * tag 'vfio-v5.14-rc1' of git://github.com/awilliam/linux-vfio:
        vfio/pci: Handle concurrent vma faults
        vfio/mtty: Enforce available_instances
        vfio/mtty: Delete mdev_devices_list
        vfio: use the new pci_dev_trylock() helper to simplify try lock
        PCI: Export pci_dev_trylock() and pci_dev_unlock()
        vfio/mdpy: Fix memory leak of object mdev_state->vconfig
        vfio/iommu_type1: rename vfio_group struck to vfio_iommu_group
        vfio/mbochs: Convert to use vfio_register_group_dev()
        vfio/mdpy: Convert to use vfio_register_group_dev()
        vfio/mtty: Convert to use vfio_register_group_dev()
        vfio/mdev: Allow the mdev_parent_ops to specify the device driver to bind
        vfio/mdev: Remove CONFIG_VFIO_MDEV_DEVICE
        driver core: Export device_driver_attach()
        driver core: Don't return EPROBE_DEFER to userspace during sysfs bind
        driver core: Flow the return code from ->probe() through to sysfs bind
        driver core: Better distinguish probe errors in really_probe
        driver core: Pull required checks into driver_probe_device()
        vfio/platform: remove unneeded parent_module attribute
        vfio: centralize module refcount in subsystem layer
      8e8d9442
    • Linus Torvalds's avatar
      Merge branch 'work.namei' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs · 58ec9059
      Linus Torvalds authored
      Pull vfs name lookup updates from Al Viro:
       "Small namei.c patch series, mostly to simplify the rules for nameidata
        state. It's actually from the previous cycle - but I didn't post it
        for review in time...
      
        Changes visible outside of fs/namei.c: file_open_root() calling
        conventions change, some freed bits in LOOKUP_... space"
      
      * 'work.namei' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
        namei: make sure nd->depth is always valid
        teach set_nameidata() to handle setting the root as well
        take LOOKUP_{ROOT,ROOT_GRABBED,JUMPED} out of LOOKUP_... space
        switch file_open_root() to struct path
      58ec9059
    • Linus Torvalds's avatar
      Merge branch 'work.iov_iter' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs · d3acb15a
      Linus Torvalds authored
      Pull iov_iter updates from Al Viro:
       "iov_iter cleanups and fixes.
      
        There are followups, but this is what had sat in -next this cycle. IMO
        the macro forest in there became much thinner and easier to follow..."
      
      * 'work.iov_iter' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (37 commits)
        csum_and_copy_to_pipe_iter(): leave handling of csum_state to caller
        clean up copy_mc_pipe_to_iter()
        pipe_zero(): we don't need no stinkin' kmap_atomic()...
        iov_iter: clean csum_and_copy_...() primitives up a bit
        copy_page_from_iter(): don't need kmap_atomic() for kvec/bvec cases
        copy_page_to_iter(): don't bother with kmap_atomic() for bvec/kvec cases
        iterate_xarray(): only of the first iteration we might get offset != 0
        pull handling of ->iov_offset into iterate_{iovec,bvec,xarray}
        iov_iter: make iterator callbacks use base and len instead of iovec
        iov_iter: make the amount already copied available to iterator callbacks
        iov_iter: get rid of separate bvec and xarray callbacks
        iov_iter: teach iterate_{bvec,xarray}() about possible short copies
        iterate_bvec(): expand bvec.h macro forest, massage a bit
        iov_iter: unify iterate_iovec and iterate_kvec
        iov_iter: massage iterate_iovec and iterate_kvec to logics similar to iterate_bvec
        iterate_and_advance(): get rid of magic in case when n is 0
        csum_and_copy_to_iter(): massage into form closer to csum_and_copy_from_iter()
        iov_iter: replace iov_iter_copy_from_user_atomic() with iterator-advancing variant
        [xarray] iov_iter_npages(): just use DIV_ROUND_UP()
        iov_iter_npages(): don't bother with iterate_all_kinds()
        ...
      d3acb15a
    • Linus Torvalds's avatar
      Merge branch 'work.d_path' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs · f92a322a
      Linus Torvalds authored
      Pull vfs d_path() updates from Al Viro:
       "d_path.c refactoring"
      
      * 'work.d_path' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
        getcwd(2): clean up error handling
        d_path: prepend_path() is unlikely to return non-zero
        d_path: prepend_path(): lift the inner loop into a new helper
        d_path: prepend_path(): lift resetting b in case when we'd return 3 out of loop
        d_path: prepend_path(): get rid of vfsmnt
        d_path: introduce struct prepend_buffer
        d_path: make prepend_name() boolean
        d_path: lift -ENAMETOOLONG handling into callers of prepend_path()
        d_path: don't bother with return value of prepend()
        getcwd(2): saner logics around prepend_path() call
        d_path: get rid of path_with_deleted()
        d_path: regularize handling of root dentry in __dentry_path()
        d_path: saner calling conventions for __dentry_path()
        d_path: "\0" is {0,0}, not {0}
      f92a322a
    • Linus Torvalds's avatar
      Merge tag 'trace-v5.14' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace · 757fa80f
      Linus Torvalds authored
      Pull tracing updates from Steven Rostedt:
      
       - Added option for per CPU threads to the hwlat tracer
      
       - Have hwlat tracer handle hotplug CPUs
      
       - New tracer: osnoise, that detects latency caused by interrupts,
         softirqs and scheduling of other tasks.
      
       - Added timerlat tracer that creates a thread and measures in detail
         what sources of latency it has for wake ups.
      
       - Removed the "success" field of the sched_wakeup trace event. This has
         been hardcoded as "1" since 2015, no tooling should be looking at it
         now. If one exists, we can revert this commit, fix that tool and try
         to remove it again in the future.
      
       - tgid mapping fixed to handle more than PID_MAX_DEFAULT pids/tgids.
      
       - New boot command line option "tp_printk_stop", as tp_printk causes
         trace events to write to console. When user space starts, this can
         easily live lock the system. Having a boot option to stop just after
         boot up is useful to prevent that from happening.
      
       - Have ftrace_dump_on_oops boot command line option take numbers that
         match the numbers shown in /proc/sys/kernel/ftrace_dump_on_oops.
      
       - Bootconfig clean ups, fixes and enhancements.
      
       - New ktest script that tests bootconfig options.
      
       - Add tracepoint_probe_register_may_exist() to register a tracepoint
         without triggering a WARN*() if it already exists. BPF has a path
         from user space that can do this. All other paths are considered a
         bug.
      
       - Small clean ups and fixes
      
      * tag 'trace-v5.14' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace: (49 commits)
        tracing: Resize tgid_map to pid_max, not PID_MAX_DEFAULT
        tracing: Simplify & fix saved_tgids logic
        treewide: Add missing semicolons to __assign_str uses
        tracing: Change variable type as bool for clean-up
        trace/timerlat: Fix indentation on timerlat_main()
        trace/osnoise: Make 'noise' variable s64 in run_osnoise()
        tracepoint: Add tracepoint_probe_register_may_exist() for BPF tracing
        tracing: Fix spelling in osnoise tracer "interferences" -> "interference"
        Documentation: Fix a typo on trace/osnoise-tracer
        trace/osnoise: Fix return value on osnoise_init_hotplug_support
        trace/osnoise: Make interval u64 on osnoise_main
        trace/osnoise: Fix 'no previous prototype' warnings
        tracing: Have osnoise_main() add a quiescent state for task rcu
        seq_buf: Make trace_seq_putmem_hex() support data longer than 8
        seq_buf: Fix overflow in seq_buf_putmem_hex()
        trace/osnoise: Support hotplug operations
        trace/hwlat: Support hotplug operations
        trace/hwlat: Protect kdata->kthread with get/put_online_cpus
        trace: Add timerlat tracer
        trace: Add osnoise tracer
        ...
      757fa80f
    • Linus Torvalds's avatar
      Merge tag 'devicetree-for-5.14' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux · a70bb580
      Linus Torvalds authored
      Pull devicetree updates from Rob Herring:
      
       - Refine reserved memory nomap handling
      
       - Merge some PCI and non-PCI address handling implementations
      
       - Simplify of_address.h header ifdefs
      
       - Improve printk handling of some 64-bit types
      
       - Convert adi,adv7511, Arm ccree, Arm SCMI, Arm SCU, Arm TWD timer, Arm
         VIC, arm,sbsa-gwdt, Arm/Amlogic SCPI, Aspeed I2C, Broadcom iProc PWM,
         linaro,optee-tz, MDIO GPIO, Mediatek RNG, MTD physmap, NXP
         pcf8563/pcf85263/pcf85363, Renesas TPU, renesas,emev2-smu,
         renesas,r9a06g032-sysctrl, sysc-rmobile, Tegra20 EMC, TI AM56 PCI, TI
         OMAP mailbox, TI SCI bindings, virtio-mmio, Zynq FPGA, and ZynqMP RTC
         to DT schema
      
       - Convert mux and mux controller bindings to schema. This includes MDIO
         IIO, and I2C muxes.
      
       - Add Arm PL031 RTC binding schema
      
       - Add vendor prefixes for StarFive Technology Co. Ltd. and Insignal Ltd
      
       - Fix some stale doc references
      
       - Remove stale property-units.txt. Superseded by schema in dt-schema
         repo.
      
       - Fixes for 'unevaluatedProperties' handling (enabled with experimental
         json-schema support)
      
       - Drop redundant usage of minItems and maxItems across the tree
      
       - Update some examples to use bindings with a schema
      
      * tag 'devicetree-for-5.14' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux: (83 commits)
        dt-bindings: Fix 'unevaluatedProperties' errors in DT graph users
        dt-bindings: display: renesas,du: Fix 'ports' reference
        dt-bindings: media: adv7180: Add missing video-interfaces.yaml reference
        dt-bindings: crypto: ccree: Convert to json-schema
        dt-bindings: fpga: zynq: convert bindings to YAML
        dt-bindings: rtc: zynqmp: convert bindings to YAML
        dt-bindings: interrupt-controller: Convert ARM VIC to json-schema
        of: of_reserved_mem: mark nomap memory instead of removing
        of: of_reserved_mem: only call memblock_free for normal reserved memory
        dt-bindings: Drop redundant minItems/maxItems
        dt-bindings: spmi: Correct 'reg' schema
        of: reserved-memory: Add stub for RESERVEDMEM_OF_DECLARE()
        dt-bindings: clk: vc5: Fix example
        dt-bindings: timer: renesas,tmu: add r8a779a0 TMU support
        dt-bindings: drm: bridge: adi,adv7511.txt: convert to yaml
        dt-bindings: PCI: ti,am65: Convert PCIe host/endpoint mode dt-bindings to YAML
        of: Remove superfluous casts when printing u64 values
        of: Fix truncation of memory sizes on 32-bit platforms
        dt-bindings: rtc: nxp,pcf8563: Absorb pcf85263/pcf85363 bindings
        dt-bindings: pwm: Use examples with documented/matching schema
        ...
      a70bb580
    • Linus Torvalds's avatar
      Revert "ALSA: usb-audio: Reduce latency at playback start" · 4b820e16
      Linus Torvalds authored
      This reverts commit 9ce650a7.
      
      This commit causes watchdog lockups on my machine, and while I have no
      idea what the cause is, it bisected right to this commit, and reverting
      the change promptly fixes it.
      
      At least occasionally one of the watchdog call traces was
      
        Call Trace:
          _raw_spin_lock_irqsave+0x35/0x40
          snd_pcm_period_elapsed+0x1b/0xa0 [snd_pcm]
          snd_usb_endpoint_start+0x1a0/0x3c0 [snd_usb_audio]
          start_endpoints+0x23/0x90 [snd_usb_audio]
          snd_usb_substream_playback_trigger+0x7b/0x1a0 [snd_usb_audio]
          snd_pcm_common_ioctl+0x1c44/0x2360 [snd_pcm]
          snd_pcm_ioctl+0x2e/0x40 [snd_pcm]
          __se_sys_ioctl+0x72/0xc0
          do_syscall_64+0x4c/0xa0
          entry_SYSCALL_64_after_hwframe+0x44/0xae
      
      so presumably it's a locking error on that substream spinlock that
      snd_pcm_period_elapsed() takes.  But at this point I just want to have a
      working system so that I can continue the merge window work tomorrow.
      
      Cc: Takashi Iwai <tiwai@suse.de>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      4b820e16
  5. 02 Jul, 2021 3 commits
    • Linus Torvalds's avatar
      Merge tag 'sound-5.14-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound · d6b63b5b
      Linus Torvalds authored
      Pull sound updates from Takashi Iwai:
       "As the diffstat scatters over the tree, we've got many tree-wide small
        changes, but also got quite a few intrusive changes in the core side.
        The only ABI-visible core change is the new rawmidi framing mode
        support while others are kernel-internal, mostly code refactoring
        and/or nice improvements.
      
        Here are some highlights:
      
        Core:
         - A new framing access mode for rawmidi to get timestamps
         - Cleanup / refactoring of buffer memory management helper code
         - Support for automatic negotiation of ASoC DAI formats
         - Revival of software suspend for PCM and control core, as a
           preliminary work for PCI BAR rescan support
      
        ASoC:
         - Accessory detection support for several Qualcomm parts
         - Support for IEC958 control with hdmi-codec
         - Merging of Tegra machine drivers into a single driver
         - Support for AmLogic SM1 TOACODEC, Intel AlderLake-M, several NXP
           i.MX8 variants, NXP TFA1 and TDF9897, Rockchip RK817, Qualcomm
           Quinary MI2S, Texas Instruments TAS2505
      
        USB-audio:
         - Reduction of latency at playback start
         - Code cleanup / fixes of usx2y driver
         - Scarlett2 mixer code fixes and enhancements
         - Quirks for Ozone and Denon devices
      
        HD-audio:
         - A few quirks for HP and ASUS machines
         - Display power management fixes
      
        Others:
         - FireWire code refactoring and enhancements
         - Tree-wide trivial coding-style fixes"
      
      * tag 'sound-5.14-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (594 commits)
        ALSA: usb-audio: scarlett2: Fix for loop increment in scarlett2_usb_get_config
        ALSA: hda/realtek: fix mute/micmute LEDs for HP ProBook 630 G8
        ALSA: hda/realtek: fix mute/micmute LEDs for HP ProBook 445 G8
        ALSA: hda/realtek: fix mute/micmute LEDs for HP ProBook 450 G8
        ALSA: hda/realtek - Add ALC285 HP init procedure
        ALSA: hda/realtek - Add type for ALC287
        ALSA: scarlett2: Fix scarlett2_*_ctl_put() return values again
        ALSA: scarlett2: Fix pad count for 18i8 Gen 3
        ALSA: hda/realtek: fix mute/micmute LEDs for HP EliteBook 830 G8 Notebook PC
        ALSA: firewire-lib: Fix 'amdtp_domain_start()' when no AMDTP_OUT_STREAM stream is found
        ASoC: qcom: lpass-cpu: mark IRQ_CLEAR register as volatile and readable
        ALSA: hda: Release codec display power during shutdown/reboot
        ALSA: hda: Release controller display power during shutdown/reboot
        ALSA: hda/realtek: Apply LED fixup for HP Dragonfly G1, too
        ASoC: fsl: remove unnecessary oom message
        ASoC: tlv320aic32x4: dt-bindings: add TAS2505 to compatible
        ASoC: tlv320aic32x4: add support for TAS2505
        ASoC: tlv320aic32x4: add type to device private data struct
        ASoC: tegra30: ahub: Use devm_platform_get_and_ioremap_resource()
        ASoC: tegra: tegra210_admaif: Use devm_platform_get_and_ioremap_resource()
        ...
      d6b63b5b
    • Linus Torvalds's avatar
      Merge tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi · bd31b9ef
      Linus Torvalds authored
      Pull SCSI updates from James Bottomley:
       "This series consists of the usual driver updates (ufs, ibmvfc,
        megaraid_sas, lpfc, elx, mpi3mr, qedi, iscsi, storvsc, mpt3sas) with
        elx and mpi3mr being new drivers.
      
        The major core change is a rework to drop the status byte handling
        macros and the old bit shifted definitions and the rest of the updates
        are minor fixes"
      
      * tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi: (287 commits)
        scsi: aha1740: Avoid over-read of sense buffer
        scsi: arcmsr: Avoid over-read of sense buffer
        scsi: ips: Avoid over-read of sense buffer
        scsi: ufs: ufs-mediatek: Add missing of_node_put() in ufs_mtk_probe()
        scsi: elx: libefc: Fix IRQ restore in efc_domain_dispatch_frame()
        scsi: elx: libefc: Fix less than zero comparison of a unsigned int
        scsi: elx: efct: Fix pointer error checking in debugfs init
        scsi: elx: efct: Fix is_originator return code type
        scsi: elx: efct: Fix link error for _bad_cmpxchg
        scsi: elx: efct: Eliminate unnecessary boolean check in efct_hw_command_cancel()
        scsi: elx: efct: Do not use id uninitialized in efct_lio_setup_session()
        scsi: elx: efct: Fix error handling in efct_hw_init()
        scsi: elx: efct: Remove redundant initialization of variable lun
        scsi: elx: efct: Fix spelling mistake "Unexected" -> "Unexpected"
        scsi: lpfc: Fix build error in lpfc_scsi.c
        scsi: target: iscsi: Remove redundant continue statement
        scsi: qla4xxx: Remove redundant continue statement
        scsi: ppa: Switch to use module_parport_driver()
        scsi: imm: Switch to use module_parport_driver()
        scsi: mpt3sas: Fix error return value in _scsih_expander_add()
        ...
      bd31b9ef
    • Linus Torvalds's avatar
      Merge tag 'xfs-5.14-merge-6' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux · 9f7b640f
      Linus Torvalds authored
      Pull xfs updates from Darrick Wong:
       "Most of the work this cycle has been on refactoring various parts of
        the codebase. The biggest non-cleanup changes are (1) reducing the
        number of cache flushes sent when writing the log; (2) a substantial
        number of log recovery fixes; and (3) I started accepting pull
        requests from contributors if the commits in their branches match
        what's been sent to the list.
      
        For a week or so I /had/ staged a major cleanup of the logging code
        from Dave Chinner, but it exposed so many lurking bugs in other parts
        of the logging and log recovery code that I decided to defer that
        patchset until we can address those latent bugs.
      
        Larger cleanups this time include walking the incore inode cache (me)
        and rework of the extended attribute code (Allison) to prepare it for
        adding logged xattr updates (and directory tree parent pointers) in
        future releases.
      
        Summary:
      
         - Refactor the buffer cache to use bulk page allocation
      
         - Convert agnumber-based AG iteration to walk per-AG structures
      
         - Clean up some unit conversions and other code warts
      
         - Reduce spinlock contention in the directio fastpath
      
         - Collapse all the inode cache walks into a single function
      
         - Remove indirect function calls from the inode cache walk code
      
         - Dramatically reduce the number of cache flushes sent when writing
           log buffers
      
         - Preserve inode sickness reports for longer
      
         - Rename xfs_eofblocks since it controls inode cache walks
      
         - Refactor the extended attribute code to prepare it for the addition
           of log intent items to make xattrs fully transactional
      
         - A few fixes to earlier large patchsets
      
         - Log recovery fixes so that we don't accidentally mark the log clean
           when log intent recovery fails
      
         - Fix some latent SOB errors
      
         - Clean up shutdown messages that get logged to dmesg
      
         - Fix a regression in the online shrink code
      
         - Fix a UAF in the buffer logging code if the fs goes offline
      
         - Fix uninitialized error variables
      
         - Fix a UAF in the CIL when commited log item callbacks race with a
           shutdown
      
         - Fix a bug where the CIL could hang trying to push part of the log
           ring buffer that hasn't been filled yet"
      
      * tag 'xfs-5.14-merge-6' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux: (102 commits)
        xfs: don't wait on future iclogs when pushing the CIL
        xfs: Fix a CIL UAF by getting get rid of the iclog callback lock
        xfs: remove callback dequeue loop from xlog_state_do_iclog_callbacks
        xfs: don't nest icloglock inside ic_callback_lock
        xfs: Initialize error in xfs_attr_remove_iter
        xfs: fix endianness issue in xfs_ag_shrink_space
        xfs: remove dead stale buf unpin handling code
        xfs: hold buffer across unpin and potential shutdown processing
        xfs: force the log offline when log intent item recovery fails
        xfs: fix log intent recovery ENOSPC shutdowns when inactivating inodes
        xfs: shorten the shutdown messages to a single line
        xfs: print name of function causing fs shutdown instead of hex pointer
        xfs: fix type mismatches in the inode reclaim functions
        xfs: separate primary inode selection criteria in xfs_iget_cache_hit
        xfs: refactor the inode recycling code
        xfs: add iclog state trace events
        xfs: xfs_log_force_lsn isn't passed a LSN
        xfs: Fix CIL throttle hang when CIL space used going backwards
        xfs: journal IO cache flush reductions
        xfs: remove need_start_rec parameter from xlog_write()
        ...
      9f7b640f