Received: by 2002:a05:6a11:4021:0:0:0:0 with SMTP id ky33csp2346790pxb; Mon, 20 Sep 2021 19:37:19 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxm9/UFO50rn/oqjRFTdYoikzWFg9LMx5uHF7FBU3fDUCcxwBIcisESQFyte548nArECNjb X-Received: by 2002:a05:6e02:13d4:: with SMTP id v20mr19849341ilj.247.1632191839708; Mon, 20 Sep 2021 19:37:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1632191839; cv=none; d=google.com; s=arc-20160816; b=PD2Egmd0WWTd0161Xf1nEtcA/i/13AChOgrqtuv4OxUnO3tTt9gPh7DbJCsJwnMxvf S67lYtBzDzpILtaSMqF/ccAnXNabP0MJBCQrazjCsglQhdE+E8DpEzsTpMPbqV/Jx8yB +vwYl+rFQOxLxUyWgWIz7PWVcnVcohWCVq1YSos3o6gLBMYKzrbDS4nUe62TMxWTwjwo ovlACbqSKomPQDqm55imsSus1wlLsAWrCh5siWaTUE9Dx7+672d6bf+klqJZHvYTwTGA VMYirh73AbkLXGSIBVg/S5bSn2jIMuwyFuODf7eV78plU/ouLadUrvkUsG+jb5p5NxIS 9IbA== 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 :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=OUWfmkWmAN0Nk9g9orj3IpzphGxFVdlmv4AyssY4/fw=; b=zbmOu3LHEaDYQnWrP1+WTz49fUOW2PaaMngeLnxqvapJhn1oFC7iQb0081aJYfP5/I sprHuqpHbQscEUGDKPiIh2DVD6agcEpq66YQXqqEouY7VeLvT5D3WuYPT4BUUsdlUy4C wgMdAYR0LVte5XjA/7qGCP9ToEcivj1KXgv46W3sbXEUQNgQQV2UpIIPuK7oXmS2zJ+P Wq6CKKWNuYW1cEU30l5Gpnnnd89irXBjfDqUTSBN7T1cedvip0kElyN5cZVWOmSjf6OQ RWUOep2i/W29mEnatkP25Fzzc3hcpkL7RiWNjOvbw5J4IlCIS4Bv+7MYHYstP//AdF96 TACQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=pnGbEWup; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id m19si12971939jat.15.2021.09.20.19.37.07; Mon, 20 Sep 2021 19:37:19 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=pnGbEWup; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1350619AbhITSGY (ORCPT + 99 others); Mon, 20 Sep 2021 14:06:24 -0400 Received: from mail.kernel.org ([198.145.29.99]:58468 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1356677AbhITSBA (ORCPT ); Mon, 20 Sep 2021 14:01:00 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 5B4F663228; Mon, 20 Sep 2021 17:16:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1632158160; bh=TW5rtwmRc2wqjiX0cxMWR+rBc+hAXEozJAFhx8BFfR4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=pnGbEWup+ncuaY1Frt1/YwDD9Afd7Dr9JdVIDI8JBZTw8a6IAqVuRRYc3ncnp8CZ+ j9EjvjwL1hcLT+/5LdpmCbFQFWWIJ8+g6WiN2wqf46gmTcdkq6W9YoPwR8avJdL3aW am2hGsqOb+WBPJn9vmzUrZTgQxLNWOshpEPk00sg= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Stuart Hayes , Bjorn Helgaas , Lukas Wunner Subject: [PATCH 5.4 029/260] PCI/portdrv: Enable Bandwidth Notification only if port supports it Date: Mon, 20 Sep 2021 18:40:47 +0200 Message-Id: <20210920163932.112595011@linuxfoundation.org> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210920163931.123590023@linuxfoundation.org> References: <20210920163931.123590023@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Stuart Hayes commit 00823dcbdd415c868390feaca16f0265101efab4 upstream. Previously we assumed that all Root Ports and Switch Downstream Ports supported Link Bandwidth Notification. Per spec, this is only required for Ports supporting Links wider than x1 and/or multiple Link speeds (PCIe r5.0, sec 7.5.3.6). Because we assumed all Ports supported it, we tried to set up a Bandwidth Notification IRQ, which failed for devices that don't support IRQs at all, which meant pcieport didn't attach to the Port at all. Check the Link Bandwidth Notification Capability bit and enable the service only when the Port supports it. [bhelgaas: commit log] Fixes: e8303bb7a75c ("PCI/LINK: Report degraded links via link bandwidth notification") Link: https://lore.kernel.org/r/20210512213314.7778-1-stuart.w.hayes@gmail.com Signed-off-by: Stuart Hayes Signed-off-by: Bjorn Helgaas Reviewed-by: Lukas Wunner Cc: stable@vger.kernel.org Signed-off-by: Greg Kroah-Hartman --- drivers/pci/pcie/portdrv_core.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) --- a/drivers/pci/pcie/portdrv_core.c +++ b/drivers/pci/pcie/portdrv_core.c @@ -255,8 +255,13 @@ static int get_port_device_capability(st services |= PCIE_PORT_SERVICE_DPC; if (pci_pcie_type(dev) == PCI_EXP_TYPE_DOWNSTREAM || - pci_pcie_type(dev) == PCI_EXP_TYPE_ROOT_PORT) - services |= PCIE_PORT_SERVICE_BWNOTIF; + pci_pcie_type(dev) == PCI_EXP_TYPE_ROOT_PORT) { + u32 linkcap; + + pcie_capability_read_dword(dev, PCI_EXP_LNKCAP, &linkcap); + if (linkcap & PCI_EXP_LNKCAP_LBNC) + services |= PCIE_PORT_SERVICE_BWNOTIF; + } return services; }