WSL2-Linux-Kernel/drivers
Manivannan Sadhasivam 1be49ae16f scsi: ufs: qcom: Add a readl() to make sure ref_clk gets enabled
commit 8eecddfca3 upstream.

In ufs_qcom_dev_ref_clk_ctrl(), it was noted that the ref_clk needs to be
stable for at least 1us. Even though there is wmb() to make sure the write
gets "completed", there is no guarantee that the write actually reached the
UFS device. There is a good chance that the write could be stored in a
Write Buffer (WB). In that case, even though the CPU waits for 1us, the
ref_clk might not be stable for that period.

So lets do a readl() to make sure that the previous write has reached the
UFS device before udelay().

Also, the wmb() after writel_relaxed() is not really needed. Both writel()
and readl() are ordered on all architectures and the CPU won't speculate
instructions after readl() due to the in-built control dependency with read
value on weakly ordered architectures. So it can be safely removed.

Link: https://lore.kernel.org/r/20220504084212.11605-4-manivannan.sadhasivam@linaro.org
Fixes: f06fcc7155 ("scsi: ufs-qcom: add QUniPro hardware support and power optimizations")
Cc: stable@vger.kernel.org
Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-06-09 10:23:22 +02:00
..
accessibility speakup-dectlk: Restore pitch setting 2022-02-16 12:56:37 +01:00
acpi ACPI: property: Release subnode properties with data nodes 2022-06-09 10:23:20 +02:00
amba
android
ata ata: pata_marvell: Check the 'bmdma_addr' beforing reading 2022-04-27 14:38:58 +02:00
atm atm: eni: Add check for dma_map_single 2022-03-23 09:16:41 +01:00
auxdisplay auxdisplay: lcd2s: Use proper API to free the instance of charlcd object 2022-03-08 19:12:47 +01:00
base drivers/base/memory: fix an unlikely reference counting issue in __add_memory_block() 2022-06-09 10:23:09 +02:00
bcma
block virtio_blk: fix the discard_granularity and discard_alignment queue limits 2022-06-09 10:22:53 +02:00
bluetooth Bluetooth: hci_qca: Use del_timer_sync() before freeing 2022-06-06 08:43:40 +02:00
bus bus: sunxi-rsb: Fix the return value of sunxi_rsb_device_create() 2022-05-09 09:14:37 +02:00
cdrom
char hwrng: omap3-rom - fix using wrong clk_disable() in omap_rom_rng_runtime_resume() 2022-06-09 10:23:11 +02:00
clk clk: at91: generated: consider range when calculating best rate 2022-05-25 09:57:32 +02:00
clocksource clocksource: acpi_pm: fix return value of __setup handler 2022-04-08 14:23:09 +02:00
comedi
connector
counter
cpufreq cpufreq: mediatek: Unregister platform device on exit 2022-06-09 10:23:14 +02:00
cpuidle cpuidle: PSCI: Improve support for suspend-to-RAM for PSCI OSI mode 2022-06-09 10:22:33 +02:00
crypto crypto: sun8i-ss - handle zero sized sg 2022-06-09 10:23:11 +02:00
cxl cxl/regs: Fix size of CXL Capability Header Register 2022-04-08 14:23:30 +02:00
dax dax: make sure inodes are flushed before destroy cache 2022-04-08 14:23:31 +02:00
dca
devfreq PM / devfreq: rk3399_dmc: Disable edev on remove() 2022-06-09 10:22:41 +02:00
dio
dma dmaengine: stm32-mdma: fix chan initialization in stm32_mdma_irq_handler() 2022-06-09 10:23:15 +02:00
dma-buf dma-buf: ensure unique directory name for dmabuf stats 2022-05-25 09:57:29 +02:00
edac EDAC/dmc520: Don't print an error for each unconfigured interrupt line 2022-06-09 10:22:47 +02:00
eisa
extcon
firewire firewire: core: extend card->lock in fw_core_handle_bus_reset 2022-05-12 12:30:05 +02:00
firmware firmware: arm_ffa: Remove incorrect assignment of driver_data 2022-06-09 10:23:09 +02:00
fpga
fsi fsi: Aspeed: Fix a potential double free 2022-04-08 14:23:44 +02:00
gnss
gpio pinctrl/rockchip: support deferring other gpio params 2022-06-09 10:23:07 +02:00
gpu drm/amdgpu: add beige goby PCI ID 2022-06-09 10:23:21 +02:00
greybus greybus: svc: fix an error handling bug in gb_svc_hello() 2022-04-08 14:22:50 +02:00
hid HID: amd_sfh: Modify the hid name 2022-06-09 10:22:56 +02:00
hsi
hv Drivers: hv: vmbus: Fix handling of messages with transaction ID of zero 2022-06-09 10:23:07 +02:00
hwmon hwmon: (pmbus) Check PEC support before reading other registers 2022-06-09 10:23:02 +02:00
hwspinlock
hwtracing coresight: syscfg: Fix memleak on registration failure in cscfg_create_device 2022-04-08 14:22:50 +02:00
i2c i2c: rcar: fix PM ref counts in probe error paths 2022-06-09 10:23:16 +02:00
i3c i3c: master: dw: check return of dw_i3c_master_get_free_pos() 2022-03-08 19:12:37 +01:00
idle
iio iio:imu:bmi160: disable regulator in error path 2022-05-09 09:14:31 +02:00
infiniband RDMA/hfi1: Prevent use of lock before it is initialized 2022-06-09 10:23:13 +02:00
input Input: stmfts - do not leave device disabled in stmfts_input_open 2022-06-09 10:23:13 +02:00
interconnect interconnect: Restore sync state by ignoring ipa-virt in provider count 2022-05-18 10:26:53 +02:00
iommu iommu/amd: Increase timeout waiting for GA log enablement 2022-06-09 10:23:16 +02:00
ipack
irqchip irqchip/aspeed-scu-ic: Fix irq_of_parse_and_map() return value 2022-06-09 10:22:54 +02:00
isdn isdn: hfcpci: check the return value of dma_set_mask() in setup_hw() 2022-03-16 14:23:36 +01:00
leds
macintosh macintosh: via-pmu and via-cuda need RTC_LIB 2022-06-09 10:23:12 +02:00
mailbox mailbox: forward the hrtimer if not queued and under a lock 2022-06-09 10:23:12 +02:00
mcb
md md/bitmap: don't set sb values if can't pass sanity check 2022-06-09 10:22:33 +02:00
media media: i2c: ov5648: fix wrong pointer passed to IS_ERR() and PTR_ERR() 2022-06-09 10:22:59 +02:00
memory memory: samsung: exynos5422-dmc: Avoid some over memory allocation 2022-06-09 10:23:04 +02:00
memstick
message
mfd mfd: davinci_voicecodec: Fix possible null-ptr-deref davinci_vc_probe() 2022-06-09 10:23:12 +02:00
misc misc: ocxl: fix possible double free in ocxl_file_register_afu 2022-06-09 10:23:06 +02:00
mmc drivers: mmc: sdhci_am654: Add the quirk to set TESTCD bit 2022-06-09 10:22:34 +02:00
most
mtd mtd: rawnand: intel: fix possible null-ptr-deref in ebu_nand_probe() 2022-06-09 10:22:51 +02:00
mux
net iwlwifi: mvm: fix assert 1F04 upon reconfig 2022-06-09 10:23:18 +02:00
nfc NFC: hci: fix sleep in atomic context bugs in nfc_hci_hcp_message_tx 2022-06-09 10:23:01 +02:00
ntb ntb: intel: fix port config status offset for SPR 2022-03-08 19:12:44 +01:00
nubus
nvdimm nvdimm: Allow overwrite in the presence of disabled dimms 2022-06-09 10:23:08 +02:00
nvme nvme: set dma alignment to dword 2022-06-09 10:22:58 +02:00
nvmem nvmem: core: Fix a conflict between MTD and NVMEM on wp-gpios property 2022-03-02 11:48:06 +01:00
of of: overlay: do not break notify on NOTIFY_{OK|STOP} 2022-06-09 10:22:50 +02:00
opp OPP: call of_node_put() on error path in _bandwidth_supported() 2022-06-09 10:23:13 +02:00
parisc parisc: Fix CPU affinity for Lasi, WAX and Dino chips 2022-04-13 20:59:14 +02:00
parport
pci PCI: qcom: Fix unbalanced PHY init on probe errors 2022-06-09 10:23:21 +02:00
pcmcia
perf arm_pmu: Validate single/group leader events 2022-04-27 14:39:00 +02:00
phy phy: amlogic: fix error path in phy_g12a_usb3_pcie_probe() 2022-05-09 09:14:34 +02:00
pinctrl pinctrl: renesas: core: Fix possible null-ptr-deref in sh_pfc_map_resources() 2022-06-09 10:23:09 +02:00
platform MIPS: Loongson: Use hwmon_device_register_with_groups() to register hwmon 2022-06-09 10:23:14 +02:00
pnp
power power: supply: axp288-charger: Set Vhold to 4.4V 2022-04-13 20:59:05 +02:00
powercap
pps pps: clients: gpio: Propagate return value from pps_gpio_probe 2022-04-08 14:23:44 +02:00
ps3
ptp ptp: replace snprintf with sysfs_emit 2022-04-13 20:59:01 +02:00
pwm pwm: lpc18xx-sct: Initialize driver data and hardware before pwmchip_add() 2022-04-08 14:23:44 +02:00
rapidio
ras
regulator regulator: scmi: Fix refcount leak in scmi_regulator_probe 2022-06-09 10:23:00 +02:00
remoteproc remoteproc: qcom_q6v5_mss: Fix some leaks in q6v5_alloc_memory_region 2022-04-08 14:23:47 +02:00
reset reset: tegra-bpmp: Restore Handle errors in BPMP response 2022-04-27 14:38:55 +02:00
rpmsg
rtc rtc: mc146818-lib: Fix the AltCentury for AMD platforms 2022-05-25 09:57:26 +02:00
s390 s390/stp: clock_delta should be signed 2022-06-09 10:23:21 +02:00
sbus
scsi scsi: ufs: qcom: Add a readl() to make sure ref_clk gets enabled 2022-06-09 10:23:22 +02:00
sh
siox
slimbus slimbus: qcom: Fix IRQ check in qcom_slim_probe 2022-05-18 10:26:55 +02:00
soc soc: bcm: Check for NULL return of devm_kzalloc() 2022-06-09 10:23:08 +02:00
soundwire ASoC: Intel: sof_sdw: fix quirks for 2022 HP Spectre x360 13" 2022-04-08 14:24:02 +02:00
spi spi: spi-fsl-qspi: check return value after calling platform_get_resource_byname() 2022-06-09 10:22:55 +02:00
spmi
ssb
staging staging: r8188eu: prevent ->Ssid overflow in rtw_wx_set_scan() 2022-06-09 10:23:21 +02:00
target target: remove an incorrect unmap zeroes data deduction 2022-06-09 10:22:47 +02:00
tc
tee optee: use driver internal tee_context for some rpc 2022-03-02 11:47:51 +01:00
thermal thermal/drivers/imx_sc_thermal: Fix refcount leak in imx_sc_thermal_probe 2022-06-09 10:23:01 +02:00
thunderbolt
tty tty: goldfish: Introduce gf_ioread32()/gf_iowrite32() 2022-06-09 10:23:20 +02:00
uio
usb xhci: Allow host runtime PM as default for Intel Alder Lake N xHCI 2022-06-09 10:22:29 +02:00
vdpa vdpa: mlx5: prevent cvq work from hogging CPU 2022-04-13 20:59:15 +02:00
vfio vfio/pci: Fix vf_token mechanism when device-specific VF drivers are used 2022-04-20 09:34:13 +02:00
vhost Fix double fget() in vhost_net_set_backend() 2022-05-25 09:57:27 +02:00
video video: fbdev: vesafb: Fix a use-after-free due early fb_info cleanup 2022-06-09 10:23:16 +02:00
virt virt: acrn: fix a memory leak in acrn_dev_ioctl() 2022-04-08 14:23:50 +02:00
virtio virtio: acknowledge all features before access 2022-03-16 14:23:43 +01:00
visorbus
vlynq
vme
w1 w1: w1_therm: fixes w1_seq for ds28ea00 sensors 2022-04-13 20:59:11 +02:00
watchdog Watchdog: sp5100_tco: Enable Family 17h+ CPUs 2022-05-25 09:57:23 +02:00
xen swiotlb: Support aligned swiotlb buffers 2022-04-08 14:24:17 +02:00
zorro
Kconfig
Makefile