Skip to contentSkip to conversation

Linux 5.8.10

DISCUSSION Greg Kroah-Hartman 1 participant 2 messages Sep 17, 2020 Stable branch

lore
Share & tools
lore

Greg Kroah-Hartman

author maintainer
#0 lore raw

I'm announcing the release of the 5.8.10 kernel.

All users of the 5.8 kernel series must upgrade.

The updated 5.8.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.8.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary

thanks,

greg k-h

------------

 Documentation/sound/designs/timestamping.rst                  |    2 
 Makefile                                                      |    6 
 arch/arc/boot/dts/hsdk.dts                                    |    6 
 arch/arc/kernel/troubleshoot.c                                |   77 --
 arch/arc/plat-eznps/include/plat/ctop.h                       |    1 
 arch/arm/boot/dts/bcm-hr2.dtsi                                |    2 
 arch/arm/boot/dts/bcm-nsp.dtsi                                |    2 
 arch/arm/boot/dts/bcm5301x.dtsi                               |    2 
 arch/arm/boot/dts/imx6sx-pinfunc.h                            |    2 
 arch/arm/boot/dts/imx7d-zii-rmu2.dts                          |    2 
 arch/arm/boot/dts/imx7ulp.dtsi                                |    8 
 arch/arm/boot/dts/logicpd-som-lv-baseboard.dtsi               |   29 
 arch/arm/boot/dts/logicpd-torpedo-baseboard.dtsi              |    2 
 arch/arm/boot/dts/ls1021a.dtsi                                |    2 
 arch/arm/boot/dts/omap5.dtsi                                  |   20 
 arch/arm/boot/dts/socfpga_arria10.dtsi                        |    2 
 arch/arm/boot/dts/vfxxx.dtsi                                  |    2 
 arch/arm/mach-omap2/omap-iommu.c                              |    2 
 arch/arm64/boot/dts/broadcom/northstar2/ns2.dtsi              |    2 
 arch/arm64/boot/dts/freescale/Makefile                        |    1 
 arch/arm64/boot/dts/freescale/imx8mp.dtsi                     |    2 
 arch/arm64/boot/dts/freescale/imx8mq.dtsi                     |    2 
 arch/arm64/kernel/module-plts.c                               |    3 
 arch/arm64/kvm/mmu.c                                          |    8 
 arch/mips/include/asm/mach-loongson64/cpu-feature-overrides.h |    2 
 arch/powerpc/configs/pasemi_defconfig                         |    1 
 arch/powerpc/configs/ppc6xx_defconfig                         |    1 
 arch/x86/configs/i386_defconfig                               |    1 
 arch/x86/configs/x86_64_defconfig                             |    1 
 arch/x86/kvm/mmu/mmu.c                                        |    2 
 arch/x86/kvm/vmx/nested.c                                     |    2 
 arch/x86/kvm/vmx/vmx.c                                        |    1 
 arch/x86/kvm/x86.c                                            |    2 
 block/bio.c                                                   |    4 
 block/partitions/core.c                                       |    2 
 drivers/atm/firestream.c                                      |    1 
 drivers/block/rbd.c                                           |   12 
 drivers/cpufreq/intel_pstate.c                                |   14 
 drivers/dma/acpi-dma.c                                        |    4 
 drivers/dma/dma-jz4780.c                                      |   38 -
 drivers/firmware/efi/embedded-firmware.c                      |   10 
 drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c              |    3 
 drivers/gpu/drm/msm/adreno/a2xx_gpu.c                         |    5 
 drivers/gpu/drm/msm/adreno/a3xx_gpu.c                         |   10 
 drivers/gpu/drm/msm/adreno/a4xx_gpu.c                         |   10 
 drivers/gpu/drm/msm/adreno/a5xx_gpu.c                         |   14 
 drivers/gpu/drm/msm/adreno/a5xx_gpu.h                         |    1 
 drivers/gpu/drm/msm/adreno/a5xx_preempt.c                     |   25 
 drivers/gpu/drm/msm/adreno/a6xx_gpu.c                         |    7 
 drivers/gpu/drm/msm/adreno/adreno_gpu.c                       |   27 
 drivers/gpu/drm/msm/msm_ringbuffer.c                          |    3 
 drivers/gpu/drm/sun4i/sun4i_backend.c                         |    4 
 drivers/gpu/drm/sun4i/sun4i_tcon.c                            |    8 
 drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c                        |    4 
 drivers/gpu/drm/sun4i/sun8i_vi_layer.c                        |    2 
 drivers/gpu/drm/tve200/tve200_display.c                       |   22 
 drivers/gpu/drm/virtio/virtgpu_display.c                      |   11 
 drivers/gpu/drm/virtio/virtgpu_drv.h                          |    1 
 drivers/gpu/drm/virtio/virtgpu_plane.c                        |    4 
 drivers/hid/hid-elan.c                                        |    2 
 drivers/hid/hid-ids.h                                         |    3 
 drivers/hid/hid-microsoft.c                                   |    2 
 drivers/hid/hid-quirks.c                                      |    2 
 drivers/i2c/busses/i2c-npcm7xx.c                              |    8 
 drivers/iio/accel/bmc150-accel-core.c                         |   15 
 drivers/iio/accel/kxsd9.c                                     |   16 
 drivers/iio/accel/mma7455_core.c                              |   16 
 drivers/iio/accel/mma8452.c                                   |   11 
 drivers/iio/adc/ina2xx-adc.c                                  |   11 
 drivers/iio/adc/max1118.c                                     |   10 
 drivers/iio/adc/mcp3422.c                                     |   16 
 drivers/iio/adc/ti-adc081c.c                                  |   11 
 drivers/iio/adc/ti-adc084s021.c                               |   10 
 drivers/iio/adc/ti-ads1015.c                                  |   10 
 drivers/iio/chemical/ccs811.c                                 |   13 
 drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c     |    5 
 drivers/iio/light/ltr501.c                                    |   15 
 drivers/iio/light/max44000.c                                  |   12 
 drivers/iio/magnetometer/ak8975.c                             |   16 
 drivers/iio/proximity/mb1232.c                                |   17 
 drivers/infiniband/core/cq.c                                  |    4 
 drivers/infiniband/core/verbs.c                               |    2 
 drivers/infiniband/hw/bnxt_re/ib_verbs.c                      |   43 -
 drivers/infiniband/hw/bnxt_re/main.c                          |    3 
 drivers/infiniband/hw/bnxt_re/qplib_fp.c                      |   26 
 drivers/infiniband/hw/bnxt_re/qplib_rcfw.c                    |   10 
 drivers/infiniband/hw/bnxt_re/qplib_rcfw.h                    |    5 
 drivers/infiniband/hw/mlx4/main.c                             |    3 
 drivers/infiniband/sw/rxe/rxe.c                               |    7 
 drivers/infiniband/sw/rxe/rxe.h                               |    2 
 drivers/infiniband/sw/rxe/rxe_mr.c                            |    1 
 drivers/infiniband/sw/rxe/rxe_sysfs.c                         |    5 
 drivers/infiniband/sw/rxe/rxe_verbs.c                         |    2 
 drivers/infiniband/ulp/isert/ib_isert.c                       |   93 +-
 drivers/infiniband/ulp/isert/ib_isert.h                       |   41 -
 drivers/infiniband/ulp/rtrs/rtrs-srv-sysfs.c                  |   16 
 drivers/infiniband/ulp/rtrs/rtrs-srv.c                        |    9 
 drivers/interconnect/qcom/bcm-voter.c                         |   27 
 drivers/iommu/amd/iommu.c                                     |    7 
 drivers/iommu/amd/iommu_v2.c                                  |    7 
 drivers/media/rc/gpio-ir-tx.c                                 |   16 
 drivers/misc/eeprom/at24.c                                    |   11 
 drivers/mmc/core/sdio_ops.c                                   |   39 -
 drivers/mmc/host/sdhci-acpi.c                                 |   31 
 drivers/mmc/host/sdhci-msm.c                                  |   18 
 drivers/mmc/host/sdhci-of-esdhc.c                             |   10 
 drivers/net/ethernet/hisilicon/hns3/hns3_enet.c               |    6 
 drivers/net/wan/hdlc.c                                        |    2 
 drivers/net/wan/hdlc_cisco.c                                  |    1 
 drivers/net/wan/lapbether.c                                   |    3 
 drivers/nfc/st95hf/core.c                                     |    2 
 drivers/nvme/host/core.c                                      |    8 
 drivers/nvme/host/fabrics.c                                   |   13 
 drivers/nvme/host/nvme.h                                      |    3 
 drivers/nvme/host/pci.c                                       |    4 
 drivers/nvme/host/rdma.c                                      |   68 +-
 drivers/nvme/host/tcp.c                                       |   80 +-
 drivers/nvme/target/tcp.c                                     |   10 
 drivers/phy/qualcomm/phy-qcom-qmp.c                           |   16 
 drivers/phy/qualcomm/phy-qcom-qmp.h                           |    2 
 drivers/regulator/core.c                                      |  155 ++--
 drivers/scsi/libsas/sas_ata.c                                 |    5 
 drivers/scsi/lpfc/lpfc_init.c                                 |    1 
 drivers/scsi/megaraid/megaraid_sas_fusion.c                   |    2 
 drivers/scsi/mpt3sas/mpt3sas_base.c                           |    2 
 drivers/scsi/qedf/qedf_main.c                                 |    2 
 drivers/scsi/qla2xxx/qla_def.h                                |    2 
 drivers/scsi/qla2xxx/qla_init.c                               |    6 
 drivers/soundwire/stream.c                                    |    8 
 drivers/spi/spi-stm32.c                                       |    8 
 drivers/staging/greybus/audio_topology.c                      |   29 
 drivers/staging/wlan-ng/hfa384x_usb.c                         |    5 
 drivers/staging/wlan-ng/prism2usb.c                           |   19 
 drivers/target/iscsi/iscsi_target.c                           |   17 
 drivers/target/iscsi/iscsi_target_login.c                     |    6 
 drivers/target/iscsi/iscsi_target_login.h                     |    3 
 drivers/target/iscsi/iscsi_target_nego.c                      |    3 
 drivers/thunderbolt/switch.c                                  |    1 
 drivers/thunderbolt/tb.h                                      |    2 
 drivers/usb/core/message.c                                    |   91 +-
 drivers/usb/core/sysfs.c                                      |    5 
 drivers/usb/dwc3/dwc3-meson-g12a.c                            |   15 
 drivers/usb/serial/ftdi_sio.c                                 |    1 
 drivers/usb/serial/ftdi_sio_ids.h                             |    1 
 drivers/usb/serial/option.c                                   |   22 
 drivers/usb/typec/mux/intel_pmc_mux.c                         |   14 
 drivers/usb/typec/ucsi/ucsi_acpi.c                            |    4 
 drivers/video/console/Kconfig                                 |   46 -
 drivers/video/console/vgacon.c                                |  221 ------
 drivers/video/fbdev/core/bitblit.c                            |   11 
 drivers/video/fbdev/core/fbcon.c                              |  334 ----------
 drivers/video/fbdev/core/fbcon.h                              |    2 
 drivers/video/fbdev/core/fbcon_ccw.c                          |   11 
 drivers/video/fbdev/core/fbcon_cw.c                           |   11 
 drivers/video/fbdev/core/fbcon_ud.c                           |   11 
 drivers/video/fbdev/core/tileblit.c                           |    2 
 drivers/video/fbdev/vga16fb.c                                 |    2 
 fs/btrfs/disk-io.c                                            |    2 
 fs/btrfs/extent-tree.c                                        |   19 
 fs/btrfs/ioctl.c                                              |    3 
 fs/btrfs/print-tree.c                                         |   12 
 fs/btrfs/transaction.c                                        |    1 
 fs/btrfs/volumes.c                                            |   10 
 fs/debugfs/file.c                                             |    4 
 fs/xfs/libxfs/xfs_attr_leaf.c                                 |    4 
 fs/xfs/libxfs/xfs_ialloc.c                                    |    4 
 fs/xfs/libxfs/xfs_trans_space.h                               |    2 
 include/linux/efi_embedded_fw.h                               |    6 
 include/linux/netfilter/nf_conntrack_sctp.h                   |    2 
 include/soc/nps/common.h                                      |    6 
 kernel/gcov/gcc_4_7.c                                         |    4 
 kernel/padata.c                                               |    5 
 kernel/seccomp.c                                              |   13 
 lib/kobject.c                                                 |    6 
 lib/test_firmware.c                                           |    9 
 net/mac80211/sta_info.h                                       |    4 
 net/mac80211/status.c                                         |   31 
 net/netfilter/nf_conntrack_proto_sctp.c                       |   39 +
 net/netfilter/nft_set_rbtree.c                                |   34 -
 net/wireless/chan.c                                           |   15 
 net/wireless/util.c                                           |    8 
 sound/hda/hdac_device.c                                       |    2 
 sound/hda/intel-dsp-config.c                                  |   10 
 sound/pci/hda/hda_tegra.c                                     |    7 
 sound/pci/hda/patch_hdmi.c                                    |    6 
 sound/x86/Kconfig                                             |    2 
 tools/testing/selftests/timers/Makefile                       |    1 
 tools/testing/selftests/timers/settings                       |    1 
 virt/kvm/kvm_main.c                                           |   21 
 189 files changed, 1293 insertions(+), 1403 deletions(-)

Adam Ford (3):
ARM: dts: logicpd-torpedo-baseboard: Fix broken audio
ARM: dts: logicpd-som-lv-baseboard: Fix broken audio
ARM: dts: logicpd-som-lv-baseboard: Fix missing video

Adrian Hunter (1):
mmc: sdio: Use mmc_pre_req() / mmc_post_req()

Aleksander Morgado (1):
USB: serial: option: add support for SIM7070/SIM7080/SIM7090 modules

Alexandru Elisei (1):
KVM: arm64: Update page shift if stage 2 block mapping not supported

Amar Singhal (1):
cfg80211: Adjust 6 GHz frequency to channel conversion

Amjad Ouled-Ameur (1):
Revert "usb: dwc3: meson-g12a: fix shared reset control use"

Andy Shevchenko (1):
kobject: Restore old behaviour of kobject_del(NULL)

Angelo Compagnucci (2):
iio: adc: mcp3422: fix locking scope
iio: adc: mcp3422: fix locking on error path

Anson Huang (1):
ARM: dts: imx7ulp: Correct gpio ranges

Bjørn Mork (1):
USB: serial: option: support dynamic Quectel USB compositions

Brian Foster (1):
xfs: fix off-by-one in inode alloc block reservation calculation

Chenyi Qiang (1):
KVM: nVMX: Fix the update value of nested load IA32_PERF_GLOBAL_CTRL control

Chris Healy (2):
ARM: dts: imx7d-zii-rmu2: fix rgmii phy-mode for ksz9031 phy
ARM: dts: vfxxx: Add syscon compatible with OCOTP

Chris Packham (1):
mmc: sdhci-of-esdhc: Don't walk device-tree on every interrupt

Christoph Hellwig (1):
block: restore a specific error code in bdev_del_partition

Dan Carpenter (1):
spi: stm32: fix pm_runtime_get_sync() error checking

Daniel Jordan (1):
padata: fix possible padata_works_lock deadlock

Darrick J. Wong (1):
xfs: initialize the shortform attr header padding entry

David Shah (1):
ARM: dts: omap5: Fix DSI base address and clocks

Dinghao Liu (4):
RDMA/rxe: Fix memleak in rxe_mem_init_user
NFC: st95hf: Fix memleak in st95hf_in_send_cmd
firestream: Fix memleak in fs_open
HID: elan: Fix memleak in elan_input_configured

Dinh Nguyen (1):
ARM: dts: socfpga: fix register entry for timer3 on Arria10

Dmitry Osipenko (1):
regulator: core: Fix slab-out-of-bounds in regulator_unlock_recursive()

Douglas Anderson (1):
mmc: sdhci-msm: Add retries when all tuning phases are found valid

Evgeniy Didin (1):
ARC: [plat-hsdk]: Switch ethernet phy-mode to rgmii-id

Felix Fietkau (1):
mac80211: reduce packet loss event false positives

Filipe Manana (2):
btrfs: fix NULL pointer dereference after failure to create snapshot
btrfs: fix wrong address when faulting in pages in the search ioctl

Florian Fainelli (4):
ARM: dts: bcm: HR2: Fixed QSPI compatible string
ARM: dts: NSP: Fixed QSPI compatible string
ARM: dts: BCM5301X: Fixed QSPI compatible string
arm64: dts: ns2: Fixed QSPI compatible string

Florian Westphal (1):
netfilter: conntrack: allow sctp hearbeat after connection re-use

Francisco Jerez (1):
cpufreq: intel_pstate: Fix intel_pstate_get_hwp_max() for turbo disabled

Fugang Duan (1):
ARM: dts: imx6sx: fix the pad QSPI1B_SCLK mux mode for uart3

Gerd Hoffmann (1):
drm/virtio: fix unblank

Greg Kroah-Hartman (1):

      Linux 5.8.10

Gwendal Grignou (1):
iio: cros_ec: Set Gyroscope default frequency to 25Hz

Hanjun Guo (1):
dmaengine: acpi: Put the CSRT table after using it

Heikki Krogerus (1):
usb: typec: ucsi: acpi: Check the _DEP dependencies

Hou Pu (1):

      scsi: target: iscsi: Fix hang in iscsit_access_np() when getting tpg->np_login_sem

Ilya Dryomov (1):
rbd: require global CAP_SYS_ADMIN for mapping and unmapping

James Smart (2):
scsi: lpfc: Fix setting IRQ affinity with an empty CPU mask
nvme: Revert: Fix controller creation races with teardown flow

Jernej Skrabec (1):
drm/sun4i: Fix DE2 YVU handling

Jessica Yu (1):
arm64/module: set trampoline section flags regardless of CONFIG_DYNAMIC_FTRACE

Jiaxun Yang (1):
MIPS: Loongson64: Do not override watch and ejtag feature

Jing Xiangfeng (1):
ARM: OMAP2+: Fix an IS_ERR() vs NULL check in _get_pwrdm()

Joerg Roedel (2):
iommu/amd: Do not force direct mapping when SME is active iommu/amd: Do not use IOMMUv2 functionality when SME is active

Jonathan Cameron (13):
iio:light:ltr501 Fix timestamp alignment issue. iio:proximity:mb1232: Fix timestamp alignment and prevent data leak. iio:accel:bmc150-accel: Fix timestamp alignment and prevent data leak. iio:adc:ti-adc084s021 Fix alignment and data leak issues. iio:adc:ina2xx Fix timestamp alignment issue. iio:adc:max1118 Fix alignment of timestamp and data leak issues iio:adc:ti-adc081c Fix alignment and data leak issues iio:magnetometer:ak8975 Fix alignment and data leak issues. iio:light:max44000 Fix timestamp alignment and prevent data leak. iio:chemical:ccs811: Fix timestamp alignment and prevent data leak.
iio: accel: kxsd9: Fix alignment of local buffer. iio:accel:mma7455: Fix timestamp alignment and prevent data leak. iio:accel:mma8452: Fix timestamp alignment and prevent data leak.

Jordan Crouse (3):
drm/msm: Split the a5xx preemption record drm/msm: Disable preemption on all 5xx targets drm/msm: Disable the RPTR shadow

Josef Bacik (2):
btrfs: fix lockdep splat in add_missing_dev
btrfs: free data reloc tree on failed mount

Josh Poimboeuf (1):
Revert "kbuild: use -flive-patching when CONFIG_LIVEPATCH is enabled"

Kamal Heib (3):
RDMA/rxe: Drop pointless checks in rxe_init_ports RDMA/rxe: Fix panic when calling kmem_cache_create() RDMA/core: Fix reported speed and width

Kees Cook (1):
test_firmware: Test platform fw loading on non-EFI systems

Krzysztof Kozlowski (1):
arm64: dts: imx8mq: Fix TMU interrupt property

Lai Jiangshan (1):
kvm x86/mmu: use KVM_REQ_MMU_SYNC to sync when needed

Leon Romanovsky (1):
gcov: Disable gcov build with GCC 10

Linus Torvalds (3):
fbcon: remove soft scrollback code
fbcon: remove now unusued 'softback_lines' cursor() argument
vgacon: remove software scrollback support

Linus Walleij (1):
drm/tve200: Stabilize enable/disable

Luo Jiaxing (1):
scsi: libsas: Set data_dir as DMA_NONE if libata marks qc as NODATA

Madhuparna Bhowmik (1):
drivers/dma/dma-jz4780: Fix race condition between probe and irq handler

Madhusudanarao Amara (1):
usb: typec: intel_pmc_mux: Un-register the USB role switch

Marc Zyngier (1):
KVM: arm64: Do not try to map PUDs when they are folded into PMD

Marek Vasut (1):
spi: stm32: Rate-limit the 'Communication suspended' message

