[PATCH v6 1/3] PCI: Add pci_ats_required() for CXL.cache capable devices

Nicolin Chen nicolinc at nvidia.com
Thu May 21 14:59:25 PDT 2026


On Thu, May 21, 2026 at 04:31:23PM -0500, Bjorn Helgaas wrote:
> On Thu, May 21, 2026 at 02:07:34PM -0700, Nicolin Chen wrote:
> > On Thu, May 21, 2026 at 03:57:23PM -0500, Bjorn Helgaas wrote:
> > > On Thu, May 21, 2026 at 01:34:20PM -0700, Nicolin Chen wrote:
> > > > +bool pci_ats_required(struct pci_dev *pdev)
> > > > +{
> > > > +	if (!pci_ats_supported(pdev))
> > > > +		return false;
> > > > +
> > > > +	/* A VF inherits its PF's requirement for ATS function */
> > > > +	if (pdev->is_virtfn)
> > > > +		pdev = pci_physfn(pdev);
> > > > +
> > > > +	return pci_cxl_ats_required(pdev);
> > > 
> > > I acked this before I saw this sashiko feedback, which looks like a
> > > legit issue to me:
> > > 
> > >   Will this VF inheritance logic ever be reached?
> > > 
> > >   According to the PCIe SR-IOV specification (section 9.3.3.1), VFs do
> > >   not implement the ATS Extended Capability, which means pdev->ats_cap
> > >   is always 0 for VFs.
> 
> Huh.  I wish sashiko would include the spec revision because that sure
> looks wrong.  In PCIe r7.0, there is no sec 9.3.3.1.  In PCIe r6.0,
> sec 9.3.3.1 is the SR-IOV Extended Capability, which doesn't mention
> ATS.  In both, sec 10.5.1 is the ATS Extended Capability and says both
> PFs and VFs can implement it.

I am glad you checked the spec. I should have done the same.

> So I think this is OK as-is:
> 
> Acked-by: Bjorn Helgaas <bhelgaas at google.com>

Thanks!
Nicolin



More information about the linux-arm-kernel mailing list