From patchwork Thu Sep 8 23:22:22 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kiwoong Kim X-Patchwork-Id: 9322295 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id AD29260231 for ; Thu, 8 Sep 2016 23:22:28 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id A5A8929A3F for ; Thu, 8 Sep 2016 23:22:28 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 9A72529A41; Thu, 8 Sep 2016 23:22:28 +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=-6.9 required=2.0 tests=BAYES_00,RCVD_IN_DNSWL_HI 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 A961629A3F for ; Thu, 8 Sep 2016 23:22:27 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752902AbcIHXW1 convert rfc822-to-8bit (ORCPT ); Thu, 8 Sep 2016 19:22:27 -0400 Received: from mailout2.samsung.com ([203.254.224.25]:38425 "EHLO mailout2.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752746AbcIHXWZ (ORCPT ); Thu, 8 Sep 2016 19:22:25 -0400 Received: from epcpsbgr2.samsung.com (u142.gpu120.samsung.co.kr [203.254.230.142]) by mailout2.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTP id <0OD701R68KXBRT20@mailout2.samsung.com> for linux-scsi@vger.kernel.org; Fri, 09 Sep 2016 08:22:23 +0900 (KST) Received: from epcpsbgm2new.samsung.com ( [203.254.230.48]) by epcpsbgr2.samsung.com (EPCPMTA) with SMTP id 73.0D.27902.FA2F1D75; Fri, 9 Sep 2016 08:22:23 +0900 (KST) X-AuditID: cbfee68e-f79cb6d000006cfe-19-57d1f2af6e10 Received: from epmmp2 ( [203.254.227.17]) by epcpsbgm2new.samsung.com (EPCPMTA) with SMTP id 1C.2E.07740.FA2F1D75; Thu, 8 Sep 2016 16:22:23 -0700 (MST) Received: from DOKWMADKIM02 ([12.36.166.218]) by mmp2.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTPA id <0OD700K1EKXBRM80@mmp2.samsung.com>; Fri, 09 Sep 2016 08:22:23 +0900 (KST) From: Kiwoong Kim To: vinholikatti@gmail.com, linux-scsi@vger.kernel.org Cc: "Martin K. Petersen" , "James E.J. Bottomley" , =?UTF-8?B?7LaU7ZeM6rSR?= Subject: [PATCH][SCSI] scsi: ufs: get a TM service response from the correct offset Date: Fri, 09 Sep 2016 08:22:22 +0900 Message-id: <000401d20a27$da459040$8ed0b0c0$@samsung.com> MIME-version: 1.0 Content-type: text/plain; charset=UTF-8 Content-transfer-encoding: 8BIT X-Mailer: Microsoft Outlook 15.0 Thread-index: AdIKJbmxZ6vlTG49RW+NxJI5pib3bA== Content-language: ko X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrMIsWRmVeSWpSXmKPExsVy+t8zA931ny6GG6y6K2Ix+0ITo8WqiXkW 3dd3sFksP/6PyWLHwioHVo+ds+6yezw4tJnF4+PTWywefVtWMXp83iQXwBrFZZOSmpNZllqk b5fAlbGo+xdzwRzhioPL9jM1MF7h62Lk5JAQMJE43NvBBGGLSVy4t56ti5GLQ0hgJaPE23mT mGGK5ra+ZYFIzGKUmPq5jxXCec8oseLfYrB2NgFNiac3p4LZIgJmEg1/74EVMYN09By5BJYQ FgiVuDzpFNBYDg4WAVWJGXtCQcK8ApYSOyauY4awBSV+TL7HAmIzC6hLTJq3iBnC1pZ48u4C K8RFChK7Px1lBRkjIqAnsXG9J0SJiMS+F+8YQdZKCOxjl7jY/BNsDouAgMS3yYdYQOolBGQl Nh2AekxS4uCKGywTGMVmIdk8C8nmWUg2z0KyYgEjyypG0dSC5ILipPQiI73ixNzi0rx0veT8 3E2MkLjr28F484D1IUYBDkYlHl6PUxfDhVgTy4orcw8xmgJdNJFZSjQ5HxjdeSXxhsZmRham JqbGRuaWZkrivAlSP4OFBNITS1KzU1MLUovii0pzUosPMTJxcEo1MPrnCZ0xbj/OUyEYe1P0 0rdt3+YKb5p2n/v63tjlaswZouXTMvXsTB1ND0/zWVG1VKCg9Pz1j9PepnBzy7wSO6u5P+0t m6TEu4T6U4Yz5+R/KNraYOi8LO7wQmGOd/pfbs/feDMt+Gtwg5nSqmmPxBxkpf91iC4OiP96 S2ZSq7tKs/MHr6ZgIyWW4oxEQy3mouJEAFZOrj22AgAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrAIsWRmVeSWpSXmKPExsVy+t9jQd31ny6GG/zr4bOYfaGJ0WLVxDyL 7us72CyWH//HZLFjYZUDq8fOWXfZPR4c2szi8fHpLRaPvi2rGD0+b5ILYI1qYLTJSE1MSS1S SM1Lzk/JzEu3VfIOjneONzUzMNQ1tLQwV1LIS8xNtVVy8QnQdcvMAdqtpFCWmFMKFApILC5W 0rfDNCE0xE3XAqYxQtc3JAiux8gADSSsY8xY1P2LuWCOcMXBZfuZGhiv8HUxcnJICJhIzG19 ywJhi0lcuLeerYuRi0NIYBajxNTPfawQzntGiRX/FjOBVLEJaEo8vTkVzBYRMJNo+HsPrIgZ pKPnyCWwhLBAqMTlSaeYuxg5OFgEVCVm7AkFCfMKWErsmLiOGcIWlPgx+R7YZmYBdYlJ8xYx Q9jaEk/eXWCFuEhBYveno6wgY0QE9CQ2rveEKBGR2PfiHeMERqCdCJNmIZk0C8mkWUhaFjCy rGKUSC1ILihOSs81ykst1ytOzC0uzUvXS87P3cQIju1n0jsYD+9yP8QowMGoxMP7IO9iuBBr YllxZe4hRgkOZiURXv2PQCHelMTKqtSi/Pii0pzU4kOMpkCvTmSWEk3OB6advJJ4Q2MTMyNL IzMLIxNzcyVx3sf/14UJCaQnlqRmp6YWpBbB9DFxcEo1MMY9/CnMEfH1hmHbqhy70+qJcxa4 vDwpOm2zd+1vn/2/D2/Yus39+6ok9sz7Lu25kk/TJzwI0auJ7OCsqalb0aAkv/dZxHKTNUet xHaIqCeF3LLOSyw/s9LeaqOvjtzbyWf87+y/X/jllTC30vpe/6JyZUsT13QZ2R8L13Yf0TQu XjHn2BavWiWW4oxEQy3mouJEAOd/txgDAwAA DLP-Filter: Pass X-MTR: 20000000000000000@CPGS X-CFilter-Loop: Reflected 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 From: Kiwoong Kim When any UFS host controller receives a TM(Task Management) response from a UFS device, UFS driver has been recognize like receiving a message of "Task Management Function Complete"(00h) in all cases, so far. That means there is no pending task for a tag of the TM request sent before in the UFS device. That's because the byte offset 6 in TM response which has been used to get a TM service response so far represents just whether or not a TM transmission passes. Regarding UFS spec, the correct byte offset to get TM service response is 15, not 6. I tested that UFS driver responds properly for the TM response From a UFS device with an reference board with exynos8890, as follow: No pending task -> Task Management Function Complete (00h) Pending task -> Task Management Function Succeeded (08h) Signed-off-by: Kiwoong Kim Signed-off-by: HeonGwang Chu Tested-by: : Kiwoong Kim Reviewed-by: Subhash Jadavani --- drivers/scsi/ufs/ufs.h | 1 + drivers/scsi/ufs/ufshcd.c | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) -- 1.7.9.5 -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/drivers/scsi/ufs/ufs.h b/drivers/scsi/ufs/ufs.h index 42c459a..89c121e 100644 --- a/drivers/scsi/ufs/ufs.h +++ b/drivers/scsi/ufs/ufs.h @@ -295,6 +295,7 @@ enum { MASK_QUERY_DATA_SEG_LEN = 0xFFFF, MASK_RSP_UPIU_DATA_SEG_LEN = 0xFFFF, MASK_RSP_EXCEPTION_EVENT = 0x10000, + MASK_TM_SERVICE_RESP = 0xFF, }; /* Task management service response */ diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c index e8a706b..c641cd3 100644 --- a/drivers/scsi/ufs/ufshcd.c +++ b/drivers/scsi/ufs/ufshcd.c @@ -3013,8 +3013,8 @@ static int ufshcd_task_req_compl(struct ufs_hba *hba, u32 index, u8 *resp) if (ocs_value == OCS_SUCCESS) { task_rsp_upiup = (struct utp_upiu_task_rsp *) task_req_descp[index].task_rsp_upiu; - task_result = be32_to_cpu(task_rsp_upiup->header.dword_1); - task_result = ((task_result & MASK_TASK_RESPONSE) >> 8); + task_result = be32_to_cpu(task_rsp_upiup->output_param1); + task_result = task_result & MASK_TM_SERVICE_RESP; if (resp) *resp = (u8)task_result; } else {