Resolving IRQ conflicts with 4.8

Charles Howse chowse at charter.net
Sat Nov 8 11:20:21 PST 2003


> The problem you describe is becoming common in the 4.x versions of
> FBSD.
> I have seen these solutions voiced previously in this list.
> 
> 1. Check the PC's bios, look for a toggle to disable plug-n-play
> function.
> 
> 2. Check that your PCI cards are not in the first or last PCI
> expansion
> slot on the motherboard.
> 
> 3 add   option   PCI_ENABLE_IO_MODES
> to your kernel source and recompile. See LINT
> 
> 4. add   device  puc
>          option  PUC_FASTINTR
> to your kernel source and recompile. See LINT
> 
> 5. Follow bug fix using this url
> http://www.freebsd.org/cgi/query-pr.cgi?pr=40636
> 
> 6. check /var/boot/dmesg.boot file to see if your pci cards are
> found
> as unknown. See FBSD FAQ for instructions on how to fix.
> 
> 
> Try one of the above one at a time until your problem goes away.
> 
> 
> 
> 
> 
> 
> 
> -----Original Message-----
> From: owner-freebsd-questions at freebsd.org
> [mailto:owner-freebsd-questions at freebsd.org]On Behalf Of Charles
> Howse
> Sent: Wednesday, November 05, 2003 10:27 AM
> To: freebsd-questions at freebsd.org
> Subject: Resolving IRQ conflicts with 4.8
> 
> Hi,
> If this post is considered off-topic, forgive me. Perhaps someone
> might be
> willing to work with me off-list?
> 
> I have 3 PCI devices using IRQ 9!
> The modem, nic and built-in sound card.
> I've physically removed the modem, because it was being detected
> before the
> nic, and I had no ability to network.
> 
> In BIOS, I have PnP OS set to "No".
> There is a setting to allow resources to be controlled manually, but
> this
> defaults to "Legacy ISA device".
> Since I have no ISA devices, this won't work.
> 
> I noticed from output of dmesg, that it does some probing for PnP
> devices:
> 
> Probing for PnP devices on ppbus0:
> ppbus0: <Hewlett-Packard HP LaserJet 1100.1.0> PRINTER MLC,PCL,PJL
> 
> What, if anything can I do so that I can have my nic, modem, and
> sound card
> detected during boot?
> --

Thanks for the reply, this is excellent information.
Moving the modem away from the last PCI slot allowed it to be detected.

I still have the on-board sound device listed as "unknown", so I have
jumped from your suggestion #2 to #6.
(Device listed as "unkown".)
I have not recompiled the kernel yet.

I have refered to the FBSD FAQ you referenced, and have an issue there.

Pnpinfo does not list any PnP devices, so I have to use pciconf -vl.
Here is it's output re the sound card:

none0 at pci0:18:0: class=0x040100 card=0x13711274 chip=0x13711274 rev-ox08
hdr=0x00
Vendor = 'Creative (was: Ensoniq)'
Device = 'ES1371, ES1373 Audio PCI'
Class = multimedia
Subclass = audio

(I've typed this from my notes, capitals and tabs may be incorrect.)

The FAQ says:

[snip]
Alternatively, if pnpinfo(8) does not list the card in question,
pciconf(8) can be used instead. This is part of the output from pciconf
-vl for an onboard sound chip:

# pciconf -vl
chip1 at pci0:31:5:        class=0x040100 card=0x00931028 chip=0x24158086
rev=0x02 hdr=0x00
    vendor   = 'Intel Corporation'
    device   = '82801AA 8xx Chipset AC'97 Audio Controller'
    class    = multimedia
    subclass = audio
Here, you would use the chip value, ``0x24158086''.

[snip]
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

My issue is:
Apparently, it is important to add the new listing in the correct place
in sio.c, as well as adding the ASCII Vendor ID String.
Since I had to get the device info from pciconf instead of pnpinfo, I
have no 7 character ASCII Vendor ID String (like RSS0250 in the listed
example above).
There is no example on how to format a new entry if you only have the
output from pciconf.
So...how should my new entry look and where should I place it in sio.c?






More information about the freebsd-questions mailing list