Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium


PCI Resource Conflict

Posted on 2003-02-19
Medium Priority
Last Modified: 2010-04-20
Hi Folks --

I have a PowerMac 6500 that was running Debian with a 2.2.20 kernel.  I recently upgraded to 2.4.20-ben5, which is the only 2.4 kernel I could get to compile and (mostly) work.  I have two ethernet cards in this machine, an Apple card with the DEC 21041-PA chipset and a D-Link DFE-530TX+ based on the RealTek 8139 chipset.  The first uses the Tulip driver and the second rtl8139.  Both of these cards worked fine under 2.2.20, but under 2.4.20-ben5 neither one of them works.  Calling ifup on either of them produces a SIOCSIFADDR: No such device error.

I checked out dmesg which had the following lines:

PCI:00:0d.0: Resource 0: 00000400-000004ff (f=101), vd: 1186, dev: 1300
... (other similar lines)
PCI:00:12.0: Resource 1: 00000400-000004ff (f=101) vd: 1002, dev: 4754
resource conflict with: 400..4ff (101), name: D-Link System Inc, RTL8139 Ethernet
PCI: Cannot allocate resource region 1 of device 00:12.0
PCI:  parent is c0329030:00000000-007fffff (f=100)

It certainly seems like there's a PCI conflict here, but I'm new to the world of buses and other lower-level hardware stuff.  Are the two ethernet cards trying to get the same resource region, and thus neither one of them works?  If so, how do I fix this?  If not, what then?

Thanks very much for the help.
Question by:dlitter1

Expert Comment

ID: 7985373
I've only ever done this in Debian on a PC, so I may be way off here, but hopefully this will help you head in the right direction.

Assuming the drivers for these network cards are compiled as modules for the kernel, you should be able to edit /etc/modules and solve the problem. Look for (or add if necessary) the line that says "tulip" and add "options io=0x240 irq=10" (or whatever io and irq you want it to use for that card). Next go to the line for rtl8139 and do the same, except change the io and irq options to be something different. You will also want to make sure that the io and irq you assign are not going to conflict with anything else on your computer. "less /proc/interrupts" and "less /proc/ioports" is a handy way of checking this.

If that doesn't work, be sure to report back and we'll try to help some more.

Author Comment

ID: 7987585
Thanks for the comment, but I'm afraid the drivers are compiled directly into the kernel, not as modules.  Can I pass the options you mentioned in as kernel arguments at boot time?  Or is there some other config file that I can modify?

Accepted Solution

Debian_user earned 200 total points
ID: 7988827
According to the Boot-prompt howto (http://www.tldp.org/HOWTO/BootPrompt-HOWTO.html#toc11), and the Ethernet howto (http://www.tldp.org/HOWTO/Ethernet-HOWTO-9.html#ss9.1), it looks like you should be able to pass the following arguments to the kernel at boot time using lilo.


(Following is quoted from the Ethernet howto)

IRQ: Obvious. An IRQ value of `0' (usually the default) means to autoIRQ. It's a historical accident that the IRQ setting is first rather than the base_addr -- this will be fixed whenever something else changes.

BASE_ADDR: Also obvious. A value of `0' (usually the default) means to probe a card-type-specific address list for an ethercard.

PARAM_1: It was orginally used as an override value for the memory start for a shared-memory ethercard, like the WD80*3. Some drivers use the low four bits of this value to set the debug message level. 0 -- default, 1-7 -- level 1..7, (7 is maximum verbosity) 8 -- level 0 (no messages). Also, the LANCE driver uses the low four bits of this value to select the DMA channel. Otherwise it uses auto-DMA.

PARAM_2: The 3c503 driver uses this to select between the internal and external transceivers. 0 -- default/internal, 1 -- AUI external. The Cabletron E21XX card also uses the low 4 bits of PARAM_2 to select the output media. Otherwise it detects automatically.

NAME: Selects the network device the values refer to. The standard kernel uses the names `eth0', `eth1', `eth2' and `eth3' for bus-attached ethercards.

(End quote.

You probably won't need param_1 or param_2, and "name". Irq and io would obviously be changed to the appropriate values, and name would be changed to "eth0" or "eth1". To specify the values for both cards, add a second line, using the same "ether" option, just using different irq, io and name values.

These options can be tested from the command line while booting, and then added to /etc/lilo.conf once you find the appropriate values.

Your lines for lilo.conf would probably end up looking something like the following:


Let us know if you have any more problems.

What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.


Expert Comment

ID: 7988838

You probably won't need param_1 or param_2. You will need the name value to differentiate between the two cards.


Author Comment

ID: 7988937
Thanks for the quick reply!  I'm using BootX instead of lilo (OldWord PowerMac), but I imagine it will still work.  I'll try it when I get home from work today and let you know.


Expert Comment

ID: 9087940
This old question needs to be finalized -- accept an answer, split points, or get a refund.  For information on your options, please click here-> http:/help/closing.jsp#1 
Post your closing recommendations!  No comment means you don't care.
LVL 12

Expert Comment

ID: 9259337
No comment has been added lately, so it's time to clean up this TA.
I will leave a recommendation in the Cleanup topic area that this question is to:

Accept Debian_user's Comments as answer

Please leave any comments here within the next seven days.


EE Cleanup Volunteer

Featured Post

Get expert help—faster!

Need expert help—fast? Use the Help Bell for personalized assistance getting answers to your important questions.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

SSH (Secure Shell) - Tips and Tricks As you all know SSH(Secure Shell) is a network protocol, which we use to access/transfer files securely between two networked devices. SSH was actually designed as a replacement for insecure protocols that sen…
Google Drive is extremely cheap offsite storage, and it's even possible to get extra storage for free for two years.  You can use the free account 15GB, and if you have an Android device..when you install Google Drive for the first time it will give…
Learn how to get help with Linux/Unix bash shell commands. Use help to read help documents for built in bash shell commands.: Use man to interface with the online reference manuals for shell commands.: Use man to search man pages for unknown command…
Learn how to navigate the file tree with the shell. Use pwd to print the current working directory: Use ls to list a directory's contents: Use cd to change to a new directory: Use wildcards instead of typing out long directory names: Use ../ to move…
Suggested Courses
Course of the Month12 days, 10 hours left to enroll

579 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question