Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp878362ybt; Fri, 19 Jun 2020 16:43:52 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxVMAU2ADn0XDcV/6hVscVQkhrrVecHhcN6dRqcJnnvDieB1tHqf9ZjNRSH5gcLxhl0I2Wu X-Received: by 2002:a50:fd05:: with SMTP id i5mr5653029eds.79.1592610232338; Fri, 19 Jun 2020 16:43:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1592610232; cv=none; d=google.com; s=arc-20160816; b=bDBrmd0oEAHY6kY//QjkPv/T7DRqCzZqRGglHpsYzmoY2ZYyjPWBfXyyew8RUkRQlL O1a5tayooyXlPMYv3ihzwPiLD3fpwfcG+txZkUTx/ASZlJS5DUuUVzThvKimU4mwY2gu HjSoPuOlGk142Zx7+wiG6CWUZUh70P+EvAx0NWSiz4INBzuE/7/CnmxILGuk0SGTW9I8 XExD8BT6w+eAUb7tgrwKZsxYyDQnVmX2/DvtBO5W7/179ti1pVoRydRO3wf4MHIxuQiN qH1uFkcYJ3poQhnhX02pp8xDiACyXyNi9Zg2seyh2iviPPCdht/DAzkgvWI1Pe/lRDYa 7CUQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=DC1BtnNM/3zLeSrRotdx/A0fetvvkyVmgCMDNdafssk=; b=CExgzrZfAn1fpEvfQ/YCIA+dSzQZblT8cYGQd0BOYRC1TXoKpxC47QyuyWiggocQNs Kg+KdbTuzBSHBHIAykIWGTS4hl0mPtLC51YGI02ZA20q2AefQs3/T3U8Z16QF7BMJSF0 /wsdcKxpsy4TL5lPKRZxNEsdrmeqGgzouhFOV0QwpmzyytbfDodgY9BXFd9TfElLp8h/ 34CjTG/QbaWGfvwXGzWCKB9bU+e/Y51bBG2k2zoaFtC4S3OPOoOcfuuuo2Tpg1lMEBzh NpaJ2uYQVEwe2qzxqkPvi7OkulhfaRZy0eO4iBeNDPsV2XcwYE7ACWh3INGB/vtorhZd /5IQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=PL1kl1QW; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id q26si4888597edi.415.2020.06.19.16.43.30; Fri, 19 Jun 2020 16:43:52 -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=@kernel.org header.s=default header.b=PL1kl1QW; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2404666AbgFSP3b (ORCPT + 99 others); Fri, 19 Jun 2020 11:29:31 -0400 Received: from mail.kernel.org ([198.145.29.99]:60972 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2393676AbgFSP3M (ORCPT ); Fri, 19 Jun 2020 11:29:12 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (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 0E8BB21974; Fri, 19 Jun 2020 15:29:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1592580547; bh=j1WdEzBd12DbuDwoyf/mczf2MfYOb1kIxN7UM9zTvoU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=PL1kl1QW16Q94671+6ze5/xKZASxNf6HZh4xGX6HafLqQWaP7OIqZFMueklabqKpN l8z/xfwA+6a5xu69RLR92t3PEiQDYOUkUZGaWujcAt13hKt8qzngm3kU5N6YRh+mrt k9dQAGy1F7JD3F/ls/tjDPer7FGe5SCw9tLekM78= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Dave Jiang , Ashok Raj , Bjorn Helgaas Subject: [PATCH 5.7 292/376] PCI: Program MPS for RCiEP devices Date: Fri, 19 Jun 2020 16:33:30 +0200 Message-Id: <20200619141724.163982764@linuxfoundation.org> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200619141710.350494719@linuxfoundation.org> References: <20200619141710.350494719@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Ashok Raj commit aa0ce96d72dd2e1b0dfd0fb868f82876e7790878 upstream. Root Complex Integrated Endpoints (RCiEPs) do not have an upstream bridge, so pci_configure_mps() previously ignored them, which may result in reduced performance. Instead, program the Max_Payload_Size of RCiEPs to the maximum supported value (unless it is limited for the PCIE_BUS_PEER2PEER case). This also affects the subsequent programming of Max_Read_Request_Size because Linux programs MRRS based on the MPS value. Fixes: 9dae3a97297f ("PCI: Move MPS configuration check to pci_configure_device()") Link: https://lore.kernel.org/r/1585343775-4019-1-git-send-email-ashok.raj@intel.com Tested-by: Dave Jiang Signed-off-by: Ashok Raj Signed-off-by: Bjorn Helgaas Cc: stable@vger.kernel.org Signed-off-by: Greg Kroah-Hartman --- drivers/pci/probe.c | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) --- a/drivers/pci/probe.c +++ b/drivers/pci/probe.c @@ -1934,13 +1934,33 @@ static void pci_configure_mps(struct pci struct pci_dev *bridge = pci_upstream_bridge(dev); int mps, mpss, p_mps, rc; - if (!pci_is_pcie(dev) || !bridge || !pci_is_pcie(bridge)) + if (!pci_is_pcie(dev)) return; /* MPS and MRRS fields are of type 'RsvdP' for VFs, short-circuit out */ if (dev->is_virtfn) return; + /* + * For Root Complex Integrated Endpoints, program the maximum + * supported value unless limited by the PCIE_BUS_PEER2PEER case. + */ + if (pci_pcie_type(dev) == PCI_EXP_TYPE_RC_END) { + if (pcie_bus_config == PCIE_BUS_PEER2PEER) + mps = 128; + else + mps = 128 << dev->pcie_mpss; + rc = pcie_set_mps(dev, mps); + if (rc) { + pci_warn(dev, "can't set Max Payload Size to %d; if necessary, use \"pci=pcie_bus_safe\" and report a bug\n", + mps); + } + return; + } + + if (!bridge || !pci_is_pcie(bridge)) + return; + mps = pcie_get_mps(dev); p_mps = pcie_get_mps(bridge);