Recently, I got a DSL internet connection (love it!). This, however, used up the ethernet card
I'd previously used for communicating with a Windows NT PC(sorry about that! it's from work).
Since I still wanted LAN communications between these machines (dialing the NT machine into the internet
so it could communicate with the Linux box via it's DSL connection was a little too baroque), I went
out and bought another Ethernet card, selecting the cheapest thing I could find that claimed Linux
compatibiity. This was a Linksys Ether16, which is an ISA card.
It being ISA, the plug and play, auto-detect stuff doesn't work the same. In fact the doc that came with the
card stated that it should be turned off, then the DOS setup utility used to assign IRQs and IO ports
to the card. So I did so, but couldn't get the new card to work. Then I entered the IRQs and IO ports into
/etc/conf.modules, as in:
alias eth1 ne
options ne io=240 irq=10
and issued modprobe ne, as the doc indicated that the ne2000 driver was to be used.
I first recieved messages about not being able to find the card at "0x0f0"; some quick arithmetic
revealed the 240 decimal = 0f0 hex - the conf.modules doesn't default to hex. So I changed this to:
alias eth1 ne
options ne io=0x240 irq=0x0a
But still recieved complaints that IRQ 10 wasn't active at IO port 10. At this point I decided I probably
had a conflict of IRQ assignments, so I did the only thing I knew to do to determine what IRQs
everything was using: rebooted into (dare I say it?) Windows 98 and used My Computer->Properties->Device Manager
to read the IRQs and laboriously wrote them all down. This yielded the fact that IRQ 9 was not in use,
so I changed the relevent lines in /etc/conf.modules to:
alias eth1 ne
options ne io=0x240 irq=9
At this point, I was able to reboot (having already used linuxconf to setup /etc/sysconfig/network-scripts/ifcfg-eth1 to read:
DEVICE="eth1"
IPADDR="172.22.200.201"
NETMASK="255.255.255.0"
ONBOOT="yes"
BOOTPROTO="none"
IPXNETNUM_802_2=""
IPXPRIMARY_802_2="no"
IPXACTIVE_802_2="no"
IPXNETNUM_802_3=""
IPXPRIMARY_802_3="no"
IPXACTIVE_802_3="no"
IPXNETNUM_ETHERII=""
IPXPRIMARY_ETHERII="no"
IPXACTIVE_ETHERII="no"
IPXNETNUM_SNAP=""
IPXPRIMARY_SNAP="no"
IPXACTIVE_SNAP="no"
# BOOTPROTO="dhcp"
)
(What's the point?) The point is...
Anyhow, the point of all this is that I used Windows 98 to find a free IRQ, but this wasn't necessary.
In using www.deja.com to search Linux newsgroups about a different subject (why my 3C905B won't reliably
use DHCP to get my IP address, default router, etc., from my DSL modem [for which there is a patch,
by the way]), I found a post by Donald Becker,
who wrote the drivers for this card, which pointed me toward the following.
The /proc directory and it's subdirectories provide a wealth of information about the system. Specifically,
issuing cat /proc/interrupts reveals the following:
CPU0
0: 56238279 XT-PIC timer
1: 65592 XT-PIC keyboard
2: 0 XT-PIC cascade
5: 1542 XT-PIC soundblaster
8: 2 XT-PIC rtc
9: 98434 XT-PIC NE2000
10: 228717 XT-PIC eth0
12: 1821615 XT-PIC PS/2 Mouse
13: 1 XT-PIC fpu
14: 2424024 XT-PIC ide0
15: 498557 XT-PIC ide1
NMI: 0
Similarly, issuing cat /proc/ioports yields:
0000-001f : dma1
0020-003f : pic1
0040-005f : timer
0060-006f : keyboard
0070-007f : rtc
0080-008f : dma page reg
00a0-00bf : pic2
00c0-00df : dma2
00f0-00ff : fpu
0170-0177 : ide1
01f0-01f7 : ide0
020b-020b : PnP read port
0220-022f : soundblaster
0240-025f : NE2000
02f8-02ff : serial(auto)
0330-0333 : MPU-401 UART
0376-0376 : ide1
0388-038b : OPL3/OPL2
03c0-03df : vga+
03f6-03f6 : ide0
03f8-03ff : serial(auto)
e800-e83f : eth0
f000-f007 : ide0
f008-f00f : ide1
However, this isn't the entire story, as there are some PCI devices which don't emerge. These are
shown using cat /proc/pci, which yields:
PCI devices found:
Bus 0, device 0, function 0:
Host bridge: Intel 440LX - 82443LX PAC Host (rev 3).
Medium devsel. Fast back-to-back capable. Master Capable. Latency=64.
Prefetchable 32 bit memory at 0xe0000000 [0xe0000008].
Bus 0, device 1, function 0:
PCI bridge: Intel 440LX - 82443LX PAC AGP (rev 3).
Medium devsel. Fast back-to-back capable. Master Capable. Latency=64. Min Gnt=2.
Bus 0, device 7, function 0:
ISA bridge: Intel 82371AB PIIX4 ISA (rev 2).
Medium devsel. Fast back-to-back capable. Master Capable. No bursts.
Bus 0, device 7, function 1:
IDE interface: Intel 82371AB PIIX4 IDE (rev 1).
Medium devsel. Fast back-to-back capable. Master Capable. Latency=64.
I/O at 0xf000 [0xf001].
Bus 0, device 7, function 2:
USB Controller: Intel 82371AB PIIX4 USB (rev 1).
Medium devsel. Fast back-to-back capable. IRQ 11. Master Capable. Latency=64.
I/O at 0xe000 [0xe001].
Bus 0, device 7, function 3:
Bridge: Intel 82371AB PIIX4 ACPI (rev 2).
Medium devsel. Fast back-to-back capable.
Bus 0, device 9, function 0:
VGA compatible controller: ATI Mach64 GP (Rage Pro) (rev 92).
Medium devsel. Fast back-to-back capable. IRQ 10. Master Capable. Latency=64. Min Gnt=8.
Prefetchable 32 bit memory at 0xe4000000 [0xe4000008].
I/O at 0xe400 [0xe401].
Non-prefetchable 32 bit memory at 0xe7000000 [0xe7000000].
Bus 0, device 11, function 0:
Ethernet controller: 3Com 3C900 10bTPO (rev 0).
Medium devsel. IRQ 10. Master Capable. Latency=64. Min Gnt=3.Max Lat=8.
I/O at 0xe800 [0xe801].
Bus 0, device 13, function 0:
Communication controller: Motorola Unknown device (rev 0).
Vendor id=1057. Device id=5600.
Medium devsel. Fast back-to-back capable. IRQ 10. Master Capable. Latency=64. Min Gnt=1.Max Lat=255.
Prefetchable 32 bit memory at 0xe7001000 [0xe7001008].
This yields some additional information on IRQs not given in the previous displays.
NOTE: Don't be fooled by the 0 byte filesize of files in /proc and it's sub-directories,
the information is often there if you cat the files.