mbox series

[v2,0/8] scsi: scsi transport for ufs devices

Message ID 1533469196-300-1-git-send-email-avri.altman@wdc.com (mailing list archive)
Headers show
Series scsi: scsi transport for ufs devices | expand

Message

Avri Altman Aug. 5, 2018, 11:39 a.m. UTC
Here is a proposal to use the scsi transport subsystem to manage
ufs devices.

scsi transport is a framework that allow to send scsi commands to
a non-scsi devices. Still, it is flexible enough to allow
sending non-scsi commands as well. We will use this framework to
manage ufs devices by sending UPIU transactions.

We added a new scsi transport module, a ufs-bsg LLD companion, 
and some new API to the ufs driver.

For the time being, we will not use it for data transfer,
but just for device management per-se.
We are planning to add this capability in the future.

We tested it on a Hikey-960 platform with a V4.14 kernel,
"modernized" by recent bsg and ufs patches.
We also used a htc11 with a V4.4 kernel, but needed much more
transport/bsg/ufs patches to make it relevant.

V1->v2:
	Use inline functions instead of defines, and ida to obtain the 
	port indices, in scsi_transport_ufs module.
	Remove the closing data pointer and __packed notation from
	struct ufs_bsg_{request_reply}.
	Re-use ufshcd_issue_tm_cmd code - needed another patch for that,
	and call req_upiu and rsp_upio with their appropriate struct pointers.
	Use a more appropriate name when checking if enough memory
	was  allocated for write descriptor, and remove redundant goto.
	Add reference to the spec to explain uic command size.
	Fix a lot of typos.

Avri Altman (8):
  scsi: Add ufs transport class
  scsi: ufs: Add ufs-bsg module
  scsi: ufs: Instantiate a ufs transport if its available
  scsi: ufs: Add fill task management request
  scsi: ufs: Allow ufshcd_issue_tm_cmd accept raw task upius
  scsi: ufs: Add API to execute raw upiu commands
  scsi: ufs-bsg: Add support for raw upiu in ufs_bsg_request()
  scsi: ufs-bsg: Add support for uic commands in ufs_bsg_request()

 drivers/scsi/Kconfig              |  13 ++
 drivers/scsi/Makefile             |   1 +
 drivers/scsi/scsi_transport_ufs.c | 354 ++++++++++++++++++++++++++++++++++++++
 drivers/scsi/ufs/Makefile         |   1 +
 drivers/scsi/ufs/ufs_bsg.c        | 291 +++++++++++++++++++++++++++++++
 drivers/scsi/ufs/ufs_bsg.h        |  75 ++++++++
 drivers/scsi/ufs/ufshcd.c         | 242 +++++++++++++++++++++++---
 drivers/scsi/ufs/ufshcd.h         |   6 +
 include/scsi/scsi_transport_ufs.h |  44 +++++
 include/uapi/scsi/scsi_bsg_ufs.h  |  56 ++++++
 10 files changed, 1055 insertions(+), 28 deletions(-)
 create mode 100644 drivers/scsi/scsi_transport_ufs.c
 create mode 100644 drivers/scsi/ufs/ufs_bsg.c
 create mode 100644 drivers/scsi/ufs/ufs_bsg.h
 create mode 100644 include/scsi/scsi_transport_ufs.h
 create mode 100644 include/uapi/scsi/scsi_bsg_ufs.h

Comments

Christoph Hellwig Aug. 7, 2018, 12:48 p.m. UTC | #1
On Sun, Aug 05, 2018 at 02:39:48PM +0300, Avri Altman wrote:
> Here is a proposal to use the scsi transport subsystem to manage
> ufs devices.

This should superceed previous patches to provide provisioning
support through sysfs or configfs, right?
Avri Altman Aug. 8, 2018, 5:38 a.m. UTC | #2
> On Sun, Aug 05, 2018 at 02:39:48PM +0300, Avri Altman wrote:
> > Here is a proposal to use the scsi transport subsystem to manage
> > ufs devices.
> 
> This should superceed previous patches to provide provisioning
> support through sysfs or configfs, right?
Yes.

Thanks,
Avri