Re: [PATCH RFCv1 1/3] PCI: Allow ATS to be always on for CXL.cache capable devices
From: Baolu Lu
Date: Wed Jan 21 2026 - 20:18:01 EST
On 1/21/26 21:03, Jason Gunthorpe wrote:
On Wed, Jan 21, 2026 at 10:03:07AM +0000, Jonathan Cameron wrote:
On Wed, 21 Jan 2026 08:01:36 +0000A cxl.cache device supporting ATS will automatically enable ATS today
"Tian, Kevin"<kevin.tian@xxxxxxxxx> wrote:
+Dan. I recalled an offline discussion in which he raised concern on+CC Linux-cxl
having the kernel blindly enable ATS for cxl.cache device instead of
creating a knob for admin to configure from userspace (in case
security is viewed more important than functionality, upon allowing
DMA to read data out of CPU caches)...
if the kernel option to enable translation is set.
Even if the device is marked untrusted by the PCI layer (eg an
external port).
I don't follow here. The untrusted check is now in pci_ats_supported():
/**
* pci_ats_supported - check if the device can use ATS
* @dev: the PCI device
*
* Returns true if the device supports ATS and is allowed to use it, false
* otherwise.
*/
bool pci_ats_supported(struct pci_dev *dev)
{
if (!dev->ats_cap)
return false;
return (dev->untrusted == 0);
}
EXPORT_SYMBOL_GPL(pci_ats_supported);
The iommu drivers (intel/amd/arm-smmuv3) all call pci_ats_supported()
before enabling ATS on a device. Anything I missed?
Yes this is effectively a security issue, but it is not really a CXL
specific problem.
We might perfer to not enable ATS for untrusted devices and then fail to
load drivers for "ats always on" cases.
Or maybe we can enable one of the ATS security features someday,
though I wonder if those work for CXL..
Thanks,
baolu