Received: by 2002:a05:6358:11c7:b0:104:8066:f915 with SMTP id i7csp6667930rwl; Wed, 22 Mar 2023 13:50:51 -0700 (PDT) X-Google-Smtp-Source: AK7set8InG0FMaYG7TkmoHQehm71V1df+dMY2pXgL7p2ryJDiBI2uUgbJd2w8X+BVY1oPWH2UR/h X-Received: by 2002:a17:90b:3ece:b0:229:f4f3:e904 with SMTP id rm14-20020a17090b3ece00b00229f4f3e904mr5753650pjb.11.1679518251114; Wed, 22 Mar 2023 13:50:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1679518251; cv=none; d=google.com; s=arc-20160816; b=OZUmEJymmE6hrP1lr19Qb6ILcig+gfgZSf/DODc+aBNWT7Ml9C/b2aD7j47jbCPMPb GXLVuObqzTNovbXswKI9QPSh6pl72riXaWadidBh2SdsxZKYmZ8CeyLxuSQ6HahziECI KUhfFVxDzH5lX1iNksn0VjPjXG6tXvgi9uajub3Uw0cDJ0jB4F8SwUJGGHVG3avw2YZF 3r+M8IDdP57arwrEGLH42TAo5QMQFb/M7QVijDxtI9qdMddY2ml8G5Qz0WFD1aYlIh6z /H+Ba+JSJnTVyDTAFXIC2KDllzH7idA0E5MFCxSeIIusf0jg28lfyTZKNPndGS6jGZv7 pcdA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-transfer-encoding :content-disposition:mime-version:message-id:subject:cc:to:from:date :dkim-signature; bh=Va2eJY9QS+2ebrJ6v+xPsVItKONVkv573bJ6o/FMsjE=; b=O3bHYhKyeCU2dmevTQ6q+zuev9vFSsAtb2wbd2BkAyjZ3N8Rmv5xUn23dL64yMqRo6 JaZlNjFNRR4gKlIbAN9M/cJnrfdpxY6LvA2oosWyG/0eTgHFs0TPr739WrSC8JxlxefA zGX8JhjyKgVxLTnsE6WljEzzUYRPGCf7T8bCftmhASdlkGjWnmDjRQlZ/Pjud5/jC3ub Xn95JC2j/qCL9BRtFPJT1a0UxXHxIf6ZuFc8T3H/6OBfCAXBuOfg+03wn2Qs7JrAMHNr 4nH1lIHEOSm520i0yJzebgUJt7Oju4RkoYOKd/7fQp6gUC7iBd2ipANaU73sYioix3tf 8O1g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=mTnMqe4j; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id k15-20020a17090a404f00b0023a6f4e0510si22441133pjg.155.2023.03.22.13.50.38; Wed, 22 Mar 2023 13:50:51 -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; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=mTnMqe4j; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229436AbjCVUs5 (ORCPT + 99 others); Wed, 22 Mar 2023 16:48:57 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42944 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231582AbjCVUsT (ORCPT ); Wed, 22 Mar 2023 16:48:19 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1961C192; Wed, 22 Mar 2023 13:45:16 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 2E72A622D3; Wed, 22 Mar 2023 20:45:02 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 49587C433D2; Wed, 22 Mar 2023 20:45:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1679517901; bh=ehSjEP8B+CllK16lRcBtwTxSPIcoRjcA+H9GgjHZcW4=; h=Date:From:To:Cc:Subject:In-Reply-To:From; b=mTnMqe4jKC+EBxQ6tmWOGRPLZ3MTxwmiz585PzJddX7hKSbbam9sOEaQPvFa+kf4X kuQdeYAGxhmDp2dltrTW2kaglp1RRvyLyO5/xGfteePWzTT+uF9QEWBoLDPFVdsAiX aqkl9e25AZJSMODAPyPD9jNgCOPHt0RegQPYyI0PVtUoMC3hxxUTAUKIjU+Vxor+UX vVLoOOaZcIfTnoYuEe8XKDQLlyhCInhJGmnJWOQZZPzJSM0QUIrBSuuTLaaM9QrnX0 Pu2nqlCNVaCLfMXJiuoroSK6FPTt8buZ5VvAlWML+W36tDAxf+KeUdfP32eqsAYdpD 9sDRa9Vz7tzTA== Date: Wed, 22 Mar 2023 15:44:59 -0500 From: Bjorn Helgaas To: "David E. Box" Cc: ville.syrjala@linux.intel.com, nirmal.patel@linux.intel.com, jonathan.derrick@linux.dev, lorenzo.pieralisi@arm.com, hch@infradead.org, kw@linux.com, robh@kernel.org, bhelgaas@google.com, michael.a.bottini@intel.com, rafael@kernel.org, me@adhityamohan.in, linux-pci@vger.kernel.org, intel-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: Re: [Intel-gfx] [PATCH] PCI/ASPM: pci_enable_link_state: Add argument to acquire bus lock Message-ID: <20230322204459.GA2492596@bhelgaas> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20230321233849.3408339-1-david.e.box@linux.intel.com> X-Spam-Status: No, score=-2.5 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED,SPF_HELO_NONE, SPF_PASS autolearn=unavailable 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 Hi David, On Tue, Mar 21, 2023 at 04:38:49PM -0700, David E. Box wrote: > The VMD driver calls pci_enabled_link_state as a callback from > pci_bus_walk. Both will acquire the pci_bus_sem lock leading to a lockdep > warning. Add an argument to pci_enable_link_state to set whether the lock > should be acquired. In the VMD driver, set the argument to false since the > lock will already be obtained by pci_bus_walk. > > Reported-by: Ville Syrj?l? > Fixes: de82f60f9c86 ("PCI/ASPM: Add pci_enable_link_state()") This means "if your kernel includes de82f60f9c86, you probably want to backport this fix to it." But that's not the case here. This patch is not fixing an issue with de82f60f9c86, so I don't think there's a reason to include a "Fixes" line. This patch is adding functionality that is only needed by some other patch, and it should be part of a series that also includes the patch that uses it to make sure they go together. Nit: I prefer to add "()" after function names in the commit log to make it more obvious that they're functions and help distinguish them from variables. > Link: https://lore.kernel.org/linux-pci/ZBjko%2FifunIwsK2v@intel.com/ > Signed-off-by: David E. Box > --- > drivers/pci/controller/vmd.c | 2 +- > drivers/pci/pcie/aspm.c | 9 ++++++--- > include/linux/pci.h | 5 +++-- > 3 files changed, 10 insertions(+), 6 deletions(-) > > diff --git a/drivers/pci/controller/vmd.c b/drivers/pci/controller/vmd.c > index 990630ec57c6..45aa35744eae 100644 > --- a/drivers/pci/controller/vmd.c > +++ b/drivers/pci/controller/vmd.c > @@ -737,7 +737,7 @@ static int vmd_pm_enable_quirk(struct pci_dev *pdev, void *userdata) > if (!(features & VMD_FEAT_BIOS_PM_QUIRK)) > return 0; > > - pci_enable_link_state(pdev, PCIE_LINK_STATE_ALL); > + pci_enable_link_state(pdev, PCIE_LINK_STATE_ALL, false); > > pos = pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_LTR); > if (!pos) > diff --git a/drivers/pci/pcie/aspm.c b/drivers/pci/pcie/aspm.c > index 66d7514ca111..5b5a600bb864 100644 > --- a/drivers/pci/pcie/aspm.c > +++ b/drivers/pci/pcie/aspm.c > @@ -1147,8 +1147,9 @@ EXPORT_SYMBOL(pci_disable_link_state); > * > * @pdev: PCI device > * @state: Mask of ASPM link states to enable > + * @sem: Boolean to acquire/release pci_bus_sem > */ > -int pci_enable_link_state(struct pci_dev *pdev, int state) > +int pci_enable_link_state(struct pci_dev *pdev, int state, bool sem) > { > struct pcie_link_state *link = pcie_aspm_get_link(pdev); > > @@ -1165,7 +1166,8 @@ int pci_enable_link_state(struct pci_dev *pdev, int state) > return -EPERM; > } > > - down_read(&pci_bus_sem); > + if (sem) > + down_read(&pci_bus_sem); > mutex_lock(&aspm_lock); > link->aspm_default = 0; > if (state & PCIE_LINK_STATE_L0S) > @@ -1186,7 +1188,8 @@ int pci_enable_link_state(struct pci_dev *pdev, int state) > link->clkpm_default = (state & PCIE_LINK_STATE_CLKPM) ? 1 : 0; > pcie_set_clkpm(link, policy_to_clkpm_state(link)); > mutex_unlock(&aspm_lock); > - up_read(&pci_bus_sem); > + if (sem) > + up_read(&pci_bus_sem); > > return 0; > } > diff --git a/include/linux/pci.h b/include/linux/pci.h > index fafd8020c6d7..a6f9f24b39fd 100644 > --- a/include/linux/pci.h > +++ b/include/linux/pci.h > @@ -1707,7 +1707,7 @@ extern bool pcie_ports_native; > #ifdef CONFIG_PCIEASPM > int pci_disable_link_state(struct pci_dev *pdev, int state); > int pci_disable_link_state_locked(struct pci_dev *pdev, int state); > -int pci_enable_link_state(struct pci_dev *pdev, int state); > +int pci_enable_link_state(struct pci_dev *pdev, int state, bool sem); > void pcie_no_aspm(void); > bool pcie_aspm_support_enabled(void); > bool pcie_aspm_enabled(struct pci_dev *pdev); > @@ -1716,7 +1716,8 @@ static inline int pci_disable_link_state(struct pci_dev *pdev, int state) > { return 0; } > static inline int pci_disable_link_state_locked(struct pci_dev *pdev, int state) > { return 0; } > -static inline int pci_enable_link_state(struct pci_dev *pdev, int state) > +static inline int > +pci_enable_link_state(struct pci_dev *pdev, int state, bool sem) > { return 0; } > static inline void pcie_no_aspm(void) { } > static inline bool pcie_aspm_support_enabled(void) { return false; } > -- > 2.34.1 >