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
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions

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.

Get proactive database performance tuning online

At Percona’s web store you can order full Percona Database Performance Audit in minutes. Find out the health of your database, and how to improve it. Pay online with a credit card. Improve your database performance now!


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

Secure Your WordPress Site: 5 Essential Approaches

WordPress is the web's most popular CMS, but its dominance also makes it a target for attackers. Our eBook will show you how to:

Prevent costly exploits of core and plugin vulnerabilities
Repel automated attacks
Lock down your dashboard, secure your code, and protect your users

Question has a verified solution.

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

If you have a server on collocation with the super-fast CPU, that doesn't mean that you get it running at full power. Here is a preamble. When doing inventory of Linux servers, that I'm administering, I've found that some of them are running on l…
Little introduction about CP: CP is a command on linux that use to copy files and folder from one location to another location. Example usage of CP as follow: cp /myfoder /pathto/destination/folder/ cp abc.tar.gz /pathto/destination/folder/ab…
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…
Get a first impression of how PRTG looks and learn how it works.   This video is a short introduction to PRTG, as an initial overview or as a quick start for new PRTG users.
Suggested Courses
Course of the Month10 days, 8 hours left to enroll

765 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