]> Git Repo - J-linux.git/commitdiff
Merge tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi
authorLinus Torvalds <[email protected]>
Wed, 14 Dec 2022 16:58:51 +0000 (08:58 -0800)
committerLinus Torvalds <[email protected]>
Wed, 14 Dec 2022 16:58:51 +0000 (08:58 -0800)
Pull SCSI updates from James Bottomley:
 "Updates to the usual drivers (target, ufs, smartpqi, lpfc).

  There are some core changes, mostly around reworking some of our user
  context assumptions in device put and moving some code around.

  The remaining updates are bug fixes and minor changes"

* tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi: (138 commits)
  scsi: sg: Fix get_user() in call sg_scsi_ioctl()
  scsi: megaraid_sas: Fix some spelling mistakes in comment
  scsi: core: Use SCSI_SCAN_INITIAL in do_scsi_scan_host()
  scsi: core: Use SCSI_SCAN_RESCAN in __scsi_add_device()
  scsi: ufs: ufs-mediatek: Remove unnecessary return code
  scsi: ufs: core: Fix the polling implementation
  scsi: libsas: Do not export sas_ata_wait_after_reset()
  scsi: hisi_sas: Fix SATA devices missing issue during I_T nexus reset
  scsi: libsas: Add smp_ata_check_ready_type()
  scsi: Revert "scsi: hisi_sas: Don't send bcast events from HW during nexus HA reset"
  scsi: Revert "scsi: hisi_sas: Drain bcast events in hisi_sas_rescan_topology()"
  scsi: ufs: ufs-mediatek: Modify the return value
  scsi: ufs: ufs-mediatek: Remove unneeded code
  scsi: device_handler: alua: Call scsi_device_put() from non-atomic context
  scsi: device_handler: alua: Revert "Move a scsi_device_put() call out of alua_check_vpd()"
  scsi: snic: Fix possible UAF in snic_tgt_create()
  scsi: qla2xxx: Initialize vha->unknown_atio_[list, work] for NPIV hosts
  scsi: qla2xxx: Remove duplicate of vha->iocb_work initialization
  scsi: fcoe: Fix transport not deattached when fcoe_if_init() fails
  scsi: sd: Use 16-byte SYNCHRONIZE CACHE on ZBC devices
  ...

18 files changed:
1  2 
MAINTAINERS
drivers/scsi/libsas/sas_ata.c
drivers/scsi/lpfc/lpfc_init.c
drivers/scsi/megaraid/megaraid_sas_base.c
drivers/scsi/pm8001/pm8001_init.c
drivers/scsi/scsi_debug.c
drivers/scsi/scsi_error.c
drivers/scsi/scsi_lib.c
drivers/scsi/scsi_scan.c
drivers/scsi/scsi_sysfs.c
drivers/scsi/scsi_transport_iscsi.c
drivers/scsi/storvsc_drv.c
drivers/target/target_core_device.c
drivers/target/target_core_file.c
drivers/target/target_core_iblock.c
drivers/ufs/core/ufshcd.c
drivers/ufs/core/ufshpb.c
include/scsi/scsi_proto.h

diff --combined MAINTAINERS
index bb77a3ed9d5423a86920787df03177541da0b5bb,174de5e8d4c868b40827dce60482f475097fb678..2ada2bddb8096fa96aa42c3b514730df5e37fcc6
@@@ -775,24 -775,6 +775,24 @@@ T:       git git://linuxtv.org/media_tree.gi
  F:    Documentation/devicetree/bindings/media/allwinner,sun4i-a10-csi.yaml
  F:    drivers/media/platform/sunxi/sun4i-csi/
  
 +ALLWINNER A31 CSI DRIVER
 +M:    Yong Deng <[email protected]>
 +M:    Paul Kocialkowski <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +T:    git git://linuxtv.org/media_tree.git
 +F:    Documentation/devicetree/bindings/media/allwinner,sun6i-a31-csi.yaml
 +F:    drivers/media/platform/sunxi/sun6i-csi/
 +
 +ALLWINNER A31 ISP DRIVER
 +M:    Paul Kocialkowski <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +T:    git git://linuxtv.org/media_tree.git
 +F:    Documentation/devicetree/bindings/media/allwinner,sun6i-a31-isp.yaml
 +F:    drivers/staging/media/sunxi/sun6i-isp/
 +F:    drivers/staging/media/sunxi/sun6i-isp/uapi/sun6i-isp-config.h
 +
  ALLWINNER A31 MIPI CSI-2 BRIDGE DRIVER
  M:    Paul Kocialkowski <[email protected]>
  L:    [email protected]
@@@ -1111,16 -1093,6 +1111,16 @@@ S:    Maintaine
  F:    Documentation/hid/amd-sfh*
  F:    drivers/hid/amd-sfh-hid/
  
 +AMLOGIC DDR PMU DRIVER
 +M:    Jiucheng Xu <[email protected]>
 +L:    [email protected]
 +S:    Supported
 +W:    http://www.amlogic.com
 +F:    Documentation/admin-guide/perf/meson-ddr-pmu.rst
 +F:    Documentation/devicetree/bindings/perf/amlogic,g12-ddr-pmu.yaml
 +F:    drivers/perf/amlogic/
 +F:    include/soc/amlogic/
 +
  AMPHION VPU CODEC V4L2 DRIVER
  M:    Ming Qian <[email protected]>
  M:    Shijie Qin <[email protected]>
@@@ -1713,7 -1685,7 +1713,7 @@@ M:      Miquel Raynal <miquel.raynal@bootlin
  M:    Naga Sureshkumar Relli <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
  S:    Maintained
 -F:    Documentation/devicetree/bindings/memory-controllers/arm,pl353-smc.yaml
 +F:    Documentation/devicetree/bindings/memory-controllers/arm,pl35x-smc.yaml
  F:    drivers/memory/pl353-smc.c
  
  ARM PRIMECELL CLCD PL110 DRIVER
