Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 131579 - pci.agent does not list all drivers
Summary: pci.agent does not list all drivers
Status: VERIFIED NEEDINFO
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: x86 Linux
: High major (vote)
Assignee: Greg Kroah-Hartman (RETIRED)
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2006-04-28 08:38 UTC by D.Allain
Modified: 2006-05-03 01:53 UTC (History)
1 user (show)

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description D.Allain 2006-04-28 08:38:06 UTC
CONTEXT :

These are the relevant e-builds version :
- sys-apps/hotplug-20040923-r2
- sys-apps/coldplug-20040920

`emerge --info' says :
Portage 2.0.54 (default-linux/x86/2005.1, gcc-3.3.5-20050130, glibc-2.3.4.20041102-r1, 2.6.16-gentoo-r3 i686)
(etc...)


BUG :

(./ is /etc/hotplug/)
The call stack is (, <file>:<line number>:<line extract>) :
- ./pci.agent:141:load_drivers
- ./hotplug.functions:113:pci_map_modules
- ./pci.agent:123:break

The "break" statement disables loading more than one driver for one PCI device.

(./ is /lib/modules/2.6.16-gentoo-r3/)
However, there can be more than one driver listed in ./modules.pcimap for one particular device and the one listed first is not always the right one.


EXAMPLE :

On a Toshiba L20 laptop, `lspci' says :
(...)
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev d4)
(...)
06:02.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)
(etc...)
and `egrep "(^#)|0x000010ec 0x00008139 0xffffffff" ./modules.pcimap' says :
# pci module         vendor     device     subvendor  subdevice  class      class_mask driver_data
8139cp               0x000010ec 0x00008139 0xffffffff 0xffffffff 0x00000000 0x00000000 0x0
8139too              0x000010ec 0x00008139 0xffffffff 0xffffffff 0x00000000 0x00000000 0x0

(./ is /sys/devices/pci0000:00/0000:00:1e.0/0000:06:02.0/)
This means 2 modules, 8139cp AND 8139too for the ethernet card. However, in this case, 8139cp does not work and 8139too does. When I `modprobe 8139cp', I see nothing added in /sys/class/net/ and `/etc/init.d/net.eth0 start' fails because "eth0 does not exist" but when I `modprobe 8139too' it works as `ls -l ./{driver,net*}' shows :
./driver -> ../../../../bus/pci/drivers/8139too
./net:eth0 -> ../../../../class/net/eth0


SOLUTION :

Commenting out the "break" statement l.123 in /etc/hotplug/pci.agent (one may also change "one" by "all" l.78,86) enabled be to send this bug report from a Toshiba L20 laptop.

If you google for "eth0 does not exist", you will see that the issue is fairly common.
Comment 1 Greg Kroah-Hartman (RETIRED) gentoo-dev 2006-04-28 17:59:14 UTC
Are you also using udev?  If so, can you try the 090 release?  That should
solve this issue, as it does the module loading now (in a way, it really
just lets 'modprobe' do it) and the hotplug scripts do not handle it
anymore, as they are being phased out.
Comment 2 D.Allain 2006-05-02 10:38:24 UTC
> Are you also using udev?
Yes

> If so, can you try the 090 release?
I did :
 emerge -C sys-apps/coldplug
 emerge =sys-fs/udev-090
 etc-update
 rc-update del coldplug
and I can still send replies to bug comments with my laptop :-)
Comment 3 Greg Kroah-Hartman (RETIRED) gentoo-dev 2006-05-02 16:24:58 UTC
So this works now?
Comment 4 D.Allain 2006-05-03 01:53:57 UTC
yes