Received: by 2002:a05:6a10:9e8c:0:0:0:0 with SMTP id y12csp862pxx; Wed, 28 Oct 2020 16:20:27 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzKKgy8RGenYOJEMwCv3ZesnFqqzhH5jqjhfq4toSOKBM8Ej8SbjwyuyllP2Q7ljQKsrO4s X-Received: by 2002:a17:906:f151:: with SMTP id gw17mr1373957ejb.119.1603927227383; Wed, 28 Oct 2020 16:20:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1603927227; cv=none; d=google.com; s=arc-20160816; b=M9zP94dmr1UrXli78D9xFihn7afZbgm7uYwV9FKiC2/kHgA/iPMPzvW5invmf43Ks0 oHsPs9rS42KCL7Kfhq89Qj1w3XWO4kBm4y1Kk1gtQCa6zs7WHwAWDjyXdJjRvM6wxU45 qGLXjDNrOCGPRiiSx/yEySj1JHUati5k9QawG/nykB/RHWOr8c83lCDLhB1DeNP5DLC4 JoQR4ELmhKsqJvTyCwTTK9tQ9TgpnFk4/ZDJhKHWoL/MlTn5IkihsekFGyhmF3KHUFZF EHJeqVYnLRbwqNxe+ECBR6gStlbgM0utYWaId/Z3MukztFdBUZWLryrCI7m9awzv7HBX o4+A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:from:subject:mime-version:message-id:date :sender:dkim-signature; bh=iUnZeYRK4vIboje11z8E0pGSWAL3LEqKSuUfRc5J478=; b=0Y6EqwE81trg/02z56o7yIcvRjwaN+knTguM6uVlR0ZwwtO11zN/Z4JBzk1VZ7ctY4 xN9ZCSIMPRKJQdVg38hPMjsSZbTBKfzfLLdyBIjHV7jxBkDh67bP8lk1gVYilWPIhlmh 4cNz0W2klssSGQcIypxRxH7UHuUeyxHc6MoMURmhnOT5+A4Z3JWAMwFnYZJQgImwVF8k 7iySAlnwSketa7RatkpbLgSeT12lM2GnV4LBvmjjg+jyPrtGCCi7KDP3zSTbVok0efu0 gSDZ6DryuvTVnlwQrHJiqrv6qXlXaBYK6ISfjQaPg3gFIQDAj1MCP5mRL+vJiJ+nabyh RSQw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=Nx7qGJFA; 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=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id r21si695996edo.519.2020.10.28.16.20.05; Wed, 28 Oct 2020 16:20:27 -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=@google.com header.s=20161025 header.b=Nx7qGJFA; 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=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2390113AbgJ1XQX (ORCPT + 99 others); Wed, 28 Oct 2020 19:16:23 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35146 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2390098AbgJ1XPt (ORCPT ); Wed, 28 Oct 2020 19:15:49 -0400 Received: from mail-pg1-x54a.google.com (mail-pg1-x54a.google.com [IPv6:2607:f8b0:4864:20::54a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9B52CC0613D1 for ; Wed, 28 Oct 2020 16:15:49 -0700 (PDT) Received: by mail-pg1-x54a.google.com with SMTP id t1so612789pgo.23 for ; Wed, 28 Oct 2020 16:15:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=sender:date:message-id:mime-version:subject:from:to:cc; bh=iUnZeYRK4vIboje11z8E0pGSWAL3LEqKSuUfRc5J478=; b=Nx7qGJFAN71ZNXZS3f/KvFge75PMmyvgSthe2fi9fuuLd9kBiRU+g/gxnwfOCtD7XQ cd95k9wwthMblc1KvxkKivjN7csRKnTWHMcWD0bnSjjFYPjYueviYqoNkImusTWN6iv+ UzJqLs6cL7xMjKy/ajuzP1dzmfANQ0kwv0BaAMtdhfRbysZpdZpWkqD254KzizOWsEAU kA/rLsDWEOnCdo5er+cV4yzeXeLuCcp+Cn0FnYVAT2zx8DThFhMq/aTyZBXNJF9PM0Q8 Tx8QymHd+glDouMxYxSCtuEVwOshLcYd6BINi2oqhCRdFUedHxxpEHcuKLQdvG+Dkx2/ SM/A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:date:message-id:mime-version:subject:from :to:cc; bh=iUnZeYRK4vIboje11z8E0pGSWAL3LEqKSuUfRc5J478=; b=laCNCGQdd6xDtzHzuhOZT3+XgObEdPnHlQ+8r6QxJo4kIrq6z3iTtjkIEY2qrJOCQj NwuX/2Gcfxk7Bcj+zAS6tvxCtYtjhyGujMn3ztXhkfFj4d4bZNAKpybq0hRRKaanuBjC iQBgEqVgD9aNenWw64F3AgxnCYthJNQSabirKn74726JlN2kw2dkLsJ3UlcwwCOdV6On 9bJIx8gVr7oE0liwDfdIB+fxOpdTDMJh0N4iyxi5jIMdDjT2BTJBR5wOkL120moUcQUE ZTWm3hnR8uKI8irpFqz7kruv8RkQcqHv25AQLKCg2jqS4etD6dNnt74jWqzHUuGYoRGY 2qJQ== X-Gm-Message-State: AOAM531usEPEDlFDTa3yGky/4Vp9+hiLkBJy2+PStu7z1493B0zQVn3z O5t41N8yr85VXNE2EBrJ69c9+xLfHOwR Sender: "rajatja via sendgmr" X-Received: from rajat2.mtv.corp.google.com ([2620:15c:202:201:f693:9fff:fef4:3c89]) (user=rajatja job=sendgmr) by 2002:aa7:8c50:0:b029:160:1240:493d with SMTP id e16-20020aa78c500000b02901601240493dmr1287008pfd.31.1603926948983; Wed, 28 Oct 2020 16:15:48 -0700 (PDT) Date: Wed, 28 Oct 2020 16:15:45 -0700 Message-Id: <20201028231545.4116866-1-rajatja@google.com> Mime-Version: 1.0 X-Mailer: git-send-email 2.29.1.341.ge80a0c044ae-goog Subject: [PATCH] PCI: Always call pci_enable_acs() regardless of pdev->acs_cap From: Rajat Jain To: 0001-PCI-Always-call-pci_enable_acs-regardless-of-pdev-ac.patch@google.com, linux-pci@vger.kernel.org, "Boris V." , Linux Kernel Mailing List , Bjorn Helgaas Cc: rajatxjain@gmail.com, Rajat Jain Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Some devices may have have anomalies with the ACS cpability structure, and they may be using quirks to support ACS functionality via other registers. For such devices, it is important we always call pci_enable_acs() to give the quirks a chance to enable ACS in other ways. For Eg: There seems a class of Intel devices quirked with *_intel_pch_acs_* functions, that do not expose the standard ACS capability structure. But these quirks help support ACS on these devices using other registers: pci_quirk_enable_intel_pch_acs() -> doesn't use acs_cap to enable ACS This has already been taken care of in the quirks, in the other direction i.e. when checking if the ACS is enabled or not. So no need to do anything there. Reported-by: Boris V Fixes: 52fbf5bdeeef ("PCI: Cache ACS capability offset in device") Signed-off-by: Rajat Jain --- drivers/pci/pci.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index 6d4d5a2f923d..ab398226c55e 100644 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c @@ -3516,8 +3516,13 @@ void pci_acs_init(struct pci_dev *dev) { dev->acs_cap = pci_find_ext_capability(dev, PCI_EXT_CAP_ID_ACS); - if (dev->acs_cap) - pci_enable_acs(dev); + /* + * Attempt to enable ACS regardless of capability because some rootports + * (e.g. the ones quirked with *_intel_pch_acs_*) may not expose + * standard rootport capability structure, but still may support ACS via + * those quirks. + */ + pci_enable_acs(dev); } /** -- 2.29.1.341.ge80a0c044ae-goog