@@@ -1925,14 -1897,12 +1925,14 @@@ T:   git https://github.com/AsahiLinux/li
  F:    Documentation/devicetree/bindings/arm/apple.yaml
  F:    Documentation/devicetree/bindings/arm/apple/*
  F:    Documentation/devicetree/bindings/clock/apple,nco.yaml
 +F:    Documentation/devicetree/bindings/cpufreq/apple,cluster-cpufreq.yaml
  F:    Documentation/devicetree/bindings/dma/apple,admac.yaml
  F:    Documentation/devicetree/bindings/i2c/apple,i2c.yaml
  F:    Documentation/devicetree/bindings/interrupt-controller/apple,*
  F:    Documentation/devicetree/bindings/iommu/apple,dart.yaml
  F:    Documentation/devicetree/bindings/iommu/apple,sart.yaml
  F:    Documentation/devicetree/bindings/mailbox/apple,mailbox.yaml
 +F:    Documentation/devicetree/bindings/net/bluetooth/brcm,bcm4377-bluetooth.yaml
  F:    Documentation/devicetree/bindings/nvme/apple,nvme-ans.yaml
  F:    Documentation/devicetree/bindings/nvmem/apple,efuses.yaml
  F:    Documentation/devicetree/bindings/pci/apple,pcie.yaml
@@@ -1940,9 -1910,7 +1940,9 @@@ F:      Documentation/devicetree/bindings/pi
  F:    Documentation/devicetree/bindings/power/apple*
  F:    Documentation/devicetree/bindings/watchdog/apple,wdt.yaml
  F:    arch/arm64/boot/dts/apple/
 +F:    drivers/bluetooth/hci_bcm4377.c
  F:    drivers/clk/clk-apple-nco.c
 +F:    drivers/cpufreq/apple-soc-cpufreq.c
  F:    drivers/dma/apple-admac.c
  F:    drivers/i2c/busses/i2c-pasemi-core.c
  F:    drivers/i2c/busses/i2c-pasemi-platform.c
@@@ -2229,7 -2197,7 +2229,7 @@@ M:      Wei Xu <[email protected]
  L:    [email protected] (moderated for non-subscribers)
  S:    Supported
  W:    http://www.hisilicon.com
 -T:    git git://github.com/hisilicon/linux-hisi.git
 +T:    git https://github.com/hisilicon/linux-hisi.git
  F:    arch/arm/boot/dts/hi3*
  F:    arch/arm/boot/dts/hip*
  F:    arch/arm/boot/dts/hisi*
@@@ -2304,6 -2272,8 +2304,6 @@@ F:      drivers/clocksource/timer-ixp4xx.
  F:    drivers/crypto/ixp4xx_crypto.c
  F:    drivers/gpio/gpio-ixp4xx.c
  F:    drivers/irqchip/irq-ixp4xx.c
 -F:    include/linux/irqchip/irq-ixp4xx.h
 -F:    include/linux/platform_data/timer-ixp4xx.h
  
  ARM/INTEL KEEMBAY ARCHITECTURE
  M:    Paul J. Murphy <[email protected]>
@@@ -2371,8 -2341,6 +2371,8 @@@ M:      Gregory Clement <gregory.clement@boo
  L:    [email protected] (moderated for non-subscribers)
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/gclement/mvebu.git
 +F:    Documentation/devicetree/bindings/arm/marvell/marvell,dove.txt
 +F:    Documentation/devicetree/bindings/arm/marvell/marvell,orion5x.txt
  F:    Documentation/devicetree/bindings/soc/dove/
  F:    arch/arm/boot/dts/dove*
  F:    arch/arm/boot/dts/orion5x*
@@@ -2389,7 -2357,6 +2389,7 @@@ M:      Sebastian Hesselbarth <sebastian.hes
  L:    [email protected] (moderated for non-subscribers)
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/gclement/mvebu.git
 +F:    Documentation/devicetree/bindings/arm/marvell/
  F:    arch/arm/boot/dts/armada*
  F:    arch/arm/boot/dts/kirkwood*
  F:    arch/arm/configs/mvebu_*_defconfig
@@@ -2472,7 -2439,6 +2472,7 @@@ L:      [email protected]
  S:    Supported
  T:    git git://github.com/microchip-ung/linux-upstream.git
  F:    arch/arm64/boot/dts/microchip/
 +F:    drivers/net/ethernet/microchip/vcap/
  F:    drivers/pinctrl/pinctrl-microchip-sgpio.c
  N:    sparx5
  
@@@ -2654,7 -2620,7 +2654,7 @@@ W:      http://www.armlinux.org.uk
  ARM/QUALCOMM SUPPORT
  M:    Andy Gross <[email protected]>
  M:    Bjorn Andersson <[email protected]>
 -R:    Konrad Dybcio <konrad.dybcio@somainline.org>
 +R:    Konrad Dybcio <konrad.dybcio@linaro.org>
  L:    [email protected]
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux.git
@@@ -2725,7 -2691,7 +2725,7 @@@ F:      arch/arm/boot/dts/rtd
  F:    arch/arm/mach-realtek/
  F:    arch/arm64/boot/dts/realtek/
  
 -ARM/RENESAS ARCHITECTURE
 +ARM/RISC-V/RENESAS ARCHITECTURE
  M:    Geert Uytterhoeven <[email protected]>
  M:    Magnus Damm <[email protected]>
  L:    [email protected]
@@@ -2733,6 -2699,7 +2733,6 @@@ S:      Supporte
  Q:    http://patchwork.kernel.org/project/linux-renesas-soc/list/
  C:    irc://irc.libera.chat/renesas-soc
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-devel.git next
 -F:    Documentation/devicetree/bindings/arm/renesas.yaml
  F:    Documentation/devicetree/bindings/hwinfo/renesas,prr.yaml
  F:    Documentation/devicetree/bindings/soc/renesas/
  F:    arch/arm/boot/dts/emev2*
@@@ -2746,7 -2713,6 +2746,7 @@@ F:      arch/arm/configs/shmobile_defconfi
  F:    arch/arm/include/debug/renesas-scif.S
  F:    arch/arm/mach-shmobile/
  F:    arch/arm64/boot/dts/renesas/
 +F:    arch/riscv/boot/dts/renesas/
  F:    drivers/soc/renesas/
  F:    include/linux/soc/renesas/
  
@@@ -4018,7 -3984,7 +4018,7 @@@ M:      Rafał Miłecki <[email protected]
  R:    Broadcom internal kernel review list <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
  S:    Maintained
 -T:    git git://github.com/broadcom/stblinux.git
 +T:    git https://github.com/broadcom/stblinux.git
  F:    Documentation/devicetree/bindings/arm/bcm/brcm,bcmbca.yaml
  F:    arch/arm64/boot/dts/broadcom/bcmbca/*
  N:    bcmbca
@@@ -4043,7 -4009,7 +4043,7 @@@ R:      Broadcom internal kernel review lis
  L:    [email protected] (moderated for non-subscribers)
  L:    [email protected] (moderated for non-subscribers)
  S:    Maintained
 -T:    git git://github.com/broadcom/stblinux.git
 +T:    git https://github.com/broadcom/stblinux.git
  F:    Documentation/devicetree/bindings/pci/brcm,stb-pcie.yaml
  F:    drivers/pci/controller/pcie-brcmstb.c
  F:    drivers/staging/vc04_services
@@@ -4057,7 -4023,7 +4057,7 @@@ M:      Ray Jui <[email protected]
  M:    Scott Branden <[email protected]>
  R:    Broadcom internal kernel review list <[email protected]>
  S:    Maintained
 -T:    git git://github.com/broadcom/mach-bcm
 +T:    git https://github.com/broadcom/mach-bcm
  F:    arch/arm/mach-bcm/
  N:    bcm281*
  N:    bcm113*
@@@ -4122,7 -4088,7 +4122,7 @@@ M:      Florian Fainelli <[email protected]
  R:    Broadcom internal kernel review list <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
  S:    Maintained
 -T:    git git://github.com/broadcom/stblinux.git
 +T:    git https://github.com/broadcom/stblinux.git
  F:    Documentation/devicetree/bindings/pci/brcm,stb-pcie.yaml
  F:    arch/arm/boot/dts/bcm7*.dts*
  F:    arch/arm/include/asm/hardware/cache-b15-rac.h
@@@ -4135,7 -4101,6 +4135,7 @@@ N:      bcm703
  N:    bcm7120
  
  BROADCOM BDC DRIVER
 +M:    Justin Chen <[email protected]>
  M:    Al Cooper <[email protected]>
  L:    [email protected]
  R:    Broadcom internal kernel review list <[email protected]>
@@@ -4155,7 -4120,7 +4155,7 @@@ M:      Florian Fainelli <[email protected]
  R:    Broadcom internal kernel review list <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://github.com/broadcom/stblinux.git
 +T:    git https://github.com/broadcom/stblinux.git
  F:    arch/mips/bmips/*
  F:    arch/mips/boot/dts/brcm/bcm*.dts*
  F:    arch/mips/include/asm/mach-bmips/*
@@@ -4242,7 -4207,6 +4242,7 @@@ F:      Documentation/devicetree/bindings/se
  F:    drivers/tty/serial/8250/8250_bcm7271.c
  
  BROADCOM BRCMSTB USB EHCI DRIVER
 +M:    Justin Chen <[email protected]>
  M:    Al Cooper <[email protected]>
  R:    Broadcom internal kernel review list <[email protected]>
  L:    [email protected]
@@@ -4259,7 -4223,6 +4259,7 @@@ F:      Documentation/devicetree/bindings/us
  F:    drivers/usb/misc/brcmstb-usb-pinmap.c
  
  BROADCOM BRCMSTB USB2 and USB3 PHY DRIVER
 +M:    Justin Chen <[email protected]>
  M:    Al Cooper <[email protected]>
  R:    Broadcom internal kernel review list <[email protected]>
  L:    [email protected]
@@@ -4296,7 -4259,7 +4296,7 @@@ M:      Scott Branden <[email protected]
  R:    Broadcom internal kernel review list <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
  S:    Maintained
 -T:    git git://github.com/broadcom/stblinux.git
 +T:    git https://github.com/broadcom/stblinux.git
  F:    arch/arm64/boot/dts/broadcom/northstar2/*
  F:    arch/arm64/boot/dts/broadcom/stingray/*
  F:    drivers/clk/bcm/clk-ns*
@@@ -4366,7 -4329,7 +4366,7 @@@ M:      Florian Fainelli <[email protected]
  R:    Broadcom internal kernel review list <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://github.com/broadcom/stblinux.git
 +T:    git https://github.com/broadcom/stblinux.git
  F:    drivers/soc/bcm/bcm63xx/bcm-pmb.c
  F:    include/dt-bindings/soc/bcm-pmb.h
  
@@@ -4496,15 -4459,13 +4496,15 @@@ M:   Josef Bacik <[email protected]
  M:    David Sterba <[email protected]>
  L:    [email protected]
  S:    Maintained
 -W:    http://btrfs.wiki.kernel.org/
 -Q:    http://patchwork.kernel.org/project/linux-btrfs/list/
 +W:    https://btrfs.readthedocs.io
 +W:    https://btrfs.wiki.kernel.org/
 +Q:    https://patchwork.kernel.org/project/linux-btrfs/list/
  C:    irc://irc.libera.chat/btrfs
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux.git
  F:    Documentation/filesystems/btrfs.rst
  F:    fs/btrfs/
  F:    include/linux/btrfs*
 +F:    include/trace/events/btrfs.h
  F:    include/uapi/linux/btrfs*
  
  BTTV VIDEO4LINUX DRIVER
@@@ -4843,7 -4804,7 +4843,7 @@@ R:      Jeff Layton <[email protected]
  L:    [email protected]
  S:    Supported
  W:    http://ceph.com/
 -T:    git git://github.com/ceph/ceph-client.git
 +T:    git https://github.com/ceph/ceph-client.git
  F:    include/linux/ceph/
  F:    include/linux/crush/
  F:    net/ceph/
@@@ -4855,7 -4816,7 +4855,7 @@@ R:      Jeff Layton <[email protected]
  L:    [email protected]
  S:    Supported
  W:    http://ceph.com/
 -T:    git git://github.com/ceph/ceph-client.git
 +T:    git https://github.com/ceph/ceph-client.git
  F:    Documentation/filesystems/ceph.rst
  F:    fs/ceph/
  
@@@ -4945,7 -4906,7 +4945,7 @@@ F:      drivers/platform/chrome
  
  CHROMEOS EC CODEC DRIVER
  M:    Cheng-Yi Chiang <[email protected]>
 -M:    Tzung-Bi Shih <tzungbi@google.com>
 +M:    Tzung-Bi Shih <tzungbi@kernel.org>
  R:    Guenter Roeck <[email protected]>
  L:    [email protected]
  S:    Maintained
@@@ -4975,12 -4936,6 +4975,12 @@@ S:    Maintaine
  F:    drivers/platform/chrome/cros_usbpd_notify.c
  F:    include/linux/platform_data/cros_usbpd_notify.h
  
 +CHROMEOS HPS DRIVER
 +M:    Dan Callaghan <[email protected]>
 +R:    Sami Kyöstilä <[email protected]>
 +S:    Maintained
 +F:    drivers/platform/chrome/cros_hps_i2c.c
 +
  CHRONTEL CH7322 CEC DRIVER
  M:    Joe Tessler <[email protected]>
  L:    [email protected]
@@@ -5081,7 -5036,7 +5081,7 @@@ F:      drivers/scsi/snic
  
  CISCO VIC ETHERNET NIC DRIVER
  M:    Christian Benvenuti <[email protected]>
 -M:    Govindarajulu Varadarajan <_govind@gmx.com>
 +M:    Satish Kharat <satishkh@cisco.com>
  S:    Supported
  F:    drivers/net/ethernet/cisco/enic/
  
@@@ -5311,7 -5266,6 +5311,7 @@@ F:      tools/testing/selftests/cgroup
  
  CONTROL GROUP - BLOCK IO CONTROLLER (BLKIO)
  M:    Tejun Heo <[email protected]>
 +M:    Josef Bacik <[email protected]>
  M:    Jens Axboe <[email protected]>
  L:    [email protected]
  L:    [email protected]
@@@ -5319,7 -5273,6 +5319,7 @@@ T:      git git://git.kernel.dk/linux-bloc
  F:    Documentation/admin-guide/cgroup-v1/blkio-controller.rst
  F:    block/bfq-cgroup.c
  F:    block/blk-cgroup.c
 +F:    block/blk-iocost.c
  F:    block/blk-iolatency.c
  F:    block/blk-throttle.c
  F:    include/linux/blk-cgroup.h
@@@ -5339,7 -5292,7 +5339,7 @@@ M:      Johannes Weiner <[email protected]
  M:    Michal Hocko <[email protected]>
  M:    Roman Gushchin <[email protected]>
  M:    Shakeel Butt <[email protected]>
 -R:    Muchun Song <[email protected]>
 +R:    Muchun Song <[email protected]>
  L:    [email protected]
  L:    [email protected]
  S:    Maintained
@@@ -5542,6 -5495,14 +5542,6 @@@ M:     Jaya Kumar <[email protected]
  S:    Maintained
  F:    sound/pci/cs5535audio/
  
 -CSI DRIVERS FOR ALLWINNER V3s
 -M:    Yong Deng <[email protected]>
 -L:    [email protected]
 -S:    Maintained
 -T:    git git://linuxtv.org/media_tree.git
 -F:    Documentation/devicetree/bindings/media/allwinner,sun6i-a31-csi.yaml
 -F:    drivers/media/platform/sunxi/sun6i-csi/
 -
  CTU CAN FD DRIVER
  M:    Pavel Pisa <[email protected]>
  M:    Ondrej Ille <[email protected]>
@@@ -5617,6 -5578,8 +5617,6 @@@ F:      drivers/scsi/cxgbi/cxgb3
  
  CXGB4 CRYPTO DRIVER (chcr)
  M:    Ayush Sawal <[email protected]>
 -M:    Vinay Kumar Yadav <[email protected]>
 -M:    Rohit Maheshwari <[email protected]>
  L:    [email protected]
  S:    Supported
  W:    http://www.chelsio.com
@@@ -5624,6 -5587,8 +5624,6 @@@ F:      drivers/crypto/chelsi
  
  CXGB4 INLINE CRYPTO DRIVER
  M:    Ayush Sawal <[email protected]>
 -M:    Vinay Kumar Yadav <[email protected]>
 -M:    Rohit Maheshwari <[email protected]>
  L:    [email protected]
  S:    Supported
  W:    http://www.chelsio.com
  S:    Maintained
  F:    drivers/platform/x86/dell/dell-wmi-descriptor.c
  
 +DELL WMI DDV DRIVER
 +M:    Armin Wolf <[email protected]>
 +S:    Maintained
 +F:    Documentation/ABI/testing/debugfs-dell-wmi-ddv
 +F:    Documentation/ABI/testing/sysfs-platform-dell-wmi-ddv
 +F:    drivers/platform/x86/dell/dell-wmi-ddv.c
 +
  DELL WMI SYSMAN DRIVER
  M:    Divya Bharathi <[email protected]>
  M:    Prasanth Ksr <[email protected]>
@@@ -6068,12 -6026,11 +6068,12 @@@ F:   include/net/devlink.
  F:    include/uapi/linux/devlink.h
  F:    net/core/devlink.c
  
 -DH ELECTRONICS IMX6 DHCOM BOARD SUPPORT
 +DH ELECTRONICS IMX6 DHCOM/DHCOR BOARD SUPPORT
  M:    Christoph Niedermaier <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    arch/arm/boot/dts/imx6*-dhcom-*
 +F:    arch/arm/boot/dts/imx6*-dhcor-*
  
  DH ELECTRONICS STM32MP1 DHCOM/DHCOR BOARD SUPPORT
  M:    Marek Vasut <[email protected]>
@@@ -6323,7 -6280,7 +6323,7 @@@ M:      Sakari Ailus <[email protected]
  L:    [email protected]
  S:    Maintained
  T:    git git://linuxtv.org/media_tree.git
 -F:    Documentation/devicetree/bindings/media/i2c/dongwoon,dw9714.txt
 +F:    Documentation/devicetree/bindings/media/i2c/dongwoon,dw9714.yaml
  F:    drivers/media/i2c/dw9714.c
  
  DONGWOON DW9768 LENS VOICE COIL DRIVER
@@@ -6365,7 -6322,6 +6365,7 @@@ F:      drivers/net/ethernet/freescale/dpaa2
  F:    drivers/net/ethernet/freescale/dpaa2/Makefile
  F:    drivers/net/ethernet/freescale/dpaa2/dpaa2-eth*
  F:    drivers/net/ethernet/freescale/dpaa2/dpaa2-mac*
 +F:    drivers/net/ethernet/freescale/dpaa2/dpaa2-xsk*
  F:    drivers/net/ethernet/freescale/dpaa2/dpkg.h
  F:    drivers/net/ethernet/freescale/dpaa2/dpmac*
  F:    drivers/net/ethernet/freescale/dpaa2/dpni*
@@@ -6543,12 -6499,6 +6543,12 @@@ S:    Orphan / Obsolet
  F:    drivers/gpu/drm/i810/
  F:    include/uapi/drm/i810_drm.h
  
 +DRM DRIVER FOR JADARD JD9365DA-H3 MIPI-DSI LCD PANELS
 +M:    Jagan Teki <[email protected]>
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/display/panel/jadard,jd9365da-h3.yaml
 +F:    drivers/gpu/drm/panel/panel-jadard-jd9365da-h3.c
 +
  DRM DRIVER FOR LOGICVC DISPLAY CONTROLLER
  M:    Paul Kocialkowski <[email protected]>
  S:    Supported
  S:    Maintained
  T:    git git://anongit.freedesktop.org/drm/drm-misc
  F:    drivers/gpu/drm/drm_aperture.c
 +F:    drivers/gpu/drm/tiny/ofdrm.c
  F:    drivers/gpu/drm/tiny/simpledrm.c
  F:    drivers/video/aperture.c
 +F:    drivers/video/nomodeset.c
  F:    include/drm/drm_aperture.h
  F:    include/linux/aperture.h
 +F:    include/video/nomodeset.h
  
  DRM DRIVER FOR SIS VIDEO CARDS
  S:    Orphan / Obsolete
@@@ -6873,15 -6820,6 +6873,15 @@@ F:    include/drm/drm
  F:    include/linux/vga*
  F:    include/uapi/drm/drm*
  
 +DRM COMPUTE ACCELERATORS DRIVERS AND FRAMEWORK
 +M:    Oded Gabbay <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +C:    irc://irc.oftc.net/dri-devel
 +T:    git https://git.kernel.org/pub/scm/linux/kernel/git/ogabbay/accel.git
 +F:    Documentation/accel/
 +F:    drivers/accel/
 +
  DRM DRIVERS FOR ALLWINNER A10
  M:    Maxime Ripard <[email protected]>
  M:    Chen-Yu Tsai <[email protected]>
@@@ -7170,7 -7108,7 +7170,7 @@@ F:      drivers/gpu/drm/ttm
  F:    include/drm/ttm/
  
  DRM GPU SCHEDULER
 -M:    Andrey Grodzovsky <andrey.grodzovsky@amd.com>
 +M:    Luben Tuikov <luben.tuikov@amd.com>
  L:    [email protected]
  S:    Maintained
  T:    git git://anongit.freedesktop.org/drm/drm-misc
@@@ -7418,9 -7356,9 +7418,9 @@@ F:      drivers/edac/thunderx_edac
  
  EDAC-CORE
  M:    Borislav Petkov <[email protected]>
 -M:    Mauro Carvalho Chehab <[email protected]>
  M:    Tony Luck <[email protected]>
  R:    James Morse <[email protected]>
 +R:    Mauro Carvalho Chehab <[email protected]>
  R:    Robert Richter <[email protected]>
  L:    [email protected]
  S:    Supported
@@@ -7537,7 -7475,8 +7537,7 @@@ S:      Maintaine
  F:    drivers/edac/pnd2_edac.[ch]
  
  EDAC-QCOM
 -M:    Channagoud Kadabi <[email protected]>
 -M:    Venkata Narendra Kumar Gutta <[email protected]>
 +M:    Manivannan Sadhasivam <[email protected]>
  L:    [email protected]
  L:    [email protected]
  S:    Maintained
@@@ -7738,7 -7677,6 +7738,7 @@@ ETAS ES58X CAN/USB DRIVE
  M:    Vincent Mailhol <[email protected]>
  L:    [email protected]
  S:    Maintained
 +F:    Documentation/networking/devlink/etas_es58x.rst
  F:    drivers/net/can/usb/etas_es58x/
  
  ETHERNET BRIDGE
@@@ -7844,6 -7782,7 +7844,6 @@@ F:      Documentation/admin-guide/efi-stub.r
  F:    arch/*/include/asm/efi.h
  F:    arch/*/kernel/efi.c
  F:    arch/arm/boot/compressed/efi-header.S
 -F:    arch/arm64/kernel/efi-entry.S
  F:    arch/x86/platform/efi/
  F:    drivers/firmware/efi/
  F:    include/linux/efi*.h
@@@ -8241,10 -8180,7 +8241,10 @@@ S:    Maintaine
  F:    drivers/i2c/busses/i2c-cpm.c
  
  FREESCALE IMX / MXC FEC DRIVER
 -M:    Joakim Zhang <[email protected]>
 +M:    Wei Fang <[email protected]>
 +R:    Shenwei Wang <[email protected]>
 +R:    Clark Wang <[email protected]>
 +R:    NXP Linux Team <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    Documentation/devicetree/bindings/net/fsl,fec.yaml
@@@ -8659,8 -8595,8 +8659,8 @@@ F:      include/asm-generic
  F:    include/uapi/asm-generic/
  
  GENERIC PHY FRAMEWORK
 -M:    Kishon Vijay Abraham I <[email protected]>
  M:    Vinod Koul <[email protected]>
 +M:    Kishon Vijay Abraham I <[email protected]>
  L:    [email protected]
  S:    Supported
  Q:    https://patchwork.kernel.org/project/linux-phy/list/
@@@ -8803,7 -8739,6 +8803,7 @@@ GPIO IR Transmitte
  M:    Sean Young <[email protected]>
  L:    [email protected]
  S:    Maintained
 +F:    Documentation/devicetree/bindings/leds/irled/gpio-ir-tx.yaml
  F:    drivers/media/rc/gpio-ir-tx.c
  
  GPIO MOCKUP DRIVER
@@@ -9227,13 -9162,6 +9227,13 @@@ W:    http://www.highpoint-tech.co
  F:    Documentation/scsi/hptiop.rst
  F:    drivers/scsi/hptiop.c
  
 +HIMAX HX83112B TOUCHSCREEN SUPPORT
 +M:    Job Noorman <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/input/touchscreen/himax,hx83112b.yaml
 +F:    drivers/input/touchscreen/himax_hx83112b.c
 +
  HIPPI
  M:    Jes Sorensen <[email protected]>
  L:    [email protected]
@@@ -9282,7 -9210,7 +9282,7 @@@ W:      https://www.hisilicon.co
  F:    drivers/i2c/busses/i2c-hisi.c
  
  HISILICON LPC BUS DRIVER
 -M:    [email protected]
 +M:    Jay Fang <[email protected]>
  S:    Maintained
  W:    http://www.hisilicon.com
  F:    Documentation/devicetree/bindings/arm/hisilicon/low-pin-count.yaml
@@@ -9313,7 -9241,7 +9313,7 @@@ F:      drivers/misc/hisi_hikey_usb.
  
  HISILICON PMU DRIVER
  M:    Shaokun Zhang <[email protected]>
 -M:    Qi Liu <liuqi115@huawei.com>
 +M:    Jonathan Cameron <jonathan.cameron@huawei.com>
  S:    Supported
  W:    http://www.hisilicon.com
  F:    Documentation/admin-guide/perf/hisi-pcie-pmu.rst
@@@ -9362,7 -9290,7 +9362,7 @@@ F:      Documentation/devicetree/bindings/in
  F:    drivers/infiniband/hw/hns/
  
  HISILICON SAS Controller
- M:    John Garry <john.garry@huawei.com>
+ M:    Xiang Chen <chenxiang66@hisilicon.com>
  S:    Supported
  W:    http://www.hisilicon.com
  F:    Documentation/devicetree/bindings/scsi/hisilicon-sas.txt
@@@ -9406,7 -9334,7 +9406,7 @@@ S:      Maintaine
  F:    drivers/crypto/hisilicon/trng/trng.c
  
  HISILICON V3XX SPI NOR FLASH Controller Driver
 -M:    John Garry <john.garry@huawei.com>
 +M:    Jay Fang <f.fangjian@huawei.com>
  S:    Maintained
  W:    http://www.hisilicon.com
  F:    drivers/spi/spi-hisi-sfc-v3xx.c
@@@ -9431,7 -9359,7 +9431,7 @@@ F:      drivers/net/wireless/intersil/hostap
  HP COMPAQ TC1100 TABLET WMI EXTRAS DRIVER
  L:    [email protected]
  S:    Orphan
 -F:    drivers/platform/x86/tc1100-wmi.c
 +F:    drivers/platform/x86/hp/tc1100-wmi.c
  
  HPET: High Precision Event Timers driver
  M:    Clemens Ladisch <[email protected]>
@@@ -9501,15 -9429,14 +9501,15 @@@ F:   Documentation/devicetree/bindings/ii
  F:    drivers/iio/humidity/hts221*
  
  HUAWEI ETHERNET DRIVER
 +M:    Cai Huoqing <[email protected]>
  L:    [email protected]
 -S:    Orphan
 +S:    Maintained
  F:    Documentation/networking/device_drivers/ethernet/huawei/hinic.rst
  F:    drivers/net/ethernet/huawei/hinic/
  
  HUGETLB SUBSYSTEM
  M:    Mike Kravetz <[email protected]>
 -M:    Muchun Song <[email protected]>
 +M:    Muchun Song <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    Documentation/ABI/testing/sysfs-kernel-mm-hugepages
@@@ -9573,6 -9500,7 +9573,6 @@@ F:      drivers/media/i2c/hi847.
  Hyper-V/Azure CORE AND DRIVERS
  M:    "K. Y. Srinivasan" <[email protected]>
  M:    Haiyang Zhang <[email protected]>
 -M:    Stephen Hemminger <[email protected]>
  M:    Wei Liu <[email protected]>
  M:    Dexuan Cui <[email protected]>
  L:    [email protected]
@@@ -9606,7 -9534,6 +9606,7 @@@ F:      include/asm-generic/hyperv-tlfs.
  F:    include/asm-generic/mshyperv.h
  F:    include/clocksource/hyperv_timer.h
  F:    include/linux/hyperv.h
 +F:    include/net/mana
  F:    include/uapi/linux/hyperv.h
  F:    net/vmw_vsock/hyperv_transport.c
  F:    tools/hv/
@@@ -9844,10 -9771,7 +9844,10 @@@ S:    Supporte
  F:    drivers/pci/hotplug/rpaphp*
  
  IBM Power SRIOV Virtual NIC Device Driver
 -M:    Dany Madden <[email protected]>
 +M:    Haren Myneni <[email protected]>
 +M:    Rick Lindsley <[email protected]>
 +R:    Nick Child <[email protected]>
 +R:    Dany Madden <[email protected]>
  R:    Thomas Falcon <[email protected]>
  L:    [email protected]
  S:    Supported
@@@ -10093,11 -10017,6 +10093,11 @@@ F: Documentation/hwmon/ina2xx.rs
  F:    drivers/hwmon/ina2xx.c
  F:    include/linux/platform_data/ina2xx.h
  
 +INDEX OF FURTHER KERNEL DOCUMENTATION
 +M:    Carlos Bilbao <[email protected]>
 +S:    Maintained
 +F:    Documentation/process/kernel-docs.rst
 +
  INDUSTRY PACK SUBSYSTEM (IPACK)
  M:    Samuel Iglesias Gonsalvez <[email protected]>
  M:    Jens Taprogge <[email protected]>
@@@ -10127,7 -10046,6 +10127,7 @@@ F:   drivers/infiniband
  F:    include/rdma/
  F:    include/trace/events/ib_mad.h
  F:    include/trace/events/ib_umad.h
 +F:    include/trace/misc/rdma.h
  F:    include/uapi/linux/if_infiniband.h
  F:    include/uapi/rdma/
  F:    samples/bpf/ibumad_kern.c
@@@ -10301,7 -10219,6 +10301,7 @@@ Q:   http://patchwork.freedesktop.org/pro
  B:    https://gitlab.freedesktop.org/drm/intel/-/wikis/How-to-file-i915-bugs
  C:    irc://irc.oftc.net/intel-gfx
  T:    git git://anongit.freedesktop.org/drm-intel
 +F:    Documentation/ABI/testing/sysfs-driver-intel-i915-hwmon
  F:    Documentation/gpu/i915.rst
  F:    drivers/gpu/drm/i915/
  F:    include/drm/i915*
@@@ -10361,7 -10278,7 +10361,7 @@@ T:   git https://github.com/intel/gvt-lin
  F:    drivers/gpu/drm/i915/gvt/
  
  INTEL HID EVENT DRIVER
 -M:    Alex Hung <alex.hung@canonical.com>
 +M:    Alex Hung <alexhung@gmail.com>
  L:    [email protected]
  S:    Maintained
  F:    drivers/platform/x86/intel/hid.c
@@@ -10972,13 -10889,6 +10972,13 @@@ F: drivers/isdn/Makefil
  F:    drivers/isdn/hardware/
  F:    drivers/isdn/mISDN/
  
 +ISOFS FILESYSTEM
 +M:    Jan Kara <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/filesystems/isofs.rst
 +F:    fs/isofs/
 +
  IT87 HARDWARE MONITORING DRIVER
  M:    Jean Delvare <[email protected]>
  L:    [email protected]
@@@ -11040,9 -10950,9 +11040,9 @@@ F:   drivers/hwmon/jc42.
  JFS FILESYSTEM
  M:    Dave Kleikamp <[email protected]>
  L:    [email protected]
 -S:    Maintained
 +S:    Odd Fixes
  W:    http://jfs.sourceforge.net/
 -T:    git git://github.com/kleikamp/linux-shaggy.git
 +T:    git https://github.com/kleikamp/linux-shaggy.git
  F:    Documentation/admin-guide/jfs.rst
  F:    fs/jfs/
  
@@@ -11116,7 -11026,6 +11116,7 @@@ KCONFI
  M:    Masahiro Yamada <[email protected]>
  L:    [email protected]
  S:    Maintained
 +Q:    https://patchwork.kernel.org/project/linux-kbuild/list/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild.git kconfig
  F:    Documentation/kbuild/kconfig*
  F:    scripts/Kconfig.include
@@@ -11174,12 -11083,10 +11174,12 @@@ F:        fs/autofs
  
  KERNEL BUILD + files below scripts/ (unless maintained elsewhere)
  M:    Masahiro Yamada <[email protected]>
 -M:    Michal Marek <[email protected]>
 +R:    Nathan Chancellor <[email protected]>
  R:    Nick Desaulniers <[email protected]>
 +R:    Nicolas Schier <[email protected]>
  L:    [email protected]
  S:    Maintained
 +Q:    https://patchwork.kernel.org/project/linux-kbuild/list/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild.git
  F:    Documentation/kbuild/
  F:    Makefile
@@@ -11215,18 -11122,11 +11215,18 @@@ L:        [email protected]
  S:    Supported
  W:    http://nfs.sourceforge.net/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/cel/linux.git
 +F:    fs/exportfs/
  F:    fs/lockd/
  F:    fs/nfs_common/
  F:    fs/nfsd/
  F:    include/linux/lockd/
  F:    include/linux/sunrpc/
 +F:    include/trace/events/rpcgss.h
 +F:    include/trace/events/rpcrdma.h
 +F:    include/trace/events/sunrpc.h
 +F:    include/trace/misc/fs.h
 +F:    include/trace/misc/nfs.h
 +F:    include/trace/misc/sunrpc.h
  F:    include/uapi/linux/nfsd/
  F:    include/uapi/linux/sunrpc/
  F:    net/sunrpc/
  L:    [email protected]
  L:    [email protected]
  S:    Maintained
 -T:    git git://github.com/kvm-riscv/linux.git
 +T:    git https://github.com/kvm-riscv/linux.git
  F:    arch/riscv/include/asm/kvm*
  F:    arch/riscv/include/uapi/asm/kvm*
  F:    arch/riscv/kvm/
@@@ -11354,6 -11254,7 +11354,6 @@@ M:   Claudio Imbrenda <[email protected]
  R:    David Hildenbrand <[email protected]>
  L:    [email protected]
  S:    Supported
 -W:    http://www.ibm.com/developerworks/linux/linux390/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kvms390/linux.git
  F:    Documentation/virt/kvm/s390*
  F:    arch/s390/include/asm/gmap.h
@@@ -11948,7 -11849,7 +11948,7 @@@ M:   Eric Piel <[email protected]
  S:    Maintained
  F:    Documentation/misc-devices/lis3lv02d.rst
  F:    drivers/misc/lis3lv02d/
 -F:    drivers/platform/x86/hp_accel.c
 +F:    drivers/platform/x86/hp/hp_accel.c
  
  LIST KUNIT TEST
  M:    David Gow <[email protected]>
@@@ -12103,21 -12004,6 +12103,21 @@@ F: drivers/*/*loongarch
  F:    Documentation/loongarch/
  F:    Documentation/translations/zh_CN/loongarch/
  
 +LOONGSON-2 SOC SERIES GUTS DRIVER
 +M:    Yinbo Zhu <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/hwinfo/loongson,ls2k-chipid.yaml
 +F:    drivers/soc/loongson/loongson2_guts.c
 +
 +LOONGSON-2 SOC SERIES PINCTRL DRIVER
 +M:    zhanghongchen <[email protected]>
 +M:    Yinbo Zhu <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/pinctrl/loongson,ls2k-pinctrl.yaml
 +F:    drivers/pinctrl/pinctrl-loongson2.c
 +
  LSILOGIC MPT FUSION DRIVERS (FC/SAS/SPI)
  M:    Sathya Prakash <[email protected]>
  M:    Sreekanth Reddy <[email protected]>
