On Sun, Jul 13, 2014 at 12:22:02PM -0700, Greg Kroah-Hartman wrote: > On Sun, Jul 13, 2014 at 04:25:06PM +0200, Lars-Peter Clausen wrote: > > On 07/13/2014 04:03 PM, Richard Weinberger wrote: > > >Am 13.07.2014 15:56, schrieb Lars-Peter Clausen: > > >>On 07/13/2014 03:40 PM, Richard Weinberger wrote: > > >>>Am 13.07.2014 15:26, schrieb Lars-Peter Clausen: > > >>>>On 07/13/2014 11:45 AM, Richard Weinberger wrote: > > >>>>>Am 13.07.2014 11:27, schrieb Lennox Wu: > > >>>>>>As I said before, some configurations don't make sense. > > >>>>> > > >>>>>If such a configuration can be achieved using allmod/yesconfig it has to be fixed. > > >>>>>Chen's fixes seem reasonable as not all architectures support iomem. > > >>>> > > >>>>Maybe we should stub out ioremap() and friends when COMPILE_TEST is enabled to avoid these linker errors. That's in my opinion better than turning most of the 'depends on > > >>>>COMPILE_TEST' into 'depends on COMPILE_TEST && HAS_IOMEM'. The issue comes up quite a lot and it is often overlooked when adding a driver that can be build when COMPILE_TEST is > > >>>>enabled. > > >>> > > >>>And what should this stub do? > > >>>Except calling BUG()... > > >> > > >>return NULL; > > >> > > >>It's for compile testing, it's not meant to work at runtime. > > > > > >Hm, I really don't like the idea of having a non-working kernel. > > >IMHO either it should build _and_ run and nothing else. > > >Greg, what do you think? > > > > The kernel will still be working fine and you can run it on a system. The > > drivers which use ioremap() or similar are probably not instantiated on a > > system that does not provide HAS_IOMEM. But even if it was the driver should > > handle ioremap() returning NULL gracefully and abort the driver probe. That > > said you'll probably not run a kernel that was built with COMPILE_TEST on > > your real hardware since it contains so many drivers that are completely > > useless on your hardware. The idea of COMPILE_TEST is to have as much > > compile test exposure as possible to the code that is enabled by > > COMPILE_TEST. Stubbing out ioremap() and friends when HAS_IOMEM is not set > > and COMPILE_TEST is set makes it easier to get there. > > I run my kernels with COMPILE_TEST enabled as I need to build test > things that I don't happen to use. > > I like the 'return NULL' option for this, it hits us all the time, might > as well fix it properly like this so that we don't have to deal with > Kconfig changes everywhere. I agree. One nit, though: devm_ioremap_resource() returns an ERR_PTR()- encoded error code, so the dummy should probably be returning something like ERR_PTR(-ENOSYS) instead of NULL. > Also put a big "This platform does not support IOMEM" error printk in > there, so that people have a chance to figure out what is going on if > they happen to run such a driver on a platform that can't support it. Yes, that sounds like a very good idea and should be indication enough of what exactly has gone wrong. Thierry
Attachment:
pgp7tmSz5Tdv0.pgp
Description: PGP signature