On Fri, Aug 30, 2019 at 09:18:40AM -0700, Christoph Hellwig wrote: > On Fri, Aug 30, 2019 at 05:07:56PM +0200, Krzysztof Wilczynski wrote: > > Move ATS function prototypes from include/linux/pci-ats.h to > > include/linux/pci.h so users only need to include <linux/pci.h>: > > Why is that so important? Very few PCI(e) device drivers use ATS, > so keeping it out of everyones include hell doesn't seem all bad. This was my idea, and it wasn't a good one, sorry. The ATS, PRI, and PASID interfaces are all sort of related and are used only by the IOMMU drivers, so it probably makes sense to put them all together. Right now the ATS stuff is in linux/pci.h and PRI/PASID stuff is in linux/pci-ats.h. Maybe the right thing would be to move the ATS stuff to pci-ats.h. I previously moved it from pci-ats.h to pci.h with ff9bee895c4d ("PCI: Move ATS declarations to linux/pci.h so they're all together") with the excuse of putting the external ATS interfaces next to pci_ats_init(). But that really looks like it was a mistake because pci_ats_init() is a PCI-internal thing and its declaration should probably be in drivers/pci/pci.h instead. There's also a useless "struct pci_ats" forward declaration in linux/pci.h that I should have removed with d544d75ac96a ("PCI: Embed ATS info directly into struct pci_dev"). Bjorn