From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.0 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id A4991C433E2 for ; Thu, 3 Sep 2020 02:25:34 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 67AB920773 for ; Thu, 3 Sep 2020 02:25:34 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728034AbgICCZc (ORCPT ); Wed, 2 Sep 2020 22:25:32 -0400 Received: from labrats.qualcomm.com ([199.106.110.90]:3836 "EHLO labrats.qualcomm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726177AbgICCZb (ORCPT ); Wed, 2 Sep 2020 22:25:31 -0400 IronPort-SDR: 1BTrOD9lwhZFNhGA64FlbLP0y+SZAaM7K94QcUAw5i20PXwBaBUiBiiconrwOTGG6t2M3fe6wa tu70AKMZ1uwA3jtQSRSCZ4Pd+Ce3iygcQ1ewuczduDLJ3u7q2+2q2se9xwiyVRsNdMtPkfUoxA ddk+aF6VlG4IoAgDZosgdbFtKRwMQZoY/vYrDIEZksDwkjQAvofMRUbZO9f5PFGf43RCQXGKR5 4z/xHRyZ+A/E0on9LAsGKNVu1AfkMHb3HZFBM1lB1qIq6Catchq7BwS570n6WmxKi8YL/KTtka XAw= X-IronPort-AV: E=Sophos;i="5.76,384,1592895600"; d="scan'208";a="29130859" Received: from unknown (HELO ironmsg04-sd.qualcomm.com) ([10.53.140.144]) by labrats.qualcomm.com with ESMTP; 02 Sep 2020 19:24:40 -0700 Received: from wsp769891wss.qualcomm.com (HELO stor-presley.qualcomm.com) ([192.168.140.85]) by ironmsg04-sd.qualcomm.com with ESMTP; 02 Sep 2020 19:24:39 -0700 Received: by stor-presley.qualcomm.com (Postfix, from userid 359480) id 44EB4215EA; Wed, 2 Sep 2020 19:24:39 -0700 (PDT) From: Can Guo To: asutoshd@codeaurora.org, nguyenb@codeaurora.org, hongwus@codeaurora.org, ziqichen@codeaurora.org, rnayak@codeaurora.org, linux-scsi@vger.kernel.org, kernel-team@android.com, saravanak@google.com, salyzyn@google.com, cang@codeaurora.org Cc: Alim Akhtar , Avri Altman , "James E.J. Bottomley" , "Martin K. Petersen" , Matthias Brugger , Stanley Chu , Bean Huo , Bart Van Assche , linux-kernel@vger.kernel.org (open list), linux-arm-kernel@lists.infradead.org (moderated list:ARM/Mediatek SoC support), linux-mediatek@lists.infradead.org (moderated list:ARM/Mediatek SoC support) Subject: [PATCH v2 1/2] scsi: ufs: Abort tasks before clear them from doorbell Date: Wed, 2 Sep 2020 19:24:31 -0700 Message-Id: <1599099873-32579-2-git-send-email-cang@codeaurora.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1599099873-32579-1-git-send-email-cang@codeaurora.org> References: <1599099873-32579-1-git-send-email-cang@codeaurora.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org To recovery non-fatal errors, no full reset is required, err_handler only clears those pending TRs/TMRs so that scsi layer can re-issue them. In current err_handler, TRs are directly cleared from UFS host's doorbell but not aborted from device side. However, according to the UFSHCI JEDEC spec, the host software shall use UTP Transfer Request List CLear Register to clear a task from UFS host's doorbell only when a UTP Transfer Request is expected to not be completed, e.g. when the host software receives a “FUNCTION COMPLETE” Task Management response which means a Transfer Request was aborted. To follow the UFSHCI JEDEC spec, in err_handler, aborts one TR before clearing it from doorbell. Signed-off-by: Can Guo Acked-by: Stanley Chu --- drivers/scsi/ufs/ufshcd.c | 143 ++++++++++++++++++++++++++-------------------- 1 file changed, 81 insertions(+), 62 deletions(-) diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c index 06e2439..72afe12 100644 --- a/drivers/scsi/ufs/ufshcd.c +++ b/drivers/scsi/ufs/ufshcd.c @@ -238,6 +238,7 @@ static int ufshcd_setup_hba_vreg(struct ufs_hba *hba, bool on); static int ufshcd_setup_vreg(struct ufs_hba *hba, bool on); static inline int ufshcd_config_vreg_hpm(struct ufs_hba *hba, struct ufs_vreg *vreg); +static int ufshcd_try_to_abort_task(struct ufs_hba *hba, int tag); static int ufshcd_wb_buf_flush_enable(struct ufs_hba *hba); static int ufshcd_wb_buf_flush_disable(struct ufs_hba *hba); static int ufshcd_wb_ctrl(struct ufs_hba *hba, bool enable); @@ -5666,8 +5667,8 @@ static void ufshcd_err_handler(struct work_struct *work) { struct ufs_hba *hba; unsigned long flags; - u32 err_xfer = 0; - u32 err_tm = 0; + bool err_xfer = false; + bool err_tm = false; int err = 0; int tag; bool needs_reset = false; @@ -5743,7 +5744,7 @@ static void ufshcd_err_handler(struct work_struct *work) spin_unlock_irqrestore(hba->host->host_lock, flags); /* Clear pending transfer requests */ for_each_set_bit(tag, &hba->outstanding_reqs, hba->nutrs) { - if (ufshcd_clear_cmd(hba, tag)) { + if (ufshcd_try_to_abort_task(hba, tag)) { err_xfer = true; goto lock_skip_pending_xfer_clear; } @@ -6495,7 +6496,7 @@ static void ufshcd_set_req_abort_skip(struct ufs_hba *hba, unsigned long bitmap) } /** - * ufshcd_abort - abort a specific command + * ufshcd_try_to_abort_task - abort a specific task * @cmd: SCSI command pointer * * Abort the pending command in device by sending UFS_ABORT_TASK task management @@ -6504,6 +6505,80 @@ static void ufshcd_set_req_abort_skip(struct ufs_hba *hba, unsigned long bitmap) * issued. To avoid that, first issue UFS_QUERY_TASK to check if the command is * really issued and then try to abort it. * + * Returns zero on success, non-zero on failure + */ +static int ufshcd_try_to_abort_task(struct ufs_hba *hba, int tag) +{ + struct ufshcd_lrb *lrbp = &hba->lrb[tag]; + int err = 0; + int poll_cnt; + u8 resp = 0xF; + u32 reg; + + for (poll_cnt = 100; poll_cnt; poll_cnt--) { + err = ufshcd_issue_tm_cmd(hba, lrbp->lun, lrbp->task_tag, + UFS_QUERY_TASK, &resp); + if (!err && resp == UPIU_TASK_MANAGEMENT_FUNC_SUCCEEDED) { + /* cmd pending in the device */ + dev_err(hba->dev, "%s: cmd pending in the device. tag = %d\n", + __func__, tag); + break; + } else if (!err && resp == UPIU_TASK_MANAGEMENT_FUNC_COMPL) { + /* + * cmd not pending in the device, check if it is + * in transition. + */ + dev_err(hba->dev, "%s: cmd at tag %d not pending in the device.\n", + __func__, tag); + reg = ufshcd_readl(hba, REG_UTP_TRANSFER_REQ_DOOR_BELL); + if (reg & (1 << tag)) { + /* sleep for max. 200us to stabilize */ + usleep_range(100, 200); + continue; + } + /* command completed already */ + dev_err(hba->dev, "%s: cmd at tag %d successfully cleared from DB.\n", + __func__, tag); + goto out; + } else { + dev_err(hba->dev, + "%s: no response from device. tag = %d, err %d\n", + __func__, tag, err); + if (!err) + err = resp; /* service response error */ + goto out; + } + } + + if (!poll_cnt) { + err = -EBUSY; + goto out; + } + + err = ufshcd_issue_tm_cmd(hba, lrbp->lun, lrbp->task_tag, + UFS_ABORT_TASK, &resp); + if (err || resp != UPIU_TASK_MANAGEMENT_FUNC_COMPL) { + if (!err) { + err = resp; /* service response error */ + dev_err(hba->dev, "%s: issued. tag = %d, err %d\n", + __func__, tag, err); + } + goto out; + } + + err = ufshcd_clear_cmd(hba, tag); + if (err) + dev_err(hba->dev, "%s: Failed clearing cmd at tag %d, err %d\n", + __func__, tag, err); + +out: + return err; +} + +/** + * ufshcd_abort - scsi host template eh_abort_handler callback + * @cmd: SCSI command pointer + * * Returns SUCCESS/FAILED */ static int ufshcd_abort(struct scsi_cmnd *cmd) @@ -6513,8 +6588,6 @@ static int ufshcd_abort(struct scsi_cmnd *cmd) unsigned long flags; unsigned int tag; int err = 0; - int poll_cnt; - u8 resp = 0xF; struct ufshcd_lrb *lrbp; u32 reg; @@ -6583,63 +6656,9 @@ static int ufshcd_abort(struct scsi_cmnd *cmd) goto out; } - for (poll_cnt = 100; poll_cnt; poll_cnt--) { - err = ufshcd_issue_tm_cmd(hba, lrbp->lun, lrbp->task_tag, - UFS_QUERY_TASK, &resp); - if (!err && resp == UPIU_TASK_MANAGEMENT_FUNC_SUCCEEDED) { - /* cmd pending in the device */ - dev_err(hba->dev, "%s: cmd pending in the device. tag = %d\n", - __func__, tag); - break; - } else if (!err && resp == UPIU_TASK_MANAGEMENT_FUNC_COMPL) { - /* - * cmd not pending in the device, check if it is - * in transition. - */ - dev_err(hba->dev, "%s: cmd at tag %d not pending in the device.\n", - __func__, tag); - reg = ufshcd_readl(hba, REG_UTP_TRANSFER_REQ_DOOR_BELL); - if (reg & (1 << tag)) { - /* sleep for max. 200us to stabilize */ - usleep_range(100, 200); - continue; - } - /* command completed already */ - dev_err(hba->dev, "%s: cmd at tag %d successfully cleared from DB.\n", - __func__, tag); - goto out; - } else { - dev_err(hba->dev, - "%s: no response from device. tag = %d, err %d\n", - __func__, tag, err); - if (!err) - err = resp; /* service response error */ - goto out; - } - } - - if (!poll_cnt) { - err = -EBUSY; - goto out; - } - - err = ufshcd_issue_tm_cmd(hba, lrbp->lun, lrbp->task_tag, - UFS_ABORT_TASK, &resp); - if (err || resp != UPIU_TASK_MANAGEMENT_FUNC_COMPL) { - if (!err) { - err = resp; /* service response error */ - dev_err(hba->dev, "%s: issued. tag = %d, err %d\n", - __func__, tag, err); - } - goto out; - } - - err = ufshcd_clear_cmd(hba, tag); - if (err) { - dev_err(hba->dev, "%s: Failed clearing cmd at tag %d, err %d\n", - __func__, tag, err); + err = ufshcd_try_to_abort_task(hba, tag); + if (err) goto out; - } spin_lock_irqsave(host->host_lock, flags); __ufshcd_transfer_req_compl(hba, (1UL << tag)); -- Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project. From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.0 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 12F75C433E7 for ; Thu, 3 Sep 2020 02:25:48 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id B85FD20773 for ; Thu, 3 Sep 2020 02:25:47 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="QepVazFq" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org B85FD20773 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=codeaurora.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-mediatek-bounces+linux-mediatek=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-Id:Date: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=b944Hv+yW+9JerQK5tF9kxWLuXZfnf6Iy6pLiDVhy8M=; b=QepVazFqENzOTaRThy+E9mdgD GVyf7O64TSWcAxVkWeb1XYLgGa7TtCM3Ob4P6KwBDLbawpcbr+puD5anGLy8qJEDZB+FJOIfZgdNu b/116gHPkV6eSRWooofvd1peC1Q2iygUqMBPbb09TZ01t6qAnuqLsyRYo7rURmNbAtLaRwTL4Ussu AbcCamIaVX3zhgUbZ1qFeloZXWXM+ui63RfkaO9cRiqPhrT0riShW1urlkGj3oPq+2yULTV6rmkHz cXM1CWcONOkr/mv1UpdrM5VNSwAKtmuRTUPBcJhWaf3DRdYEVXo/uYuEiAZjAqu4is9bQJ+uK3p0k lFuUpDiPA==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kDewT-0000w1-I1; Thu, 03 Sep 2020 02:25:37 +0000 Received: from labrats.qualcomm.com ([199.106.110.90]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kDewP-0000uy-8P; Thu, 03 Sep 2020 02:25:34 +0000 IronPort-SDR: 1BTrOD9lwhZFNhGA64FlbLP0y+SZAaM7K94QcUAw5i20PXwBaBUiBiiconrwOTGG6t2M3fe6wa tu70AKMZ1uwA3jtQSRSCZ4Pd+Ce3iygcQ1ewuczduDLJ3u7q2+2q2se9xwiyVRsNdMtPkfUoxA ddk+aF6VlG4IoAgDZosgdbFtKRwMQZoY/vYrDIEZksDwkjQAvofMRUbZO9f5PFGf43RCQXGKR5 4z/xHRyZ+A/E0on9LAsGKNVu1AfkMHb3HZFBM1lB1qIq6Catchq7BwS570n6WmxKi8YL/KTtka XAw= X-IronPort-AV: E=Sophos;i="5.76,384,1592895600"; d="scan'208";a="29130859" Received: from unknown (HELO ironmsg04-sd.qualcomm.com) ([10.53.140.144]) by labrats.qualcomm.com with ESMTP; 02 Sep 2020 19:24:40 -0700 Received: from wsp769891wss.qualcomm.com (HELO stor-presley.qualcomm.com) ([192.168.140.85]) by ironmsg04-sd.qualcomm.com with ESMTP; 02 Sep 2020 19:24:39 -0700 Received: by stor-presley.qualcomm.com (Postfix, from userid 359480) id 44EB4215EA; Wed, 2 Sep 2020 19:24:39 -0700 (PDT) From: Can Guo To: asutoshd@codeaurora.org, nguyenb@codeaurora.org, hongwus@codeaurora.org, ziqichen@codeaurora.org, rnayak@codeaurora.org, linux-scsi@vger.kernel.org, kernel-team@android.com, saravanak@google.com, salyzyn@google.com, cang@codeaurora.org Subject: [PATCH v2 1/2] scsi: ufs: Abort tasks before clear them from doorbell Date: Wed, 2 Sep 2020 19:24:31 -0700 Message-Id: <1599099873-32579-2-git-send-email-cang@codeaurora.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1599099873-32579-1-git-send-email-cang@codeaurora.org> References: <1599099873-32579-1-git-send-email-cang@codeaurora.org> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200902_222533_442712_DDCD65EE X-CRM114-Status: GOOD ( 21.49 ) X-BeenThere: linux-mediatek@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Bart Van Assche , "Martin K. Petersen" , "James E.J. Bottomley" , open list , Avri Altman , "moderated list:ARM/Mediatek SoC support" , Alim Akhtar , Matthias Brugger , Stanley Chu , "moderated list:ARM/Mediatek SoC support" , Bean Huo Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "Linux-mediatek" Errors-To: linux-mediatek-bounces+linux-mediatek=archiver.kernel.org@lists.infradead.org VG8gcmVjb3Zlcnkgbm9uLWZhdGFsIGVycm9ycywgbm8gZnVsbCByZXNldCBpcyByZXF1aXJlZCwg ZXJyX2hhbmRsZXIgb25seQpjbGVhcnMgdGhvc2UgcGVuZGluZyBUUnMvVE1ScyBzbyB0aGF0IHNj c2kgbGF5ZXIgY2FuIHJlLWlzc3VlIHRoZW0uIEluCmN1cnJlbnQgZXJyX2hhbmRsZXIsIFRScyBh cmUgZGlyZWN0bHkgY2xlYXJlZCBmcm9tIFVGUyBob3N0J3MgZG9vcmJlbGwgYnV0Cm5vdCBhYm9y dGVkIGZyb20gZGV2aWNlIHNpZGUuIEhvd2V2ZXIsIGFjY29yZGluZyB0byB0aGUgVUZTSENJIEpF REVDIHNwZWMsCnRoZSBob3N0IHNvZnR3YXJlIHNoYWxsIHVzZSBVVFAgVHJhbnNmZXIgUmVxdWVz dCBMaXN0IENMZWFyIFJlZ2lzdGVyIHRvCmNsZWFyIGEgdGFzayBmcm9tIFVGUyBob3N0J3MgZG9v cmJlbGwgb25seSB3aGVuIGEgVVRQIFRyYW5zZmVyIFJlcXVlc3QgaXMKZXhwZWN0ZWQgdG8gbm90 IGJlIGNvbXBsZXRlZCwgZS5nLiB3aGVuIHRoZSBob3N0IHNvZnR3YXJlIHJlY2VpdmVzIGEK4oCc RlVOQ1RJT04gQ09NUExFVEXigJ0gVGFzayBNYW5hZ2VtZW50IHJlc3BvbnNlIHdoaWNoIG1lYW5z IGEgVHJhbnNmZXIgUmVxdWVzdAp3YXMgYWJvcnRlZC4gVG8gZm9sbG93IHRoZSBVRlNIQ0kgSkVE RUMgc3BlYywgaW4gZXJyX2hhbmRsZXIsIGFib3J0cyBvbmUgVFIKYmVmb3JlIGNsZWFyaW5nIGl0 IGZyb20gZG9vcmJlbGwuCgpTaWduZWQtb2ZmLWJ5OiBDYW4gR3VvIDxjYW5nQGNvZGVhdXJvcmEu b3JnPgpBY2tlZC1ieTogU3RhbmxleSBDaHUgPHN0YW5sZXkuY2h1QG1lZGlhdGVrLmNvbT4KLS0t CiBkcml2ZXJzL3Njc2kvdWZzL3Vmc2hjZC5jIHwgMTQzICsrKysrKysrKysrKysrKysrKysrKysr KysrLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA4MSBpbnNlcnRpb25zKCsp LCA2MiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvdWZzL3Vmc2hjZC5j IGIvZHJpdmVycy9zY3NpL3Vmcy91ZnNoY2QuYwppbmRleCAwNmUyNDM5Li43MmFmZTEyIDEwMDY0 NAotLS0gYS9kcml2ZXJzL3Njc2kvdWZzL3Vmc2hjZC5jCisrKyBiL2RyaXZlcnMvc2NzaS91ZnMv dWZzaGNkLmMKQEAgLTIzOCw2ICsyMzgsNyBAQCBzdGF0aWMgaW50IHVmc2hjZF9zZXR1cF9oYmFf dnJlZyhzdHJ1Y3QgdWZzX2hiYSAqaGJhLCBib29sIG9uKTsKIHN0YXRpYyBpbnQgdWZzaGNkX3Nl dHVwX3ZyZWcoc3RydWN0IHVmc19oYmEgKmhiYSwgYm9vbCBvbik7CiBzdGF0aWMgaW5saW5lIGlu dCB1ZnNoY2RfY29uZmlnX3ZyZWdfaHBtKHN0cnVjdCB1ZnNfaGJhICpoYmEsCiAJCQkJCSBzdHJ1 Y3QgdWZzX3ZyZWcgKnZyZWcpOworc3RhdGljIGludCB1ZnNoY2RfdHJ5X3RvX2Fib3J0X3Rhc2so c3RydWN0IHVmc19oYmEgKmhiYSwgaW50IHRhZyk7CiBzdGF0aWMgaW50IHVmc2hjZF93Yl9idWZf Zmx1c2hfZW5hYmxlKHN0cnVjdCB1ZnNfaGJhICpoYmEpOwogc3RhdGljIGludCB1ZnNoY2Rfd2Jf YnVmX2ZsdXNoX2Rpc2FibGUoc3RydWN0IHVmc19oYmEgKmhiYSk7CiBzdGF0aWMgaW50IHVmc2hj ZF93Yl9jdHJsKHN0cnVjdCB1ZnNfaGJhICpoYmEsIGJvb2wgZW5hYmxlKTsKQEAgLTU2NjYsOCAr NTY2Nyw4IEBAIHN0YXRpYyB2b2lkIHVmc2hjZF9lcnJfaGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1 Y3QgKndvcmspCiB7CiAJc3RydWN0IHVmc19oYmEgKmhiYTsKIAl1bnNpZ25lZCBsb25nIGZsYWdz OwotCXUzMiBlcnJfeGZlciA9IDA7Ci0JdTMyIGVycl90bSA9IDA7CisJYm9vbCBlcnJfeGZlciA9 IGZhbHNlOworCWJvb2wgZXJyX3RtID0gZmFsc2U7CiAJaW50IGVyciA9IDA7CiAJaW50IHRhZzsK IAlib29sIG5lZWRzX3Jlc2V0ID0gZmFsc2U7CkBAIC01NzQzLDcgKzU3NDQsNyBAQCBzdGF0aWMg dm9pZCB1ZnNoY2RfZXJyX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogCXNwaW5f dW5sb2NrX2lycXJlc3RvcmUoaGJhLT5ob3N0LT5ob3N0X2xvY2ssIGZsYWdzKTsKIAkvKiBDbGVh ciBwZW5kaW5nIHRyYW5zZmVyIHJlcXVlc3RzICovCiAJZm9yX2VhY2hfc2V0X2JpdCh0YWcsICZo YmEtPm91dHN0YW5kaW5nX3JlcXMsIGhiYS0+bnV0cnMpIHsKLQkJaWYgKHVmc2hjZF9jbGVhcl9j bWQoaGJhLCB0YWcpKSB7CisJCWlmICh1ZnNoY2RfdHJ5X3RvX2Fib3J0X3Rhc2soaGJhLCB0YWcp KSB7CiAJCQllcnJfeGZlciA9IHRydWU7CiAJCQlnb3RvIGxvY2tfc2tpcF9wZW5kaW5nX3hmZXJf Y2xlYXI7CiAJCX0KQEAgLTY0OTUsNyArNjQ5Niw3IEBAIHN0YXRpYyB2b2lkIHVmc2hjZF9zZXRf cmVxX2Fib3J0X3NraXAoc3RydWN0IHVmc19oYmEgKmhiYSwgdW5zaWduZWQgbG9uZyBiaXRtYXAp CiB9CiAKIC8qKgotICogdWZzaGNkX2Fib3J0IC0gYWJvcnQgYSBzcGVjaWZpYyBjb21tYW5kCisg KiB1ZnNoY2RfdHJ5X3RvX2Fib3J0X3Rhc2sgLSBhYm9ydCBhIHNwZWNpZmljIHRhc2sKICAqIEBj bWQ6IFNDU0kgY29tbWFuZCBwb2ludGVyCiAgKgogICogQWJvcnQgdGhlIHBlbmRpbmcgY29tbWFu ZCBpbiBkZXZpY2UgYnkgc2VuZGluZyBVRlNfQUJPUlRfVEFTSyB0YXNrIG1hbmFnZW1lbnQKQEAg LTY1MDQsNiArNjUwNSw4MCBAQCBzdGF0aWMgdm9pZCB1ZnNoY2Rfc2V0X3JlcV9hYm9ydF9za2lw KHN0cnVjdCB1ZnNfaGJhICpoYmEsIHVuc2lnbmVkIGxvbmcgYml0bWFwKQogICogaXNzdWVkLiBU byBhdm9pZCB0aGF0LCBmaXJzdCBpc3N1ZSBVRlNfUVVFUllfVEFTSyB0byBjaGVjayBpZiB0aGUg Y29tbWFuZCBpcwogICogcmVhbGx5IGlzc3VlZCBhbmQgdGhlbiB0cnkgdG8gYWJvcnQgaXQuCiAg KgorICogUmV0dXJucyB6ZXJvIG9uIHN1Y2Nlc3MsIG5vbi16ZXJvIG9uIGZhaWx1cmUKKyAqLwor c3RhdGljIGludCB1ZnNoY2RfdHJ5X3RvX2Fib3J0X3Rhc2soc3RydWN0IHVmc19oYmEgKmhiYSwg aW50IHRhZykKK3sKKwlzdHJ1Y3QgdWZzaGNkX2xyYiAqbHJicCA9ICZoYmEtPmxyYlt0YWddOwor CWludCBlcnIgPSAwOworCWludCBwb2xsX2NudDsKKwl1OCByZXNwID0gMHhGOworCXUzMiByZWc7 CisKKwlmb3IgKHBvbGxfY250ID0gMTAwOyBwb2xsX2NudDsgcG9sbF9jbnQtLSkgeworCQllcnIg PSB1ZnNoY2RfaXNzdWVfdG1fY21kKGhiYSwgbHJicC0+bHVuLCBscmJwLT50YXNrX3RhZywKKwkJ CQlVRlNfUVVFUllfVEFTSywgJnJlc3ApOworCQlpZiAoIWVyciAmJiByZXNwID09IFVQSVVfVEFT S19NQU5BR0VNRU5UX0ZVTkNfU1VDQ0VFREVEKSB7CisJCQkvKiBjbWQgcGVuZGluZyBpbiB0aGUg ZGV2aWNlICovCisJCQlkZXZfZXJyKGhiYS0+ZGV2LCAiJXM6IGNtZCBwZW5kaW5nIGluIHRoZSBk ZXZpY2UuIHRhZyA9ICVkXG4iLAorCQkJCV9fZnVuY19fLCB0YWcpOworCQkJYnJlYWs7CisJCX0g ZWxzZSBpZiAoIWVyciAmJiByZXNwID09IFVQSVVfVEFTS19NQU5BR0VNRU5UX0ZVTkNfQ09NUEwp IHsKKwkJCS8qCisJCQkgKiBjbWQgbm90IHBlbmRpbmcgaW4gdGhlIGRldmljZSwgY2hlY2sgaWYg aXQgaXMKKwkJCSAqIGluIHRyYW5zaXRpb24uCisJCQkgKi8KKwkJCWRldl9lcnIoaGJhLT5kZXYs ICIlczogY21kIGF0IHRhZyAlZCBub3QgcGVuZGluZyBpbiB0aGUgZGV2aWNlLlxuIiwKKwkJCQlf X2Z1bmNfXywgdGFnKTsKKwkJCXJlZyA9IHVmc2hjZF9yZWFkbChoYmEsIFJFR19VVFBfVFJBTlNG RVJfUkVRX0RPT1JfQkVMTCk7CisJCQlpZiAocmVnICYgKDEgPDwgdGFnKSkgeworCQkJCS8qIHNs ZWVwIGZvciBtYXguIDIwMHVzIHRvIHN0YWJpbGl6ZSAqLworCQkJCXVzbGVlcF9yYW5nZSgxMDAs IDIwMCk7CisJCQkJY29udGludWU7CisJCQl9CisJCQkvKiBjb21tYW5kIGNvbXBsZXRlZCBhbHJl YWR5ICovCisJCQlkZXZfZXJyKGhiYS0+ZGV2LCAiJXM6IGNtZCBhdCB0YWcgJWQgc3VjY2Vzc2Z1 bGx5IGNsZWFyZWQgZnJvbSBEQi5cbiIsCisJCQkJX19mdW5jX18sIHRhZyk7CisJCQlnb3RvIG91 dDsKKwkJfSBlbHNlIHsKKwkJCWRldl9lcnIoaGJhLT5kZXYsCisJCQkJIiVzOiBubyByZXNwb25z ZSBmcm9tIGRldmljZS4gdGFnID0gJWQsIGVyciAlZFxuIiwKKwkJCQlfX2Z1bmNfXywgdGFnLCBl cnIpOworCQkJaWYgKCFlcnIpCisJCQkJZXJyID0gcmVzcDsgLyogc2VydmljZSByZXNwb25zZSBl cnJvciAqLworCQkJZ290byBvdXQ7CisJCX0KKwl9CisKKwlpZiAoIXBvbGxfY250KSB7CisJCWVy ciA9IC1FQlVTWTsKKwkJZ290byBvdXQ7CisJfQorCisJZXJyID0gdWZzaGNkX2lzc3VlX3RtX2Nt ZChoYmEsIGxyYnAtPmx1biwgbHJicC0+dGFza190YWcsCisJCQlVRlNfQUJPUlRfVEFTSywgJnJl c3ApOworCWlmIChlcnIgfHwgcmVzcCAhPSBVUElVX1RBU0tfTUFOQUdFTUVOVF9GVU5DX0NPTVBM KSB7CisJCWlmICghZXJyKSB7CisJCQllcnIgPSByZXNwOyAvKiBzZXJ2aWNlIHJlc3BvbnNlIGVy cm9yICovCisJCQlkZXZfZXJyKGhiYS0+ZGV2LCAiJXM6IGlzc3VlZC4gdGFnID0gJWQsIGVyciAl ZFxuIiwKKwkJCQlfX2Z1bmNfXywgdGFnLCBlcnIpOworCQl9CisJCWdvdG8gb3V0OworCX0KKwor CWVyciA9IHVmc2hjZF9jbGVhcl9jbWQoaGJhLCB0YWcpOworCWlmIChlcnIpCisJCWRldl9lcnIo aGJhLT5kZXYsICIlczogRmFpbGVkIGNsZWFyaW5nIGNtZCBhdCB0YWcgJWQsIGVyciAlZFxuIiwK KwkJCV9fZnVuY19fLCB0YWcsIGVycik7CisKK291dDoKKwlyZXR1cm4gZXJyOworfQorCisvKioK KyAqIHVmc2hjZF9hYm9ydCAtIHNjc2kgaG9zdCB0ZW1wbGF0ZSBlaF9hYm9ydF9oYW5kbGVyIGNh bGxiYWNrCisgKiBAY21kOiBTQ1NJIGNvbW1hbmQgcG9pbnRlcgorICoKICAqIFJldHVybnMgU1VD Q0VTUy9GQUlMRUQKICAqLwogc3RhdGljIGludCB1ZnNoY2RfYWJvcnQoc3RydWN0IHNjc2lfY21u ZCAqY21kKQpAQCAtNjUxMyw4ICs2NTg4LDYgQEAgc3RhdGljIGludCB1ZnNoY2RfYWJvcnQoc3Ry dWN0IHNjc2lfY21uZCAqY21kKQogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAJdW5zaWduZWQgaW50 IHRhZzsKIAlpbnQgZXJyID0gMDsKLQlpbnQgcG9sbF9jbnQ7Ci0JdTggcmVzcCA9IDB4RjsKIAlz dHJ1Y3QgdWZzaGNkX2xyYiAqbHJicDsKIAl1MzIgcmVnOwogCkBAIC02NTgzLDYzICs2NjU2LDkg QEAgc3RhdGljIGludCB1ZnNoY2RfYWJvcnQoc3RydWN0IHNjc2lfY21uZCAqY21kKQogCQlnb3Rv IG91dDsKIAl9CiAKLQlmb3IgKHBvbGxfY250ID0gMTAwOyBwb2xsX2NudDsgcG9sbF9jbnQtLSkg ewotCQllcnIgPSB1ZnNoY2RfaXNzdWVfdG1fY21kKGhiYSwgbHJicC0+bHVuLCBscmJwLT50YXNr X3RhZywKLQkJCQlVRlNfUVVFUllfVEFTSywgJnJlc3ApOwotCQlpZiAoIWVyciAmJiByZXNwID09 IFVQSVVfVEFTS19NQU5BR0VNRU5UX0ZVTkNfU1VDQ0VFREVEKSB7Ci0JCQkvKiBjbWQgcGVuZGlu ZyBpbiB0aGUgZGV2aWNlICovCi0JCQlkZXZfZXJyKGhiYS0+ZGV2LCAiJXM6IGNtZCBwZW5kaW5n IGluIHRoZSBkZXZpY2UuIHRhZyA9ICVkXG4iLAotCQkJCV9fZnVuY19fLCB0YWcpOwotCQkJYnJl YWs7Ci0JCX0gZWxzZSBpZiAoIWVyciAmJiByZXNwID09IFVQSVVfVEFTS19NQU5BR0VNRU5UX0ZV TkNfQ09NUEwpIHsKLQkJCS8qCi0JCQkgKiBjbWQgbm90IHBlbmRpbmcgaW4gdGhlIGRldmljZSwg Y2hlY2sgaWYgaXQgaXMKLQkJCSAqIGluIHRyYW5zaXRpb24uCi0JCQkgKi8KLQkJCWRldl9lcnIo aGJhLT5kZXYsICIlczogY21kIGF0IHRhZyAlZCBub3QgcGVuZGluZyBpbiB0aGUgZGV2aWNlLlxu IiwKLQkJCQlfX2Z1bmNfXywgdGFnKTsKLQkJCXJlZyA9IHVmc2hjZF9yZWFkbChoYmEsIFJFR19V VFBfVFJBTlNGRVJfUkVRX0RPT1JfQkVMTCk7Ci0JCQlpZiAocmVnICYgKDEgPDwgdGFnKSkgewot CQkJCS8qIHNsZWVwIGZvciBtYXguIDIwMHVzIHRvIHN0YWJpbGl6ZSAqLwotCQkJCXVzbGVlcF9y YW5nZSgxMDAsIDIwMCk7Ci0JCQkJY29udGludWU7Ci0JCQl9Ci0JCQkvKiBjb21tYW5kIGNvbXBs ZXRlZCBhbHJlYWR5ICovCi0JCQlkZXZfZXJyKGhiYS0+ZGV2LCAiJXM6IGNtZCBhdCB0YWcgJWQg c3VjY2Vzc2Z1bGx5IGNsZWFyZWQgZnJvbSBEQi5cbiIsCi0JCQkJX19mdW5jX18sIHRhZyk7Ci0J CQlnb3RvIG91dDsKLQkJfSBlbHNlIHsKLQkJCWRldl9lcnIoaGJhLT5kZXYsCi0JCQkJIiVzOiBu byByZXNwb25zZSBmcm9tIGRldmljZS4gdGFnID0gJWQsIGVyciAlZFxuIiwKLQkJCQlfX2Z1bmNf XywgdGFnLCBlcnIpOwotCQkJaWYgKCFlcnIpCi0JCQkJZXJyID0gcmVzcDsgLyogc2VydmljZSBy ZXNwb25zZSBlcnJvciAqLwotCQkJZ290byBvdXQ7Ci0JCX0KLQl9Ci0KLQlpZiAoIXBvbGxfY250 KSB7Ci0JCWVyciA9IC1FQlVTWTsKLQkJZ290byBvdXQ7Ci0JfQotCi0JZXJyID0gdWZzaGNkX2lz c3VlX3RtX2NtZChoYmEsIGxyYnAtPmx1biwgbHJicC0+dGFza190YWcsCi0JCQlVRlNfQUJPUlRf VEFTSywgJnJlc3ApOwotCWlmIChlcnIgfHwgcmVzcCAhPSBVUElVX1RBU0tfTUFOQUdFTUVOVF9G VU5DX0NPTVBMKSB7Ci0JCWlmICghZXJyKSB7Ci0JCQllcnIgPSByZXNwOyAvKiBzZXJ2aWNlIHJl c3BvbnNlIGVycm9yICovCi0JCQlkZXZfZXJyKGhiYS0+ZGV2LCAiJXM6IGlzc3VlZC4gdGFnID0g JWQsIGVyciAlZFxuIiwKLQkJCQlfX2Z1bmNfXywgdGFnLCBlcnIpOwotCQl9Ci0JCWdvdG8gb3V0 OwotCX0KLQotCWVyciA9IHVmc2hjZF9jbGVhcl9jbWQoaGJhLCB0YWcpOwotCWlmIChlcnIpIHsK LQkJZGV2X2VycihoYmEtPmRldiwgIiVzOiBGYWlsZWQgY2xlYXJpbmcgY21kIGF0IHRhZyAlZCwg ZXJyICVkXG4iLAotCQkJX19mdW5jX18sIHRhZywgZXJyKTsKKwllcnIgPSB1ZnNoY2RfdHJ5X3Rv X2Fib3J0X3Rhc2soaGJhLCB0YWcpOworCWlmIChlcnIpCiAJCWdvdG8gb3V0OwotCX0KIAogCXNw aW5fbG9ja19pcnFzYXZlKGhvc3QtPmhvc3RfbG9jaywgZmxhZ3MpOwogCV9fdWZzaGNkX3RyYW5z ZmVyX3JlcV9jb21wbChoYmEsICgxVUwgPDwgdGFnKSk7Ci0tIApRdWFsY29tbSBJbm5vdmF0aW9u IENlbnRlciwgSW5jLiBpcyBhIG1lbWJlciBvZiBDb2RlIEF1cm9yYSBGb3J1bSwgYSBMaW51eCBG b3VuZGF0aW9uIENvbGxhYm9yYXRpdmUgUHJvamVjdC4KCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpMaW51eC1tZWRpYXRlayBtYWlsaW5nIGxpc3QKTGlu dXgtbWVkaWF0ZWtAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LW1lZGlhdGVrCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.0 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id D8B57C433E2 for ; Thu, 3 Sep 2020 02:26:45 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 9265620773 for ; Thu, 3 Sep 2020 02:26:45 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="VGOQ/5yN" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 9265620773 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=codeaurora.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-Id:Date: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=6rWheMCj6WAO02lgHAxb8FUUPiov7vQ9iVij9TYy9Ok=; b=VGOQ/5yNdVC81qYXNjayX4+lp NOklxzIhMNZ/4NHbjKleoxiERt6DN4LLAqhb1p+TSz6T6awXiX+wk1gwTAGCBMu5A3WNjxRqGFaTT fhdO/fzjcnvrhROq7388pah8VnKNqpWF90BISpqvcHTPqYJpXgX2+/wPxusxZZDb2u4I/03NZVDNi y+Bw/CC5LE9386yjYWBbW4VFnpNaZBBYKzhw+tEHg7/zdWDu1OUX+juj20UWCv8gHFqsGio3+jsZi KKj7esVfr8apdcK4I/vUFyTdJQJnqPIUeKr+ZHD9bAE90e3Jc7jsbP9AYiCeK7r/SWoKsW+2PRlsc yuQlyegaQ==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kDewS-0000vn-J8; Thu, 03 Sep 2020 02:25:36 +0000 Received: from labrats.qualcomm.com ([199.106.110.90]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kDewP-0000uy-8P; Thu, 03 Sep 2020 02:25:34 +0000 IronPort-SDR: 1BTrOD9lwhZFNhGA64FlbLP0y+SZAaM7K94QcUAw5i20PXwBaBUiBiiconrwOTGG6t2M3fe6wa tu70AKMZ1uwA3jtQSRSCZ4Pd+Ce3iygcQ1ewuczduDLJ3u7q2+2q2se9xwiyVRsNdMtPkfUoxA ddk+aF6VlG4IoAgDZosgdbFtKRwMQZoY/vYrDIEZksDwkjQAvofMRUbZO9f5PFGf43RCQXGKR5 4z/xHRyZ+A/E0on9LAsGKNVu1AfkMHb3HZFBM1lB1qIq6Catchq7BwS570n6WmxKi8YL/KTtka XAw= X-IronPort-AV: E=Sophos;i="5.76,384,1592895600"; d="scan'208";a="29130859" Received: from unknown (HELO ironmsg04-sd.qualcomm.com) ([10.53.140.144]) by labrats.qualcomm.com with ESMTP; 02 Sep 2020 19:24:40 -0700 Received: from wsp769891wss.qualcomm.com (HELO stor-presley.qualcomm.com) ([192.168.140.85]) by ironmsg04-sd.qualcomm.com with ESMTP; 02 Sep 2020 19:24:39 -0700 Received: by stor-presley.qualcomm.com (Postfix, from userid 359480) id 44EB4215EA; Wed, 2 Sep 2020 19:24:39 -0700 (PDT) From: Can Guo To: asutoshd@codeaurora.org, nguyenb@codeaurora.org, hongwus@codeaurora.org, ziqichen@codeaurora.org, rnayak@codeaurora.org, linux-scsi@vger.kernel.org, kernel-team@android.com, saravanak@google.com, salyzyn@google.com, cang@codeaurora.org Subject: [PATCH v2 1/2] scsi: ufs: Abort tasks before clear them from doorbell Date: Wed, 2 Sep 2020 19:24:31 -0700 Message-Id: <1599099873-32579-2-git-send-email-cang@codeaurora.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1599099873-32579-1-git-send-email-cang@codeaurora.org> References: <1599099873-32579-1-git-send-email-cang@codeaurora.org> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200902_222533_442712_DDCD65EE X-CRM114-Status: GOOD ( 21.49 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Bart Van Assche , "Martin K. Petersen" , "James E.J. Bottomley" , open list , Avri Altman , "moderated list:ARM/Mediatek SoC support" , Alim Akhtar , Matthias Brugger , Stanley Chu , "moderated list:ARM/Mediatek SoC support" , Bean Huo Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org VG8gcmVjb3Zlcnkgbm9uLWZhdGFsIGVycm9ycywgbm8gZnVsbCByZXNldCBpcyByZXF1aXJlZCwg ZXJyX2hhbmRsZXIgb25seQpjbGVhcnMgdGhvc2UgcGVuZGluZyBUUnMvVE1ScyBzbyB0aGF0IHNj c2kgbGF5ZXIgY2FuIHJlLWlzc3VlIHRoZW0uIEluCmN1cnJlbnQgZXJyX2hhbmRsZXIsIFRScyBh cmUgZGlyZWN0bHkgY2xlYXJlZCBmcm9tIFVGUyBob3N0J3MgZG9vcmJlbGwgYnV0Cm5vdCBhYm9y dGVkIGZyb20gZGV2aWNlIHNpZGUuIEhvd2V2ZXIsIGFjY29yZGluZyB0byB0aGUgVUZTSENJIEpF REVDIHNwZWMsCnRoZSBob3N0IHNvZnR3YXJlIHNoYWxsIHVzZSBVVFAgVHJhbnNmZXIgUmVxdWVz dCBMaXN0IENMZWFyIFJlZ2lzdGVyIHRvCmNsZWFyIGEgdGFzayBmcm9tIFVGUyBob3N0J3MgZG9v cmJlbGwgb25seSB3aGVuIGEgVVRQIFRyYW5zZmVyIFJlcXVlc3QgaXMKZXhwZWN0ZWQgdG8gbm90 IGJlIGNvbXBsZXRlZCwgZS5nLiB3aGVuIHRoZSBob3N0IHNvZnR3YXJlIHJlY2VpdmVzIGEK4oCc RlVOQ1RJT04gQ09NUExFVEXigJ0gVGFzayBNYW5hZ2VtZW50IHJlc3BvbnNlIHdoaWNoIG1lYW5z IGEgVHJhbnNmZXIgUmVxdWVzdAp3YXMgYWJvcnRlZC4gVG8gZm9sbG93IHRoZSBVRlNIQ0kgSkVE RUMgc3BlYywgaW4gZXJyX2hhbmRsZXIsIGFib3J0cyBvbmUgVFIKYmVmb3JlIGNsZWFyaW5nIGl0 IGZyb20gZG9vcmJlbGwuCgpTaWduZWQtb2ZmLWJ5OiBDYW4gR3VvIDxjYW5nQGNvZGVhdXJvcmEu b3JnPgpBY2tlZC1ieTogU3RhbmxleSBDaHUgPHN0YW5sZXkuY2h1QG1lZGlhdGVrLmNvbT4KLS0t CiBkcml2ZXJzL3Njc2kvdWZzL3Vmc2hjZC5jIHwgMTQzICsrKysrKysrKysrKysrKysrKysrKysr KysrLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA4MSBpbnNlcnRpb25zKCsp LCA2MiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvdWZzL3Vmc2hjZC5j IGIvZHJpdmVycy9zY3NpL3Vmcy91ZnNoY2QuYwppbmRleCAwNmUyNDM5Li43MmFmZTEyIDEwMDY0 NAotLS0gYS9kcml2ZXJzL3Njc2kvdWZzL3Vmc2hjZC5jCisrKyBiL2RyaXZlcnMvc2NzaS91ZnMv dWZzaGNkLmMKQEAgLTIzOCw2ICsyMzgsNyBAQCBzdGF0aWMgaW50IHVmc2hjZF9zZXR1cF9oYmFf dnJlZyhzdHJ1Y3QgdWZzX2hiYSAqaGJhLCBib29sIG9uKTsKIHN0YXRpYyBpbnQgdWZzaGNkX3Nl dHVwX3ZyZWcoc3RydWN0IHVmc19oYmEgKmhiYSwgYm9vbCBvbik7CiBzdGF0aWMgaW5saW5lIGlu dCB1ZnNoY2RfY29uZmlnX3ZyZWdfaHBtKHN0cnVjdCB1ZnNfaGJhICpoYmEsCiAJCQkJCSBzdHJ1 Y3QgdWZzX3ZyZWcgKnZyZWcpOworc3RhdGljIGludCB1ZnNoY2RfdHJ5X3RvX2Fib3J0X3Rhc2so c3RydWN0IHVmc19oYmEgKmhiYSwgaW50IHRhZyk7CiBzdGF0aWMgaW50IHVmc2hjZF93Yl9idWZf Zmx1c2hfZW5hYmxlKHN0cnVjdCB1ZnNfaGJhICpoYmEpOwogc3RhdGljIGludCB1ZnNoY2Rfd2Jf YnVmX2ZsdXNoX2Rpc2FibGUoc3RydWN0IHVmc19oYmEgKmhiYSk7CiBzdGF0aWMgaW50IHVmc2hj ZF93Yl9jdHJsKHN0cnVjdCB1ZnNfaGJhICpoYmEsIGJvb2wgZW5hYmxlKTsKQEAgLTU2NjYsOCAr NTY2Nyw4IEBAIHN0YXRpYyB2b2lkIHVmc2hjZF9lcnJfaGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1 Y3QgKndvcmspCiB7CiAJc3RydWN0IHVmc19oYmEgKmhiYTsKIAl1bnNpZ25lZCBsb25nIGZsYWdz OwotCXUzMiBlcnJfeGZlciA9IDA7Ci0JdTMyIGVycl90bSA9IDA7CisJYm9vbCBlcnJfeGZlciA9 IGZhbHNlOworCWJvb2wgZXJyX3RtID0gZmFsc2U7CiAJaW50IGVyciA9IDA7CiAJaW50IHRhZzsK IAlib29sIG5lZWRzX3Jlc2V0ID0gZmFsc2U7CkBAIC01NzQzLDcgKzU3NDQsNyBAQCBzdGF0aWMg dm9pZCB1ZnNoY2RfZXJyX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogCXNwaW5f dW5sb2NrX2lycXJlc3RvcmUoaGJhLT5ob3N0LT5ob3N0X2xvY2ssIGZsYWdzKTsKIAkvKiBDbGVh ciBwZW5kaW5nIHRyYW5zZmVyIHJlcXVlc3RzICovCiAJZm9yX2VhY2hfc2V0X2JpdCh0YWcsICZo YmEtPm91dHN0YW5kaW5nX3JlcXMsIGhiYS0+bnV0cnMpIHsKLQkJaWYgKHVmc2hjZF9jbGVhcl9j bWQoaGJhLCB0YWcpKSB7CisJCWlmICh1ZnNoY2RfdHJ5X3RvX2Fib3J0X3Rhc2soaGJhLCB0YWcp KSB7CiAJCQllcnJfeGZlciA9IHRydWU7CiAJCQlnb3RvIGxvY2tfc2tpcF9wZW5kaW5nX3hmZXJf Y2xlYXI7CiAJCX0KQEAgLTY0OTUsNyArNjQ5Niw3IEBAIHN0YXRpYyB2b2lkIHVmc2hjZF9zZXRf cmVxX2Fib3J0X3NraXAoc3RydWN0IHVmc19oYmEgKmhiYSwgdW5zaWduZWQgbG9uZyBiaXRtYXAp CiB9CiAKIC8qKgotICogdWZzaGNkX2Fib3J0IC0gYWJvcnQgYSBzcGVjaWZpYyBjb21tYW5kCisg KiB1ZnNoY2RfdHJ5X3RvX2Fib3J0X3Rhc2sgLSBhYm9ydCBhIHNwZWNpZmljIHRhc2sKICAqIEBj bWQ6IFNDU0kgY29tbWFuZCBwb2ludGVyCiAgKgogICogQWJvcnQgdGhlIHBlbmRpbmcgY29tbWFu ZCBpbiBkZXZpY2UgYnkgc2VuZGluZyBVRlNfQUJPUlRfVEFTSyB0YXNrIG1hbmFnZW1lbnQKQEAg LTY1MDQsNiArNjUwNSw4MCBAQCBzdGF0aWMgdm9pZCB1ZnNoY2Rfc2V0X3JlcV9hYm9ydF9za2lw KHN0cnVjdCB1ZnNfaGJhICpoYmEsIHVuc2lnbmVkIGxvbmcgYml0bWFwKQogICogaXNzdWVkLiBU byBhdm9pZCB0aGF0LCBmaXJzdCBpc3N1ZSBVRlNfUVVFUllfVEFTSyB0byBjaGVjayBpZiB0aGUg Y29tbWFuZCBpcwogICogcmVhbGx5IGlzc3VlZCBhbmQgdGhlbiB0cnkgdG8gYWJvcnQgaXQuCiAg KgorICogUmV0dXJucyB6ZXJvIG9uIHN1Y2Nlc3MsIG5vbi16ZXJvIG9uIGZhaWx1cmUKKyAqLwor c3RhdGljIGludCB1ZnNoY2RfdHJ5X3RvX2Fib3J0X3Rhc2soc3RydWN0IHVmc19oYmEgKmhiYSwg aW50IHRhZykKK3sKKwlzdHJ1Y3QgdWZzaGNkX2xyYiAqbHJicCA9ICZoYmEtPmxyYlt0YWddOwor CWludCBlcnIgPSAwOworCWludCBwb2xsX2NudDsKKwl1OCByZXNwID0gMHhGOworCXUzMiByZWc7 CisKKwlmb3IgKHBvbGxfY250ID0gMTAwOyBwb2xsX2NudDsgcG9sbF9jbnQtLSkgeworCQllcnIg PSB1ZnNoY2RfaXNzdWVfdG1fY21kKGhiYSwgbHJicC0+bHVuLCBscmJwLT50YXNrX3RhZywKKwkJ CQlVRlNfUVVFUllfVEFTSywgJnJlc3ApOworCQlpZiAoIWVyciAmJiByZXNwID09IFVQSVVfVEFT S19NQU5BR0VNRU5UX0ZVTkNfU1VDQ0VFREVEKSB7CisJCQkvKiBjbWQgcGVuZGluZyBpbiB0aGUg ZGV2aWNlICovCisJCQlkZXZfZXJyKGhiYS0+ZGV2LCAiJXM6IGNtZCBwZW5kaW5nIGluIHRoZSBk ZXZpY2UuIHRhZyA9ICVkXG4iLAorCQkJCV9fZnVuY19fLCB0YWcpOworCQkJYnJlYWs7CisJCX0g ZWxzZSBpZiAoIWVyciAmJiByZXNwID09IFVQSVVfVEFTS19NQU5BR0VNRU5UX0ZVTkNfQ09NUEwp IHsKKwkJCS8qCisJCQkgKiBjbWQgbm90IHBlbmRpbmcgaW4gdGhlIGRldmljZSwgY2hlY2sgaWYg aXQgaXMKKwkJCSAqIGluIHRyYW5zaXRpb24uCisJCQkgKi8KKwkJCWRldl9lcnIoaGJhLT5kZXYs ICIlczogY21kIGF0IHRhZyAlZCBub3QgcGVuZGluZyBpbiB0aGUgZGV2aWNlLlxuIiwKKwkJCQlf X2Z1bmNfXywgdGFnKTsKKwkJCXJlZyA9IHVmc2hjZF9yZWFkbChoYmEsIFJFR19VVFBfVFJBTlNG RVJfUkVRX0RPT1JfQkVMTCk7CisJCQlpZiAocmVnICYgKDEgPDwgdGFnKSkgeworCQkJCS8qIHNs ZWVwIGZvciBtYXguIDIwMHVzIHRvIHN0YWJpbGl6ZSAqLworCQkJCXVzbGVlcF9yYW5nZSgxMDAs IDIwMCk7CisJCQkJY29udGludWU7CisJCQl9CisJCQkvKiBjb21tYW5kIGNvbXBsZXRlZCBhbHJl YWR5ICovCisJCQlkZXZfZXJyKGhiYS0+ZGV2LCAiJXM6IGNtZCBhdCB0YWcgJWQgc3VjY2Vzc2Z1 bGx5IGNsZWFyZWQgZnJvbSBEQi5cbiIsCisJCQkJX19mdW5jX18sIHRhZyk7CisJCQlnb3RvIG91 dDsKKwkJfSBlbHNlIHsKKwkJCWRldl9lcnIoaGJhLT5kZXYsCisJCQkJIiVzOiBubyByZXNwb25z ZSBmcm9tIGRldmljZS4gdGFnID0gJWQsIGVyciAlZFxuIiwKKwkJCQlfX2Z1bmNfXywgdGFnLCBl cnIpOworCQkJaWYgKCFlcnIpCisJCQkJZXJyID0gcmVzcDsgLyogc2VydmljZSByZXNwb25zZSBl cnJvciAqLworCQkJZ290byBvdXQ7CisJCX0KKwl9CisKKwlpZiAoIXBvbGxfY250KSB7CisJCWVy ciA9IC1FQlVTWTsKKwkJZ290byBvdXQ7CisJfQorCisJZXJyID0gdWZzaGNkX2lzc3VlX3RtX2Nt ZChoYmEsIGxyYnAtPmx1biwgbHJicC0+dGFza190YWcsCisJCQlVRlNfQUJPUlRfVEFTSywgJnJl c3ApOworCWlmIChlcnIgfHwgcmVzcCAhPSBVUElVX1RBU0tfTUFOQUdFTUVOVF9GVU5DX0NPTVBM KSB7CisJCWlmICghZXJyKSB7CisJCQllcnIgPSByZXNwOyAvKiBzZXJ2aWNlIHJlc3BvbnNlIGVy cm9yICovCisJCQlkZXZfZXJyKGhiYS0+ZGV2LCAiJXM6IGlzc3VlZC4gdGFnID0gJWQsIGVyciAl ZFxuIiwKKwkJCQlfX2Z1bmNfXywgdGFnLCBlcnIpOworCQl9CisJCWdvdG8gb3V0OworCX0KKwor CWVyciA9IHVmc2hjZF9jbGVhcl9jbWQoaGJhLCB0YWcpOworCWlmIChlcnIpCisJCWRldl9lcnIo aGJhLT5kZXYsICIlczogRmFpbGVkIGNsZWFyaW5nIGNtZCBhdCB0YWcgJWQsIGVyciAlZFxuIiwK KwkJCV9fZnVuY19fLCB0YWcsIGVycik7CisKK291dDoKKwlyZXR1cm4gZXJyOworfQorCisvKioK KyAqIHVmc2hjZF9hYm9ydCAtIHNjc2kgaG9zdCB0ZW1wbGF0ZSBlaF9hYm9ydF9oYW5kbGVyIGNh bGxiYWNrCisgKiBAY21kOiBTQ1NJIGNvbW1hbmQgcG9pbnRlcgorICoKICAqIFJldHVybnMgU1VD Q0VTUy9GQUlMRUQKICAqLwogc3RhdGljIGludCB1ZnNoY2RfYWJvcnQoc3RydWN0IHNjc2lfY21u ZCAqY21kKQpAQCAtNjUxMyw4ICs2NTg4LDYgQEAgc3RhdGljIGludCB1ZnNoY2RfYWJvcnQoc3Ry dWN0IHNjc2lfY21uZCAqY21kKQogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAJdW5zaWduZWQgaW50 IHRhZzsKIAlpbnQgZXJyID0gMDsKLQlpbnQgcG9sbF9jbnQ7Ci0JdTggcmVzcCA9IDB4RjsKIAlz dHJ1Y3QgdWZzaGNkX2xyYiAqbHJicDsKIAl1MzIgcmVnOwogCkBAIC02NTgzLDYzICs2NjU2LDkg QEAgc3RhdGljIGludCB1ZnNoY2RfYWJvcnQoc3RydWN0IHNjc2lfY21uZCAqY21kKQogCQlnb3Rv IG91dDsKIAl9CiAKLQlmb3IgKHBvbGxfY250ID0gMTAwOyBwb2xsX2NudDsgcG9sbF9jbnQtLSkg ewotCQllcnIgPSB1ZnNoY2RfaXNzdWVfdG1fY21kKGhiYSwgbHJicC0+bHVuLCBscmJwLT50YXNr X3RhZywKLQkJCQlVRlNfUVVFUllfVEFTSywgJnJlc3ApOwotCQlpZiAoIWVyciAmJiByZXNwID09 IFVQSVVfVEFTS19NQU5BR0VNRU5UX0ZVTkNfU1VDQ0VFREVEKSB7Ci0JCQkvKiBjbWQgcGVuZGlu ZyBpbiB0aGUgZGV2aWNlICovCi0JCQlkZXZfZXJyKGhiYS0+ZGV2LCAiJXM6IGNtZCBwZW5kaW5n IGluIHRoZSBkZXZpY2UuIHRhZyA9ICVkXG4iLAotCQkJCV9fZnVuY19fLCB0YWcpOwotCQkJYnJl YWs7Ci0JCX0gZWxzZSBpZiAoIWVyciAmJiByZXNwID09IFVQSVVfVEFTS19NQU5BR0VNRU5UX0ZV TkNfQ09NUEwpIHsKLQkJCS8qCi0JCQkgKiBjbWQgbm90IHBlbmRpbmcgaW4gdGhlIGRldmljZSwg Y2hlY2sgaWYgaXQgaXMKLQkJCSAqIGluIHRyYW5zaXRpb24uCi0JCQkgKi8KLQkJCWRldl9lcnIo aGJhLT5kZXYsICIlczogY21kIGF0IHRhZyAlZCBub3QgcGVuZGluZyBpbiB0aGUgZGV2aWNlLlxu IiwKLQkJCQlfX2Z1bmNfXywgdGFnKTsKLQkJCXJlZyA9IHVmc2hjZF9yZWFkbChoYmEsIFJFR19V VFBfVFJBTlNGRVJfUkVRX0RPT1JfQkVMTCk7Ci0JCQlpZiAocmVnICYgKDEgPDwgdGFnKSkgewot CQkJCS8qIHNsZWVwIGZvciBtYXguIDIwMHVzIHRvIHN0YWJpbGl6ZSAqLwotCQkJCXVzbGVlcF9y YW5nZSgxMDAsIDIwMCk7Ci0JCQkJY29udGludWU7Ci0JCQl9Ci0JCQkvKiBjb21tYW5kIGNvbXBs ZXRlZCBhbHJlYWR5ICovCi0JCQlkZXZfZXJyKGhiYS0+ZGV2LCAiJXM6IGNtZCBhdCB0YWcgJWQg c3VjY2Vzc2Z1bGx5IGNsZWFyZWQgZnJvbSBEQi5cbiIsCi0JCQkJX19mdW5jX18sIHRhZyk7Ci0J CQlnb3RvIG91dDsKLQkJfSBlbHNlIHsKLQkJCWRldl9lcnIoaGJhLT5kZXYsCi0JCQkJIiVzOiBu byByZXNwb25zZSBmcm9tIGRldmljZS4gdGFnID0gJWQsIGVyciAlZFxuIiwKLQkJCQlfX2Z1bmNf XywgdGFnLCBlcnIpOwotCQkJaWYgKCFlcnIpCi0JCQkJZXJyID0gcmVzcDsgLyogc2VydmljZSBy ZXNwb25zZSBlcnJvciAqLwotCQkJZ290byBvdXQ7Ci0JCX0KLQl9Ci0KLQlpZiAoIXBvbGxfY250 KSB7Ci0JCWVyciA9IC1FQlVTWTsKLQkJZ290byBvdXQ7Ci0JfQotCi0JZXJyID0gdWZzaGNkX2lz c3VlX3RtX2NtZChoYmEsIGxyYnAtPmx1biwgbHJicC0+dGFza190YWcsCi0JCQlVRlNfQUJPUlRf VEFTSywgJnJlc3ApOwotCWlmIChlcnIgfHwgcmVzcCAhPSBVUElVX1RBU0tfTUFOQUdFTUVOVF9G VU5DX0NPTVBMKSB7Ci0JCWlmICghZXJyKSB7Ci0JCQllcnIgPSByZXNwOyAvKiBzZXJ2aWNlIHJl c3BvbnNlIGVycm9yICovCi0JCQlkZXZfZXJyKGhiYS0+ZGV2LCAiJXM6IGlzc3VlZC4gdGFnID0g JWQsIGVyciAlZFxuIiwKLQkJCQlfX2Z1bmNfXywgdGFnLCBlcnIpOwotCQl9Ci0JCWdvdG8gb3V0 OwotCX0KLQotCWVyciA9IHVmc2hjZF9jbGVhcl9jbWQoaGJhLCB0YWcpOwotCWlmIChlcnIpIHsK LQkJZGV2X2VycihoYmEtPmRldiwgIiVzOiBGYWlsZWQgY2xlYXJpbmcgY21kIGF0IHRhZyAlZCwg ZXJyICVkXG4iLAotCQkJX19mdW5jX18sIHRhZywgZXJyKTsKKwllcnIgPSB1ZnNoY2RfdHJ5X3Rv X2Fib3J0X3Rhc2soaGJhLCB0YWcpOworCWlmIChlcnIpCiAJCWdvdG8gb3V0OwotCX0KIAogCXNw aW5fbG9ja19pcnFzYXZlKGhvc3QtPmhvc3RfbG9jaywgZmxhZ3MpOwogCV9fdWZzaGNkX3RyYW5z ZmVyX3JlcV9jb21wbChoYmEsICgxVUwgPDwgdGFnKSk7Ci0tIApRdWFsY29tbSBJbm5vdmF0aW9u IENlbnRlciwgSW5jLiBpcyBhIG1lbWJlciBvZiBDb2RlIEF1cm9yYSBGb3J1bSwgYSBMaW51eCBG b3VuZGF0aW9uIENvbGxhYm9yYXRpdmUgUHJvamVjdC4KCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdAps aW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVh ZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==