From: Nicolin Chen <nicolinc@nvidia.com>
To: "Dan Williams (nvidia)" <djbw@kernel.org>
Cc: <jgg@nvidia.com>, <will@kernel.org>, <robin.murphy@arm.com>,
<bhelgaas@google.com>, <joro@8bytes.org>, <praan@google.com>,
<baolu.lu@linux.intel.com>, <kevin.tian@intel.com>,
<miko.lenczewski@arm.com>, <linux-arm-kernel@lists.infradead.org>,
<iommu@lists.linux.dev>, <linux-kernel@vger.kernel.org>,
<linux-pci@vger.kernel.org>, <dan.j.williams@intel.com>,
<jonathan.cameron@huawei.com>, <vsethi@nvidia.com>,
<linux-cxl@vger.kernel.org>, <nirmoyd@nvidia.com>
Subject: Re: [PATCH v4 1/3] PCI: Allow ATS to be always on for CXL.cache capable devices
Date: Thu, 30 Apr 2026 16:28:17 -0700 [thread overview]
Message-ID: <afPlkW5zlTSHwQCT@Asurada-Nvidia> (raw)
In-Reply-To: <69f3cc82926_3291a910039@djbw-dev.notmuch>
On Thu, Apr 30, 2026 at 02:41:22PM -0700, Dan Williams (nvidia) wrote:
> > +static bool pci_cxl_ats_always_on(struct pci_dev *pdev)
> > +{
> > + int offset;
> > + u16 cap;
> > +
> > + offset = pci_find_dvsec_capability(pdev, PCI_VENDOR_ID_CXL,
> > + PCI_DVSEC_CXL_DEVICE);
> > + if (!offset)
> > + return false;
> > +
> > + if (pci_read_config_word(pdev, offset + PCI_DVSEC_CXL_CAP, &cap))
> > + return false;
> > +
> > + return cap & PCI_DVSEC_CXL_CACHE_CAPABLE;
[...]
> Apologies for coming to this late and forgive me if the following has
> already been asked and answered. Why not check for actual CXL.cache
> protocol on the wire being present?
Actually it would make the patch smaller. The thing is that this
is_cxl property wasn't added when I started the series. So, it's
not using it. :)
> @@ -1733,9 +1733,8 @@ static void set_pcie_cxl(struct pci_dev *dev)
> pci_read_config_word(dev, dvsec + PCI_DVSEC_CXL_FLEXBUS_PORT_STATUS,
> &cap);
>
> - dev->is_cxl = FIELD_GET(PCI_DVSEC_CXL_FLEXBUS_PORT_STATUS_CACHE, cap) ||
> - FIELD_GET(PCI_DVSEC_CXL_FLEXBUS_PORT_STATUS_MEM, cap);
> -
> + dev->is_cxl_cache = FIELD_GET(PCI_DVSEC_CXL_FLEXBUS_PORT_STATUS_CACHE, cap);
> + dev->is_cxl_mem = FIELD_GET(PCI_DVSEC_CXL_FLEXBUS_PORT_STATUS_MEM, cap);
One caveat is that:
Here it checks the cap from:
PCI_DVSEC_CXL_FLEXBUS_PORT_STATUS (0xE) via
PCI_DVSEC_CXL_FLEXBUS_PORT_STATUS (0x7)
On the other hand, mine checks from:
PCI_DVSEC_CXL_CAP (0xA) via
PCI_DVSEC_CXL_DEVICE (0x0)
The spec mentions in 8.2.1.3.1 DVSEC Flex Bus Port Capability: "
Note: The Mem_Capable, IO_Capable, and Cache_Capable fields are
also present in the DVSEC Flex Bus for the device [which is the
legacy name for DVSEC 0x0]. This allows for future scalability
where multiple devices, each with potentially different
capabilities, may be populated behind a single Port.
"
Not arguing that set_pcie_cxl() is wrong, but I am not sure if there
would be any side effect to rely on the "legacy name" over DVSEC 0x0.
Is there any CXL expert who can help confirm?
Thanks!
Nicolin
next prev parent reply other threads:[~2026-04-30 23:29 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-27 5:53 [PATCH v4 0/3] Allow ATS to be always on for certain ATS-capable devices Nicolin Chen
2026-04-27 5:54 ` [PATCH v4 1/3] PCI: Allow ATS to be always on for CXL.cache capable devices Nicolin Chen
2026-04-27 16:31 ` Dave Jiang
2026-04-30 21:41 ` Dan Williams (nvidia)
2026-04-30 23:28 ` Nicolin Chen [this message]
2026-05-01 23:27 ` Dan Williams (nvidia)
2026-05-01 23:46 ` Jason Gunthorpe
2026-05-02 0:19 ` Dan Williams (nvidia)
2026-04-27 5:54 ` [PATCH v4 2/3] PCI: Allow ATS to be always on for pre-CXL devices Nicolin Chen
2026-04-27 16:32 ` Dave Jiang
2026-04-27 5:54 ` [PATCH v4 3/3] iommu/arm-smmu-v3: Allow ATS to be always on Nicolin Chen
2026-04-27 16:37 ` Dave Jiang
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=afPlkW5zlTSHwQCT@Asurada-Nvidia \
--to=nicolinc@nvidia.com \
--cc=baolu.lu@linux.intel.com \
--cc=bhelgaas@google.com \
--cc=dan.j.williams@intel.com \
--cc=djbw@kernel.org \
--cc=iommu@lists.linux.dev \
--cc=jgg@nvidia.com \
--cc=jonathan.cameron@huawei.com \
--cc=joro@8bytes.org \
--cc=kevin.tian@intel.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-cxl@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=miko.lenczewski@arm.com \
--cc=nirmoyd@nvidia.com \
--cc=praan@google.com \
--cc=robin.murphy@arm.com \
--cc=vsethi@nvidia.com \
--cc=will@kernel.org \
/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