linux-pci.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Rajat Jain <rajatja@google.com>
To: 0001-PCI-Always-call-pci_enable_acs-regardless-of-pdev-ac.patch@google.com,
	linux-pci@vger.kernel.org, "Boris V." <borisvk@bstnet.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Bjorn Helgaas <helgaas@kernel.org>
Cc: rajatxjain@gmail.com, Rajat Jain <rajatja@google.com>
Subject: [PATCH] PCI: Always call pci_enable_acs() regardless of pdev->acs_cap
Date: Wed, 28 Oct 2020 16:15:45 -0700	[thread overview]
Message-ID: <20201028231545.4116866-1-rajatja@google.com> (raw)

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 <borisvk@bstnet.org>
Fixes: 52fbf5bdeeef ("PCI: Cache ACS capability offset in device")
Signed-off-by: Rajat Jain <rajatja@google.com>
---
 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


             reply	other threads:[~2020-10-28 23:16 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-10-28 23:15 Rajat Jain [this message]
2020-10-28 23:19 ` [PATCH] PCI: Always call pci_enable_acs() regardless of pdev->acs_cap Rajat Jain
2020-10-30 19:25 ` Alex Williamson
2020-10-30 21:42 ` Bjorn Helgaas

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20201028231545.4116866-1-rajatja@google.com \
    --to=rajatja@google.com \
    --cc=0001-PCI-Always-call-pci_enable_acs-regardless-of-pdev-ac.patch@google.com \
    --cc=borisvk@bstnet.org \
    --cc=helgaas@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=rajatxjain@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).