kernel_optimize_test/drivers
Grant Likely d72cca1eee drivercore: Fix ordering between deferred_probe and exiting initcalls
One of the side effects of deferred probe is that some drivers which
used to be probed before initcalls completed are now happening slightly
later. This causes two problems.
- If a console driver gets deferred, then it may not be ready when
  userspace starts. For example, if a uart depends on pinctrl, then the
  uart will get deferred and /dev/console will not be available
- __init sections will be discarded before built-in drivers are probed.
  Strictly speaking, __init functions should not be called in a drivers
  __probe path, but there are a lot of drivers (console stuff again)
  that do anyway. In the past it was perfectly safe to do so because all
  built-in drivers got probed before the end of initcalls.

This patch fixes the problem by forcing the first pass of the deferred
list to complete at late_initcall time. This is late enough to catch the
drivers that are known to have the above issues.

Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
Tested-by: Haojian Zhuang <haojian.zhuang@linaro.org>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Russell King <linux@arm.linux.org.uk>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: stable <stable@vger.kernel.org> # 3.4+
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-02-15 10:50:33 -08:00
..
accessibility
acpi Merge 3.8-rc5 into driver-core-next 2013-01-25 21:06:30 -08:00
amba amba: Convert to devm_ioremap_resource() 2013-01-25 12:21:46 -08:00
ata Merge 3.8-rc5 into driver-core-next 2013-01-25 21:06:30 -08:00
atm Drivers: atm: remove __dev* attributes. 2013-01-03 15:57:04 -08:00
auxdisplay Drivers: misc: remove __dev* attributes. 2013-01-03 15:57:16 -08:00
base drivercore: Fix ordering between deferred_probe and exiting initcalls 2013-02-15 10:50:33 -08:00
bcma Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2013-01-08 07:31:49 -08:00
block Merge 3.8-rc5 into driver-core-next 2013-01-25 21:06:30 -08:00
bluetooth
bus Drivers: misc: remove __dev* attributes. 2013-01-03 15:57:16 -08:00
cdrom Drivers: misc: remove __dev* attributes. 2013-01-03 15:57:16 -08:00
char char: Convert to devm_ioremap_resource() 2013-01-22 11:41:56 -08:00
clk mvebu fixes for v3.8-rc5 2013-01-23 20:30:52 -08:00
clocksource Drivers: clocksource: remove __dev* attributes. 2013-01-03 15:57:15 -08:00
connector Drivers: misc: remove __dev* attributes. 2013-01-03 15:57:16 -08:00
cpufreq Merge 3.8-rc5 into driver-core-next 2013-01-25 21:06:30 -08:00
cpuidle cpuidle: remove the power_specified field in the driver 2013-01-15 14:18:04 +01:00
crypto Drivers: crypto: remove __dev* attributes. 2013-01-03 15:57:02 -08:00
dca
devfreq PM / devfreq: exynos4_bus: honor RCU lock usage 2013-01-22 13:28:40 +01:00
dio
dma Merge 3.8-rc5 into driver-core-next 2013-01-25 21:06:30 -08:00
edac drivers/edac: remove depends on CONFIG_EXPERIMENTAL 2013-01-17 12:11:26 -08:00
eisa
extcon
firewire Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2012-12-13 12:00:02 -08:00
firmware Drivers: misc: remove __dev* attributes. 2013-01-03 15:57:16 -08:00
gpio driver-core: constify data for class_find_device() 2013-02-06 12:18:56 -08:00
gpu Merge 3.8-rc5 into driver-core-next 2013-01-25 21:06:30 -08:00
hid Drivers: misc: remove __dev* attributes. 2013-01-03 15:57:16 -08:00
hsi Drivers: misc: remove __dev* attributes. 2013-01-03 15:57:16 -08:00
hv Drivers: hv: balloon: Fix a memory leak 2013-01-17 11:58:00 -08:00
hwmon hwmon: (vexpress) Fix build error seen if CONFIG_OF_DEVICE is not set 2013-01-09 21:47:22 -08:00
hwspinlock
i2c Merge 3.8-rc5 into driver-core-next 2013-01-25 21:06:30 -08:00
ide drivers/ide: remove depends on CONFIG_EXPERIMENTAL 2013-01-11 11:38:05 -08:00
idle Merge 3.8-rc5 into driver-core-next 2013-01-25 21:06:30 -08:00
iio iio: Convert to devm_ioremap_resource() 2013-01-22 11:41:56 -08:00
infiniband Drivers: infinband: remove __dev* attributes. 2013-01-03 15:57:15 -08:00
input Input: Convert to devm_ioremap_resource() 2013-01-22 11:41:56 -08:00
iommu iommu: Convert to devm_ioremap_resource() 2013-01-25 12:21:46 -08:00
ipack
irqchip ARM: arm-soc: Device-tree updates, take 2 2012-12-14 14:42:53 -08:00
isdn driver-core: constify data for class_find_device() 2013-02-06 12:18:56 -08:00
leds drivers/leds: remove depends on CONFIG_EXPERIMENTAL 2013-01-21 14:52:44 -08:00
lguest drivers/lguest: remove depends on CONFIG_EXPERIMENTAL 2013-01-11 11:38:05 -08:00
macintosh drivers/macintosh: remove depends on CONFIG_EXPERIMENTAL 2013-01-21 14:52:44 -08:00
md Miscellaneous device-mapper fixes, cleanups and performance improvements. 2012-12-21 17:08:06 -08:00
media Merge 3.8-rc5 into driver-core-next 2013-01-25 21:06:30 -08:00
memory memory: Convert to devm_ioremap_resource() 2013-01-22 11:41:56 -08:00
memstick drivers/memstick: remove depends on CONFIG_EXPERIMENTAL 2013-01-21 14:52:44 -08:00
message Drivers: message: remove __dev* attributes. 2013-01-03 15:57:14 -08:00
mfd Merge 3.8-rc5 into driver-core-next 2013-01-25 21:06:30 -08:00
misc Merge 3.8-rc5 into driver-core-next 2013-01-25 21:06:30 -08:00
mmc Merge 3.8-rc5 into driver-core-next 2013-01-25 21:06:30 -08:00
mtd mtd: Convert to devm_ioremap_resource() 2013-01-25 12:21:47 -08:00
net driver-core: constify data for class_find_device() 2013-02-06 12:18:56 -08:00
nfc Drivers: misc: remove __dev* attributes. 2013-01-03 15:57:16 -08:00
nubus
of of: Fix export of of_find_matching_node_and_match() 2012-12-19 10:58:53 +00:00
oprofile
parisc Drivers: misc: remove __dev* attributes. 2013-01-03 15:57:16 -08:00
parport Drivers: parport: remove __dev* attributes. 2013-01-03 15:57:03 -08:00
pci PCI updates for v3.8: 2013-01-22 16:36:23 -08:00
pcmcia drivers/pcmcia: remove depends on CONFIG_EXPERIMENTAL 2013-01-11 11:38:41 -08:00
pinctrl pinctrl: Convert to devm_ioremap_resource() 2013-01-22 11:41:57 -08:00
platform drivers/platform/x86: remove depends on CONFIG_EXPERIMENTAL 2013-01-21 14:52:44 -08:00
pnp PNP: Handle IORESOURCE_BITS in resource allocation 2013-01-03 13:10:53 +01:00
power driver-core: constify data for class_find_device() 2013-02-06 12:18:56 -08:00
pps Drivers: misc: remove __dev* attributes. 2013-01-03 15:57:16 -08:00
ps3 Drivers: misc: remove __dev* attributes. 2013-01-03 15:57:16 -08:00
ptp
pwm pwm: Convert to devm_ioremap_resource() 2013-01-22 11:41:57 -08:00
rapidio
regulator Merge remote-tracking branch 'regulator/fix/s5m8767' into tmp 2013-01-15 09:38:59 +09:00
remoteproc drivers/remoteproc: remove depends on CONFIG_EXPERIMENTAL 2013-01-21 14:52:44 -08:00
rpmsg drivers/rpmsg: remove depends on CONFIG_EXPERIMENTAL 2013-01-11 11:39:03 -08:00
rtc driver-core: constify data for class_find_device() 2013-02-06 12:18:56 -08:00
s390 s390/chsc: fix SEI usage 2013-01-16 15:57:54 +01:00
sbus drivers/sbus/char: remove depends on CONFIG_EXPERIMENTAL 2013-01-11 11:39:03 -08:00
scsi driver-core: constify data for class_find_device() 2013-02-06 12:18:56 -08:00
sfi
sh sh: clkfwk: bugfix: sh_clk_div_enable() care sh_clk_div_set_rate() if div6 2013-01-11 20:57:58 +09:00
sn Drivers: misc: remove __dev* attributes. 2013-01-03 15:57:16 -08:00
spi driver-core: constify data for class_find_device() 2013-02-06 12:18:56 -08:00
ssb Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2013-01-08 07:31:49 -08:00
staging Merge 3.8-rc5 into driver-core-next 2013-01-25 21:06:30 -08:00
target iscsi-target: Fix CmdSN comparison (use cmd->cmd_sn instead of cmd->stat_sn) 2013-01-10 21:00:37 -08:00
tc
thermal thermal: Convert to devm_ioremap_resource() 2013-01-25 12:21:47 -08:00
tty TTY: mark tty_get_device call with the proper const values 2013-02-06 15:59:18 -08:00
uio
usb Merge 3.8-rc5 into driver-core-next 2013-01-25 21:06:30 -08:00
uwb driver-core: constify data for class_find_device() 2013-02-06 12:18:56 -08:00
vfio vfio-pci: Fix buffer overfill 2013-01-15 10:45:26 -07:00
vhost drivers/vhost: remove depends on CONFIG_EXPERIMENTAL 2013-01-21 14:52:45 -08:00
video backlight: fix class_find_device() arguments 2013-02-06 16:43:02 -08:00
virt Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc 2012-12-18 09:58:09 -08:00
virtio drivers/virtio: remove depends on CONFIG_EXPERIMENTAL 2013-01-11 11:39:04 -08:00
vlynq drivers/vlynq: remove depends on CONFIG_EXPERIMENTAL 2013-01-17 12:11:27 -08:00
vme
w1 w1: Convert to devm_ioremap_resource() 2013-01-22 11:41:58 -08:00
watchdog watchdog: Convert to devm_ioremap_resource() 2013-01-25 12:21:48 -08:00
xen Fixes: 2013-01-18 12:02:52 -08:00
zorro Drivers: zorro: remove CONFIG_HOTPLUG usage 2013-01-03 15:57:01 -08:00
Kconfig
Makefile