Click to See Complete Forum and Search --> : Setserial won't set IRQ 9
bines
05-24-2004, 04:22 AM
I'm trying to set up an internal modem.
cat /proc/pci shows the modem is on IRQ 9
I try to set the device using setserial but it will NOT let me set IRQ to 9 - it accepts it without error but sets it to IRQ 2 instead.
I have tried (as an experiment) to set all IRQ's from 0 to 15 and they all set OK EXCEPT 9 !!!!!!!!
Is there a bug in setserial?
Is there something special about IRQ 9 that I don't realise?
How am I ever going to set up my modem when I can't even set the IRQ?
Any ideas would be much appreciated
(Using Red Hat Fedora Core)
banzaikai
05-24-2004, 08:01 AM
Confusing, isn't it?
You probably have the 8259 PIC chips on the mobo. Originally, the PC was designed with 8 IRQs (0-7), but when the AT series came out, they had doubled to 16 (0-15). Now, they did this by cheating - the second 8259 was "cascaded" to the first. So, any IRQ above 7 triggers 8259#2, which then sends an IRQ to 8259#1, which then passes the info along to the cpu.
You've most likely guessed by now which IRQ line on the 8259#1 they used: IRQ2.
In most PC manuals, they'll actually list the line as "IRQ2/9 cascade".
Modern APICs handle things normally, which is why some kernels need to have the apic option, otherwise they cascade things when they shouldn't.
BTW, does the modem work from IRQ2?
banzai "polled interrupts" kai
bines
05-24-2004, 03:03 PM
Thanks banzaikai for the information - I didn't know that and you explained it so well.
I don't know how (or if) I can change the COM port to which the internal modem is connected. COM1 and COM2 are dedicated to the two serial ports (which I use for other things). I always thought the BIOS allocated the internal modem to the next available port so I don't have a choice.
Incidentally I have used an external modem connected to COM 1 which works fine, I just want to get an internal modem going. It works fine on Windows where it has IRQ 18!!!
Surely many Linux users have internal modems on MoBo's that also have two serial ports - so how do they do it? I wonder why my Linux kernel (or is it the BIOS) allocates IRQ9. Is there something missing from my kernel I wonder - how do I check? (sorry if these questions are a bit basic but I am a newbie at Linux - just trying to get a system going for interest).
bwkaz
05-24-2004, 09:11 PM
Originally posted by bines
It works fine on Windows where it has IRQ 18!!! So you definitely have an IO-APIC on your processor or motherboard (I'm not positive which component the IO-APIC is housed on).
The problem is likely that Linux just isn't using it. Did you compile your own kernel? If so, did you enable APIC and "IO-APIC on uniprocessors" support? You have to not boot with "noapic" to get that support, though.
When you do get IO-APIC support up, /proc/interrupts will change most IRQs from XT-PIC to IO-APIC-edge or IO-ACPI-level (IO-APIC-level is easier to share between devices). Actually on kernel 2.6.6, my KT400 motherboard and Athlon XP2500 CPU don't have any XT-PIC IRQs left, they're all IO-APIC-something.
Anyway, if you're still using a distro kernel, make sure you're not booting with "noapic". You might also need ACPI support, but I'm not sure on that one.
justlinux.com
Copyright 2007 Jupitermedia Corporation All Rights Reserved.