On 5/6/13 10:05 AM, Jean Delvare wrote:
I recently noticed that driver ucb1400_gpio was built into all openSUSE
kernels while most systems did not need it. Now that I fixed this
specific issue, I decided to check if there were other drivers like
that. I used the following script to test my running systems:
find /sys/bus -path "*/drivers/*/uevent" | sed -e
's/\/sys\/bus\/\(.*\)\/uevent$/\1/' | sort > /tmp/drivers
find /sys/bus -type l -path "*/drivers/*" | sed -e
's/\/sys\/bus\/\(.*\)\/[^/]*$/\1/' | sort -u > /tmp/drivers_with_devices
diff -u /tmp/drivers_with_devices /tmp/drivers | grep '^+[^+]' | cut -c 2-
OK, this is a somewhat crude heuristic but it seems to work. I ran this
script on 3 different machines running openSUSE 12.2 or 12.3, and took
the common results. This led me to the following driver list:
A ton of systems have this one.
I think this is used all over the place.
Not sure about this one. I think most built-in serial will use the
This is a rather long list, 41 drivers. While I am certain that there
are false positives, either common hardware which I just happen to not
have on any of my machines (most of pci and acpi), or drivers we may
need very early (pci/serial?), or pseudo-drivers which are in fact part
of their subsystem core (i2c/dummy, pci_express/aer, pcie_pme), it still
seems to me that many of these should be modularized, to make our kernel
smaller in size and faster to boot.
More than half of the drivers are HID drivers. They are only built-in in
4 kernel flavors: i386/desktop, x86_64/desktop, ppc/default and
ppc/vanilla. Jeff, Jiri, is this on purpose? If not, can I change all
these to modular?
No. Feel free to change non-keyboard drivers to modules, but keyboard
drivers should be builtins.
Then we have mdio_bus/Generic PHY (what a driver name
is that? <sigh>),
pci/tsi721 and platform/dsa left.
mdio_bus/Generic PHY is part of PHYLIB, I think we could build that as a
module? It was accidentally made a bool in kernel v3.2-rc1 but was
reverted to tristate in v3.2-rc5. Jeff, you made it build-in in commit
455827126, no objection to me making it a module again?
No objection. I suspect something changed in the Kconfig there.
pci/tsi721 is part of RapidIO. None of RapidIO support
being built as
modules. Which is a shame really, because I suspect most users don't
need that and it isn't small - 165 kB on x86-64. This needs to be
discussed with upstream.
And finally platform/dsa is already dealt with in Factory. By me,
Thanks for looking into this. Some of the builtins aren't on purpose,
but are relics of old Kconfigs that only offered bools. Others were
probably added as part of the boot speedup attempt years ago.