Received: by 2002:a05:6a10:6d10:0:0:0:0 with SMTP id gq16csp621982pxb; Fri, 22 Apr 2022 08:04:00 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzhKxRiFtqk/MWS6YMAS4KkNWkWAC0fqvYA53ViSGXLRChLr56CFyq1yFjwUD5VWTqahf2G X-Received: by 2002:a05:6402:321b:b0:41d:888a:3ff0 with SMTP id g27-20020a056402321b00b0041d888a3ff0mr5390194eda.167.1650639839922; Fri, 22 Apr 2022 08:03:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1650639839; cv=none; d=google.com; s=arc-20160816; b=vINeD1fWC3/xtcxEuy0ERLGDjtAWkjwhFX5b9zt0fEIB0FY+BXKYVYfKWUpjAhZ0xJ zeD/G0/FWXA9jHx1n9S7wCtL7m6MQ1IOFsiQmMwEAAGmlR3DFOHlCKFJchU/K3LZwxMq /qMmpameHL9GzodIPRpP36o7hfkuEfJ0pHnqHYWBiauvVYzNOvdjAP9iMap7VpHcF304 wh/7O5Z/tZcDEyr9p7ZZ4q2WEnH/viuihiFs0u/GtOhNl3KSZh5+uo3yE2hn/eOZG+Vq TdW25q/fexpXp3VfNrOjoZFa+jYt4m3j3mfLfAQcpVU+3oyvZrURSPGcGjFdvOSXaBRi t3eg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:references:in-reply-to:message-id :date:subject:to:from; bh=+wJQlY0ijcfWjEM9VIOvL5B95jk1mnJj/O7+EN0VZrQ=; b=QaUzXDLdE2nbNR4uxGY7neCJocpUYuU5IFTs+NFhzRi7xZ6NtlZqHS01lgp4eQ3QFX ZMigdcUaU+d3WoiCGdu6Od8zlcvpmbLpLqk6GFuSZc0+0DyKeXuqq7jFS5qmXziqf8kF 5X2GG/D2rAm+VJyYosn4Qkybt5ckwcWk/xmkmWlrsiSkhy4TvAOCmF1mri0Df8L0Y44s dMaLv9Lx/+L1vJBv/vELS+0vsEqteK8TBs7SptxFpDmjeilc3Swhii39eLGnWxduhouC DoN77se2ZC+lBHy6514x5pOZYE/qIGpTRWRbzzs38luIUExRpvGhZjT7mo1Qt+uHzGg9 Stzg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id hh4-20020a170906a94400b006e8a89461c8si6903362ejb.902.2022.04.22.08.03.34; Fri, 22 Apr 2022 08:03:59 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1387993AbiDUKC6 (ORCPT + 99 others); Thu, 21 Apr 2022 06:02:58 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59990 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1388008AbiDUKCi (ORCPT ); Thu, 21 Apr 2022 06:02:38 -0400 Received: from ZXBJCAS.zhaoxin.com (zxbjcas.zhaoxin.com [124.127.214.139]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A07D921250; Thu, 21 Apr 2022 02:59:48 -0700 (PDT) Received: from zxbjmbx1.zhaoxin.com (10.29.252.163) by ZXBJCAS.zhaoxin.com (10.29.252.3) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27; Thu, 21 Apr 2022 17:43:37 +0800 Received: from zx-HX001EM1.zhaoxin.com (10.29.8.9) by zxbjmbx1.zhaoxin.com (10.29.252.163) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27; Thu, 21 Apr 2022 17:43:37 +0800 From: Runa Guo-oc To: , , Subject: [PATCH 2/2] ahci: Add PxSCTL.IPM control on actual LPM capability Date: Thu, 21 Apr 2022 17:43:37 +0800 Message-ID: <1650534217-14052-3-git-send-email-RunaGuo-oc@zhaoxin.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1650534217-14052-1-git-send-email-RunaGuo-oc@zhaoxin.com> References: <1650534217-14052-1-git-send-email-RunaGuo-oc@zhaoxin.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.29.8.9] X-ClientProxiedBy: zxbjmbx1.zhaoxin.com (10.29.252.163) To zxbjmbx1.zhaoxin.com (10.29.252.163) X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE, SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On some platform, when OS enables LPM by default (eg, min_power), then, DIPM slumber request cannot be disallowed if ahci's CAP.PSC is set to '1' and CAP.SSC is cleared to '0', which may cause ahci to be an uncertain state (same for Partial). In ahci spec, when CAP.PSC/SSC is cleared to '0', the PxSCTL.IPM field must be programmed to disallow device initiated Partial/ Slumber request. Adds support to control this case on actual LPM capability. Signed-off-by: Runa Guo-oc --- drivers/ata/libata-sata.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/drivers/ata/libata-sata.c b/drivers/ata/libata-sata.c index 7a5fe41..e6195cf 100644 --- a/drivers/ata/libata-sata.c +++ b/drivers/ata/libata-sata.c @@ -394,9 +394,19 @@ int sata_link_scr_lpm(struct ata_link *link, enum ata_lpm_policy policy, case ATA_LPM_MED_POWER_WITH_DIPM: case ATA_LPM_MIN_POWER_WITH_PARTIAL: case ATA_LPM_MIN_POWER: - if (ata_link_nr_enabled(link) > 0) + if (ata_link_nr_enabled(link) > 0) { /* no restrictions on LPM transitions */ scontrol &= ~(0x7 << 8); + + /* if controller does not support partial, then disallows it, + * the same for slumber + */ + if (!(link->ap->host->flags & ATA_HOST_PART)) + scontrol |= (0x1 << 8); + + if (!(link->ap->host->flags & ATA_HOST_SSC)) + scontrol |= (0x2 << 8); + } else { /* empty port, power off */ scontrol &= ~0xf; -- 2.7.4