Hi Logan, On 02/07/2026 16:45, Logan Gunthorpe wrote: > > > On 2026-07-01 11:12 a.m., Matt Evans wrote:> >> PCI POWER CONTROL >> diff --git a/drivers/pci/Kconfig b/drivers/pci/Kconfig >> index 33c88432b728..59d70bc84cc9 100644 >> --- a/drivers/pci/Kconfig >> +++ b/drivers/pci/Kconfig >> @@ -206,11 +206,7 @@ config PCIE_TPH >> config PCI_P2PDMA >> bool "PCI peer-to-peer transfer support" >> depends on ZONE_DEVICE >> - # >> - # The need for the scatterlist DMA bus address flag means PCI P2PDMA >> - # requires 64bit >> - # >> - depends on 64BIT >> + select PCI_P2PDMA_CORE > > Can we remove this dependency on 64BIT? Althogh it looks like > af2880ec440 complicated the issue a bit. > > If I remember correctly, the original reason for this is because on > 64bit systems dma_flags fit into unusued space in struct scatterlist and > on 32bit systems this space didn't exist and thus adding the flag > required increasing the size of the structure which wasn't desirable at > the time. > > But af2880ec440 introduced CONFIG_NEED_SG_DMA_FLAGS which doesn't depend > on 64bit which means if CONFIG_IOMMU_DMA and CONFIG_SWIOTLB are now set > on 32bit systems that structure will grow quite a bit.
There was some discussion on this aspect of af2880ec440 in the corresponding v3 patch, for example: https://lore.kernel.org/all/[email protected]/ It seems CONFIG_NEED_SG_DMA_FLAGS doesn't have a hard/functional dependency on 64BIT (and it can be enabled on some !64BIT configs already, despite what the stale comments say). > So maybe at this point it's fine to enable this on 32bit systems and we > can remove this requirement. However, I think we should do that > explicitly in its own patch, not hide it in this refactoring patch. Your question does prove it's too stealthy as-is. :) PCI_P2PDMA still can't be enabled on 32-bit systems because of its ZONE_DEVICE -> MEMORY_HOTPLUG -> 64BIT dependency. So we're not enabling 32-bit support for PCI_P2PDMA here, but it's not obvious and so I'll re-add the `depends on 64BIT`. At least then it won't be enabled without intention if someone enables ZONE_DEVICE on 32-bit systems... Thanks, Matt
