Date: Thu, 3 Jan 2002 20:20:26 -0500 From: "Joe & Fhe Barbish" <barbish@a1poweruser.com> To: "Simon Siemonsma" <s.siemonsma@hccnet.nl> Cc: "FBSD Questions" <questions@FreeBSD.ORG> Subject: RE: IRQ conflicts with Nic & Modem Message-ID: <LPBBIGIAAKKEOEJOLEGOEEDICLAA.barbish@a1poweruser.com> In-Reply-To: <200201032140.WAA27763@smtp.hccnet.nl>
next in thread | previous in thread | raw e-mail | index | archive | help
This is not a bios problem, I have tried it both ways and get the same results. The modem card irq 9 ends taking president over the Nic card's irq 9 and the Nic card probe fails during boot and I lose my LAN. My modem is brand new with controller and dsp onboard (IE not a winmodem.) I am following the FAQ instructions from www.freebsd.org/doc/en_US.ISO8859-1/books/faq/troubleshoot.html#PNP-NOT-FOUN D which I have included below. FAQ #4.26. Why is my PnP card no longer found (or found as unknown) since upgrading to FreeBSD 4.x? FreeBSD 4.x is now much more PnP-centric and this has had the side effect of some PnP devices (e.g. sound cards and internal modems) not working even though they worked under FreeBSD 3.x. The reasons for this behaviour are explained by the following e-mail, posted to the freebsd-questions mailing list by Peter Wemm, in answer to a question about an internal modem that was no longer found after an upgrade to FreeBSD 4.x (the comments in [] have been added to clarify the context. The PNP bios preconfigured it [the modem] and left it laying around in port space, so [in 3.x] the old-style ISA probes ``found'' it there. Under 4.0, the ISA code is much more PnP-centric. It was possible [in 3.x] for an ISA probe to find a ``stray'' device and then for the PNP device id to match and then fail due to resource conflicts. So, it disables the programmable cards first so this double probing cannot happen. It also means that it needs to know the PnP id's for supported PnP hardware. Making this more user tweakable is on the TODO list. To get the device working again requires finding its PnP id and adding it to the list that the ISA probes use to identify PnP devices. This is obtained using pnpinfo(8) to probe the device, for example this is the output from pnpinfo(8) for an internal modem: # pnpinfo Checking for Plug-n-Play devices... Card assigned CSN #1 Vendor ID PMC2430 (0x3024a341), Serial Number 0xffffffff PnP Version 1.0, Vendor Version 0 Device Description: Pace 56 Voice Internal Plug & Play Modem Logical Device ID: PMC2430 0x3024a341 #0 Device supports I/O Range Check TAG Start DF I/O Range 0x3f8 .. 0x3f8, alignment 0x8, len 0x8 [16-bit addr] IRQ: 4 - only one type (true/edge) [more TAG lines elided] TAG End DF End Tag Successfully got 31 resources, 1 logical fdevs -- card select # 0x0001 CSN PMC2430 (0x3024a341), Serial Number 0xffffffff Logical device #0 IO: 0x03e8 0x03e8 0x03e8 0x03e8 0x03e8 0x03e8 0x03e8 0x03e8 IRQ 5 0 DMA 4 0 IO range check 0x00 activate 0x01 The information you require is in the ``Vendor ID'' line at the start of the output. The hexadecimal number in parentheses (0x3024a341 in this example) is the PnP id and the string immediately before this (PMC2430) is a unique ASCII id. This information needs adding to the file /usr/src/sys/isa/sio.c. You should first make a backup of sio.c just in case things go wrong. You will also need it to make the patch to submit with your PR (you are going to submit a PR, are you not?) then edit sio.c and search for the line static struct isa_pnp_id sio_ids[] = { then scroll down to find the correct place to add the entry for your device. The entries look like this, and are sorted on the ASCII Vendor ID string which should be included in the comment to the right of the line of code along with all (if it will fit) or part of the Device Description from the output of pnpinfo(8): {0x0f804f3f, NULL}, /* OZO800f - Zoom 2812 (56k Modem) */ {0x39804f3f, NULL}, /* OZO8039 - Zoom 56k flex */ {0x3024a341, NULL}, /* PMC2430 - Pace 56 Voice Internal Modem */ {0x1000eb49, NULL}, /* ROK0010 - Rockwell ? */ {0x5002734a, NULL}, /* RSS0250 - 5614Jx3(G) Internal Modem */ Add the hexadecimal Vendor ID for your device in the correct place, save the file, rebuild your kernel, and reboot. Your device should now be found as an sio device as it was under FreeBSD 3.x END OF FAQ ############################################################################ ######## I did not have to edit the table in sio.c because it all ready contained a entry for vendor/dev number of my modem that the FAQ said I had to add. The pnpinfo command did not show any of my pci cards, the pnpconf -l command showed me my pci cards, but it's the same info I got from the verbose boot log messages. I commented out the sio2 and 3 in my kernel conf and compiled the kernel. This is what I found in my boot log with boot -v for verbose boot messages found-> vendor=0x11c1, dev=0x0480, revid=0x00 class=07-03-03, hdrtype=0x00, mfdev=0 subordinatebus=0 secondarybus=0 intpin=a, irq=9 map[10]: type 1, range 32, base e3001000, size 8 map[14]: type 1, range 32, base 0000dc00, size 8 map[18]: type 1, range 32, base 0000e000, size 8 map[1c]: type 1, range 32, base 0000e400, size 3 snip sio0: irq maps: 0x3 0x203 0x3 0x3 sio0: <ActionTec 56k FAX PCI Modem> port 0xe400-0xe407,0xe000-0xe0ff,0xdc00-0xdcff mem 0xe3001000-0xe30010ff irq 9 at device 18.0 on pci0 sio0: moving to sio2 sio2: type 16550A snip xl0: <3Com 3c980 Fast Etherlink XL> port 0xe800-0xe87f mem 0xe3000000-0xe300007f irq 9 at device 19.0 on pci0 xl0: couldn't map interrupt device_probe_and_attach: xl0 attach returned 6 I can use the command line command 'tip com3' and the internal pci modem answers to the AT commands I enter. So the Nic card works with out the modem card and the modem card works with out the Nic card. It sure looks to my as if FBSD can not reassign irq's when there is a conflict. During the PC hardware post I can see these two cards displayed as both using irq 9, but when I boot Windows98 from the other partition on the hard drive I go in and check these two devices, the Nic is on irq 9 and the modem has been moved to irq 5. The windows modem driver software must be doing the irq reassignment not the bios at post time. So I am back to the original question. Is there a way to reassign irq assignments before or during the boot process to correct hardware default irq assignments like the 3.x setserial command? Is there any other solution I am unaware of? How do I break this deadly embrace? Joe -----Original Message----- From: Simon Siemonsma [mailto:s.siemonsma@hccnet.nl] Sent: Thursday, January 03, 2002 5:46 PM To: Joe & Fhe Barbish Cc: freebsd-questions@freebsd.org Subject: Re: IRQ conflicts with Nic & Modem PnP support consists of two parts: Solving hardware conflicts Recognising the hardware FreeBSD can do the latter, but as you found out can't do the first. The solution is to tell the BIOS to do the first by setting PnP OS to no, or whatever your BIOS calls it. In case you also use Windows on your machine, this is no problem. I think this should be at a very prominent position for newbies, as more people run into this problem. Good luck Simon Siemonsma On Thursday 03 January 2002 21:35, you wrote: > My Nic card and my pci modem cards both want to use irq 9 > and the same base address. I checked the Nic configuration > program and it does not allow the IRQ to be changed. > The modem and Nic are both PNP but under FBSD they just > will not play nice. The Nic gets bypassed at boot time when > the modem card is installed and it's vendor/unit info id is > entered in the sio.c pci table so FBSD will know it as a > serial device. > I also have irq conflict between video card and sound card. > > Is there some way to tell FBSD which card is to use which irq? > > > To Unsubscribe: send mail to majordomo@FreeBSD.org > with "unsubscribe freebsd-questions" in the body of the message To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-questions" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?LPBBIGIAAKKEOEJOLEGOEEDICLAA.barbish>