Mark Bloch (1):
RDMA/mlx4: Read pkey table length instead of hardcoded value

Mathias Nyman (1):
usb: Fix out of sync data toggle if a configured device is reconfigured

Matthias Schiffer (1):
ARM: dts: ls1021a: fix QuadSPI-memory reg range

Maxim Kochetkov (1):
iio: adc: ti-ads1015: fix conversion when CONFIG_PM is not set

Maxime Ripard (2):
drm/sun4i: backend: Support alpha property on lowest plane drm/sun4i: backend: Disable alpha on the lowest plane on the A20

Md Haris Iqbal (2):
RDMA/rtrs-srv: Replace device_register with device_initialize and device_add RDMA/rtrs-srv: Set .release function for rtrs srv device during device init

Michał Mirosław (6):
regulator: push allocation in regulator_ena_gpio_request() out of lock
regulator: remove superfluous lock in regulator_resolve_coupling()
regulator: push allocation in regulator_init_coupling() outside of lock
regulator: push allocations in create_regulator() outside of lock
regulator: push allocation in set_consumer_device_supply() out of lock
regulator: plug of_node leak in regulator_register()'s error path

Mike Tipton (1):
interconnect: qcom: Fix small BW votes being truncated to zero

Mohan Kumar (2):
ALSA: hda: Fix 2 channel swapping for Tegra
ALSA: hda/tegra: Program WAKEEN register for Tegra

Naresh Kumar PBS (2):
RDMA/bnxt_re: Static NQ depth allocation RDMA/bnxt_re: Fix driver crash on unaligned PSN entry address

Nicholas Miell (1):
HID: microsoft: Add rumble support for the 8bitdo SN30 Pro+ controller

Nikunj A. Dadhania (1):
thunderbolt: Disable ports that are not implemented

Nirenjan Krishnan (1):
HID: quirks: Set INCREMENT_USAGE_ON_DUPLICATE for all Saitek X52 devices

Ondrej Jirman (1):
drm/sun4i: Fix dsi dcs long write function

Patrick Riphagen (1):
USB: serial: ftdi_sio: add IDs for Xsens Mti USB converter

Peter Oberparleiter (1):
gcov: add support for GCC 10.1

Pierre-Louis Bossart (1):
ALSA: hda: use consistent HDAudio spelling in comments/docs

Po-Hsu Lin (1):
selftests/timers: Turn off timeout setting

Qu Wenruo (1):
btrfs: require only sector size alignment for parent eb bytenr

Rafael J. Wysocki (1):
cpufreq: intel_pstate: Refuse to turn off with HWP enabled

Rander Wang (2):
ALSA: hda: hdmi - add Rocketlake support
ALSA: hda: fix a runtime pm issue in SOF when integrated GPU is disabled

Raul E Rangel (1):
mmc: sdhci-acpi: Clear amd_sdhci_host on reset

René Rebe (1):
scsi: qla2xxx: Fix regression on sparc64

Ritesh Harjani (1):
block: Set same_page to false in __bio_try_merge_page if ret is false

Rob Clark (1):
drm/msm/gpu: make ringbuffer readonly

Rob Herring (1):
arm64: dts: imx: Add missing imx8mm-beacon-kit.dtb to build

Robin Gong (1):
arm64: dts: imx8mp: correct sdma1 clk setting

Rustam Kovhaev (2):
staging: wlan-ng: fix out of bounds read in prism2sta_probe_usb()
KVM: fix memory leak in kvm_io_bus_unregister_dev()

Sagi Grimberg (10):
nvme-fabrics: allow to queue requests for live queues IB/isert: Fix unaligned immediate-data handling
nvme-fabrics: don't check state NVME_CTRL_NEW for request acceptance
nvme: have nvme_wait_freeze_timeout return if it timed out
nvme-tcp: serialize controller teardown sequences
nvme-tcp: fix timeout handler
nvme-tcp: fix reset hang if controller died in the middle of a reset
nvme-rdma: serialize controller teardown sequences
nvme-rdma: fix timeout handler
nvme-rdma: fix reset hang if controller died in the middle of a reset

Sandeep Raghuraman (1):
drm/amdgpu: Fix bug in reporting voltage for CIK

Sean Young (1):
media: gpio-ir-tx: spinlock is not needed to disable interrupts

Selvin Xavier (3):
RDMA/bnxt_re: Do not report transparent vlan from QP1 RDMA/bnxt_re: Fix the qp table indexing
RDMA/bnxt_re: Remove the qp from list only if the qp destroy succeeds

Shay Bar (1):
wireless: fix wrong 160/80+80 MHz setting

Sivaprakash Murugesan (1):
phy: qcom-qmp: Use correct values for ipq8074 PCIe Gen2 PHY init

Stefano Brivio (1):
netfilter: nft_set_rbtree: Detect partial overlap with start endpoint match

Tali Perry (1):
i2c: npcm7xx: Fix timeout calculation

Tetsuo Handa (1):
video: fbdev: fix OOB read in vga_8planes_imageblit()

Tom Rix (1):
soundwire: fix double free of dangling pointer

Tomas Henzl (2):
scsi: megaraid_sas: Don't call disable_irq from process IRQ poll
scsi: mpt3sas: Don't call disable_irq from IRQ poll handler

Tong Zhang (1):
nvme-pci: cancel nvme device request before disabling

Tycho Andersen (1):
seccomp: don't leak memory when filter install races

Utkarsh Patel (2):
usb: typec: intel_pmc_mux: Do not configure Altmode HPD High
usb: typec: intel_pmc_mux: Do not configure SBU and HSL Orientation in Alternate modes

Vadym Kochan (1):
misc: eeprom: at24: register nvmem only after eeprom is ready to use

Vaibhav Agarwal (1):
staging: greybus: audio: fix uninitialized value issue

Varun Prakash (1):
scsi: target: iscsi: Fix data digest calculation

Vineet Gupta (3):
ARC: HSDK: wireup perf irq
ARC: show_regs: fix r12 printing and simplify irqchip/eznps: Fix build error for !ARC700 builds

Vitaly Kuznetsov (1):
KVM: x86: always allow writing '0' to MSR_KVM_ASYNC_PF_EN

Vladis Dronov (1):
debugfs: Fix module state check condition

Wanpeng Li (1):
KVM: VMX: Don't freeze guest when event delivery causes an APIC-access exit

Xi Wang (1):
RDMA/core: Fix unsafe linked list traversal after failing to allocate CQ

Xie He (4):
drivers/net/wan/lapbether: Added needed_tailroom drivers/net/wan/lapbether: Set network_header before transmitting drivers/net/wan/hdlc_cisco: Add hard_header_len drivers/net/wan/hdlc: Change the default of hard_header_len to 0

Ye Bin (1):
scsi: qedf: Fix null ptr reference in qedf_stag_change_work

Yi Li (1):
net: hns3: Fix for geneve tx checksum bug

Yi Zhang (1):
RDMA/rxe: Fix the parent sysfs read when the interface has 15 chars

Yu Kuai (1):
drm/sun4i: add missing put_device() call in sun8i_r40_tcon_tv_set_mux()

Zeng Tao (1):
usb: core: fix slab-out-of-bounds Read in read_descriptors

Ziye Yang (1):
nvmet-tcp: Fix NULL dereference when a connect data comes in h2cdata pdu

author maintainer
#1 lore raw
Documentation/sound/designs/timestamping.rst +1 -1
index 2b0fff503415..7c7ecf5dbc4b 100644
@@ -143,7 +143,7 @@ timestamp shows when the information is put together by the driver
 before returning from the ``STATUS`` and ``STATUS_EXT`` ioctl. in most cases
 this driver_timestamp will be identical to the regular system tstamp.
 
-Examples of typestamping with HDaudio:
+Examples of timestamping with HDAudio:
 
 1. DMA timestamp, no compensation for DMA+analog delay
 ::
Makefile +1 -5
index 36eab48d1d4a..d937530d3342 100644
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 VERSION = 5
 PATCHLEVEL = 8
-SUBLEVEL = 9
+SUBLEVEL = 10
 EXTRAVERSION =
 NAME = Kleptomaniac Octopus
 
@@ -876,10 +876,6 @@ KBUILD_CFLAGS_KERNEL += -ffunction-sections -fdata-sections
 LDFLAGS_vmlinux += --gc-sections
 endif
 
-ifdef CONFIG_LIVEPATCH
-KBUILD_CFLAGS += $(call cc-option, -flive-patching=inline-clone)
-endif
-
 ifdef CONFIG_SHADOW_CALL_STACK
 CC_FLAGS_SCS	:= -fsanitize=shadow-call-stack
 KBUILD_CFLAGS	+= $(CC_FLAGS_SCS)
