Re: [PATCH] drivers: Let several drivers depends on HAS_IOMEM for 'devm_ioremap_resource'
flat view
From: Thierry Reding <hidden>
Date: 2014-07-17 09:51:35
Also in:
linux-iio, linux-pwm, linux-watchdog, lkml
On Thu, Jul 17, 2014 at 05:29:31PM +0800, Chen Gang wrote:
On 07/17/2014 05:20 PM, Arnd Bergmann wrote:quoted
On Thursday 17 July 2014 09:27:58 Chen Gang wrote:quoted
gfp_t gfp_mask, unsigned int order); extern void devm_free_pages(struct device *dev, unsigned long addr); +#ifdef CONFIG_HAS_IOMEM void __iomem *devm_ioremap_resource(struct device *dev, struct resource *res); +#elif defined(CONFIG_COMPILE_TEST) +static inline void __iomem *devm_ioremap_resource(struct device *dev, + struct resource *res) +{ + pr_warn("no hardware io memory, only for COMPILE_TEST\n"); + return (__force void __iomem *)ERR_PTR(-ENXIO); +} +#endif /* CONFIG_HAS_IOMEM || CONFIG_COMPILE_TEST */ /* allows to add/remove a custom action to devres stack */To be honest, I think it's a bad idea to introduce wrappers functions that are only available when CONFIG_COMPILE_TEST is set. COMPILE_TEST is a great tool in general, but it has its limits. In particular, the case for !CONFIG_IOMEM is completely obscure and we won't find any bugs by allowing more drivers to be built in those configurations, but attempting to do it would cause endless churn by changing each instance of 'depends on HAS_IOMEM' to 'depends on HAS_IOMEM || COMPILE_TEST'.Architecture members and driver members really have different tastes, they are different roles. It really need additional discussion. For me, I only want to change devm_io*map*, not touch so much. Welcome any other members' idea or suggestions.quoted
Note that s390 no has gained support for IOMEM, tile has it most of the time (when PCI is enabled, so you get it in half the test builds already), score should set HAS_IOMEM and doesn't even have public compilers, and uml doesn't even compile in latest mainline. Nothing else ever sets NO_IOMEM.In latest gcc and binutils, can compile score cross compiler successfully for building kernel (but I am not quite sure whether the compiling result are really OK, but I guess so).
I was only able to ever build a partial bare-metal toolchain for score. There's no uClibc, glibc or newlib support, so it becomes rather useless as a Linux architecture. Also when I run the cross-compiler on a score defconfig build, I get a bunch of these: score-unknown-elf-gcc-4.9.0: internal compiler error: Segmentation fault (program as) Thierry
Attachments
- (unnamed) [application/pgp-signature] 819 bytes