remarkable-linux/drivers
Arjan van de Ven 6cd4958609 device model: Do a quickcheck for driver binding before doing an expensive check
This patch adds a quick check for the driver<->device match before
taking the locks and doin gthe expensive checks. Taking the lock hurts
in asynchronous boot context where the device lock gets hit; one of the
init functions takes the lock and goes to do an expensive hardware init;
the other init functions walk the same PCI list and get stuck on the
lock as a result.

For the common case, we can know there's no chance whatsoever of a match
if the device isn't in the drivers ID table... so this patch does that
check as a best-effort-avoid-the-lock approach.

Bootcharts for before and after can be seen at
http://www.fenrus.org/before.svg
http://www.fenrus.org/after.svg

Note the long time "agp_ali_init" takes in the first graph; my laptop
doesn't even have an ALI chip in it!  (the bootgraphs look a bit
dissimilar, but that's the point, the first one has a bunch of arbitrary
delays in it that cause it to look very different)

This reduces my kernel boot time by about 20%

Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
Cc: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2008-10-16 09:24:50 -07:00
..
accessibility
acpi rtc-cmos: move wake setup from ACPI glue into RTC driver 2008-10-14 16:08:21 -07:00
amba
ata Merge commit 'origin' 2008-10-15 11:31:54 +11:00
atm Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/torvalds/linux-2.6 2008-10-11 12:39:35 -07:00
auxdisplay
base device model: Do a quickcheck for driver binding before doing an expensive check 2008-10-16 09:24:50 -07:00
block device create: block: convert device_create_drvdata to device_create 2008-10-16 09:24:41 -07:00
bluetooth Merge git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia-2.6 2008-10-13 14:12:40 -07:00
cdrom
char device create: char: convert device_create_drvdata to device_create 2008-10-16 09:24:42 -07:00
clocksource
connector
cpufreq
cpuidle
crypto
dca device create: misc: convert device_create_drvdata to device_create 2008-10-16 09:24:43 -07:00
dio
dma
edac
eisa
firewire
firmware drivers/firmware/iscsi_ibft.c: make 3 functions static 2008-10-16 09:24:48 -07:00
gpio
gpu
hid device create: misc: convert device_create_drvdata to device_create 2008-10-16 09:24:43 -07:00
hwmon device create: misc: convert device_create_drvdata to device_create 2008-10-16 09:24:43 -07:00
i2c device create: misc: convert device_create_drvdata to device_create 2008-10-16 09:24:43 -07:00
ide device create: ide: convert device_create_drvdata to device_create 2008-10-16 09:24:45 -07:00
ieee1394 device create: ieee1394: convert device_create_drvdata to device_create 2008-10-16 09:24:42 -07:00
infiniband device create: infiniband: convert device_create_drvdata to device_create 2008-10-16 09:24:42 -07:00
input Merge commit 'origin' 2008-10-15 11:31:54 +11:00
isdn device create: misc: convert device_create_drvdata to device_create 2008-10-16 09:24:43 -07:00
leds device create: misc: convert device_create_drvdata to device_create 2008-10-16 09:24:43 -07:00
lguest
macintosh device create: misc: convert device_create_drvdata to device_create 2008-10-16 09:24:43 -07:00
mca
md raid, fastboot: hide RAID autodetect option if MD is compiled as a module 2008-10-12 08:25:14 -07:00
media device create: misc: convert device_create_drvdata to device_create 2008-10-16 09:24:43 -07:00
memstick
message
mfd mfd: Fix warning in WM8350 2008-10-13 21:51:57 +01:00
misc device create: misc: convert device_create_drvdata to device_create 2008-10-16 09:24:43 -07:00
mmc Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 2008-10-13 17:13:56 +01:00
mtd device create: misc: convert device_create_drvdata to device_create 2008-10-16 09:24:43 -07:00
net device create: net: convert device_create_drvdata to device_create 2008-10-16 09:24:43 -07:00
nubus
of Merge commit 'gcl/gcl-next' 2008-10-14 10:11:27 +11:00
oprofile Merge branch 'linus' into oprofile-v2 2008-10-13 11:05:51 +02:00
parisc
parport Merge git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia-2.6 2008-10-13 14:12:40 -07:00
pci Merge commit 'origin' 2008-10-15 11:31:54 +11:00
pcmcia Merge git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia-2.6 2008-10-13 14:12:40 -07:00
pnp Merge commit 'origin' 2008-10-15 11:31:54 +11:00
power device create: misc: convert device_create_drvdata to device_create 2008-10-16 09:24:43 -07:00
ps3
rapidio
regulator da903x: add regulator support for DA9030/DA9034 2008-10-13 21:51:57 +01:00
rtc RTC: M48T35: new RTC driver 2008-10-15 12:46:51 +01:00
s390 device create: s390: convert device_create_drvdata to device_create 2008-10-16 09:24:44 -07:00
sbus
scsi device create: scsi: convert device_create_drvdata to device_create 2008-10-16 09:24:44 -07:00
serial Merge commit 'origin' 2008-10-15 11:31:54 +11:00
sh
sn
spi device create: misc: convert device_create_drvdata to device_create 2008-10-16 09:24:43 -07:00
ssb Merge git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia-2.6 2008-10-13 14:12:40 -07:00
tc
telephony
thermal
uio device create: misc: convert device_create_drvdata to device_create 2008-10-16 09:24:43 -07:00
usb usb gadget: link fixes for network gadget 2008-10-16 09:24:47 -07:00
video device create: video: convert device_create_drvdata to device_create 2008-10-16 09:24:45 -07:00
virtio
w1
watchdog Merge git://git.kernel.org/pub/scm/linux/kernel/git/wim/linux-2.6-watchdog 2008-10-12 11:51:32 -07:00
xen
zorro
Kconfig
Makefile