All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] scsi: ufs: Split the drivers/scsi/ufs directory
@ 2022-05-11 21:25 Bart Van Assche
  2022-05-12 15:59 ` kernel test robot
                   ` (5 more replies)
  0 siblings, 6 replies; 11+ messages in thread
From: Bart Van Assche @ 2022-05-11 21:25 UTC (permalink / raw)
  To: Martin K . Petersen
  Cc: Jaegeuk Kim, Adrian Hunter, linux-scsi, Bart Van Assche,
	Avri Altman, Bean Huo, Bjorn Andersson, Keoseong Park

Split the drivers/scsi/ufs directory into 'core' and 'host' directories
under the drivers/ufs/ directory. Move shared header files into the
include/ufs/ directory. This separation makes it clear which header
files UFS drivers are allowed to include (include/ufs/*.h) and which
header files UFS drivers are not allowed to include
(drivers/ufs/core/*.h).

Update the MAINTAINERS file. Add myself as a UFS reviewer.

Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Avri Altman <avri.altman@wdc.com>
Cc: Bean Huo <beanhuo@micron.com>
Cc: Bjorn Andersson <bjorn.andersson@linaro.org>
Cc: Keoseong Park <keosung.park@samsung.com>
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
---
 MAINTAINERS                                   | 10 ++-
 drivers/Kconfig                               |  2 +
 drivers/Makefile                              |  1 +
 drivers/scsi/Kconfig                          |  1 -
 drivers/scsi/Makefile                         |  1 -
 drivers/ufs/Kconfig                           | 30 ++++++++
 drivers/ufs/Makefile                          |  5 ++
 drivers/ufs/core/Kconfig                      | 60 +++++++++++++++
 drivers/ufs/core/Makefile                     | 10 +++
 drivers/{scsi/ufs => ufs/core}/ufs-debugfs.c  |  2 +-
 drivers/{scsi/ufs => ufs/core}/ufs-debugfs.h  |  0
 .../ufs => ufs/core}/ufs-fault-injection.c    |  0
 .../ufs => ufs/core}/ufs-fault-injection.h    |  0
 drivers/{scsi/ufs => ufs/core}/ufs-hwmon.c    |  2 +-
 drivers/{scsi/ufs => ufs/core}/ufs-sysfs.c    |  2 +-
 drivers/{scsi/ufs => ufs/core}/ufs-sysfs.h    |  0
 drivers/{scsi/ufs => ufs/core}/ufs_bsg.c      |  2 +-
 drivers/{scsi/ufs => ufs/core}/ufs_bsg.h      |  0
 .../{scsi/ufs => ufs/core}/ufshcd-crypto.c    |  2 +-
 .../{scsi/ufs => ufs/core}/ufshcd-crypto.h    |  4 +-
 drivers/{scsi/ufs => ufs/core}/ufshcd-priv.h  |  2 +-
 drivers/{scsi/ufs => ufs/core}/ufshcd.c       |  4 +-
 drivers/{scsi/ufs => ufs/core}/ufshpb.c       |  2 +-
 drivers/{scsi/ufs => ufs/core}/ufshpb.h       |  0
 drivers/{scsi/ufs => ufs/host}/Kconfig        | 75 +------------------
 drivers/{scsi/ufs => ufs/host}/Makefile       | 12 ---
 drivers/{scsi/ufs => ufs/host}/cdns-pltfrm.c  |  0
 .../{scsi/ufs => ufs/host}/tc-dwc-g210-pci.c  |  2 +-
 .../ufs => ufs/host}/tc-dwc-g210-pltfrm.c     |  0
 drivers/{scsi/ufs => ufs/host}/tc-dwc-g210.c  |  4 +-
 drivers/{scsi/ufs => ufs/host}/tc-dwc-g210.h  |  0
 drivers/{scsi/ufs => ufs/host}/ti-j721e-ufs.c |  0
 drivers/{scsi/ufs => ufs/host}/ufs-exynos.c   |  6 +-
 drivers/{scsi/ufs => ufs/host}/ufs-exynos.h   |  0
 drivers/{scsi/ufs => ufs/host}/ufs-hisi.c     |  8 +-
 drivers/{scsi/ufs => ufs/host}/ufs-hisi.h     |  0
 .../ufs => ufs/host}/ufs-mediatek-trace.h     |  2 +-
 drivers/{scsi/ufs => ufs/host}/ufs-mediatek.c |  6 +-
 drivers/{scsi/ufs => ufs/host}/ufs-mediatek.h |  0
 drivers/{scsi/ufs => ufs/host}/ufs-qcom-ice.c |  0
 drivers/{scsi/ufs => ufs/host}/ufs-qcom.c     |  8 +-
 drivers/{scsi/ufs => ufs/host}/ufs-qcom.h     |  2 +-
 drivers/{scsi/ufs => ufs/host}/ufshcd-dwc.c   |  4 +-
 drivers/{scsi/ufs => ufs/host}/ufshcd-dwc.h   |  2 +-
 drivers/{scsi/ufs => ufs/host}/ufshcd-pci.c   |  2 +-
 .../{scsi/ufs => ufs/host}/ufshcd-pltfrm.c    |  4 +-
 .../{scsi/ufs => ufs/host}/ufshcd-pltfrm.h    |  2 +-
 drivers/{scsi/ufs => ufs/host}/ufshci-dwc.h   |  0
 {drivers/scsi => include}/ufs/ufs.h           |  0
 {drivers/scsi => include}/ufs/ufs_quirks.h    |  0
 {drivers/scsi => include}/ufs/ufshcd.h        |  8 +-
 {drivers/scsi => include}/ufs/ufshci.h        |  0
 {drivers/scsi => include}/ufs/unipro.h        |  0
 53 files changed, 156 insertions(+), 133 deletions(-)
 create mode 100644 drivers/ufs/Kconfig
 create mode 100644 drivers/ufs/Makefile
 create mode 100644 drivers/ufs/core/Kconfig
 create mode 100644 drivers/ufs/core/Makefile
 rename drivers/{scsi/ufs => ufs/core}/ufs-debugfs.c (99%)
 rename drivers/{scsi/ufs => ufs/core}/ufs-debugfs.h (100%)
 rename drivers/{scsi/ufs => ufs/core}/ufs-fault-injection.c (100%)
 rename drivers/{scsi/ufs => ufs/core}/ufs-fault-injection.h (100%)
 rename drivers/{scsi/ufs => ufs/core}/ufs-hwmon.c (99%)
 rename drivers/{scsi/ufs => ufs/core}/ufs-sysfs.c (99%)
 rename drivers/{scsi/ufs => ufs/core}/ufs-sysfs.h (100%)
 rename drivers/{scsi/ufs => ufs/core}/ufs_bsg.c (99%)
 rename drivers/{scsi/ufs => ufs/core}/ufs_bsg.h (100%)
 rename drivers/{scsi/ufs => ufs/core}/ufshcd-crypto.c (99%)
 rename drivers/{scsi/ufs => ufs/core}/ufshcd-crypto.h (97%)
 rename drivers/{scsi/ufs => ufs/core}/ufshcd-priv.h (99%)
 rename drivers/{scsi/ufs => ufs/core}/ufshcd.c (99%)
 rename drivers/{scsi/ufs => ufs/core}/ufshpb.c (99%)
 rename drivers/{scsi/ufs => ufs/core}/ufshpb.h (100%)
 rename drivers/{scsi/ufs => ufs/host}/Kconfig (56%)
 rename drivers/{scsi/ufs => ufs/host}/Makefile (56%)
 rename drivers/{scsi/ufs => ufs/host}/cdns-pltfrm.c (100%)
 rename drivers/{scsi/ufs => ufs/host}/tc-dwc-g210-pci.c (99%)
 rename drivers/{scsi/ufs => ufs/host}/tc-dwc-g210-pltfrm.c (100%)
 rename drivers/{scsi/ufs => ufs/host}/tc-dwc-g210.c (99%)
 rename drivers/{scsi/ufs => ufs/host}/tc-dwc-g210.h (100%)
 rename drivers/{scsi/ufs => ufs/host}/ti-j721e-ufs.c (100%)
 rename drivers/{scsi/ufs => ufs/host}/ufs-exynos.c (99%)
 rename drivers/{scsi/ufs => ufs/host}/ufs-exynos.h (100%)
 rename drivers/{scsi/ufs => ufs/host}/ufs-hisi.c (99%)
 rename drivers/{scsi/ufs => ufs/host}/ufs-hisi.h (100%)
 rename drivers/{scsi/ufs => ufs/host}/ufs-mediatek-trace.h (93%)
 rename drivers/{scsi/ufs => ufs/host}/ufs-mediatek.c (99%)
 rename drivers/{scsi/ufs => ufs/host}/ufs-mediatek.h (100%)
 rename drivers/{scsi/ufs => ufs/host}/ufs-qcom-ice.c (100%)
 rename drivers/{scsi/ufs => ufs/host}/ufs-qcom.c (99%)
 rename drivers/{scsi/ufs => ufs/host}/ufs-qcom.h (99%)
 rename drivers/{scsi/ufs => ufs/host}/ufshcd-dwc.c (98%)
 rename drivers/{scsi/ufs => ufs/host}/ufshcd-dwc.h (95%)
 rename drivers/{scsi/ufs => ufs/host}/ufshcd-pci.c (99%)
 rename drivers/{scsi/ufs => ufs/host}/ufshcd-pltfrm.c (99%)
 rename drivers/{scsi/ufs => ufs/host}/ufshcd-pltfrm.h (98%)
 rename drivers/{scsi/ufs => ufs/host}/ufshci-dwc.h (100%)
 rename {drivers/scsi => include}/ufs/ufs.h (100%)
 rename {drivers/scsi => include}/ufs/ufs_quirks.h (100%)
 rename {drivers/scsi => include}/ufs/ufshcd.h (99%)
 rename {drivers/scsi => include}/ufs/ufshci.h (100%)
 rename {drivers/scsi => include}/ufs/unipro.h (100%)

diff --git a/MAINTAINERS b/MAINTAINERS
index ca9d56121974..483a57da1f16 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -2547,7 +2547,7 @@ F:	drivers/pci/controller/dwc/pcie-qcom.c
 F:	drivers/phy/qualcomm/
 F:	drivers/power/*/msm*
 F:	drivers/reset/reset-qcom-*
-F:	drivers/scsi/ufs/ufs-qcom*
+F:	drivers/ufs/host/ufs-qcom*
 F:	drivers/spi/spi-geni-qcom.c
 F:	drivers/spi/spi-qcom-qspi.c
 F:	drivers/spi/spi-qup.c
@@ -17558,6 +17558,7 @@ T:	git git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi.git
 T:	git git://git.kernel.org/pub/scm/linux/kernel/git/mkp/scsi.git
 F:	Documentation/devicetree/bindings/scsi/
 F:	drivers/scsi/
+F:	drivers/ufs/
 F:	include/scsi/
 
 SCSI TAPE DRIVER
@@ -20199,24 +20200,25 @@ F:	include/linux/visorbus.h
 UNIVERSAL FLASH STORAGE HOST CONTROLLER DRIVER
 R:	Alim Akhtar <alim.akhtar@samsung.com>
 R:	Avri Altman <avri.altman@wdc.com>
+R:	Bart Van Assche <bvanassche@acm.org>
 L:	linux-scsi@vger.kernel.org
 S:	Supported
 F:	Documentation/devicetree/bindings/ufs/
 F:	Documentation/scsi/ufs.rst
-F:	drivers/scsi/ufs/
+F:	drivers/ufs/core/
 
 UNIVERSAL FLASH STORAGE HOST CONTROLLER DRIVER DWC HOOKS
 M:	Pedro Sousa <pedrom.sousa@synopsys.com>
 L:	linux-scsi@vger.kernel.org
 S:	Supported
-F:	drivers/scsi/ufs/*dwc*
+F:	drivers/ufs/host/*dwc*
 
 UNIVERSAL FLASH STORAGE HOST CONTROLLER DRIVER MEDIATEK HOOKS
 M:	Stanley Chu <stanley.chu@mediatek.com>
 L:	linux-scsi@vger.kernel.org
 L:	linux-mediatek@lists.infradead.org (moderated for non-subscribers)
 S:	Maintained
-F:	drivers/scsi/ufs/ufs-mediatek*
+F:	drivers/ufs/host/ufs-mediatek*
 
 UNSORTED BLOCK IMAGES (UBI)
 M:	Richard Weinberger <richard@nod.at>
diff --git a/drivers/Kconfig b/drivers/Kconfig
index 8d6cd5d08722..a7ec388e1848 100644
--- a/drivers/Kconfig
+++ b/drivers/Kconfig
@@ -107,6 +107,8 @@ source "drivers/usb/Kconfig"
 
 source "drivers/mmc/Kconfig"
 
+source "drivers/ufs/Kconfig"
+
 source "drivers/memstick/Kconfig"
 
 source "drivers/leds/Kconfig"
diff --git a/drivers/Makefile b/drivers/Makefile
index 020780b6b4d2..8b4b90202e58 100644
--- a/drivers/Makefile
+++ b/drivers/Makefile
@@ -128,6 +128,7 @@ obj-$(CONFIG_PM_OPP)		+= opp/
 obj-$(CONFIG_CPU_FREQ)		+= cpufreq/
 obj-$(CONFIG_CPU_IDLE)		+= cpuidle/
 obj-y				+= mmc/
+obj-y				+= ufs/
 obj-$(CONFIG_MEMSTICK)		+= memstick/
 obj-$(CONFIG_NEW_LEDS)		+= leds/
 obj-$(CONFIG_INFINIBAND)	+= infiniband/
diff --git a/drivers/scsi/Kconfig b/drivers/scsi/Kconfig
index 6e3a04107bb6..a9fe5152addd 100644
--- a/drivers/scsi/Kconfig
+++ b/drivers/scsi/Kconfig
@@ -500,7 +500,6 @@ source "drivers/scsi/megaraid/Kconfig.megaraid"
 source "drivers/scsi/mpt3sas/Kconfig"
 source "drivers/scsi/mpi3mr/Kconfig"
 source "drivers/scsi/smartpqi/Kconfig"
-source "drivers/scsi/ufs/Kconfig"
 
 config SCSI_HPTIOP
 	tristate "HighPoint RocketRAID 3xxx/4xxx Controller support"
diff --git a/drivers/scsi/Makefile b/drivers/scsi/Makefile
index 19814c26c908..2ad3bc052531 100644
--- a/drivers/scsi/Makefile
+++ b/drivers/scsi/Makefile
@@ -101,7 +101,6 @@ obj-$(CONFIG_MEGARAID_NEWGEN)	+= megaraid/
 obj-$(CONFIG_MEGARAID_SAS)	+= megaraid/
 obj-$(CONFIG_SCSI_MPT3SAS)	+= mpt3sas/
 obj-$(CONFIG_SCSI_MPI3MR)	+= mpi3mr/
-obj-$(CONFIG_SCSI_UFSHCD)	+= ufs/
 obj-$(CONFIG_SCSI_ACARD)	+= atp870u.o
 obj-$(CONFIG_SCSI_SUNESP)	+= esp_scsi.o	sun_esp.o
 obj-$(CONFIG_SCSI_INITIO)	+= initio.o
diff --git a/drivers/ufs/Kconfig b/drivers/ufs/Kconfig
new file mode 100644
index 000000000000..90226f72c158
--- /dev/null
+++ b/drivers/ufs/Kconfig
@@ -0,0 +1,30 @@
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# UFS subsystem configuration
+#
+
+menuconfig SCSI_UFSHCD
+	tristate "Universal Flash Storage Controller"
+	depends on SCSI && SCSI_DMA
+	select PM_DEVFREQ
+	select DEVFREQ_GOV_SIMPLE_ONDEMAND
+	select NLS
+	help
+	  Enables support for UFS (Universal Flash Storage) host controllers.
+	  A UFS host controller is an electronic component that is able to
+	  communicate with a UFS card. UFS host controllers occur in
+	  smartphones, laptops, digital cameras and also in cars.
+	  The kernel module will be called ufshcd.
+
+	  To compile this driver as a module, choose M here and read
+	  <file:Documentation/scsi/ufs.rst>.
+	  However, do not compile this as a module if your root file system
+	  (the one containing the directory /) is located on a UFS device.
+
+if SCSI_UFSHCD
+
+source "drivers/ufs/core/Kconfig"
+
+source "drivers/ufs/host/Kconfig"
+
+endif
diff --git a/drivers/ufs/Makefile b/drivers/ufs/Makefile
new file mode 100644
index 000000000000..5a199ef18d4c
--- /dev/null
+++ b/drivers/ufs/Makefile
@@ -0,0 +1,5 @@
+# SPDX-License-Identifier: GPL-2.0
+
+# The link order is important here. ufshcd-core must initialize
+# before vendor drivers.
+obj-$(CONFIG_SCSI_UFSHCD)	+= core/ host/
diff --git a/drivers/ufs/core/Kconfig b/drivers/ufs/core/Kconfig
new file mode 100644
index 000000000000..e11978171403
--- /dev/null
+++ b/drivers/ufs/core/Kconfig
@@ -0,0 +1,60 @@
+# SPDX-License-Identifier: GPL-2.0+
+#
+# Kernel configuration file for the UFS Host Controller core.
+#
+# Copyright (C) 2011-2013 Samsung India Software Operations
+#
+# Authors:
+#	Santosh Yaraganavi <santosh.sy@samsung.com>
+#	Vinayak Holikatti <h.vinayak@samsung.com>
+
+config SCSI_UFS_BSG
+	bool "Universal Flash Storage BSG device node"
+	select BLK_DEV_BSGLIB
+	help
+	  Universal Flash Storage (UFS) is SCSI transport specification for
+	  accessing flash storage on digital cameras, mobile phones and
+	  consumer electronic devices.
+	  A UFS controller communicates with a UFS device by exchanging
+	  UFS Protocol Information Units (UPIUs).
+	  UPIUs can not only be used as a transport layer for the SCSI protocol
+	  but are also used by the UFS native command set.
+	  This transport driver supports exchanging UFS protocol information units
+	  with a UFS device. See also the ufshcd driver, which is a SCSI driver
+	  that supports UFS devices.
+
+	  Select this if you need a bsg device node for your UFS controller.
+	  If unsure, say N.
+
+config SCSI_UFS_CRYPTO
+	bool "UFS Crypto Engine Support"
+	depends on BLK_INLINE_ENCRYPTION
+	help
+	  Enable Crypto Engine Support in UFS.
+	  Enabling this makes it possible for the kernel to use the crypto
+	  capabilities of the UFS device (if present) to perform crypto
+	  operations on data being transferred to/from the device.
+
+config SCSI_UFS_HPB
+	bool "Support UFS Host Performance Booster"
+	help
+	  The UFS HPB feature improves random read performance. It caches
+	  L2P (logical to physical) map of UFS to host DRAM. The driver uses HPB
+	  read command by piggybacking physical page number for bypassing FTL (flash
+	  translation layer)'s L2P address translation.
+
+config SCSI_UFS_FAULT_INJECTION
+	bool "UFS Fault Injection Support"
+	depends on FAULT_INJECTION
+	help
+	  Enable fault injection support in the UFS driver. This makes it easier
+	  to test the UFS error handler and abort handler.
+
+config SCSI_UFS_HWMON
+	bool "UFS Temperature Notification"
+	depends on SCSI_UFSHCD=HWMON || HWMON=y
+	help
+	  This provides support for UFS hardware monitoring. If enabled,
+	  a hardware monitoring device will be created for the UFS device.
+
+	  If unsure, say N.
diff --git a/drivers/ufs/core/Makefile b/drivers/ufs/core/Makefile
new file mode 100644
index 000000000000..62f38c5bf857
--- /dev/null
+++ b/drivers/ufs/core/Makefile
@@ -0,0 +1,10 @@
+# SPDX-License-Identifier: GPL-2.0
+
+obj-$(CONFIG_SCSI_UFSHCD)		+= ufshcd-core.o
+ufshcd-core-y				+= ufshcd.o ufs-sysfs.o
+ufshcd-core-$(CONFIG_DEBUG_FS)		+= ufs-debugfs.o
+ufshcd-core-$(CONFIG_SCSI_UFS_BSG)	+= ufs_bsg.o
+ufshcd-core-$(CONFIG_SCSI_UFS_CRYPTO)	+= ufshcd-crypto.o
+ufshcd-core-$(CONFIG_SCSI_UFS_HPB)	+= ufshpb.o
+ufshcd-core-$(CONFIG_SCSI_UFS_FAULT_INJECTION) += ufs-fault-injection.o
+ufshcd-core-$(CONFIG_SCSI_UFS_HWMON)	+= ufs-hwmon.o
diff --git a/drivers/scsi/ufs/ufs-debugfs.c b/drivers/ufs/core/ufs-debugfs.c
similarity index 99%
rename from drivers/scsi/ufs/ufs-debugfs.c
rename to drivers/ufs/core/ufs-debugfs.c
index c10a8f09682b..e3baed6c70bd 100644
--- a/drivers/scsi/ufs/ufs-debugfs.c
+++ b/drivers/ufs/core/ufs-debugfs.c
@@ -4,7 +4,7 @@
 #include <linux/debugfs.h>
 
 #include "ufs-debugfs.h"
-#include "ufshcd.h"
+#include <ufs/ufshcd.h>
 #include "ufshcd-priv.h"
 
 static struct dentry *ufs_debugfs_root;
diff --git a/drivers/scsi/ufs/ufs-debugfs.h b/drivers/ufs/core/ufs-debugfs.h
similarity index 100%
rename from drivers/scsi/ufs/ufs-debugfs.h
rename to drivers/ufs/core/ufs-debugfs.h
diff --git a/drivers/scsi/ufs/ufs-fault-injection.c b/drivers/ufs/core/ufs-fault-injection.c
similarity index 100%
rename from drivers/scsi/ufs/ufs-fault-injection.c
rename to drivers/ufs/core/ufs-fault-injection.c
diff --git a/drivers/scsi/ufs/ufs-fault-injection.h b/drivers/ufs/core/ufs-fault-injection.h
similarity index 100%
rename from drivers/scsi/ufs/ufs-fault-injection.h
rename to drivers/ufs/core/ufs-fault-injection.h
diff --git a/drivers/scsi/ufs/ufs-hwmon.c b/drivers/ufs/core/ufs-hwmon.c
similarity index 99%
rename from drivers/scsi/ufs/ufs-hwmon.c
rename to drivers/ufs/core/ufs-hwmon.c
index c38d9d98a86d..4c6a872b7a7c 100644
--- a/drivers/scsi/ufs/ufs-hwmon.c
+++ b/drivers/ufs/core/ufs-hwmon.c
@@ -7,7 +7,7 @@
 #include <linux/hwmon.h>
 #include <linux/units.h>
 
-#include "ufshcd.h"
+#include <ufs/ufshcd.h>
 #include "ufshcd-priv.h"
 
 struct ufs_hwmon_data {
diff --git a/drivers/scsi/ufs/ufs-sysfs.c b/drivers/ufs/core/ufs-sysfs.c
similarity index 99%
rename from drivers/scsi/ufs/ufs-sysfs.c
rename to drivers/ufs/core/ufs-sysfs.c
index 8a3c6442f291..0a088b47d557 100644
--- a/drivers/scsi/ufs/ufs-sysfs.c
+++ b/drivers/ufs/core/ufs-sysfs.c
@@ -6,7 +6,7 @@
 #include <linux/bitfield.h>
 #include <asm/unaligned.h>
 
-#include "ufs.h"
+#include <ufs/ufs.h>
 #include "ufs-sysfs.h"
 #include "ufshcd-priv.h"
 
diff --git a/drivers/scsi/ufs/ufs-sysfs.h b/drivers/ufs/core/ufs-sysfs.h
similarity index 100%
rename from drivers/scsi/ufs/ufs-sysfs.h
rename to drivers/ufs/core/ufs-sysfs.h
diff --git a/drivers/scsi/ufs/ufs_bsg.c b/drivers/ufs/core/ufs_bsg.c
similarity index 99%
rename from drivers/scsi/ufs/ufs_bsg.c
rename to drivers/ufs/core/ufs_bsg.c
index 9e9b93867cab..b99e3f3dc4ef 100644
--- a/drivers/scsi/ufs/ufs_bsg.c
+++ b/drivers/ufs/core/ufs_bsg.c
@@ -9,7 +9,7 @@
 #include <scsi/scsi.h>
 #include <scsi/scsi_host.h>
 #include "ufs_bsg.h"
-#include "ufshcd.h"
+#include <ufs/ufshcd.h>
 #include "ufshcd-priv.h"
 
 static int ufs_bsg_get_query_desc_size(struct ufs_hba *hba, int *desc_len,
diff --git a/drivers/scsi/ufs/ufs_bsg.h b/drivers/ufs/core/ufs_bsg.h
similarity index 100%
rename from drivers/scsi/ufs/ufs_bsg.h
rename to drivers/ufs/core/ufs_bsg.h
diff --git a/drivers/scsi/ufs/ufshcd-crypto.c b/drivers/ufs/core/ufshcd-crypto.c
similarity index 99%
rename from drivers/scsi/ufs/ufshcd-crypto.c
rename to drivers/ufs/core/ufshcd-crypto.c
index 67402baf6fae..198360fe5e8e 100644
--- a/drivers/scsi/ufs/ufshcd-crypto.c
+++ b/drivers/ufs/core/ufshcd-crypto.c
@@ -3,7 +3,7 @@
  * Copyright 2019 Google LLC
  */
 
-#include "ufshcd.h"
+#include <ufs/ufshcd.h>
 #include "ufshcd-crypto.h"
 
 /* Blk-crypto modes supported by UFS crypto */
diff --git a/drivers/scsi/ufs/ufshcd-crypto.h b/drivers/ufs/core/ufshcd-crypto.h
similarity index 97%
rename from drivers/scsi/ufs/ufshcd-crypto.h
rename to drivers/ufs/core/ufshcd-crypto.h
index 9f98f18f9646..504cc841540b 100644
--- a/drivers/scsi/ufs/ufshcd-crypto.h
+++ b/drivers/ufs/core/ufshcd-crypto.h
@@ -7,9 +7,9 @@
 #define _UFSHCD_CRYPTO_H
 
 #include <scsi/scsi_cmnd.h>
-#include "ufshcd.h"
+#include <ufs/ufshcd.h>
 #include "ufshcd-priv.h"
-#include "ufshci.h"
+#include <ufs/ufshci.h>
 
 #ifdef CONFIG_SCSI_UFS_CRYPTO
 
diff --git a/drivers/scsi/ufs/ufshcd-priv.h b/drivers/ufs/core/ufshcd-priv.h
similarity index 99%
rename from drivers/scsi/ufs/ufshcd-priv.h
rename to drivers/ufs/core/ufshcd-priv.h
index 38bc77d3dbbd..ffb01fc6de75 100644
--- a/drivers/scsi/ufs/ufshcd-priv.h
+++ b/drivers/ufs/core/ufshcd-priv.h
@@ -4,7 +4,7 @@
 #define _UFSHCD_PRIV_H_
 
 #include <linux/pm_runtime.h>
-#include "ufshcd.h"
+#include <ufs/ufshcd.h>
 
 static inline bool ufshcd_is_user_access_allowed(struct ufs_hba *hba)
 {
diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/ufs/core/ufshcd.c
similarity index 99%
rename from drivers/scsi/ufs/ufshcd.c
rename to drivers/ufs/core/ufshcd.c
index 1fb3a8b9b03e..efe67a381c32 100644
--- a/drivers/scsi/ufs/ufshcd.c
+++ b/drivers/ufs/core/ufshcd.c
@@ -26,8 +26,8 @@
 #include <scsi/scsi_driver.h>
 #include <scsi/scsi_eh.h>
 #include "ufshcd-priv.h"
-#include "ufs_quirks.h"
-#include "unipro.h"
+#include <ufs/ufs_quirks.h>
+#include <ufs/unipro.h>
 #include "ufs-sysfs.h"
 #include "ufs-debugfs.h"
 #include "ufs-fault-injection.h"
diff --git a/drivers/scsi/ufs/ufshpb.c b/drivers/ufs/core/ufshpb.c
similarity index 99%
rename from drivers/scsi/ufs/ufshpb.c
rename to drivers/ufs/core/ufshpb.c
index f1f65383e97d..aee0ec4cee70 100644
--- a/drivers/scsi/ufs/ufshpb.c
+++ b/drivers/ufs/core/ufshpb.c
@@ -17,7 +17,7 @@
 
 #include "ufshcd-priv.h"
 #include "ufshpb.h"
-#include "../sd.h"
+#include "../../scsi/sd.h"
 
 #define ACTIVATION_THRESHOLD 8 /* 8 IOs */
 #define READ_TO_MS 1000
diff --git a/drivers/scsi/ufs/ufshpb.h b/drivers/ufs/core/ufshpb.h
similarity index 100%
rename from drivers/scsi/ufs/ufshpb.h
rename to drivers/ufs/core/ufshpb.h
diff --git a/drivers/scsi/ufs/Kconfig b/drivers/ufs/host/Kconfig
similarity index 56%
rename from drivers/scsi/ufs/Kconfig
rename to drivers/ufs/host/Kconfig
index 393b9a01da36..82590224da13 100644
--- a/drivers/scsi/ufs/Kconfig
+++ b/drivers/ufs/host/Kconfig
@@ -1,6 +1,6 @@
 # SPDX-License-Identifier: GPL-2.0+
 #
-# Kernel configuration file for the UFS Host Controller
+# Kernel configuration file for the UFS host controller drivers.
 #
 # Copyright (C) 2011-2013 Samsung India Software Operations
 #
@@ -8,26 +8,6 @@
 #	Santosh Yaraganavi <santosh.sy@samsung.com>
 #	Vinayak Holikatti <h.vinayak@samsung.com>
 
-config SCSI_UFSHCD
-	tristate "Universal Flash Storage Controller Driver Core"
-	depends on SCSI && SCSI_DMA
-	select PM_DEVFREQ
-	select DEVFREQ_GOV_SIMPLE_ONDEMAND
-	select NLS
-	help
-	  This selects the support for UFS devices in Linux, say Y and make
-	  sure that you know the name of your UFS host adapter (the card
-	  inside your computer that "speaks" the UFS protocol, also
-	  called UFS Host Controller), because you will be asked for it.
-	  The module will be called ufshcd.
-
-	  To compile this driver as a module, choose M here and read
-	  <file:Documentation/scsi/ufs.rst>.
-	  However, do not compile this as a module if your root file system
-	  (the one containing the directory /) is located on a UFS device.
-
-if SCSI_UFSHCD
-
 config SCSI_UFSHCD_PCI
 	tristate "PCI bus based UFS Controller support"
 	depends on PCI
@@ -122,24 +102,6 @@ config SCSI_UFS_TI_J721E
 	  Selects this if you have TI platform with UFS controller.
 	  If unsure, say N.
 
-config SCSI_UFS_BSG
-	bool "Universal Flash Storage BSG device node"
-	select BLK_DEV_BSGLIB
-	help
-	  Universal Flash Storage (UFS) is SCSI transport specification for
-	  accessing flash storage on digital cameras, mobile phones and
-	  consumer electronic devices.
-	  A UFS controller communicates with a UFS device by exchanging
-	  UFS Protocol Information Units (UPIUs).
-	  UPIUs can not only be used as a transport layer for the SCSI protocol
-	  but are also used by the UFS native command set.
-	  This transport driver supports exchanging UFS protocol information units
-	  with a UFS device. See also the ufshcd driver, which is a SCSI driver
-	  that supports UFS devices.
-
-	  Select this if you need a bsg device node for your UFS controller.
-	  If unsure, say N.
-
 config SCSI_UFS_EXYNOS
 	tristate "Exynos specific hooks to UFS controller platform driver"
 	depends on SCSI_UFSHCD_PLATFORM && (ARCH_EXYNOS || COMPILE_TEST)
@@ -150,38 +112,3 @@ config SCSI_UFS_EXYNOS
 
 	  Select this if you have UFS host controller on Samsung Exynos SoC.
 	  If unsure, say N.
-
-config SCSI_UFS_CRYPTO
-	bool "UFS Crypto Engine Support"
-	depends on BLK_INLINE_ENCRYPTION
-	help
-	  Enable Crypto Engine Support in UFS.
-	  Enabling this makes it possible for the kernel to use the crypto
-	  capabilities of the UFS device (if present) to perform crypto
-	  operations on data being transferred to/from the device.
-
-config SCSI_UFS_HPB
-	bool "Support UFS Host Performance Booster"
-	help
-	  The UFS HPB feature improves random read performance. It caches
-	  L2P (logical to physical) map of UFS to host DRAM. The driver uses HPB
-	  read command by piggybacking physical page number for bypassing FTL (flash
-	  translation layer)'s L2P address translation.
-
-config SCSI_UFS_FAULT_INJECTION
-	bool "UFS Fault Injection Support"
-	depends on FAULT_INJECTION
-	help
-	  Enable fault injection support in the UFS driver. This makes it easier
-	  to test the UFS error handler and abort handler.
-
-config SCSI_UFS_HWMON
-	bool "UFS Temperature Notification"
-	depends on SCSI_UFSHCD=HWMON || HWMON=y
-	help
-	  This provides support for UFS hardware monitoring. If enabled,
-	  a hardware monitoring device will be created for the UFS device.
-
-	  If unsure, say N.
-
-endif
diff --git a/drivers/scsi/ufs/Makefile b/drivers/ufs/host/Makefile
similarity index 56%
rename from drivers/scsi/ufs/Makefile
rename to drivers/ufs/host/Makefile
index 966048875b50..e4be54273c98 100644
--- a/drivers/scsi/ufs/Makefile
+++ b/drivers/ufs/host/Makefile
@@ -1,16 +1,4 @@
 # SPDX-License-Identifier: GPL-2.0
-# UFSHCD makefile
-
-# The link order is important here. ufshcd-core must initialize
-# before vendor drivers.
-obj-$(CONFIG_SCSI_UFSHCD)		+= ufshcd-core.o
-ufshcd-core-y				+= ufshcd.o ufs-sysfs.o
-ufshcd-core-$(CONFIG_DEBUG_FS)		+= ufs-debugfs.o
-ufshcd-core-$(CONFIG_SCSI_UFS_BSG)	+= ufs_bsg.o
-ufshcd-core-$(CONFIG_SCSI_UFS_CRYPTO)	+= ufshcd-crypto.o
-ufshcd-core-$(CONFIG_SCSI_UFS_HPB)	+= ufshpb.o
-ufshcd-core-$(CONFIG_SCSI_UFS_FAULT_INJECTION) += ufs-fault-injection.o
-ufshcd-core-$(CONFIG_SCSI_UFS_HWMON) += ufs-hwmon.o
 
 obj-$(CONFIG_SCSI_UFS_DWC_TC_PCI) += tc-dwc-g210-pci.o ufshcd-dwc.o tc-dwc-g210.o
 obj-$(CONFIG_SCSI_UFS_DWC_TC_PLATFORM) += tc-dwc-g210-pltfrm.o ufshcd-dwc.o tc-dwc-g210.o
diff --git a/drivers/scsi/ufs/cdns-pltfrm.c b/drivers/ufs/host/cdns-pltfrm.c
similarity index 100%
rename from drivers/scsi/ufs/cdns-pltfrm.c
rename to drivers/ufs/host/cdns-pltfrm.c
diff --git a/drivers/scsi/ufs/tc-dwc-g210-pci.c b/drivers/ufs/host/tc-dwc-g210-pci.c
similarity index 99%
rename from drivers/scsi/ufs/tc-dwc-g210-pci.c
rename to drivers/ufs/host/tc-dwc-g210-pci.c
index e635c211c783..92b8ad4b58fe 100644
--- a/drivers/scsi/ufs/tc-dwc-g210-pci.c
+++ b/drivers/ufs/host/tc-dwc-g210-pci.c
@@ -7,7 +7,7 @@
  * Authors: Joao Pinto <jpinto@synopsys.com>
  */
 
-#include "ufshcd.h"
+#include <ufs/ufshcd.h>
 #include "ufshcd-dwc.h"
 #include "tc-dwc-g210.h"
 
diff --git a/drivers/scsi/ufs/tc-dwc-g210-pltfrm.c b/drivers/ufs/host/tc-dwc-g210-pltfrm.c
similarity index 100%
rename from drivers/scsi/ufs/tc-dwc-g210-pltfrm.c
rename to drivers/ufs/host/tc-dwc-g210-pltfrm.c
diff --git a/drivers/scsi/ufs/tc-dwc-g210.c b/drivers/ufs/host/tc-dwc-g210.c
similarity index 99%
rename from drivers/scsi/ufs/tc-dwc-g210.c
rename to drivers/ufs/host/tc-dwc-g210.c
index 7ef67c9fc5b8..deb93dbd83a4 100644
--- a/drivers/scsi/ufs/tc-dwc-g210.c
+++ b/drivers/ufs/host/tc-dwc-g210.c
@@ -9,8 +9,8 @@
 
 #include <linux/module.h>
 
-#include "ufshcd.h"
-#include "unipro.h"
+#include <ufs/ufshcd.h>
+#include <ufs/unipro.h>
 
 #include "ufshcd-dwc.h"
 #include "ufshci-dwc.h"
diff --git a/drivers/scsi/ufs/tc-dwc-g210.h b/drivers/ufs/host/tc-dwc-g210.h
similarity index 100%
rename from drivers/scsi/ufs/tc-dwc-g210.h
rename to drivers/ufs/host/tc-dwc-g210.h
diff --git a/drivers/scsi/ufs/ti-j721e-ufs.c b/drivers/ufs/host/ti-j721e-ufs.c
similarity index 100%
rename from drivers/scsi/ufs/ti-j721e-ufs.c
rename to drivers/ufs/host/ti-j721e-ufs.c
diff --git a/drivers/scsi/ufs/ufs-exynos.c b/drivers/ufs/host/ufs-exynos.c
similarity index 99%
rename from drivers/scsi/ufs/ufs-exynos.c
rename to drivers/ufs/host/ufs-exynos.c
index ddb2d42605c5..a81d8cbd542f 100644
--- a/drivers/scsi/ufs/ufs-exynos.c
+++ b/drivers/ufs/host/ufs-exynos.c
@@ -18,10 +18,10 @@
 #include <linux/platform_device.h>
 #include <linux/regmap.h>
 
-#include "ufshcd.h"
+#include <ufs/ufshcd.h>
 #include "ufshcd-pltfrm.h"
-#include "ufshci.h"
-#include "unipro.h"
+#include <ufs/ufshci.h>
+#include <ufs/unipro.h>
 
 #include "ufs-exynos.h"
 
diff --git a/drivers/scsi/ufs/ufs-exynos.h b/drivers/ufs/host/ufs-exynos.h
similarity index 100%
rename from drivers/scsi/ufs/ufs-exynos.h
rename to drivers/ufs/host/ufs-exynos.h
diff --git a/drivers/scsi/ufs/ufs-hisi.c b/drivers/ufs/host/ufs-hisi.c
similarity index 99%
rename from drivers/scsi/ufs/ufs-hisi.c
rename to drivers/ufs/host/ufs-hisi.c
index 7046143063ee..2eed13bc82ca 100644
--- a/drivers/scsi/ufs/ufs-hisi.c
+++ b/drivers/ufs/host/ufs-hisi.c
@@ -15,12 +15,12 @@
 #include <linux/platform_device.h>
 #include <linux/reset.h>
 
-#include "ufshcd.h"
+#include <ufs/ufshcd.h>
 #include "ufshcd-pltfrm.h"
-#include "unipro.h"
+#include <ufs/unipro.h>
 #include "ufs-hisi.h"
-#include "ufshci.h"
-#include "ufs_quirks.h"
+#include <ufs/ufshci.h>
+#include <ufs/ufs_quirks.h>
 
 static int ufs_hisi_check_hibern8(struct ufs_hba *hba)
 {
diff --git a/drivers/scsi/ufs/ufs-hisi.h b/drivers/ufs/host/ufs-hisi.h
similarity index 100%
rename from drivers/scsi/ufs/ufs-hisi.h
rename to drivers/ufs/host/ufs-hisi.h
diff --git a/drivers/scsi/ufs/ufs-mediatek-trace.h b/drivers/ufs/host/ufs-mediatek-trace.h
similarity index 93%
rename from drivers/scsi/ufs/ufs-mediatek-trace.h
rename to drivers/ufs/host/ufs-mediatek-trace.h
index 895e82ea6ece..7e010848dc99 100644
--- a/drivers/scsi/ufs/ufs-mediatek-trace.h
+++ b/drivers/ufs/host/ufs-mediatek-trace.h
@@ -31,6 +31,6 @@ TRACE_EVENT(ufs_mtk_event,
 
 #undef TRACE_INCLUDE_PATH
 #undef TRACE_INCLUDE_FILE
-#define TRACE_INCLUDE_PATH ../../drivers/scsi/ufs/
+#define TRACE_INCLUDE_PATH ../../drivers/ufs/host
 #define TRACE_INCLUDE_FILE ufs-mediatek-trace
 #include <trace/define_trace.h>
diff --git a/drivers/scsi/ufs/ufs-mediatek.c b/drivers/ufs/host/ufs-mediatek.c
similarity index 99%
rename from drivers/scsi/ufs/ufs-mediatek.c
rename to drivers/ufs/host/ufs-mediatek.c
index 083d6bd4d561..beabc3ccd30b 100644
--- a/drivers/scsi/ufs/ufs-mediatek.c
+++ b/drivers/ufs/host/ufs-mediatek.c
@@ -21,10 +21,10 @@
 #include <linux/sched/clock.h>
 #include <linux/soc/mediatek/mtk_sip_svc.h>
 
-#include "ufshcd.h"
+#include <ufs/ufshcd.h>
 #include "ufshcd-pltfrm.h"
-#include "ufs_quirks.h"
-#include "unipro.h"
+#include <ufs/ufs_quirks.h>
+#include <ufs/unipro.h>
 #include "ufs-mediatek.h"
 
 #define CREATE_TRACE_POINTS
diff --git a/drivers/scsi/ufs/ufs-mediatek.h b/drivers/ufs/host/ufs-mediatek.h
similarity index 100%
rename from drivers/scsi/ufs/ufs-mediatek.h
rename to drivers/ufs/host/ufs-mediatek.h
diff --git a/drivers/scsi/ufs/ufs-qcom-ice.c b/drivers/ufs/host/ufs-qcom-ice.c
similarity index 100%
rename from drivers/scsi/ufs/ufs-qcom-ice.c
rename to drivers/ufs/host/ufs-qcom-ice.c
diff --git a/drivers/scsi/ufs/ufs-qcom.c b/drivers/ufs/host/ufs-qcom.c
similarity index 99%
rename from drivers/scsi/ufs/ufs-qcom.c
rename to drivers/ufs/host/ufs-qcom.c
index 4dcb232facaa..f10d4668814c 100644
--- a/drivers/scsi/ufs/ufs-qcom.c
+++ b/drivers/ufs/host/ufs-qcom.c
@@ -15,12 +15,12 @@
 #include <linux/reset-controller.h>
 #include <linux/devfreq.h>
 
-#include "ufshcd.h"
+#include <ufs/ufshcd.h>
 #include "ufshcd-pltfrm.h"
-#include "unipro.h"
+#include <ufs/unipro.h>
 #include "ufs-qcom.h"
-#include "ufshci.h"
-#include "ufs_quirks.h"
+#include <ufs/ufshci.h>
+#include <ufs/ufs_quirks.h>
 
 #define UFS_QCOM_DEFAULT_DBG_PRINT_EN	\
 	(UFS_QCOM_DBG_PRINT_REGS_EN | UFS_QCOM_DBG_PRINT_TEST_BUS_EN)
diff --git a/drivers/scsi/ufs/ufs-qcom.h b/drivers/ufs/host/ufs-qcom.h
similarity index 99%
rename from drivers/scsi/ufs/ufs-qcom.h
rename to drivers/ufs/host/ufs-qcom.h
index 771bc95d02c7..44466a395bb5 100644
--- a/drivers/scsi/ufs/ufs-qcom.h
+++ b/drivers/ufs/host/ufs-qcom.h
@@ -7,7 +7,7 @@
 
 #include <linux/reset-controller.h>
 #include <linux/reset.h>
-#include "ufshcd.h"
+#include <ufs/ufshcd.h>
 
 #define MAX_UFS_QCOM_HOSTS	1
 #define MAX_U32                 (~(u32)0)
diff --git a/drivers/scsi/ufs/ufshcd-dwc.c b/drivers/ufs/host/ufshcd-dwc.c
similarity index 98%
rename from drivers/scsi/ufs/ufshcd-dwc.c
rename to drivers/ufs/host/ufshcd-dwc.c
index a57973c8d2a1..e28a67e1e314 100644
--- a/drivers/scsi/ufs/ufshcd-dwc.c
+++ b/drivers/ufs/host/ufshcd-dwc.c
@@ -9,8 +9,8 @@
 
 #include <linux/module.h>
 
-#include "ufshcd.h"
-#include "unipro.h"
+#include <ufs/ufshcd.h>
+#include <ufs/unipro.h>
 
 #include "ufshcd-dwc.h"
 #include "ufshci-dwc.h"
diff --git a/drivers/scsi/ufs/ufshcd-dwc.h b/drivers/ufs/host/ufshcd-dwc.h
similarity index 95%
rename from drivers/scsi/ufs/ufshcd-dwc.h
rename to drivers/ufs/host/ufshcd-dwc.h
index 43b70794e24f..ad91ea56662c 100644
--- a/drivers/scsi/ufs/ufshcd-dwc.h
+++ b/drivers/ufs/host/ufshcd-dwc.h
@@ -10,7 +10,7 @@
 #ifndef _UFSHCD_DWC_H
 #define _UFSHCD_DWC_H
 
-#include "ufshcd.h"
+#include <ufs/ufshcd.h>
 
 struct ufshcd_dme_attr_val {
 	u32 attr_sel;
diff --git a/drivers/scsi/ufs/ufshcd-pci.c b/drivers/ufs/host/ufshcd-pci.c
similarity index 99%
rename from drivers/scsi/ufs/ufshcd-pci.c
rename to drivers/ufs/host/ufshcd-pci.c
index 20af2fbc3af1..04166bda41da 100644
--- a/drivers/scsi/ufs/ufshcd-pci.c
+++ b/drivers/ufs/host/ufshcd-pci.c
@@ -9,7 +9,7 @@
  *	Vinayak Holikatti <h.vinayak@samsung.com>
  */
 
-#include "ufshcd.h"
+#include <ufs/ufshcd.h>
 #include <linux/delay.h>
 #include <linux/module.h>
 #include <linux/pci.h>
diff --git a/drivers/scsi/ufs/ufshcd-pltfrm.c b/drivers/ufs/host/ufshcd-pltfrm.c
similarity index 99%
rename from drivers/scsi/ufs/ufshcd-pltfrm.c
rename to drivers/ufs/host/ufshcd-pltfrm.c
index f5313f407617..e7332cc65b1f 100644
--- a/drivers/scsi/ufs/ufshcd-pltfrm.c
+++ b/drivers/ufs/host/ufshcd-pltfrm.c
@@ -13,9 +13,9 @@
 #include <linux/pm_runtime.h>
 #include <linux/of.h>
 
-#include "ufshcd.h"
+#include <ufs/ufshcd.h>
 #include "ufshcd-pltfrm.h"
-#include "unipro.h"
+#include <ufs/unipro.h>
 
 #define UFSHCD_DEFAULT_LANES_PER_DIRECTION		2
 
diff --git a/drivers/scsi/ufs/ufshcd-pltfrm.h b/drivers/ufs/host/ufshcd-pltfrm.h
similarity index 98%
rename from drivers/scsi/ufs/ufshcd-pltfrm.h
rename to drivers/ufs/host/ufshcd-pltfrm.h
index c33e28ac6ef6..43c2e412bd99 100644
--- a/drivers/scsi/ufs/ufshcd-pltfrm.h
+++ b/drivers/ufs/host/ufshcd-pltfrm.h
@@ -5,7 +5,7 @@
 #ifndef UFSHCD_PLTFRM_H_
 #define UFSHCD_PLTFRM_H_
 
-#include "ufshcd.h"
+#include <ufs/ufshcd.h>
 
 #define UFS_PWM_MODE 1
 #define UFS_HS_MODE  2
diff --git a/drivers/scsi/ufs/ufshci-dwc.h b/drivers/ufs/host/ufshci-dwc.h
similarity index 100%
rename from drivers/scsi/ufs/ufshci-dwc.h
rename to drivers/ufs/host/ufshci-dwc.h
diff --git a/drivers/scsi/ufs/ufs.h b/include/ufs/ufs.h
similarity index 100%
rename from drivers/scsi/ufs/ufs.h
rename to include/ufs/ufs.h
diff --git a/drivers/scsi/ufs/ufs_quirks.h b/include/ufs/ufs_quirks.h
similarity index 100%
rename from drivers/scsi/ufs/ufs_quirks.h
rename to include/ufs/ufs_quirks.h
diff --git a/drivers/scsi/ufs/ufshcd.h b/include/ufs/ufshcd.h
similarity index 99%
rename from drivers/scsi/ufs/ufshcd.h
rename to include/ufs/ufshcd.h
index 2b0f3441b813..a92271421718 100644
--- a/drivers/scsi/ufs/ufshcd.h
+++ b/include/ufs/ufshcd.h
@@ -18,10 +18,10 @@
 #include <linux/devfreq.h>
 #include <linux/pm_runtime.h>
 #include <scsi/scsi_device.h>
-#include "unipro.h"
-#include "ufs.h"
-#include "ufs_quirks.h"
-#include "ufshci.h"
+#include <ufs/unipro.h>
+#include <ufs/ufs.h>
+#include <ufs/ufs_quirks.h>
+#include <ufs/ufshci.h>
 
 #define UFSHCD "ufshcd"
 
diff --git a/drivers/scsi/ufs/ufshci.h b/include/ufs/ufshci.h
similarity index 100%
rename from drivers/scsi/ufs/ufshci.h
rename to include/ufs/ufshci.h
diff --git a/drivers/scsi/ufs/unipro.h b/include/ufs/unipro.h
similarity index 100%
rename from drivers/scsi/ufs/unipro.h
rename to include/ufs/unipro.h

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [PATCH] scsi: ufs: Split the drivers/scsi/ufs directory
  2022-05-11 21:25 [PATCH] scsi: ufs: Split the drivers/scsi/ufs directory Bart Van Assche
@ 2022-05-12 10:25 ` Dan Carpenter
  2022-05-18 18:33 ` Avri Altman
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 11+ messages in thread
From: kernel test robot @ 2022-05-12  9:11 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 6141 bytes --]

CC: kbuild-all(a)lists.01.org
BCC: lkp(a)intel.com
In-Reply-To: <20220511212552.655341-1-bvanassche@acm.org>
References: <20220511212552.655341-1-bvanassche@acm.org>
TO: Bart Van Assche <bvanassche@acm.org>

Hi Bart,

I love your patch! Perhaps something to improve:

[auto build test WARNING on mkp-scsi/for-next]
[also build test WARNING on jejb-scsi/for-next next-20220511]
[cannot apply to krzk/for-next linus/master v5.18-rc6]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/intel-lab-lkp/linux/commits/Bart-Van-Assche/scsi-ufs-Split-the-drivers-scsi-ufs-directory/20220512-052804
base:   https://git.kernel.org/pub/scm/linux/kernel/git/mkp/scsi.git for-next
:::::: branch date: 12 hours ago
:::::: commit date: 12 hours ago
config: parisc-randconfig-m031-20220509 (https://download.01.org/0day-ci/archive/20220512/202205121656.HnvXBcgA-lkp(a)intel.com/config)
compiler: hppa-linux-gcc (GCC) 11.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>

smatch warnings:
drivers/ufs/core/ufshcd.c:5283 ufshcd_uic_cmd_compl() error: we previously assumed 'hba->active_uic_cmd' could be null (see line 5271)

vim +5283 drivers/ufs/core/ufshcd.c

a45f937110fa6b drivers/scsi/ufs/ufshcd.c Can Guo               2021-05-24  5253  
6ccf44fe4cd7c4 drivers/scsi/ufs/ufshcd.c Seungwon Jeon         2013-06-26  5254  /**
6ccf44fe4cd7c4 drivers/scsi/ufs/ufshcd.c Seungwon Jeon         2013-06-26  5255   * ufshcd_uic_cmd_compl - handle completion of uic command
6ccf44fe4cd7c4 drivers/scsi/ufs/ufshcd.c Seungwon Jeon         2013-06-26  5256   * @hba: per adapter instance
53b3d9c3fdda94 drivers/scsi/ufs/ufshcd.c Seungwon Jeon         2013-08-31  5257   * @intr_status: interrupt status generated by the controller
9333d77573485c drivers/scsi/ufs/ufshcd.c Venkat Gopalakrishnan 2019-11-14  5258   *
9333d77573485c drivers/scsi/ufs/ufshcd.c Venkat Gopalakrishnan 2019-11-14  5259   * Returns
9333d77573485c drivers/scsi/ufs/ufshcd.c Venkat Gopalakrishnan 2019-11-14  5260   *  IRQ_HANDLED - If interrupt is valid
9333d77573485c drivers/scsi/ufs/ufshcd.c Venkat Gopalakrishnan 2019-11-14  5261   *  IRQ_NONE    - If invalid interrupt
6ccf44fe4cd7c4 drivers/scsi/ufs/ufshcd.c Seungwon Jeon         2013-06-26  5262   */
9333d77573485c drivers/scsi/ufs/ufshcd.c Venkat Gopalakrishnan 2019-11-14  5263  static irqreturn_t ufshcd_uic_cmd_compl(struct ufs_hba *hba, u32 intr_status)
6ccf44fe4cd7c4 drivers/scsi/ufs/ufshcd.c Seungwon Jeon         2013-06-26  5264  {
9333d77573485c drivers/scsi/ufs/ufshcd.c Venkat Gopalakrishnan 2019-11-14  5265  	irqreturn_t retval = IRQ_NONE;
9333d77573485c drivers/scsi/ufs/ufshcd.c Venkat Gopalakrishnan 2019-11-14  5266  
a45f937110fa6b drivers/scsi/ufs/ufshcd.c Can Guo               2021-05-24  5267  	spin_lock(hba->host->host_lock);
a45f937110fa6b drivers/scsi/ufs/ufshcd.c Can Guo               2021-05-24  5268  	if (ufshcd_is_auto_hibern8_error(hba, intr_status))
a45f937110fa6b drivers/scsi/ufs/ufshcd.c Can Guo               2021-05-24  5269  		hba->errors |= (UFSHCD_UIC_HIBERN8_MASK & intr_status);
a45f937110fa6b drivers/scsi/ufs/ufshcd.c Can Guo               2021-05-24  5270  
53b3d9c3fdda94 drivers/scsi/ufs/ufshcd.c Seungwon Jeon         2013-08-31 @5271  	if ((intr_status & UIC_COMMAND_COMPL) && hba->active_uic_cmd) {
6ccf44fe4cd7c4 drivers/scsi/ufs/ufshcd.c Seungwon Jeon         2013-06-26  5272  		hba->active_uic_cmd->argument2 |=
6ccf44fe4cd7c4 drivers/scsi/ufs/ufshcd.c Seungwon Jeon         2013-06-26  5273  			ufshcd_get_uic_cmd_result(hba);
12b4fdb4f6bccb drivers/scsi/ufs/ufshcd.c Seungwon Jeon         2013-08-31  5274  		hba->active_uic_cmd->argument3 =
12b4fdb4f6bccb drivers/scsi/ufs/ufshcd.c Seungwon Jeon         2013-08-31  5275  			ufshcd_get_dme_attr_val(hba);
0f52fcb99ea273 drivers/scsi/ufs/ufshcd.c Can Guo               2020-11-02  5276  		if (!hba->uic_async_done)
0f52fcb99ea273 drivers/scsi/ufs/ufshcd.c Can Guo               2020-11-02  5277  			hba->active_uic_cmd->cmd_active = 0;
6ccf44fe4cd7c4 drivers/scsi/ufs/ufshcd.c Seungwon Jeon         2013-06-26  5278  		complete(&hba->active_uic_cmd->done);
9333d77573485c drivers/scsi/ufs/ufshcd.c Venkat Gopalakrishnan 2019-11-14  5279  		retval = IRQ_HANDLED;
6ccf44fe4cd7c4 drivers/scsi/ufs/ufshcd.c Seungwon Jeon         2013-06-26  5280  	}
53b3d9c3fdda94 drivers/scsi/ufs/ufshcd.c Seungwon Jeon         2013-08-31  5281  
9333d77573485c drivers/scsi/ufs/ufshcd.c Venkat Gopalakrishnan 2019-11-14  5282  	if ((intr_status & UFSHCD_UIC_PWR_MASK) && hba->uic_async_done) {
0f52fcb99ea273 drivers/scsi/ufs/ufshcd.c Can Guo               2020-11-02 @5283  		hba->active_uic_cmd->cmd_active = 0;
57d104c153d3d6 drivers/scsi/ufs/ufshcd.c Subhash Jadavani      2014-09-25  5284  		complete(hba->uic_async_done);
9333d77573485c drivers/scsi/ufs/ufshcd.c Venkat Gopalakrishnan 2019-11-14  5285  		retval = IRQ_HANDLED;
9333d77573485c drivers/scsi/ufs/ufshcd.c Venkat Gopalakrishnan 2019-11-14  5286  	}
aa5c697988b4c7 drivers/scsi/ufs/ufshcd.c Stanley Chu           2020-06-15  5287  
aa5c697988b4c7 drivers/scsi/ufs/ufshcd.c Stanley Chu           2020-06-15  5288  	if (retval == IRQ_HANDLED)
aa5c697988b4c7 drivers/scsi/ufs/ufshcd.c Stanley Chu           2020-06-15  5289  		ufshcd_add_uic_command_trace(hba, hba->active_uic_cmd,
28fa68fc557a7e drivers/scsi/ufs/ufshcd.c Bean Huo              2021-01-05  5290  					     UFS_CMD_COMP);
a45f937110fa6b drivers/scsi/ufs/ufshcd.c Can Guo               2021-05-24  5291  	spin_unlock(hba->host->host_lock);
9333d77573485c drivers/scsi/ufs/ufshcd.c Venkat Gopalakrishnan 2019-11-14  5292  	return retval;
6ccf44fe4cd7c4 drivers/scsi/ufs/ufshcd.c Seungwon Jeon         2013-06-26  5293  }
6ccf44fe4cd7c4 drivers/scsi/ufs/ufshcd.c Seungwon Jeon         2013-06-26  5294  

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH] scsi: ufs: Split the drivers/scsi/ufs directory
@ 2022-05-12 10:25 ` Dan Carpenter
  0 siblings, 0 replies; 11+ messages in thread
From: Dan Carpenter @ 2022-05-12 10:25 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 4605 bytes --]

Hi Bart,

url:    https://github.com/intel-lab-lkp/linux/commits/Bart-Van-Assche/scsi-ufs-Split-the-drivers-scsi-ufs-directory/20220512-052804
base:   https://git.kernel.org/pub/scm/linux/kernel/git/mkp/scsi.git for-next
config: parisc-randconfig-m031-20220509 (https://download.01.org/0day-ci/archive/20220512/202205121656.HnvXBcgA-lkp(a)intel.com/config)
compiler: hppa-linux-gcc (GCC) 11.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>

smatch warnings:
drivers/ufs/core/ufshcd.c:5283 ufshcd_uic_cmd_compl() error: we previously assumed 'hba->active_uic_cmd' could be null (see line 5271)

vim +5283 drivers/ufs/core/ufshcd.c

9333d77573485c drivers/scsi/ufs/ufshcd.c Venkat Gopalakrishnan 2019-11-14  5263  static irqreturn_t ufshcd_uic_cmd_compl(struct ufs_hba *hba, u32 intr_status)
6ccf44fe4cd7c4 drivers/scsi/ufs/ufshcd.c Seungwon Jeon         2013-06-26  5264  {
9333d77573485c drivers/scsi/ufs/ufshcd.c Venkat Gopalakrishnan 2019-11-14  5265  	irqreturn_t retval = IRQ_NONE;
9333d77573485c drivers/scsi/ufs/ufshcd.c Venkat Gopalakrishnan 2019-11-14  5266  
a45f937110fa6b drivers/scsi/ufs/ufshcd.c Can Guo               2021-05-24  5267  	spin_lock(hba->host->host_lock);
a45f937110fa6b drivers/scsi/ufs/ufshcd.c Can Guo               2021-05-24  5268  	if (ufshcd_is_auto_hibern8_error(hba, intr_status))
a45f937110fa6b drivers/scsi/ufs/ufshcd.c Can Guo               2021-05-24  5269  		hba->errors |= (UFSHCD_UIC_HIBERN8_MASK & intr_status);
a45f937110fa6b drivers/scsi/ufs/ufshcd.c Can Guo               2021-05-24  5270  
53b3d9c3fdda94 drivers/scsi/ufs/ufshcd.c Seungwon Jeon         2013-08-31 @5271  	if ((intr_status & UIC_COMMAND_COMPL) && hba->active_uic_cmd) {
                                                                                                                                 ^^^^^^^^^^^^^^^^^^^
Check for NULL

6ccf44fe4cd7c4 drivers/scsi/ufs/ufshcd.c Seungwon Jeon         2013-06-26  5272  		hba->active_uic_cmd->argument2 |=
6ccf44fe4cd7c4 drivers/scsi/ufs/ufshcd.c Seungwon Jeon         2013-06-26  5273  			ufshcd_get_uic_cmd_result(hba);
12b4fdb4f6bccb drivers/scsi/ufs/ufshcd.c Seungwon Jeon         2013-08-31  5274  		hba->active_uic_cmd->argument3 =
12b4fdb4f6bccb drivers/scsi/ufs/ufshcd.c Seungwon Jeon         2013-08-31  5275  			ufshcd_get_dme_attr_val(hba);
0f52fcb99ea273 drivers/scsi/ufs/ufshcd.c Can Guo               2020-11-02  5276  		if (!hba->uic_async_done)
0f52fcb99ea273 drivers/scsi/ufs/ufshcd.c Can Guo               2020-11-02  5277  			hba->active_uic_cmd->cmd_active = 0;
6ccf44fe4cd7c4 drivers/scsi/ufs/ufshcd.c Seungwon Jeon         2013-06-26  5278  		complete(&hba->active_uic_cmd->done);
9333d77573485c drivers/scsi/ufs/ufshcd.c Venkat Gopalakrishnan 2019-11-14  5279  		retval = IRQ_HANDLED;
6ccf44fe4cd7c4 drivers/scsi/ufs/ufshcd.c Seungwon Jeon         2013-06-26  5280  	}
53b3d9c3fdda94 drivers/scsi/ufs/ufshcd.c Seungwon Jeon         2013-08-31  5281  
9333d77573485c drivers/scsi/ufs/ufshcd.c Venkat Gopalakrishnan 2019-11-14  5282  	if ((intr_status & UFSHCD_UIC_PWR_MASK) && hba->uic_async_done) {
0f52fcb99ea273 drivers/scsi/ufs/ufshcd.c Can Guo               2020-11-02 @5283  		hba->active_uic_cmd->cmd_active = 0;
                                                                                                ^^^^^^^^^^^^^^^^^^^
Unchecked dereference

57d104c153d3d6 drivers/scsi/ufs/ufshcd.c Subhash Jadavani      2014-09-25  5284  		complete(hba->uic_async_done);
9333d77573485c drivers/scsi/ufs/ufshcd.c Venkat Gopalakrishnan 2019-11-14  5285  		retval = IRQ_HANDLED;
9333d77573485c drivers/scsi/ufs/ufshcd.c Venkat Gopalakrishnan 2019-11-14  5286  	}
aa5c697988b4c7 drivers/scsi/ufs/ufshcd.c Stanley Chu           2020-06-15  5287  
aa5c697988b4c7 drivers/scsi/ufs/ufshcd.c Stanley Chu           2020-06-15  5288  	if (retval == IRQ_HANDLED)
aa5c697988b4c7 drivers/scsi/ufs/ufshcd.c Stanley Chu           2020-06-15  5289  		ufshcd_add_uic_command_trace(hba, hba->active_uic_cmd,
28fa68fc557a7e drivers/scsi/ufs/ufshcd.c Bean Huo              2021-01-05  5290  					     UFS_CMD_COMP);
a45f937110fa6b drivers/scsi/ufs/ufshcd.c Can Guo               2021-05-24  5291  	spin_unlock(hba->host->host_lock);
9333d77573485c drivers/scsi/ufs/ufshcd.c Venkat Gopalakrishnan 2019-11-14  5292  	return retval;
6ccf44fe4cd7c4 drivers/scsi/ufs/ufshcd.c Seungwon Jeon         2013-06-26  5293  }

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH] scsi: ufs: Split the drivers/scsi/ufs directory
  2022-05-11 21:25 [PATCH] scsi: ufs: Split the drivers/scsi/ufs directory Bart Van Assche
@ 2022-05-12 15:59 ` kernel test robot
  2022-05-12 17:18   ` Bart Van Assche
  2022-05-18 18:33 ` Avri Altman
                   ` (4 subsequent siblings)
  5 siblings, 1 reply; 11+ messages in thread
From: kernel test robot @ 2022-05-12 15:59 UTC (permalink / raw)
  To: Bart Van Assche; +Cc: llvm, kbuild-all

Hi Bart,

I love your patch! Perhaps something to improve:

[auto build test WARNING on mkp-scsi/for-next]
[also build test WARNING on jejb-scsi/for-next next-20220512]
[cannot apply to krzk/for-next linus/master v5.18-rc6]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/intel-lab-lkp/linux/commits/Bart-Van-Assche/scsi-ufs-Split-the-drivers-scsi-ufs-directory/20220512-052804
base:   https://git.kernel.org/pub/scm/linux/kernel/git/mkp/scsi.git for-next
config: hexagon-randconfig-r004-20220512 (https://download.01.org/0day-ci/archive/20220512/202205122323.RcDb4pBm-lkp@intel.com/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 18dd123c56754edf62c7042dcf23185c3727610f)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/intel-lab-lkp/linux/commit/b98a645cfa384db24dba861841b56b9660939aa1
        git remote add linux-review https://github.com/intel-lab-lkp/linux
        git fetch --no-tags linux-review Bart-Van-Assche/scsi-ufs-Split-the-drivers-scsi-ufs-directory/20220512-052804
        git checkout b98a645cfa384db24dba861841b56b9660939aa1
        # save the config file
        mkdir build_dir && cp config build_dir/.config
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=hexagon SHELL=/bin/bash drivers/ufs/host/

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

>> drivers/ufs/host/tc-dwc-g210-pltfrm.c:36:34: warning: unused variable 'tc_dwc_g210_pltfm_match' [-Wunused-const-variable]
   static const struct of_device_id tc_dwc_g210_pltfm_match[] = {
                                    ^
   1 warning generated.


vim +/tc_dwc_g210_pltfm_match +36 drivers/ufs/host/tc-dwc-g210-pltfrm.c

fc040a3fc47cad drivers/scsi/ufs/tc-dwc-g210-pltfrm.c Joao Pinto 2016-05-11  35  
fc040a3fc47cad drivers/scsi/ufs/tc-dwc-g210-pltfrm.c Joao Pinto 2016-05-11 @36  static const struct of_device_id tc_dwc_g210_pltfm_match[] = {
fc040a3fc47cad drivers/scsi/ufs/tc-dwc-g210-pltfrm.c Joao Pinto 2016-05-11  37  	{
fc040a3fc47cad drivers/scsi/ufs/tc-dwc-g210-pltfrm.c Joao Pinto 2016-05-11  38  		.compatible = "snps,g210-tc-6.00-20bit",
fc040a3fc47cad drivers/scsi/ufs/tc-dwc-g210-pltfrm.c Joao Pinto 2016-05-11  39  		.data = &tc_dwc_g210_20bit_pltfm_hba_vops,
fc040a3fc47cad drivers/scsi/ufs/tc-dwc-g210-pltfrm.c Joao Pinto 2016-05-11  40  	},
fc040a3fc47cad drivers/scsi/ufs/tc-dwc-g210-pltfrm.c Joao Pinto 2016-05-11  41  	{
fc040a3fc47cad drivers/scsi/ufs/tc-dwc-g210-pltfrm.c Joao Pinto 2016-05-11  42  		.compatible = "snps,g210-tc-6.00-40bit",
fc040a3fc47cad drivers/scsi/ufs/tc-dwc-g210-pltfrm.c Joao Pinto 2016-05-11  43  		.data = &tc_dwc_g210_40bit_pltfm_hba_vops,
fc040a3fc47cad drivers/scsi/ufs/tc-dwc-g210-pltfrm.c Joao Pinto 2016-05-11  44  	},
fc040a3fc47cad drivers/scsi/ufs/tc-dwc-g210-pltfrm.c Joao Pinto 2016-05-11  45  	{ },
fc040a3fc47cad drivers/scsi/ufs/tc-dwc-g210-pltfrm.c Joao Pinto 2016-05-11  46  };
fc040a3fc47cad drivers/scsi/ufs/tc-dwc-g210-pltfrm.c Joao Pinto 2016-05-11  47  MODULE_DEVICE_TABLE(of, tc_dwc_g210_pltfm_match);
fc040a3fc47cad drivers/scsi/ufs/tc-dwc-g210-pltfrm.c Joao Pinto 2016-05-11  48  

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH] scsi: ufs: Split the drivers/scsi/ufs directory
  2022-05-12 15:59 ` kernel test robot
@ 2022-05-12 17:18   ` Bart Van Assche
  0 siblings, 0 replies; 11+ messages in thread
From: Bart Van Assche @ 2022-05-12 17:18 UTC (permalink / raw)
  To: linux-scsi

On 5/12/22 08:59, kernel test robot wrote:
> All warnings (new ones prefixed by >>):
> 
>>> drivers/ufs/host/tc-dwc-g210-pltfrm.c:36:34: warning: unused variable 'tc_dwc_g210_pltfm_match' [-Wunused-const-variable]
>     static const struct of_device_id tc_dwc_g210_pltfm_match[] = {
>                                      ^
>     1 warning generated.

Regarding the three warnings reported for this patch: I consider the 
issues from these reports as out of scope for this patch since this 
patch only moves code around and the reported issues have been 
introduced a long time ago.

Thanks,

Bart.



^ permalink raw reply	[flat|nested] 11+ messages in thread

* RE: [PATCH] scsi: ufs: Split the drivers/scsi/ufs directory
  2022-05-11 21:25 [PATCH] scsi: ufs: Split the drivers/scsi/ufs directory Bart Van Assche
  2022-05-12 15:59 ` kernel test robot
@ 2022-05-18 18:33 ` Avri Altman
  2022-05-19  9:07 ` Bean Huo
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 11+ messages in thread
From: Avri Altman @ 2022-05-18 18:33 UTC (permalink / raw)
  To: Bart Van Assche, Martin K . Petersen
  Cc: Jaegeuk Kim, Adrian Hunter, linux-scsi, Bean Huo,
	Bjorn Andersson, Keoseong Park

 
> Split the drivers/scsi/ufs directory into 'core' and 'host' directories
> under the drivers/ufs/ directory. Move shared header files into the
> include/ufs/ directory. This separation makes it clear which header
> files UFS drivers are allowed to include (include/ufs/*.h) and which
> header files UFS drivers are not allowed to include
> (drivers/ufs/core/*.h).
> 
> Update the MAINTAINERS file. Add myself as a UFS reviewer.
> 
> Cc: Adrian Hunter <adrian.hunter@intel.com>
> Cc: Avri Altman <avri.altman@wdc.com>
> Cc: Bean Huo <beanhuo@micron.com>
> Cc: Bjorn Andersson <bjorn.andersson@linaro.org>
> Cc: Keoseong Park <keosung.park@samsung.com>
> Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Acked-by: Avri Altman <avri.altman@wdc.com>

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH] scsi: ufs: Split the drivers/scsi/ufs directory
  2022-05-11 21:25 [PATCH] scsi: ufs: Split the drivers/scsi/ufs directory Bart Van Assche
  2022-05-12 15:59 ` kernel test robot
  2022-05-18 18:33 ` Avri Altman
@ 2022-05-19  9:07 ` Bean Huo
  2022-05-19 12:09 ` Adrian Hunter
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 11+ messages in thread
From: Bean Huo @ 2022-05-19  9:07 UTC (permalink / raw)
  To: Bart Van Assche, Martin K . Petersen
  Cc: Jaegeuk Kim, Adrian Hunter, linux-scsi, Avri Altman, Bean Huo,
	Bjorn Andersson, Keoseong Park

On Wed, 2022-05-11 at 14:25 -0700, Bart Van Assche wrote:
> Split the drivers/scsi/ufs directory into 'core' and 'host'
> directories
> under the drivers/ufs/ directory. Move shared header files into the
> include/ufs/ directory. This separation makes it clear which header
> files UFS drivers are allowed to include (include/ufs/*.h) and which
> header files UFS drivers are not allowed to include
> (drivers/ufs/core/*.h).
> 
> Update the MAINTAINERS file. Add myself as a UFS reviewer.
> 
> Cc: Adrian Hunter <adrian.hunter@intel.com>
> Cc: Avri Altman <avri.altman@wdc.com>
> Cc: Bean Huo <beanhuo@micron.com>
> Cc: Bjorn Andersson <bjorn.andersson@linaro.org>
> Cc: Keoseong Park <keosung.park@samsung.com>
> Signed-off-by: Bart Van Assche <bvanassche@acm.org>

Tested-by: Bean Huo <beanhuo@micron.com>
Reviewed-by: Bean Huo <beanhuo@micron.com>


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH] scsi: ufs: Split the drivers/scsi/ufs directory
  2022-05-11 21:25 [PATCH] scsi: ufs: Split the drivers/scsi/ufs directory Bart Van Assche
                   ` (2 preceding siblings ...)
  2022-05-19  9:07 ` Bean Huo
@ 2022-05-19 12:09 ` Adrian Hunter
  2022-05-20  0:28 ` Martin K. Petersen
  2022-05-24  3:27 ` Martin K. Petersen
  5 siblings, 0 replies; 11+ messages in thread
From: Adrian Hunter @ 2022-05-19 12:09 UTC (permalink / raw)
  To: Bart Van Assche, Martin K . Petersen
  Cc: Jaegeuk Kim, linux-scsi, Avri Altman, Bean Huo, Bjorn Andersson,
	Keoseong Park

On 12/05/22 00:25, Bart Van Assche wrote:
> Split the drivers/scsi/ufs directory into 'core' and 'host' directories
> under the drivers/ufs/ directory. Move shared header files into the
> include/ufs/ directory. This separation makes it clear which header
> files UFS drivers are allowed to include (include/ufs/*.h) and which
> header files UFS drivers are not allowed to include
> (drivers/ufs/core/*.h).
> 
> Update the MAINTAINERS file. Add myself as a UFS reviewer.
> 
> Cc: Adrian Hunter <adrian.hunter@intel.com>
> Cc: Avri Altman <avri.altman@wdc.com>
> Cc: Bean Huo <beanhuo@micron.com>
> Cc: Bjorn Andersson <bjorn.andersson@linaro.org>
> Cc: Keoseong Park <keosung.park@samsung.com>
> Signed-off-by: Bart Van Assche <bvanassche@acm.org>

Tested-by: Adrian Hunter <adrian.hunter@intel.com>
Acked-by: Adrian Hunter <adrian.hunter@intel.com>

> ---
>  MAINTAINERS                                   | 10 ++-
>  drivers/Kconfig                               |  2 +
>  drivers/Makefile                              |  1 +
>  drivers/scsi/Kconfig                          |  1 -
>  drivers/scsi/Makefile                         |  1 -
>  drivers/ufs/Kconfig                           | 30 ++++++++
>  drivers/ufs/Makefile                          |  5 ++
>  drivers/ufs/core/Kconfig                      | 60 +++++++++++++++
>  drivers/ufs/core/Makefile                     | 10 +++
>  drivers/{scsi/ufs => ufs/core}/ufs-debugfs.c  |  2 +-
>  drivers/{scsi/ufs => ufs/core}/ufs-debugfs.h  |  0
>  .../ufs => ufs/core}/ufs-fault-injection.c    |  0
>  .../ufs => ufs/core}/ufs-fault-injection.h    |  0
>  drivers/{scsi/ufs => ufs/core}/ufs-hwmon.c    |  2 +-
>  drivers/{scsi/ufs => ufs/core}/ufs-sysfs.c    |  2 +-
>  drivers/{scsi/ufs => ufs/core}/ufs-sysfs.h    |  0
>  drivers/{scsi/ufs => ufs/core}/ufs_bsg.c      |  2 +-
>  drivers/{scsi/ufs => ufs/core}/ufs_bsg.h      |  0
>  .../{scsi/ufs => ufs/core}/ufshcd-crypto.c    |  2 +-
>  .../{scsi/ufs => ufs/core}/ufshcd-crypto.h    |  4 +-
>  drivers/{scsi/ufs => ufs/core}/ufshcd-priv.h  |  2 +-
>  drivers/{scsi/ufs => ufs/core}/ufshcd.c       |  4 +-
>  drivers/{scsi/ufs => ufs/core}/ufshpb.c       |  2 +-
>  drivers/{scsi/ufs => ufs/core}/ufshpb.h       |  0
>  drivers/{scsi/ufs => ufs/host}/Kconfig        | 75 +------------------
>  drivers/{scsi/ufs => ufs/host}/Makefile       | 12 ---
>  drivers/{scsi/ufs => ufs/host}/cdns-pltfrm.c  |  0
>  .../{scsi/ufs => ufs/host}/tc-dwc-g210-pci.c  |  2 +-
>  .../ufs => ufs/host}/tc-dwc-g210-pltfrm.c     |  0
>  drivers/{scsi/ufs => ufs/host}/tc-dwc-g210.c  |  4 +-
>  drivers/{scsi/ufs => ufs/host}/tc-dwc-g210.h  |  0
>  drivers/{scsi/ufs => ufs/host}/ti-j721e-ufs.c |  0
>  drivers/{scsi/ufs => ufs/host}/ufs-exynos.c   |  6 +-
>  drivers/{scsi/ufs => ufs/host}/ufs-exynos.h   |  0
>  drivers/{scsi/ufs => ufs/host}/ufs-hisi.c     |  8 +-
>  drivers/{scsi/ufs => ufs/host}/ufs-hisi.h     |  0
>  .../ufs => ufs/host}/ufs-mediatek-trace.h     |  2 +-
>  drivers/{scsi/ufs => ufs/host}/ufs-mediatek.c |  6 +-
>  drivers/{scsi/ufs => ufs/host}/ufs-mediatek.h |  0
>  drivers/{scsi/ufs => ufs/host}/ufs-qcom-ice.c |  0
>  drivers/{scsi/ufs => ufs/host}/ufs-qcom.c     |  8 +-
>  drivers/{scsi/ufs => ufs/host}/ufs-qcom.h     |  2 +-
>  drivers/{scsi/ufs => ufs/host}/ufshcd-dwc.c   |  4 +-
>  drivers/{scsi/ufs => ufs/host}/ufshcd-dwc.h   |  2 +-
>  drivers/{scsi/ufs => ufs/host}/ufshcd-pci.c   |  2 +-
>  .../{scsi/ufs => ufs/host}/ufshcd-pltfrm.c    |  4 +-
>  .../{scsi/ufs => ufs/host}/ufshcd-pltfrm.h    |  2 +-
>  drivers/{scsi/ufs => ufs/host}/ufshci-dwc.h   |  0
>  {drivers/scsi => include}/ufs/ufs.h           |  0
>  {drivers/scsi => include}/ufs/ufs_quirks.h    |  0
>  {drivers/scsi => include}/ufs/ufshcd.h        |  8 +-
>  {drivers/scsi => include}/ufs/ufshci.h        |  0
>  {drivers/scsi => include}/ufs/unipro.h        |  0
>  53 files changed, 156 insertions(+), 133 deletions(-)
>  create mode 100644 drivers/ufs/Kconfig
>  create mode 100644 drivers/ufs/Makefile
>  create mode 100644 drivers/ufs/core/Kconfig
>  create mode 100644 drivers/ufs/core/Makefile
>  rename drivers/{scsi/ufs => ufs/core}/ufs-debugfs.c (99%)
>  rename drivers/{scsi/ufs => ufs/core}/ufs-debugfs.h (100%)
>  rename drivers/{scsi/ufs => ufs/core}/ufs-fault-injection.c (100%)
>  rename drivers/{scsi/ufs => ufs/core}/ufs-fault-injection.h (100%)
>  rename drivers/{scsi/ufs => ufs/core}/ufs-hwmon.c (99%)
>  rename drivers/{scsi/ufs => ufs/core}/ufs-sysfs.c (99%)
>  rename drivers/{scsi/ufs => ufs/core}/ufs-sysfs.h (100%)
>  rename drivers/{scsi/ufs => ufs/core}/ufs_bsg.c (99%)
>  rename drivers/{scsi/ufs => ufs/core}/ufs_bsg.h (100%)
>  rename drivers/{scsi/ufs => ufs/core}/ufshcd-crypto.c (99%)
>  rename drivers/{scsi/ufs => ufs/core}/ufshcd-crypto.h (97%)
>  rename drivers/{scsi/ufs => ufs/core}/ufshcd-priv.h (99%)
>  rename drivers/{scsi/ufs => ufs/core}/ufshcd.c (99%)
>  rename drivers/{scsi/ufs => ufs/core}/ufshpb.c (99%)
>  rename drivers/{scsi/ufs => ufs/core}/ufshpb.h (100%)
>  rename drivers/{scsi/ufs => ufs/host}/Kconfig (56%)
>  rename drivers/{scsi/ufs => ufs/host}/Makefile (56%)
>  rename drivers/{scsi/ufs => ufs/host}/cdns-pltfrm.c (100%)
>  rename drivers/{scsi/ufs => ufs/host}/tc-dwc-g210-pci.c (99%)
>  rename drivers/{scsi/ufs => ufs/host}/tc-dwc-g210-pltfrm.c (100%)
>  rename drivers/{scsi/ufs => ufs/host}/tc-dwc-g210.c (99%)
>  rename drivers/{scsi/ufs => ufs/host}/tc-dwc-g210.h (100%)
>  rename drivers/{scsi/ufs => ufs/host}/ti-j721e-ufs.c (100%)
>  rename drivers/{scsi/ufs => ufs/host}/ufs-exynos.c (99%)
>  rename drivers/{scsi/ufs => ufs/host}/ufs-exynos.h (100%)
>  rename drivers/{scsi/ufs => ufs/host}/ufs-hisi.c (99%)
>  rename drivers/{scsi/ufs => ufs/host}/ufs-hisi.h (100%)
>  rename drivers/{scsi/ufs => ufs/host}/ufs-mediatek-trace.h (93%)
>  rename drivers/{scsi/ufs => ufs/host}/ufs-mediatek.c (99%)
>  rename drivers/{scsi/ufs => ufs/host}/ufs-mediatek.h (100%)
>  rename drivers/{scsi/ufs => ufs/host}/ufs-qcom-ice.c (100%)
>  rename drivers/{scsi/ufs => ufs/host}/ufs-qcom.c (99%)
>  rename drivers/{scsi/ufs => ufs/host}/ufs-qcom.h (99%)
>  rename drivers/{scsi/ufs => ufs/host}/ufshcd-dwc.c (98%)
>  rename drivers/{scsi/ufs => ufs/host}/ufshcd-dwc.h (95%)
>  rename drivers/{scsi/ufs => ufs/host}/ufshcd-pci.c (99%)
>  rename drivers/{scsi/ufs => ufs/host}/ufshcd-pltfrm.c (99%)
>  rename drivers/{scsi/ufs => ufs/host}/ufshcd-pltfrm.h (98%)
>  rename drivers/{scsi/ufs => ufs/host}/ufshci-dwc.h (100%)
>  rename {drivers/scsi => include}/ufs/ufs.h (100%)
>  rename {drivers/scsi => include}/ufs/ufs_quirks.h (100%)
>  rename {drivers/scsi => include}/ufs/ufshcd.h (99%)
>  rename {drivers/scsi => include}/ufs/ufshci.h (100%)
>  rename {drivers/scsi => include}/ufs/unipro.h (100%)
> 
> diff --git a/MAINTAINERS b/MAINTAINERS
> index ca9d56121974..483a57da1f16 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -2547,7 +2547,7 @@ F:	drivers/pci/controller/dwc/pcie-qcom.c
>  F:	drivers/phy/qualcomm/
>  F:	drivers/power/*/msm*
>  F:	drivers/reset/reset-qcom-*
> -F:	drivers/scsi/ufs/ufs-qcom*
> +F:	drivers/ufs/host/ufs-qcom*
>  F:	drivers/spi/spi-geni-qcom.c
>  F:	drivers/spi/spi-qcom-qspi.c
>  F:	drivers/spi/spi-qup.c
> @@ -17558,6 +17558,7 @@ T:	git git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi.git
>  T:	git git://git.kernel.org/pub/scm/linux/kernel/git/mkp/scsi.git
>  F:	Documentation/devicetree/bindings/scsi/
>  F:	drivers/scsi/
> +F:	drivers/ufs/
>  F:	include/scsi/
>  
>  SCSI TAPE DRIVER
> @@ -20199,24 +20200,25 @@ F:	include/linux/visorbus.h
>  UNIVERSAL FLASH STORAGE HOST CONTROLLER DRIVER
>  R:	Alim Akhtar <alim.akhtar@samsung.com>
>  R:	Avri Altman <avri.altman@wdc.com>
> +R:	Bart Van Assche <bvanassche@acm.org>
>  L:	linux-scsi@vger.kernel.org
>  S:	Supported
>  F:	Documentation/devicetree/bindings/ufs/
>  F:	Documentation/scsi/ufs.rst
> -F:	drivers/scsi/ufs/
> +F:	drivers/ufs/core/
>  
>  UNIVERSAL FLASH STORAGE HOST CONTROLLER DRIVER DWC HOOKS
>  M:	Pedro Sousa <pedrom.sousa@synopsys.com>
>  L:	linux-scsi@vger.kernel.org
>  S:	Supported
> -F:	drivers/scsi/ufs/*dwc*
> +F:	drivers/ufs/host/*dwc*
>  
>  UNIVERSAL FLASH STORAGE HOST CONTROLLER DRIVER MEDIATEK HOOKS
>  M:	Stanley Chu <stanley.chu@mediatek.com>
>  L:	linux-scsi@vger.kernel.org
>  L:	linux-mediatek@lists.infradead.org (moderated for non-subscribers)
>  S:	Maintained
> -F:	drivers/scsi/ufs/ufs-mediatek*
> +F:	drivers/ufs/host/ufs-mediatek*
>  
>  UNSORTED BLOCK IMAGES (UBI)
>  M:	Richard Weinberger <richard@nod.at>
> diff --git a/drivers/Kconfig b/drivers/Kconfig
> index 8d6cd5d08722..a7ec388e1848 100644
> --- a/drivers/Kconfig
> +++ b/drivers/Kconfig
> @@ -107,6 +107,8 @@ source "drivers/usb/Kconfig"
>  
>  source "drivers/mmc/Kconfig"
>  
> +source "drivers/ufs/Kconfig"
> +
>  source "drivers/memstick/Kconfig"
>  
>  source "drivers/leds/Kconfig"
> diff --git a/drivers/Makefile b/drivers/Makefile
> index 020780b6b4d2..8b4b90202e58 100644
> --- a/drivers/Makefile
> +++ b/drivers/Makefile
> @@ -128,6 +128,7 @@ obj-$(CONFIG_PM_OPP)		+= opp/
>  obj-$(CONFIG_CPU_FREQ)		+= cpufreq/
>  obj-$(CONFIG_CPU_IDLE)		+= cpuidle/
>  obj-y				+= mmc/
> +obj-y				+= ufs/
>  obj-$(CONFIG_MEMSTICK)		+= memstick/
>  obj-$(CONFIG_NEW_LEDS)		+= leds/
>  obj-$(CONFIG_INFINIBAND)	+= infiniband/
> diff --git a/drivers/scsi/Kconfig b/drivers/scsi/Kconfig
> index 6e3a04107bb6..a9fe5152addd 100644
> --- a/drivers/scsi/Kconfig
> +++ b/drivers/scsi/Kconfig
> @@ -500,7 +500,6 @@ source "drivers/scsi/megaraid/Kconfig.megaraid"
>  source "drivers/scsi/mpt3sas/Kconfig"
>  source "drivers/scsi/mpi3mr/Kconfig"
>  source "drivers/scsi/smartpqi/Kconfig"
> -source "drivers/scsi/ufs/Kconfig"
>  
>  config SCSI_HPTIOP
>  	tristate "HighPoint RocketRAID 3xxx/4xxx Controller support"
> diff --git a/drivers/scsi/Makefile b/drivers/scsi/Makefile
> index 19814c26c908..2ad3bc052531 100644
> --- a/drivers/scsi/Makefile
> +++ b/drivers/scsi/Makefile
> @@ -101,7 +101,6 @@ obj-$(CONFIG_MEGARAID_NEWGEN)	+= megaraid/
>  obj-$(CONFIG_MEGARAID_SAS)	+= megaraid/
>  obj-$(CONFIG_SCSI_MPT3SAS)	+= mpt3sas/
>  obj-$(CONFIG_SCSI_MPI3MR)	+= mpi3mr/
> -obj-$(CONFIG_SCSI_UFSHCD)	+= ufs/
>  obj-$(CONFIG_SCSI_ACARD)	+= atp870u.o
>  obj-$(CONFIG_SCSI_SUNESP)	+= esp_scsi.o	sun_esp.o
>  obj-$(CONFIG_SCSI_INITIO)	+= initio.o
> diff --git a/drivers/ufs/Kconfig b/drivers/ufs/Kconfig
> new file mode 100644
> index 000000000000..90226f72c158
> --- /dev/null
> +++ b/drivers/ufs/Kconfig
> @@ -0,0 +1,30 @@
> +# SPDX-License-Identifier: GPL-2.0-only
> +#
> +# UFS subsystem configuration
> +#
> +
> +menuconfig SCSI_UFSHCD
> +	tristate "Universal Flash Storage Controller"
> +	depends on SCSI && SCSI_DMA
> +	select PM_DEVFREQ
> +	select DEVFREQ_GOV_SIMPLE_ONDEMAND
> +	select NLS
> +	help
> +	  Enables support for UFS (Universal Flash Storage) host controllers.
> +	  A UFS host controller is an electronic component that is able to
> +	  communicate with a UFS card. UFS host controllers occur in
> +	  smartphones, laptops, digital cameras and also in cars.
> +	  The kernel module will be called ufshcd.
> +
> +	  To compile this driver as a module, choose M here and read
> +	  <file:Documentation/scsi/ufs.rst>.
> +	  However, do not compile this as a module if your root file system
> +	  (the one containing the directory /) is located on a UFS device.
> +
> +if SCSI_UFSHCD
> +
> +source "drivers/ufs/core/Kconfig"
> +
> +source "drivers/ufs/host/Kconfig"
> +
> +endif
> diff --git a/drivers/ufs/Makefile b/drivers/ufs/Makefile
> new file mode 100644
> index 000000000000..5a199ef18d4c
> --- /dev/null
> +++ b/drivers/ufs/Makefile
> @@ -0,0 +1,5 @@
> +# SPDX-License-Identifier: GPL-2.0
> +
> +# The link order is important here. ufshcd-core must initialize
> +# before vendor drivers.
> +obj-$(CONFIG_SCSI_UFSHCD)	+= core/ host/
> diff --git a/drivers/ufs/core/Kconfig b/drivers/ufs/core/Kconfig
> new file mode 100644
> index 000000000000..e11978171403
> --- /dev/null
> +++ b/drivers/ufs/core/Kconfig
> @@ -0,0 +1,60 @@
> +# SPDX-License-Identifier: GPL-2.0+
> +#
> +# Kernel configuration file for the UFS Host Controller core.
> +#
> +# Copyright (C) 2011-2013 Samsung India Software Operations
> +#
> +# Authors:
> +#	Santosh Yaraganavi <santosh.sy@samsung.com>
> +#	Vinayak Holikatti <h.vinayak@samsung.com>
> +
> +config SCSI_UFS_BSG
> +	bool "Universal Flash Storage BSG device node"
> +	select BLK_DEV_BSGLIB
> +	help
> +	  Universal Flash Storage (UFS) is SCSI transport specification for
> +	  accessing flash storage on digital cameras, mobile phones and
> +	  consumer electronic devices.
> +	  A UFS controller communicates with a UFS device by exchanging
> +	  UFS Protocol Information Units (UPIUs).
> +	  UPIUs can not only be used as a transport layer for the SCSI protocol
> +	  but are also used by the UFS native command set.
> +	  This transport driver supports exchanging UFS protocol information units
> +	  with a UFS device. See also the ufshcd driver, which is a SCSI driver
> +	  that supports UFS devices.
> +
> +	  Select this if you need a bsg device node for your UFS controller.
> +	  If unsure, say N.
> +
> +config SCSI_UFS_CRYPTO
> +	bool "UFS Crypto Engine Support"
> +	depends on BLK_INLINE_ENCRYPTION
> +	help
> +	  Enable Crypto Engine Support in UFS.
> +	  Enabling this makes it possible for the kernel to use the crypto
> +	  capabilities of the UFS device (if present) to perform crypto
> +	  operations on data being transferred to/from the device.
> +
> +config SCSI_UFS_HPB
> +	bool "Support UFS Host Performance Booster"
> +	help
> +	  The UFS HPB feature improves random read performance. It caches
> +	  L2P (logical to physical) map of UFS to host DRAM. The driver uses HPB
> +	  read command by piggybacking physical page number for bypassing FTL (flash
> +	  translation layer)'s L2P address translation.
> +
> +config SCSI_UFS_FAULT_INJECTION
> +	bool "UFS Fault Injection Support"
> +	depends on FAULT_INJECTION
> +	help
> +	  Enable fault injection support in the UFS driver. This makes it easier
> +	  to test the UFS error handler and abort handler.
> +
> +config SCSI_UFS_HWMON
> +	bool "UFS Temperature Notification"
> +	depends on SCSI_UFSHCD=HWMON || HWMON=y
> +	help
> +	  This provides support for UFS hardware monitoring. If enabled,
> +	  a hardware monitoring device will be created for the UFS device.
> +
> +	  If unsure, say N.
> diff --git a/drivers/ufs/core/Makefile b/drivers/ufs/core/Makefile
> new file mode 100644
> index 000000000000..62f38c5bf857
> --- /dev/null
> +++ b/drivers/ufs/core/Makefile
> @@ -0,0 +1,10 @@
> +# SPDX-License-Identifier: GPL-2.0
> +
> +obj-$(CONFIG_SCSI_UFSHCD)		+= ufshcd-core.o
> +ufshcd-core-y				+= ufshcd.o ufs-sysfs.o
> +ufshcd-core-$(CONFIG_DEBUG_FS)		+= ufs-debugfs.o
> +ufshcd-core-$(CONFIG_SCSI_UFS_BSG)	+= ufs_bsg.o
> +ufshcd-core-$(CONFIG_SCSI_UFS_CRYPTO)	+= ufshcd-crypto.o
> +ufshcd-core-$(CONFIG_SCSI_UFS_HPB)	+= ufshpb.o
> +ufshcd-core-$(CONFIG_SCSI_UFS_FAULT_INJECTION) += ufs-fault-injection.o
> +ufshcd-core-$(CONFIG_SCSI_UFS_HWMON)	+= ufs-hwmon.o
> diff --git a/drivers/scsi/ufs/ufs-debugfs.c b/drivers/ufs/core/ufs-debugfs.c
> similarity index 99%
> rename from drivers/scsi/ufs/ufs-debugfs.c
> rename to drivers/ufs/core/ufs-debugfs.c
> index c10a8f09682b..e3baed6c70bd 100644
> --- a/drivers/scsi/ufs/ufs-debugfs.c
> +++ b/drivers/ufs/core/ufs-debugfs.c
> @@ -4,7 +4,7 @@
>  #include <linux/debugfs.h>
>  
>  #include "ufs-debugfs.h"
> -#include "ufshcd.h"
> +#include <ufs/ufshcd.h>
>  #include "ufshcd-priv.h"
>  
>  static struct dentry *ufs_debugfs_root;
> diff --git a/drivers/scsi/ufs/ufs-debugfs.h b/drivers/ufs/core/ufs-debugfs.h
> similarity index 100%
> rename from drivers/scsi/ufs/ufs-debugfs.h
> rename to drivers/ufs/core/ufs-debugfs.h
> diff --git a/drivers/scsi/ufs/ufs-fault-injection.c b/drivers/ufs/core/ufs-fault-injection.c
> similarity index 100%
> rename from drivers/scsi/ufs/ufs-fault-injection.c
> rename to drivers/ufs/core/ufs-fault-injection.c
> diff --git a/drivers/scsi/ufs/ufs-fault-injection.h b/drivers/ufs/core/ufs-fault-injection.h
> similarity index 100%
> rename from drivers/scsi/ufs/ufs-fault-injection.h
> rename to drivers/ufs/core/ufs-fault-injection.h
> diff --git a/drivers/scsi/ufs/ufs-hwmon.c b/drivers/ufs/core/ufs-hwmon.c
> similarity index 99%
> rename from drivers/scsi/ufs/ufs-hwmon.c
> rename to drivers/ufs/core/ufs-hwmon.c
> index c38d9d98a86d..4c6a872b7a7c 100644
> --- a/drivers/scsi/ufs/ufs-hwmon.c
> +++ b/drivers/ufs/core/ufs-hwmon.c
> @@ -7,7 +7,7 @@
>  #include <linux/hwmon.h>
>  #include <linux/units.h>
>  
> -#include "ufshcd.h"
> +#include <ufs/ufshcd.h>
>  #include "ufshcd-priv.h"
>  
>  struct ufs_hwmon_data {
> diff --git a/drivers/scsi/ufs/ufs-sysfs.c b/drivers/ufs/core/ufs-sysfs.c
> similarity index 99%
> rename from drivers/scsi/ufs/ufs-sysfs.c
> rename to drivers/ufs/core/ufs-sysfs.c
> index 8a3c6442f291..0a088b47d557 100644
> --- a/drivers/scsi/ufs/ufs-sysfs.c
> +++ b/drivers/ufs/core/ufs-sysfs.c
> @@ -6,7 +6,7 @@
>  #include <linux/bitfield.h>
>  #include <asm/unaligned.h>
>  
> -#include "ufs.h"
> +#include <ufs/ufs.h>
>  #include "ufs-sysfs.h"
>  #include "ufshcd-priv.h"
>  
> diff --git a/drivers/scsi/ufs/ufs-sysfs.h b/drivers/ufs/core/ufs-sysfs.h
> similarity index 100%
> rename from drivers/scsi/ufs/ufs-sysfs.h
> rename to drivers/ufs/core/ufs-sysfs.h
> diff --git a/drivers/scsi/ufs/ufs_bsg.c b/drivers/ufs/core/ufs_bsg.c
> similarity index 99%
> rename from drivers/scsi/ufs/ufs_bsg.c
> rename to drivers/ufs/core/ufs_bsg.c
> index 9e9b93867cab..b99e3f3dc4ef 100644
> --- a/drivers/scsi/ufs/ufs_bsg.c
> +++ b/drivers/ufs/core/ufs_bsg.c
> @@ -9,7 +9,7 @@
>  #include <scsi/scsi.h>
>  #include <scsi/scsi_host.h>
>  #include "ufs_bsg.h"
> -#include "ufshcd.h"
> +#include <ufs/ufshcd.h>
>  #include "ufshcd-priv.h"
>  
>  static int ufs_bsg_get_query_desc_size(struct ufs_hba *hba, int *desc_len,
> diff --git a/drivers/scsi/ufs/ufs_bsg.h b/drivers/ufs/core/ufs_bsg.h
> similarity index 100%
> rename from drivers/scsi/ufs/ufs_bsg.h
> rename to drivers/ufs/core/ufs_bsg.h
> diff --git a/drivers/scsi/ufs/ufshcd-crypto.c b/drivers/ufs/core/ufshcd-crypto.c
> similarity index 99%
> rename from drivers/scsi/ufs/ufshcd-crypto.c
> rename to drivers/ufs/core/ufshcd-crypto.c
> index 67402baf6fae..198360fe5e8e 100644
> --- a/drivers/scsi/ufs/ufshcd-crypto.c
> +++ b/drivers/ufs/core/ufshcd-crypto.c
> @@ -3,7 +3,7 @@
>   * Copyright 2019 Google LLC
>   */
>  
> -#include "ufshcd.h"
> +#include <ufs/ufshcd.h>
>  #include "ufshcd-crypto.h"
>  
>  /* Blk-crypto modes supported by UFS crypto */
> diff --git a/drivers/scsi/ufs/ufshcd-crypto.h b/drivers/ufs/core/ufshcd-crypto.h
> similarity index 97%
> rename from drivers/scsi/ufs/ufshcd-crypto.h
> rename to drivers/ufs/core/ufshcd-crypto.h
> index 9f98f18f9646..504cc841540b 100644
> --- a/drivers/scsi/ufs/ufshcd-crypto.h
> +++ b/drivers/ufs/core/ufshcd-crypto.h
> @@ -7,9 +7,9 @@
>  #define _UFSHCD_CRYPTO_H
>  
>  #include <scsi/scsi_cmnd.h>
> -#include "ufshcd.h"
> +#include <ufs/ufshcd.h>
>  #include "ufshcd-priv.h"
> -#include "ufshci.h"
> +#include <ufs/ufshci.h>
>  
>  #ifdef CONFIG_SCSI_UFS_CRYPTO
>  
> diff --git a/drivers/scsi/ufs/ufshcd-priv.h b/drivers/ufs/core/ufshcd-priv.h
> similarity index 99%
> rename from drivers/scsi/ufs/ufshcd-priv.h
> rename to drivers/ufs/core/ufshcd-priv.h
> index 38bc77d3dbbd..ffb01fc6de75 100644
> --- a/drivers/scsi/ufs/ufshcd-priv.h
> +++ b/drivers/ufs/core/ufshcd-priv.h
> @@ -4,7 +4,7 @@
>  #define _UFSHCD_PRIV_H_
>  
>  #include <linux/pm_runtime.h>
> -#include "ufshcd.h"
> +#include <ufs/ufshcd.h>
>  
>  static inline bool ufshcd_is_user_access_allowed(struct ufs_hba *hba)
>  {
> diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/ufs/core/ufshcd.c
> similarity index 99%
> rename from drivers/scsi/ufs/ufshcd.c
> rename to drivers/ufs/core/ufshcd.c
> index 1fb3a8b9b03e..efe67a381c32 100644
> --- a/drivers/scsi/ufs/ufshcd.c
> +++ b/drivers/ufs/core/ufshcd.c
> @@ -26,8 +26,8 @@
>  #include <scsi/scsi_driver.h>
>  #include <scsi/scsi_eh.h>
>  #include "ufshcd-priv.h"
> -#include "ufs_quirks.h"
> -#include "unipro.h"
> +#include <ufs/ufs_quirks.h>
> +#include <ufs/unipro.h>
>  #include "ufs-sysfs.h"
>  #include "ufs-debugfs.h"
>  #include "ufs-fault-injection.h"
> diff --git a/drivers/scsi/ufs/ufshpb.c b/drivers/ufs/core/ufshpb.c
> similarity index 99%
> rename from drivers/scsi/ufs/ufshpb.c
> rename to drivers/ufs/core/ufshpb.c
> index f1f65383e97d..aee0ec4cee70 100644
> --- a/drivers/scsi/ufs/ufshpb.c
> +++ b/drivers/ufs/core/ufshpb.c
> @@ -17,7 +17,7 @@
>  
>  #include "ufshcd-priv.h"
>  #include "ufshpb.h"
> -#include "../sd.h"
> +#include "../../scsi/sd.h"
>  
>  #define ACTIVATION_THRESHOLD 8 /* 8 IOs */
>  #define READ_TO_MS 1000
> diff --git a/drivers/scsi/ufs/ufshpb.h b/drivers/ufs/core/ufshpb.h
> similarity index 100%
> rename from drivers/scsi/ufs/ufshpb.h
> rename to drivers/ufs/core/ufshpb.h
> diff --git a/drivers/scsi/ufs/Kconfig b/drivers/ufs/host/Kconfig
> similarity index 56%
> rename from drivers/scsi/ufs/Kconfig
> rename to drivers/ufs/host/Kconfig
> index 393b9a01da36..82590224da13 100644
> --- a/drivers/scsi/ufs/Kconfig
> +++ b/drivers/ufs/host/Kconfig
> @@ -1,6 +1,6 @@
>  # SPDX-License-Identifier: GPL-2.0+
>  #
> -# Kernel configuration file for the UFS Host Controller
> +# Kernel configuration file for the UFS host controller drivers.
>  #
>  # Copyright (C) 2011-2013 Samsung India Software Operations
>  #
> @@ -8,26 +8,6 @@
>  #	Santosh Yaraganavi <santosh.sy@samsung.com>
>  #	Vinayak Holikatti <h.vinayak@samsung.com>
>  
> -config SCSI_UFSHCD
> -	tristate "Universal Flash Storage Controller Driver Core"
> -	depends on SCSI && SCSI_DMA
> -	select PM_DEVFREQ
> -	select DEVFREQ_GOV_SIMPLE_ONDEMAND
> -	select NLS
> -	help
> -	  This selects the support for UFS devices in Linux, say Y and make
> -	  sure that you know the name of your UFS host adapter (the card
> -	  inside your computer that "speaks" the UFS protocol, also
> -	  called UFS Host Controller), because you will be asked for it.
> -	  The module will be called ufshcd.
> -
> -	  To compile this driver as a module, choose M here and read
> -	  <file:Documentation/scsi/ufs.rst>.
> -	  However, do not compile this as a module if your root file system
> -	  (the one containing the directory /) is located on a UFS device.
> -
> -if SCSI_UFSHCD
> -
>  config SCSI_UFSHCD_PCI
>  	tristate "PCI bus based UFS Controller support"
>  	depends on PCI
> @@ -122,24 +102,6 @@ config SCSI_UFS_TI_J721E
>  	  Selects this if you have TI platform with UFS controller.
>  	  If unsure, say N.
>  
> -config SCSI_UFS_BSG
> -	bool "Universal Flash Storage BSG device node"
> -	select BLK_DEV_BSGLIB
> -	help
> -	  Universal Flash Storage (UFS) is SCSI transport specification for
> -	  accessing flash storage on digital cameras, mobile phones and
> -	  consumer electronic devices.
> -	  A UFS controller communicates with a UFS device by exchanging
> -	  UFS Protocol Information Units (UPIUs).
> -	  UPIUs can not only be used as a transport layer for the SCSI protocol
> -	  but are also used by the UFS native command set.
> -	  This transport driver supports exchanging UFS protocol information units
> -	  with a UFS device. See also the ufshcd driver, which is a SCSI driver
> -	  that supports UFS devices.
> -
> -	  Select this if you need a bsg device node for your UFS controller.
> -	  If unsure, say N.
> -
>  config SCSI_UFS_EXYNOS
>  	tristate "Exynos specific hooks to UFS controller platform driver"
>  	depends on SCSI_UFSHCD_PLATFORM && (ARCH_EXYNOS || COMPILE_TEST)
> @@ -150,38 +112,3 @@ config SCSI_UFS_EXYNOS
>  
>  	  Select this if you have UFS host controller on Samsung Exynos SoC.
>  	  If unsure, say N.
> -
> -config SCSI_UFS_CRYPTO
> -	bool "UFS Crypto Engine Support"
> -	depends on BLK_INLINE_ENCRYPTION
> -	help
> -	  Enable Crypto Engine Support in UFS.
> -	  Enabling this makes it possible for the kernel to use the crypto
> -	  capabilities of the UFS device (if present) to perform crypto
> -	  operations on data being transferred to/from the device.
> -
> -config SCSI_UFS_HPB
> -	bool "Support UFS Host Performance Booster"
> -	help
> -	  The UFS HPB feature improves random read performance. It caches
> -	  L2P (logical to physical) map of UFS to host DRAM. The driver uses HPB
> -	  read command by piggybacking physical page number for bypassing FTL (flash
> -	  translation layer)'s L2P address translation.
> -
> -config SCSI_UFS_FAULT_INJECTION
> -	bool "UFS Fault Injection Support"
> -	depends on FAULT_INJECTION
> -	help
> -	  Enable fault injection support in the UFS driver. This makes it easier
> -	  to test the UFS error handler and abort handler.
> -
> -config SCSI_UFS_HWMON
> -	bool "UFS Temperature Notification"
> -	depends on SCSI_UFSHCD=HWMON || HWMON=y
> -	help
> -	  This provides support for UFS hardware monitoring. If enabled,
> -	  a hardware monitoring device will be created for the UFS device.
> -
> -	  If unsure, say N.
> -
> -endif
> diff --git a/drivers/scsi/ufs/Makefile b/drivers/ufs/host/Makefile
> similarity index 56%
> rename from drivers/scsi/ufs/Makefile
> rename to drivers/ufs/host/Makefile
> index 966048875b50..e4be54273c98 100644
> --- a/drivers/scsi/ufs/Makefile
> +++ b/drivers/ufs/host/Makefile
> @@ -1,16 +1,4 @@
>  # SPDX-License-Identifier: GPL-2.0
> -# UFSHCD makefile
> -
> -# The link order is important here. ufshcd-core must initialize
> -# before vendor drivers.
> -obj-$(CONFIG_SCSI_UFSHCD)		+= ufshcd-core.o
> -ufshcd-core-y				+= ufshcd.o ufs-sysfs.o
> -ufshcd-core-$(CONFIG_DEBUG_FS)		+= ufs-debugfs.o
> -ufshcd-core-$(CONFIG_SCSI_UFS_BSG)	+= ufs_bsg.o
> -ufshcd-core-$(CONFIG_SCSI_UFS_CRYPTO)	+= ufshcd-crypto.o
> -ufshcd-core-$(CONFIG_SCSI_UFS_HPB)	+= ufshpb.o
> -ufshcd-core-$(CONFIG_SCSI_UFS_FAULT_INJECTION) += ufs-fault-injection.o
> -ufshcd-core-$(CONFIG_SCSI_UFS_HWMON) += ufs-hwmon.o
>  
>  obj-$(CONFIG_SCSI_UFS_DWC_TC_PCI) += tc-dwc-g210-pci.o ufshcd-dwc.o tc-dwc-g210.o
>  obj-$(CONFIG_SCSI_UFS_DWC_TC_PLATFORM) += tc-dwc-g210-pltfrm.o ufshcd-dwc.o tc-dwc-g210.o
> diff --git a/drivers/scsi/ufs/cdns-pltfrm.c b/drivers/ufs/host/cdns-pltfrm.c
> similarity index 100%
> rename from drivers/scsi/ufs/cdns-pltfrm.c
> rename to drivers/ufs/host/cdns-pltfrm.c
> diff --git a/drivers/scsi/ufs/tc-dwc-g210-pci.c b/drivers/ufs/host/tc-dwc-g210-pci.c
> similarity index 99%
> rename from drivers/scsi/ufs/tc-dwc-g210-pci.c
> rename to drivers/ufs/host/tc-dwc-g210-pci.c
> index e635c211c783..92b8ad4b58fe 100644
> --- a/drivers/scsi/ufs/tc-dwc-g210-pci.c
> +++ b/drivers/ufs/host/tc-dwc-g210-pci.c
> @@ -7,7 +7,7 @@
>   * Authors: Joao Pinto <jpinto@synopsys.com>
>   */
>  
> -#include "ufshcd.h"
> +#include <ufs/ufshcd.h>
>  #include "ufshcd-dwc.h"
>  #include "tc-dwc-g210.h"
>  
> diff --git a/drivers/scsi/ufs/tc-dwc-g210-pltfrm.c b/drivers/ufs/host/tc-dwc-g210-pltfrm.c
> similarity index 100%
> rename from drivers/scsi/ufs/tc-dwc-g210-pltfrm.c
> rename to drivers/ufs/host/tc-dwc-g210-pltfrm.c
> diff --git a/drivers/scsi/ufs/tc-dwc-g210.c b/drivers/ufs/host/tc-dwc-g210.c
> similarity index 99%
> rename from drivers/scsi/ufs/tc-dwc-g210.c
> rename to drivers/ufs/host/tc-dwc-g210.c
> index 7ef67c9fc5b8..deb93dbd83a4 100644
> --- a/drivers/scsi/ufs/tc-dwc-g210.c
> +++ b/drivers/ufs/host/tc-dwc-g210.c
> @@ -9,8 +9,8 @@
>  
>  #include <linux/module.h>
>  
> -#include "ufshcd.h"
> -#include "unipro.h"
> +#include <ufs/ufshcd.h>
> +#include <ufs/unipro.h>
>  
>  #include "ufshcd-dwc.h"
>  #include "ufshci-dwc.h"
> diff --git a/drivers/scsi/ufs/tc-dwc-g210.h b/drivers/ufs/host/tc-dwc-g210.h
> similarity index 100%
> rename from drivers/scsi/ufs/tc-dwc-g210.h
> rename to drivers/ufs/host/tc-dwc-g210.h
> diff --git a/drivers/scsi/ufs/ti-j721e-ufs.c b/drivers/ufs/host/ti-j721e-ufs.c
> similarity index 100%
> rename from drivers/scsi/ufs/ti-j721e-ufs.c
> rename to drivers/ufs/host/ti-j721e-ufs.c
> diff --git a/drivers/scsi/ufs/ufs-exynos.c b/drivers/ufs/host/ufs-exynos.c
> similarity index 99%
> rename from drivers/scsi/ufs/ufs-exynos.c
> rename to drivers/ufs/host/ufs-exynos.c
> index ddb2d42605c5..a81d8cbd542f 100644
> --- a/drivers/scsi/ufs/ufs-exynos.c
> +++ b/drivers/ufs/host/ufs-exynos.c
> @@ -18,10 +18,10 @@
>  #include <linux/platform_device.h>
>  #include <linux/regmap.h>
>  
> -#include "ufshcd.h"
> +#include <ufs/ufshcd.h>
>  #include "ufshcd-pltfrm.h"
> -#include "ufshci.h"
> -#include "unipro.h"
> +#include <ufs/ufshci.h>
> +#include <ufs/unipro.h>
>  
>  #include "ufs-exynos.h"
>  
> diff --git a/drivers/scsi/ufs/ufs-exynos.h b/drivers/ufs/host/ufs-exynos.h
> similarity index 100%
> rename from drivers/scsi/ufs/ufs-exynos.h
> rename to drivers/ufs/host/ufs-exynos.h
> diff --git a/drivers/scsi/ufs/ufs-hisi.c b/drivers/ufs/host/ufs-hisi.c
> similarity index 99%
> rename from drivers/scsi/ufs/ufs-hisi.c
> rename to drivers/ufs/host/ufs-hisi.c
> index 7046143063ee..2eed13bc82ca 100644
> --- a/drivers/scsi/ufs/ufs-hisi.c
> +++ b/drivers/ufs/host/ufs-hisi.c
> @@ -15,12 +15,12 @@
>  #include <linux/platform_device.h>
>  #include <linux/reset.h>
>  
> -#include "ufshcd.h"
> +#include <ufs/ufshcd.h>
>  #include "ufshcd-pltfrm.h"
> -#include "unipro.h"
> +#include <ufs/unipro.h>
>  #include "ufs-hisi.h"
> -#include "ufshci.h"
> -#include "ufs_quirks.h"
> +#include <ufs/ufshci.h>
> +#include <ufs/ufs_quirks.h>
>  
>  static int ufs_hisi_check_hibern8(struct ufs_hba *hba)
>  {
> diff --git a/drivers/scsi/ufs/ufs-hisi.h b/drivers/ufs/host/ufs-hisi.h
> similarity index 100%
> rename from drivers/scsi/ufs/ufs-hisi.h
> rename to drivers/ufs/host/ufs-hisi.h
> diff --git a/drivers/scsi/ufs/ufs-mediatek-trace.h b/drivers/ufs/host/ufs-mediatek-trace.h
> similarity index 93%
> rename from drivers/scsi/ufs/ufs-mediatek-trace.h
> rename to drivers/ufs/host/ufs-mediatek-trace.h
> index 895e82ea6ece..7e010848dc99 100644
> --- a/drivers/scsi/ufs/ufs-mediatek-trace.h
> +++ b/drivers/ufs/host/ufs-mediatek-trace.h
> @@ -31,6 +31,6 @@ TRACE_EVENT(ufs_mtk_event,
>  
>  #undef TRACE_INCLUDE_PATH
>  #undef TRACE_INCLUDE_FILE
> -#define TRACE_INCLUDE_PATH ../../drivers/scsi/ufs/
> +#define TRACE_INCLUDE_PATH ../../drivers/ufs/host
>  #define TRACE_INCLUDE_FILE ufs-mediatek-trace
>  #include <trace/define_trace.h>
> diff --git a/drivers/scsi/ufs/ufs-mediatek.c b/drivers/ufs/host/ufs-mediatek.c
> similarity index 99%
> rename from drivers/scsi/ufs/ufs-mediatek.c
> rename to drivers/ufs/host/ufs-mediatek.c
> index 083d6bd4d561..beabc3ccd30b 100644
> --- a/drivers/scsi/ufs/ufs-mediatek.c
> +++ b/drivers/ufs/host/ufs-mediatek.c
> @@ -21,10 +21,10 @@
>  #include <linux/sched/clock.h>
>  #include <linux/soc/mediatek/mtk_sip_svc.h>
>  
> -#include "ufshcd.h"
> +#include <ufs/ufshcd.h>
>  #include "ufshcd-pltfrm.h"
> -#include "ufs_quirks.h"
> -#include "unipro.h"
> +#include <ufs/ufs_quirks.h>
> +#include <ufs/unipro.h>
>  #include "ufs-mediatek.h"
>  
>  #define CREATE_TRACE_POINTS
> diff --git a/drivers/scsi/ufs/ufs-mediatek.h b/drivers/ufs/host/ufs-mediatek.h
> similarity index 100%
> rename from drivers/scsi/ufs/ufs-mediatek.h
> rename to drivers/ufs/host/ufs-mediatek.h
> diff --git a/drivers/scsi/ufs/ufs-qcom-ice.c b/drivers/ufs/host/ufs-qcom-ice.c
> similarity index 100%
> rename from drivers/scsi/ufs/ufs-qcom-ice.c
> rename to drivers/ufs/host/ufs-qcom-ice.c
> diff --git a/drivers/scsi/ufs/ufs-qcom.c b/drivers/ufs/host/ufs-qcom.c
> similarity index 99%
> rename from drivers/scsi/ufs/ufs-qcom.c
> rename to drivers/ufs/host/ufs-qcom.c
> index 4dcb232facaa..f10d4668814c 100644
> --- a/drivers/scsi/ufs/ufs-qcom.c
> +++ b/drivers/ufs/host/ufs-qcom.c
> @@ -15,12 +15,12 @@
>  #include <linux/reset-controller.h>
>  #include <linux/devfreq.h>
>  
> -#include "ufshcd.h"
> +#include <ufs/ufshcd.h>
>  #include "ufshcd-pltfrm.h"
> -#include "unipro.h"
> +#include <ufs/unipro.h>
>  #include "ufs-qcom.h"
> -#include "ufshci.h"
> -#include "ufs_quirks.h"
> +#include <ufs/ufshci.h>
> +#include <ufs/ufs_quirks.h>
>  
>  #define UFS_QCOM_DEFAULT_DBG_PRINT_EN	\
>  	(UFS_QCOM_DBG_PRINT_REGS_EN | UFS_QCOM_DBG_PRINT_TEST_BUS_EN)
> diff --git a/drivers/scsi/ufs/ufs-qcom.h b/drivers/ufs/host/ufs-qcom.h
> similarity index 99%
> rename from drivers/scsi/ufs/ufs-qcom.h
> rename to drivers/ufs/host/ufs-qcom.h
> index 771bc95d02c7..44466a395bb5 100644
> --- a/drivers/scsi/ufs/ufs-qcom.h
> +++ b/drivers/ufs/host/ufs-qcom.h
> @@ -7,7 +7,7 @@
>  
>  #include <linux/reset-controller.h>
>  #include <linux/reset.h>
> -#include "ufshcd.h"
> +#include <ufs/ufshcd.h>
>  
>  #define MAX_UFS_QCOM_HOSTS	1
>  #define MAX_U32                 (~(u32)0)
> diff --git a/drivers/scsi/ufs/ufshcd-dwc.c b/drivers/ufs/host/ufshcd-dwc.c
> similarity index 98%
> rename from drivers/scsi/ufs/ufshcd-dwc.c
> rename to drivers/ufs/host/ufshcd-dwc.c
> index a57973c8d2a1..e28a67e1e314 100644
> --- a/drivers/scsi/ufs/ufshcd-dwc.c
> +++ b/drivers/ufs/host/ufshcd-dwc.c
> @@ -9,8 +9,8 @@
>  
>  #include <linux/module.h>
>  
> -#include "ufshcd.h"
> -#include "unipro.h"
> +#include <ufs/ufshcd.h>
> +#include <ufs/unipro.h>
>  
>  #include "ufshcd-dwc.h"
>  #include "ufshci-dwc.h"
> diff --git a/drivers/scsi/ufs/ufshcd-dwc.h b/drivers/ufs/host/ufshcd-dwc.h
> similarity index 95%
> rename from drivers/scsi/ufs/ufshcd-dwc.h
> rename to drivers/ufs/host/ufshcd-dwc.h
> index 43b70794e24f..ad91ea56662c 100644
> --- a/drivers/scsi/ufs/ufshcd-dwc.h
> +++ b/drivers/ufs/host/ufshcd-dwc.h
> @@ -10,7 +10,7 @@
>  #ifndef _UFSHCD_DWC_H
>  #define _UFSHCD_DWC_H
>  
> -#include "ufshcd.h"
> +#include <ufs/ufshcd.h>
>  
>  struct ufshcd_dme_attr_val {
>  	u32 attr_sel;
> diff --git a/drivers/scsi/ufs/ufshcd-pci.c b/drivers/ufs/host/ufshcd-pci.c
> similarity index 99%
> rename from drivers/scsi/ufs/ufshcd-pci.c
> rename to drivers/ufs/host/ufshcd-pci.c
> index 20af2fbc3af1..04166bda41da 100644
> --- a/drivers/scsi/ufs/ufshcd-pci.c
> +++ b/drivers/ufs/host/ufshcd-pci.c
> @@ -9,7 +9,7 @@
>   *	Vinayak Holikatti <h.vinayak@samsung.com>
>   */
>  
> -#include "ufshcd.h"
> +#include <ufs/ufshcd.h>
>  #include <linux/delay.h>
>  #include <linux/module.h>
>  #include <linux/pci.h>
> diff --git a/drivers/scsi/ufs/ufshcd-pltfrm.c b/drivers/ufs/host/ufshcd-pltfrm.c
> similarity index 99%
> rename from drivers/scsi/ufs/ufshcd-pltfrm.c
> rename to drivers/ufs/host/ufshcd-pltfrm.c
> index f5313f407617..e7332cc65b1f 100644
> --- a/drivers/scsi/ufs/ufshcd-pltfrm.c
> +++ b/drivers/ufs/host/ufshcd-pltfrm.c
> @@ -13,9 +13,9 @@
>  #include <linux/pm_runtime.h>
>  #include <linux/of.h>
>  
> -#include "ufshcd.h"
> +#include <ufs/ufshcd.h>
>  #include "ufshcd-pltfrm.h"
> -#include "unipro.h"
> +#include <ufs/unipro.h>
>  
>  #define UFSHCD_DEFAULT_LANES_PER_DIRECTION		2
>  
> diff --git a/drivers/scsi/ufs/ufshcd-pltfrm.h b/drivers/ufs/host/ufshcd-pltfrm.h
> similarity index 98%
> rename from drivers/scsi/ufs/ufshcd-pltfrm.h
> rename to drivers/ufs/host/ufshcd-pltfrm.h
> index c33e28ac6ef6..43c2e412bd99 100644
> --- a/drivers/scsi/ufs/ufshcd-pltfrm.h
> +++ b/drivers/ufs/host/ufshcd-pltfrm.h
> @@ -5,7 +5,7 @@
>  #ifndef UFSHCD_PLTFRM_H_
>  #define UFSHCD_PLTFRM_H_
>  
> -#include "ufshcd.h"
> +#include <ufs/ufshcd.h>
>  
>  #define UFS_PWM_MODE 1
>  #define UFS_HS_MODE  2
> diff --git a/drivers/scsi/ufs/ufshci-dwc.h b/drivers/ufs/host/ufshci-dwc.h
> similarity index 100%
> rename from drivers/scsi/ufs/ufshci-dwc.h
> rename to drivers/ufs/host/ufshci-dwc.h
> diff --git a/drivers/scsi/ufs/ufs.h b/include/ufs/ufs.h
> similarity index 100%
> rename from drivers/scsi/ufs/ufs.h
> rename to include/ufs/ufs.h
> diff --git a/drivers/scsi/ufs/ufs_quirks.h b/include/ufs/ufs_quirks.h
> similarity index 100%
> rename from drivers/scsi/ufs/ufs_quirks.h
> rename to include/ufs/ufs_quirks.h
> diff --git a/drivers/scsi/ufs/ufshcd.h b/include/ufs/ufshcd.h
> similarity index 99%
> rename from drivers/scsi/ufs/ufshcd.h
> rename to include/ufs/ufshcd.h
> index 2b0f3441b813..a92271421718 100644
> --- a/drivers/scsi/ufs/ufshcd.h
> +++ b/include/ufs/ufshcd.h
> @@ -18,10 +18,10 @@
>  #include <linux/devfreq.h>
>  #include <linux/pm_runtime.h>
>  #include <scsi/scsi_device.h>
> -#include "unipro.h"
> -#include "ufs.h"
> -#include "ufs_quirks.h"
> -#include "ufshci.h"
> +#include <ufs/unipro.h>
> +#include <ufs/ufs.h>
> +#include <ufs/ufs_quirks.h>
> +#include <ufs/ufshci.h>
>  
>  #define UFSHCD "ufshcd"
>  
> diff --git a/drivers/scsi/ufs/ufshci.h b/include/ufs/ufshci.h
> similarity index 100%
> rename from drivers/scsi/ufs/ufshci.h
> rename to include/ufs/ufshci.h
> diff --git a/drivers/scsi/ufs/unipro.h b/include/ufs/unipro.h
> similarity index 100%
> rename from drivers/scsi/ufs/unipro.h
> rename to include/ufs/unipro.h


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH] scsi: ufs: Split the drivers/scsi/ufs directory
  2022-05-11 21:25 [PATCH] scsi: ufs: Split the drivers/scsi/ufs directory Bart Van Assche
                   ` (3 preceding siblings ...)
  2022-05-19 12:09 ` Adrian Hunter
@ 2022-05-20  0:28 ` Martin K. Petersen
  2022-05-24  3:27 ` Martin K. Petersen
  5 siblings, 0 replies; 11+ messages in thread
From: Martin K. Petersen @ 2022-05-20  0:28 UTC (permalink / raw)
  To: Bart Van Assche
  Cc: Martin K . Petersen, Jaegeuk Kim, Adrian Hunter, linux-scsi,
	Avri Altman, Bean Huo, Bjorn Andersson, Keoseong Park


Bart,

> Split the drivers/scsi/ufs directory into 'core' and 'host'
> directories under the drivers/ufs/ directory. Move shared header files
> into the include/ufs/ directory. This separation makes it clear which
> header files UFS drivers are allowed to include (include/ufs/*.h) and
> which header files UFS drivers are not allowed to include
> (drivers/ufs/core/*.h).

Applied to 5.19/scsi-staging, thanks!

-- 
Martin K. Petersen	Oracle Linux Engineering

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH] scsi: ufs: Split the drivers/scsi/ufs directory
  2022-05-11 21:25 [PATCH] scsi: ufs: Split the drivers/scsi/ufs directory Bart Van Assche
                   ` (4 preceding siblings ...)
  2022-05-20  0:28 ` Martin K. Petersen
@ 2022-05-24  3:27 ` Martin K. Petersen
  5 siblings, 0 replies; 11+ messages in thread
From: Martin K. Petersen @ 2022-05-24  3:27 UTC (permalink / raw)
  To: Bart Van Assche
  Cc: Martin K . Petersen, Bean Huo, Jaegeuk Kim, linux-scsi,
	Avri Altman, Bjorn Andersson, Keoseong Park, Adrian Hunter

On Wed, 11 May 2022 14:25:52 -0700, Bart Van Assche wrote:

> Split the drivers/scsi/ufs directory into 'core' and 'host' directories
> under the drivers/ufs/ directory. Move shared header files into the
> include/ufs/ directory. This separation makes it clear which header
> files UFS drivers are allowed to include (include/ufs/*.h) and which
> header files UFS drivers are not allowed to include
> (drivers/ufs/core/*.h).
> 
> [...]

Applied to 5.19/scsi-queue, thanks!

[1/1] scsi: ufs: Split the drivers/scsi/ufs directory
      https://git.kernel.org/mkp/scsi/c/dd11376b9f1b

-- 
Martin K. Petersen	Oracle Linux Engineering

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH] scsi: ufs: Split the drivers/scsi/ufs directory
@ 2022-05-13 19:59 kernel test robot
  0 siblings, 0 replies; 11+ messages in thread
From: kernel test robot @ 2022-05-13 19:59 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 21211 bytes --]

CC: llvm(a)lists.linux.dev
CC: kbuild-all(a)lists.01.org
BCC: lkp(a)intel.com
In-Reply-To: <20220511212552.655341-1-bvanassche@acm.org>
References: <20220511212552.655341-1-bvanassche@acm.org>
TO: Bart Van Assche <bvanassche@acm.org>

Hi Bart,

I love your patch! Perhaps something to improve:

[auto build test WARNING on mkp-scsi/for-next]
[also build test WARNING on jejb-scsi/for-next next-20220513]
[cannot apply to krzk/for-next linus/master v5.18-rc6]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/intel-lab-lkp/linux/commits/Bart-Van-Assche/scsi-ufs-Split-the-drivers-scsi-ufs-directory/20220512-052804
base:   https://git.kernel.org/pub/scm/linux/kernel/git/mkp/scsi.git for-next
:::::: branch date: 2 days ago
:::::: commit date: 2 days ago
config: i386-randconfig-c001-20220509 (https://download.01.org/0day-ci/archive/20220514/202205140343.2XpZixya-lkp(a)intel.com/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 18dd123c56754edf62c7042dcf23185c3727610f)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/intel-lab-lkp/linux/commit/b98a645cfa384db24dba861841b56b9660939aa1
        git remote add linux-review https://github.com/intel-lab-lkp/linux
        git fetch --no-tags linux-review Bart-Van-Assche/scsi-ufs-Split-the-drivers-scsi-ufs-directory/20220512-052804
        git checkout b98a645cfa384db24dba861841b56b9660939aa1
        # save the config file
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=i386 clang-analyzer 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>


clang-analyzer warnings: (new ones prefixed by >>)
                           ^
   arch/x86/include/asm/string_32.h:150:25: note: expanded from macro 'memcpy'
   #define memcpy(t, f, n) __builtin_memcpy(t, f, n)
                           ^~~~~~~~~~~~~~~~
   sound/core/pcm_misc.c:457:4: note: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11
                           memcpy(dst, pat, 2);
                           ^
   arch/x86/include/asm/string_32.h:150:25: note: expanded from macro 'memcpy'
   #define memcpy(t, f, n) __builtin_memcpy(t, f, n)
                           ^~~~~~~~~~~~~~~~
   sound/core/pcm_misc.c:463:4: warning: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
                           memcpy(dst, pat, 3);
                           ^
   arch/x86/include/asm/string_32.h:150:25: note: expanded from macro 'memcpy'
   #define memcpy(t, f, n) __builtin_memcpy(t, f, n)
                           ^~~~~~~~~~~~~~~~
   sound/core/pcm_misc.c:463:4: note: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11
                           memcpy(dst, pat, 3);
                           ^
   arch/x86/include/asm/string_32.h:150:25: note: expanded from macro 'memcpy'
   #define memcpy(t, f, n) __builtin_memcpy(t, f, n)
                           ^~~~~~~~~~~~~~~~
   sound/core/pcm_misc.c:469:4: warning: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
                           memcpy(dst, pat, 4);
                           ^
   arch/x86/include/asm/string_32.h:150:25: note: expanded from macro 'memcpy'
   #define memcpy(t, f, n) __builtin_memcpy(t, f, n)
                           ^~~~~~~~~~~~~~~~
   sound/core/pcm_misc.c:469:4: note: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11
                           memcpy(dst, pat, 4);
                           ^
   arch/x86/include/asm/string_32.h:150:25: note: expanded from macro 'memcpy'
   #define memcpy(t, f, n) __builtin_memcpy(t, f, n)
                           ^~~~~~~~~~~~~~~~
   sound/core/pcm_misc.c:475:4: warning: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
                           memcpy(dst, pat, 8);
                           ^
   arch/x86/include/asm/string_32.h:150:25: note: expanded from macro 'memcpy'
   #define memcpy(t, f, n) __builtin_memcpy(t, f, n)
                           ^~~~~~~~~~~~~~~~
   sound/core/pcm_misc.c:475:4: note: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11
                           memcpy(dst, pat, 8);
                           ^
   arch/x86/include/asm/string_32.h:150:25: note: expanded from macro 'memcpy'
   #define memcpy(t, f, n) __builtin_memcpy(t, f, n)
                           ^~~~~~~~~~~~~~~~
   Suppressed 36 warnings (36 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   80 warnings generated.
   net/ipv6/rpl.c:17:2: warning: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
           memcpy(dst, daddr, pfx);
           ^
   arch/x86/include/asm/string_32.h:150:25: note: expanded from macro 'memcpy'
   #define memcpy(t, f, n) __builtin_memcpy(t, f, n)
                           ^~~~~~~~~~~~~~~~
   net/ipv6/rpl.c:17:2: note: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11
           memcpy(dst, daddr, pfx);
           ^
   arch/x86/include/asm/string_32.h:150:25: note: expanded from macro 'memcpy'
   #define memcpy(t, f, n) __builtin_memcpy(t, f, n)
                           ^~~~~~~~~~~~~~~~
   net/ipv6/rpl.c:18:2: warning: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
           memcpy(&dst->s6_addr[pfx], post, IPV6_PFXTAIL_LEN(pfx));
           ^
   arch/x86/include/asm/string_32.h:150:25: note: expanded from macro 'memcpy'
   #define memcpy(t, f, n) __builtin_memcpy(t, f, n)
                           ^~~~~~~~~~~~~~~~
   net/ipv6/rpl.c:18:2: note: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11
           memcpy(&dst->s6_addr[pfx], post, IPV6_PFXTAIL_LEN(pfx));
           ^
   arch/x86/include/asm/string_32.h:150:25: note: expanded from macro 'memcpy'
   #define memcpy(t, f, n) __builtin_memcpy(t, f, n)
                           ^~~~~~~~~~~~~~~~
   net/ipv6/rpl.c:24:2: warning: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
           memcpy(dst, &addr->s6_addr[pfx], IPV6_PFXTAIL_LEN(pfx));
           ^
   arch/x86/include/asm/string_32.h:150:25: note: expanded from macro 'memcpy'
   #define memcpy(t, f, n) __builtin_memcpy(t, f, n)
                           ^~~~~~~~~~~~~~~~
   net/ipv6/rpl.c:24:2: note: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11
           memcpy(dst, &addr->s6_addr[pfx], IPV6_PFXTAIL_LEN(pfx));
           ^
   arch/x86/include/asm/string_32.h:150:25: note: expanded from macro 'memcpy'
   #define memcpy(t, f, n) __builtin_memcpy(t, f, n)
                           ^~~~~~~~~~~~~~~~
   Suppressed 77 warnings (77 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   45 warnings generated.
   drivers/ufs/host/ufshcd-pci.c:64:2: warning: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
           memcpy(result, obj->buffer.pointer, len);
           ^
   arch/x86/include/asm/string_32.h:150:25: note: expanded from macro 'memcpy'
   #define memcpy(t, f, n) __builtin_memcpy(t, f, n)
                           ^~~~~~~~~~~~~~~~
   drivers/ufs/host/ufshcd-pci.c:64:2: note: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11
           memcpy(result, obj->buffer.pointer, len);
           ^
   arch/x86/include/asm/string_32.h:150:25: note: expanded from macro 'memcpy'
   #define memcpy(t, f, n) __builtin_memcpy(t, f, n)
                           ^~~~~~~~~~~~~~~~
>> drivers/ufs/host/ufshcd-pci.c:84:2: warning: Value stored to 'err' is never read [clang-analyzer-deadcode.DeadStores]
           err = __intel_dsm(intel_host, dev, INTEL_DSM_FNS, &intel_host->dsm_fns);
           ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/ufs/host/ufshcd-pci.c:84:2: note: Value stored to 'err' is never read
           err = __intel_dsm(intel_host, dev, INTEL_DSM_FNS, &intel_host->dsm_fns);
           ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/ufs/host/ufshcd-pci.c:158:3: warning: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
                   memcpy(dev_req_params, dev_max_params, sizeof(*dev_req_params));
                   ^
   arch/x86/include/asm/string_32.h:150:25: note: expanded from macro 'memcpy'
   #define memcpy(t, f, n) __builtin_memcpy(t, f, n)
                           ^~~~~~~~~~~~~~~~
   drivers/ufs/host/ufshcd-pci.c:158:3: note: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11
                   memcpy(dev_req_params, dev_max_params, sizeof(*dev_req_params));
                   ^
   arch/x86/include/asm/string_32.h:150:25: note: expanded from macro 'memcpy'
   #define memcpy(t, f, n) __builtin_memcpy(t, f, n)
                           ^~~~~~~~~~~~~~~~
   Suppressed 42 warnings (42 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   43 warnings generated.
   Suppressed 43 warnings (43 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   43 warnings generated.
   Suppressed 43 warnings (43 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   43 warnings generated.
   Suppressed 43 warnings (43 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   44 warnings generated.
   Suppressed 44 warnings (44 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   37 warnings generated.
   74 warnings generated.
   111 warnings generated.
   Suppressed 111 warnings (108 in non-user code, 3 with check filters).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   36 warnings generated.
   Suppressed 36 warnings (36 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   45 warnings generated.
   Suppressed 45 warnings (45 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   44 warnings generated.
   Suppressed 44 warnings (44 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   38 warnings generated.
   Suppressed 38 warnings (38 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   45 warnings generated.
   sound/soc/codecs/wm8580.c:475:2: warning: Call to function 'memset' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memset_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
           memset(&pll_div, 0, sizeof(pll_div));
           ^
   arch/x86/include/asm/string_32.h:195:29: note: expanded from macro 'memset'
   #define memset(s, c, count) __builtin_memset(s, c, count)
                               ^~~~~~~~~~~~~~~~
   sound/soc/codecs/wm8580.c:475:2: note: Call to function 'memset' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memset_s' in case of C11
           memset(&pll_div, 0, sizeof(pll_div));
           ^
   arch/x86/include/asm/string_32.h:195:29: note: expanded from macro 'memset'
   #define memset(s, c, count) __builtin_memset(s, c, count)
                               ^~~~~~~~~~~~~~~~
   Suppressed 44 warnings (44 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   45 warnings generated.
   Suppressed 45 warnings (45 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   45 warnings generated.
   Suppressed 45 warnings (45 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   21 warnings generated.
   sound/synth/emux/emux_seq.c:77:2: warning: Call to function 'memset' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memset_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
           memset(&pinfo, 0, sizeof(pinfo));
           ^
   arch/x86/include/asm/string_32.h:195:29: note: expanded from macro 'memset'
   #define memset(s, c, count) __builtin_memset(s, c, count)
                               ^~~~~~~~~~~~~~~~
   sound/synth/emux/emux_seq.c:77:2: note: Call to function 'memset' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memset_s' in case of C11
           memset(&pinfo, 0, sizeof(pinfo));
           ^
   arch/x86/include/asm/string_32.h:195:29: note: expanded from macro 'memset'
   #define memset(s, c, count) __builtin_memset(s, c, count)
                               ^~~~~~~~~~~~~~~~
   sound/synth/emux/emux_seq.c:86:3: warning: Call to function 'sprintf' is insecure as it does not provide bounding of the memory buffer or security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'sprintf_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
                   sprintf(tmpname, "%s Port %d", emu->name, i);
                   ^~~~~~~
   sound/synth/emux/emux_seq.c:86:3: note: Call to function 'sprintf' is insecure as it does not provide bounding of the memory buffer or security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'sprintf_s' in case of C11
                   sprintf(tmpname, "%s Port %d", emu->name, i);
                   ^~~~~~~
   sound/synth/emux/emux_seq.c:370:3: warning: Call to function 'sprintf' is insecure as it does not provide bounding of the memory buffer or security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'sprintf_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
                   sprintf(rmidi->name, "%s Synth MIDI", emu->name);
                   ^~~~~~~
   sound/synth/emux/emux_seq.c:370:3: note: Call to function 'sprintf' is insecure as it does not provide bounding of the memory buffer or security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'sprintf_s' in case of C11
                   sprintf(rmidi->name, "%s Synth MIDI", emu->name);
                   ^~~~~~~
   Suppressed 18 warnings (18 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   18 warnings generated.
   Suppressed 18 warnings (18 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   43 warnings generated.

vim +/err +84 drivers/ufs/host/ufshcd-pci.c

b2c57925df1ffc drivers/scsi/ufs/ufshcd-pci.c Adrian Hunter 2021-03-12  79  
b2c57925df1ffc drivers/scsi/ufs/ufshcd-pci.c Adrian Hunter 2021-03-12  80  static void intel_dsm_init(struct intel_host *intel_host, struct device *dev)
b2c57925df1ffc drivers/scsi/ufs/ufshcd-pci.c Adrian Hunter 2021-03-12  81  {
b2c57925df1ffc drivers/scsi/ufs/ufshcd-pci.c Adrian Hunter 2021-03-12  82  	int err;
b2c57925df1ffc drivers/scsi/ufs/ufshcd-pci.c Adrian Hunter 2021-03-12  83  
b2c57925df1ffc drivers/scsi/ufs/ufshcd-pci.c Adrian Hunter 2021-03-12 @84  	err = __intel_dsm(intel_host, dev, INTEL_DSM_FNS, &intel_host->dsm_fns);
b2c57925df1ffc drivers/scsi/ufs/ufshcd-pci.c Adrian Hunter 2021-03-12  85  	dev_dbg(dev, "DSM fns %#x, error %d\n", intel_host->dsm_fns, err);
b2c57925df1ffc drivers/scsi/ufs/ufshcd-pci.c Adrian Hunter 2021-03-12  86  }
b2c57925df1ffc drivers/scsi/ufs/ufshcd-pci.c Adrian Hunter 2021-03-12  87  

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2022-05-24  3:27 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-05-11 21:25 [PATCH] scsi: ufs: Split the drivers/scsi/ufs directory Bart Van Assche
2022-05-12 15:59 ` kernel test robot
2022-05-12 17:18   ` Bart Van Assche
2022-05-18 18:33 ` Avri Altman
2022-05-19  9:07 ` Bean Huo
2022-05-19 12:09 ` Adrian Hunter
2022-05-20  0:28 ` Martin K. Petersen
2022-05-24  3:27 ` Martin K. Petersen
2022-05-12  9:11 kernel test robot
2022-05-12 10:25 ` Dan Carpenter
2022-05-13 19:59 kernel test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.