arch/arc/boot/dts/hsdk.dts +4 -2
index 9acbeba832c0..dcaa44e408ac 100644
@@ -88,6 +88,8 @@ idu_intc: idu-interrupt-controller {
 
 	arcpct: pct {
 		compatible = "snps,archs-pct";
+		interrupt-parent = <&cpu_intc>;
+		interrupts = <20>;
 	};
 
 	/* TIMER0 with interrupt for clockevent */
@@ -208,7 +210,7 @@ gmac: ethernet@8000 {
 			reg = <0x8000 0x2000>;
 			interrupts = <10>;
 			interrupt-names = "macirq";
-			phy-mode = "rgmii";
+			phy-mode = "rgmii-id";
 			snps,pbl = <32>;
 			snps,multicast-filter-bins = <256>;
 			clocks = <&gmacclk>;
@@ -226,7 +228,7 @@ mdio {
 				#address-cells = <1>;
 				#size-cells = <0>;
 				compatible = "snps,dwmac-mdio";
-				phy0: ethernet-phy@0 {
+				phy0: ethernet-phy@0 { /* Micrel KSZ9031 */
 					reg = <0>;
 				};
 			};
arch/arc/kernel/troubleshoot.c +30 -47

106 lines not on this page · raw message

arch/arc/plat-eznps/include/plat/ctop.h +0 -1
index a4a61531c7fb..77712c5ffe84 100644
@@ -33,7 +33,6 @@
 #define CTOP_AUX_DPC				(CTOP_AUX_BASE + 0x02C)
 #define CTOP_AUX_LPC				(CTOP_AUX_BASE + 0x030)
 #define CTOP_AUX_EFLAGS				(CTOP_AUX_BASE + 0x080)
-#define CTOP_AUX_IACK				(CTOP_AUX_BASE + 0x088)
 #define CTOP_AUX_GPA1				(CTOP_AUX_BASE + 0x08C)
 #define CTOP_AUX_UDMC				(CTOP_AUX_BASE + 0x300)
 
arch/arm/boot/dts/bcm-hr2.dtsi +1 -1
index 5e5f5ca3c86f..bba0e8cd2acb 100644
@@ -217,7 +217,7 @@ rng: rng@33000 {
 		};
 
 		qspi: spi@27200 {
-			compatible = "brcm,spi-bcm-qspi", "brcm,spi-nsp-qspi";
+			compatible = "brcm,spi-nsp-qspi", "brcm,spi-bcm-qspi";
 			reg = <0x027200 0x184>,
 			      <0x027000 0x124>,
 			      <0x11c408 0x004>,
arch/arm/boot/dts/bcm-nsp.dtsi +1 -1
index 3175266ede64..465937b79c8e 100644
@@ -284,7 +284,7 @@ nand: nand@26000 {
 		};
 
 		qspi: spi@27200 {
-			compatible = "brcm,spi-bcm-qspi", "brcm,spi-nsp-qspi";
+			compatible = "brcm,spi-nsp-qspi", "brcm,spi-bcm-qspi";
 			reg = <0x027200 0x184>,
 			      <0x027000 0x124>,
 			      <0x11c408 0x004>,
arch/arm/boot/dts/bcm5301x.dtsi +1 -1
index 2d9b4dd05830..0016720ce530 100644
@@ -488,7 +488,7 @@ nand: nand@18028000 {
 	};
 
 	spi@18029200 {
-		compatible = "brcm,spi-bcm-qspi", "brcm,spi-nsp-qspi";
+		compatible = "brcm,spi-nsp-qspi", "brcm,spi-bcm-qspi";
 		reg = <0x18029200 0x184>,
 		      <0x18029000 0x124>,
 		      <0x1811b408 0x004>,
arch/arm/boot/dts/imx6sx-pinfunc.h +1 -1
index 0b02c7e60c17..f4dc46207954 100644
@@ -1026,7 +1026,7 @@
 #define MX6SX_PAD_QSPI1B_DQS__SIM_M_HADDR_15                      0x01B0 0x04F8 0x0000 0x7 0x0
 #define MX6SX_PAD_QSPI1B_SCLK__QSPI1_B_SCLK                       0x01B4 0x04FC 0x0000 0x0 0x0
 #define MX6SX_PAD_QSPI1B_SCLK__UART3_DCE_RX                       0x01B4 0x04FC 0x0840 0x1 0x4
-#define MX6SX_PAD_QSPI1B_SCLK__UART3_DTE_TX                       0x01B4 0x04FC 0x0000 0x0 0x0
+#define MX6SX_PAD_QSPI1B_SCLK__UART3_DTE_TX                       0x01B4 0x04FC 0x0000 0x1 0x0
 #define MX6SX_PAD_QSPI1B_SCLK__ECSPI3_SCLK                        0x01B4 0x04FC 0x0730 0x2 0x1
 #define MX6SX_PAD_QSPI1B_SCLK__ESAI_RX_HF_CLK                     0x01B4 0x04FC 0x0780 0x3 0x2
 #define MX6SX_PAD_QSPI1B_SCLK__CSI1_DATA_16                       0x01B4 0x04FC 0x06DC 0x4 0x1
arch/arm/boot/dts/imx7d-zii-rmu2.dts +1 -1
index e5e20b07f184..7cb6153fc650 100644
@@ -58,7 +58,7 @@ &fec1 {
 			  <&clks IMX7D_ENET1_TIME_ROOT_CLK>;
 	assigned-clock-parents = <&clks IMX7D_PLL_ENET_MAIN_100M_CLK>;
 	assigned-clock-rates = <0>, <100000000>;
-	phy-mode = "rgmii";
+	phy-mode = "rgmii-id";
 	phy-handle = <&fec1_phy>;
 	status = "okay";
 
arch/arm/boot/dts/imx7ulp.dtsi +4 -4
index f7c4878534c8..1bff3efe8aaf 100644
@@ -394,7 +394,7 @@ gpio_ptc: gpio@40ae0000 {
 			clocks = <&pcc2 IMX7ULP_CLK_RGPIO2P1>,
 				 <&pcc3 IMX7ULP_CLK_PCTLC>;
 			clock-names = "gpio", "port";
-			gpio-ranges = <&iomuxc1 0 0 32>;
+			gpio-ranges = <&iomuxc1 0 0 20>;
 		};
 
 		gpio_ptd: gpio@40af0000 {
@@ -408,7 +408,7 @@ gpio_ptd: gpio@40af0000 {
 			clocks = <&pcc2 IMX7ULP_CLK_RGPIO2P1>,
 				 <&pcc3 IMX7ULP_CLK_PCTLD>;
 			clock-names = "gpio", "port";
-			gpio-ranges = <&iomuxc1 0 32 32>;
+			gpio-ranges = <&iomuxc1 0 32 12>;
 		};
 
 		gpio_pte: gpio@40b00000 {
@@ -422,7 +422,7 @@ gpio_pte: gpio@40b00000 {
 			clocks = <&pcc2 IMX7ULP_CLK_RGPIO2P1>,
 				 <&pcc3 IMX7ULP_CLK_PCTLE>;
 			clock-names = "gpio", "port";
-			gpio-ranges = <&iomuxc1 0 64 32>;
+			gpio-ranges = <&iomuxc1 0 64 16>;
 		};
 
 		gpio_ptf: gpio@40b10000 {
@@ -436,7 +436,7 @@ gpio_ptf: gpio@40b10000 {
 			clocks = <&pcc2 IMX7ULP_CLK_RGPIO2P1>,
 				 <&pcc3 IMX7ULP_CLK_PCTLF>;
 			clock-names = "gpio", "port";
-			gpio-ranges = <&iomuxc1 0 96 32>;
+			gpio-ranges = <&iomuxc1 0 96 20>;
 		};
 	};
 
arch/arm/boot/dts/logicpd-som-lv-baseboard.dtsi +7 -22
index 100396f6c2fe..395e05f10d36 100644
@@ -51,6 +51,8 @@ &vaux4 {
 
 &mcbsp2 {
 	status = "okay";
+	pinctrl-names = "default";
+	pinctrl-0 = <&mcbsp2_pins>;
 };
 
 &charger {
@@ -102,35 +104,18 @@ video_reg: video_reg {
 		regulator-max-microvolt = <3300000>;
 	};
 
-	lcd0: display@0 {
-		compatible = "panel-dpi";
-		label = "28";
-		status = "okay";
-		/* default-on; */
+	lcd0: display {
+		/* This isn't the exact LCD, but the timings meet spec */
+		compatible = "logicpd,type28";
 		pinctrl-names = "default";
 		pinctrl-0 = <&lcd_enable_pin>;
-		enable-gpios = <&gpio5 27 GPIO_ACTIVE_HIGH>;	/* gpio155, lcd INI */
+		backlight = <&bl>;
+		enable-gpios = <&gpio5 27 GPIO_ACTIVE_HIGH>;
 		port {
 			lcd_in: endpoint {
 				remote-endpoint = <&dpi_out>;
 			};
 		};
-
-		panel-timing {
-			clock-frequency = <9000000>;
-			hactive = <480>;
-			vactive = <272>;
-			hfront-porch = <3>;
-			hback-porch = <2>;
-			hsync-len = <42>;
-			vback-porch = <3>;
-			vfront-porch = <2>;
-			vsync-len = <11>;
-			hsync-active = <1>;
-			vsync-active = <1>;
-			de-active = <1>;
-			pixelclk-active = <0>;
-		};
 	};
 
 	bl: backlight {
arch/arm/boot/dts/logicpd-torpedo-baseboard.dtsi +2 -0
index 381f0e82bb70..b0f6613e6d54 100644
@@ -81,6 +81,8 @@ &vaux4 {
 };
 
 &mcbsp2 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&mcbsp2_pins>;
 	status = "okay";
 };
 
arch/arm/boot/dts/ls1021a.dtsi +1 -1
index b2ff27af090e..9435ce527e85 100644
@@ -181,7 +181,7 @@ qspi: spi@1550000 {
 			#address-cells = <1>;
 			#size-cells = <0>;
 			reg = <0x0 0x1550000 0x0 0x10000>,
-			      <0x0 0x40000000 0x0 0x40000000>;
+			      <0x0 0x40000000 0x0 0x20000000>;
 			reg-names = "QuadSPI", "QuadSPI-memory";
 			interrupts = <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>;
 			clock-names = "qspi_en", "qspi";
arch/arm/boot/dts/omap5.dtsi +11 -9
index fb889c5b00c9..de55ac5e60f3 100644
@@ -463,11 +463,11 @@ rfbi: encoder@0  {
 					};
 				};
 
-				target-module@5000 {
+				target-module@4000 {
 					compatible = "ti,sysc-omap2", "ti,sysc";
-					reg = <0x5000 0x4>,
-					      <0x5010 0x4>,
-					      <0x5014 0x4>;
+					reg = <0x4000 0x4>,
+					      <0x4010 0x4>,
+					      <0x4014 0x4>;
 					reg-names = "rev", "sysc", "syss";
 					ti,sysc-sidle = <SYSC_IDLE_FORCE>,
 							<SYSC_IDLE_NO>,
@@ -479,7 +479,7 @@ SYSC_OMAP2_SOFTRESET |
 					ti,syss-mask = <1>;
 					#address-cells = <1>;
 					#size-cells = <1>;
-					ranges = <0 0x5000 0x1000>;
+					ranges = <0 0x4000 0x1000>;
 
 					dsi1: encoder@0 {
 						compatible = "ti,omap5-dsi";
@@ -489,8 +489,9 @@ dsi1: encoder@0 {
 						reg-names = "proto", "phy", "pll";
 						interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>;
 						status = "disabled";
-						clocks = <&dss_clkctrl OMAP5_DSS_CORE_CLKCTRL 8>;
-						clock-names = "fck";
+						clocks = <&dss_clkctrl OMAP5_DSS_CORE_CLKCTRL 8>,
+							 <&dss_clkctrl OMAP5_DSS_CORE_CLKCTRL 10>;
+						clock-names = "fck", "sys_clk";
 					};
 				};
 
@@ -520,8 +521,9 @@ dsi2: encoder@0 {
 						reg-names = "proto", "phy", "pll";
 						interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;
 						status = "disabled";
-						clocks = <&dss_clkctrl OMAP5_DSS_CORE_CLKCTRL 8>;
-						clock-names = "fck";
+						clocks = <&dss_clkctrl OMAP5_DSS_CORE_CLKCTRL 8>,
+							 <&dss_clkctrl OMAP5_DSS_CORE_CLKCTRL 10>;
+						clock-names = "fck", "sys_clk";
 					};
 				};
 
arch/arm/boot/dts/socfpga_arria10.dtsi +1 -1
index 8f614c4b0e3e..9c71472c237b 100644
@@ -819,7 +819,7 @@ timer2: timer2@ffd00000 {
 		timer3: timer3@ffd00100 {
 			compatible = "snps,dw-apb-timer";
 			interrupts = <0 118 IRQ_TYPE_LEVEL_HIGH>;
-			reg = <0xffd01000 0x100>;
+			reg = <0xffd00100 0x100>;
 			clocks = <&l4_sys_free_clk>;
 			clock-names = "timer";
 			resets = <&rst L4SYSTIMER1_RESET>;
arch/arm/boot/dts/vfxxx.dtsi +1 -1
index 2d547e7b21ad..8a14ac34d131 100644
@@ -495,7 +495,7 @@ edma1: dma-controller@40098000 {
 			};
 
 			ocotp: ocotp@400a5000 {
-				compatible = "fsl,vf610-ocotp";
+				compatible = "fsl,vf610-ocotp", "syscon";
 				reg = <0x400a5000 0x1000>;
 				clocks = <&clks VF610_CLK_OCOTP>;
 			};
arch/arm/mach-omap2/omap-iommu.c +1 -1
index 54aff33e55e6..bfa5e1b8dba7 100644
@@ -74,7 +74,7 @@ static struct powerdomain *_get_pwrdm(struct device *dev)
 		return pwrdm;
 
 	clk = of_clk_get(dev->of_node->parent, 0);
-	if (!clk) {
+	if (IS_ERR(clk)) {
 		dev_err(dev, "no fck found\n");
 		return NULL;
 	}
arch/arm64/boot/dts/broadcom/northstar2/ns2.dtsi +1 -1
index 15f7b0ed3836..39802066232e 100644
@@ -745,7 +745,7 @@ nand: nand@66460000 {
 		};
 
 		qspi: spi@66470200 {
-			compatible = "brcm,spi-bcm-qspi", "brcm,spi-ns2-qspi";
+			compatible = "brcm,spi-ns2-qspi", "brcm,spi-bcm-qspi";
 			reg = <0x66470200 0x184>,
 				<0x66470000 0x124>,
 				<0x67017408 0x004>,
arch/arm64/boot/dts/freescale/Makefile +1 -0
index a39f0a1723e0..903c0eb61290 100644
@@ -28,6 +28,7 @@ dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-lx2160a-honeycomb.dtb
 dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-lx2160a-qds.dtb
 dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-lx2160a-rdb.dtb
 
+dtb-$(CONFIG_ARCH_MXC) += imx8mm-beacon-kit.dtb
 dtb-$(CONFIG_ARCH_MXC) += imx8mm-evk.dtb
 dtb-$(CONFIG_ARCH_MXC) += imx8mn-evk.dtb
 dtb-$(CONFIG_ARCH_MXC) += imx8mn-ddr4-evk.dtb
arch/arm64/boot/dts/freescale/imx8mp.dtsi +1 -1
index 45e2c0a4e889..437e2ccf8f86 100644
@@ -688,7 +688,7 @@ sdma1: dma-controller@30bd0000 {
 				reg = <0x30bd0000 0x10000>;
 				interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
 				clocks = <&clk IMX8MP_CLK_SDMA1_ROOT>,
-					 <&clk IMX8MP_CLK_SDMA1_ROOT>;
+					 <&clk IMX8MP_CLK_AHB>;
 				clock-names = "ipg", "ahb";
 				#dma-cells = <3>;
 				fsl,sdma-ram-script-name = "imx/sdma/sdma-imx7d.bin";
arch/arm64/boot/dts/freescale/imx8mq.dtsi +1 -1
index 978f8122c0d2..66ac66856e7e 100644
@@ -420,7 +420,7 @@ gpio5: gpio@30240000 {
 			tmu: tmu@30260000 {
 				compatible = "fsl,imx8mq-tmu";
 				reg = <0x30260000 0x10000>;
-				interrupt = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
+				interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
 				clocks = <&clk IMX8MQ_CLK_TMU_ROOT>;
 				little-endian;
 				fsl,tmu-range = <0xb0000 0xa0026 0x80048 0x70061>;
arch/arm64/kernel/module-plts.c +1 -2
index 65b08a74aec6..37c0b51a7b7b 100644
@@ -271,8 +271,7 @@ int module_frob_arch_sections(Elf_Ehdr *ehdr, Elf_Shdr *sechdrs,
 			mod->arch.core.plt_shndx = i;
 		else if (!strcmp(secstrings + sechdrs[i].sh_name, ".init.plt"))
 			mod->arch.init.plt_shndx = i;
-		else if (IS_ENABLED(CONFIG_DYNAMIC_FTRACE) &&
-			 !strcmp(secstrings + sechdrs[i].sh_name,
+		else if (!strcmp(secstrings + sechdrs[i].sh_name,
 				 ".text.ftrace_trampoline"))
 			tramp = sechdrs + i;
 		else if (sechdrs[i].sh_type == SHT_SYMTAB)
arch/arm64/kvm/mmu.c +7 -1
index bd47f06739d6..d906350d543d 100644
@@ -1873,6 +1873,7 @@ static int user_mem_abort(struct kvm_vcpu *vcpu, phys_addr_t fault_ipa,
 	    !fault_supports_stage2_huge_mapping(memslot, hva, vma_pagesize)) {
 		force_pte = true;
 		vma_pagesize = PAGE_SIZE;
+		vma_shift = PAGE_SHIFT;
 	}
 
 	/*
@@ -1967,7 +1968,12 @@ static int user_mem_abort(struct kvm_vcpu *vcpu, phys_addr_t fault_ipa,
 		(fault_status == FSC_PERM &&
 		 stage2_is_exec(kvm, fault_ipa, vma_pagesize));
 
-	if (vma_pagesize == PUD_SIZE) {
+	/*
+	 * If PUD_SIZE == PMD_SIZE, there is no real PUD level, and
+	 * all we have is a 2-level page table. Trying to map a PUD in
+	 * this case would be fatally wrong.
+	 */
+	if (PUD_SIZE != PMD_SIZE && vma_pagesize == PUD_SIZE) {
 		pud_t new_pud = kvm_pfn_pud(pfn, mem_type);
 
 		new_pud = kvm_pud_mkhuge(new_pud);
arch/mips/include/asm/mach-loongson64/cpu-feature-overrides.h +0 -2
index b6e9c99b85a5..eb181224eb4c 100644
@@ -26,7 +26,6 @@
 #define cpu_has_counter		1
 #define cpu_has_dc_aliases	(PAGE_SIZE < 0x4000)
 #define cpu_has_divec		0
-#define cpu_has_ejtag		0
 #define cpu_has_inclusive_pcaches	1
 #define cpu_has_llsc		1
 #define cpu_has_mcheck		0
@@ -42,7 +41,6 @@
 #define cpu_has_veic		0
 #define cpu_has_vint		0
 #define cpu_has_vtag_icache	0
-#define cpu_has_watch		1
 #define cpu_has_wsbh		1
 #define cpu_has_ic_fills_f_dc	1
 #define cpu_hwrena_impl_bits	0xc0000000
arch/powerpc/configs/pasemi_defconfig +0 -1
index 08b7f4cef243..ddf5e97877e2 100644
@@ -109,7 +109,6 @@ CONFIG_FB_NVIDIA=y
 CONFIG_FB_NVIDIA_I2C=y
 CONFIG_FB_RADEON=y
 # CONFIG_LCD_CLASS_DEVICE is not set
-CONFIG_VGACON_SOFT_SCROLLBACK=y
 CONFIG_LOGO=y
 CONFIG_SOUND=y
 CONFIG_SND=y
arch/powerpc/configs/ppc6xx_defconfig +0 -1
index feb5d47d8d1e..4cc9039e4deb 100644
@@ -772,7 +772,6 @@ CONFIG_FB_TRIDENT=m
 CONFIG_FB_SM501=m
 CONFIG_FB_IBM_GXT4500=y
 CONFIG_LCD_PLATFORM=m
-CONFIG_VGACON_SOFT_SCROLLBACK=y
 CONFIG_FRAMEBUFFER_CONSOLE=y
 CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
 CONFIG_LOGO=y
arch/x86/configs/i386_defconfig +0 -1
index 550904591e94..62e834793af0 100644
@@ -202,7 +202,6 @@ CONFIG_FB_MODE_HELPERS=y
 CONFIG_FB_TILEBLITTING=y
 CONFIG_FB_EFI=y
 # CONFIG_LCD_CLASS_DEVICE is not set
-CONFIG_VGACON_SOFT_SCROLLBACK=y
 CONFIG_LOGO=y
 # CONFIG_LOGO_LINUX_MONO is not set
 # CONFIG_LOGO_LINUX_VGA16 is not set
arch/x86/configs/x86_64_defconfig +0 -1
index 614961009075..075d97ec20d5 100644
@@ -197,7 +197,6 @@ CONFIG_FB_MODE_HELPERS=y
 CONFIG_FB_TILEBLITTING=y
 CONFIG_FB_EFI=y
 # CONFIG_LCD_CLASS_DEVICE is not set
-CONFIG_VGACON_SOFT_SCROLLBACK=y
 CONFIG_LOGO=y
 # CONFIG_LOGO_LINUX_MONO is not set
 # CONFIG_LOGO_LINUX_VGA16 is not set
arch/x86/kvm/mmu/mmu.c +1 -1
index 9516a958e780..1e6724c30cc0 100644
@@ -2521,7 +2521,7 @@ static struct kvm_mmu_page *kvm_mmu_get_page(struct kvm_vcpu *vcpu,
 		}
 
 		if (sp->unsync_children)
-			kvm_make_request(KVM_REQ_TLB_FLUSH_CURRENT, vcpu);
+			kvm_make_request(KVM_REQ_MMU_SYNC, vcpu);
 
 		__clear_sp_write_flooding_count(sp);
 		trace_kvm_mmu_get_page(sp, false);
arch/x86/kvm/vmx/nested.c +1 -1
index 11e4df560018..a5810928b011 100644
@@ -4620,7 +4620,7 @@ void nested_vmx_pmu_entry_exit_ctls_update(struct kvm_vcpu *vcpu)
 		vmx->nested.msrs.entry_ctls_high &=
 				~VM_ENTRY_LOAD_IA32_PERF_GLOBAL_CTRL;
 		vmx->nested.msrs.exit_ctls_high &=
-				~VM_ENTRY_LOAD_IA32_PERF_GLOBAL_CTRL;
+				~VM_EXIT_LOAD_IA32_PERF_GLOBAL_CTRL;
 	}
 }
 
arch/x86/kvm/vmx/vmx.c +1 -0
index eb33c764d159..b934e9964943 100644
@@ -6028,6 +6028,7 @@ static int vmx_handle_exit(struct kvm_vcpu *vcpu, fastpath_t exit_fastpath)
 			(exit_reason != EXIT_REASON_EXCEPTION_NMI &&
 			exit_reason != EXIT_REASON_EPT_VIOLATION &&
 			exit_reason != EXIT_REASON_PML_FULL &&
+			exit_reason != EXIT_REASON_APIC_ACCESS &&
 			exit_reason != EXIT_REASON_TASK_SWITCH)) {
 		vcpu->run->exit_reason = KVM_EXIT_INTERNAL_ERROR;
 		vcpu->run->internal.suberror = KVM_INTERNAL_ERROR_DELIVERY_EV;
arch/x86/kvm/x86.c +1 -1
index f7304132d590..f5481ae588af 100644
@@ -2696,7 +2696,7 @@ static int kvm_pv_enable_async_pf(struct kvm_vcpu *vcpu, u64 data)
 		return 1;
 
 	if (!lapic_in_kernel(vcpu))
-		return 1;
+		return data ? 1 : 0;
 
 	vcpu->arch.apf.msr_en_val = data;
 
block/bio.c +3 -1
index b1883adc8f15..eac129f21d2d 100644
@@ -877,8 +877,10 @@ bool __bio_try_merge_page(struct bio *bio, struct page *page,
 		struct bio_vec *bv = &bio->bi_io_vec[bio->bi_vcnt - 1];
 
 		if (page_is_mergeable(bv, page, len, off, same_page)) {
-			if (bio->bi_iter.bi_size > UINT_MAX - len)
+			if (bio->bi_iter.bi_size > UINT_MAX - len) {
+				*same_page = false;
 				return false;
+			}
 			bv->bv_len += len;
 			bio->bi_iter.bi_size += len;
 			return true;
block/partitions/core.c +1 -1
index 534e11285a8d..b45539764c99 100644
@@ -529,7 +529,7 @@ int bdev_del_partition(struct block_device *bdev, int partno)
 
 	bdevp = bdget_disk(bdev->bd_disk, partno);
 	if (!bdevp)
-		return -ENOMEM;
+		return -ENXIO;
 
 	mutex_lock(&bdevp->bd_mutex);
 	mutex_lock_nested(&bdev->bd_mutex, 1);
drivers/atm/firestream.c +1 -0
index cc87004d5e2d..5f22555933df 100644
@@ -998,6 +998,7 @@ static int fs_open(struct atm_vcc *atm_vcc)
 				error = make_rate (pcr, r, &tmc0, NULL);
 				if (error) {
 					kfree(tc);
+					kfree(vcc);
 					return error;
 				}
 			}
drivers/block/rbd.c +12 -0
index 4f61e9209461..ae6d7dbbf5d1 100644
@@ -5120,6 +5120,9 @@ static ssize_t rbd_config_info_show(struct device *dev,
 {
 	struct rbd_device *rbd_dev = dev_to_rbd_dev(dev);
 
+	if (!capable(CAP_SYS_ADMIN))
+		return -EPERM;
+
 	return sprintf(buf, "%s\n", rbd_dev->config_info);
 }
 
@@ -5231,6 +5234,9 @@ static ssize_t rbd_image_refresh(struct device *dev,
 	struct rbd_device *rbd_dev = dev_to_rbd_dev(dev);
 	int ret;
 
+	if (!capable(CAP_SYS_ADMIN))
+		return -EPERM;
+
 	ret = rbd_dev_refresh(rbd_dev);
 	if (ret)
 		return ret;
@@ -7059,6 +7065,9 @@ static ssize_t do_rbd_add(struct bus_type *bus,
 	struct rbd_client *rbdc;
 	int rc;
 
+	if (!capable(CAP_SYS_ADMIN))
+		return -EPERM;
+
 	if (!try_module_get(THIS_MODULE))
 		return -ENODEV;
 
@@ -7209,6 +7218,9 @@ static ssize_t do_rbd_remove(struct bus_type *bus,
 	bool force = false;
 	int ret;
 
+	if (!capable(CAP_SYS_ADMIN))
+		return -EPERM;
+
 	dev_id = -1;
 	opt_buf[0] = '\0';
 	sscanf(buf, "%d %5s", &dev_id, opt_buf);
drivers/cpufreq/intel_pstate.c +10 -4
index 8c730a47e053..36a469150ff9 100644
@@ -762,7 +762,7 @@ static void intel_pstate_get_hwp_max(unsigned int cpu, int *phy_max,
 
 	rdmsrl_on_cpu(cpu, MSR_HWP_CAPABILITIES, &cap);
 	WRITE_ONCE(all_cpu_data[cpu]->hwp_cap_cached, cap);
-	if (global.no_turbo)
+	if (global.no_turbo || global.turbo_disabled)
 		*current_max = HWP_GUARANTEED_PERF(cap);
 	else
 		*current_max = HWP_HIGHEST_PERF(cap);
@@ -2534,9 +2534,15 @@ static int intel_pstate_update_status(const char *buf, size_t size)
 {
 	int ret;
 
-	if (size == 3 && !strncmp(buf, "off", size))
-		return intel_pstate_driver ?
-			intel_pstate_unregister_driver() : -EINVAL;
+	if (size == 3 && !strncmp(buf, "off", size)) {
+		if (!intel_pstate_driver)
+			return -EINVAL;
+
+		if (hwp_active)
+			return -EBUSY;
+
+		return intel_pstate_unregister_driver();
+	}
 
 	if (size == 6 && !strncmp(buf, "active", size)) {
 		if (intel_pstate_driver) {
drivers/dma/acpi-dma.c +3 -1
index 8a05db3343d3..dcbcb712de6e 100644
@@ -135,11 +135,13 @@ static void acpi_dma_parse_csrt(struct acpi_device *adev, struct acpi_dma *adma)
 		if (ret < 0) {
 			dev_warn(&adev->dev,
 				 "error in parsing resource group\n");
-			return;
+			break;
 		}
 
 		grp = (struct acpi_csrt_group *)((void *)grp + grp->length);
 	}
+
+	acpi_put_table((struct acpi_table_header *)csrt);
 }
 
 /**
drivers/dma/dma-jz4780.c +19 -19
index 448f663da89c..8beed91428bd 100644
@@ -879,24 +879,11 @@ static int jz4780_dma_probe(struct platform_device *pdev)
 		return -EINVAL;
 	}
 
-	ret = platform_get_irq(pdev, 0);
-	if (ret < 0)
-		return ret;
-
-	jzdma->irq = ret;
-
-	ret = request_irq(jzdma->irq, jz4780_dma_irq_handler, 0, dev_name(dev),
-			  jzdma);
-	if (ret) {
-		dev_err(dev, "failed to request IRQ %u!\n", jzdma->irq);
-		return ret;
-	}
-
 	jzdma->clk = devm_clk_get(dev, NULL);
 	if (IS_ERR(jzdma->clk)) {
 		dev_err(dev, "failed to get clock\n");
 		ret = PTR_ERR(jzdma->clk);
-		goto err_free_irq;
+		return ret;
 	}
 
 	clk_prepare_enable(jzdma->clk);
@@ -949,10 +936,23 @@ static int jz4780_dma_probe(struct platform_device *pdev)
 		jzchan->vchan.desc_free = jz4780_dma_desc_free;
 	}
 
+	ret = platform_get_irq(pdev, 0);
+	if (ret < 0)
+		goto err_disable_clk;
+
+	jzdma->irq = ret;
+
+	ret = request_irq(jzdma->irq, jz4780_dma_irq_handler, 0, dev_name(dev),
+			  jzdma);
+	if (ret) {
+		dev_err(dev, "failed to request IRQ %u!\n", jzdma->irq);
+		goto err_disable_clk;
+	}
+
 	ret = dmaenginem_async_device_register(dd);
 	if (ret) {
 		dev_err(dev, "failed to register device\n");
-		goto err_disable_clk;
+		goto err_free_irq;
 	}
 
 	/* Register with OF DMA helpers. */
@@ -960,17 +960,17 @@ static int jz4780_dma_probe(struct platform_device *pdev)
 					 jzdma);
 	if (ret) {
 		dev_err(dev, "failed to register OF DMA controller\n");
-		goto err_disable_clk;
+		goto err_free_irq;
 	}
 
 	dev_info(dev, "JZ4780 DMA controller initialised\n");
 	return 0;
 
-err_disable_clk:
-	clk_disable_unprepare(jzdma->clk);
-
 err_free_irq:
 	free_irq(jzdma->irq, jzdma);
+
+err_disable_clk:
+	clk_disable_unprepare(jzdma->clk);
 	return ret;
 }
 
drivers/firmware/efi/embedded-firmware.c +5 -5
index a1b199de9006..84e32634ed6c 100644
@@ -16,9 +16,9 @@
 
 /* Exported for use by lib/test_firmware.c only */
 LIST_HEAD(efi_embedded_fw_list);
-EXPORT_SYMBOL_GPL(efi_embedded_fw_list);
-
-static bool checked_for_fw;
+EXPORT_SYMBOL_NS_GPL(efi_embedded_fw_list, TEST_FIRMWARE);
+bool efi_embedded_fw_checked;
+EXPORT_SYMBOL_NS_GPL(efi_embedded_fw_checked, TEST_FIRMWARE);
 
 static const struct dmi_system_id * const embedded_fw_table[] = {
 #ifdef CONFIG_TOUCHSCREEN_DMI
@@ -119,14 +119,14 @@ void __init efi_check_for_embedded_firmwares(void)
 		}
 	}
 
-	checked_for_fw = true;
+	efi_embedded_fw_checked = true;
 }
 
 int efi_get_embedded_fw(const char *name, const u8 **data, size_t *size)
 {
 	struct efi_embedded_fw *iter, *fw = NULL;
 
-	if (!checked_for_fw) {
+	if (!efi_embedded_fw_checked) {
 		pr_warn("Warning %s called while we did not check for embedded fw\n",
 			__func__);
 		return -ENOENT;
drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c +2 -1
index 753cb2cf6b77..3adf9c1dfdbb 100644
@@ -3587,7 +3587,8 @@ static int smu7_read_sensor(struct pp_hwmgr *hwmgr, int idx,
 	case AMDGPU_PP_SENSOR_GPU_POWER:
 		return smu7_get_gpu_power(hwmgr, (uint32_t *)value);
 	case AMDGPU_PP_SENSOR_VDDGFX:
-		if ((data->vr_config & 0xff) == 0x2)
+		if ((data->vr_config & VRCONF_VDDGFX_MASK) ==
+		    (VR_SVI2_PLANE_2 << VRCONF_VDDGFX_SHIFT))
 			val_vid = PHM_READ_INDIRECT_FIELD(hwmgr->device,
 					CGS_IND_REG__SMC, PWR_SVI2_STATUS, PLANE2_VID);
 		else
drivers/gpu/drm/msm/adreno/a2xx_gpu.c +5 -0
index 6021f8d9efd1..48fa49f69d6d 100644
@@ -164,6 +164,11 @@ static int a2xx_hw_init(struct msm_gpu *gpu)
 	if (ret)
 		return ret;
 
+	gpu_write(gpu, REG_AXXX_CP_RB_CNTL,
+		MSM_GPU_RB_CNTL_DEFAULT | AXXX_CP_RB_CNTL_NO_UPDATE);
+
+	gpu_write(gpu, REG_AXXX_CP_RB_BASE, lower_32_bits(gpu->rb[0]->iova));
+
 	/* NOTE: PM4/micro-engine firmware registers look to be the same
 	 * for a2xx and a3xx.. we could possibly push that part down to
 	 * adreno_gpu base class.  Or push both PM4 and PFP but
drivers/gpu/drm/msm/adreno/a3xx_gpu.c +10 -0
index 0a5ea9f56cb8..f6471145a7a6 100644
@@ -211,6 +211,16 @@ static int a3xx_hw_init(struct msm_gpu *gpu)
 	if (ret)
 		return ret;
 
+	/*
+	 * Use the default ringbuffer size and block size but disable the RPTR
+	 * shadow
+	 */
+	gpu_write(gpu, REG_AXXX_CP_RB_CNTL,
+		MSM_GPU_RB_CNTL_DEFAULT | AXXX_CP_RB_CNTL_NO_UPDATE);
+
+	/* Set the ringbuffer address */
+	gpu_write(gpu, REG_AXXX_CP_RB_BASE, lower_32_bits(gpu->rb[0]->iova));
+
 	/* setup access protection: */
 	gpu_write(gpu, REG_A3XX_CP_PROTECT_CTRL, 0x00000007);
 
drivers/gpu/drm/msm/adreno/a4xx_gpu.c +10 -0
index b9b26b2bf9c5..954753600625 100644
@@ -267,6 +267,16 @@ static int a4xx_hw_init(struct msm_gpu *gpu)
 	if (ret)
 		return ret;
 
+	/*
+	 * Use the default ringbuffer size and block size but disable the RPTR
+	 * shadow
+	 */
+	gpu_write(gpu, REG_A4XX_CP_RB_CNTL,
+		MSM_GPU_RB_CNTL_DEFAULT | AXXX_CP_RB_CNTL_NO_UPDATE);
+
+	/* Set the ringbuffer address */
+	gpu_write(gpu, REG_A4XX_CP_RB_BASE, lower_32_bits(gpu->rb[0]->iova));
+
 	/* Load PM4: */
 	ptr = (uint32_t *)(adreno_gpu->fw[ADRENO_FW_PM4]->data);
 	len = adreno_gpu->fw[ADRENO_FW_PM4]->size / 4;
drivers/gpu/drm/msm/adreno/a5xx_gpu.c +11 -3
index d95970a73fb4..1bf0969ce725 100644
@@ -702,8 +702,6 @@ static int a5xx_hw_init(struct msm_gpu *gpu)
 	if (ret)
 		return ret;
 
-	a5xx_preempt_hw_init(gpu);
-
 	if (!adreno_is_a510(adreno_gpu))
 		a5xx_gpmu_ucode_init(gpu);
 
@@ -711,6 +709,15 @@ static int a5xx_hw_init(struct msm_gpu *gpu)
 	if (ret)
 		return ret;
 
+	/* Set the ringbuffer address */
+	gpu_write64(gpu, REG_A5XX_CP_RB_BASE, REG_A5XX_CP_RB_BASE_HI,
+		gpu->rb[0]->iova);
+
+	gpu_write(gpu, REG_A5XX_CP_RB_CNTL,
+		MSM_GPU_RB_CNTL_DEFAULT | AXXX_CP_RB_CNTL_NO_UPDATE);
+
+	a5xx_preempt_hw_init(gpu);
+
 	/* Disable the interrupts through the initial bringup stage */
 	gpu_write(gpu, REG_A5XX_RBBM_INT_0_MASK, A5XX_INT_MASK);
 
@@ -1510,7 +1517,8 @@ struct msm_gpu *a5xx_gpu_init(struct drm_device *dev)
 
 	check_speed_bin(&pdev->dev);
 
-	ret = adreno_gpu_init(dev, pdev, adreno_gpu, &funcs, 4);
+	/* Restricting nr_rings to 1 to temporarily disable preemption */
+	ret = adreno_gpu_init(dev, pdev, adreno_gpu, &funcs, 1);
 	if (ret) {
 		a5xx_destroy(&(a5xx_gpu->base.base));
 		return ERR_PTR(ret);
drivers/gpu/drm/msm/adreno/a5xx_gpu.h +1 -0
index 54868d4e3958..1e5b1a15a70f 100644
@@ -31,6 +31,7 @@ struct a5xx_gpu {
 	struct msm_ringbuffer *next_ring;
 
 	struct drm_gem_object *preempt_bo[MSM_GPU_MAX_RINGS];
+	struct drm_gem_object *preempt_counters_bo[MSM_GPU_MAX_RINGS];
 	struct a5xx_preempt_record *preempt[MSM_GPU_MAX_RINGS];
 	uint64_t preempt_iova[MSM_GPU_MAX_RINGS];
 
drivers/gpu/drm/msm/adreno/a5xx_preempt.c +20 -5
index 9cf9353a7ff1..9f3fe177b00e 100644
@@ -226,19 +226,31 @@ static int preempt_init_ring(struct a5xx_gpu *a5xx_gpu,
 	struct adreno_gpu *adreno_gpu = &a5xx_gpu->base;
 	struct msm_gpu *gpu = &adreno_gpu->base;
 	struct a5xx_preempt_record *ptr;
-	struct drm_gem_object *bo = NULL;
-	u64 iova = 0;
+	void *counters;
+	struct drm_gem_object *bo = NULL, *counters_bo = NULL;
+	u64 iova = 0, counters_iova = 0;
 
 	ptr = msm_gem_kernel_new(gpu->dev,
 		A5XX_PREEMPT_RECORD_SIZE + A5XX_PREEMPT_COUNTER_SIZE,
-		MSM_BO_UNCACHED, gpu->aspace, &bo, &iova);
+		MSM_BO_UNCACHED | MSM_BO_MAP_PRIV, gpu->aspace, &bo, &iova);
 
 	if (IS_ERR(ptr))
 		return PTR_ERR(ptr);
 
+	/* The buffer to store counters needs to be unprivileged */
+	counters = msm_gem_kernel_new(gpu->dev,
+		A5XX_PREEMPT_COUNTER_SIZE,
+		MSM_BO_UNCACHED, gpu->aspace, &counters_bo, &counters_iova);
+	if (IS_ERR(counters)) {
+		msm_gem_kernel_put(bo, gpu->aspace, true);
+		return PTR_ERR(counters);
+	}
+
 	msm_gem_object_set_name(bo, "preempt");
+	msm_gem_object_set_name(counters_bo, "preempt_counters");
 
 	a5xx_gpu->preempt_bo[ring->id] = bo;
+	a5xx_gpu->preempt_counters_bo[ring->id] = counters_bo;
 	a5xx_gpu->preempt_iova[ring->id] = iova;
 	a5xx_gpu->preempt[ring->id] = ptr;
 
@@ -249,7 +261,7 @@ static int preempt_init_ring(struct a5xx_gpu *a5xx_gpu,
 	ptr->data = 0;
 	ptr->cntl = MSM_GPU_RB_CNTL_DEFAULT;
 	ptr->rptr_addr = rbmemptr(ring, rptr);
-	ptr->counter = iova + A5XX_PREEMPT_RECORD_SIZE;
+	ptr->counter = counters_iova;
 
 	return 0;
 }
@@ -260,8 +272,11 @@ void a5xx_preempt_fini(struct msm_gpu *gpu)
 	struct a5xx_gpu *a5xx_gpu = to_a5xx_gpu(adreno_gpu);
 	int i;
 
-	for (i = 0; i < gpu->nr_rings; i++)
+	for (i = 0; i < gpu->nr_rings; i++) {
 		msm_gem_kernel_put(a5xx_gpu->preempt_bo[i], gpu->aspace, true);
+		msm_gem_kernel_put(a5xx_gpu->preempt_counters_bo[i],
+			gpu->aspace, true);
+	}
 }
 
 void a5xx_preempt_init(struct msm_gpu *gpu)
drivers/gpu/drm/msm/adreno/a6xx_gpu.c +7 -0
index 7768557cdfb2..b7dc350d96fc 100644
@@ -557,6 +557,13 @@ static int a6xx_hw_init(struct msm_gpu *gpu)
 	if (ret)
 		goto out;
 
+	/* Set the ringbuffer address */
+	gpu_write64(gpu, REG_A6XX_CP_RB_BASE, REG_A6XX_CP_RB_BASE_HI,
+		gpu->rb[0]->iova);
+
+	gpu_write(gpu, REG_A6XX_CP_RB_CNTL,
+		MSM_GPU_RB_CNTL_DEFAULT | AXXX_CP_RB_CNTL_NO_UPDATE);
+
 	/* Always come up on rb 0 */
 	a6xx_gpu->cur_ring = gpu->rb[0];
 
drivers/gpu/drm/msm/adreno/adreno_gpu.c +2 -25
index e7b39f3ca33d..a74ccc5b8220 100644
@@ -400,26 +400,6 @@ int adreno_hw_init(struct msm_gpu *gpu)
 		ring->memptrs->rptr = 0;
 	}
 
-	/*
-	 * Setup REG_CP_RB_CNTL.  The same value is used across targets (with
-	 * the excpetion of A430 that disables the RPTR shadow) - the cacluation
-	 * for the ringbuffer size and block size is moved to msm_gpu.h for the
-	 * pre-processor to deal with and the A430 variant is ORed in here
-	 */
-	adreno_gpu_write(adreno_gpu, REG_ADRENO_CP_RB_CNTL,
-		MSM_GPU_RB_CNTL_DEFAULT |
-		(adreno_is_a430(adreno_gpu) ? AXXX_CP_RB_CNTL_NO_UPDATE : 0));
-
-	/* Setup ringbuffer address - use ringbuffer[0] for GPU init */
-	adreno_gpu_write64(adreno_gpu, REG_ADRENO_CP_RB_BASE,
-		REG_ADRENO_CP_RB_BASE_HI, gpu->rb[0]->iova);
-
-	if (!adreno_is_a430(adreno_gpu)) {
-		adreno_gpu_write64(adreno_gpu, REG_ADRENO_CP_RB_RPTR_ADDR,
-			REG_ADRENO_CP_RB_RPTR_ADDR_HI,
-			rbmemptr(gpu->rb[0], rptr));
-	}
-
 	return 0;
 }
 
@@ -427,11 +407,8 @@ int adreno_hw_init(struct msm_gpu *gpu)
 static uint32_t get_rptr(struct adreno_gpu *adreno_gpu,
 		struct msm_ringbuffer *ring)
 {
-	if (adreno_is_a430(adreno_gpu))
-		return ring->memptrs->rptr = adreno_gpu_read(
-			adreno_gpu, REG_ADRENO_CP_RB_RPTR);
-	else
-		return ring->memptrs->rptr;
+	return ring->memptrs->rptr = adreno_gpu_read(
+		adreno_gpu, REG_ADRENO_CP_RB_RPTR);
 }
 
 struct msm_ringbuffer *adreno_active_ring(struct msm_gpu *gpu)
drivers/gpu/drm/msm/msm_ringbuffer.c +2 -1
index e397c44cc011..39ecb5a18431 100644
@@ -27,7 +27,8 @@ struct msm_ringbuffer *msm_ringbuffer_new(struct msm_gpu *gpu, int id,
 	ring->id = id;
 
 	ring->start = msm_gem_kernel_new(gpu->dev, MSM_GPU_RINGBUFFER_SZ,
-		MSM_BO_WC, gpu->aspace, &ring->bo, &ring->iova);
+		MSM_BO_WC | MSM_BO_GPU_READONLY, gpu->aspace, &ring->bo,
+		&ring->iova);
 
 	if (IS_ERR(ring->start)) {
 		ret = PTR_ERR(ring->start);
drivers/gpu/drm/sun4i/sun4i_backend.c +1 -3
index 072ea113e6be..ed5d86617802 100644
@@ -589,8 +589,7 @@ static int sun4i_backend_atomic_check(struct sunxi_engine *engine,
 
 	/* We can't have an alpha plane at the lowest position */
 	if (!backend->quirks->supports_lowest_plane_alpha &&
-	    (plane_states[0]->fb->format->has_alpha ||
-	    (plane_states[0]->alpha != DRM_BLEND_ALPHA_OPAQUE)))
+	    (plane_states[0]->alpha != DRM_BLEND_ALPHA_OPAQUE))
 		return -EINVAL;
 
 	for (i = 1; i < num_planes; i++) {
@@ -995,7 +994,6 @@ static const struct sun4i_backend_quirks sun6i_backend_quirks = {
 
 static const struct sun4i_backend_quirks sun7i_backend_quirks = {
 	.needs_output_muxing = true,
-	.supports_lowest_plane_alpha = true,
 };
 
 static const struct sun4i_backend_quirks sun8i_a33_backend_quirks = {
drivers/gpu/drm/sun4i/sun4i_tcon.c +6 -2
index 359b56e43b83..24d95f058918 100644
@@ -1433,14 +1433,18 @@ static int sun8i_r40_tcon_tv_set_mux(struct sun4i_tcon *tcon,
 	if (IS_ENABLED(CONFIG_DRM_SUN8I_TCON_TOP) &&
 	    encoder->encoder_type == DRM_MODE_ENCODER_TMDS) {
 		ret = sun8i_tcon_top_set_hdmi_src(&pdev->dev, id);
-		if (ret)
+		if (ret) {
+			put_device(&pdev->dev);
 			return ret;
+		}
 	}
 
 	if (IS_ENABLED(CONFIG_DRM_SUN8I_TCON_TOP)) {
 		ret = sun8i_tcon_top_de_config(&pdev->dev, tcon->id, id);
-		if (ret)
+		if (ret) {
+			put_device(&pdev->dev);
 			return ret;
+		}
 	}
 
 	return 0;
drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c +2 -2
index aa67cb037e9d..32d4c3f7fc4e 100644
@@ -889,7 +889,7 @@ static int sun6i_dsi_dcs_write_long(struct sun6i_dsi *dsi,
 	regmap_write(dsi->regs, SUN6I_DSI_CMD_TX_REG(0),
 		     sun6i_dsi_dcs_build_pkt_hdr(dsi, msg));
 
-	bounce = kzalloc(msg->tx_len + sizeof(crc), GFP_KERNEL);
+	bounce = kzalloc(ALIGN(msg->tx_len + sizeof(crc), 4), GFP_KERNEL);
 	if (!bounce)
 		return -ENOMEM;
 
@@ -900,7 +900,7 @@ static int sun6i_dsi_dcs_write_long(struct sun6i_dsi *dsi,
 	memcpy((u8 *)bounce + msg->tx_len, &crc, sizeof(crc));
 	len += sizeof(crc);
 
-	regmap_bulk_write(dsi->regs, SUN6I_DSI_CMD_TX_REG(1), bounce, len);
+	regmap_bulk_write(dsi->regs, SUN6I_DSI_CMD_TX_REG(1), bounce, DIV_ROUND_UP(len, 4));
 	regmap_write(dsi->regs, SUN6I_DSI_CMD_CTL_REG, len + 4 - 1);
 	kfree(bounce);
 
drivers/gpu/drm/sun4i/sun8i_vi_layer.c +1 -1
index 22c8c5375d0d..c0147af6a840 100644
@@ -211,7 +211,7 @@ static int sun8i_vi_layer_update_coord(struct sun8i_mixer *mixer, int channel,
 	return 0;
 }
 
-static bool sun8i_vi_layer_get_csc_mode(const struct drm_format_info *format)
+static u32 sun8i_vi_layer_get_csc_mode(const struct drm_format_info *format)
 {
 	if (!format->is_yuv)
 		return SUN8I_CSC_MODE_OFF;
drivers/gpu/drm/tve200/tve200_display.c +21 -1
index d733bbc4ac0e..17ff24d999d1 100644
@@ -14,6 +14,7 @@
 #include <linux/version.h>
 #include <linux/dma-buf.h>
 #include <linux/of_graph.h>
+#include <linux/delay.h>
 
 #include <drm/drm_fb_cma_helper.h>
 #include <drm/drm_fourcc.h>
@@ -130,9 +131,25 @@ static void tve200_display_enable(struct drm_simple_display_pipe *pipe,
 	struct drm_connector *connector = priv->connector;
 	u32 format = fb->format->format;
 	u32 ctrl1 = 0;
+	int retries;
 
 	clk_prepare_enable(priv->clk);
 
+	/* Reset the TVE200 and wait for it to come back online */
+	writel(TVE200_CTRL_4_RESET, priv->regs + TVE200_CTRL_4);
+	for (retries = 0; retries < 5; retries++) {
+		usleep_range(30000, 50000);
+		if (readl(priv->regs + TVE200_CTRL_4) & TVE200_CTRL_4_RESET)
+			continue;
+		else
+			break;
+	}
+	if (retries == 5 &&
+	    readl(priv->regs + TVE200_CTRL_4) & TVE200_CTRL_4_RESET) {
+		dev_err(drm->dev, "can't get hardware out of reset\n");
+		return;
+	}
+
 	/* Function 1 */
 	ctrl1 |= TVE200_CTRL_CSMODE;
 	/* Interlace mode for CCIR656: parameterize? */
@@ -230,8 +247,9 @@ static void tve200_display_disable(struct drm_simple_display_pipe *pipe)
 
 	drm_crtc_vblank_off(crtc);
 
-	/* Disable and Power Down */
+	/* Disable put into reset and Power Down */
 	writel(0, priv->regs + TVE200_CTRL);
+	writel(TVE200_CTRL_4_RESET, priv->regs + TVE200_CTRL_4);
 
 	clk_disable_unprepare(priv->clk);
 }
@@ -279,6 +297,8 @@ static int tve200_display_enable_vblank(struct drm_simple_display_pipe *pipe)
 	struct drm_device *drm = crtc->dev;
 	struct tve200_drm_dev_private *priv = drm->dev_private;
 
+	/* Clear any IRQs and enable */
+	writel(0xFF, priv->regs + TVE200_INT_CLR);
 	writel(TVE200_INT_V_STATUS, priv->regs + TVE200_INT_EN);
 	return 0;
 }
drivers/gpu/drm/virtio/virtgpu_display.c +11 -0
index cc7fd957a307..2b8421a35ab9 100644
@@ -123,6 +123,17 @@ static int virtio_gpu_crtc_atomic_check(struct drm_crtc *crtc,
 static void virtio_gpu_crtc_atomic_flush(struct drm_crtc *crtc,
 					 struct drm_crtc_state *old_state)
 {
+	struct virtio_gpu_output *output = drm_crtc_to_virtio_gpu_output(crtc);
+
+	/*
+	 * virtio-gpu can't do modeset and plane update operations
+	 * independent from each other.  So the actual modeset happens
+	 * in the plane update callback, and here we just check
+	 * whenever we must force the modeset.
+	 */
+	if (drm_atomic_crtc_needs_modeset(crtc->state)) {
+		output->needs_modeset = true;
+	}
 }
 
 static const struct drm_crtc_helper_funcs virtio_gpu_crtc_helper_funcs = {
drivers/gpu/drm/virtio/virtgpu_drv.h +1 -0
index 9ff9f4ac0522..4ab1b0ba2925 100644
@@ -138,6 +138,7 @@ struct virtio_gpu_output {
 	int cur_x;
 	int cur_y;
 	bool enabled;
+	bool needs_modeset;
 };
 #define drm_crtc_to_virtio_gpu_output(x) \
 	container_of(x, struct virtio_gpu_output, crtc)
drivers/gpu/drm/virtio/virtgpu_plane.c +3 -1
index 52d24179bcec..65757409d9ed 100644
@@ -163,7 +163,9 @@ static void virtio_gpu_primary_plane_update(struct drm_plane *plane,
 	    plane->state->src_w != old_state->src_w ||
 	    plane->state->src_h != old_state->src_h ||
 	    plane->state->src_x != old_state->src_x ||
-	    plane->state->src_y != old_state->src_y) {
+	    plane->state->src_y != old_state->src_y ||
+	    output->needs_modeset) {
+		output->needs_modeset = false;
 		DRM_DEBUG("handle 0x%x, crtc %dx%d+%d+%d, src %dx%d+%d+%d\n",
 			  bo->hw_res_handle,
 			  plane->state->crtc_w, plane->state->crtc_h,
drivers/hid/hid-elan.c +2 -0
index 45c4f888b7c4..dae193749d44 100644
@@ -188,6 +188,7 @@ static int elan_input_configured(struct hid_device *hdev, struct hid_input *hi)
 	ret = input_mt_init_slots(input, ELAN_MAX_FINGERS, INPUT_MT_POINTER);
 	if (ret) {
 		hid_err(hdev, "Failed to init elan MT slots: %d\n", ret);
+		input_free_device(input);
 		return ret;
 	}
 
@@ -198,6 +199,7 @@ static int elan_input_configured(struct hid_device *hdev, struct hid_input *hi)
 	if (ret) {
 		hid_err(hdev, "Failed to register elan input device: %d\n",
 			ret);
+		input_mt_destroy_slots(input);
 		input_free_device(input);
 		return ret;
 	}
drivers/hid/hid-ids.h +3 -0
index 6ea3619842d8..b49ec7dde645 100644
@@ -849,6 +849,7 @@
 #define USB_DEVICE_ID_MS_POWER_COVER     0x07da
 #define USB_DEVICE_ID_MS_XBOX_ONE_S_CONTROLLER	0x02fd
 #define USB_DEVICE_ID_MS_PIXART_MOUSE    0x00cb
+#define USB_DEVICE_ID_8BITDO_SN30_PRO_PLUS      0x02e0
 
 #define USB_VENDOR_ID_MOJO		0x8282
 #define USB_DEVICE_ID_RETRO_ADAPTER	0x3201
@@ -1014,6 +1015,8 @@
 #define USB_DEVICE_ID_SAITEK_RAT9	0x0cfa
 #define USB_DEVICE_ID_SAITEK_MMO7	0x0cd0
 #define USB_DEVICE_ID_SAITEK_X52	0x075c
+#define USB_DEVICE_ID_SAITEK_X52_2	0x0255
+#define USB_DEVICE_ID_SAITEK_X52_PRO	0x0762
 
 #define USB_VENDOR_ID_SAMSUNG		0x0419
 #define USB_DEVICE_ID_SAMSUNG_IR_REMOTE	0x0001
drivers/hid/hid-microsoft.c +2 -0
index 2d8b589201a4..8cb1ca1936e4 100644
@@ -451,6 +451,8 @@ static const struct hid_device_id ms_devices[] = {
 		.driver_data = MS_SURFACE_DIAL },
 	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_XBOX_ONE_S_CONTROLLER),
 		.driver_data = MS_QUIRK_FF },
+	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_8BITDO_SN30_PRO_PLUS),
+		.driver_data = MS_QUIRK_FF },
 	{ }
 };
 MODULE_DEVICE_TABLE(hid, ms_devices);
drivers/hid/hid-quirks.c +2 -0
index a65aef6a322f..7a2be0205dfd 100644
@@ -150,6 +150,8 @@ static const struct hid_device_id hid_quirks[] = {
 	{ HID_USB_DEVICE(USB_VENDOR_ID_RETROUSB, USB_DEVICE_ID_RETROUSB_SNES_RETROPORT), HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_SAITEK, USB_DEVICE_ID_SAITEK_RUMBLEPAD), HID_QUIRK_BADPAD },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_SAITEK, USB_DEVICE_ID_SAITEK_X52), HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE },
+	{ HID_USB_DEVICE(USB_VENDOR_ID_SAITEK, USB_DEVICE_ID_SAITEK_X52_2), HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE },
+	{ HID_USB_DEVICE(USB_VENDOR_ID_SAITEK, USB_DEVICE_ID_SAITEK_X52_PRO), HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_SEMICO, USB_DEVICE_ID_SEMICO_USB_KEYKOARD2), HID_QUIRK_NO_INIT_REPORTS },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_SEMICO, USB_DEVICE_ID_SEMICO_USB_KEYKOARD), HID_QUIRK_NO_INIT_REPORTS },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_SENNHEISER, USB_DEVICE_ID_SENNHEISER_BTD500USB), HID_QUIRK_NOGET },
drivers/i2c/busses/i2c-npcm7xx.c +6 -2
index 75f07138a6fa..dfcf04e1967f 100644
@@ -2093,8 +2093,12 @@ static int npcm_i2c_master_xfer(struct i2c_adapter *adap, struct i2c_msg *msgs,
 		}
 	}
 
-	/* Adaptive TimeOut: astimated time in usec + 100% margin */
-	timeout_usec = (2 * 10000 / bus->bus_freq) * (2 + nread + nwrite);
+	/*
+	 * Adaptive TimeOut: estimated time in usec + 100% margin:
+	 * 2: double the timeout for clock stretching case
+	 * 9: bits per transaction (including the ack/nack)
+	 */
+	timeout_usec = (2 * 9 * USEC_PER_SEC / bus->bus_freq) * (2 + nread + nwrite);
 	timeout = max(msecs_to_jiffies(35), usecs_to_jiffies(timeout_usec));
 	if (nwrite >= 32 * 1024 || nread >= 32 * 1024) {
 		dev_err(bus->dev, "i2c%d buffer too big\n", bus->num);
drivers/iio/accel/bmc150-accel-core.c +12 -3
index 121b4e89f038..bcdf25f32e22 100644
@@ -189,6 +189,14 @@ struct bmc150_accel_data {
 	struct mutex mutex;
 	u8 fifo_mode, watermark;
 	s16 buffer[8];
+	/*
+	 * Ensure there is sufficient space and correct alignment for
+	 * the timestamp if enabled
+	 */
+	struct {
+		__le16 channels[3];
+		s64 ts __aligned(8);
+	} scan;
 	u8 bw_bits;
 	u32 slope_dur;
 	u32 slope_thres;
@@ -922,15 +930,16 @@ static int __bmc150_accel_fifo_flush(struct iio_dev *indio_dev,
 	 * now.
 	 */
 	for (i = 0; i < count; i++) {
-		u16 sample[8];
 		int j, bit;
 
 		j = 0;
 		for_each_set_bit(bit, indio_dev->active_scan_mask,
 				 indio_dev->masklength)
-			memcpy(&sample[j++], &buffer[i * 3 + bit], 2);
+			memcpy(&data->scan.channels[j++], &buffer[i * 3 + bit],
+			       sizeof(data->scan.channels[0]));
 
-		iio_push_to_buffers_with_timestamp(indio_dev, sample, tstamp);
+		iio_push_to_buffers_with_timestamp(indio_dev, &data->scan,
+						   tstamp);
 
 		tstamp += sample_period;
 	}
drivers/iio/accel/kxsd9.c +11 -5
index 0b876b2dc5bd..76429e2a6fb8 100644
@@ -209,14 +209,20 @@ static irqreturn_t kxsd9_trigger_handler(int irq, void *p)
 	const struct iio_poll_func *pf = p;
 	struct iio_dev *indio_dev = pf->indio_dev;
 	struct kxsd9_state *st = iio_priv(indio_dev);
+	/*
+	 * Ensure correct positioning and alignment of timestamp.
+	 * No need to zero initialize as all elements written.
+	 */
+	struct {
+		__be16 chan[4];
+		s64 ts __aligned(8);
+	} hw_values;
 	int ret;
-	/* 4 * 16bit values AND timestamp */
-	__be16 hw_values[8];
 
 	ret = regmap_bulk_read(st->map,
 			       KXSD9_REG_X,
-			       &hw_values,
-			       8);
+			       hw_values.chan,
+			       sizeof(hw_values.chan));
 	if (ret) {
 		dev_err(st->dev,
 			"error reading data\n");
@@ -224,7 +230,7 @@ static irqreturn_t kxsd9_trigger_handler(int irq, void *p)
 	}
 
 	iio_push_to_buffers_with_timestamp(indio_dev,
-					   hw_values,
+					   &hw_values,
 					   iio_get_time_ns(indio_dev));
 	iio_trigger_notify_done(indio_dev->trig);
 
drivers/iio/accel/mma7455_core.c +12 -4
index 8b5a6aff9bf4..70ec3490bdb8 100644
@@ -52,6 +52,14 @@
 
 struct mma7455_data {
 	struct regmap *regmap;
+	/*
+	 * Used to reorganize data.  Will ensure correct alignment of
+	 * the timestamp if present
+	 */
+	struct {
+		__le16 channels[3];
+		s64 ts __aligned(8);
+	} scan;
 };
 
 static int mma7455_drdy(struct mma7455_data *mma7455)
@@ -82,19 +90,19 @@ static irqreturn_t mma7455_trigger_handler(int irq, void *p)
 	struct iio_poll_func *pf = p;
 	struct iio_dev *indio_dev = pf->indio_dev;
 	struct mma7455_data *mma7455 = iio_priv(indio_dev);
-	u8 buf[16]; /* 3 x 16-bit channels + padding + ts */
 	int ret;
 
 	ret = mma7455_drdy(mma7455);
 	if (ret)
 		goto done;
 
-	ret = regmap_bulk_read(mma7455->regmap, MMA7455_REG_XOUTL, buf,
-			       sizeof(__le16) * 3);
+	ret = regmap_bulk_read(mma7455->regmap, MMA7455_REG_XOUTL,
+			       mma7455->scan.channels,
+			       sizeof(mma7455->scan.channels));
 	if (ret)
 		goto done;
 
-	iio_push_to_buffers_with_timestamp(indio_dev, buf,
+	iio_push_to_buffers_with_timestamp(indio_dev, &mma7455->scan,
 					   iio_get_time_ns(indio_dev));
 
 done:
drivers/iio/accel/mma8452.c +8 -3
index 813bca7cfc3e..85d453b3f5ec 100644
@@ -110,6 +110,12 @@ struct mma8452_data {
 	int sleep_val;
 	struct regulator *vdd_reg;
 	struct regulator *vddio_reg;
+
+	/* Ensure correct alignment of time stamp when present */
+	struct {
+		__be16 channels[3];
+		s64 ts __aligned(8);
+	} buffer;
 };
 
  /**
@@ -1091,14 +1097,13 @@ static irqreturn_t mma8452_trigger_handler(int irq, void *p)
 	struct iio_poll_func *pf = p;
 	struct iio_dev *indio_dev = pf->indio_dev;
 	struct mma8452_data *data = iio_priv(indio_dev);
-	u8 buffer[16]; /* 3 16-bit channels + padding + ts */
 	int ret;
 
-	ret = mma8452_read(data, (__be16 *)buffer);
+	ret = mma8452_read(data, data->buffer.channels);
 	if (ret < 0)
 		goto done;
 
-	iio_push_to_buffers_with_timestamp(indio_dev, buffer,
+	iio_push_to_buffers_with_timestamp(indio_dev, &data->buffer,
 					   iio_get_time_ns(indio_dev));
 
 done:
drivers/iio/adc/ina2xx-adc.c +7 -4
index bdd7cba6f6b0..d3e9ec00ef95 100644
@@ -146,6 +146,11 @@ struct ina2xx_chip_info {
 	int range_vbus; /* Bus voltage maximum in V */
 	int pga_gain_vshunt; /* Shunt voltage PGA gain */
 	bool allow_async_readout;
+	/* data buffer needs space for channel data and timestamp */
+	struct {
+		u16 chan[4];
+		u64 ts __aligned(8);
+	} scan;
 };
 
 static const struct ina2xx_config ina2xx_config[] = {
@@ -738,8 +743,6 @@ static int ina2xx_conversion_ready(struct iio_dev *indio_dev)
 static int ina2xx_work_buffer(struct iio_dev *indio_dev)
 {
 	struct ina2xx_chip_info *chip = iio_priv(indio_dev);
-	/* data buffer needs space for channel data and timestap */
-	unsigned short data[4 + sizeof(s64)/sizeof(short)];
 	int bit, ret, i = 0;
 	s64 time;
 
@@ -758,10 +761,10 @@ static int ina2xx_work_buffer(struct iio_dev *indio_dev)
 		if (ret < 0)
 			return ret;
 
-		data[i++] = val;
+		chip->scan.chan[i++] = val;
 	}
 
-	iio_push_to_buffers_with_timestamp(indio_dev, data, time);
+	iio_push_to_buffers_with_timestamp(indio_dev, &chip->scan, time);
 
 	return 0;
 };
drivers/iio/adc/max1118.c +7 -3
index 0c5d7aaf6826..b3d8cba6ce69 100644
@@ -35,6 +35,11 @@ struct max1118 {
 	struct spi_device *spi;
 	struct mutex lock;
 	struct regulator *reg;
+	/* Ensure natural alignment of buffer elements */
+	struct {
+		u8 channels[2];
+		s64 ts __aligned(8);
+	} scan;
 
 	u8 data ____cacheline_aligned;
 };
@@ -165,7 +170,6 @@ static irqreturn_t max1118_trigger_handler(int irq, void *p)
 	struct iio_poll_func *pf = p;
 	struct iio_dev *indio_dev = pf->indio_dev;
 	struct max1118 *adc = iio_priv(indio_dev);
-	u8 data[16] = { }; /* 2x 8-bit ADC data + padding + 8 bytes timestamp */
 	int scan_index;
 	int i = 0;
 
@@ -183,10 +187,10 @@ static irqreturn_t max1118_trigger_handler(int irq, void *p)
 			goto out;
 		}
 
-		data[i] = ret;
+		adc->scan.channels[i] = ret;
 		i++;
 	}
-	iio_push_to_buffers_with_timestamp(indio_dev, data,
+	iio_push_to_buffers_with_timestamp(indio_dev, &adc->scan,
 					   iio_get_time_ns(indio_dev));
 out:
 	mutex_unlock(&adc->lock);
drivers/iio/adc/mcp3422.c +10 -6
index d86c0b5d80a3..f96f0cecbcde 100644
@@ -96,16 +96,12 @@ static int mcp3422_update_config(struct mcp3422 *adc, u8 newconfig)
 {
 	int ret;
 
-	mutex_lock(&adc->lock);
-
 	ret = i2c_master_send(adc->i2c, &newconfig, 1);
 	if (ret > 0) {
 		adc->config = newconfig;
 		ret = 0;
 	}
 
-	mutex_unlock(&adc->lock);
-
 	return ret;
 }
 
@@ -138,6 +134,8 @@ static int mcp3422_read_channel(struct mcp3422 *adc,
 	u8 config;
 	u8 req_channel = channel->channel;
 
+	mutex_lock(&adc->lock);
+
 	if (req_channel != MCP3422_CHANNEL(adc->config)) {
 		config = adc->config;
 		config &= ~MCP3422_CHANNEL_MASK;
@@ -145,12 +143,18 @@ static int mcp3422_read_channel(struct mcp3422 *adc,
 		config &= ~MCP3422_PGA_MASK;
 		config |= MCP3422_PGA_VALUE(adc->pga[req_channel]);
 		ret = mcp3422_update_config(adc, config);
-		if (ret < 0)
+		if (ret < 0) {
+			mutex_unlock(&adc->lock);
 			return ret;
+		}
 		msleep(mcp3422_read_times[MCP3422_SAMPLE_RATE(adc->config)]);
 	}
 
-	return mcp3422_read(adc, value, &config);
+	ret = mcp3422_read(adc, value, &config);
+
+	mutex_unlock(&adc->lock);
+
+	return ret;
 }
 
 static int mcp3422_read_raw(struct iio_dev *iio,
drivers/iio/adc/ti-adc081c.c +8 -3
index 0235863ff77b..cc8cbffe2b7b 100644
@@ -33,6 +33,12 @@ struct adc081c {
 
 	/* 8, 10 or 12 */
 	int bits;
+
+	/* Ensure natural alignment of buffer elements */
+	struct {
+		u16 channel;
+		s64 ts __aligned(8);
+	} scan;
 };
 
 #define REG_CONV_RES 0x00
@@ -128,14 +134,13 @@ static irqreturn_t adc081c_trigger_handler(int irq, void *p)
 	struct iio_poll_func *pf = p;
 	struct iio_dev *indio_dev = pf->indio_dev;
 	struct adc081c *data = iio_priv(indio_dev);
-	u16 buf[8]; /* 2 bytes data + 6 bytes padding + 8 bytes timestamp */
 	int ret;
 
 	ret = i2c_smbus_read_word_swapped(data->i2c, REG_CONV_RES);
 	if (ret < 0)
 		goto out;
-	buf[0] = ret;
-	iio_push_to_buffers_with_timestamp(indio_dev, buf,
+	data->scan.channel = ret;
+	iio_push_to_buffers_with_timestamp(indio_dev, &data->scan,
 					   iio_get_time_ns(indio_dev));
 out:
 	iio_trigger_notify_done(indio_dev->trig);
drivers/iio/adc/ti-adc084s021.c +7 -3
index bdedf456ee05..fc053216d282 100644
@@ -25,6 +25,11 @@ struct adc084s021 {
 	struct spi_transfer spi_trans;
 	struct regulator *reg;
 	struct mutex lock;
+	/* Buffer used to align data */
+	struct {
+		__be16 channels[4];
+		s64 ts __aligned(8);
+	} scan;
 	/*
 	 * DMA (thus cache coherency maintenance) requires the
 	 * transfer buffers to live in their own cache line.
@@ -140,14 +145,13 @@ static irqreturn_t adc084s021_buffer_trigger_handler(int irq, void *pollfunc)
 	struct iio_poll_func *pf = pollfunc;
 	struct iio_dev *indio_dev = pf->indio_dev;
 	struct adc084s021 *adc = iio_priv(indio_dev);
-	__be16 data[8] = {0}; /* 4 * 16-bit words of data + 8 bytes timestamp */
 
 	mutex_lock(&adc->lock);
 
-	if (adc084s021_adc_conversion(adc, &data) < 0)
+	if (adc084s021_adc_conversion(adc, adc->scan.channels) < 0)
 		dev_err(&adc->spi->dev, "Failed to read data\n");
 
-	iio_push_to_buffers_with_timestamp(indio_dev, data,
+	iio_push_to_buffers_with_timestamp(indio_dev, &adc->scan,
 					   iio_get_time_ns(indio_dev));
 	mutex_unlock(&adc->lock);
 	iio_trigger_notify_done(indio_dev->trig);
drivers/iio/adc/ti-ads1015.c +10 -0
index 5ea4f45d6bad..64fe3b2a6ec6 100644
@@ -316,6 +316,7 @@ static const struct iio_chan_spec ads1115_channels[] = {
 	IIO_CHAN_SOFT_TIMESTAMP(ADS1015_TIMESTAMP),
 };
 
+#ifdef CONFIG_PM
 static int ads1015_set_power_state(struct ads1015_data *data, bool on)
 {
 	int ret;
@@ -333,6 +334,15 @@ static int ads1015_set_power_state(struct ads1015_data *data, bool on)
 	return ret < 0 ? ret : 0;
 }
 
+#else /* !CONFIG_PM */
+
+static int ads1015_set_power_state(struct ads1015_data *data, bool on)
+{
+	return 0;
+}
+
+#endif /* !CONFIG_PM */
+
 static
 int ads1015_get_adc_result(struct ads1015_data *data, int chan, int *val)
 {
drivers/iio/chemical/ccs811.c +9 -4
index 3ecd633f9ed3..b2b6009078e1 100644
@@ -78,6 +78,11 @@ struct ccs811_data {
 	struct iio_trigger *drdy_trig;
 	struct gpio_desc *wakeup_gpio;
 	bool drdy_trig_on;
+	/* Ensures correct alignment of timestamp if present */
+	struct {
+		s16 channels[2];
+		s64 ts __aligned(8);
+	} scan;
 };
 
 static const struct iio_chan_spec ccs811_channels[] = {
@@ -327,17 +332,17 @@ static irqreturn_t ccs811_trigger_handler(int irq, void *p)
 	struct iio_dev *indio_dev = pf->indio_dev;
 	struct ccs811_data *data = iio_priv(indio_dev);
 	struct i2c_client *client = data->client;
-	s16 buf[8]; /* s16 eCO2 + s16 TVOC + padding + 8 byte timestamp */
 	int ret;
 
-	ret = i2c_smbus_read_i2c_block_data(client, CCS811_ALG_RESULT_DATA, 4,
-					    (u8 *)&buf);
+	ret = i2c_smbus_read_i2c_block_data(client, CCS811_ALG_RESULT_DATA,
+					    sizeof(data->scan.channels),
+					    (u8 *)data->scan.channels);
 	if (ret != 4) {
 		dev_err(&client->dev, "cannot read sensor data\n");
 		goto err;
 	}
 
-	iio_push_to_buffers_with_timestamp(indio_dev, buf,
+	iio_push_to_buffers_with_timestamp(indio_dev, &data->scan,
 					   iio_get_time_ns(indio_dev));
 
 err:
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c +4 -1
index c831915ca7e5..6b6b5987ac75 100644
@@ -72,10 +72,13 @@ static void get_default_min_max_freq(enum motionsensor_type type,
 
 	switch (type) {
 	case MOTIONSENSE_TYPE_ACCEL:
-	case MOTIONSENSE_TYPE_GYRO:
 		*min_freq = 12500;
 		*max_freq = 100000;
 		break;
+	case MOTIONSENSE_TYPE_GYRO:
+		*min_freq = 25000;
+		*max_freq = 100000;
+		break;
 	case MOTIONSENSE_TYPE_MAG:
 		*min_freq = 5000;
 		*max_freq = 25000;
drivers/iio/light/ltr501.c +9 -6
index 5a3fcb127cd2..d10ed8056656 100644
@@ -1243,13 +1243,16 @@ static irqreturn_t ltr501_trigger_handler(int irq, void *p)
 	struct iio_poll_func *pf = p;
 	struct iio_dev *indio_dev = pf->indio_dev;
 	struct ltr501_data *data = iio_priv(indio_dev);
-	u16 buf[8];
+	struct {
+		u16 channels[3];
+		s64 ts __aligned(8);
+	} scan;
 	__le16 als_buf[2];
 	u8 mask = 0;
 	int j = 0;
 	int ret, psdata;
 
-	memset(buf, 0, sizeof(buf));
+	memset(&scan, 0, sizeof(scan));
 
 	/* figure out which data needs to be ready */
 	if (test_bit(0, indio_dev->active_scan_mask) ||
@@ -1268,9 +1271,9 @@ static irqreturn_t ltr501_trigger_handler(int irq, void *p)
 		if (ret < 0)
 			return ret;
 		if (test_bit(0, indio_dev->active_scan_mask))
-			buf[j++] = le16_to_cpu(als_buf[1]);
+			scan.channels[j++] = le16_to_cpu(als_buf[1]);
 		if (test_bit(1, indio_dev->active_scan_mask))
-			buf[j++] = le16_to_cpu(als_buf[0]);
+			scan.channels[j++] = le16_to_cpu(als_buf[0]);
 	}
 
 	if (mask & LTR501_STATUS_PS_RDY) {
@@ -1278,10 +1281,10 @@ static irqreturn_t ltr501_trigger_handler(int irq, void *p)
 				       &psdata, 2);
 		if (ret < 0)
 			goto done;
-		buf[j++] = psdata & LTR501_PS_DATA_MASK;
+		scan.channels[j++] = psdata & LTR501_PS_DATA_MASK;
 	}
 
-	iio_push_to_buffers_with_timestamp(indio_dev, buf,
+	iio_push_to_buffers_with_timestamp(indio_dev, &scan,
 					   iio_get_time_ns(indio_dev));
 
 done:
drivers/iio/light/max44000.c +8 -4
index d6d8007ba430..8cc619de2c3a 100644
@@ -75,6 +75,11 @@
 struct max44000_data {
 	struct mutex lock;
 	struct regmap *regmap;
+	/* Ensure naturally aligned timestamp */
+	struct {
+		u16 channels[2];
+		s64 ts __aligned(8);
+	} scan;
 };
 
 /* Default scale is set to the minimum of 0.03125 or 1 / (1 << 5) lux */
@@ -488,7 +493,6 @@ static irqreturn_t max44000_trigger_handler(int irq, void *p)
 	struct iio_poll_func *pf = p;
 	struct iio_dev *indio_dev = pf->indio_dev;
 	struct max44000_data *data = iio_priv(indio_dev);
-	u16 buf[8]; /* 2x u16 + padding + 8 bytes timestamp */
 	int index = 0;
 	unsigned int regval;
 	int ret;
@@ -498,17 +502,17 @@ static irqreturn_t max44000_trigger_handler(int irq, void *p)
 		ret = max44000_read_alsval(data);
 		if (ret < 0)
 			goto out_unlock;
-		buf[index++] = ret;
+		data->scan.channels[index++] = ret;
 	}
 	if (test_bit(MAX44000_SCAN_INDEX_PRX, indio_dev->active_scan_mask)) {
 		ret = regmap_read(data->regmap, MAX44000_REG_PRX_DATA, &regval);
 		if (ret < 0)
 			goto out_unlock;
-		buf[index] = regval;
+		data->scan.channels[index] = regval;
 	}
 	mutex_unlock(&data->lock);
 
-	iio_push_to_buffers_with_timestamp(indio_dev, buf,
+	iio_push_to_buffers_with_timestamp(indio_dev, &data->scan,
 					   iio_get_time_ns(indio_dev));
 	iio_trigger_notify_done(indio_dev->trig);
 	return IRQ_HANDLED;
drivers/iio/magnetometer/ak8975.c +11 -5
index 3c881541ae72..3fc44ec45f76 100644
@@ -365,6 +365,12 @@ struct ak8975_data {
 	struct iio_mount_matrix orientation;
 	struct regulator	*vdd;
 	struct regulator	*vid;
+
+	/* Ensure natural alignment of timestamp */
+	struct {
+		s16 channels[3];
+		s64 ts __aligned(8);
+	} scan;
 };
 
 /* Enable attached power regulator if any. */
@@ -787,7 +793,6 @@ static void ak8975_fill_buffer(struct iio_dev *indio_dev)
 	const struct i2c_client *client = data->client;
 	const struct ak_def *def = data->def;
 	int ret;
-	s16 buff[8]; /* 3 x 16 bits axis values + 1 aligned 64 bits timestamp */
 	__le16 fval[3];
 
 	mutex_lock(&data->lock);
@@ -810,12 +815,13 @@ static void ak8975_fill_buffer(struct iio_dev *indio_dev)
 	mutex_unlock(&data->lock);
 
 	/* Clamp to valid range. */
-	buff[0] = clamp_t(s16, le16_to_cpu(fval[0]), -def->range, def->range);
-	buff[1] = clamp_t(s16, le16_to_cpu(fval[1]), -def->range, def->range);
-	buff[2] = clamp_t(s16, le16_to_cpu(fval[2]), -def->range, def->range);
+	data->scan.channels[0] = clamp_t(s16, le16_to_cpu(fval[0]), -def->range, def->range);
+	data->scan.channels[1] = clamp_t(s16, le16_to_cpu(fval[1]), -def->range, def->range);
+	data->scan.channels[2] = clamp_t(s16, le16_to_cpu(fval[2]), -def->range, def->range);
 
-	iio_push_to_buffers_with_timestamp(indio_dev, buff,
+	iio_push_to_buffers_with_timestamp(indio_dev, &data->scan,
 					   iio_get_time_ns(indio_dev));
+
 	return;
 
 unlock:
drivers/iio/proximity/mb1232.c +9 -8
index 166b3e6d7db8..5254b1fbccfd 100644
@@ -40,6 +40,11 @@ struct mb1232_data {
 	 */
 	struct completion	ranging;
 	int			irqnr;
+	/* Ensure correct alignment of data to push to IIO buffer */
+	struct {
+		s16 distance;
+		s64 ts __aligned(8);
+	} scan;
 };
 
 static irqreturn_t mb1232_handle_irq(int irq, void *dev_id)
@@ -113,17 +118,13 @@ static irqreturn_t mb1232_trigger_handler(int irq, void *p)
 	struct iio_poll_func *pf = p;
 	struct iio_dev *indio_dev = pf->indio_dev;
 	struct mb1232_data *data = iio_priv(indio_dev);
-	/*
-	 * triggered buffer
-	 * 16-bit channel + 48-bit padding + 64-bit timestamp
-	 */
-	s16 buffer[8] = { 0 };
 
-	buffer[0] = mb1232_read_distance(data);
-	if (buffer[0] < 0)
+	data->scan.distance = mb1232_read_distance(data);
+	if (data->scan.distance < 0)
 		goto err;
 
-	iio_push_to_buffers_with_timestamp(indio_dev, buffer, pf->timestamp);
+	iio_push_to_buffers_with_timestamp(indio_dev, &data->scan,
+					   pf->timestamp);
 
 err:
 	iio_trigger_notify_done(indio_dev->trig);
drivers/infiniband/core/cq.c +2 -2
index 513825e424bf..a92fc3f90bb5 100644
@@ -379,7 +379,7 @@ static int ib_alloc_cqs(struct ib_device *dev, unsigned int nr_cqes,
 {
 	LIST_HEAD(tmp_list);
 	unsigned int nr_cqs, i;
-	struct ib_cq *cq;
+	struct ib_cq *cq, *n;
 	int ret;
 
 	if (poll_ctx > IB_POLL_LAST_POOL_TYPE) {
@@ -412,7 +412,7 @@ static int ib_alloc_cqs(struct ib_device *dev, unsigned int nr_cqes,
 	return 0;
 
 out_free_cqs:
-	list_for_each_entry(cq, &tmp_list, pool_entry) {
+	list_for_each_entry_safe(cq, n, &tmp_list, pool_entry) {
 		cq->shared = false;
 		ib_free_cq(cq);
 	}
drivers/infiniband/core/verbs.c +1 -1
index f369f0a19e85..1b0ea945756f 100644
@@ -1803,7 +1803,7 @@ int ib_get_eth_speed(struct ib_device *dev, u8 port_num, u8 *speed, u8 *width)
 
 	dev_put(netdev);
 
-	if (!rc) {
+	if (!rc && lksettings.base.speed != (u32)SPEED_UNKNOWN) {
 		netdev_speed = lksettings.base.speed;
 	} else {
 		netdev_speed = SPEED_1000;
drivers/infiniband/hw/bnxt_re/ib_verbs.c +29 -14

79 lines not on this page · raw message

drivers/infiniband/hw/bnxt_re/main.c +1 -2
index 5c41e13496a0..882c4f49d3a8 100644
@@ -1027,8 +1027,7 @@ static int bnxt_re_alloc_res(struct bnxt_re_dev *rdev)
 		struct bnxt_qplib_nq *nq;
 
 		nq = &rdev->nq[i];
-		nq->hwq.max_elements = (qplib_ctx->cq_count +
-					qplib_ctx->srqc_count + 2);
+		nq->hwq.max_elements = BNXT_QPLIB_NQE_MAX_CNT;
 		rc = bnxt_qplib_alloc_nq(&rdev->qplib_res, &rdev->nq[i]);
 		if (rc) {
 			ibdev_err(&rdev->ibdev, "Alloc Failed NQ%d rc:%#x",
drivers/infiniband/hw/bnxt_re/qplib_fp.c +16 -10
index c5e29577cd43..4b53f79b91d1 100644
@@ -796,6 +796,7 @@ int bnxt_qplib_create_qp1(struct bnxt_qplib_res *res, struct bnxt_qplib_qp *qp)
 	u16 cmd_flags = 0;
 	u32 qp_flags = 0;
 	u8 pg_sz_lvl;
+	u32 tbl_indx;
 	int rc;
 
 	RCFW_CMD_PREP(req, CREATE_QP1, cmd_flags);
@@ -891,8 +892,9 @@ int bnxt_qplib_create_qp1(struct bnxt_qplib_res *res, struct bnxt_qplib_qp *qp)
 		rq->dbinfo.xid = qp->id;
 		rq->dbinfo.db = qp->dpi->dbr;
 	}
-	rcfw->qp_tbl[qp->id].qp_id = qp->id;
-	rcfw->qp_tbl[qp->id].qp_handle = (void *)qp;
+	tbl_indx = map_qp_id_to_tbl_indx(qp->id, rcfw);
+	rcfw->qp_tbl[tbl_indx].qp_id = qp->id;
+	rcfw->qp_tbl[tbl_indx].qp_handle = (void *)qp;
 
 	return 0;
 
@@ -920,10 +922,10 @@ static void bnxt_qplib_init_psn_ptr(struct bnxt_qplib_qp *qp, int size)
 	sq = &qp->sq;
 	hwq = &sq->hwq;
 
+	/* First psn entry */
 	fpsne = (u64)bnxt_qplib_get_qe(hwq, hwq->max_elements, &psn_pg);
 	if (!IS_ALIGNED(fpsne, PAGE_SIZE))
-		indx_pad = ALIGN(fpsne, PAGE_SIZE) / size;
-
+		indx_pad = (fpsne & ~PAGE_MASK) / size;
 	page = (u64 *)psn_pg;
 	for (indx = 0; indx < hwq->max_elements; indx++) {
 		pg_num = (indx + indx_pad) / (PAGE_SIZE / size);
@@ -950,6 +952,7 @@ int bnxt_qplib_create_qp(struct bnxt_qplib_res *res, struct bnxt_qplib_qp *qp)
 	u32 qp_flags = 0;
 	u8 pg_sz_lvl;
 	u16 max_rsge;
+	u32 tbl_indx;
 
 	RCFW_CMD_PREP(req, CREATE_QP, cmd_flags);
 
@@ -1118,8 +1121,9 @@ int bnxt_qplib_create_qp(struct bnxt_qplib_res *res, struct bnxt_qplib_qp *qp)
 		rq->dbinfo.xid = qp->id;
 		rq->dbinfo.db = qp->dpi->dbr;
 	}
-	rcfw->qp_tbl[qp->id].qp_id = qp->id;
-	rcfw->qp_tbl[qp->id].qp_handle = (void *)qp;
+	tbl_indx = map_qp_id_to_tbl_indx(qp->id, rcfw);
+	rcfw->qp_tbl[tbl_indx].qp_id = qp->id;
+	rcfw->qp_tbl[tbl_indx].qp_handle = (void *)qp;
 
 	return 0;
 
@@ -1467,10 +1471,12 @@ int bnxt_qplib_destroy_qp(struct bnxt_qplib_res *res,
 	struct cmdq_destroy_qp req;
 	struct creq_destroy_qp_resp resp;
 	u16 cmd_flags = 0;
+	u32 tbl_indx;
 	int rc;
 
-	rcfw->qp_tbl[qp->id].qp_id = BNXT_QPLIB_QP_ID_INVALID;
-	rcfw->qp_tbl[qp->id].qp_handle = NULL;
+	tbl_indx = map_qp_id_to_tbl_indx(qp->id, rcfw);
+	rcfw->qp_tbl[tbl_indx].qp_id = BNXT_QPLIB_QP_ID_INVALID;
+	rcfw->qp_tbl[tbl_indx].qp_handle = NULL;
 
 	RCFW_CMD_PREP(req, DESTROY_QP, cmd_flags);
 
@@ -1478,8 +1484,8 @@ int bnxt_qplib_destroy_qp(struct bnxt_qplib_res *res,
 	rc = bnxt_qplib_rcfw_send_message(rcfw, (void *)&req,
 					  (void *)&resp, NULL, 0);
 	if (rc) {
-		rcfw->qp_tbl[qp->id].qp_id = qp->id;
-		rcfw->qp_tbl[qp->id].qp_handle = qp;
+		rcfw->qp_tbl[tbl_indx].qp_id = qp->id;
+		rcfw->qp_tbl[tbl_indx].qp_handle = qp;
 		return rc;
 	}
 
drivers/infiniband/hw/bnxt_re/qplib_rcfw.c +6 -4
index 4e211162acee..f7736e34ac64 100644
@@ -307,14 +307,15 @@ static int bnxt_qplib_process_qp_event(struct bnxt_qplib_rcfw *rcfw,
 	__le16  mcookie;
 	u16 cookie;
 	int rc = 0;
-	u32 qp_id;
+	u32 qp_id, tbl_indx;
 
 	pdev = rcfw->pdev;
 	switch (qp_event->event) {
 	case CREQ_QP_EVENT_EVENT_QP_ERROR_NOTIFICATION:
 		err_event = (struct creq_qp_error_notification *)qp_event;
 		qp_id = le32_to_cpu(err_event->xid);
-		qp = rcfw->qp_tbl[qp_id].qp_handle;
+		tbl_indx = map_qp_id_to_tbl_indx(qp_id, rcfw);
+		qp = rcfw->qp_tbl[tbl_indx].qp_handle;
 		dev_dbg(&pdev->dev, "Received QP error notification\n");
 		dev_dbg(&pdev->dev,
 			"qpid 0x%x, req_err=0x%x, resp_err=0x%x\n",
@@ -615,8 +616,9 @@ int bnxt_qplib_alloc_rcfw_channel(struct bnxt_qplib_res *res,
 
 	cmdq->bmap_size = bmap_size;
 
-	rcfw->qp_tbl_size = qp_tbl_sz;
-	rcfw->qp_tbl = kcalloc(qp_tbl_sz, sizeof(struct bnxt_qplib_qp_node),
+	/* Allocate one extra to hold the QP1 entries */
+	rcfw->qp_tbl_size = qp_tbl_sz + 1;
+	rcfw->qp_tbl = kcalloc(rcfw->qp_tbl_size, sizeof(struct bnxt_qplib_qp_node),
 			       GFP_KERNEL);
 	if (!rcfw->qp_tbl)
 		goto fail;
drivers/infiniband/hw/bnxt_re/qplib_rcfw.h +5 -0
index 157387636d00..5f2f0a5a3560 100644
@@ -216,4 +216,9 @@ int bnxt_qplib_deinit_rcfw(struct bnxt_qplib_rcfw *rcfw);
 int bnxt_qplib_init_rcfw(struct bnxt_qplib_rcfw *rcfw,
 			 struct bnxt_qplib_ctx *ctx, int is_virtfn);
 void bnxt_qplib_mark_qp_error(void *qp_handle);
+static inline u32 map_qp_id_to_tbl_indx(u32 qid, struct bnxt_qplib_rcfw *rcfw)
+{
+	/* Last index of the qp_tbl is for QP1 ie. qp_tbl_size - 1*/
+	return (qid == 1) ? rcfw->qp_tbl_size - 1 : qid % rcfw->qp_tbl_size - 2;
+}
 #endif /* __BNXT_QPLIB_RCFW_H__ */
drivers/infiniband/hw/mlx4/main.c +2 -1
index 816d28854a8e..5bcf481a9c3c 100644
@@ -784,7 +784,8 @@ static int eth_link_query_port(struct ib_device *ibdev, u8 port,
 	props->ip_gids = true;
 	props->gid_tbl_len	= mdev->dev->caps.gid_table_len[port];
 	props->max_msg_sz	= mdev->dev->caps.max_msg_sz;
-	props->pkey_tbl_len	= 1;
+	if (mdev->dev->caps.pkey_table_len[port])
+		props->pkey_tbl_len = 1;
 	props->max_mtu		= IB_MTU_4096;
 	props->max_vl_num	= 2;
 	props->state		= IB_PORT_DOWN;
drivers/infiniband/sw/rxe/rxe.c +4 -3
index 5642eefb4ba1..d6b1236b114a 100644
@@ -48,6 +48,8 @@ static void rxe_cleanup_ports(struct rxe_dev *rxe)
 
 }
 
+bool rxe_initialized;
+
 /* free resources for a rxe device all objects created for this device must
  * have been destroyed
  */
@@ -147,9 +149,6 @@ static int rxe_init_ports(struct rxe_dev *rxe)
 
 	rxe_init_port_param(port);
 
-	if (!port->attr.pkey_tbl_len || !port->attr.gid_tbl_len)
-		return -EINVAL;
-
 	port->pkey_tbl = kcalloc(port->attr.pkey_tbl_len,
 			sizeof(*port->pkey_tbl), GFP_KERNEL);
 
@@ -348,6 +347,7 @@ static int __init rxe_module_init(void)
 		return err;
 
 	rdma_link_register(&rxe_link_ops);
+	rxe_initialized = true;
 	pr_info("loaded\n");
 	return 0;
 }
@@ -359,6 +359,7 @@ static void __exit rxe_module_exit(void)
 	rxe_net_exit();
 	rxe_cache_exit();
 
+	rxe_initialized = false;
 	pr_info("unloaded\n");
 }
 
drivers/infiniband/sw/rxe/rxe.h +2 -0
index fb07eed9e402..cae1b0a24c85 100644
@@ -67,6 +67,8 @@
 
 #define RXE_ROCE_V2_SPORT		(0xc000)
 
+extern bool rxe_initialized;
+
 static inline u32 rxe_crc32(struct rxe_dev *rxe,
 			    u32 crc, void *next, size_t len)
 {
drivers/infiniband/sw/rxe/rxe_mr.c +1 -0
index e83c7b518bfa..bfb96a0d071b 100644
@@ -207,6 +207,7 @@ int rxe_mem_init_user(struct rxe_pd *pd, u64 start,
 			vaddr = page_address(sg_page_iter_page(&sg_iter));
 			if (!vaddr) {
 				pr_warn("null vaddr\n");
+				ib_umem_release(umem);
 				err = -ENOMEM;
 				goto err1;
 			}
drivers/infiniband/sw/rxe/rxe_sysfs.c +5 -0
index ccda5f5a3bc0..2af31d421bfc 100644
@@ -61,6 +61,11 @@ static int rxe_param_set_add(const char *val, const struct kernel_param *kp)
 	struct net_device *ndev;
 	struct rxe_dev *exists;
 
+	if (!rxe_initialized) {
+		pr_err("Module parameters are not supported, use rdma link add or rxe_cfg\n");
+		return -EAGAIN;
+	}
+
 	len = sanitize_arg(val, intf, sizeof(intf));
 	if (!len) {
 		pr_err("add: invalid interface name\n");
drivers/infiniband/sw/rxe/rxe_verbs.c +1 -1
index 84fec5fd798d..00ba6fb1e676 100644
@@ -1083,7 +1083,7 @@ static ssize_t parent_show(struct device *device,
 	struct rxe_dev *rxe =
 		rdma_device_to_drv_device(device, struct rxe_dev, ib_dev);
 
-	return snprintf(buf, 16, "%s\n", rxe_parent_name(rxe, 1));
+	return scnprintf(buf, PAGE_SIZE, "%s\n", rxe_parent_name(rxe, 1));
 }
 
 static DEVICE_ATTR_RO(parent);
drivers/infiniband/ulp/isert/ib_isert.c +47 -46

248 lines not on this page · raw message

drivers/infiniband/ulp/isert/ib_isert.h +31 -10

70 lines not on this page · raw message

drivers/infiniband/ulp/rtrs/rtrs-srv-sysfs.c +4 -12
index 3d7877534bcc..cf6a2be61695 100644
@@ -152,13 +152,6 @@ static struct attribute_group rtrs_srv_stats_attr_group = {
 	.attrs = rtrs_srv_stats_attrs,
 };
 
-static void rtrs_srv_dev_release(struct device *dev)
-{
-	struct rtrs_srv *srv = container_of(dev, struct rtrs_srv, dev);
-
-	kfree(srv);
-}
-
 static int rtrs_srv_create_once_sysfs_root_folders(struct rtrs_srv_sess *sess)
 {
 	struct rtrs_srv *srv = sess->srv;
@@ -172,7 +165,6 @@ static int rtrs_srv_create_once_sysfs_root_folders(struct rtrs_srv_sess *sess)
 		goto unlock;
 	}
 	srv->dev.class = rtrs_dev_class;
-	srv->dev.release = rtrs_srv_dev_release;
 	err = dev_set_name(&srv->dev, "%s", sess->s.sessname);
 	if (err)
 		goto unlock;
@@ -182,16 +174,16 @@ static int rtrs_srv_create_once_sysfs_root_folders(struct rtrs_srv_sess *sess)
 	 * sysfs files are created
 	 */
 	dev_set_uevent_suppress(&srv->dev, true);
-	err = device_register(&srv->dev);
+	err = device_add(&srv->dev);
 	if (err) {
-		pr_err("device_register(): %d\n", err);
+		pr_err("device_add(): %d\n", err);
 		goto put;
 	}
 	srv->kobj_paths = kobject_create_and_add("paths", &srv->dev.kobj);
 	if (!srv->kobj_paths) {
 		err = -ENOMEM;
 		pr_err("kobject_create_and_add(): %d\n", err);
-		device_unregister(&srv->dev);
+		device_del(&srv->dev);
 		goto unlock;
 	}
 	dev_set_uevent_suppress(&srv->dev, false);
@@ -216,7 +208,7 @@ rtrs_srv_destroy_once_sysfs_root_folders(struct rtrs_srv_sess *sess)
 		kobject_del(srv->kobj_paths);
 		kobject_put(srv->kobj_paths);
 		mutex_unlock(&srv->paths_mutex);
-		device_unregister(&srv->dev);
+		device_del(&srv->dev);
 	} else {
 		mutex_unlock(&srv->paths_mutex);
 	}
drivers/infiniband/ulp/rtrs/rtrs-srv.c +9 -0
index a219bd1bdbc2..28f6414dfa3d 100644
@@ -1319,6 +1319,13 @@ static int rtrs_srv_get_next_cq_vector(struct rtrs_srv_sess *sess)
 	return sess->cur_cq_vector;
 }
 
+static void rtrs_srv_dev_release(struct device *dev)
+{
+	struct rtrs_srv *srv = container_of(dev, struct rtrs_srv, dev);
+
+	kfree(srv);
+}
+
 static struct rtrs_srv *__alloc_srv(struct rtrs_srv_ctx *ctx,
 				     const uuid_t *paths_uuid)
 {
@@ -1336,6 +1343,8 @@ static struct rtrs_srv *__alloc_srv(struct rtrs_srv_ctx *ctx,
 	uuid_copy(&srv->paths_uuid, paths_uuid);
 	srv->queue_depth = sess_queue_depth;
 	srv->ctx = ctx;
+	device_initialize(&srv->dev);
+	srv->dev.release = rtrs_srv_dev_release;
 
 	srv->chunks = kcalloc(srv->queue_depth, sizeof(*srv->chunks),
 			      GFP_KERNEL);
drivers/interconnect/qcom/bcm-voter.c +19 -8
index 2a11a63e7217..b360dc34c90c 100644
@@ -52,8 +52,20 @@ static int cmp_vcd(void *priv, struct list_head *a, struct list_head *b)
 		return 1;
 }
 
+static u64 bcm_div(u64 num, u32 base)
+{
+	/* Ensure that small votes aren't lost. */
+	if (num && num < base)
+		return 1;
+
+	do_div(num, base);
+
+	return num;
+}
+
 static void bcm_aggregate(struct qcom_icc_bcm *bcm)
 {
+	struct qcom_icc_node *node;
 	size_t i, bucket;
 	u64 agg_avg[QCOM_ICC_NUM_BUCKETS] = {0};
 	u64 agg_peak[QCOM_ICC_NUM_BUCKETS] = {0};
@@ -61,22 +73,21 @@ static void bcm_aggregate(struct qcom_icc_bcm *bcm)
 
 	for (bucket = 0; bucket < QCOM_ICC_NUM_BUCKETS; bucket++) {
 		for (i = 0; i < bcm->num_nodes; i++) {
-			temp = bcm->nodes[i]->sum_avg[bucket] * bcm->aux_data.width;
-			do_div(temp, bcm->nodes[i]->buswidth * bcm->nodes[i]->channels);
+			node = bcm->nodes[i];
+			temp = bcm_div(node->sum_avg[bucket] * bcm->aux_data.width,
+				       node->buswidth * node->channels);
 			agg_avg[bucket] = max(agg_avg[bucket], temp);
 
-			temp = bcm->nodes[i]->max_peak[bucket] * bcm->aux_data.width;
-			do_div(temp, bcm->nodes[i]->buswidth);
+			temp = bcm_div(node->max_peak[bucket] * bcm->aux_data.width,
+				       node->buswidth);
 			agg_peak[bucket] = max(agg_peak[bucket], temp);
 		}
 
 		temp = agg_avg[bucket] * 1000ULL;
-		do_div(temp, bcm->aux_data.unit);
-		bcm->vote_x[bucket] = temp;
+		bcm->vote_x[bucket] = bcm_div(temp, bcm->aux_data.unit);
 
 		temp = agg_peak[bucket] * 1000ULL;
-		do_div(temp, bcm->aux_data.unit);
-		bcm->vote_y[bucket] = temp;
+		bcm->vote_y[bucket] = bcm_div(temp, bcm->aux_data.unit);
 	}
 
 	if (bcm->keepalive && bcm->vote_x[QCOM_ICC_BUCKET_AMC] == 0 &&
drivers/iommu/amd/iommu.c +6 -1
index 200ee948f6ec..37c74c842f3a 100644
@@ -2650,7 +2650,12 @@ static int amd_iommu_def_domain_type(struct device *dev)
 	if (!dev_data)
 		return 0;
 
-	if (dev_data->iommu_v2)
+	/*
+	 * Do not identity map IOMMUv2 capable devices when memory encryption is
+	 * active, because some of those devices (AMD GPUs) don't have the
+	 * encryption bit in their DMA-mask and require remapping.
+	 */
+	if (!mem_encrypt_active() && dev_data->iommu_v2)
 		return IOMMU_DOMAIN_IDENTITY;
 
 	return 0;
drivers/iommu/amd/iommu_v2.c +7 -0
index e4b025c5637c..5a188cac7a0f 100644
@@ -737,6 +737,13 @@ int amd_iommu_init_device(struct pci_dev *pdev, int pasids)
 
 	might_sleep();
 
+	/*
+	 * When memory encryption is active the device is likely not in a
+	 * direct-mapped domain. Forbid using IOMMUv2 functionality for now.
+	 */
+	if (mem_encrypt_active())
+		return -ENODEV;
+
 	if (!amd_iommu_v2_supported())
 		return -ENODEV;
 
drivers/media/rc/gpio-ir-tx.c +5 -11
index f33b443bfa47..c6cd2e6d8e65 100644
@@ -19,8 +19,6 @@ struct gpio_ir {
 	struct gpio_desc *gpio;
 	unsigned int carrier;
 	unsigned int duty_cycle;
-	/* we need a spinlock to hold the cpu while transmitting */
-	spinlock_t lock;
 };
 
 static const struct of_device_id gpio_ir_tx_of_match[] = {
@@ -53,12 +51,11 @@ static int gpio_ir_tx_set_carrier(struct rc_dev *dev, u32 carrier)
 static void gpio_ir_tx_unmodulated(struct gpio_ir *gpio_ir, uint *txbuf,
 				   uint count)
 {
-	unsigned long flags;
 	ktime_t edge;
 	s32 delta;
 	int i;
 
-	spin_lock_irqsave(&gpio_ir->lock, flags);
+	local_irq_disable();
 
 	edge = ktime_get();
 
@@ -72,14 +69,11 @@ static void gpio_ir_tx_unmodulated(struct gpio_ir *gpio_ir, uint *txbuf,
 	}
 
 	gpiod_set_value(gpio_ir->gpio, 0);
-
-	spin_unlock_irqrestore(&gpio_ir->lock, flags);
 }
 
 static void gpio_ir_tx_modulated(struct gpio_ir *gpio_ir, uint *txbuf,
 				 uint count)
 {
-	unsigned long flags;
 	ktime_t edge;
 	/*
 	 * delta should never exceed 0.5 seconds (IR_MAX_DURATION) and on
@@ -95,7 +89,7 @@ static void gpio_ir_tx_modulated(struct gpio_ir *gpio_ir, uint *txbuf,
 	space = DIV_ROUND_CLOSEST((100 - gpio_ir->duty_cycle) *
 				  (NSEC_PER_SEC / 100), gpio_ir->carrier);
 
-	spin_lock_irqsave(&gpio_ir->lock, flags);
+	local_irq_disable();
 
 	edge = ktime_get();
 
@@ -128,19 +122,20 @@ static void gpio_ir_tx_modulated(struct gpio_ir *gpio_ir, uint *txbuf,
 			edge = last;
 		}
 	}
-
-	spin_unlock_irqrestore(&gpio_ir->lock, flags);
 }
 
 static int gpio_ir_tx(struct rc_dev *dev, unsigned int *txbuf,
 		      unsigned int count)
 {
 	struct gpio_ir *gpio_ir = dev->priv;
+	unsigned long flags;
 
+	local_irq_save(flags);
 	if (gpio_ir->carrier)
 		gpio_ir_tx_modulated(gpio_ir, txbuf, count);
 	else
 		gpio_ir_tx_unmodulated(gpio_ir, txbuf, count);
+	local_irq_restore(flags);
 
 	return count;
 }
@@ -176,7 +171,6 @@ static int gpio_ir_tx_probe(struct platform_device *pdev)
 
 	gpio_ir->carrier = 38000;
 	gpio_ir->duty_cycle = 50;
-	spin_lock_init(&gpio_ir->lock);
 
 	rc = devm_rc_register_device(&pdev->dev, rcdev);
 	if (rc < 0)
drivers/misc/eeprom/at24.c +7 -4
index 9ff18d4961ce..5561075f7a1b 100644
@@ -692,10 +692,6 @@ static int at24_probe(struct i2c_client *client)
 	nvmem_config.word_size = 1;
 	nvmem_config.size = byte_len;
 
-	at24->nvmem = devm_nvmem_register(dev, &nvmem_config);
-	if (IS_ERR(at24->nvmem))
-		return PTR_ERR(at24->nvmem);
-
 	i2c_set_clientdata(client, at24);
 
 	err = regulator_enable(at24->vcc_reg);
@@ -708,6 +704,13 @@ static int at24_probe(struct i2c_client *client)
 	pm_runtime_set_active(dev);
 	pm_runtime_enable(dev);
 
+	at24->nvmem = devm_nvmem_register(dev, &nvmem_config);
+	if (IS_ERR(at24->nvmem)) {
+		pm_runtime_disable(dev);
+		regulator_disable(at24->vcc_reg);
+		return PTR_ERR(at24->nvmem);
+	}
+
 	/*
 	 * Perform a one-byte test read to verify that the
 	 * chip is functional.
drivers/mmc/core/sdio_ops.c +22 -17
index 93d346c01110..4c229dd2b6e5 100644
@@ -121,6 +121,7 @@ int mmc_io_rw_extended(struct mmc_card *card, int write, unsigned fn,
 	struct sg_table sgtable;
 	unsigned int nents, left_size, i;
 	unsigned int seg_size = card->host->max_seg_size;
+	int err;
 
 	WARN_ON(blksz == 0);
 
@@ -170,28 +171,32 @@ int mmc_io_rw_extended(struct mmc_card *card, int write, unsigned fn,
 
 	mmc_set_data_timeout(&data, card);
 
-	mmc_wait_for_req(card->host, &mrq);
+	mmc_pre_req(card->host, &mrq);
 
-	if (nents > 1)
-		sg_free_table(&sgtable);
+	mmc_wait_for_req(card->host, &mrq);
 
 	if (cmd.error)
-		return cmd.error;
-	if (data.error)
-		return data.error;
-
-	if (mmc_host_is_spi(card->host)) {
+		err = cmd.error;
+	else if (data.error)
+		err = data.error;
+	else if (mmc_host_is_spi(card->host))
 		/* host driver already reported errors */
-	} else {
-		if (cmd.resp[0] & R5_ERROR)
-			return -EIO;
-		if (cmd.resp[0] & R5_FUNCTION_NUMBER)
-			return -EINVAL;
-		if (cmd.resp[0] & R5_OUT_OF_RANGE)
-			return -ERANGE;
-	}
+		err = 0;
+	else if (cmd.resp[0] & R5_ERROR)
+		err = -EIO;
+	else if (cmd.resp[0] & R5_FUNCTION_NUMBER)
+		err = -EINVAL;
+	else if (cmd.resp[0] & R5_OUT_OF_RANGE)
+		err = -ERANGE;
+	else
+		err = 0;
 
-	return 0;
+	mmc_post_req(card->host, &mrq, err);
+
+	if (nents > 1)
+		sg_free_table(&sgtable);
+
+	return err;
 }
 
 int sdio_reset(struct mmc_host *host)
drivers/mmc/host/sdhci-acpi.c +24 -7
index 2d9f79b50a7f..841e34aa7caa 100644
@@ -550,12 +550,18 @@ static int amd_select_drive_strength(struct mmc_card *card,
 	return MMC_SET_DRIVER_TYPE_A;
 }
 
-static void sdhci_acpi_amd_hs400_dll(struct sdhci_host *host)
+static void sdhci_acpi_amd_hs400_dll(struct sdhci_host *host, bool enable)
 {
+	struct sdhci_acpi_host *acpi_host = sdhci_priv(host);
+	struct amd_sdhci_host *amd_host = sdhci_acpi_priv(acpi_host);
+
 	/* AMD Platform requires dll setting */
 	sdhci_writel(host, 0x40003210, SDHCI_AMD_RESET_DLL_REGISTER);
 	usleep_range(10, 20);
-	sdhci_writel(host, 0x40033210, SDHCI_AMD_RESET_DLL_REGISTER);
+	if (enable)
+		sdhci_writel(host, 0x40033210, SDHCI_AMD_RESET_DLL_REGISTER);
+
+	amd_host->dll_enabled = enable;
 }
 
 /*
@@ -595,10 +601,8 @@ static void amd_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
 
 		/* DLL is only required for HS400 */
 		if (host->timing == MMC_TIMING_MMC_HS400 &&
-		    !amd_host->dll_enabled) {
-			sdhci_acpi_amd_hs400_dll(host);
-			amd_host->dll_enabled = true;
-		}
+		    !amd_host->dll_enabled)
+			sdhci_acpi_amd_hs400_dll(host, true);
 	}
 }
 
@@ -619,10 +623,23 @@ static int amd_sdhci_execute_tuning(struct mmc_host *mmc, u32 opcode)
 	return err;
 }
 
+static void amd_sdhci_reset(struct sdhci_host *host, u8 mask)
+{
+	struct sdhci_acpi_host *acpi_host = sdhci_priv(host);
+	struct amd_sdhci_host *amd_host = sdhci_acpi_priv(acpi_host);
+
+	if (mask & SDHCI_RESET_ALL) {
+		amd_host->tuned_clock = false;
+		sdhci_acpi_amd_hs400_dll(host, false);
+	}
+
+	sdhci_reset(host, mask);
+}
+
 static const struct sdhci_ops sdhci_acpi_ops_amd = {
 	.set_clock	= sdhci_set_clock,
 	.set_bus_width	= sdhci_set_bus_width,
-	.reset		= sdhci_reset,
+	.reset		= amd_sdhci_reset,
 	.set_uhs_signaling = sdhci_set_uhs_signaling,
 };
 
drivers/mmc/host/sdhci-msm.c +17 -1
index c0d58e9fcc33..0450f521c6f9 100644
@@ -1158,7 +1158,7 @@ static void sdhci_msm_set_cdr(struct sdhci_host *host, bool enable)
 static int sdhci_msm_execute_tuning(struct mmc_host *mmc, u32 opcode)
 {
 	struct sdhci_host *host = mmc_priv(mmc);
-	int tuning_seq_cnt = 3;
+	int tuning_seq_cnt = 10;
 	u8 phase, tuned_phases[16], tuned_phase_cnt = 0;
 	int rc;
 	struct mmc_ios ios = host->mmc->ios;
@@ -1214,6 +1214,22 @@ static int sdhci_msm_execute_tuning(struct mmc_host *mmc, u32 opcode)
 	} while (++phase < ARRAY_SIZE(tuned_phases));
 
 	if (tuned_phase_cnt) {
+		if (tuned_phase_cnt == ARRAY_SIZE(tuned_phases)) {
+			/*
+			 * All phases valid is _almost_ as bad as no phases
+			 * valid.  Probably all phases are not really reliable
+			 * but we didn't detect where the unreliable place is.
+			 * That means we'll essentially be guessing and hoping
+			 * we get a good phase.  Better to try a few times.
+			 */
+			dev_dbg(mmc_dev(mmc), "%s: All phases valid; try again\n",
+				mmc_hostname(mmc));
+			if (--tuning_seq_cnt) {
+				tuned_phase_cnt = 0;
+				goto retry;
+			}
+		}
+
 		rc = msm_find_most_appropriate_phase(host, tuned_phases,
 						     tuned_phase_cnt);
 		if (rc < 0)
drivers/mmc/host/sdhci-of-esdhc.c +7 -3
index 7c73d243dc6c..45881b309956 100644
@@ -81,6 +81,7 @@ struct sdhci_esdhc {
 	bool quirk_tuning_erratum_type2;
 	bool quirk_ignore_data_inhibit;
 	bool quirk_delay_before_data_reset;
+	bool quirk_trans_complete_erratum;
 	bool in_sw_tuning;
 	unsigned int peripheral_clock;
 	const struct esdhc_clk_fixup *clk_fixup;
@@ -1177,10 +1178,11 @@ static void esdhc_set_uhs_signaling(struct sdhci_host *host,
 
 static u32 esdhc_irq(struct sdhci_host *host, u32 intmask)
 {
+	struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host);
+	struct sdhci_esdhc *esdhc = sdhci_pltfm_priv(pltfm_host);
 	u32 command;
 
-	if (of_find_compatible_node(NULL, NULL,
-				"fsl,p2020-esdhc")) {
+	if (esdhc->quirk_trans_complete_erratum) {
 		command = SDHCI_GET_CMD(sdhci_readw(host,
 					SDHCI_COMMAND));
 		if (command == MMC_WRITE_MULTIPLE_BLOCK &&
@@ -1334,8 +1336,10 @@ static void esdhc_init(struct platform_device *pdev, struct sdhci_host *host)
 		esdhc->clk_fixup = match->data;
 	np = pdev->dev.of_node;
 
-	if (of_device_is_compatible(np, "fsl,p2020-esdhc"))
+	if (of_device_is_compatible(np, "fsl,p2020-esdhc")) {
 		esdhc->quirk_delay_before_data_reset = true;
+		esdhc->quirk_trans_complete_erratum = true;
+	}
 
 	clk = of_clk_get(np, 0);
 	if (!IS_ERR(clk)) {
drivers/net/ethernet/hisilicon/hns3/hns3_enet.c +4 -2
index 71ed4c54f6d5..eaadcc704334 100644
@@ -20,6 +20,7 @@
 #include <net/pkt_cls.h>
 #include <net/tcp.h>
 #include <net/vxlan.h>
+#include <net/geneve.h>
 
 #include "hnae3.h"
 #include "hns3_enet.h"
@@ -780,7 +781,7 @@ static int hns3_get_l4_protocol(struct sk_buff *skb, u8 *ol4_proto,
  * and it is udp packet, which has a dest port as the IANA assigned.
  * the hardware is expected to do the checksum offload, but the
  * hardware will not do the checksum offload when udp dest port is
- * 4789.
+ * 4789 or 6081.
  */
 static bool hns3_tunnel_csum_bug(struct sk_buff *skb)
 {
@@ -789,7 +790,8 @@ static bool hns3_tunnel_csum_bug(struct sk_buff *skb)
 	l4.hdr = skb_transport_header(skb);
 
 	if (!(!skb->encapsulation &&
-	      l4.udp->dest == htons(IANA_VXLAN_UDP_PORT)))
+	      (l4.udp->dest == htons(IANA_VXLAN_UDP_PORT) ||
+	      l4.udp->dest == htons(GENEVE_UDP_PORT))))
 		return false;
 
 	skb_checksum_help(skb);
drivers/net/wan/hdlc.c +1 -1
index 386ed2aa31fd..9b00708676cf 100644
@@ -229,7 +229,7 @@ static void hdlc_setup_dev(struct net_device *dev)
 	dev->min_mtu		 = 68;
 	dev->max_mtu		 = HDLC_MAX_MTU;
 	dev->type		 = ARPHRD_RAWHDLC;
-	dev->hard_header_len	 = 16;
+	dev->hard_header_len	 = 0;
 	dev->needed_headroom	 = 0;
 	dev->addr_len		 = 0;
 	dev->header_ops		 = &hdlc_null_ops;
drivers/net/wan/hdlc_cisco.c +1 -0
index d8cba3625c18..444130655d8e 100644
@@ -370,6 +370,7 @@ static int cisco_ioctl(struct net_device *dev, struct ifreq *ifr)
 		memcpy(&state(hdlc)->settings, &new_settings, size);
 		spin_lock_init(&state(hdlc)->lock);
 		dev->header_ops = &cisco_header_ops;
+		dev->hard_header_len = sizeof(struct hdlc_header);
 		dev->type = ARPHRD_CISCO;
 		call_netdevice_notifiers(NETDEV_POST_TYPE_CHANGE, dev);
 		netif_dormant_on(dev);
drivers/net/wan/lapbether.c +3 -0
index 1ea15f2123ed..e61616b0b91c 100644
@@ -210,6 +210,8 @@ static void lapbeth_data_transmit(struct net_device *ndev, struct sk_buff *skb)
 
 	skb->dev = dev = lapbeth->ethdev;
 
+	skb_reset_network_header(skb);
+
 	dev_hard_header(skb, dev, ETH_P_DEC, bcast_addr, NULL, 0);
 
 	dev_queue_xmit(skb);
@@ -340,6 +342,7 @@ static int lapbeth_new_device(struct net_device *dev)
 	 */
 	ndev->needed_headroom = -1 + 3 + 2 + dev->hard_header_len
 					   + dev->needed_headroom;
+	ndev->needed_tailroom = dev->needed_tailroom;
 
 	lapbeth = netdev_priv(ndev);
 	lapbeth->axdev = ndev;
drivers/nfc/st95hf/core.c +1 -1
index 9642971e89ce..457854765983 100644
@@ -966,7 +966,7 @@ static int st95hf_in_send_cmd(struct nfc_digital_dev *ddev,
 	rc = down_killable(&stcontext->exchange_lock);
 	if (rc) {
 		WARN(1, "Semaphore is not found up in st95hf_in_send_cmd\n");
-		return rc;
+		goto free_skb_resp;
 	}
 
 	rc = st95hf_spi_send(&stcontext->spicontext, skb->data,
drivers/nvme/host/core.c +2 -6
index fa0039dcacc6..f2556f0ea20d 100644
@@ -3324,10 +3324,6 @@ static ssize_t nvme_sysfs_delete(struct device *dev,
 {
 	struct nvme_ctrl *ctrl = dev_get_drvdata(dev);
 
-	/* Can't delete non-created controllers */
-	if (!ctrl->created)
-		return -EBUSY;
-
 	if (device_remove_file_self(dev, attr))
 		nvme_delete_ctrl_sync(ctrl);
 	return count;
@@ -4129,7 +4125,6 @@ void nvme_start_ctrl(struct nvme_ctrl *ctrl)
 		nvme_queue_scan(ctrl);
 		nvme_start_queues(ctrl);
 	}
-	ctrl->created = true;
 }
 EXPORT_SYMBOL_GPL(nvme_start_ctrl);
 
@@ -4287,7 +4282,7 @@ void nvme_unfreeze(struct nvme_ctrl *ctrl)
 }
 EXPORT_SYMBOL_GPL(nvme_unfreeze);
 
-void nvme_wait_freeze_timeout(struct nvme_ctrl *ctrl, long timeout)
+int nvme_wait_freeze_timeout(struct nvme_ctrl *ctrl, long timeout)
 {
 	struct nvme_ns *ns;
 
@@ -4298,6 +4293,7 @@ void nvme_wait_freeze_timeout(struct nvme_ctrl *ctrl, long timeout)
 			break;
 	}
 	up_read(&ctrl->namespaces_rwsem);
+	return timeout;
 }
 EXPORT_SYMBOL_GPL(nvme_wait_freeze_timeout);
 
drivers/nvme/host/fabrics.c +8 -5
index 4ec4829d6233..8575724734e0 100644
@@ -565,10 +565,14 @@ bool __nvmf_check_ready(struct nvme_ctrl *ctrl, struct request *rq,
 	struct nvme_request *req = nvme_req(rq);
 
 	/*
-	 * If we are in some state of setup or teardown only allow
-	 * internally generated commands.
+	 * currently we have a problem sending passthru commands
+	 * on the admin_q if the controller is not LIVE because we can't
+	 * make sure that they are going out after the admin connect,
+	 * controller enable and/or other commands in the initialization
+	 * sequence. until the controller will be LIVE, fail with
+	 * BLK_STS_RESOURCE so that they will be rescheduled.
 	 */
-	if (!blk_rq_is_passthrough(rq) || (req->flags & NVME_REQ_USERCMD))
+	if (rq->q == ctrl->admin_q && (req->flags & NVME_REQ_USERCMD))
 		return false;
 
 	/*
@@ -576,9 +580,8 @@ bool __nvmf_check_ready(struct nvme_ctrl *ctrl, struct request *rq,
 	 * which is require to set the queue live in the appropinquate states.
 	 */
 	switch (ctrl->state) {
-	case NVME_CTRL_NEW:
 	case NVME_CTRL_CONNECTING:
-		if (nvme_is_fabrics(req->cmd) &&
+		if (blk_rq_is_passthrough(rq) && nvme_is_fabrics(req->cmd) &&
 		    req->cmd->fabrics.fctype == nvme_fabrics_type_connect)
 			return true;
 		break;
drivers/nvme/host/nvme.h +1 -2
index e268f1d7e1a0..1db144eb74ff 100644
@@ -271,7 +271,6 @@ struct nvme_ctrl {
 	struct nvme_command ka_cmd;
 	struct work_struct fw_act_work;
 	unsigned long events;
-	bool created;
 
 #ifdef CONFIG_NVME_MULTIPATH
 	/* asymmetric namespace access: */
@@ -538,7 +537,7 @@ void nvme_kill_queues(struct nvme_ctrl *ctrl);
 void nvme_sync_queues(struct nvme_ctrl *ctrl);
 void nvme_unfreeze(struct nvme_ctrl *ctrl);
 void nvme_wait_freeze(struct nvme_ctrl *ctrl);
-void nvme_wait_freeze_timeout(struct nvme_ctrl *ctrl, long timeout);
+int nvme_wait_freeze_timeout(struct nvme_ctrl *ctrl, long timeout);
 void nvme_start_freeze(struct nvme_ctrl *ctrl);
 
 #define NVME_QID_ANY -1
drivers/nvme/host/pci.c +2 -2
index d4b1ff747123..69a19fe24106 100644
@@ -1250,8 +1250,8 @@ static enum blk_eh_timer_return nvme_timeout(struct request *req, bool reserved)
 		dev_warn_ratelimited(dev->ctrl.device,
 			 "I/O %d QID %d timeout, disable controller\n",
 			 req->tag, nvmeq->qid);
-		nvme_dev_disable(dev, true);
 		nvme_req(req)->flags |= NVME_REQ_CANCELLED;
+		nvme_dev_disable(dev, true);
 		return BLK_EH_DONE;
 	case NVME_CTRL_RESETTING:
 		return BLK_EH_RESET_TIMER;
@@ -1268,10 +1268,10 @@ static enum blk_eh_timer_return nvme_timeout(struct request *req, bool reserved)
 		dev_warn(dev->ctrl.device,
 			 "I/O %d QID %d timeout, reset controller\n",
 			 req->tag, nvmeq->qid);
+		nvme_req(req)->flags |= NVME_REQ_CANCELLED;
 		nvme_dev_disable(dev, false);
 		nvme_reset_ctrl(&dev->ctrl);
 
-		nvme_req(req)->flags |= NVME_REQ_CANCELLED;
 		return BLK_EH_DONE;
 	}
 
drivers/nvme/host/rdma.c +51 -17

140 lines not on this page · raw message

drivers/nvme/host/tcp.c +57 -23

65 lines not on this page · raw message

drivers/nvme/target/tcp.c +9 -1
index de9217cfd22d..3d29b773ced2 100644

Lines of this file are not shown. View the raw message.

drivers/phy/qualcomm/phy-qcom-qmp.c +9 -7
index e91040af3394..ba277136f52b 100644

Lines of this file are not shown. View the raw message.

drivers/phy/qualcomm/phy-qcom-qmp.h +2 -0
index 6d017a0c0c8d..832b3d098403 100644

Lines of this file are not shown. View the raw message.

drivers/regulator/core.c +84 -71

155 lines not on this page · raw message

drivers/scsi/libsas/sas_ata.c +4 -1
index 5d716d388707..6de4bc77fd55 100644

Lines of this file are not shown. View the raw message.

drivers/scsi/lpfc/lpfc_init.c +0 -1
index 6637f84a3d1b..0dd6cc0ccdf2 100644

Lines of this file are not shown. View the raw message.

drivers/scsi/megaraid/megaraid_sas_fusion.c +1 -1
index fcf03f733e41..1a0e2e4342ad 100644

Lines of this file are not shown. View the raw message.

drivers/scsi/mpt3sas/mpt3sas_base.c +1 -1
index 96b78fdc6b8a..a85c9672c6ea 100644

Lines of this file are not shown. View the raw message.

drivers/scsi/qedf/qedf_main.c +1 -1
index 36b1ca2dadbb..51cfab9d1afd 100644

Lines of this file are not shown. View the raw message.

drivers/scsi/qla2xxx/qla_def.h +1 -1
index 42dbf90d4651..392312333746 100644

Lines of this file are not shown. View the raw message.

drivers/scsi/qla2xxx/qla_init.c +3 -3
index 2436a17f5cd9..2861c636dd65 100644

Lines of this file are not shown. View the raw message.

drivers/soundwire/stream.c +5 -3
index a9a72574b34a..684761e86d4f 100644

Lines of this file are not shown. View the raw message.

drivers/spi/spi-stm32.c +6 -2
index d4b33b358a31..3056428b09f3 100644

Lines of this file are not shown. View the raw message.

drivers/staging/greybus/audio_topology.c +15 -14
index 4ac30accf226..cc329b990e16 100644

Lines of this file are not shown. View the raw message.

drivers/staging/wlan-ng/hfa384x_usb.c +0 -5
index fa1bf8b069fd..2720f7319a3d 100644

Lines of this file are not shown. View the raw message.

drivers/staging/wlan-ng/prism2usb.c +6 -13
index 456603fd26c0..4b08dc1da4f9 100644

Lines of this file are not shown. View the raw message.

drivers/target/iscsi/iscsi_target.c +15 -2
index c9689610e186..2ec778e97b1b 100644

Lines of this file are not shown. View the raw message.

drivers/target/iscsi/iscsi_target_login.c +3 -3
index 85748e338858..893d1b406c29 100644

Lines of this file are not shown. View the raw message.

drivers/target/iscsi/iscsi_target_login.h +1 -2
index 3b8e3639ff5d..fc95e6150253 100644

Lines of this file are not shown. View the raw message.

drivers/target/iscsi/iscsi_target_nego.c +1 -2
index 685d771b51d4..e32d93b92742 100644

Lines of this file are not shown. View the raw message.

drivers/thunderbolt/switch.c +1 -0
index d7d60cd9226f..43df502a36d6 100644

Lines of this file are not shown. View the raw message.

drivers/thunderbolt/tb.h +1 -1
index 2eb2bcd3cca3..72e48e86c476 100644

Lines of this file are not shown. View the raw message.

drivers/usb/core/message.c +42 -49

91 lines not on this page · raw message

drivers/usb/core/sysfs.c +5 -0
index a2ca38e25e0c..8d134193fa0c 100644

Lines of this file are not shown. View the raw message.

drivers/usb/dwc3/dwc3-meson-g12a.c +6 -9
index 88b75b5a039c..1f7f4d88ed9d 100644

Lines of this file are not shown. View the raw message.

drivers/usb/serial/ftdi_sio.c +1 -0
index 33f1cca7eaa6..ae98fe94fe91 100644

Lines of this file are not shown. View the raw message.

drivers/usb/serial/ftdi_sio_ids.h +1 -0
index e8373528264c..b5ca17a5967a 100644

Lines of this file are not shown. View the raw message.

drivers/usb/serial/option.c +14 -8
index 9b7cee98ea60..f7a6ac05ac57 100644

Lines of this file are not shown. View the raw message.

drivers/usb/typec/mux/intel_pmc_mux.c +2 -12
index 70ddc9d6d49e..6a1778920877 100644

Lines of this file are not shown. View the raw message.

drivers/usb/typec/ucsi/ucsi_acpi.c +4 -0
index 9fc4f338e870..c0aca2f0f23f 100644

Lines of this file are not shown. View the raw message.

drivers/video/console/Kconfig +0 -46

46 lines not on this page · raw message

drivers/video/console/vgacon.c +1 -220

221 lines not on this page · raw message

drivers/video/fbdev/core/bitblit.c +1 -10
index 35ebeeccde4d..436365efae73 100644

Lines of this file are not shown. View the raw message.

drivers/video/fbdev/core/fbcon.c +4 -330

334 lines not on this page · raw message

drivers/video/fbdev/core/fbcon.h +1 -1
index 20dea853765f..78bb14c03643 100644

Lines of this file are not shown. View the raw message.

drivers/video/fbdev/core/fbcon_ccw.c +1 -10
index 78f3a5621478..71ad6967a70e 100644

Lines of this file are not shown. View the raw message.

drivers/video/fbdev/core/fbcon_cw.c +1 -10
index fd098ff17574..31fe5dd651d4 100644

Lines of this file are not shown. View the raw message.

drivers/video/fbdev/core/fbcon_ud.c +1 -10
index e165a3fad29a..b2dd1370e39b 100644

Lines of this file are not shown. View the raw message.

drivers/video/fbdev/core/tileblit.c +1 -1
index 93390312957f..eb664dbf96f6 100644

Lines of this file are not shown. View the raw message.

drivers/video/fbdev/vga16fb.c +1 -1
index a20eeb8308ff..578d3541e3d6 100644

Lines of this file are not shown. View the raw message.

fs/btrfs/disk-io.c +2 -0
index 983f4d58ae59..6d3ed9542b6c 100644

Lines of this file are not shown. View the raw message.

fs/btrfs/extent-tree.c +9 -10
index e9eedc053fc5..780b9c9a98fe 100644

Lines of this file are not shown. View the raw message.

fs/btrfs/ioctl.c +2 -1
index 5cbebf32082a..2dc7707d4e60 100644

Lines of this file are not shown. View the raw message.

fs/btrfs/print-tree.c +7 -5
index 61f44e78e3c9..80567c11ec12 100644

Lines of this file are not shown. View the raw message.

fs/btrfs/transaction.c +1 -0
index 2710f8ddb95f..b43ebf55b93e 100644

Lines of this file are not shown. View the raw message.

fs/btrfs/volumes.c +10 -0
index 0e50b885d3fd..956eb0d6bc58 100644

Lines of this file are not shown. View the raw message.

fs/debugfs/file.c +2 -2
index ae49a55bda00..1862331f1b48 100644

Lines of this file are not shown. View the raw message.

fs/xfs/libxfs/xfs_attr_leaf.c +2 -2
index 4eb2ecd31b0d..9bafe50a2124 100644

Lines of this file are not shown. View the raw message.

fs/xfs/libxfs/xfs_ialloc.c +2 -2
index 7fcf62b324b0..8c1a7cc484b6 100644

Lines of this file are not shown. View the raw message.

fs/xfs/libxfs/xfs_trans_space.h +1 -1
index c6df01a2a158..7ad3659c5d2a 100644

Lines of this file are not shown. View the raw message.

include/linux/efi_embedded_fw.h +2 -4
index 57eac5241303..a97a12bb2c9e 100644

Lines of this file are not shown. View the raw message.

include/linux/netfilter/nf_conntrack_sctp.h +2 -0
index 9a33f171aa82..625f491b95de 100644

Lines of this file are not shown. View the raw message.

include/soc/nps/common.h +6 -0
index 9b1d43d671a3..8c18dc6d3fde 100644

Lines of this file are not shown. View the raw message.

kernel/gcov/gcc_4_7.c +3 -1
index 908fdf5098c3..53c67c87f141 100644

Lines of this file are not shown. View the raw message.

kernel/padata.c +3 -2
index 4373f7adaa40..3bc90fec0904 100644

Lines of this file are not shown. View the raw message.

kernel/seccomp.c +10 -3
index c461ba992513..54cf84bac3c9 100644

Lines of this file are not shown. View the raw message.

lib/kobject.c +5 -1
index 3afb939f2a1c..9dce68c378e6 100644

Lines of this file are not shown. View the raw message.

lib/test_firmware.c +9 -0
index 9fee2b93a8d1..06c955057756 100644

Lines of this file are not shown. View the raw message.

net/mac80211/sta_info.h +2 -2
index 49728047dfad..f66fcce8e6a4 100644

Lines of this file are not shown. View the raw message.

net/mac80211/status.c +15 -16
index cbc40b358ba2..819c4221c284 100644

Lines of this file are not shown. View the raw message.

net/netfilter/nf_conntrack_proto_sctp.c +35 -4
index 4f897b14b606..810cca24b399 100644

Lines of this file are not shown. View the raw message.

net/netfilter/nft_set_rbtree.c +33 -1
index b85ce6f0c0a6..f317ad80cd6b 100644

Lines of this file are not shown. View the raw message.

net/wireless/chan.c +11 -4
index cddf92c5d09e..7a7cc4ade2b3 100644

Lines of this file are not shown. View the raw message.

net/wireless/util.c +5 -3
index 4d3b76f94f55..a72d2ad6ade8 100644

Lines of this file are not shown. View the raw message.

sound/hda/hdac_device.c +2 -0
index 333220f0f8af..3e9e9ac804f6 100644

Lines of this file are not shown. View the raw message.

sound/hda/intel-dsp-config.c +5 -5
index 99aec7349167..1c5114dedda9 100644

Lines of this file are not shown. View the raw message.

sound/pci/hda/hda_tegra.c +7 -0
index 0cc5fad1af8a..ae40ca3f2983 100644

Lines of this file are not shown. View the raw message.

sound/pci/hda/patch_hdmi.c +6 -0
index fc22bdc30da3..419f012b9853 100644

Lines of this file are not shown. View the raw message.

sound/x86/Kconfig +1 -1
index 77777192f650..4ffcc5e623c2 100644

Lines of this file are not shown. View the raw message.

tools/testing/selftests/timers/Makefile +1 -0
index 7656c7ce79d9..0e73a16874c4 100644

Lines of this file are not shown. View the raw message.

tools/testing/selftests/timers/settings new file +1 -0
new file mode 100644
index 000000000000..e7b9417537fb

Lines of this file are not shown. View the raw message.

virt/kvm/kvm_main.c +12 -9
index 9e925675a886..49a877918e2f 100644

Lines of this file are not shown. View the raw message.

The rest of this diff is not shown. View the raw message.

Part of the diff is not shown here. View the raw message.