From patchwork Thu Jul 13 12:44:56 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Ilpo_J=C3=A4rvinen?= X-Patchwork-Id: 119857 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:a6b2:0:b0:3e4:2afc:c1 with SMTP id c18csp1803457vqm; Thu, 13 Jul 2023 05:58:52 -0700 (PDT) X-Google-Smtp-Source: APBJJlFPEIHv1eyKQ2p7n9bqI0Cy61xTVIEAwPAD3YqpACoJgOly8jANnxtEfjq6gUJvv1+LzF3R X-Received: by 2002:a17:90a:cc03:b0:263:ba18:3bcc with SMTP id b3-20020a17090acc0300b00263ba183bccmr682409pju.46.1689253131798; Thu, 13 Jul 2023 05:58:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689253131; cv=none; d=google.com; s=arc-20160816; b=hHRZOLMgE8mL8hmPlcbvM9XDBzSo8t/NOv42tsjJIY+v4KA8L9nA++C4JcxztO5zxt X4wudI9JrUZm1ko+5uXcRtNd9y/Fgdh2fNIOxsI8mpMnzTPhuvf7yxV4IbGHIi2OnJAo 12d3mFCyTRnYaOIZBzU8pomN18o69fk7lHtzRN31K1m/fj48ir3JOiAN9QzkP8UXVioO WoRAKGlnSl3XH6FvT82hD+T3UrQZcie3r97/FkBQ4ImA/7xO3//Pks1jmQhywtGQwqSY XyLedJq5lpMLKhjAd+MCos06SbpqN595trIAoRcbtPYuTkDSox83HlgjaTW3hGnptKeK jS8Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=7vC2gLsqw4ZVczATEn/TH2VSaFwYpcTfhgh6Dzndk5k=; fh=5pMyFaDlK5GhH4mb+Iu/cuxIN6lG7l/h4KuIkLNWkTo=; b=y6m2cb+tgUns/H+V7JXWcw8rdarOkoABTymcppfByapu6taUlYqd8zmFfyOAaH0FEz z5ZcDEVRBWAXk5APw2s6oFQOz09q3PSrgan4LPJCZ2SvxcvysPpXCG9W6/vZpfyGkWCS QJDpef1gVmy4DyX6D9ICjMmTSD+B4GDCyQQqkviC8gnzGJMBVJv9Uk0liDLSpBfMfs9T ypbwapezakj4YI8rlIVGQ0cvOgR02M46Iz21f9/NEmX4fi2T0zF7lVGiPVbBtniIOLWx AfHCf2TXM4JeJT2a5WL3YYLU4B1cO6QYUKaBdCzasqsbThf/UissQ84ox6jC/4We77GP dVcQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b="WwG/V6em"; 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=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id x4-20020a17090aca0400b00263c7cadb62si12748450pjt.38.2023.07.13.05.58.39; Thu, 13 Jul 2023 05:58: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=@intel.com header.s=Intel header.b="WwG/V6em"; 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=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234074AbjGMMpr (ORCPT + 99 others); Thu, 13 Jul 2023 08:45:47 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55644 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234370AbjGMMpo (ORCPT ); Thu, 13 Jul 2023 08:45:44 -0400 Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4D6D826A0; Thu, 13 Jul 2023 05:45:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1689252339; x=1720788339; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=w9fmnbavpFPn2k6FB22LLTiMoKztUNTZBdmD34m58vg=; b=WwG/V6emJCh39Z63eFxqFFMQ2GXsAMKJBOdLspWd0AOI34JzLOkWxs7N /0QcCwp9Z5uQmlYIOqUyIT3ulLI/tRDBWr5sbbVTlTeuhZiM6dm1VyWFO Ll0dY8tTrRVh8Zx5dsJkwv3ZQ5j/DIvnjf7Ogi7MoABzq6lCYlHIbuPSZ TD0MmjOIs0r0gghfkcPzIDlieLSsT+pEDjcsNYaUCEMi3kusUdIAg337P s+9crGe/Q6jvTeCPp58QBEbsCcFsk5CMCG4vI2i3jJ+g8s33hYjtERqyg gTVnheD43xPjyhZBwkxD56cFskMbVfZkz9GJKiGDvnfVN51udSXrkIMYg g==; X-IronPort-AV: E=McAfee;i="6600,9927,10770"; a="367796797" X-IronPort-AV: E=Sophos;i="6.01,202,1684825200"; d="scan'208";a="367796797" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Jul 2023 05:45:38 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10770"; a="757144396" X-IronPort-AV: E=Sophos;i="6.01,202,1684825200"; d="scan'208";a="757144396" Received: from ijarvine-mobl2.ger.corp.intel.com ([10.251.222.39]) by orsmga001-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Jul 2023 05:45:33 -0700 From: =?utf-8?q?Ilpo_J=C3=A4rvinen?= To: linux-pci@vger.kernel.org, Bjorn Helgaas , Lorenzo Pieralisi , Rob Herring , =?utf-8?q?Krzysztof_Wilczy=C5=84ski?= , Emmanuel Grumbach , "Rafael J . Wysocki" , Heiner Kallweit , Lukas Wunner , =?utf-8?q?Stefan_M=C3=A4tje?= , Andy Shevchenko , Shaohua Li , Greg Kroah-Hartman , linux-kernel@vger.kernel.org Cc: Dean Luick , =?utf-8?q?Jonas_Dre=C3=9Fl?= =?utf-8?q?er?= , =?utf-8?q?Ilpo_J=C3=A4rvinen?= , stable@vger.kernel.org Subject: [PATCH v4 02/11] PCI: Make link retraining use RMW accessors for changing LNKCTL Date: Thu, 13 Jul 2023 15:44:56 +0300 Message-Id: <20230713124505.94866-3-ilpo.jarvinen@linux.intel.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230713124505.94866-1-ilpo.jarvinen@linux.intel.com> References: <20230713124505.94866-1-ilpo.jarvinen@linux.intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-4.3 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE, T_SCC_BODY_TEXT_LINE 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 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1771310292240015113 X-GMAIL-MSGID: 1771310292240015113 Don't assume that the device is fully under the control of PCI core. Use RMW capability accessors in link retraining which do proper locking to avoid losing concurrent updates to the register values. Fixes: 4ec73791a64b ("PCI: Work around Pericom PCIe-to-PCI bridge Retrain Link erratum") Fixes: 7d715a6c1ae5 ("PCI: add PCI Express ASPM support") Suggested-by: Lukas Wunner Signed-off-by: Ilpo Järvinen Acked-by: Rafael J. Wysocki Cc: stable@vger.kernel.org --- pci/enumeration branch moves the link retraining code into PCI core and also conflicts with a link retraining fix in pci/aspm. The changelog (and patch splitting) takes the move into account by not referring to ASPM while the change itself is not based on pci/enumeration (as per Bjorn's preference). --- drivers/pci/pci.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index 60230da957e0..f7315b13bb82 100644 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c @@ -4927,7 +4927,6 @@ static int pcie_wait_for_link_status(struct pci_dev *pdev, int pcie_retrain_link(struct pci_dev *pdev, bool use_lt) { int rc; - u16 lnkctl; /* * Ensure the updated LNKCTL parameters are used during link @@ -4939,17 +4938,14 @@ int pcie_retrain_link(struct pci_dev *pdev, bool use_lt) if (rc) return rc; - pcie_capability_read_word(pdev, PCI_EXP_LNKCTL, &lnkctl); - lnkctl |= PCI_EXP_LNKCTL_RL; - pcie_capability_write_word(pdev, PCI_EXP_LNKCTL, lnkctl); + pcie_capability_set_word(pdev, PCI_EXP_LNKCTL, PCI_EXP_LNKCTL_RL); if (pdev->clear_retrain_link) { /* * Due to an erratum in some devices the Retrain Link bit * needs to be cleared again manually to allow the link * training to succeed. */ - lnkctl &= ~PCI_EXP_LNKCTL_RL; - pcie_capability_write_word(pdev, PCI_EXP_LNKCTL, lnkctl); + pcie_capability_clear_word(pdev, PCI_EXP_LNKCTL, PCI_EXP_LNKCTL_RL); } return pcie_wait_for_link_status(pdev, use_lt, !use_lt);