Hi all,
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:
#!/bin/sh
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:
acpi/drivers/ec
acpi/drivers/hardware_error_device
acpi/drivers/hpet
hid/drivers/a4tech
hid/drivers/belkin
hid/drivers/cherry
hid/drivers/chicony
hid/drivers/cypress
hid/drivers/dragonrise
hid/drivers/ezkey
hid/drivers/greenasia
hid/drivers/gyration
hid/drivers/kensington
hid/drivers/kye
hid/drivers/logitech
hid/drivers/microsoft
hid/drivers/monterey
hid/drivers/ortek
hid/drivers/pantherlord
hid/drivers/petalynx
hid/drivers/samsung
hid/drivers/smartjoyplus
hid/drivers/sony
hid/drivers/sunplus
hid/drivers/thrustmaster
hid/drivers/topseed
hid/drivers/twinhan
hid/drivers/zeroplus
i2c/drivers/dummy
mdio_bus/drivers/Generic PHY
pci/drivers/agpgart-sis
pci/drivers/agpgart-via
pci/drivers/ioapic
pci/drivers/ohci_hcd
pci/drivers/pci-stub
pci/drivers/serial
pci/drivers/tsi721
pci_express/drivers/aer
pci_express/drivers/pcie_pme
platform/drivers/dsa
platform/drivers/ucb1400_gpio
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?
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?
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,
even :)
--
Jean Delvare
Suse L3
--
To unsubscribe, e-mail: opensuse-kernel+unsubscribe(a)opensuse.org
To contact the owner, e-mail: opensuse-kernel+owner(a)opensuse.org