@@@ -12195,7 -12081,7 +12195,7 @@@ M:   Alexey Kodanev <alexey.kodanev@oracl
  L:    [email protected] (subscribers-only)
  S:    Maintained
  W:    http://linux-test-project.github.io/
 -T:    git git://github.com/linux-test-project/ltp.git
 +T:    git https://github.com/linux-test-project/ltp.git
  
  LYNX 28G SERDES PHY DRIVER
  M:    Ioana Ciornei <[email protected]>
@@@ -12331,6 -12217,7 +12331,6 @@@ F:   arch/mips/boot/dts/img/pistachio
  
  MARVELL 88E6XXX ETHERNET SWITCH FABRIC DRIVER
  M:    Andrew Lunn <[email protected]>
 -M:    Vivien Didelot <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    Documentation/devicetree/bindings/net/dsa/marvell.txt
@@@ -12420,7 -12307,7 +12420,7 @@@ M:   Marcin Wojtas <[email protected]
  M:    Russell King <[email protected]>
  L:    [email protected]
  S:    Maintained
 -F:    Documentation/devicetree/bindings/net/marvell-pp2.txt
 +F:    Documentation/devicetree/bindings/net/marvell,pp2.yaml
  F:    drivers/net/ethernet/marvell/mvpp2/
  
  MARVELL MWIFIEX WIRELESS DRIVER
@@@ -12468,7 -12355,7 +12468,7 @@@ F:   Documentation/networking/device_driv
  F:    drivers/net/ethernet/marvell/octeontx2/af/
  
  MARVELL PRESTERA ETHERNET SWITCH DRIVER
 -M:    Taras Chornyi <t[email protected]>
 +M:    Taras Chornyi <t[email protected]>
  S:    Supported
  W:    https://github.com/Marvell-switching/switchdev-prestera
  F:    drivers/net/ethernet/marvell/prestera/
@@@ -12830,7 -12717,7 +12830,7 @@@ F:   Documentation/admin-guide/media/imx7
  F:    Documentation/devicetree/bindings/media/nxp,imx-mipi-csi2.yaml
  F:    Documentation/devicetree/bindings/media/nxp,imx7-csi.yaml
  F:    drivers/media/platform/nxp/imx-mipi-csis.c
 -F:    drivers/staging/media/imx/imx7-media-csi.c
 +F:    drivers/media/platform/nxp/imx7-media-csi.c
  
  MEDIA DRIVERS FOR HELENE
  M:    Abylay Ospan <[email protected]>
@@@ -13027,7 -12914,6 +13027,7 @@@ M:   Felix Fietkau <[email protected]
  M:    John Crispin <[email protected]>
  M:    Sean Wang <[email protected]>
  M:    Mark Lee <[email protected]>
 +M:    Lorenzo Bianconi <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    drivers/net/ethernet/mediatek/
@@@ -13399,20 -13285,10 +13399,20 @@@ F:        include/linux/memory_hotplug.
  F:    include/linux/mm.h
  F:    include/linux/mmzone.h
  F:    include/linux/pagewalk.h
 -F:    include/linux/vmalloc.h
  F:    mm/
  F:    tools/testing/selftests/vm/
  
 +VMALLOC
 +M:    Andrew Morton <[email protected]>
 +R:    Uladzislau Rezki <[email protected]>
 +R:    Christoph Hellwig <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +W:    http://www.linux-mm.org
 +T:    git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
 +F:    include/linux/vmalloc.h
 +F:    mm/vmalloc.c
 +
  MEMORY HOT(UN)PLUG
  M:    David Hildenbrand <[email protected]>
  M:    Oscar Salvador <[email protected]>
@@@ -13500,7 -13376,7 +13500,7 @@@ MESON NAND CONTROLLER DRIVER FOR AMLOGI
  M:    Liang Yang <[email protected]>
  L:    [email protected]
  S:    Maintained
 -F:    Documentation/devicetree/bindings/mtd/amlogic,meson-nand.txt
 +F:    Documentation/devicetree/bindings/mtd/amlogic,meson-nand.yaml
  F:    drivers/mtd/nand/raw/meson_*
  
  MESON VIDEO DECODER DRIVER FOR AMLOGIC SOCS
@@@ -13581,7 -13457,7 +13581,7 @@@ M:   Eugen Hristev <eugen.hristev@microch
  L:    [email protected]
  S:    Supported
  F:    Documentation/devicetree/bindings/media/microchip,csi2dc.yaml
 -F:    drivers/media/platform/atmel/microchip-csi2dc.c
 +F:    drivers/media/platform/microchip/microchip-csi2dc.c
  
  MICROCHIP ECC DRIVER
  M:    Tudor Ambarus <[email protected]>
  S:    Supported
  F:    Documentation/devicetree/bindings/media/atmel,isc.yaml
  F:    Documentation/devicetree/bindings/media/microchip,xisc.yaml
 -F:    drivers/media/platform/atmel/atmel-isc*
 -F:    drivers/media/platform/atmel/atmel-sama*-isc*
 +F:    drivers/staging/media/deprecated/atmel/atmel-isc*
 +F:    drivers/staging/media/deprecated/atmel/atmel-sama*-isc*
 +F:    drivers/media/platform/microchip/microchip-isc*
 +F:    drivers/media/platform/microchip/microchip-sama*-isc*
  F:    include/linux/atmel-isc-media.h
  
  MICROCHIP ISI DRIVER
@@@ -13744,12 -13618,6 +13744,12 @@@ S: Supporte
  F:    drivers/misc/atmel-ssc.c
  F:    include/linux/atmel-ssc.h
  
 +MICROCHIP SOC DRIVERS
 +M:    Conor Dooley <[email protected]>
 +S:    Supported
 +T:    git https://git.kernel.org/pub/scm/linux/kernel/git/conor/linux.git/
 +F:    drivers/soc/microchip/
 +
  MICROCHIP USB251XB DRIVER
  M:    Richard Leitner <[email protected]>
  L:    [email protected]
@@@ -14069,7 -13937,6 +14069,7 @@@ F:   include/uapi/linux/meye.
  
  MOTORCOMM PHY DRIVER
  M:    Peter Geis <[email protected]>
 +M:    Frank <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    drivers/net/phy/motorcomm.c
@@@ -14448,6 -14315,7 +14448,6 @@@ F:   drivers/net/wireless
  
  NETWORKING [DSA]
  M:    Andrew Lunn <[email protected]>
 -M:    Vivien Didelot <[email protected]>
  M:    Florian Fainelli <[email protected]>
  M:    Vladimir Oltean <[email protected]>
  S:    Maintained
  S:    Supported
  W:    https://nilfs.sourceforge.io/
  W:    https://nilfs.osdn.jp/
 -T:    git git://github.com/konis/nilfs2.git
 +T:    git https://github.com/konis/nilfs2.git
  F:    Documentation/filesystems/nilfs2.rst
  F:    fs/nilfs2/
  F:    include/trace/events/nilfs2.h
@@@ -14841,12 -14709,6 +14841,12 @@@ F: drivers/nvme/target/auth.
  F:    drivers/nvme/target/fabrics-cmd-auth.c
  F:    include/linux/nvme-auth.h
  
 +NVM EXPRESS HARDWARE MONITORING SUPPORT
 +M:    Guenter Roeck <[email protected]>
 +L:    [email protected]
 +S:    Supported
 +F:    drivers/nvme/host/hwmon.c
 +
  NVM EXPRESS FC TRANSPORT DRIVERS
  M:    James Smart <[email protected]>
  L:    [email protected]
@@@ -15304,13 -15166,6 +15304,13 @@@ S: Maintaine
  T:    git git://linuxtv.org/media_tree.git
  F:    drivers/media/i2c/ov08d10.c
  
 +OMNIVISION OV08X40 SENSOR DRIVER
 +M:    Jason Chen <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +T:    git git://linuxtv.org/media_tree.git
 +F:    drivers/media/i2c/ov08x40.c
 +
  OMNIVISION OV13858 SENSOR DRIVER
  M:    Sakari Ailus <[email protected]>
  L:    [email protected]
@@@ -15349,14 -15204,6 +15349,14 @@@ S: Maintaine
  T:    git git://linuxtv.org/media_tree.git
  F:    drivers/media/i2c/ov2740.c
  
 +OMNIVISION OV4689 SENSOR DRIVER
 +M:    Mikhail Rudenko <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +T:    git git://linuxtv.org/media_tree.git
 +F:    Documentation/devicetree/bindings/media/i2c/ovti,ov4689.yaml
 +F:    drivers/media/i2c/ov5647.c
 +
  OMNIVISION OV5640 SENSOR DRIVER
  M:    Steve Longerbeam <[email protected]>
  L:    [email protected]
@@@ -15481,12 -15328,6 +15481,12 @@@ S: Maintaine
  F:    drivers/mtd/nand/onenand/
  F:    include/linux/mtd/onenand*.h
  
 +ONEXPLAYER FAN DRIVER
 +M:    Joaquín Ignacio Aramendía <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    drivers/hwmon/oxp-sensors.c
 +
  ONION OMEGA2+ BOARD
  M:    Harvey Hunt <[email protected]>
  L:    [email protected]
@@@ -15585,7 -15426,6 +15585,7 @@@ S:   Maintaine
  W:    http://openvswitch.org
  F:    include/uapi/linux/openvswitch.h
  F:    net/openvswitch/
 +F:    tools/testing/selftests/net/openvswitch/
  
  OPERATING PERFORMANCE POINTS (OPP)
  M:    Viresh Kumar <[email protected]>
@@@ -15777,7 -15617,7 +15777,7 @@@ F:   drivers/input/serio/gscps2.
  F:    drivers/input/serio/hp_sdc*
  F:    drivers/parisc/
  F:    drivers/parport/parport_gsc.*
 -F:    drivers/tty/serial/8250/8250_gsc.c
 +F:    drivers/tty/serial/8250/8250_parisc.c
  F:    drivers/video/console/sti*
  F:    drivers/video/fbdev/sti*
  F:    drivers/video/logo/logo_parisc*
