Received: by 2002:a25:1506:0:0:0:0:0 with SMTP id 6csp1179716ybv; Wed, 5 Feb 2020 22:58:37 -0800 (PST) X-Google-Smtp-Source: APXvYqwEoD0tdUZP5nPsOZg0x+msUVg9FOFy5MWViMfUs+ToSyO2gRsVuAe3IfLtOuLZdctriww0 X-Received: by 2002:aca:2416:: with SMTP id n22mr5658561oic.169.1580972317301; Wed, 05 Feb 2020 22:58:37 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1580972317; cv=none; d=google.com; s=arc-20160816; b=iXbwvq/COXxDAuOYfJ0XMQTFc2GITrucPpAtbE90PwUGwoaihvxjhEmLm/9W/xSO98 675VXwCxJ47ewghE/Kk0ZagbiSt4Kgu/OK3qU+z0x858v7LLvvri99KfLE3gvW3gTgTW zi4Yyyod3FAs8iPDbePOoRiC2vpy11VbQJwJ62od1RsuPddRlRlFwro/4e9cHIEN0FOr i+RWibC13kXCAW81Gy5eOrAPlqXjtIYfKYzqovptI45h/ONb83u4rXJ3k+uTjb3kfPMq QDDMv7kc7pLtOv/HcELRU5pkUt2RwIyopcUqMdIsFZnHB7i3YN/X39wxOcO6olAQeacP 1slQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dmarc-filter:dkim-signature; bh=Acsfsqg2b6NUDHJeY/gDJ1vlOSDS93J/sV1EZBqKdko=; b=073neNb8+GtVp49PrImjlOvbqnriDaDTKpmp+eGwWqjVddpEG+T1qtmB2OJ54jCJAi 2WXXDJDqMkfyKobYwl8oH8oI8S8NU+wxabE2KLE2hRN+jqei7xD/3+aBZFtSs0LEeUpE Y0DFl2UEyYcEbXHZo/kBNJxUEzpnmvjqvxU0mu38L6/EtKPI/weyTyXOZQY6uaQUmKAP FpUHvXN6zvkLYspVT+M3ulAac6g8IfUr2DKALpz/fZZNav3TnTsp08HTbe/nN8jMomtS D7edlA1CixjiE9U8lrWenfI03NcxK+1XXjJJZor1c0fiV28HCdyC0QU2UFNSNjdkj31h jq0A== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@mg.codeaurora.org header.s=smtp header.b=iH0MfVtz; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id s5si1359528otd.141.2020.02.05.22.58.25; Wed, 05 Feb 2020 22:58:37 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=fail header.i=@mg.codeaurora.org header.s=smtp header.b=iH0MfVtz; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728016AbgBFG5Z (ORCPT + 99 others); Thu, 6 Feb 2020 01:57:25 -0500 Received: from mail26.static.mailgun.info ([104.130.122.26]:56809 "EHLO mail26.static.mailgun.info" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728014AbgBFG5Y (ORCPT ); Thu, 6 Feb 2020 01:57:24 -0500 DKIM-Signature: a=rsa-sha256; v=1; c=relaxed/relaxed; d=mg.codeaurora.org; q=dns/txt; s=smtp; t=1580972244; h=References: In-Reply-To: Message-Id: Date: Subject: Cc: To: From: Sender; bh=Acsfsqg2b6NUDHJeY/gDJ1vlOSDS93J/sV1EZBqKdko=; b=iH0MfVtz6Yu4T5gVoOhQl8vIsnDrsPB8f2oXJNANsAkhWrLnQbMmZs2rmOImZz2qOJw1AveO IZnS/D0geEnHj2/wgJz+FPiGAMTqSwABjCXfHcKpSh0zEhbs35I+WYGNJE9Jsm21K2Wt2CxB /8BZO8UagH0h/nNF2Zgi2nmwBDM= X-Mailgun-Sending-Ip: 104.130.122.26 X-Mailgun-Sid: WyI0MWYwYSIsICJsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnIiwgImJlOWU0YSJd Received: from smtp.codeaurora.org (ec2-35-166-182-171.us-west-2.compute.amazonaws.com [35.166.182.171]) by mxa.mailgun.org with ESMTP id 5e3bb8cf.7f390a9d5a40-smtp-out-n01; Thu, 06 Feb 2020 06:57:19 -0000 (UTC) Received: by smtp.codeaurora.org (Postfix, from userid 1001) id B23EAC447A0; Thu, 6 Feb 2020 06:57:18 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-caf-mail-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-1.0 required=2.0 tests=ALL_TRUSTED,SPF_NONE autolearn=unavailable autolearn_force=no version=3.4.0 Received: from pacamara-linux.qualcomm.com (i-global254.qualcomm.com [199.106.103.254]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: cang) by smtp.codeaurora.org (Postfix) with ESMTPSA id 475A5C433CB; Thu, 6 Feb 2020 06:57:17 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org 475A5C433CB Authentication-Results: aws-us-west-2-caf-mail-1.web.codeaurora.org; dmarc=none (p=none dis=none) header.from=codeaurora.org Authentication-Results: aws-us-west-2-caf-mail-1.web.codeaurora.org; spf=none smtp.mailfrom=cang@codeaurora.org From: Can Guo To: asutoshd@codeaurora.org, nguyenb@codeaurora.org, hongwus@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 , Bean Huo , Stanley Chu , Bart Van Assche , Venkat Gopalakrishnan , Tomas Winkler , 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 5/8] scsi: ufs: Fix ufshcd_hold() caused scheduling while atomic Date: Wed, 5 Feb 2020 22:56:48 -0800 Message-Id: <1580972212-29881-6-git-send-email-cang@codeaurora.org> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1580972212-29881-1-git-send-email-cang@codeaurora.org> References: <1580972212-29881-1-git-send-email-cang@codeaurora.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The async version of ufshcd_hold(async == true), which is only called in queuecommand path as for now, is expected to work in atomic context, thus it should not sleep or schedule out. When it runs into the condition that clocks are ON but link is still in hibern8 state, it should bail out without flushing the clock ungate work. Signed-off-by: Can Guo Reviewed-by: Hongwu Su Reviewed-by: Asutosh Das Reviewed-by: Bean Huo Reviewed-by: Stanley Chu diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c index bbc2607..e8f7f9d 100644 --- a/drivers/scsi/ufs/ufshcd.c +++ b/drivers/scsi/ufs/ufshcd.c @@ -1518,6 +1518,11 @@ int ufshcd_hold(struct ufs_hba *hba, bool async) */ if (ufshcd_can_hibern8_during_gating(hba) && ufshcd_is_link_hibern8(hba)) { + if (async) { + rc = -EAGAIN; + hba->clk_gating.active_reqs--; + break; + } spin_unlock_irqrestore(hba->host->host_lock, flags); flush_work(&hba->clk_gating.ungate_work); spin_lock_irqsave(hba->host->host_lock, flags); -- The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project