From patchwork Mon Sep 3 10:33:09 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Avri Altman X-Patchwork-Id: 10585739 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 150D914E0 for ; Mon, 3 Sep 2018 10:33:49 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id EB70A28417 for ; Mon, 3 Sep 2018 10:33:48 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id DE7E729443; Mon, 3 Sep 2018 10:33:48 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.8 required=2.0 tests=BAYES_00,DKIM_SIGNED, MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI,T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 59E6929580 for ; Mon, 3 Sep 2018 10:33:48 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1725971AbeICOxU (ORCPT ); Mon, 3 Sep 2018 10:53:20 -0400 Received: from esa6.hgst.iphmx.com ([216.71.154.45]:40592 "EHLO esa6.hgst.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725947AbeICOxT (ORCPT ); Mon, 3 Sep 2018 10:53:19 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1535970828; x=1567506828; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=zh+CUNeDK/t02T5RbjSAHQpFnE7u3nDq9B8Sq+nKuAk=; b=QZ1zswwMdSfebP9VRqSjh6grf3SAXlIm1UxNDfYSLqLe/nvaBc9pyABY HUAkxH/fXlgburpumGs8uWYVhrW43dd4m87qEtQcMflkVP8jkgrKz+VFH njepoTxTGtd42vs/prJH/DBCiiZncxvZXt1Wz2z3QUJImek5GIwFMxaGQ d9aCYVw7ndRneqAYV6puIHyF/xPOjMuBFu2isPU1vu07QeGF3Vv9OgF7m Sg5LG7oiPWVhaXC5xqKDzJHnXyMRwGODsoakad7mgEHs4v5nvDl7shkbA W9tUBs51mimuRS5fZ7GEbUIeUA4Vr0NMga+y3dgEdKobE0EHh4SyvcnUE w==; X-IronPort-AV: E=Sophos;i="5.53,324,1531756800"; d="scan'208";a="90486107" Received: from uls-op-cesaip01.wdc.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 03 Sep 2018 18:33:48 +0800 Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep01.wdc.com with ESMTP; 03 Sep 2018 03:20:37 -0700 Received: from kfae422988.sdcorp.global.sandisk.com ([10.0.231.37]) by uls-op-cesaip02.wdc.com with ESMTP; 03 Sep 2018 03:33:43 -0700 From: Avri Altman To: Christoph Hellwig , Johannes Thumshirn , Hannes Reinecke , Bart Van Assche , "James E.J. Bottomley" , "Martin K. Petersen" , linux-scsi@vger.kernel.org Cc: Stanislav Nijnikov , Avi Shchislowski , Alex Lemberg , Subhash Jadavani , Vinayak Holikatti , Avri Altman Subject: [PATCH v3 0/7] scsi: ufs bsg endpoint Date: Mon, 3 Sep 2018 13:33:09 +0300 Message-Id: <1535970796-25582-1-git-send-email-avri.altman@wdc.com> X-Mailer: git-send-email 1.9.1 MIME-Version: 1.0 Sender: linux-scsi-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Here is a proposal to use a bsg endpoint to manage ufs devices. We will do that by adding a bsg device node to the ufs driver, and use it to send UPIU transactions to the ufs device. It will serve as a ufs device management infrastructure, for device configuration, provisioning, testing and validation, etc. We added a new ufs-bsg module, 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. This has nothing to do with the recent removal of bsg read/write support, we might add this capability in the future, but it is not our current focus. 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. V2->v3: We dropped the scsi transport code (and changed this patch title to account for it) as we actually just need the bsg device node. We also withdraw (brokenhearted) from our intension to create several bsg devices, and add just one. Rephrased the doc in Kconfig. 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 a couple of patches 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 (7): scsi: ufs: Add ufs-bsg module scsi: ufs: Instantiate a ufs bsg 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/ufs/Kconfig | 19 +++ drivers/scsi/ufs/Makefile | 1 + drivers/scsi/ufs/ufs_bsg.c | 337 +++++++++++++++++++++++++++++++++++++++ drivers/scsi/ufs/ufs_bsg.h | 73 +++++++++ drivers/scsi/ufs/ufshcd.c | 239 +++++++++++++++++++++++---- drivers/scsi/ufs/ufshcd.h | 6 + include/uapi/scsi/scsi_bsg_ufs.h | 56 +++++++ 7 files changed, 703 insertions(+), 28 deletions(-) create mode 100644 drivers/scsi/ufs/ufs_bsg.c create mode 100644 drivers/scsi/ufs/ufs_bsg.h create mode 100644 include/uapi/scsi/scsi_bsg_ufs.h