@@@ -15999,7 -15839,7 +15999,7 @@@ F:   Documentation/devicetree/bindings/pc
  F:    drivers/pci/controller/dwc/*designware*
  
  PCI DRIVER FOR TI DRA7XX/J721E
 -M:    Kishon Vijay Abraham I <kishon@ti.com>
 +M:    Vignesh Raghavendra <vigneshr@ti.com>
  L:    [email protected]
  L:    [email protected]
  L:    [email protected] (moderated for non-subscribers)
@@@ -16016,10 -15856,10 +16016,10 @@@ F:        Documentation/devicetree/bindings/pc
  F:    drivers/pci/controller/pci-v3-semi.c
  
  PCI ENDPOINT SUBSYSTEM
 -M:    Kishon Vijay Abraham I <[email protected]>
  M:    Lorenzo Pieralisi <[email protected]>
  R:    Krzysztof Wilczyński <[email protected]>
  R:    Manivannan Sadhasivam <[email protected]>
 +R:    Kishon Vijay Abraham I <[email protected]>
  L:    [email protected]
  S:    Supported
  Q:    https://patchwork.kernel.org/project/linux-pci/list/
@@@ -16090,7 -15930,6 +16090,7 @@@ Q:   https://patchwork.kernel.org/project
  B:    https://bugzilla.kernel.org
  C:    irc://irc.oftc.net/linux-pci
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/lpieralisi/pci.git
 +F:    Documentation/devicetree/bindings/pci/
  F:    drivers/pci/controller/
  F:    drivers/pci/pci-bridge-emul.c
  F:    drivers/pci/pci-bridge-emul.h
@@@ -16197,7 -16036,7 +16197,7 @@@ F:   Documentation/devicetree/bindings/pc
  F:    drivers/pci/controller/*microchip*
  
  PCIE DRIVER FOR QUALCOMM MSM
 -M:    Stanimir Varbanov <[email protected]>
 +M:    Manivannan Sadhasivam <[email protected]>
  L:    [email protected]
  L:    [email protected]
  S:    Maintained
@@@ -16287,8 -16126,7 +16287,8 @@@ F:   include/linux/peci-cpu.
  F:    include/linux/peci.h
  
  PENSANDO ETHERNET DRIVERS
 -M:    Shannon Nelson <[email protected]>
 +M:    Shannon Nelson <[email protected]>
 +M:    Brett Creeley <[email protected]>
  M:    [email protected]
  L:    [email protected]
  S:    Supported
@@@ -16446,7 -16284,7 +16446,7 @@@ M:   Sean Wang <[email protected]
  L:    [email protected] (moderated for non-subscribers)
  S:    Maintained
  F:    Documentation/devicetree/bindings/pinctrl/mediatek,mt65xx-pinctrl.yaml
 -F:    Documentation/devicetree/bindings/pinctrl/mediatek,mt6797-pinctrl.yaml
 +F:    Documentation/devicetree/bindings/pinctrl/mediatek,mt6779-pinctrl.yaml
  F:    Documentation/devicetree/bindings/pinctrl/mediatek,mt7622-pinctrl.yaml
  F:    Documentation/devicetree/bindings/pinctrl/mediatek,mt8183-pinctrl.yaml
  F:    drivers/pinctrl/mediatek/
@@@ -16519,6 -16357,13 +16519,6 @@@ S:  Supporte
  F:    Documentation/devicetree/bindings/input/pine64,pinephone-keyboard.yaml
  F:    drivers/input/keyboard/pinephone-keyboard.c
  
 -PKTCDVD DRIVER
 -M:    [email protected]
 -S:    Orphan
 -F:    drivers/block/pktcdvd.c
 -F:    include/linux/pktcdvd.h
 -F:    include/uapi/linux/pktcdvd.h
 -
  PLANTOWER PMS7003 AIR POLLUTION SENSOR DRIVER
  M:    Tomasz Duszynski <[email protected]>
  S:    Maintained
@@@ -16796,10 -16641,10 +16796,10 @@@ F:        net/psampl
  
  PSTORE FILESYSTEM
  M:    Kees Cook <[email protected]>
 -M:    Anton Vorontsov <[email protected]>
 -M:    Colin Cross <ccross@android.com>
 -M:    Tony Luck <[email protected]>
 -S:    Maintained
 +R:    Tony Luck <[email protected]>
 +R:    Guilherme G. Piccoli <gpiccoli@igalia.com>
 +L:    [email protected]
 +S:    Supported
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git for-next/pstore
  F:    Documentation/admin-guide/ramoops.rst
  F:    Documentation/admin-guide/pstore-blk.rst
@@@ -16820,7 -16665,6 +16820,7 @@@ F:   Documentation/driver-api/ptp.rs
  F:    drivers/net/phy/dp83640*
  F:    drivers/ptp/*
  F:    include/linux/ptp_cl*
 +K:    (?:\b|_)ptp(?:\b|_)
  
  PTP VIRTUAL CLOCK SUPPORT
  M:    Yangbo Lu <[email protected]>
@@@ -16846,6 -16690,7 +16846,6 @@@ M:   Hans Verkuil <[email protected]
  L:    [email protected]
  S:    Maintained
  T:    git git://linuxtv.org/media_tree.git
 -F:    Documentation/admin-guide/media/pulse8-cec.rst
  F:    drivers/media/cec/usb/pulse8/
  
  PURELIFI PLFXLC DRIVER
@@@ -16876,7 -16721,6 +16876,7 @@@ PWM IR Transmitte
  M:    Sean Young <[email protected]>
  L:    [email protected]
  S:    Maintained
 +F:    Documentation/devicetree/bindings/leds/irled/pwm-ir-tx.yaml
  F:    drivers/media/rc/pwm-ir-tx.c
  
  PWM SUBSYSTEM
@@@ -16941,7 -16785,7 +16941,7 @@@ M:   Srinivas Kandagatla <srinivas.kandag
  M:    Banajit Goswami <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
  S:    Supported
 -F:    Documentation/devicetree/bindings/soc/qcom/qcom,apr.yaml
 +F:    Documentation/devicetree/bindings/soc/qcom/qcom,apr*
  F:    Documentation/devicetree/bindings/sound/qcom,*
  F:    drivers/soc/qcom/apr.c
  F:    include/dt-bindings/sound/qcom,wcd9335.h
@@@ -17299,8 -17143,7 +17299,8 @@@ F:   Documentation/devicetree/bindings/th
  F:    drivers/thermal/qcom/
  
  QUALCOMM VENUS VIDEO ACCELERATOR DRIVER
 -M:    Stanimir Varbanov <[email protected]>
 +M:    Stanimir Varbanov <[email protected]>
 +M:    Vikash Garodia <[email protected]>
  L:    [email protected]
  L:    [email protected]
  S:    Maintained
@@@ -17365,7 -17208,7 +17365,7 @@@ R:   Dongsheng Yang <dongsheng.yang@easys
  L:    [email protected]
  S:    Supported
  W:    http://ceph.com/
 -T:    git git://github.com/ceph/ceph-client.git
 +T:    git https://github.com/ceph/ceph-client.git
  F:    Documentation/ABI/testing/sysfs-bus-rbd
  F:    drivers/block/rbd.c
  F:    drivers/block/rbd_types.h
@@@ -17618,8 -17461,10 +17618,8 @@@ S:  Maintaine
  F:    drivers/net/wireless/realtek/rtw89/
  
  REDPINE WIRELESS DRIVER
 -M:    Amitkumar Karwar <[email protected]>
 -M:    Siva Rebbagondla <[email protected]>
  L:    [email protected]
 -S:    Maintained
 +S:    Orphan
  F:    drivers/net/wireless/rsi/
  
  REGISTER MAP ABSTRACTION
@@@ -17864,7 -17709,7 +17864,7 @@@ F:   arch/riscv
  N:    riscv
  K:    riscv
  
 -RISC-V/MICROCHIP POLARFIRE SOC SUPPORT
 +RISC-V MICROCHIP FPGA SUPPORT
  M:    Conor Dooley <[email protected]>
  M:    Daire McNamara <[email protected]>
  L:    [email protected]
@@@ -17882,26 -17727,17 +17882,26 @@@ F:        Documentation/devicetree/bindings/us
  F:    arch/riscv/boot/dts/microchip/
  F:    drivers/char/hw_random/mpfs-rng.c
  F:    drivers/clk/microchip/clk-mpfs.c
 -F:    drivers/i2c/busses/i2c-microchip-core.c
 +F:    drivers/i2c/busses/i2c-microchip-corei2c.c
  F:    drivers/mailbox/mailbox-mpfs.c
  F:    drivers/pci/controller/pcie-microchip-host.c
  F:    drivers/reset/reset-mpfs.c
  F:    drivers/rtc/rtc-mpfs.c
 -F:    drivers/soc/microchip/
 +F:    drivers/soc/microchip/mpfs-sys-controller.c
  F:    drivers/spi/spi-microchip-core-qspi.c
  F:    drivers/spi/spi-microchip-core.c
  F:    drivers/usb/musb/mpfs.c
  F:    include/soc/microchip/mpfs.h
  
 +RISC-V MISC SOC SUPPORT
 +M:    Conor Dooley <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +Q:    https://patchwork.kernel.org/project/linux-riscv/list/
 +T:    git https://git.kernel.org/pub/scm/linux/kernel/git/conor/linux.git/
 +F:    Documentation/devicetree/bindings/riscv/
 +F:    arch/riscv/boot/dts/
 +
  RNBD BLOCK DRIVERS
  M:    Md. Haris Iqbal <[email protected]>
  M:    Jack Wang <[email protected]>
@@@ -17965,7 -17801,7 +17965,7 @@@ S:   Odd Fixe
  F:    drivers/tty/serial/rp2.*
  
  ROHM BD99954 CHARGER IC
 -R:    Matti Vaittinen <[email protected]>
 +M:    Matti Vaittinen <[email protected]>
  S:    Supported
  F:    drivers/power/supply/bd99954-charger.c
  F:    drivers/power/supply/bd99954-charger.h
@@@ -17988,7 -17824,7 +17988,7 @@@ F:   drivers/regulator/bd9571mwv-regulato
  F:    include/linux/mfd/bd9571mwv.h
  
  ROHM POWER MANAGEMENT IC DEVICE DRIVERS
 -R:    Matti Vaittinen <[email protected]>
 +M:    Matti Vaittinen <[email protected]>
  S:    Supported
  F:    drivers/clk/clk-bd718x7.c
  F:    drivers/gpio/gpio-bd71815.c
  S:    Maintained
  F:    drivers/video/fbdev/savage/
  
 -S390
 +S390 ARCHITECTURE
  M:    Heiko Carstens <[email protected]>
  M:    Vasily Gorbik <[email protected]>
  M:    Alexander Gordeev <[email protected]>
@@@ -18150,6 -17986,7 +18150,6 @@@ R:   Christian Borntraeger <borntraeger@l
  R:    Sven Schnelle <[email protected]>
  L:    [email protected]
  S:    Supported
 -W:    http://www.ibm.com/developerworks/linux/linux390/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux.git
  F:    Documentation/driver-api/s390-drivers.rst
  F:    Documentation/s390/
@@@ -18161,6 -17998,7 +18161,6 @@@ M:   Vineeth Vijayan <[email protected]
  M:    Peter Oberparleiter <[email protected]>
  L:    [email protected]
  S:    Supported
 -W:    http://www.ibm.com/developerworks/linux/linux390/
  F:    drivers/s390/cio/
  
  S390 DASD DRIVER
@@@ -18168,6 -18006,7 +18168,6 @@@ M:   Stefan Haberland <[email protected]
  M:    Jan Hoeppner <[email protected]>
  L:    [email protected]
  S:    Supported
 -W:    http://www.ibm.com/developerworks/linux/linux390/
  F:    block/partitions/ibm.c
  F:    drivers/s390/block/dasd*
  F:    include/linux/dasd_mod.h
@@@ -18177,6 -18016,7 +18177,6 @@@ M:   Matthew Rosato <[email protected]
  M:    Gerald Schaefer <[email protected]>
  L:    [email protected]
  S:    Supported
 -W:    http://www.ibm.com/developerworks/linux/linux390/
  F:    drivers/iommu/s390-iommu.c
  
  S390 IUCV NETWORK LAYER
@@@ -18185,6 -18025,7 +18185,6 @@@ M:   Wenjia Zhang <[email protected]
  L:    [email protected]
  L:    [email protected]
  S:    Supported
 -W:    http://www.ibm.com/developerworks/linux/linux390/
  F:    drivers/s390/net/*iucv*
  F:    include/net/iucv/
  F:    net/iucv/
@@@ -18195,22 -18036,15 +18195,22 @@@ M:        Wenjia Zhang <[email protected]
  L:    [email protected]
  L:    [email protected]
  S:    Supported
 -W:    http://www.ibm.com/developerworks/linux/linux390/
  F:    drivers/s390/net/
  
 +S390 MM
 +M:    Alexander Gordeev <[email protected]>
 +M:    Gerald Schaefer <[email protected]>
 +L:    [email protected]
 +S:    Supported
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux.git
 +F:    arch/s390/include/asm/pgtable.h
 +F:    arch/s390/mm
 +
  S390 PCI SUBSYSTEM
  M:    Niklas Schnelle <[email protected]>
  M:    Gerald Schaefer <[email protected]>
  L:    [email protected]
  S:    Supported
 -W:    http://www.ibm.com/developerworks/linux/linux390/
  F:    arch/s390/pci/
  F:    drivers/pci/hotplug/s390_pci_hpc.c
  F:    Documentation/s390/pci.rst
@@@ -18221,6 -18055,7 +18221,6 @@@ M:   Halil Pasic <[email protected]
  M:    Jason Herne <[email protected]>
  L:    [email protected]
  S:    Supported
 -W:    http://www.ibm.com/developerworks/linux/linux390/
  F:    Documentation/s390/vfio-ap*
  F:    drivers/s390/crypto/vfio_ap*
  
@@@ -18249,6 -18084,7 +18249,6 @@@ S390 ZCRYPT DRIVE
  M:    Harald Freudenberger <[email protected]>
  L:    [email protected]
  S:    Supported
 -W:    http://www.ibm.com/developerworks/linux/linux390/
  F:    drivers/s390/crypto/
  
  S390 ZFCP DRIVER
@@@ -18256,6 -18092,7 +18256,6 @@@ M:   Steffen Maier <[email protected]
  M:    Benjamin Block <[email protected]>
  L:    [email protected]
  S:    Supported
 -W:    http://www.ibm.com/developerworks/linux/linux390/
  F:    drivers/s390/scsi/zfcp_*
  
  S3C ADC BATTERY DRIVER
  S:    Maintained
  T:    git git://linuxtv.org/media_tree.git
  F:    drivers/staging/media/deprecated/saa7146/
 -F:    include/media/drv-intf/saa7146*
  
  SAFESETID SECURITY MODULE
  M:    Micah Morton <[email protected]>
@@@ -18373,6 -18211,7 +18373,6 @@@ F:   include/media/drv-intf/s3c_camif.
  
  SAMSUNG S3FWRN5 NFC DRIVER
  M:    Krzysztof Kozlowski <[email protected]>
 -M:    Krzysztof Opasiak <[email protected]>
  L:    [email protected] (subscribers-only)
  S:    Maintained
  F:    Documentation/devicetree/bindings/net/nfc/samsung,s3fwrn5.yaml
@@@ -18633,7 -18472,6 +18633,7 @@@ K:   \bsecure_computin
  K:    \bTIF_SECCOMP\b
  
  SECURE DIGITAL HOST CONTROLLER INTERFACE (SDHCI) Broadcom BRCMSTB DRIVER
 +M:    Kamal Dasu <[email protected]>
  M:    Al Cooper <[email protected]>
  R:    Broadcom internal kernel review list <[email protected]>
  L:    [email protected]
@@@ -18644,7 -18482,6 +18644,7 @@@ SECURE DIGITAL HOST CONTROLLER INTERFAC
  M:    Adrian Hunter <[email protected]>
  L:    [email protected]
  S:    Supported
 +F:    Documentation/devicetree/bindings/mmc/sdhci-common.yaml
  F:    drivers/mmc/host/sdhci*
  
  SECURE DIGITAL HOST CONTROLLER INTERFACE (SDHCI) MICROCHIP DRIVER
@@@ -18829,6 -18666,7 +18829,6 @@@ M:   Wenjia Zhang <[email protected]
  M:    Jan Karcher <[email protected]>
  L:    [email protected]
  S:    Supported
 -W:    http://www.ibm.com/developerworks/linux/linux390/
  F:    net/smc/
  
  SHARP GP2AP002A00F/GP2AP002S00F SENSOR DRIVER
@@@ -18939,6 -18777,7 +18939,6 @@@ M:   Palmer Dabbelt <[email protected]
  M:    Paul Walmsley <[email protected]>
  L:    [email protected]
  S:    Supported
 -T:    git git://github.com/sifive/riscv-linux.git
  N:    sifive
  K:    [^@]sifive
  
@@@ -18957,13 -18796,6 +18957,13 @@@ S: Maintaine
  F:    Documentation/devicetree/bindings/dma/sifive,fu540-c000-pdma.yaml
  F:    drivers/dma/sf-pdma/
  
 +SIFIVE SOC DRIVERS
 +M:    Conor Dooley <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +T:    git https://git.kernel.org/pub/scm/linux/kernel/git/conor/linux.git/
 +F:    drivers/soc/sifive/
 +
  SILEAD TOUCHSCREEN DRIVER
  M:    Hans de Goede <[email protected]>
  L:    [email protected]
@@@ -19054,7 -18886,7 +19054,7 @@@ F:   drivers/video/fbdev/sis
  F:    include/video/sisfb.h
  
  SIS I2C TOUCHSCREEN DRIVER
 -M:    Mika Penttilä <mika.penttila@nextfour.com>
 +M:    Mika Penttilä <mpenttil@redhat.com>
  L:    [email protected]
  S:    Maintained
  F:    Documentation/devicetree/bindings/input/touchscreen/sis_i2c.txt
@@@ -19197,7 -19029,7 +19197,7 @@@ M:   Jassi Brar <[email protected]
  M:    Ilias Apalodimas <[email protected]>
  L:    [email protected]
  S:    Maintained
 -F:    Documentation/devicetree/bindings/net/socionext-netsec.txt
 +F:    Documentation/devicetree/bindings/net/socionext,synquacer-netsec.yaml
  F:    drivers/net/ethernet/socionext/netsec.c
  
  SOCIONEXT (SNI) Synquacer SPI DRIVER
@@@ -19205,7 -19037,7 +19205,7 @@@ M:   Masahisa Kojima <masahisa.kojima@lin
  M:    Jassi Brar <[email protected]>
  L:    [email protected]
  S:    Maintained
 -F:    Documentation/devicetree/bindings/spi/spi-synquacer.txt
 +F:    Documentation/devicetree/bindings/spi/socionext,synquacer-spi.yaml
  F:    drivers/spi/spi-synquacer.c
  
  SOCIONEXT SYNQUACER I2C DRIVER
@@@ -19352,7 -19184,7 +19352,7 @@@ M:   Manivannan Sadhasivam <manivannan.sa
  L:    [email protected]
  S:    Maintained
  T:    git git://linuxtv.org/media_tree.git
 -F:    Documentation/devicetree/bindings/media/i2c/imx290.txt
 +F:    Documentation/devicetree/bindings/media/i2c/sony,imx290.yaml
  F:    drivers/media/i2c/imx290.c
  
  SONY IMX319 SENSOR DRIVER
@@@ -19501,11 -19333,6 +19501,11 @@@ W: https://linuxtv.or
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  F:    drivers/media/dvb-frontends/sp2*
  
 +SPANISH DOCUMENTATION
 +M:    Carlos Bilbao <[email protected]>
 +S:    Maintained
 +F:    Documentation/translations/sp_SP/
 +
  SPARC + UltraSPARC (sparc/sparc64)
  M:    "David S. Miller" <[email protected]>
  L:    [email protected]
@@@ -19649,7 -19476,7 +19649,7 @@@ M:   Sylvain Petinot <sylvain.petinot@fos
  L:    [email protected]
  S:    Maintained
  T:    git git://linuxtv.org/media_tree.git
 -F:    Documentation/devicetree/bindings/media/i2c/st,st-mipid02.txt
 +F:    Documentation/devicetree/bindings/media/i2c/st,st-mipid02.yaml
  F:    drivers/media/i2c/st-mipid02.c
  
  ST STM32 I2C/SMBUS DRIVER
@@@ -19672,16 -19499,6 +19672,16 @@@ S: Maintaine
  F:    Documentation/hwmon/stpddc60.rst
  F:    drivers/hwmon/pmbus/stpddc60.c
  
 +ST VGXY61 DRIVER
 +M:    Benjamin Mugnier <[email protected]>
 +M:    Sylvain Petinot <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +T:    git git://linuxtv.org/media_tree.git
 +F:    Documentation/devicetree/bindings/media/i2c/st,st-vgxy61.yaml
 +F:    Documentation/userspace-api/media/drivers/st-vgxy61.rst
 +F:    drivers/media/i2c/st-vgxy61.c
 +
  ST VL53L0X ToF RANGER(I2C) IIO DRIVER
  M:    Song Qiang <[email protected]>
  L:    [email protected]
@@@ -19697,7 -19514,6 +19697,7 @@@ S:   Supporte
  F:    Documentation/process/stable-kernel-rules.rst
  
  STAGING - ATOMISP DRIVER
 +M:    Hans de Goede <[email protected]>
  M:    Mauro Carvalho Chehab <[email protected]>
  R:    Sakari Ailus <[email protected]>
  L:    [email protected]
@@@ -19781,11 -19597,6 +19781,11 @@@ M: Ion Badulescu <[email protected]
  S:    Odd Fixes
  F:    drivers/net/ethernet/adaptec/starfire*
  
 +STARFIVE DEVICETREES
 +M:    Emil Renner Berthing <[email protected]>
 +S:    Maintained
 +F:    arch/riscv/boot/dts/starfive/
 +
  STARFIVE JH7100 CLOCK DRIVERS
  M:    Emil Renner Berthing <[email protected]>
  S:    Maintained
@@@ -19907,13 -19718,6 +19907,13 @@@ W: https://sunplus.atlassian.net/wiki/s
  F:    Documentation/devicetree/bindings/net/sunplus,sp7021-emac.yaml
  F:    drivers/net/ethernet/sunplus/
  
 +SUNPLUS MMC DRIVER
 +M:    Tony Huang <[email protected]>
 +M:    Li-hao Kuo <[email protected]>
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/mmc/sunplus,mmc.yaml
 +F:    drivers/mmc/host/sunplus-mmc.c
 +
  SUNPLUS OCOTP DRIVER
  M:    Vincent Shih <[email protected]>
  S:    Maintained
@@@ -20165,7 -19969,6 +20165,7 @@@ F:   drivers/clk/clk-sc[mp]i.
  F:    drivers/cpufreq/sc[mp]i-cpufreq.c
  F:    drivers/firmware/arm_scmi/
  F:    drivers/firmware/arm_scpi.c
 +F:    drivers/powercap/arm_scmi_powercap.c
  F:    drivers/regulator/scmi-regulator.c
  F:    drivers/reset/reset-scmi.c
  F:    include/linux/sc[mp]i_protocol.h
@@@ -20500,7 -20303,7 +20500,7 @@@ M:   Chris Zankel <[email protected]
  M:    Max Filippov <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://github.com/czankel/xtensa-linux.git
 +T:    git https://github.com/jcmvbkbc/linux-xtensa.git
  F:    arch/xtensa/
  F:    drivers/irqchip/irq-xtensa-*
  
@@@ -20850,6 -20653,7 +20850,6 @@@ W:   https://wireless.wiki.kernel.org/en/
  W:    https://wireless.wiki.kernel.org/en/users/Drivers/wl1251
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/luca/wl12xx.git
  F:    drivers/net/wireless/ti/
 -F:    include/linux/wl12xx.h
  
  TIMEKEEPING, CLOCKSOURCE CORE, NTP, ALARMTIMER
  M:    John Stultz <[email protected]>
@@@ -21377,6 -21181,15 +21377,6 @@@ S:  Maintaine
  F:    Documentation/usb/ehci.rst
  F:    drivers/usb/host/ehci*
  
 -USB GADGET/PERIPHERAL SUBSYSTEM
 -M:    Felipe Balbi <[email protected]>
 -L:    [email protected]
 -S:    Maintained
 -W:    http://www.linux-usb.org/gadget
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb.git
 -F:    drivers/usb/gadget/
 -F:    include/linux/usb/gadget*
 -
  USB HID/HIDBP DRIVERS (USB KEYBOARDS, MICE, REMOTE CONTROLS, ...)
  M:    Jiri Kosina <[email protected]>
  M:    Benjamin Tissoires <[email protected]>
  L:    [email protected]
  S:    Maintained
  W:    https://github.com/petkan/pegasus
 -T:    git git://github.com/petkan/pegasus.git
 +T:    git https://github.com/petkan/pegasus.git
  F:    drivers/net/usb/pegasus.*
  
 -USB PHY LAYER
 -M:    Felipe Balbi <[email protected]>
 -L:    [email protected]
 -S:    Maintained
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb.git
 -F:    drivers/usb/phy/
 -
  USB PRINTER DRIVER (usblp)
  M:    Pete Zaitcev <[email protected]>
  L:    [email protected]
  L:    [email protected]
  S:    Maintained
  W:    https://github.com/petkan/rtl8150
 -T:    git git://github.com/petkan/rtl8150.git
 +T:    git https://github.com/petkan/rtl8150.git
  F:    drivers/net/usb/rtl8150.c
  
  USB SERIAL SUBSYSTEM
@@@ -21913,12 -21733,6 +21913,12 @@@ F: include/linux/virtio*.
  F:    include/uapi/linux/virtio_*.h
  F:    tools/virtio/
  
 +VISL VIRTUAL STATELESS DECODER DRIVER
 +M:    Daniel Almeida <[email protected]>
 +L:    [email protected]
 +S:    Supported
 +F:    drivers/media/test-drivers/visl
 +
  IFCVF VIRTIO DATA PATH ACCELERATOR
  R:    Zhu Lingshan <[email protected]>
  F:    drivers/vdpa/ifcvf/
@@@ -22307,7 -22121,6 +22307,7 @@@ F:   Documentation/watchdog
  F:    drivers/watchdog/
  F:    include/linux/watchdog.h
  F:    include/uapi/linux/watchdog.h
 +F:    include/trace/events/watchdog.h
  
  WHISKEYCOVE PMIC GPIO DRIVER
  M:    Kuppuswamy Sathyanarayanan <[email protected]>
@@@ -22948,7 -22761,7 +22948,7 @@@ S:   Maintaine
  W:    http://mjpeg.sourceforge.net/driver-zoran/
  Q:    https://patchwork.linuxtv.org/project/linux-media/list/
  F:    Documentation/driver-api/media/drivers/zoran.rst
 -F:    drivers/staging/media/zoran/
 +F:    drivers/media/pci/zoran/
  
  ZRAM COMPRESSED RAM BLOCK DEVICE DRVIER
  M:    Minchan Kim <[email protected]>
index 5692577f82e331d373cb0d12cad78ad969cb05cf,f7439bf9cdc676284fedbcdef95400f0fdf9d42d..1ccce706167a5b054c987f38575f65ef08494f70
@@@ -101,7 -101,7 +101,7 @@@ static void sas_ata_task_done(struct sa
  
        spin_lock_irqsave(ap->lock, flags);
        /* check if we lost the race with libata/sas_ata_post_internal() */
 -      if (unlikely(ap->pflags & ATA_PFLAG_FROZEN)) {
 +      if (unlikely(ata_port_is_frozen(ap))) {
                spin_unlock_irqrestore(ap->lock, flags);
                if (qc->scsicmd)
                        goto qc_already_gone;
                                qc->flags |= ATA_QCFLAG_FAILED;
                        }
  
-                       dev->sata_dev.fis[3] = 0x04; /* status err */
-                       dev->sata_dev.fis[2] = ATA_ERR;
+                       dev->sata_dev.fis[2] = ATA_ERR | ATA_DRDY; /* tf status */
+                       dev->sata_dev.fis[3] = ATA_ABORTED; /* tf error */
                }
        }
  
