Received: by 2002:a25:e7d8:0:0:0:0:0 with SMTP id e207csp31809ybh; Fri, 13 Mar 2020 16:24:20 -0700 (PDT) X-Google-Smtp-Source: ADFU+vsgKfm1YY61eiSBV2ieRF5DVOppBZlyH3P+u2huAJLv852ntk+UjwbCxfLB/0E/TqwWaBV7 X-Received: by 2002:aca:f183:: with SMTP id p125mr2227152oih.74.1584141859900; Fri, 13 Mar 2020 16:24:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1584141859; cv=none; d=google.com; s=arc-20160816; b=o+Xjt9IUR/HtVeGGdIKagrcj7mf7fg6iAyo4jyY1UgvmCjj+6bqxutLGh85NFYUO6u 7xeKRCPnXnsK0hNP+QquWIG4s3n9HFYOpuFLNlMkJ6iYu8ubWAUnn8etlmT528GrDqQk cw7aq4uZbUeG4y7zezrYaurIrMCS7aWvcFv7O+E1ENANGwFVzNqpn6SpgqwpNRmdAv6F tm97UsLJitaJYtNEep6niPs8Yo/58qPQUiok784ADruHnTUcA1lX8qKF0U8O2Ua9SXTb TBWmMNhNnEa5vprArXw2ARvACkgTlbSBExHtwbzX7EdubFYqVbRn709xf9fI2TPMZqKG kLog== 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 :date:cc:to:from:subject:message-id:dkim-signature:dkim-signature; bh=gix44/p27tBua8gCRYEynP8gRnDw9TaHi1rPnMtgCK4=; b=c7dDGtJBWM1pc+WgiWQuzjFUC2v99qT7rUBRQEhwaQUCH6NvBFuuUa5fGSMVisBURx 5Y+VVJ4LzWwSVkP6CEZGhATVb7I6Qq6vJm7lOGJvvg6CxoiYL6hCzeFBdJ3i8HdPNMg0 cib62ZJVbxjjVFC3ui2FCmFiPR+QoQTcSx2OWyITLkz4rskANwXW10BFWuP458HGw0EQ XvRrbLejvRuDKfvHDwB8cWLv9JzOWYpDekau7kuZADzAIDaajlewc2Qoa0npH5p2QBEb dRZBQZiZeoG12glv0CMlx0pzEOXrnrOuyoAOt5AtZSpJfVIt46tWv6D3tB9fSj0tUB/h pZKw== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@hansenpartnership.com header.s=20151216 header.b=s05+YjZ0; dkim=fail header.i=@hansenpartnership.com header.s=20151216 header.b=D2+sQCR+; 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=hansenpartnership.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id p126si1246935oib.243.2020.03.13.16.24.05; Fri, 13 Mar 2020 16:24:19 -0700 (PDT) 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=@hansenpartnership.com header.s=20151216 header.b=s05+YjZ0; dkim=fail header.i=@hansenpartnership.com header.s=20151216 header.b=D2+sQCR+; 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=hansenpartnership.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726893AbgCMXXJ (ORCPT + 99 others); Fri, 13 Mar 2020 19:23:09 -0400 Received: from bedivere.hansenpartnership.com ([66.63.167.143]:38868 "EHLO bedivere.hansenpartnership.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726534AbgCMXXJ (ORCPT ); Fri, 13 Mar 2020 19:23:09 -0400 Received: from localhost (localhost [127.0.0.1]) by bedivere.hansenpartnership.com (Postfix) with ESMTP id F3ADB8EE111; Fri, 13 Mar 2020 16:23:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=hansenpartnership.com; s=20151216; t=1584141789; bh=VCoX1EwwLnSr6L3tIQYfVCXuLN2kvd+PaSNMLAJpXN4=; h=Subject:From:To:Cc:Date:From; b=s05+YjZ07WMjm9g6zuapE8sI5f/QJLCkc1O7Lo0s//eI/m9auMmJP7IqaOhdk5km1 EiHzMF2FG12S6GLYyLfeIOK2KnsaKYsctVupZjkV0yVctheeFv2GwA9AH/mlMlA6Qt JmAyV7YxlxQ9zN5yowJRFxTxf6PC09NwhOMYGif0= Received: from bedivere.hansenpartnership.com ([127.0.0.1]) by localhost (bedivere.hansenpartnership.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 5djAmLk8IPCm; Fri, 13 Mar 2020 16:23:08 -0700 (PDT) Received: from [153.66.254.194] (unknown [50.35.76.230]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bedivere.hansenpartnership.com (Postfix) with ESMTPSA id 8CB518EE10C; Fri, 13 Mar 2020 16:23:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=hansenpartnership.com; s=20151216; t=1584141788; bh=VCoX1EwwLnSr6L3tIQYfVCXuLN2kvd+PaSNMLAJpXN4=; h=Subject:From:To:Cc:Date:From; b=D2+sQCR+1nc/EN+g5sb3qgEV1AS8yq4QAOp8RbBOUeDRn3NnLzIEhkzkMbiID9vdB ERfAZtLv/U82n8aSqm2a9wZdoo5BloRR+63asx5iIObv8KjXvNbd6CAxasGMA4KnVL wTUFpQXNBSiNnpJlye9z3ArDyQ00PRai/JCrYmp0= Message-ID: <1584141787.20167.3.camel@HansenPartnership.com> Subject: [GIT PULL] SCSI fixes for 5.6-rc5 From: James Bottomley To: Andrew Morton , Linus Torvalds Cc: linux-scsi , linux-kernel Date: Fri, 13 Mar 2020 16:23:07 -0700 Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.26.6 Mime-Version: 1.0 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Two small fixes, both in drivers: ipr and ufs. The patch is available here: git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi.git scsi-fixes The short changelog is: Can Guo (1): scsi: ufs: Fix possible unclocked access to auto hibern8 timer register Wen Xiong (1): scsi: ipr: Fix softlockup when rescanning devices in petitboot and the diffstat: drivers/scsi/ipr.c | 3 ++- drivers/scsi/ipr.h | 1 + drivers/scsi/ufs/ufshcd.c | 21 ++++++++++++++------- 3 files changed, 17 insertions(+), 8 deletions(-) With full diff below. James --- diff --git a/drivers/scsi/ipr.c b/drivers/scsi/ipr.c index ae45cbe98ae2..cd8db1349871 100644 --- a/drivers/scsi/ipr.c +++ b/drivers/scsi/ipr.c @@ -9950,6 +9950,7 @@ static void ipr_init_ioa_cfg(struct ipr_ioa_cfg *ioa_cfg, ioa_cfg->max_devs_supported = ipr_max_devs; if (ioa_cfg->sis64) { + host->max_channel = IPR_MAX_SIS64_BUSES; host->max_id = IPR_MAX_SIS64_TARGETS_PER_BUS; host->max_lun = IPR_MAX_SIS64_LUNS_PER_TARGET; if (ipr_max_devs > IPR_MAX_SIS64_DEVS) @@ -9958,6 +9959,7 @@ static void ipr_init_ioa_cfg(struct ipr_ioa_cfg *ioa_cfg, + ((sizeof(struct ipr_config_table_entry64) * ioa_cfg->max_devs_supported))); } else { + host->max_channel = IPR_VSET_BUS; host->max_id = IPR_MAX_NUM_TARGETS_PER_BUS; host->max_lun = IPR_MAX_NUM_LUNS_PER_TARGET; if (ipr_max_devs > IPR_MAX_PHYSICAL_DEVS) @@ -9967,7 +9969,6 @@ static void ipr_init_ioa_cfg(struct ipr_ioa_cfg *ioa_cfg, * ioa_cfg->max_devs_supported))); } - host->max_channel = IPR_VSET_BUS; host->unique_id = host->host_no; host->max_cmd_len = IPR_MAX_CDB_LEN; host->can_queue = ioa_cfg->max_cmds; diff --git a/drivers/scsi/ipr.h b/drivers/scsi/ipr.h index a67baeb36d1f..b97aa9ac2ffe 100644 --- a/drivers/scsi/ipr.h +++ b/drivers/scsi/ipr.h @@ -1300,6 +1300,7 @@ struct ipr_resource_entry { #define IPR_ARRAY_VIRTUAL_BUS 0x1 #define IPR_VSET_VIRTUAL_BUS 0x2 #define IPR_IOAFP_VIRTUAL_BUS 0x3 +#define IPR_MAX_SIS64_BUSES 0x4 #define IPR_GET_RES_PHYS_LOC(res) \ (((res)->bus << 24) | ((res)->target << 8) | (res)->lun) diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c index abd0e6b05f79..2d705694636c 100644 --- a/drivers/scsi/ufs/ufshcd.c +++ b/drivers/scsi/ufs/ufshcd.c @@ -3884,18 +3884,25 @@ EXPORT_SYMBOL_GPL(ufshcd_uic_hibern8_exit); void ufshcd_auto_hibern8_update(struct ufs_hba *hba, u32 ahit) { unsigned long flags; + bool update = false; - if (!(hba->capabilities & MASK_AUTO_HIBERN8_SUPPORT)) + if (!ufshcd_is_auto_hibern8_supported(hba)) return; spin_lock_irqsave(hba->host->host_lock, flags); - if (hba->ahit == ahit) - goto out_unlock; - hba->ahit = ahit; - if (!pm_runtime_suspended(hba->dev)) - ufshcd_writel(hba, hba->ahit, REG_AUTO_HIBERNATE_IDLE_TIMER); -out_unlock: + if (hba->ahit != ahit) { + hba->ahit = ahit; + update = true; + } spin_unlock_irqrestore(hba->host->host_lock, flags); + + if (update && !pm_runtime_suspended(hba->dev)) { + pm_runtime_get_sync(hba->dev); + ufshcd_hold(hba, false); + ufshcd_auto_hibern8_enable(hba); + ufshcd_release(hba); + pm_runtime_put(hba->dev); + } } EXPORT_SYMBOL_GPL(ufshcd_auto_hibern8_update);