Received: by 2002:a05:6a10:22f:0:0:0:0 with SMTP id 15csp3241245pxk; Tue, 15 Sep 2020 13:57:35 -0700 (PDT) X-Google-Smtp-Source: ABdhPJz0CnTQQ+FPN502FeaMCZ5Y3HC58ZrrAIWpTRZ9PwC+DLmSVgwGCtMY+Y4HEQy+io5fhvjF X-Received: by 2002:a17:906:95cf:: with SMTP id n15mr17650729ejy.14.1600203455121; Tue, 15 Sep 2020 13:57:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1600203455; cv=none; d=google.com; s=arc-20160816; b=aNjOqePmpRaUwtBG0CZBSEQ+s9t6jIaul5o5lxvkOc6qfrXM5Lc8EM17eNXwLVLIWb 4Xv9DJjA///z//+Cb9seU8ghdnaBBFwtovM0cHw5Zo/c8oYC3N2wn900lPoStad8//Xu fzTTJOKi2nVAkF8u70FuSAKs0Z5m0r3nCp7t5q8U3cT1uEtHQgrN8p7s6mlrTFOou6Wb NFO5jblMZ9gMYVibbKJHRBfUD2C1Tshl/58pZS7XohsDrcT3BOljb29rrSH2H0QoegIt ywzkcOJ7O839725FJVF0U/fNqyhpDALnWV3DarWArCc93MQaVRe2FjROHiiRONSM95pk yuCA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=c3eQ86o72yt1fo7JLht6WlcDbaIJNRrwV28rou9apRs=; b=VH872x502EZxnMWFWQMJrpn5ROkmGh7vr64G8oXQIl9PylaJg7m4Z2rE8HXwfY6hJT CuPARAJ4mJ/04CKQoyDYd6ajGqZcTbIFu0dYUG+ETY+WNEB2cuwhyNrjwEXDt7oq7Bj8 h0wHFAyqpJix98uq3xFSuAkJ1wgGu3Ymb8nFfAcqiNMcNBZLpFyjNDR9HNHfBqb8Soed XURTX5MUgPPBkGoBLXzivkF9rBbJdwlD1Xk6GNBY1wcGAtvtvfjNWajh0c25zxAVYl2n TXhgIYbH3G0blmphLoLTyrBteQ/g6qOY4vktOTjwTHwjS/zyHMeNaopSpWZQVptSjNPG 6dDg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=xr8Slueg; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id oz18si10260857ejb.598.2020.09.15.13.57.12; Tue, 15 Sep 2020 13:57:35 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=xr8Slueg; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727821AbgIOUzu (ORCPT + 99 others); Tue, 15 Sep 2020 16:55:50 -0400 Received: from mail.kernel.org ([198.145.29.99]:42674 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727861AbgIOUqh (ORCPT ); Tue, 15 Sep 2020 16:46:37 -0400 Received: from localhost (unknown [104.132.1.66]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id C53DD20936; Tue, 15 Sep 2020 20:46:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1600202796; bh=d1coarY+kYt3CCUrBHh62z5mGDhyA+XvBeFtxID2pGs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=xr8SluegS6UFjDnRpW/eqYJKEKHp5AEwAjkKRdYO08kzM4/klo8niX2DcQe4Zss2c /pDVZNXyll/QpGFYJTmky/I8GRlEj9rr9tP/57W6H9SfvBbFCxfWh8x5XGQLItcKvy s2Cr/rv/S23NegqGZTb2Ysq/QYz3mnFuwwlNTkEg= From: Jaegeuk Kim To: linux-kernel@vger.kernel.org, linux-scsi@vger.kernel.org, kernel-team@android.com Cc: Jaegeuk Kim , Alim Akhtar , Avri Altman Subject: [PATCH 2/6] scsi: ufs: clear UAC for FFU Date: Tue, 15 Sep 2020 13:45:28 -0700 Message-Id: <20200915204532.1672300-2-jaegeuk@kernel.org> X-Mailer: git-send-email 2.28.0.618.gf4bc123cb7-goog In-Reply-To: <20200915204532.1672300-1-jaegeuk@kernel.org> References: <20200915204532.1672300-1-jaegeuk@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Jaegeuk Kim In order to conduct FFU or RPMB operations, UFS needs to clear UAC. This patch clears it explicitly, so that we could get no failure given early execution. Cc: Alim Akhtar Cc: Avri Altman Signed-off-by: Jaegeuk Kim --- drivers/scsi/ufs/ufshcd.c | 41 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c index d929c3d1e58cc..5deba03a61f75 100644 --- a/drivers/scsi/ufs/ufshcd.c +++ b/drivers/scsi/ufs/ufshcd.c @@ -7385,6 +7385,45 @@ static int ufshcd_add_lus(struct ufs_hba *hba) return ret; } +static int +ufshcd_send_request_sense(struct ufs_hba *hba, struct scsi_device *sdp); + +static int ufshcd_clear_uac(struct ufs_hba *hba) +{ + struct scsi_device *sdp; + unsigned long flags; + int ret = 0; + + spin_lock_irqsave(hba->host->host_lock, flags); + sdp = hba->sdev_ufs_device; + if (sdp) { + ret = scsi_device_get(sdp); + if (!ret && !scsi_device_online(sdp)) { + ret = -ENODEV; + scsi_device_put(sdp); + } + } else { + ret = -ENODEV; + } + spin_unlock_irqrestore(hba->host->host_lock, flags); + if (ret) + goto out_err; + + if (hba->wlun_dev_clr_ua) { + ret = ufshcd_send_request_sense(hba, sdp); + if (ret) + goto out; + /* Unit attention condition is cleared now */ + hba->wlun_dev_clr_ua = false; + } +out: + scsi_device_put(sdp); +out_err: + if (ret) + dev_err(hba->dev, "%s: Failed UAC clear ret = %d\n", __func__, ret); + return ret; +} + /** * ufshcd_probe_hba - probe hba to detect device and initialize * @hba: per-adapter instance @@ -7500,6 +7539,8 @@ static void ufshcd_async_scan(void *data, async_cookie_t cookie) pm_runtime_put_sync(hba->dev); ufshcd_exit_clk_scaling(hba); ufshcd_hba_exit(hba); + } else { + ufshcd_clear_uac(hba); } } -- 2.28.0.618.gf4bc123cb7-goog