@@@ -287,6 -287,31 +287,31 @@@ static int sas_ata_clear_pending(struc
                return 1;
  }
  
+ int smp_ata_check_ready_type(struct ata_link *link)
+ {
+       struct domain_device *dev = link->ap->private_data;
+       struct sas_phy *phy = sas_get_local_phy(dev);
+       struct domain_device *ex_dev = dev->parent;
+       enum sas_device_type type = SAS_PHY_UNUSED;
+       u8 sas_addr[SAS_ADDR_SIZE];
+       int res;
+       res = sas_get_phy_attached_dev(ex_dev, phy->number, sas_addr, &type);
+       sas_put_local_phy(phy);
+       if (res)
+               return res;
+       switch (type) {
+       case SAS_SATA_PENDING:
+               return 0;
+       case SAS_END_DEVICE:
+               return 1;
+       default:
+               return -ENODEV;
+       }
+ }
+ EXPORT_SYMBOL_GPL(smp_ata_check_ready_type);
  static int smp_ata_check_ready(struct ata_link *link)
  {
        int res;
@@@ -358,7 -383,7 +383,7 @@@ static int sas_ata_printk(const char *l
        return r;
  }
  
- int sas_ata_wait_after_reset(struct domain_device *dev, unsigned long deadline)
static int sas_ata_wait_after_reset(struct domain_device *dev, unsigned long deadline)
  {
        struct sata_device *sata_dev = &dev->sata_dev;
        int (*check_ready)(struct ata_link *link);
  
        return ret;
  }
- EXPORT_SYMBOL_GPL(sas_ata_wait_after_reset);
  
  static int sas_ata_hard_reset(struct ata_link *link, unsigned int *class,
                              unsigned long deadline)
@@@ -861,6 -885,21 +885,21 @@@ void sas_ata_wait_eh(struct domain_devi
        ata_port_wait_eh(ap);
  }
  
+ void sas_ata_device_link_abort(struct domain_device *device, bool force_reset)
+ {
+       struct ata_port *ap = device->sata_dev.ap;
+       struct ata_link *link = &ap->link;
+       device->sata_dev.fis[2] = ATA_ERR | ATA_DRDY; /* tf status */
+       device->sata_dev.fis[3] = ATA_ABORTED; /* tf error */
+       link->eh_info.err_mask |= AC_ERR_DEV;
+       if (force_reset)
+               link->eh_info.action |= ATA_EH_RESET;
+       ata_link_abort(link);
+ }
+ EXPORT_SYMBOL_GPL(sas_ata_device_link_abort);
  int sas_execute_ata_cmd(struct domain_device *device, u8 *fis, int force_phy_id)
  {
        struct sas_tmf_task tmf_task = {};
index b535f1fd301002f1294b1eb7443a4b7d1fcdbd21,9d595d37d6ca766cadc867c876ac96ab77392025..25ba20e42825520d902b2af4ed865e01d9bb1914
@@@ -36,7 -36,6 +36,6 @@@
  #include <linux/firmware.h>
  #include <linux/miscdevice.h>
  #include <linux/percpu.h>
- #include <linux/msi.h>
  #include <linux/irq.h>
  #include <linux/bitops.h>
  #include <linux/crash_dump.h>
@@@ -699,6 -698,8 +698,8 @@@ lpfc_sli4_refresh_params(struct lpfc_hb
                return rc;
        }
        mbx_sli4_parameters = &mqe->un.get_sli4_parameters.sli4_parameters;
+       phba->sli4_hba.pc_sli4_params.mi_cap =
+               bf_get(cfg_mi_ver, mbx_sli4_parameters);
  
        /* Are we forcing MI off via module parameter? */
        if (phba->cfg_enable_mi)
@@@ -4812,7 -4813,7 +4813,7 @@@ lpfc_create_port(struct lpfc_hba *phba
        rc = lpfc_vmid_res_alloc(phba, vport);
  
        if (rc)
 -              goto out;
 +              goto out_put_shost;
  
        /* Initialize all internally managed lists. */
        INIT_LIST_HEAD(&vport->fc_nodes);
  
        error = scsi_add_host_with_dma(shost, dev, &phba->pcidev->dev);
        if (error)
 -              goto out_put_shost;
 +              goto out_free_vmid;
  
        spin_lock_irq(&phba->port_list_lock);
        list_add_tail(&vport->listentry, &phba->port_list);
        spin_unlock_irq(&phba->port_list_lock);
        return vport;
  
 -out_put_shost:
 +out_free_vmid:
        kfree(vport->vmid);
        bitmap_free(vport->vmid_priority_range);
 +out_put_shost:
        scsi_host_put(shost);
  out:
        return NULL;
@@@ -10093,17 -10093,15 +10094,15 @@@ lpfc_sli4_read_config(struct lpfc_hba *
                qmin = phba->sli4_hba.max_cfg_param.max_wq;
                if (phba->sli4_hba.max_cfg_param.max_cq < qmin)
                        qmin = phba->sli4_hba.max_cfg_param.max_cq;
-               if (phba->sli4_hba.max_cfg_param.max_eq < qmin)
-                       qmin = phba->sli4_hba.max_cfg_param.max_eq;
                /*
-                * Whats left after this can go toward NVME / FCP.
-                * The minus 4 accounts for ELS, NVME LS, MBOX
-                * plus one extra. When configured for
-                * NVMET, FCP io channel WQs are not created.
+                * Reserve 4 (ELS, NVME LS, MBOX, plus one extra) and
+                * the remainder can be used for NVME / FCP.
                 */
                qmin -= 4;
+               if (phba->sli4_hba.max_cfg_param.max_eq < qmin)
+                       qmin = phba->sli4_hba.max_cfg_param.max_eq;
  
-               /* Check to see if there is enough for NVME */
+               /* Check to see if there is enough for default cfg */
                if ((phba->cfg_irq_chann > qmin) ||
                    (phba->cfg_hdw_queue > qmin)) {
                        lpfc_printf_log(phba, KERN_ERR, LOG_TRACE_EVENT,
@@@ -13842,6 -13840,7 +13841,7 @@@ lpfc_get_sli4_parameters(struct lpfc_hb
                                           mbx_sli4_parameters);
        phba->sli4_hba.extents_in_use = bf_get(cfg_ext, mbx_sli4_parameters);
        phba->sli4_hba.rpi_hdrs_in_use = bf_get(cfg_hdrr, mbx_sli4_parameters);
+       sli4_params->mi_cap = bf_get(cfg_mi_ver, mbx_sli4_parameters);
  
        /* Check for Extended Pre-Registered SGL support */
        phba->cfg_xpsgl = bf_get(cfg_xpsgl, mbx_sli4_parameters);
index d265a2d9d08245e2e65a4f62d7d0e810514ac87a,6940043a91ae96b369a4a9f181f55d2814964901..3ceece9883383b78969fac6c87bcca3bbd5a61b1
@@@ -2927,15 -2927,14 +2927,14 @@@ static int megasas_generic_reset(struc
   * Sets the FW busy flag and reduces the host->can_queue if the
   * cmd has not been completed within the timeout period.
   */
- static enum
- blk_eh_timer_return megasas_reset_timer(struct scsi_cmnd *scmd)
+ static enum scsi_timeout_action megasas_reset_timer(struct scsi_cmnd *scmd)
  {
        struct megasas_instance *instance;
        unsigned long flags;
  
        if (time_after(jiffies, scmd->jiffies_at_alloc +
                                (scmd_timeout * 2) * HZ)) {
-               return BLK_EH_DONE;
+               return SCSI_EH_NOT_HANDLED;
        }
  
        instance = (struct megasas_instance *)scmd->device->host->hostdata;
  
                spin_unlock_irqrestore(instance->host->host_lock, flags);
        }
-       return BLK_EH_RESET_TIMER;
+       return SCSI_EH_RESET_TIMER;
  }
  
  /**
@@@ -5874,6 -5873,10 +5873,6 @@@ fallback
  static
  int megasas_get_device_list(struct megasas_instance *instance)
  {
 -      memset(instance->pd_list, 0,
 -             (MEGASAS_MAX_PD * sizeof(struct megasas_pd_list)));
 -      memset(instance->ld_ids, 0xff, MEGASAS_MAX_LD_IDS);
 -
        if (instance->enable_fw_dev_list) {
                if (megasas_host_device_list_query(instance, true))
                        return FAILED;
@@@ -7216,7 -7219,7 +7215,7 @@@ int megasas_alloc_ctrl_dma_buffers(stru
  
                if (!fusion->ioc_init_request) {
                        dev_err(&pdev->dev,
 -                              "Failed to allocate PD list buffer\n");
 +                              "Failed to allocate ioc init request\n");
                        return -ENOMEM;
                }
  
@@@ -7435,6 -7438,7 +7434,6 @@@ static inline void megasas_init_ctrl_pa
            (instance->pdev->device == PCI_DEVICE_ID_LSI_SAS0071SKINNY))
                instance->flag_ieee = 1;
  
 -      megasas_dbg_lvl = 0;
        instance->flag = 0;
        instance->unload = 1;
        instance->last_time = 0;
@@@ -8757,26 -8761,33 +8756,26 @@@ stati
  int megasas_update_device_list(struct megasas_instance *instance,
                               int event_type)
  {
 -      int dcmd_ret = DCMD_SUCCESS;
 +      int dcmd_ret;
  
        if (instance->enable_fw_dev_list) {
 -              dcmd_ret = megasas_host_device_list_query(instance, false);
 -              if (dcmd_ret != DCMD_SUCCESS)
 -                      goto out;
 +              return megasas_host_device_list_query(instance, false);
        } else {
                if (event_type & SCAN_PD_CHANNEL) {
                        dcmd_ret = megasas_get_pd_list(instance);
 -
                        if (dcmd_ret != DCMD_SUCCESS)
 -                              goto out;
 +                              return dcmd_ret;
                }
  
                if (event_type & SCAN_VD_CHANNEL) {
                        if (!instance->requestorId ||
                        megasas_get_ld_vf_affiliation(instance, 0)) {
 -                              dcmd_ret = megasas_ld_list_query(instance,
 +                              return megasas_ld_list_query(instance,
                                                MR_LD_QUERY_TYPE_EXPOSED_TO_HOST);
 -                              if (dcmd_ret != DCMD_SUCCESS)
 -                                      goto out;
                        }
                }
        }
 -
 -out:
 -      return dcmd_ret;
 +      return DCMD_SUCCESS;
  }
  
  /**
@@@ -8906,7 -8917,7 +8905,7 @@@ megasas_aen_polling(struct work_struct 
                        sdev1 = scsi_device_lookup(instance->host,
                                                   MEGASAS_MAX_PD_CHANNELS +
                                                   (ld_target_id / MEGASAS_MAX_DEV_PER_CHANNEL),
 -                                                 (ld_target_id - MEGASAS_MAX_DEV_PER_CHANNEL),
 +                                                 (ld_target_id % MEGASAS_MAX_DEV_PER_CHANNEL),
                                                   0);
                        if (sdev1)
                                megasas_remove_scsi_device(sdev1);
@@@ -9004,7 -9015,6 +9003,7 @@@ static int __init megasas_init(void
         */
        pr_info("megasas: %s\n", MEGASAS_VERSION);
  
 +      megasas_dbg_lvl = 0;
        support_poll_for_event = 2;
        support_device_change = 1;
        support_nvme_encapsulation = true;
index 7a7d63aa90e219d4d62e1a9fe7d43f48374386e1,a1df61205b20b034ab0aff33b3b9287c6e6b8998..7e589fe3e01020c210795911adce7fc14cd30aa3
@@@ -99,7 -99,6 +99,7 @@@ static void pm8001_map_queues(struct Sc
  static struct scsi_host_template pm8001_sht = {
        .module                 = THIS_MODULE,
        .name                   = DRV_NAME,
 +      .proc_name              = DRV_NAME,
        .queuecommand           = sas_queuecommand,
        .dma_need_drain         = ata_scsi_dma_need_drain,
        .target_alloc           = sas_target_alloc,
@@@ -197,7 -196,7 +197,7 @@@ static void pm8001_free(struct pm8001_h
        }
        PM8001_CHIP_DISP->chip_iounmap(pm8001_ha);
        flush_workqueue(pm8001_wq);
-       bitmap_free(pm8001_ha->tags);
+       bitmap_free(pm8001_ha->rsvd_tags);
        kfree(pm8001_ha);
  }
  
@@@ -437,8 -436,6 +437,6 @@@ static int pm8001_alloc(struct pm8001_h
                atomic_set(&pm8001_ha->devices[i].running_req, 0);
        }
        pm8001_ha->flags = PM8001F_INIT_TIME;
-       /* Initialize tags */
-       pm8001_tag_init(pm8001_ha);
        return 0;
  
  err_out_nodev:
@@@ -1211,18 -1208,15 +1209,15 @@@ static int pm8001_init_ccb_tag(struct p
        struct Scsi_Host *shost = pm8001_ha->shost;
        struct device *dev = pm8001_ha->dev;
        u32 max_out_io, ccb_count;
-       u32 can_queue;
        int i;
  
        max_out_io = pm8001_ha->main_cfg_tbl.pm80xx_tbl.max_out_io;
        ccb_count = min_t(int, PM8001_MAX_CCB, max_out_io);
  
-       /* Update to the scsi host*/
-       can_queue = ccb_count - PM8001_RESERVE_SLOT;
-       shost->can_queue = can_queue;
+       shost->can_queue = ccb_count - PM8001_RESERVE_SLOT;
  
-       pm8001_ha->tags = bitmap_zalloc(ccb_count, GFP_KERNEL);
-       if (!pm8001_ha->tags)
+       pm8001_ha->rsvd_tags = bitmap_zalloc(PM8001_RESERVE_SLOT, GFP_KERNEL);
+       if (!pm8001_ha->rsvd_tags)
                goto err_out;
  
        /* Memory region for ccb_info*/
                pm8001_ha->ccb_info[i].task = NULL;
                pm8001_ha->ccb_info[i].ccb_tag = PM8001_INVALID_TAG;
                pm8001_ha->ccb_info[i].device = NULL;
-               ++pm8001_ha->tags_num;
        }
  
        return 0;
index a0797101a8a05ad3352d861e246b3d8adb4843b1,de3d3b1edaf56d192c3f48478bddd71428116d45..cc6953809a248a2b8def1e71b567fe7f643e2244
@@@ -1899,13 -1899,6 +1899,13 @@@ static int resp_readcap16(struct scsi_c
                        arr[14] |= 0x40;
        }
  
 +      /*
 +       * Since the scsi_debug READ CAPACITY implementation always reports the
 +       * total disk capacity, set RC BASIS = 1 for host-managed ZBC devices.
 +       */
 +      if (devip->zmodel == BLK_ZONED_HM)
 +              arr[12] |= 1 << 4;
 +
        arr[15] = sdebug_lowest_aligned & 0xff;
  
        if (have_dif_prot) {
@@@ -3785,7 -3778,7 +3785,7 @@@ static int resp_write_scat(struct scsi_
                mk_sense_buffer(scp, ILLEGAL_REQUEST, INVALID_FIELD_IN_CDB, 0);
                return illegal_condition_result;
        }
-       lrdp = kzalloc(lbdof_blen, GFP_ATOMIC);
+       lrdp = kzalloc(lbdof_blen, GFP_ATOMIC | __GFP_NOWARN);
        if (lrdp == NULL)
                return SCSI_MLQUEUE_HOST_BUSY;
        if (sdebug_verbose)
@@@ -4436,7 -4429,7 +4436,7 @@@ static int resp_verify(struct scsi_cmn
        if (ret)
                return ret;
  
-       arr = kcalloc(lb_size, vnum, GFP_ATOMIC);
+       arr = kcalloc(lb_size, vnum, GFP_ATOMIC | __GFP_NOWARN);
        if (!arr) {
                mk_sense_buffer(scp, ILLEGAL_REQUEST, INSUFF_RES_ASC,
                                INSUFF_RES_ASCQ);
@@@ -4504,7 -4497,7 +4504,7 @@@ static int resp_report_zones(struct scs
  
        rep_max_zones = (alloc_len - 64) >> ilog2(RZONES_DESC_HD);
  
-       arr = kzalloc(alloc_len, GFP_ATOMIC);
+       arr = kzalloc(alloc_len, GFP_ATOMIC | __GFP_NOWARN);
        if (!arr) {
                mk_sense_buffer(scp, ILLEGAL_REQUEST, INSUFF_RES_ASC,
                                INSUFF_RES_ASCQ);
@@@ -5702,16 -5695,16 +5702,16 @@@ static int schedule_resp(struct scsi_cm
                        u64 ns = jiffies_to_nsecs(delta_jiff);
  
                        if (sdebug_random && ns < U32_MAX) {
 -                              ns = prandom_u32_max((u32)ns);
 +                              ns = get_random_u32_below((u32)ns);
                        } else if (sdebug_random) {
                                ns >>= 12;      /* scale to 4 usec precision */
                                if (ns < U32_MAX)       /* over 4 hours max */
 -                                      ns = prandom_u32_max((u32)ns);
 +                                      ns = get_random_u32_below((u32)ns);
                                ns <<= 12;
                        }
                        kt = ns_to_ktime(ns);
                } else {        /* ndelay has a 4.2 second max */
 -                      kt = sdebug_random ? prandom_u32_max((u32)ndelay) :
 +                      kt = sdebug_random ? get_random_u32_below((u32)ndelay) :
                                             (u32)ndelay;
                        if (ndelay < INCLUSIVE_TIMING_MAX_NS) {
                                u64 d = ktime_get_boottime_ns() - ns_from_boot;
@@@ -7323,12 -7316,8 +7323,12 @@@ static int sdebug_add_host_helper(int p
        dev_set_name(&sdbg_host->dev, "adapter%d", sdebug_num_hosts);
  
        error = device_register(&sdbg_host->dev);
 -      if (error)
 +      if (error) {
 +              spin_lock(&sdebug_host_list_lock);
 +              list_del(&sdbg_host->host_list);
 +              spin_unlock(&sdebug_host_list_lock);
                goto clean;
 +      }
  
        ++sdebug_num_hosts;
        return 0;
@@@ -7340,7 -7329,10 +7340,10 @@@ clean
                kfree(sdbg_devinfo->zstate);
                kfree(sdbg_devinfo);
        }
-       kfree(sdbg_host);
+       if (sdbg_host->dev.release)
+               put_device(&sdbg_host->dev);
+       else
+               kfree(sdbg_host);
        pr_warn("%s: failed, errno=%d\n", __func__, -error);
        return error;
  }
index ac5ff0783b4f046b5a63dccf7d50a68c60d964f5,613d5aeb1e3ce04b9ba85cdca78cfb1c9156705e..a7960ad2d386a466719e5548a70e7f34b18db5f3
@@@ -312,7 -312,7 +312,7 @@@ void scsi_eh_scmd_add(struct scsi_cmnd 
         * Ensure that all tasks observe the host state change before the
         * host_failed change.
         */
 -      call_rcu(&scmd->rcu, scsi_eh_inc_host_failed);
 +      call_rcu_hurry(&scmd->rcu, scsi_eh_inc_host_failed);
  }
  
  /**
  enum blk_eh_timer_return scsi_timeout(struct request *req)
  {
        struct scsi_cmnd *scmd = blk_mq_rq_to_pdu(req);
-       enum blk_eh_timer_return rtn = BLK_EH_DONE;
        struct Scsi_Host *host = scmd->device->host;
  
        trace_scsi_dispatch_cmd_timeout(scmd);
        if (host->eh_deadline != -1 && !host->last_reset)
                host->last_reset = jiffies;
  
-       if (host->hostt->eh_timed_out)
-               rtn = host->hostt->eh_timed_out(scmd);
-       if (rtn == BLK_EH_DONE) {
-               /*
-                * Set the command to complete first in order to prevent a real
-                * completion from releasing the command while error handling
-                * is using it. If the command was already completed, then the
-                * lower level driver beat the timeout handler, and it is safe
-                * to return without escalating error recovery.
-                *
-                * If timeout handling lost the race to a real completion, the
-                * block layer may ignore that due to a fake timeout injection,
-                * so return RESET_TIMER to allow error handling another shot
-                * at this command.
-                */
-               if (test_and_set_bit(SCMD_STATE_COMPLETE, &scmd->state))
+       if (host->hostt->eh_timed_out) {
+               switch (host->hostt->eh_timed_out(scmd)) {
+               case SCSI_EH_DONE:
+                       return BLK_EH_DONE;
+               case SCSI_EH_RESET_TIMER:
                        return BLK_EH_RESET_TIMER;
-               if (scsi_abort_command(scmd) != SUCCESS) {
-                       set_host_byte(scmd, DID_TIME_OUT);
-                       scsi_eh_scmd_add(scmd);
+               case SCSI_EH_NOT_HANDLED:
+                       break;
                }
        }
  
-       return rtn;
+       /*
+        * If scsi_done() has already set SCMD_STATE_COMPLETE, do not modify
+        * *scmd.
+        */
+       if (test_and_set_bit(SCMD_STATE_COMPLETE, &scmd->state))
+               return BLK_EH_DONE;
+       atomic_inc(&scmd->device->iodone_cnt);
+       if (scsi_abort_command(scmd) != SUCCESS) {
+               set_host_byte(scmd, DID_TIME_OUT);
+               scsi_eh_scmd_add(scmd);
+       }
+       return BLK_EH_DONE;
  }
  
  /**
diff --combined drivers/scsi/scsi_lib.c
index 249757ddd8fea323e3869ba9bbad1947a8cb5d99,a29d87e574308c63cb4c93e09589128755fa1b2d..9ed1ebcb7443c3b5bec7d474c6f37e5873f5e7cd
@@@ -307,6 -307,18 +307,18 @@@ static void scsi_kick_queue(struct requ
        blk_mq_run_hw_queues(q, false);
  }
  
+ /*
+  * Kick the queue of SCSI device @sdev if @sdev != current_sdev. Called with
+  * interrupts disabled.
+  */
+ static void scsi_kick_sdev_queue(struct scsi_device *sdev, void *data)
+ {
+       struct scsi_device *current_sdev = data;
+       if (sdev != current_sdev)
+               blk_mq_run_hw_queues(sdev->request_queue, true);
+ }
  /*
   * Called for single_lun devices on IO completion. Clear starget_sdev_user,
   * and call blk_run_queue for all the scsi_devices on the target -
  static void scsi_single_lun_run(struct scsi_device *current_sdev)
  {
        struct Scsi_Host *shost = current_sdev->host;
-       struct scsi_device *sdev, *tmp;
        struct scsi_target *starget = scsi_target(current_sdev);
        unsigned long flags;
  
        scsi_kick_queue(current_sdev->request_queue);
  
        spin_lock_irqsave(shost->host_lock, flags);
-       if (starget->starget_sdev_user)
-               goto out;
-       list_for_each_entry_safe(sdev, tmp, &starget->devices,
-                       same_target_siblings) {
-               if (sdev == current_sdev)
-                       continue;
-               if (scsi_device_get(sdev))
-                       continue;
-               spin_unlock_irqrestore(shost->host_lock, flags);
-               scsi_kick_queue(sdev->request_queue);
-               spin_lock_irqsave(shost->host_lock, flags);
-               scsi_device_put(sdev);
-       }
-  out:
+       if (!starget->starget_sdev_user)
+               __starget_for_each_device(starget, current_sdev,
+                                         scsi_kick_sdev_queue);
        spin_unlock_irqrestore(shost->host_lock, flags);
  }
  
@@@ -1343,9 -1341,6 +1341,6 @@@ static inline int scsi_host_queue_ready
                                   struct scsi_device *sdev,
                                   struct scsi_cmnd *cmd)
  {
-       if (scsi_host_in_recovery(shost))
-               return 0;
        if (atomic_read(&shost->host_blocked) > 0) {
                if (scsi_host_busy(shost) > 0)
                        goto starved;
@@@ -1469,8 -1464,6 +1464,6 @@@ static int scsi_dispatch_cmd(struct scs
        struct Scsi_Host *host = cmd->device->host;
        int rtn = 0;
  
-       atomic_inc(&cmd->device->iorequest_cnt);
        /* check if the device is still usable */
        if (unlikely(cmd->device->sdev_state == SDEV_DEL)) {
                /* in SDEV_DEL we error all commands. DID_NO_CONNECT
@@@ -1734,6 -1727,11 +1727,11 @@@ static blk_status_t scsi_queue_rq(struc
        ret = BLK_STS_RESOURCE;
        if (!scsi_target_queue_ready(shost, sdev))
                goto out_put_budget;
+       if (unlikely(scsi_host_in_recovery(shost))) {
+               if (cmd->flags & SCMD_FAIL_IF_RECOVERING)
+                       ret = BLK_STS_OFFLINE;
+               goto out_dec_target_busy;
+       }
        if (!scsi_host_queue_ready(q, shost, sdev, cmd))
                goto out_dec_target_busy;
  
                goto out_dec_host_busy;
        }
  
+       atomic_inc(&cmd->device->iorequest_cnt);
        return BLK_STS_OK;
  
  out_dec_host_busy:
@@@ -2735,7 -2734,7 +2734,7 @@@ static void scsi_stop_queue(struct scsi
                        blk_mq_quiesce_queue(sdev->request_queue);
        } else {
                if (!nowait)
 -                      blk_mq_wait_quiesce_done(sdev->request_queue);
 +                      blk_mq_wait_quiesce_done(sdev->request_queue->tag_set);
        }
  }
  
diff --combined drivers/scsi/scsi_scan.c
index 0a95fa787fdf4838debff07d09bd06998dc62ae8,920b145f80b743e60e8eabd66432821827bbe38a..7a6904a3928e6f8a20115890827e4f29de6f0339
@@@ -344,6 -344,7 +344,6 @@@ static struct scsi_device *scsi_alloc_s
        sdev->request_queue = q;
        q->queuedata = sdev;
        __scsi_init_queue(sdev->host, q);
 -      WARN_ON_ONCE(!blk_get_queue(q));
  
        depth = sdev->host->cmd_per_lun ?: 1;
  
@@@ -1579,7 -1580,8 +1579,8 @@@ struct scsi_device *__scsi_add_device(s
                scsi_complete_async_scans();
  
        if (scsi_host_scan_allowed(shost) && scsi_autopm_get_host(shost) == 0) {
-               scsi_probe_and_add_lun(starget, lun, NULL, &sdev, 1, hostdata);
+               scsi_probe_and_add_lun(starget, lun, NULL, &sdev,
+                                      SCSI_SCAN_RESCAN, hostdata);
                scsi_autopm_put_host(shost);
        }
        mutex_unlock(&shost->scan_mutex);
@@@ -1918,7 -1920,7 +1919,7 @@@ static void do_scsi_scan_host(struct Sc
                        msleep(10);
        } else {
                scsi_scan_host_selected(shost, SCAN_WILD_CARD, SCAN_WILD_CARD,
-                               SCAN_WILD_CARD, 0);
+                               SCAN_WILD_CARD, SCSI_SCAN_INITIAL);
        }
  }
  
index cac7c902cf70a1716fea0f3ca4fb30bd75fb037d,f2a345cc0f8af318aa826aeab756bbad0f826a0d..981d1bab21207166b97f0003830d069bb01ff615
@@@ -441,20 -441,15 +441,15 @@@ static void scsi_device_cls_release(str
        put_device(&sdev->sdev_gendev);
  }
  
- static void scsi_device_dev_release_usercontext(struct work_struct *work)
+ static void scsi_device_dev_release(struct device *dev)
  {
-       struct scsi_device *sdev;
+       struct scsi_device *sdev = to_scsi_device(dev);
        struct device *parent;
        struct list_head *this, *tmp;
        struct scsi_vpd *vpd_pg80 = NULL, *vpd_pg83 = NULL;
        struct scsi_vpd *vpd_pg0 = NULL, *vpd_pg89 = NULL;
        struct scsi_vpd *vpd_pgb0 = NULL, *vpd_pgb1 = NULL, *vpd_pgb2 = NULL;
        unsigned long flags;
-       struct module *mod;
-       sdev = container_of(work, struct scsi_device, ew.work);
-       mod = sdev->host->hostt->module;
  
        scsi_dh_release_device(sdev);
  
  
        if (parent)
                put_device(parent);
-       module_put(mod);
- }
- static void scsi_device_dev_release(struct device *dev)
- {
-       struct scsi_device *sdp = to_scsi_device(dev);
-       /* Set module pointer as NULL in case of module unloading */
-       if (!try_module_get(sdp->host->hostt->module))
-               sdp->host->hostt->module = NULL;
-       execute_in_process_context(scsi_device_dev_release_usercontext,
-                                  &sdp->ew);
  }
  
  static struct class sdev_class = {
@@@ -828,14 -810,6 +810,14 @@@ store_state_field(struct device *dev, s
        }
  
        mutex_lock(&sdev->state_mutex);
 +      switch (sdev->sdev_state) {
 +      case SDEV_RUNNING:
 +      case SDEV_OFFLINE:
 +              break;
 +      default:
 +              mutex_unlock(&sdev->state_mutex);
 +              return -EINVAL;
 +      }
        if (sdev->sdev_state == SDEV_RUNNING && state == SDEV_RUNNING) {
                ret = 0;
        } else {
index f473c002fa4d6c2e0712bfc0ada288e1b6847e2b,c3fe5ecfee59ef291c09ed84052a0763524a31df..13cfd3e317cc0690c212cb910e8b1bd6efe23854
@@@ -231,7 -231,7 +231,7 @@@ iscsi_create_endpoint(int dd_size
        dev_set_name(&ep->dev, "ep-%d", id);
        err = device_register(&ep->dev);
          if (err)
 -              goto free_id;
 +              goto put_dev;
  
        err = sysfs_create_group(&ep->dev.kobj, &iscsi_endpoint_group);
        if (err)
@@@ -245,12 -245,10 +245,12 @@@ unregister_dev
        device_unregister(&ep->dev);
        return NULL;
  
 -free_id:
 +put_dev:
        mutex_lock(&iscsi_ep_idr_mutex);
        idr_remove(&iscsi_ep_idr, id);
        mutex_unlock(&iscsi_ep_idr_mutex);
 +      put_device(&ep->dev);
 +      return NULL;
  free_ep:
        kfree(ep);
        return NULL;
@@@ -768,7 -766,7 +768,7 @@@ iscsi_create_iface(struct Scsi_Host *sh
  
        err = device_register(&iface->dev);
        if (err)
 -              goto free_iface;
 +              goto put_dev;
  
        err = sysfs_create_group(&iface->dev.kobj, &iscsi_iface_group);
        if (err)
@@@ -782,8 -780,9 +782,8 @@@ unreg_iface
        device_unregister(&iface->dev);
        return NULL;
  
 -free_iface:
 -      put_device(iface->dev.parent);
 -      kfree(iface);
 +put_dev:
 +      put_device(&iface->dev);
        return NULL;
  }
  EXPORT_SYMBOL_GPL(iscsi_create_iface);
@@@ -1252,15 -1251,15 +1252,15 @@@ iscsi_create_flashnode_sess(struct Scsi
  
        err = device_register(&fnode_sess->dev);
        if (err)
 -              goto free_fnode_sess;
 +              goto put_dev;
  
        if (dd_size)
                fnode_sess->dd_data = &fnode_sess[1];
  
        return fnode_sess;
  
 -free_fnode_sess:
 -      kfree(fnode_sess);
 +put_dev:
 +      put_device(&fnode_sess->dev);
        return NULL;
  }
  EXPORT_SYMBOL_GPL(iscsi_create_flashnode_sess);
@@@ -1300,15 -1299,15 +1300,15 @@@ iscsi_create_flashnode_conn(struct Scsi
  
        err = device_register(&fnode_conn->dev);
        if (err)
 -              goto free_fnode_conn;
 +              goto put_dev;
  
        if (dd_size)
                fnode_conn->dd_data = &fnode_conn[1];
  
        return fnode_conn;
  
 -free_fnode_conn:
 -      kfree(fnode_conn);
 +put_dev:
 +      put_device(&fnode_conn->dev);
        return NULL;
  }
  EXPORT_SYMBOL_GPL(iscsi_create_flashnode_conn);
@@@ -2989,7 -2988,7 +2989,7 @@@ iscsi_if_destroy_conn(struct iscsi_tran
  }
  
  static int
- iscsi_set_param(struct iscsi_transport *transport, struct iscsi_uevent *ev)
+ iscsi_if_set_param(struct iscsi_transport *transport, struct iscsi_uevent *ev)
  {
        char *data = (char*)ev + sizeof(*ev);
        struct iscsi_cls_conn *conn;
@@@ -3942,7 -3941,7 +3942,7 @@@ iscsi_if_recv_msg(struct sk_buff *skb, 
                        err = -EINVAL;
                break;
        case ISCSI_UEVENT_SET_PARAM:
-               err = iscsi_set_param(transport, ev);
+               err = iscsi_if_set_param(transport, ev);
                break;
        case ISCSI_UEVENT_CREATE_CONN:
        case ISCSI_UEVENT_DESTROY_CONN:
@@@ -4816,7 -4815,7 +4816,7 @@@ iscsi_register_transport(struct iscsi_t
        dev_set_name(&priv->dev, "%s", tt->name);
        err = device_register(&priv->dev);
        if (err)
 -              goto free_priv;
 +              goto put_dev;
  
        err = sysfs_create_group(&priv->dev.kobj, &iscsi_transport_group);
        if (err)
  unregister_dev:
        device_unregister(&priv->dev);
        return NULL;
 -free_priv:
 -      kfree(priv);
 +put_dev:
 +      put_device(&priv->dev);
        return NULL;
  }
  EXPORT_SYMBOL_GPL(iscsi_register_transport);
index 3c5b7e4227b25e3d44795d26ad70974a32add542,a84194d823471cd3a291e97306df532eccf21fb5..d7a84c0bfaeb73570523b95f6bb4ea82a4d06b66
@@@ -303,21 -303,16 +303,21 @@@ enum storvsc_request_type 
  };
  
  /*
 - * SRB status codes and masks; a subset of the codes used here.
 + * SRB status codes and masks. In the 8-bit field, the two high order bits
 + * are flags, while the remaining 6 bits are an integer status code.  The
 + * definitions here include only the subset of the integer status codes that
 + * are tested for in this driver.
   */
 -
  #define SRB_STATUS_AUTOSENSE_VALID    0x80
  #define SRB_STATUS_QUEUE_FROZEN               0x40
 -#define SRB_STATUS_INVALID_LUN        0x20
 -#define SRB_STATUS_SUCCESS    0x01
 -#define SRB_STATUS_ABORTED    0x02
 -#define SRB_STATUS_ERROR      0x04
 -#define SRB_STATUS_DATA_OVERRUN       0x12
 +
 +/* SRB status integer codes */
 +#define SRB_STATUS_SUCCESS            0x01
 +#define SRB_STATUS_ABORTED            0x02
 +#define SRB_STATUS_ERROR              0x04
 +#define SRB_STATUS_INVALID_REQUEST    0x06
 +#define SRB_STATUS_DATA_OVERRUN               0x12
 +#define SRB_STATUS_INVALID_LUN                0x20
  
  #define SRB_STATUS(status) \
        (status & ~(SRB_STATUS_AUTOSENSE_VALID | SRB_STATUS_QUEUE_FROZEN))
@@@ -974,25 -969,38 +974,25 @@@ static void storvsc_handle_error(struc
        void (*process_err_fn)(struct work_struct *work);
        struct hv_host_device *host_dev = shost_priv(host);
  
 -      /*
 -       * In some situations, Hyper-V sets multiple bits in the
 -       * srb_status, such as ABORTED and ERROR. So process them
 -       * individually, with the most specific bits first.
 -       */
 +      switch (SRB_STATUS(vm_srb->srb_status)) {
 +      case SRB_STATUS_ERROR:
 +      case SRB_STATUS_ABORTED:
 +      case SRB_STATUS_INVALID_REQUEST:
 +              if (vm_srb->srb_status & SRB_STATUS_AUTOSENSE_VALID) {
 +                      /* Check for capacity change */
 +                      if ((asc == 0x2a) && (ascq == 0x9)) {
 +                              process_err_fn = storvsc_device_scan;
 +                              /* Retry the I/O that triggered this. */
 +                              set_host_byte(scmnd, DID_REQUEUE);
 +                              goto do_work;
 +                      }
  
 -      if (vm_srb->srb_status & SRB_STATUS_INVALID_LUN) {
 -              set_host_byte(scmnd, DID_NO_CONNECT);
 -              process_err_fn = storvsc_remove_lun;
 -              goto do_work;
 -      }
 -
 -      if (vm_srb->srb_status & SRB_STATUS_ABORTED) {
 -              if (vm_srb->srb_status & SRB_STATUS_AUTOSENSE_VALID &&
 -                  /* Capacity data has changed */
 -                  (asc == 0x2a) && (ascq == 0x9)) {
 -                      process_err_fn = storvsc_device_scan;
                        /*
 -                       * Retry the I/O that triggered this.
 +                       * Otherwise, let upper layer deal with the
 +                       * error when sense message is present
                         */
 -                      set_host_byte(scmnd, DID_REQUEUE);
 -                      goto do_work;
 -              }
 -      }
 -
 -      if (vm_srb->srb_status & SRB_STATUS_ERROR) {
 -              /*
 -               * Let upper layer deal with error when
 -               * sense message is present.
 -               */
 -              if (vm_srb->srb_status & SRB_STATUS_AUTOSENSE_VALID)
                        return;
 +              }
  
                /*
                 * If there is an error; offline the device since all
                default:
                        set_host_byte(scmnd, DID_ERROR);
                }
 +              return;
 +
 +      case SRB_STATUS_INVALID_LUN:
 +              set_host_byte(scmnd, DID_NO_CONNECT);
 +              process_err_fn = storvsc_remove_lun;
 +              goto do_work;
 +
        }
        return;
  
@@@ -1651,13 -1652,13 +1651,13 @@@ static int storvsc_host_reset_handler(s
   * be unbounded on Azure.  Reset the timer unconditionally to give the host a
   * chance to perform EH.
   */
- static enum blk_eh_timer_return storvsc_eh_timed_out(struct scsi_cmnd *scmnd)
+ static enum scsi_timeout_action storvsc_eh_timed_out(struct scsi_cmnd *scmnd)
  {
  #if IS_ENABLED(CONFIG_SCSI_FC_ATTRS)
        if (scmnd->device->host->transportt == fc_transport_template)
                return fc_eh_timed_out(scmnd);
  #endif
-       return BLK_EH_RESET_TIMER;
+       return SCSI_EH_RESET_TIMER;
  }
  
  static bool storvsc_scsi_cmd_ok(struct scsi_cmnd *scmnd)
index cb4f7cc02f8fa131414f3000ea523950f59eea50,e7d202b5740553008e11621373bcc9eca4dc232d..f6e58410ec3f9ced3e2844b9035fa8d13d71225c
@@@ -284,25 -284,6 +284,25 @@@ void target_pr_kref_release(struct kre
        complete(&deve->pr_comp);
  }
  
 +/*
 + * Establish UA condition on SCSI device - all LUNs
 + */
 +void target_dev_ua_allocate(struct se_device *dev, u8 asc, u8 ascq)
 +{
 +      struct se_dev_entry *se_deve;
 +      struct se_lun *lun;
 +
 +      spin_lock(&dev->se_port_lock);
 +      list_for_each_entry(lun, &dev->dev_sep_list, lun_dev_link) {
 +
 +              spin_lock(&lun->lun_deve_lock);
 +              list_for_each_entry(se_deve, &lun->lun_deve_list, lun_link)
 +                      core_scsi3_ua_allocate(se_deve, asc, ascq);
 +              spin_unlock(&lun->lun_deve_lock);
 +      }
 +      spin_unlock(&dev->se_port_lock);
 +}
 +
  static void
  target_luns_data_has_changed(struct se_node_acl *nacl, struct se_dev_entry *new,
                             bool skip_new)
@@@ -804,6 -785,7 +804,7 @@@ struct se_device *target_alloc_device(s
        dev->dev_attrib.emulate_caw = DA_EMULATE_CAW;
        dev->dev_attrib.emulate_3pc = DA_EMULATE_3PC;
        dev->dev_attrib.emulate_pr = DA_EMULATE_PR;
+       dev->dev_attrib.emulate_rsoc = DA_EMULATE_RSOC;
        dev->dev_attrib.pi_prot_type = TARGET_DIF_TYPE0_PROT;
        dev->dev_attrib.enforce_pr_isids = DA_ENFORCE_PR_ISIDS;
        dev->dev_attrib.force_pr_aptpl = DA_FORCE_PR_APTPL;
index 7e81a53dbf3cacb2e48dd23f477f531b0306637b,f9aed9fa8ced291b3309c18b46905ac421a4ed0a..fd584111da45c05645b935678481fdcc706e6030
@@@ -193,7 -193,6 +193,6 @@@ static int fd_configure_device(struct s
        }
  
        dev->dev_attrib.hw_block_size = fd_dev->fd_block_size;
-       dev->dev_attrib.max_bytes_per_io = FD_MAX_BYTES;
        dev->dev_attrib.hw_max_sectors = FD_MAX_BYTES / fd_dev->fd_block_size;
        dev->dev_attrib.hw_queue_depth = FD_MAX_DEVICE_QUEUE_DEPTH;
  
@@@ -337,7 -336,7 +336,7 @@@ static int fd_do_rw(struct se_cmd *cmd
                len += sg->length;
        }
  
 -      iov_iter_bvec(&iter, READ, bvec, sgl_nents, len);
 +      iov_iter_bvec(&iter, is_write, bvec, sgl_nents, len);
        if (is_write)
                ret = vfs_iter_write(fd, &iter, &pos, 0);
        else
@@@ -473,7 -472,7 +472,7 @@@ fd_execute_write_same(struct se_cmd *cm
                len += se_dev->dev_attrib.block_size;
        }
  
 -      iov_iter_bvec(&iter, READ, bvec, nolb, len);
 +      iov_iter_bvec(&iter, ITER_SOURCE, bvec, nolb, len);
        ret = vfs_iter_write(fd_dev->fd_file, &iter, &pos, 0);
  
        kfree(bvec);
index d9266cf558dcb54cc4a02c912ba8f3de92e1717f,2a704926edb9697ab1630b073b4cc8886cf685f7..cc838ffd129472ef14b8fa2e4f2a77129e974d3b
@@@ -124,7 -124,9 +124,9 @@@ static int iblock_configure_device(stru
        q = bdev_get_queue(bd);
  
        dev->dev_attrib.hw_block_size = bdev_logical_block_size(bd);
-       dev->dev_attrib.hw_max_sectors = queue_max_hw_sectors(q);
+       dev->dev_attrib.hw_max_sectors = mult_frac(queue_max_hw_sectors(q),
+                       SECTOR_SIZE,
+                       dev->dev_attrib.hw_block_size);
        dev->dev_attrib.hw_queue_depth = q->nr_requests;
  
        /*
@@@ -230,12 -232,14 +232,12 @@@ static void iblock_unplug_device(struc
        clear_bit(IBD_PLUGF_PLUGGED, &ib_dev_plug->flags);
  }
  
 -static unsigned long long iblock_emulate_read_cap_with_block_size(
 -      struct se_device *dev,
 -      struct block_device *bd,
 -      struct request_queue *q)
 +static sector_t iblock_get_blocks(struct se_device *dev)
  {
 -      u32 block_size = bdev_logical_block_size(bd);
 +      struct iblock_dev *ib_dev = IBLOCK_DEV(dev);
 +      u32 block_size = bdev_logical_block_size(ib_dev->ibd_bd);
        unsigned long long blocks_long =
 -              div_u64(bdev_nr_bytes(bd), block_size) - 1;
 +              div_u64(bdev_nr_bytes(ib_dev->ibd_bd), block_size) - 1;
  
        if (block_size == dev->dev_attrib.block_size)
                return blocks_long;
@@@ -827,6 -831,15 +829,6 @@@ fail
        return TCM_LOGICAL_UNIT_COMMUNICATION_FAILURE;
  }
  
 -static sector_t iblock_get_blocks(struct se_device *dev)
 -{
 -      struct iblock_dev *ib_dev = IBLOCK_DEV(dev);
 -      struct block_device *bd = ib_dev->ibd_bd;
 -      struct request_queue *q = bdev_get_queue(bd);
 -
 -      return iblock_emulate_read_cap_with_block_size(dev, bd, q);
 -}
 -
  static sector_t iblock_get_alignment_offset_lbas(struct se_device *dev)
  {
        struct iblock_dev *ib_dev = IBLOCK_DEV(dev);
index d2b11d5b91ce456dd80324e8c390ba2ff324aeeb,2dbe24977822f956383052144eac17b00ebab343..e18c9f4463ec592a70b95fa7e788e33286a86caf
@@@ -486,6 -486,9 +486,9 @@@ static void ufshcd_print_evt_hist(struc
        ufshcd_print_evt(hba, UFS_EVT_RESUME_ERR, "resume_fail");
        ufshcd_print_evt(hba, UFS_EVT_SUSPEND_ERR,
                         "suspend_fail");
+       ufshcd_print_evt(hba, UFS_EVT_WL_RES_ERR, "wlun resume_fail");
+       ufshcd_print_evt(hba, UFS_EVT_WL_SUSP_ERR,
+                        "wlun suspend_fail");
        ufshcd_print_evt(hba, UFS_EVT_DEV_RESET, "dev_reset");
        ufshcd_print_evt(hba, UFS_EVT_HOST_RESET, "host_reset");
        ufshcd_print_evt(hba, UFS_EVT_ABORT, "task_abort");
@@@ -772,7 -775,7 +775,7 @@@ static inline void ufshcd_utrl_clear(st
  }
  
  /**
 - * ufshcd_utmrl_clear - Clear a bit in UTRMLCLR register
 + * ufshcd_utmrl_clear - Clear a bit in UTMRLCLR register
   * @hba: per adapter instance
   * @pos: position of the bit to be cleared
   */
@@@ -2013,7 -2016,6 +2016,6 @@@ static void ufshcd_exit_clk_gating(stru
        destroy_workqueue(hba->clk_gating.clk_gating_workq);
  }
  
- /* Must be called with host lock acquired */
  static void ufshcd_clk_scaling_start_busy(struct ufs_hba *hba)
  {
        bool queue_resume_work = false;
@@@ -3098,7 -3100,7 +3100,7 @@@ static int ufshcd_query_flag_retry(stru
  
        if (ret)
                dev_err(hba->dev,
 -                      "%s: query attribute, opcode %d, idn %d, failed with error %d after %d retries\n",
 +                      "%s: query flag, opcode %d, idn %d, failed with error %d after %d retries\n",
                        __func__, opcode, idn, ret, retries);
        return ret;
  }
@@@ -3606,7 -3608,7 +3608,7 @@@ static inline int ufshcd_read_unit_desc
         * Unit descriptors are only available for general purpose LUs (LUN id
         * from 0 to 7) and RPMB Well known LU.
         */
-       if (!ufs_is_valid_unit_desc_lun(&hba->dev_info, lun, param_offset))
+       if (!ufs_is_valid_unit_desc_lun(&hba->dev_info, lun))
                return -EOPNOTSUPP;
  
        return ufshcd_read_desc_param(hba, QUERY_DESC_IDN_UNIT, lun,
@@@ -4478,7 -4480,7 +4480,7 @@@ static int ufshcd_complete_dev_init(str
                QUERY_FLAG_IDN_FDEVICEINIT, 0, NULL);
        if (err) {
                dev_err(hba->dev,
-                       "%s setting fDeviceInit flag failed with error %d\n",
+                       "%s: setting fDeviceInit flag failed with error %d\n",
                        __func__, err);
                goto out;
        }
  
        if (err) {
                dev_err(hba->dev,
-                               "%s reading fDeviceInit flag failed with error %d\n",
+                               "%s: reading fDeviceInit flag failed with error %d\n",
                                __func__, err);
        } else if (flag_res) {
                dev_err(hba->dev,
-                               "%s fDeviceInit was not cleared by the device\n",
+                               "%s: fDeviceInit was not cleared by the device\n",
                                __func__);
                err = -EBUSY;
        }
@@@ -4666,14 -4668,18 +4668,18 @@@ int ufshcd_hba_enable(struct ufs_hba *h
                /* enable UIC related interrupts */
                ufshcd_enable_intr(hba, UFSHCD_UIC_MASK);
                ret = ufshcd_dme_reset(hba);
-               if (!ret) {
-                       ret = ufshcd_dme_enable(hba);
-                       if (!ret)
-                               ufshcd_vops_hce_enable_notify(hba, POST_CHANGE);
-                       if (ret)
-                               dev_err(hba->dev,
-                                       "Host controller enable failed with non-hce\n");
+               if (ret) {
+                       dev_err(hba->dev, "DME_RESET failed\n");
+                       return ret;
+               }
+               ret = ufshcd_dme_enable(hba);
+               if (ret) {
+                       dev_err(hba->dev, "Enabling DME failed\n");
+                       return ret;
                }
+               ufshcd_vops_hce_enable_notify(hba, POST_CHANGE);
        } else {
                ret = ufshcd_hba_execute_hce(hba);
        }
@@@ -4859,100 -4865,6 +4865,6 @@@ static int ufshcd_verify_dev_init(struc
        return err;
  }
  
- /**
-  * ufshcd_set_queue_depth - set lun queue depth
-  * @sdev: pointer to SCSI device
-  *
-  * Read bLUQueueDepth value and activate scsi tagged command
-  * queueing. For WLUN, queue depth is set to 1. For best-effort
-  * cases (bLUQueueDepth = 0) the queue depth is set to a maximum
-  * value that host can queue.
-  */
- static void ufshcd_set_queue_depth(struct scsi_device *sdev)
- {
-       int ret = 0;
-       u8 lun_qdepth;
-       struct ufs_hba *hba;
-       hba = shost_priv(sdev->host);
-       lun_qdepth = hba->nutrs;
-       ret = ufshcd_read_unit_desc_param(hba,
-                                         ufshcd_scsi_to_upiu_lun(sdev->lun),
-                                         UNIT_DESC_PARAM_LU_Q_DEPTH,
-                                         &lun_qdepth,
-                                         sizeof(lun_qdepth));
-       /* Some WLUN doesn't support unit descriptor */
-       if (ret == -EOPNOTSUPP)
-               lun_qdepth = 1;
-       else if (!lun_qdepth)
-               /* eventually, we can figure out the real queue depth */
-               lun_qdepth = hba->nutrs;
-       else
-               lun_qdepth = min_t(int, lun_qdepth, hba->nutrs);
-       dev_dbg(hba->dev, "%s: activate tcq with queue depth %d\n",
-                       __func__, lun_qdepth);
-       scsi_change_queue_depth(sdev, lun_qdepth);
- }
- /*
-  * ufshcd_get_lu_wp - returns the "b_lu_write_protect" from UNIT DESCRIPTOR
-  * @hba: per-adapter instance
-  * @lun: UFS device lun id
-  * @b_lu_write_protect: pointer to buffer to hold the LU's write protect info
-  *
-  * Returns 0 in case of success and b_lu_write_protect status would be returned
-  * @b_lu_write_protect parameter.
-  * Returns -ENOTSUPP if reading b_lu_write_protect is not supported.
-  * Returns -EINVAL in case of invalid parameters passed to this function.
-  */
- static int ufshcd_get_lu_wp(struct ufs_hba *hba,
-                           u8 lun,
-                           u8 *b_lu_write_protect)
- {
-       int ret;
-       if (!b_lu_write_protect)
-               ret = -EINVAL;
-       /*
-        * According to UFS device spec, RPMB LU can't be write
-        * protected so skip reading bLUWriteProtect parameter for
-        * it. For other W-LUs, UNIT DESCRIPTOR is not available.
-        */
-       else if (lun >= hba->dev_info.max_lu_supported)
-               ret = -ENOTSUPP;
-       else
-               ret = ufshcd_read_unit_desc_param(hba,
-                                         lun,
-                                         UNIT_DESC_PARAM_LU_WR_PROTECT,
-                                         b_lu_write_protect,
-                                         sizeof(*b_lu_write_protect));
-       return ret;
- }
- /**
-  * ufshcd_get_lu_power_on_wp_status - get LU's power on write protect
-  * status
-  * @hba: per-adapter instance
-  * @sdev: pointer to SCSI device
-  *
-  */
- static inline void ufshcd_get_lu_power_on_wp_status(struct ufs_hba *hba,
-                                                   const struct scsi_device *sdev)
- {
-       if (hba->dev_info.f_power_on_wp_en &&
-           !hba->dev_info.is_lu_power_on_wp) {
-               u8 b_lu_write_protect;
-               if (!ufshcd_get_lu_wp(hba, ufshcd_scsi_to_upiu_lun(sdev->lun),
-                                     &b_lu_write_protect) &&
-                   (b_lu_write_protect == UFS_LU_POWER_ON_WP))
-                       hba->dev_info.is_lu_power_on_wp = true;
-       }
- }
  /**
   * ufshcd_setup_links - associate link b/w device wlun and other luns
   * @sdev: pointer to SCSI device
@@@ -4990,6 -4902,58 +4902,58 @@@ static void ufshcd_setup_links(struct u
        }
  }
  
+ /**
+  * ufshcd_lu_init - Initialize the relevant parameters of the LU
+  * @hba: per-adapter instance
+  * @sdev: pointer to SCSI device
+  */
+ static void ufshcd_lu_init(struct ufs_hba *hba, struct scsi_device *sdev)
+ {
+       int len = hba->desc_size[QUERY_DESC_IDN_UNIT];
+       u8 lun = ufshcd_scsi_to_upiu_lun(sdev->lun);
+       u8 lun_qdepth = hba->nutrs;
+       u8 *desc_buf;
+       int ret;
+       desc_buf = kzalloc(len, GFP_KERNEL);
+       if (!desc_buf)
+               goto set_qdepth;
+       ret = ufshcd_read_unit_desc_param(hba, lun, 0, desc_buf, len);
+       if (ret < 0) {
+               if (ret == -EOPNOTSUPP)
+                       /* If LU doesn't support unit descriptor, its queue depth is set to 1 */
+                       lun_qdepth = 1;
+               kfree(desc_buf);
+               goto set_qdepth;
+       }
+       if (desc_buf[UNIT_DESC_PARAM_LU_Q_DEPTH]) {
+               /*
+                * In per-LU queueing architecture, bLUQueueDepth will not be 0, then we will
+                * use the smaller between UFSHCI CAP.NUTRS and UFS LU bLUQueueDepth
+                */
+               lun_qdepth = min_t(int, desc_buf[UNIT_DESC_PARAM_LU_Q_DEPTH], hba->nutrs);
+       }
+       /*
+        * According to UFS device specification, the write protection mode is only supported by
+        * normal LU, not supported by WLUN.
+        */
+       if (hba->dev_info.f_power_on_wp_en && lun < hba->dev_info.max_lu_supported &&
+           !hba->dev_info.is_lu_power_on_wp &&
+           desc_buf[UNIT_DESC_PARAM_LU_WR_PROTECT] == UFS_LU_POWER_ON_WP)
+               hba->dev_info.is_lu_power_on_wp = true;
+       kfree(desc_buf);
+ set_qdepth:
+       /*
+        * For WLUNs that don't support unit descriptor, queue depth is set to 1. For LUs whose
+        * bLUQueueDepth == 0, the queue depth is set to a maximum value that host can queue.
+        */
+       dev_dbg(hba->dev, "Set LU %x queue depth %d\n", lun, lun_qdepth);
+       scsi_change_queue_depth(sdev, lun_qdepth);
+ }
  /**
   * ufshcd_slave_alloc - handle initial SCSI device configurations
   * @sdev: pointer to SCSI device
@@@ -5017,9 -4981,7 +4981,7 @@@ static int ufshcd_slave_alloc(struct sc
        /* WRITE_SAME command is not supported */
        sdev->no_write_same = 1;
  
-       ufshcd_set_queue_depth(sdev);
-       ufshcd_get_lu_power_on_wp_status(hba, sdev);
+       ufshcd_lu_init(hba, sdev);
  
        ufshcd_setup_links(hba, sdev);
  
@@@ -5382,6 -5344,26 +5344,26 @@@ static void __ufshcd_transfer_req_compl
        }
  }
  
+ /* Any value that is not an existing queue number is fine for this constant. */
+ enum {
+       UFSHCD_POLL_FROM_INTERRUPT_CONTEXT = -1
+ };
+ static void ufshcd_clear_polled(struct ufs_hba *hba,
+                               unsigned long *completed_reqs)
+ {
+       int tag;
+       for_each_set_bit(tag, completed_reqs, hba->nutrs) {
+               struct scsi_cmnd *cmd = hba->lrb[tag].cmd;
+               if (!cmd)
+                       continue;
+               if (scsi_cmd_to_rq(cmd)->cmd_flags & REQ_POLLED)
+                       __clear_bit(tag, completed_reqs);
+       }
+ }
  /*
   * Returns > 0 if one or more commands have been completed or 0 if no
   * requests have been completed.
@@@ -5398,13 -5380,17 +5380,17 @@@ static int ufshcd_poll(struct Scsi_Hos
        WARN_ONCE(completed_reqs & ~hba->outstanding_reqs,
                  "completed: %#lx; outstanding: %#lx\n", completed_reqs,
                  hba->outstanding_reqs);
+       if (queue_num == UFSHCD_POLL_FROM_INTERRUPT_CONTEXT) {
+               /* Do not complete polled requests from interrupt context. */
+               ufshcd_clear_polled(hba, &completed_reqs);
+       }
        hba->outstanding_reqs &= ~completed_reqs;
        spin_unlock_irqrestore(&hba->outstanding_lock, flags);
  
        if (completed_reqs)
                __ufshcd_transfer_req_compl(hba, completed_reqs);
  
-       return completed_reqs;
+       return completed_reqs != 0;
  }
  
  /**
@@@ -5435,7 -5421,7 +5421,7 @@@ static irqreturn_t ufshcd_transfer_req_
         * Ignore the ufshcd_poll() return value and return IRQ_HANDLED since we
         * do not want polling to trigger spurious interrupt complaints.
         */
-       ufshcd_poll(hba->host, 0);
+       ufshcd_poll(hba->host, UFSHCD_POLL_FROM_INTERRUPT_CONTEXT);
  
        return IRQ_HANDLED;
  }
@@@ -6199,6 -6185,38 +6185,38 @@@ static bool ufshcd_is_pwr_mode_restore_
        return false;
  }
  
+ static bool ufshcd_abort_all(struct ufs_hba *hba)
+ {
+       bool needs_reset = false;
+       int tag, ret;
+       /* Clear pending transfer requests */
+       for_each_set_bit(tag, &hba->outstanding_reqs, hba->nutrs) {
+               ret = ufshcd_try_to_abort_task(hba, tag);
+               dev_err(hba->dev, "Aborting tag %d / CDB %#02x %s\n", tag,
+                       hba->lrb[tag].cmd ? hba->lrb[tag].cmd->cmnd[0] : -1,
+                       ret ? "failed" : "succeeded");
+               if (ret) {
+                       needs_reset = true;
+                       goto out;
+               }
+       }
+       /* Clear pending task management requests */
+       for_each_set_bit(tag, &hba->outstanding_tasks, hba->nutmrs) {
+               if (ufshcd_clear_tm_cmd(hba, tag)) {
+                       needs_reset = true;
+                       goto out;
+               }
+       }
+ out:
+       /* Complete the requests that are cleared by s/w */
+       ufshcd_complete_requests(hba);
+       return needs_reset;
+ }
  /**
   * ufshcd_err_handler - handle UFS errors that require s/w attention
   * @work: pointer to work structure
@@@ -6210,10 -6228,7 +6228,7 @@@ static void ufshcd_err_handler(struct w
        unsigned long flags;
        bool needs_restore;
        bool needs_reset;
-       bool err_xfer;
-       bool err_tm;
        int pmc_err;
-       int tag;
  
        hba = container_of(work, struct ufs_hba, eh_work);
  
  again:
        needs_restore = false;
        needs_reset = false;
-       err_xfer = false;
-       err_tm = false;
  
        if (hba->ufshcd_state != UFSHCD_STATE_ERROR)
                hba->ufshcd_state = UFSHCD_STATE_RESET;
        hba->silence_err_logs = true;
        /* release lock as clear command might sleep */
        spin_unlock_irqrestore(hba->host->host_lock, flags);
-       /* Clear pending transfer requests */
-       for_each_set_bit(tag, &hba->outstanding_reqs, hba->nutrs) {
-               if (ufshcd_try_to_abort_task(hba, tag)) {
-                       err_xfer = true;
-                       goto lock_skip_pending_xfer_clear;
-               }
-               dev_err(hba->dev, "Aborted tag %d / CDB %#02x\n", tag,
-                       hba->lrb[tag].cmd ? hba->lrb[tag].cmd->cmnd[0] : -1);
-       }
-       /* Clear pending task management requests */
-       for_each_set_bit(tag, &hba->outstanding_tasks, hba->nutmrs) {
-               if (ufshcd_clear_tm_cmd(hba, tag)) {
-                       err_tm = true;
-                       goto lock_skip_pending_xfer_clear;
-               }
-       }
  
- lock_skip_pending_xfer_clear:
-       /* Complete the requests that are cleared by s/w */
-       ufshcd_complete_requests(hba);
+       needs_reset = ufshcd_abort_all(hba);
  
        spin_lock_irqsave(hba->host->host_lock, flags);
        hba->silence_err_logs = false;
-       if (err_xfer || err_tm) {
-               needs_reset = true;
+       if (needs_reset)
                goto do_reset;
-       }
  
        /*
         * After all reqs and tasks are cleared from doorbell,
        }
  }
  
+ static enum scsi_timeout_action ufshcd_eh_timed_out(struct scsi_cmnd *scmd)
+ {
+       struct ufs_hba *hba = shost_priv(scmd->device->host);
+       if (!hba->system_suspending) {
+               /* Activate the error handler in the SCSI core. */
+               return SCSI_EH_NOT_HANDLED;
+       }
+       /*
+        * If we get here we know that no TMFs are outstanding and also that
+        * the only pending command is a START STOP UNIT command. Handle the
+        * timeout of that command directly to prevent a deadlock between
+        * ufshcd_set_dev_pwr_mode() and ufshcd_err_handler().
+        */
+       ufshcd_link_recovery(hba);
+       dev_info(hba->dev, "%s() finished; outstanding_tasks = %#lx.\n",
+                __func__, hba->outstanding_tasks);
+       return hba->outstanding_reqs ? SCSI_EH_RESET_TIMER : SCSI_EH_DONE;
+ }
  static const struct attribute_group *ufshcd_driver_groups[] = {
        &ufs_sysfs_unit_descriptor_group,
        &ufs_sysfs_lun_attributes_group,
@@@ -8327,6 -8341,7 +8341,7 @@@ static struct scsi_host_template ufshcd
        .eh_abort_handler       = ufshcd_abort,
        .eh_device_reset_handler = ufshcd_eh_device_reset_handler,
        .eh_host_reset_handler   = ufshcd_eh_host_reset_handler,
+       .eh_timed_out           = ufshcd_eh_timed_out,
        .this_id                = -1,
        .sg_tablesize           = SG_ALL,
        .cmd_per_lun            = UFSHCD_CMD_PER_LUN,
@@@ -8730,6 -8745,40 +8745,40 @@@ static void ufshcd_hba_exit(struct ufs_
        }
  }
  
+ static int ufshcd_execute_start_stop(struct scsi_device *sdev,
+                                    enum ufs_dev_pwr_mode pwr_mode,
+                                    struct scsi_sense_hdr *sshdr)
+ {
+       unsigned char cdb[6] = { START_STOP, 0, 0, 0, pwr_mode << 4, 0 };
+       struct request *req;
+       struct scsi_cmnd *scmd;
+       int ret;
+       req = scsi_alloc_request(sdev->request_queue, REQ_OP_DRV_IN,
+                                BLK_MQ_REQ_PM);
+       if (IS_ERR(req))
+               return PTR_ERR(req);
+       scmd = blk_mq_rq_to_pdu(req);
+       scmd->cmd_len = COMMAND_SIZE(cdb[0]);
+       memcpy(scmd->cmnd, cdb, scmd->cmd_len);
+       scmd->allowed = 0/*retries*/;
+       scmd->flags |= SCMD_FAIL_IF_RECOVERING;
+       req->timeout = 1 * HZ;
+       req->rq_flags |= RQF_PM | RQF_QUIET;
+       blk_execute_rq(req, /*at_head=*/true);
+       if (sshdr)
+               scsi_normalize_sense(scmd->sense_buffer, scmd->sense_len,
+                                    sshdr);
+       ret = scmd->result;
+       blk_mq_free_request(req);
+       return ret;
+ }
  /**
   * ufshcd_set_dev_pwr_mode - sends START STOP UNIT command to set device
   *                         power mode
  static int ufshcd_set_dev_pwr_mode(struct ufs_hba *hba,
                                     enum ufs_dev_pwr_mode pwr_mode)
  {
-       unsigned char cmd[6] = { START_STOP };
        struct scsi_sense_hdr sshdr;
        struct scsi_device *sdp;
        unsigned long flags;
        int ret, retries;
-       unsigned long deadline;
-       int32_t remaining;
  
        spin_lock_irqsave(hba->host->host_lock, flags);
        sdp = hba->ufs_device_wlun;
-       if (sdp) {
+       if (sdp && scsi_device_online(sdp))
                ret = scsi_device_get(sdp);
-               if (!ret && !scsi_device_online(sdp)) {
-                       ret = -ENODEV;
-                       scsi_device_put(sdp);
-               }
-       } else {
+       else
                ret = -ENODEV;
-       }
        spin_unlock_irqrestore(hba->host->host_lock, flags);
  
        if (ret)
         */
        hba->host->eh_noresume = 1;
  
-       cmd[4] = pwr_mode << 4;
        /*
         * Current function would be generally called from the power management
         * callbacks hence set the RQF_PM flag so that it doesn't resume the
         * already suspended childs.
         */
-       deadline = jiffies + 10 * HZ;
        for (retries = 3; retries > 0; --retries) {
-               ret = -ETIMEDOUT;
-               remaining = deadline - jiffies;
-               if (remaining <= 0)
-                       break;
-               ret = scsi_execute(sdp, cmd, DMA_NONE, NULL, 0, NULL, &sshdr,
-                                  remaining / HZ, 0, 0, RQF_PM, NULL);
-               if (!scsi_status_is_check_condition(ret) ||
-                               !scsi_sense_valid(&sshdr) ||
-                               sshdr.sense_key != UNIT_ATTENTION)
+               ret = ufshcd_execute_start_stop(sdp, pwr_mode, &sshdr);
+               /*
+                * scsi_execute() only returns a negative value if the request
+                * queue is dying.
+                */
+               if (ret <= 0)
                        break;
        }
        if (ret) {
                                scsi_print_sense_hdr(sdp, NULL, &sshdr);
                        ret = -EIO;
                }
-       }
-       if (!ret)
+       } else {
                hba->curr_dev_pwr_mode = pwr_mode;
+       }
  
        scsi_device_put(sdp);
        hba->host->eh_noresume = 0;
  
  static int ufshcd_link_state_transition(struct ufs_hba *hba,
                                        enum uic_link_state req_link_state,
-                                       int check_for_bkops)
+                                       bool check_for_bkops)
  {
        int ret = 0;
  
@@@ -8966,7 -9000,7 +9000,7 @@@ static void ufshcd_hba_vreg_set_hpm(str
  static int __ufshcd_wl_suspend(struct ufs_hba *hba, enum ufs_pm_op pm_op)
  {
        int ret = 0;
-       int check_for_bkops;
+       bool check_for_bkops;
        enum ufs_pm_level pm_lvl;
        enum ufs_dev_pwr_mode req_dev_pwr_mode;
        enum uic_link_state req_link_state;
@@@ -9259,6 -9293,7 +9293,7 @@@ static int ufshcd_wl_suspend(struct dev
  
        hba = shost_priv(sdev->host);
        down(&hba->host_sem);
+       hba->system_suspending = true;
  
        if (pm_runtime_suspended(dev))
                goto out;
@@@ -9300,6 -9335,7 +9335,7 @@@ out
                hba->curr_dev_pwr_mode, hba->uic_link_state);
        if (!ret)
                hba->is_sys_suspended = false;
+       hba->system_suspending = false;
        up(&hba->host_sem);
        return ret;
  }
@@@ -9544,7 -9580,6 +9580,7 @@@ void ufshcd_remove(struct ufs_hba *hba
        ufshpb_remove(hba);
        ufs_sysfs_remove_nodes(hba->dev);
        blk_mq_destroy_queue(hba->tmf_queue);
 +      blk_put_queue(hba->tmf_queue);
        blk_mq_free_tag_set(&hba->tmf_tag_set);
        scsi_remove_host(hba->host);
        /* disable interrupts */
@@@ -9841,7 -9876,6 +9877,7 @@@ int ufshcd_init(struct ufs_hba *hba, vo
  
  free_tmf_queue:
        blk_mq_destroy_queue(hba->tmf_queue);
 +      blk_put_queue(hba->tmf_queue);
  free_tmf_tag_set:
        blk_mq_free_tag_set(&hba->tmf_tag_set);
  out_remove_scsi_host:
index b7f412d0f3019ffdd2d9143fd8dbe1f615ec9917,be3fb24b93d8e56df343bee372275f766cc8297d..994f4ac9df5a51bada1444877eee7c9983db2ca8
@@@ -233,11 -233,6 +233,6 @@@ next_srgn
        rgn = hpb->rgn_tbl + rgn_idx;
        srgn = rgn->srgn_tbl + srgn_idx;
  
-       if (likely(!srgn->is_last))
-               bitmap_len = hpb->entries_per_srgn;
-       else
-               bitmap_len = hpb->last_srgn_entries;
        if (!ufshpb_is_valid_srgn(rgn, srgn))
                return true;
  
                return true;
        }
  
+       if (likely(!srgn->is_last))
+               bitmap_len = hpb->entries_per_srgn;
+       else
+               bitmap_len = hpb->last_srgn_entries;
        if ((srgn_offset + cnt) > bitmap_len)
                bit_len = bitmap_len - srgn_offset;
        else
@@@ -383,7 -383,7 +383,7 @@@ int ufshpb_prep(struct ufs_hba *hba, st
        rgn = hpb->rgn_tbl + rgn_idx;
        srgn = rgn->srgn_tbl + srgn_idx;
  
 -      /* If command type is WRITE or DISCARD, set bitmap as drity */
 +      /* If command type is WRITE or DISCARD, set bitmap as dirty */
        if (ufshpb_is_write_or_discard(cmd)) {
                ufshpb_iterate_rgn(hpb, rgn_idx, srgn_idx, srgn_offset,
                                   transfer_len, true);
@@@ -616,7 -616,7 +616,7 @@@ static void ufshpb_activate_subregion(s
  static enum rq_end_io_ret ufshpb_umap_req_compl_fn(struct request *req,
                                                   blk_status_t error)
  {
 -      struct ufshpb_req *umap_req = (struct ufshpb_req *)req->end_io_data;
 +      struct ufshpb_req *umap_req = req->end_io_data;
  
        ufshpb_put_req(umap_req->hpb, umap_req);
        return RQ_END_IO_NONE;
  static enum rq_end_io_ret ufshpb_map_req_compl_fn(struct request *req,
                                                  blk_status_t error)
  {
 -      struct ufshpb_req *map_req = (struct ufshpb_req *) req->end_io_data;
 +      struct ufshpb_req *map_req = req->end_io_data;
        struct ufshpb_lu *hpb = map_req->hpb;
        struct ufshpb_subregion *srgn;
        unsigned long flags;
@@@ -2289,7 -2289,7 +2289,7 @@@ static bool ufshpb_check_hpb_reset_quer
        /* wait for the device to complete HPB reset query */
        for (try = 0; try < HPB_RESET_REQ_RETRIES; try++) {
                dev_dbg(hba->dev,
-                       "%s start flag reset polling %d times\n",
+                       "%s: start flag reset polling %d times\n",
                        __func__, try);
  
                /* Poll fHpbReset flag to be cleared */
  
                if (err) {
                        dev_err(hba->dev,
-                               "%s reading fHpbReset flag failed with error %d\n",
+                               "%s: reading fHpbReset flag failed with error %d\n",
                                __func__, err);
                        return flag_res;
                }
        }
        if (flag_res) {
                dev_err(hba->dev,
-                       "%s fHpbReset was not cleared by the device\n",
+                       "%s: fHpbReset was not cleared by the device\n",
                        __func__);
        }
  out:
index 919ed4137f9ab946881c0cde8958faba578d0158,cb722225b3bcdfbcfccbd05de14c60daf61d75d6..fbe5bdfe4d6e60f51c7bf461f560742ee8112b63
@@@ -205,10 -205,10 +205,10 @@@ enum sam_status 
  };
  
  #define STATUS_MASK         0xfe
 +
  /*
   *  SENSE KEYS
   */
 -
  #define NO_SENSE            0x00
  #define RECOVERED_ERROR     0x01
  #define NOT_READY           0x02
  #define ABORTED_COMMAND     0x0b
  #define VOLUME_OVERFLOW     0x0d
  #define MISCOMPARE          0x0e
 -
 +#define COMPLETED         0x0f
  
  /*
   *  DEVICE TYPES
@@@ -342,4 -342,14 +342,14 @@@ enum scsi_version_descriptor 
        SCSI_VERSION_DESCRIPTOR_SRP     = 0x0940
  };
  
+ enum scsi_support_opcode {
+       SCSI_SUPPORT_NO_INFO            = 0,
+       SCSI_SUPPORT_NOT_SUPPORTED      = 1,
+       SCSI_SUPPORT_FULL               = 3,
+       SCSI_SUPPORT_VENDOR             = 5,
+ };
+ #define SCSI_CONTROL_MASK 0
+ #define SCSI_GROUP_NUMBER_MASK 0
  #endif /* _SCSI_PROTO_H_ */
This page took 0.240061 seconds and 4 git commands to generate.