Skip site navigation (1)Skip section navigation (2)
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>