Received: by 2002:a05:6a10:16a7:0:0:0:0 with SMTP id gp39csp106073pxb; Wed, 11 Nov 2020 21:47:32 -0800 (PST) X-Google-Smtp-Source: ABdhPJwxLMdg0OuURemVjhfbUFr75rzY6neKdoCxoPeds+h8intzraXfz9DN7swb9Dsubg0xs9Yw X-Received: by 2002:a17:906:1945:: with SMTP id b5mr28425122eje.388.1605160052039; Wed, 11 Nov 2020 21:47:32 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1605160052; cv=none; d=google.com; s=arc-20160816; b=xf/1HnJ2oOPubvDJqyrJFFNSH8luRvMBc9ruLKfZM49hnDd3WgZkF9qnoRTQgNi4aq Y0nPyUrDZgGqN30QOvsPujozNKZZblwO0VOAoBvzGq1+3yjJKKKn6GTKbDZiRn3qHvbS oZJTQkszxVwKXy2O0W1okWa+pgAPHztrsQe6wsRK+Xc2L0rXD2ih9oTHRfkI3POlmPEm v9hOi6Pj4wIHCIF4r+m917LkCWh+xEn3I1K29/o+Lo19h3Z90WBUm0z4dDAu90GMOydu ilhW3cjHWOSMBiXLQkbk0EMn4tcAmObmfuVI9zlwVykRZyrL4ck/nCCE1ncvyd6GiPsi ppNQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:message-id:date:subject:cc:to:from; bh=VXwDWUMX/DCOo5NOlU5YrZUgogB06HaMurjtIGt2v8A=; b=cmubCk8POSCAfGGj17JajPZzvXONW0a3tgM84YcovDM+YhHuNkRpnue67WnyUT95tn snAsKm1YNkQ8PrTLafLRusCWmrhx/AR2y5ynoxRzlOJEqOKHaus0dEFFtppW3s90l6sM rcHIylbZoA/Rmjb4TQB+NAw4x5iQHr9JKJnZVO/FogxkC5CSLj4XKk48jYOgwaGM/KRa Y0nyKWwpnhhiqEq8RgRPt4CVTASShEFOGJN8RdCcmIMhy2BnveQl0WWC5g/N4iEXg0T4 zrtfKtWT1WAa/LmptAz87wZ7UnXolupnh5qdQ+nfH2tQyuVmXVUC+CMb9j9ZzBru4xHE Wrrg== ARC-Authentication-Results: i=1; mx.google.com; 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=fail (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id g15si4089079edp.147.2020.11.11.21.47.09; Wed, 11 Nov 2020 21:47:32 -0800 (PST) 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; 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=fail (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726150AbgKLFpz (ORCPT + 99 others); Thu, 12 Nov 2020 00:45:55 -0500 Received: from mailgw01.mediatek.com ([210.61.82.183]:52217 "EHLO mailgw01.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1725920AbgKLFpu (ORCPT ); Thu, 12 Nov 2020 00:45:50 -0500 X-UUID: 3619e16383324db68f09494592aaac68-20201112 X-UUID: 3619e16383324db68f09494592aaac68-20201112 Received: from mtkcas10.mediatek.inc [(172.21.101.39)] by mailgw01.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.14 Build 0819 with TLSv1.2 ECDHE-RSA-AES256-SHA384 256/256) with ESMTP id 1261890501; Thu, 12 Nov 2020 13:45:41 +0800 Received: from mtkcas07.mediatek.inc (172.21.101.84) by mtkmbs02n2.mediatek.inc (172.21.101.101) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 12 Nov 2020 13:45:38 +0800 Received: from mtksdccf07.mediatek.inc (172.21.84.99) by mtkcas07.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Thu, 12 Nov 2020 13:45:38 +0800 From: Stanley Chu To: , , , , CC: , , , , , , , , , , , , , , , , Stanley Chu Subject: [PATCH] scsi: ufs: Add retry flow for failed hba enabling Date: Thu, 12 Nov 2020 13:45:37 +0800 Message-ID: <20201112054537.22494-1-stanley.chu@mediatek.com> X-Mailer: git-send-email 2.18.0 MIME-Version: 1.0 Content-Type: text/plain X-TM-SNTS-SMTP: 71C1B6B624CEB4EED4AABDF7C779B0B4F80EF6905439682D9094502A978056822000:8 X-MTK: N Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Once hba enabling is failed, add retry mechanism and in the meanwhile allow vendors to apply specific handlings before the next retry. For example, vendors can do vendor-specific host reset flow in variant function "ufshcd_vops_hce_enable_notify()". Signed-off-by: Stanley Chu --- drivers/scsi/ufs/ufshcd.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c index 8001bbfec5c0..9186ee01379a 100644 --- a/drivers/scsi/ufs/ufshcd.c +++ b/drivers/scsi/ufs/ufshcd.c @@ -4328,8 +4328,10 @@ static inline void ufshcd_hba_stop(struct ufs_hba *hba) */ static int ufshcd_hba_execute_hce(struct ufs_hba *hba) { - int retry; + int retry_outer = 3; + int retry_inner; +start: if (!ufshcd_is_hba_active(hba)) /* change controller state to "reset state" */ ufshcd_hba_stop(hba); @@ -4355,13 +4357,17 @@ static int ufshcd_hba_execute_hce(struct ufs_hba *hba) ufshcd_delay_us(hba->vps->hba_enable_delay_us, 100); /* wait for the host controller to complete initialization */ - retry = 50; + retry_inner = 50; while (ufshcd_is_hba_active(hba)) { - if (retry) { - retry--; + if (retry_inner) { + retry_inner--; } else { dev_err(hba->dev, "Controller enable failed\n"); + if (retry_outer) { + retry_outer--; + goto start; + } return -EIO; } usleep_range(1000, 1100); -- 2.18.0