SlackwareThis Forum is for the discussion of Slackware Linux.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
I have a system running Slackware 12.1. It has an onboard Nvidia Ethernet port, and 2 4-port NIC cards. With the stock huge-smp kernel it all boots fine and all ports come up fine.
I recently re-compiled the kernel to fix another issue, but with the new kernel the onboard NIC does not come up. I used the same .config that ships with the huge-smp and only modifed one thing, but the NIC still doesnt work.
lspci shows:
Code:
00:14.0 Bridge: nVidia Corporation MCP51 Ethernet Controller (rev a1)
Subsystem: ASUSTeK Computer Inc. A8N-VM CSM Mainboard
Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Interrupt: pin A routed to IRQ 16
Region 0: Memory at febd7000 (32-bit, non-prefetchable) [size=4K]
Region 1: I/O ports at d080 [size=8]
Capabilities: [44] Power Management version 2
Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot+,D3cold+)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-
Kernel modules: forcedeth
I tried compiling forcedeth into the kernel, but still does not work. I get these messages in dmesg:
Code:
forcedeth: Reverse Engineered nForce ethernet driver. Version 0.61.
forcedeth 0000:00:14.0: open: Could not find a valid PHY.
forcedeth: probe of 0000:00:14.0 failed with error -12
After the forcedeth fails, the 4-port NICs come up initially as eth0-eth7, but then udev renames the ports as eth1-eth8. It almost seems as if the system knows that the port is there, and leaves a space for it, but it will not come up.
I don't remember why but when I first started playing with this motherboard I had to add the following to /etc/modprobe.d/aliases:
alias eth0 forcedeth # on-board NIC in M2NPV-VM
Of course, lsmod should show the forcedeth module loaded.
Side note: I'm no kernel guru, but I've been compiling my own kernels for a few years. I have noticed that modifying "only one parameter" often means more than that one parameter gets changed. There are built-in checks that modify various parameters based upon the selections made.
Perform a diff between your config file and the stock huge smp config file. I won't predict what you'll find but I won't be surprised if you discover more than the one modification you made.
Your comment about differences got me thinking. I have been compiling over and over, and I might have not gotten the right starting point. I diff'd both my config and the stock config, and there were a bunch of differences. So then I started over from the original again made 4 changes. I changed the HIMEM from 4G to 64G, and I made ext3 built-in, as well as the ethernet Sundance and Forcedeth modules built-in. I recompiled the kernel, and booted. It still does not load the onboard NIC, but now the error is different.
Code:
forcedeth: Reverse Engineered nForce ethernet driver. Version 0.61.
forcedeth 0000:00:14.0: Couldn't find register window
forcedeth: probe of 0000:00:14.0 failed with error -22
I'm starting to think that maybe the config file that comes on the DVD is not exactly the same as the kernel that loads???
It has an onboard Nvidia Ethernet port, and 2 4-port NIC cards. With the stock huge-smp kernel it all boots fine and all ports come up fine.
When I troubleshoot I like to start at the beginning with the basic question, "OK, what did I do?"
Consider temporarily returning to the huge-smp kernel. Record some basic config outputs, such as ifconfig -a, lsmod, lspci, grep forcedeth /var/log/dmesg, etc. That will help establish a baseline of information.
After establishing some baseline info, consider removing the NICs so only the on-board NIC remains. Boot with huge-smp and again record some baseline info. Ensure the system boots okay and finds the on-board NIC. Thereafter compile a new kernel with only one change, such as 64G support. Repeat.
I like keefaz's suggestion about loading forcedeth as a module. I'd suggest not building in the Sundance modules either. Just one change at a time.
When I first started compiling kernels I learned to modify only one or two parameters with each pass, and then test the box with the modifications. Requires patience because several modifications can take hours or days when including the testing. I also maintain archived copies of each configuration file attempt. If there are subsequent problems I can diff and study the config files.
Consider temporarily returning to the huge-smp kernel. Record some basic config outputs, such as ifconfig -a, lsmod, lspci, grep forcedeth /var/log/dmesg, etc. That will help establish a baseline of information.
You might also consider getting an initrd.gz and starting generic kernel to see what modules are loaded. I wonder if that could also be done simply by booting disk1?
There is a PHY section when configuring kernel compile but I've not had to select any of these for my hardware and builds.
Just out of curiosity, why do you need 9 net ports in a single PC?
With both the Sundance and Forcedeth as built-in, the add-on (Sundance) cards worked, but the built-in (Forcedeth) didn't work.
I tried going back to using both the NICs as modules. When I did that, the onboard NIC worked, but then the add-on didn't work...
I then tried the Forcedeth as a module, but Sundance as built-in, and still the add-on cards didnt get seen.
Dmesg shows the following:
Code:
sundance: Unknown symbol mii_link_ok
sundance: Unknown symbol mii_nway_restart
sundance: Unknown symbol generic_mii_ioctl
sundance: Unknown symbol mii_ethtool_gset
sundance: Unknown symbol mii_ethtool_sset
sundance: Unknown symbol mii_link_ok
sundance: Unknown symbol mii_nway_restart
sundance: Unknown symbol generic_mii_ioctl
sundance: Unknown symbol mii_ethtool_gset
sundance: Unknown symbol mii_ethtool_sset
I've re-compiled this so many times, that I think I might just try re-installing Slack again and try over.
And the reason why I have 9 ports, is that I do testing for network switches, and this is a VMware server. I use the ports to have multiple VMs connecting to different ports across different switches.
I don't know what MII is but those unknown symbols are related to it obviously. Under "network Device Support" there is the "PHY Device support and infrastructure" section, explained as
Quote:
Ethernet controllers are usually attached to PHY devices. This option provides infrastructure for managing PHY devices.
In that section, the driver list is named "MII PHY device drivers". Maybe it's relevant.
Did you make modules_install each time you recompiled ?
Also copied both System.map and bzImage in /boot, each time ?
From what I've read about System.map, it isn't used for anything other than debugging kernel crashes.
I didn't rebuild the modules, because I didnt figure that I needed to. If I make a kernel using the stock config from the DVD, I get a kernel that is the exact same size as the hugesmp that is installed. That default kernel loads both the onboard and the add-on NICs as kernel modules, and they all come up fine.
If I edit the config and make 1 change, which is enabling 64G RAM support (which actually makes 3 changes to the .config, all relating to memory) and build that kernel, thats where I have the problems with the built-in NIC not working. Do I need to rebuild the modules when I am not making any changes to anything that has to do with modules?
Regarding the aliases, my Slackware 12.1 installation does not have an aliases file in /etc/modprobe.d
I guess all this is moot now, because I gave up on trying to recompile the Slack kernel. I installed Ubuntu server x64 and it came up fine, saw all the memory, and all the NICs right away. VMware Server 2.0 installed fine, and I'm up and running.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.