Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp707583imm; Fri, 1 Jun 2018 08:13:15 -0700 (PDT) X-Google-Smtp-Source: ADUXVKJjKJ9/D7Ru8z9HJ0701wv24RGEb2GudEsy8BBOJXsIQnBCCOoCtTR9wXwpGgeYKZgbHfjD X-Received: by 2002:a62:9c93:: with SMTP id u19-v6mr11414660pfk.74.1527865995117; Fri, 01 Jun 2018 08:13:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1527865995; cv=none; d=google.com; s=arc-20160816; b=DMefQXjD4/Q/Wjz45rpWgZD7VToBRrwOoRxDPoFzzRgYHE6zjkaBJwuMmWlAKZniAF gnRtycr9ofuEunjBkqro3CXBMq272s+LqwH6n4NqibT/AYQXN045+WLUt4H0dpSrIW5q nz9muYxhwkOY/yVTSEwlTywGrsTjiS9RjiFIxnOkIdfTgdNwhnt1zauEqBnk/45iJCvL vIASLVrgx31Wmwg3rZ4Bko373zz1ZvibcdhUzmSsu0MwW6O/3ERuUWZD4cts0OOMQB4Q PyylEzQh0PKaY4J5pItnlL7/u/W8ih/Kh2j+wPSKzb2bu49S9CR6CxrS4BFhpUni13IJ 2Gew== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :references:in-reply-to:mime-version:dkim-signature :arc-authentication-results; bh=ybARkKZPEFP0Y7DN4WsALWkieNpcvm5DW1bvNFWtFy8=; b=vPYrKtbIW5USh/P+6AQc03ijMrCJ6cAbFhUuzAd3+eXQGlQKPTlLtuGGeac88xUtSw pB1ME0n+k17pdR82ig5j5WsZxwR351UBBqp8RmC2y93CaJF4CZxE+Finbgr7Xbu4QYAK 3bHKxHUSP2jWs0HSYMXoV3FbqyAmS4w2zgJuN+WA5QWm2tuM9pCF/88p2VEdB5VRMHiW u8GfV1/Cav8OFhey+eNfBsKI0KDH3osFLZYQmiOvkdZv0nlr98B7Tg+nMZ/U+Z+TRKBC ZbiA88iApB5VkD4oiVCsYCM/crmPuGzujm7tRmV3f4IyGRCJdqD/gzvD84MJYsAn6zWU pQ+w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=l0rH9Il0; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id f59-v6si4859878plf.500.2018.06.01.08.13.00; Fri, 01 Jun 2018 08:13:15 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=l0rH9Il0; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752801AbeFAPM3 (ORCPT + 99 others); Fri, 1 Jun 2018 11:12:29 -0400 Received: from mail-qt0-f196.google.com ([209.85.216.196]:36076 "EHLO mail-qt0-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751936AbeFAPMZ (ORCPT ); Fri, 1 Jun 2018 11:12:25 -0400 Received: by mail-qt0-f196.google.com with SMTP id q6-v6so32550117qtn.3; Fri, 01 Jun 2018 08:12:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=ybARkKZPEFP0Y7DN4WsALWkieNpcvm5DW1bvNFWtFy8=; b=l0rH9Il0MzWxPdeqPzXt+tFx9hBqqO5fQL6Q7ybhk8dADImarkGR3wZ+iw5Bpq54UE 7xGGSqH1+lT4gGEGyzlc/1MeR9afQbVSbLtV8BFIfiiCAz/Otv9SYuHKXAu6CZzOfyJR tX067uX+Dew8ylbHiS7PtQDtsk76Kb1glAM7b6KgvjRSFDc+BypUPrQGrcrflAF4R15G xxD5/BmhvolH/rg8+RzEEYHwMTWcaxbnFIDhc7K37xQE8uJTRVRb8jN1UjcVHe6sgsCe ud2WCBL5zgcCcStSK3i9y5ed6HXn5ZryzQcQ2Ov2xQLroSsMqftjdv2rThT1qGqjnzpv zIFA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=ybARkKZPEFP0Y7DN4WsALWkieNpcvm5DW1bvNFWtFy8=; b=TW7xoaWV27cnasvQjPzkN96IaKJTV+CblfNBMoWYpXGqWtZkyglx3c8OIqSWGIv0rb Dq3vXjQbBLIZMNFiXGxgdPYGpskeo/odgbCOe6sQngcAZ8lj5sbj3rbxdGRnikQ/Vtx1 407Fdy2r9SWI9C7Ppu3Ak0v02SkpWTlJABDoU59yiCJ3+IDf0HvVVMDGk8u/5iliciB8 S1gAcFnixuNi6ZU84VrbwSVQMrtfXh1Blr9AKh4WMiGryOh4VTqUr54xzUogC/hW8EIh odG+mT6mdPKqTFqUlqpSl9/U1TpUOZH37x0sWbtJDXb1f9L9wD0EQLYYEH+E/tZxPba3 Wedg== X-Gm-Message-State: APt69E0aMwU9Ne7YlWN3n1K1XhaPUBQMFjHKgHTquy2MNiZjzxyZZ/Vo Kl/w066SM2axUcYyfDSoj7fYjrx363DOq3iV8WiewxQgqZQ= X-Received: by 2002:a0c:f288:: with SMTP id k8-v6mr10781283qvl.14.1527865945008; Fri, 01 Jun 2018 08:12:25 -0700 (PDT) MIME-Version: 1.0 Received: by 2002:a0c:98f9:0:0:0:0:0 with HTTP; Fri, 1 Jun 2018 08:12:24 -0700 (PDT) In-Reply-To: <20180601150129.10486-1-mr.nuke.me@gmail.com> References: <20180601150129.10486-1-mr.nuke.me@gmail.com> From: Andy Shevchenko Date: Fri, 1 Jun 2018 18:12:24 +0300 Message-ID: Subject: Re: [PATCH v2] PCI: Check for PCIe downtraining conditions To: Alexandru Gagniuc Cc: Bjorn Helgaas , alex_gagniuc@dellteam.com, austin_bolen@dell.com, shyam_iyer@dell.com, Keith Busch , Sinan Kaya , linux-pci@vger.kernel.org, Linux Kernel Mailing List Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Jun 1, 2018 at 6:01 PM, Alexandru Gagniuc wrote: > PCIe downtraining happens when both the device and PCIe port are > capable of a larger bus width or higher speed than negotiated. > Downtraining might be indicative of other problems in the system, and > identifying this from userspace is neither intuitive, nor straigh > forward. > > The easiest way to detect this is with pcie_print_link_status(), > since the bottleneck is usually the link that is downtrained. It's not > a perfect solution, but it works extremely well in most cases. > +static void pcie_check_upstream_link(struct pci_dev *dev) > +{ > + This is redundant, but... > + if (!pci_is_pcie(dev)) > + return; > + > + /* Look from the device up to avoid downstream ports with no devices. */ > + if ((pci_pcie_type(dev) != PCI_EXP_TYPE_ENDPOINT) && > + (pci_pcie_type(dev) != PCI_EXP_TYPE_LEG_END) && > + (pci_pcie_type(dev) != PCI_EXP_TYPE_UPSTREAM)) > + return; ...wouldn't be better int type = pci_pcie_type(dev); ? But also possible, looking at existing code, static inline bool pci_is_pcie_type(dev, type) { return pci_is_pcie(dev) ? pci_pcie_type(dev) == type : false; } -- With Best Regards, Andy Shevchenko