From patchwork Tue Mar 10 01:48:31 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: AceLan Kao X-Patchwork-Id: 1251916 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=canonical.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=mLwzA5a2; dkim-atps=neutral Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 48byg75W9wz9sSJ; Tue, 10 Mar 2020 12:48:51 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1jBU0m-0001QS-Cl; Tue, 10 Mar 2020 01:48:48 +0000 Received: from mail-pf1-f193.google.com ([209.85.210.193]) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1jBU0k-0001Oj-1f for kernel-team@lists.ubuntu.com; Tue, 10 Mar 2020 01:48:46 +0000 Received: by mail-pf1-f193.google.com with SMTP id l184so5695651pfl.7 for ; Mon, 09 Mar 2020 18:48:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:subject:date:message-id:in-reply-to:references; bh=kkb7Yil0QGcFQNQoU9gazCdPLv9JgsPdJSmH8sw6M7w=; b=mLwzA5a2sJhwhPxPLnT05Nfwo6aw6jSGsiO25fQpzYD22AtlpGMjQ1n4wbdhsJ/FtZ Rv5vLit3BtsBsg65ZEMSs6DZloHAEC5tQRgBrahzvQxa0j2LJTm0v+GPwIOzMR6MY6YJ qpXToSBXAzrEIHzfPU+JkdeT5gxzmSSXDniwYl9iLSoQ1/KtJqSdHKCsOXDzJ61K9B0n cuAL3JAa4scPIBoS236qYAmcCchQG9BfavZI2/E5/QQTrG8/dQEt4TYb7ckQHYT+aWDR mezbtnhQItAw6jpRQKmCLKqJJpQrHAm6Iz7ePs4iONU5gM7nNe3C3Ep9zCZjp3Yjw44Q VlsQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:subject:date:message-id :in-reply-to:references; bh=kkb7Yil0QGcFQNQoU9gazCdPLv9JgsPdJSmH8sw6M7w=; b=UvX7TZeDAWZrcA5eeiDIhr4OsPZzW49MsVtzx8pb81m441uM3JUpGIEbMLpWTpF3bq Hlh7IfzRxoWdhsfO+pOW9Z81rRdrJeW3VhWgXnw1pbNkg7hn58YjPK9bNYFHhSye2Sle lqvVjr8olW3+dJW/JcDJU5U8KtaEQCuRCpRxngwR680r1b2IBl/5tle+Cwr4G/FI2YzQ KMmh9PRq3HnwuMqX2u+m2Qc6x75pSa6M2hctCckUyhY9orgAcB2hlTgPmsvxcD5GMGFR 9LhuudAZPfX6JQ6aDOzBed2tmDJB1c/rYB+99h15n6uJQyxvYUuNH73632UkWn6ZQ/AC ptqg== X-Gm-Message-State: ANhLgQ2zwK/TAc7N7BIuLHCNwWD4F2dDh4O2h62SvLpE5j7KCRh9q1Ym ASZ6+6Xzxh0oodRiHthv480LAn55 X-Google-Smtp-Source: ADFU+vszWLIWdyQeLgFuHQMbVG05K3rDUCx0bIDM5OtFAA5z9gsImWq76Cr3OPMsxC7XOnuv/DJXsg== X-Received: by 2002:aa7:8149:: with SMTP id d9mr18842955pfn.170.1583804924298; Mon, 09 Mar 2020 18:48:44 -0700 (PDT) Received: from localhost (61-220-137-37.HINET-IP.hinet.net. [61.220.137.37]) by smtp.gmail.com with ESMTPSA id z6sm726832pjd.34.2020.03.09.18.48.43 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 09 Mar 2020 18:48:43 -0700 (PDT) From: AceLan Kao To: kernel-team@lists.ubuntu.com Subject: [PATCH 2/7][SRU][Focal] PCI/ASPM: Allow re-enabling Clock PM Date: Tue, 10 Mar 2020 09:48:31 +0800 Message-Id: <20200310014836.23656-3-acelan.kao@canonical.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200310014836.23656-1-acelan.kao@canonical.com> References: <20200310014836.23656-1-acelan.kao@canonical.com> X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Heiner Kallweit BugLink: https://bugs.launchpad.net/bugs/1836030 Previously Clock PM could not be re-enabled after being disabled by pci_disable_link_state() because clkpm_capable was reset. Change this by adding a clkpm_disable field similar to aspm_disable. Link: https://lore.kernel.org/r/4e8a66db-7d53-4a66-c26c-f0037ffaa705@gmail.com Signed-off-by: Heiner Kallweit Signed-off-by: Bjorn Helgaas (cherry picked from commit 35efea32b26f9aacc99bf07e0d2cdfba2028b099) Signed-off-by: AceLan Kao --- drivers/pci/pcie/aspm.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/drivers/pci/pcie/aspm.c b/drivers/pci/pcie/aspm.c index e8df0b51b74a..a602c51c932f 100644 --- a/drivers/pci/pcie/aspm.c +++ b/drivers/pci/pcie/aspm.c @@ -64,6 +64,7 @@ struct pcie_link_state { u32 clkpm_capable:1; /* Clock PM capable? */ u32 clkpm_enabled:1; /* Current Clock PM state */ u32 clkpm_default:1; /* Default Clock PM state by BIOS */ + u32 clkpm_disable:1; /* Clock PM disabled */ /* Exit latencies */ struct aspm_latency latency_up; /* Upstream direction exit latency */ @@ -161,8 +162,11 @@ static void pcie_set_clkpm_nocheck(struct pcie_link_state *link, int enable) static void pcie_set_clkpm(struct pcie_link_state *link, int enable) { - /* Don't enable Clock PM if the link is not Clock PM capable */ - if (!link->clkpm_capable) + /* + * Don't enable Clock PM if the link is not Clock PM capable + * or Clock PM is disabled + */ + if (!link->clkpm_capable || link->clkpm_disable) enable = 0; /* Need nothing if the specified equals to current state */ if (link->clkpm_enabled == enable) @@ -192,7 +196,8 @@ static void pcie_clkpm_cap_init(struct pcie_link_state *link, int blacklist) } link->clkpm_enabled = enabled; link->clkpm_default = enabled; - link->clkpm_capable = (blacklist) ? 0 : capable; + link->clkpm_capable = capable; + link->clkpm_disable = blacklist ? 1 : 0; } static bool pcie_retrain_link(struct pcie_link_state *link) @@ -1106,10 +1111,9 @@ static int __pci_disable_link_state(struct pci_dev *pdev, int state, bool sem) link->aspm_disable |= ASPM_STATE_L1_2_PCIPM; pcie_config_aspm_link(link, policy_to_aspm_state(link)); - if (state & PCIE_LINK_STATE_CLKPM) { - link->clkpm_capable = 0; - pcie_set_clkpm(link, 0); - } + if (state & PCIE_LINK_STATE_CLKPM) + link->clkpm_disable = 1; + pcie_set_clkpm(link, policy_to_clkpm_state(link)); mutex_unlock(&aspm_lock); if (sem) up_read(&pci_bus_sem);