linux-sg2042/arch/arm/mach-integrator
Linus Walleij e1318391fd ARM: integrator: fix section mismatch problem
This addresses a section mismatch problem in the IM-PD1
driver in the Integrator/AP.

The IM-PD1 contains a VIC interrupt controller and therefore
the driver calls vic_init_cascaded() which is marked __init as
irqchips are simply not hot-pluggable and specifically the VIC
is assumed to initiate only on boot.

However the module driver model of the Integrator LM bus
assumes that logic tile drivers can be probed at runtime. This
is not really the case for IM-PD1: these tiles are detected at
boot and they cannot be plugged into a running system. Before
this patch it is of course possible to modprobe them later.

By first forcing the IM-PD1 to bool we make sure this driver
gets compiled into the kernel, and we know it will be probed
only at boot time when the tiles are detected, so we can tag
its probe function __init_refok as we know it won't be called
after boot now, and the section mismatch problem goes away.

As a side effect, sysfs binding from userspace becomes
impossible, so we tag the driver to suppress the bind/unbind
sysfs attributes.

Cc: Russell King <linux@arm.linux.org.uk>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2014-06-17 17:09:38 +02:00
..
include/mach ARM: SoC: late cleanups 2014-04-05 15:46:37 -07:00
Kconfig ARM: integrator: fix section mismatch problem 2014-06-17 17:09:38 +02:00
Makefile ARM: integrator: merge PCIv3 driver into one file 2013-06-03 08:04:30 +02:00
Makefile.boot ARM: 7022/1: allow to detect conflicting zreladdrs 2011-10-17 09:12:40 +01:00
cm.h ARM: integrator: move CM base into device tree 2013-10-16 14:09:56 +02:00
common.h reboot: arm: change reboot_mode to use enum reboot_mode 2013-07-09 10:33:29 -07:00
core.c ARM: integrator: localize the hardware.h header 2014-02-26 13:49:07 +01:00
hardware.h ARM: integrator: localize the hardware.h header 2014-02-26 13:49:07 +01:00
impd1.c ARM: integrator: fix section mismatch problem 2014-06-17 17:09:38 +02:00
impd1.h ARM: integrator: localize the impd1.h header 2014-02-26 13:49:06 +01:00
integrator_ap.c ARM: SoC: late cleanups 2014-04-05 15:46:37 -07:00
integrator_cp.c ARM: integrator: register sched_clock directly 2014-02-26 13:49:07 +01:00
leds.c ARM: integrator: localize the hardware.h header 2014-02-26 13:49:07 +01:00
lm.c ARM: integrator: localize the lm.h header 2014-02-26 13:49:05 +01:00
lm.h ARM: integrator: localize the lm.h header 2014-02-26 13:49:05 +01:00
pci_v3.c ARM: integrator: localize the hardware.h header 2014-02-26 13:49:07 +01:00
pci_v3.h ARM: mach-integrator: Add stub for pci_v3_early_init() for !CONFIG_PCI 2013-09-25 21:59:52 -07:00