Received: by 2002:a05:6a11:4021:0:0:0:0 with SMTP id ky33csp1748439pxb; Thu, 16 Sep 2021 14:45:29 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzOgBjsr/waI5menTBejj70CzgXQ1d98zS+UfiiaVdA03sCGNwBvPEuu0zP1FUPSeb0type X-Received: by 2002:a05:6638:2104:: with SMTP id n4mr6045728jaj.111.1631828729287; Thu, 16 Sep 2021 14:45:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1631828729; cv=none; d=google.com; s=arc-20160816; b=I5xbd/Tzi6+zPQX2Z8UqjiWPUMvX8ZGX+TzqLUJ/MBVTViGJj/7T0vB0FGND+Yq8sx lK4SIaJrTueZEtszj5tzBIrNDYSF6Zwe7HG1m2MNQBW6dQabKkY442uXQNebopMoAwIU NQTMNLQrPqLZrGG1xhN2ibC7YygefsJ2ekNlLUo61++4MjSJ453p+HoLKlMQmbmI6wvz mXuSr6yLcZFuofMM1VXZ594bQnqBld7qFfg4eZ/qbgdnteQ8KtgWItNRcdCwfHMcCr5r 6kYC9vX183W4dc0VsF5gvZ0Z6p63kVnON17jiNroGWNB75o6PDptPskwcXCQbEqrsbsj QWHg== 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=W5wcLKVz7DMMR4itRxEvKUmngjvcM5oJvdTq4R3/Ej4=; b=yOJ5hksFUOoyurOZSssRd5uPKwa0rzWoJVP+n9piHJSPLFSYlChmh/pXERosasREAs 1mmDCZi58JqNfDkB3q2KdULAQeF7yyqPQk+EUfl/rsg0dP/qcY9Zxr7afdK1Hodd8Lsd NHOc8EuSGE8CTAGz20P1jUxZz3y2J1syGUSN7inPmpoReG2QWrKgXfyAjPMu5/QmdMUg l3imeNTgF9c4s1KynZoiNEolQT3GElo/QfJe3Y4MnhTumINhUtwBqPCup6UX9QM+EmKl eZBxx8CsQ8QlngNy/iWMzzWKeTvWDUhYwDnMfJ9z8vASwz2vA+9N0hpzQNg6/sIdT21g w2GQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=b4Lp7etH; 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 o8si3551062ilo.26.2021.09.16.14.45.18; Thu, 16 Sep 2021 14:45:29 -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=b4Lp7etH; 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 S244596AbhIPQjV (ORCPT + 99 others); Thu, 16 Sep 2021 12:39:21 -0400 Received: from mail.kernel.org ([198.145.29.99]:44970 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S242062AbhIPQbq (ORCPT ); Thu, 16 Sep 2021 12:31:46 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 344AC6187A; Thu, 16 Sep 2021 16:19:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1631809181; bh=tecI0xFXGZah/qzfpOPocp2W8hgrOZ2sSXszrl8VFlU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=b4Lp7etH5pNwfhyeP8GM9aUqC8se3MUUHpr9BxxYtEFEru/IuRvQDbc8d8tTOWAXp Jvu7oF+NssJQCB+6VDTJA9u6iyGrP7FpgfBg83GBGtpsiYS2EmIZnyEN1SuR7PCJ3p EblvoB4EdnO0x950YbB9tdz1tssSTFlrFKg9KUnk= 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.13 060/380] PCI/portdrv: Enable Bandwidth Notification only if port supports it Date: Thu, 16 Sep 2021 17:56:57 +0200 Message-Id: <20210916155806.034630655@linuxfoundation.org> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210916155803.966362085@linuxfoundation.org> References: <20210916155803.966362085@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 @@ -257,8 +257,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; }