Message ID | 1360686546-24277-6-git-send-email-thomas.petazzoni@free-electrons.com (mailing list archive) |
---|---|
State | New, archived |
Delegated to: | Bjorn Helgaas |
Headers | show |
On Tuesday 12 February 2013, Thomas Petazzoni wrote: > The pcim_*() functions are used by the libata-sff subsystem, and this > subsystem is used for many SATA drivers on ARM platforms that do not > necessarily have I/O ports. > > Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> > Cc: Paul Gortmaker <paul.gortmaker@windriver.com> > Cc: Jesse Barnes <jbarnes@virtuousgeek.org> > Cc: Yinghai Lu <yinghai@kernel.org> > Cc: linux-kernel@vger.kernel.org Sorry, but this patch is still incorrect. Any driver that requires a linear mapping of I/O ports to __iomem pointers must depend CONFIG_HAS_IOPORT with the current definition of that symbol (as mentioned before, we should really rename that to CONFIG_HAS_IOPORT_MAP). Having these functions not defined is a compile time check that is necessary to ensure that all drivers have the correct annotation. If a platform has no support for I/O ports at all, it should probably not set CONFIG_NO_IOPORT at this point. Arnd -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Dear Arnd Bergmann, On Tue, 12 Feb 2013 18:00:48 +0000, Arnd Bergmann wrote: > On Tuesday 12 February 2013, Thomas Petazzoni wrote: > > The pcim_*() functions are used by the libata-sff subsystem, and > > this subsystem is used for many SATA drivers on ARM platforms that > > do not necessarily have I/O ports. > > > > Signed-off-by: Thomas Petazzoni > > <thomas.petazzoni@free-electrons.com> Cc: Paul Gortmaker > > <paul.gortmaker@windriver.com> Cc: Jesse Barnes > > <jbarnes@virtuousgeek.org> Cc: Yinghai Lu <yinghai@kernel.org> > > Cc: linux-kernel@vger.kernel.org > > Sorry, but this patch is still incorrect. I know, but the discussion was so huge on the first posting that it was basically impossible to draw a conclusion out of it. > Any driver that requires a > linear mapping of I/O ports to __iomem pointers must depend > CONFIG_HAS_IOPORT with the current definition of that symbol (as > mentioned before, we should really rename that to > CONFIG_HAS_IOPORT_MAP). Having these functions not defined is a > compile time check that is necessary to ensure that all drivers have > the correct annotation. I have the feeling that the problem is more complex than that. My understanding is that the pcim_iomap_regions() function used by drivers/ata/libata-sff.c can perfectly be used to map memory BARs, and not necessarily I/O BARs. Therefore, this driver can perfectly be used in an architecture where CONFIG_NO_IOPORT is selected. The thing is that pcim_iomap_regions() transparently allows to remap an I/O BAR is such a BAR is passed as argument, or a memory BAR if such a BAR is passed as argument. Therefore, I continue to believe that the pcim_*() functions are useful even if the platform doesn't have CONFIG_HAS_IOPORT. Best regards, Thomas
diff --git a/lib/devres.c b/lib/devres.c index 80b9c76..5639c3e 100644 --- a/lib/devres.c +++ b/lib/devres.c @@ -195,6 +195,7 @@ void devm_ioport_unmap(struct device *dev, void __iomem *addr) devm_ioport_map_match, (void *)addr)); } EXPORT_SYMBOL(devm_ioport_unmap); +#endif /* CONFIG_HAS_IOPORT */ #ifdef CONFIG_PCI /* @@ -400,4 +401,3 @@ void pcim_iounmap_regions(struct pci_dev *pdev, int mask) } EXPORT_SYMBOL(pcim_iounmap_regions); #endif /* CONFIG_PCI */ -#endif /* CONFIG_HAS_IOPORT */
The pcim_*() functions are used by the libata-sff subsystem, and this subsystem is used for many SATA drivers on ARM platforms that do not necessarily have I/O ports. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Cc: Paul Gortmaker <paul.gortmaker@windriver.com> Cc: Jesse Barnes <jbarnes@virtuousgeek.org> Cc: Yinghai Lu <yinghai@kernel.org> Cc: linux-kernel@vger.kernel.org --- lib/devres.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)