Mark Knecht wrote: > > .... IRQ redirection table: > > NR Log Phy Mask Trig IRR Pol Stat Dest Deli Vect: > > 00 000 00 1 0 0 0 0 0 0 00 > <SNIP> > > 15 003 03 1 1 0 1 0 1 1 D9 > > 16 003 03 1 1 0 1 0 1 1 E1 > > 17 003 03 1 1 0 1 0 1 1 C9 > > Yes, E1 is the highest in this table. > > > So, interrupt 22 (0x16) has the highest priority (vector 0xE1), > > followed by interrupts 21 and 20, etc. (On the P4P800, these > > interrupts are assigned to the onboard 3C940 and PCI slots 5 and 4, > > respectively.) > > This is what bothers me about this explanation. (Not yours, just the whole > thing overall.) If your Ethernet adapter has the highest priority, then it's > ahead of the keyboard, it's ahead of the system timer and the RTC. How can > the PC even work correctly if this is the case? (Please see section below on > IRQ's <15) Time would be drifting around, ... Lower-priority interrupts don't automatically get suppressed, or much delayed. The priority is simply used to choose between several interrupts occuring at the same time, which happens almost never. > and when a piece of Ethernet driver code crashes nothing would be > able to break in. Not good. Apparently, you've never developed a driver. ;-) When any interrupt handler crashes, Linux prints the following dreaded message after the usual report: | Kernel panic: Aiee, killing interrupt handler! | In interrupt handler - not syncing and _everything_ halts -- no interrupts, no keyboard, no Alt+SysRq. All you can do is a hard reset and be delighted at what fsck tells you. > ... and the Via8325. (Why is it reported as an 8233?) Because VIA didn't bother to assign different PCI IDs to its southbridges. > NR Log Phy Mask Trig IRR Pol Stat Dest Deli Vect: > 00 000 00 1 0 0 0 0 0 0 00 > 14 000 00 1 0 0 0 0 0 0 00 > 17 000 00 1 0 0 0 0 0 0 00 > 01 001 01 0 0 0 0 0 1 1 39 > 02 001 01 0 0 0 0 0 1 1 31 > 03 001 01 0 0 0 0 0 1 1 41 > 04 001 01 0 0 0 0 0 1 1 49 > 05 001 01 0 0 0 0 0 1 1 51 > 06 001 01 0 0 0 0 0 1 1 59 > 07 001 01 0 0 0 0 0 1 1 61 > 08 001 01 0 0 0 0 0 1 1 69 > 09 001 01 0 1 0 1 0 1 1 71 > 0a 001 01 0 0 0 0 0 1 1 79 > 0b 001 01 0 0 0 0 0 1 1 81 > 0c 001 01 0 0 0 0 0 1 1 89 > 0d 001 01 0 0 0 0 0 1 1 91 > 0e 001 01 0 0 0 0 0 1 1 99 > 0f 001 01 0 0 0 0 0 1 1 A1 > > 12 001 01 1 1 0 1 0 1 1 A9 > 13 001 01 1 1 0 1 0 1 1 B1 > 10 001 01 1 1 0 1 0 1 1 B9 > 11 001 01 1 1 0 1 0 1 1 C1 > 15 001 01 1 1 0 1 0 1 1 C9 > 16 001 01 1 1 0 1 0 1 1 D1 > > So, IRQ22 (0x16) is my Via8235 and it rates higher priority than my timer at > IRQ0? I doubt it. Possibly higher than my HDSP at IRQ17? (0x12) Indeed, IRQ22 does have the highest priority in your system. (BTW, 17 = 0x11) And in APIC mode, Linux doesn't use interrupt 0 for the timer (vector 0 is reserved, so interrupts 0, 20, and 23 are unused). Instead, the local APIC timer is used (this is the "LOC:" line in /proc/interrupts). > There was the part in your earlier post that said" > > "When in APIC mode, there is a fixed mapping of PIRQx inputs to interrupts > above 15 (PIRQA = 16, PIRQB = 17, ...). Each of these 16 or 24+ hardware > interrupts can be routed to one of 256 software interrupt vectors." > > If interrupts below 15 are used for these more traditional interrupt sources > then I can see how this could possibly work, but I need to know what set of > functions exist down there. Where, for instance, are the serial and parallel > ports and the floppy interrupts mapped in this new APIC mode? The APIC mode affects PCI interrupts only. The so-called 'legacy' devices still use interrupts below 16, and the mapping from device to interrupt number doesn't change. (Actually, it can be changed, but the configuration of the Super-I/O chip is done only by the BIOS.) > If the above is correct, then it would be impossible to map a sound card as > having higher priority than the ide0/ide1 interrupts, wouldn't it? The sound card (and all other PCI devices) do have a higher vector number than the IDE interrupts, so it does have a higher priority. But that won't help you the least if an IDE interrupt occurs before the sound card interrupt, and does some work for several milliseconds, and disables _all other_ interrupts during this time. Priorities don't help you because the handler for a lower-priority interrupt can still block all higher-priority interrupt handlers. Well, I think all these technical details obscured the point I was trying to make, which is that, for all practical purposes, interrupt priorities don't matter when tuning a sound card. Regards, Clemens