From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bjorn Helgaas Subject: Re: [PATCH] pci: fix incorrect value returned from pcie_get_speed_cap Date: Mon, 26 Nov 2018 16:40:52 -0600 Message-ID: <20181126224051.GB212532@google.com> References: <20181120004704.GA191199@google.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20181120004704.GA191199-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org> List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: Mikulas Patocka Cc: Tal Gilboa , linux-pci-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Alex Deucher , amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, Tariq Toukan T24gTW9uLCBOb3YgMTksIDIwMTggYXQgMDY6NDc6MDRQTSAtMDYwMCwgQmpvcm4gSGVsZ2FhcyB3 cm90ZToKPiBPbiBUdWUsIE9jdCAzMCwgMjAxOCBhdCAxMjozNjowOFBNIC0wNDAwLCBNaWt1bGFz IFBhdG9ja2Egd3JvdGU6Cj4gPiBUaGUgbWFjcm9zIFBDSV9FWFBfTE5LQ0FQX1NMU18qR0IgYXJl IHZhbHVlcywgbm90IGJpdCBtYXNrcy4gV2UgbXVzdCBtYXNrCj4gPiB0aGUgcmVnaXN0ZXIgYW5k IGNvbXBhcmUgaXQgYWdhaW5zdCB0aGVtLgo+ID4gCj4gPiBUaGlzIHBhdGNoIGZpeGVzIGVycm9y cyAiYW1kZ3B1OiBbcG93ZXJwbGF5XSBmYWlsZWQgdG8gc2VuZCBtZXNzYWdlIDI2MQo+ID4gcmV0 IGlzIDAiIGVycm9ycyB3aGVuIFBDSWUtdjMgY2FyZCBpcyBwbHVnZ2VkIGludG8gUENJZS12MSBz bG90LCBiZWNhdXNlCj4gPiB0aGUgc2xvdCBpcyBiZWluZyBpbmNvcnJlY3RseSByZXBvcnRlZCBh cyBQQ0llLXYzIGNhcGFibGUuCj4gPiAKPiA+IFNpZ25lZC1vZmYtYnk6IE1pa3VsYXMgUGF0b2Nr YSA8bXBhdG9ja2FAcmVkaGF0LmNvbT4KPiA+IEZpeGVzOiA2Y2Y1N2JlMGY3OGUgKCJQQ0k6IEFk ZCBwY2llX2dldF9zcGVlZF9jYXAoKSB0byBmaW5kIG1heCBzdXBwb3J0ZWQgbGluayBzcGVlZCIp Cj4gPiBDYzogc3RhYmxlQHZnZXIua2VybmVsLm9yZwkjIHY0LjE3Kwo+ID4gCj4gPiAtLS0KPiA+ ICBkcml2ZXJzL3BjaS9wY2kuYyB8ICAgIDggKysrKy0tLS0KPiA+ICAxIGZpbGUgY2hhbmdlZCwg NCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQo+ID4gCj4gPiBJbmRleDogbGludXgtNC4x OS9kcml2ZXJzL3BjaS9wY2kuYwo+ID4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo+ID4gLS0tIGxpbnV4LTQuMTkub3Jp Zy9kcml2ZXJzL3BjaS9wY2kuYwkyMDE4LTEwLTMwIDE2OjU4OjU4LjAwMDAwMDAwMCArMDEwMAo+ ID4gKysrIGxpbnV4LTQuMTkvZHJpdmVycy9wY2kvcGNpLmMJMjAxOC0xMC0zMCAxNjo1ODo1OC4w MDAwMDAwMDAgKzAxMDAKPiA+IEBAIC01NDkyLDEzICs1NDkyLDEzIEBAIGVudW0gcGNpX2J1c19z cGVlZCBwY2llX2dldF9zcGVlZF9jYXAoc3QKPiA+ICAKPiA+ICAJcGNpZV9jYXBhYmlsaXR5X3Jl YWRfZHdvcmQoZGV2LCBQQ0lfRVhQX0xOS0NBUCwgJmxua2NhcCk7Cj4gPiAgCWlmIChsbmtjYXAp IHsKPiA+IC0JCWlmIChsbmtjYXAgJiBQQ0lfRVhQX0xOS0NBUF9TTFNfMTZfMEdCKQo+ID4gKwkJ aWYgKChsbmtjYXAgJiBQQ0lfRVhQX0xOS0NBUF9TTFMpID09IFBDSV9FWFBfTE5LQ0FQX1NMU18x Nl8wR0IpCj4gPiAgCQkJcmV0dXJuIFBDSUVfU1BFRURfMTZfMEdUOwo+ID4gLQkJZWxzZSBpZiAo bG5rY2FwICYgUENJX0VYUF9MTktDQVBfU0xTXzhfMEdCKQo+ID4gKwkJZWxzZSBpZiAoKGxua2Nh cCAmIFBDSV9FWFBfTE5LQ0FQX1NMUykgPT0gUENJX0VYUF9MTktDQVBfU0xTXzhfMEdCKQo+ID4g IAkJCXJldHVybiBQQ0lFX1NQRUVEXzhfMEdUOwo+ID4gLQkJZWxzZSBpZiAobG5rY2FwICYgUENJ X0VYUF9MTktDQVBfU0xTXzVfMEdCKQo+ID4gKwkJZWxzZSBpZiAoKGxua2NhcCAmIFBDSV9FWFBf TE5LQ0FQX1NMUykgPT1QQ0lfRVhQX0xOS0NBUF9TTFNfNV8wR0IpCj4gPiAgCQkJcmV0dXJuIFBD SUVfU1BFRURfNV8wR1Q7Cj4gPiAtCQllbHNlIGlmIChsbmtjYXAgJiBQQ0lfRVhQX0xOS0NBUF9T TFNfMl81R0IpCj4gPiArCQllbHNlIGlmICgobG5rY2FwICYgUENJX0VYUF9MTktDQVBfU0xTKSA9 PSBQQ0lfRVhQX0xOS0NBUF9TTFNfMl81R0IpCj4gPiAgCQkJcmV0dXJuIFBDSUVfU1BFRURfMl81 R1Q7Cj4gPiAgCX0KCj4gV2UgYWxzbyBuZWVkIHNpbWlsYXIgZml4ZXMgaW4gcGNpX3NldF9idXNf c3BlZWQoKSwgcGNpZV9zcGVlZHMoKQo+IChoZmkxKSwgY29iYWx0X3BjaWVfc3RhdHVzX3Nob3co KSwgaGJhX2lvY3RsX2NhbGxiYWNrKCksCj4gcWxhMjR4eF9wY2lfaW5mb19zdHIoKSwgYW5kIG1h eWJlIGEgY291cGxlIG90aGVyIHBsYWNlcy4KCkRvZXMgYW55Ym9keSB3YW50IHRvIHZvbHVudGVl ciB0byBmaXggdGhlIHBsYWNlcyBhYm92ZSBhcyB3ZWxsPyAgSQpmb3VuZCB0aGVtIGJ5IGdyZXBw aW5nIGZvciBQQ0lfRVhQX0xOS0NBUCwgYW5kIHRoZXkncmUgYWxsIGJyb2tlbiBpbgp3YXlzIHNp bWlsYXIgdG8gcGNpZV9nZXRfc3BlZWRfY2FwKCkuICBQb3NzaWJseSBzb21lIG9mIHRoZXNlIHBs YWNlcwpjb3VsZCB1c2UgcGNpZV9nZXRfc3BlZWRfY2FwKCkgZGlyZWN0bHkuCgpCam9ybgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwphbWQtZ2Z4IG1haWxp bmcgbGlzdAphbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1nZngK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.1 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_PASS, USER_AGENT_MUTT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4B4FFC43441 for ; Mon, 26 Nov 2018 22:40:55 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 1337521104 for ; Mon, 26 Nov 2018 22:40:55 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=kernel.org header.i=@kernel.org header.b="d5AGo0my" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 1337521104 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-pci-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727279AbeK0Jgd (ORCPT ); Tue, 27 Nov 2018 04:36:33 -0500 Received: from mail.kernel.org ([198.145.29.99]:59904 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726914AbeK0Jgd (ORCPT ); Tue, 27 Nov 2018 04:36:33 -0500 Received: from localhost (unknown [69.71.4.100]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id AF80120873; Mon, 26 Nov 2018 22:40:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1543272054; bh=j1341Bnqcyu9+IAaBiJqesu635sM195DdGOEjlubsMs=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=d5AGo0myT1q2mGxo7GLSHmvbPVcnVBOqsi7Hk56zYHQYVO7L5D1lMOHKIEoImmPO9 ioNVaBhOaiTZ5W94ZLgG4WZv/7nTeqGI039q6xPtR4j5qqOSW4HgAfbGiWK3dyuRzY pST56hK28d1xDlDCvN2aCQl19xQ5AzOK4Z1KOovM= Date: Mon, 26 Nov 2018 16:40:52 -0600 From: Bjorn Helgaas To: Mikulas Patocka Cc: linux-pci@vger.kernel.org, Tal Gilboa , Tariq Toukan , Alex Deucher , amd-gfx@lists.freedesktop.org Subject: Re: [PATCH] pci: fix incorrect value returned from pcie_get_speed_cap Message-ID: <20181126224051.GB212532@google.com> References: <20181120004704.GA191199@google.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20181120004704.GA191199@google.com> User-Agent: Mutt/1.10.1 (2018-07-13) Sender: linux-pci-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org On Mon, Nov 19, 2018 at 06:47:04PM -0600, Bjorn Helgaas wrote: > On Tue, Oct 30, 2018 at 12:36:08PM -0400, Mikulas Patocka wrote: > > The macros PCI_EXP_LNKCAP_SLS_*GB are values, not bit masks. We must mask > > the register and compare it against them. > > > > This patch fixes errors "amdgpu: [powerplay] failed to send message 261 > > ret is 0" errors when PCIe-v3 card is plugged into PCIe-v1 slot, because > > the slot is being incorrectly reported as PCIe-v3 capable. > > > > Signed-off-by: Mikulas Patocka > > Fixes: 6cf57be0f78e ("PCI: Add pcie_get_speed_cap() to find max supported link speed") > > Cc: stable@vger.kernel.org # v4.17+ > > > > --- > > drivers/pci/pci.c | 8 ++++---- > > 1 file changed, 4 insertions(+), 4 deletions(-) > > > > Index: linux-4.19/drivers/pci/pci.c > > =================================================================== > > --- linux-4.19.orig/drivers/pci/pci.c 2018-10-30 16:58:58.000000000 +0100 > > +++ linux-4.19/drivers/pci/pci.c 2018-10-30 16:58:58.000000000 +0100 > > @@ -5492,13 +5492,13 @@ enum pci_bus_speed pcie_get_speed_cap(st > > > > pcie_capability_read_dword(dev, PCI_EXP_LNKCAP, &lnkcap); > > if (lnkcap) { > > - if (lnkcap & PCI_EXP_LNKCAP_SLS_16_0GB) > > + if ((lnkcap & PCI_EXP_LNKCAP_SLS) == PCI_EXP_LNKCAP_SLS_16_0GB) > > return PCIE_SPEED_16_0GT; > > - else if (lnkcap & PCI_EXP_LNKCAP_SLS_8_0GB) > > + else if ((lnkcap & PCI_EXP_LNKCAP_SLS) == PCI_EXP_LNKCAP_SLS_8_0GB) > > return PCIE_SPEED_8_0GT; > > - else if (lnkcap & PCI_EXP_LNKCAP_SLS_5_0GB) > > + else if ((lnkcap & PCI_EXP_LNKCAP_SLS) ==PCI_EXP_LNKCAP_SLS_5_0GB) > > return PCIE_SPEED_5_0GT; > > - else if (lnkcap & PCI_EXP_LNKCAP_SLS_2_5GB) > > + else if ((lnkcap & PCI_EXP_LNKCAP_SLS) == PCI_EXP_LNKCAP_SLS_2_5GB) > > return PCIE_SPEED_2_5GT; > > } > We also need similar fixes in pci_set_bus_speed(), pcie_speeds() > (hfi1), cobalt_pcie_status_show(), hba_ioctl_callback(), > qla24xx_pci_info_str(), and maybe a couple other places. Does anybody want to volunteer to fix the places above as well? I found them by grepping for PCI_EXP_LNKCAP, and they're all broken in ways similar to pcie_get_speed_cap(). Possibly some of these places could use pcie_get_speed_cap() directly. Bjorn