I apologize in advance to all for the length of this. I apologize in advance to anyone who isn't interested in PC internals and optimizing DAW type machines. - Mark > I've looked into the Intel documentation, and it turns out I thought > wrong, i.e., the first quoted link is right. (But it was for an older > Linux version which assigned vector numbers consecutively.) You are certainly forgiven! ;-) <SNIP> > > So, if Intel's explanation is correct, higher vector numbers have > higer priority. > > > The table shown by Zwane is output into the system log when booting. > > For example, on my P4P800, dmesg says: > > .... 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 and when a piece of Ethernet driver code crashes nothing would be able to break in. Not good. >From my A7V333-X machine. This machine works well with Jack for both the HDSP 9652 and the Via8325. (Why is it reported as an 8233?) mark@Wizard mark $ cat /proc/interrupts CPU0 0: 6842598 IO-APIC-edge timer 1: 111 IO-APIC-edge keyboard 2: 0 XT-PIC cascade 8: 2 IO-APIC-edge rtc 9: 0 IO-APIC-level acpi 12: 12693 IO-APIC-edge PS/2 Mouse 14: 28464 IO-APIC-edge ide0 15: 598 IO-APIC-edge ide1 16: 3 IO-APIC-level ohci1394 17: 5806 IO-APIC-level hdsp 18: 221622 IO-APIC-level eth0 21: 39015 IO-APIC-level usb-uhci, usb-uhci, usb-uhci 22: 7783 IO-APIC-level VIA8233 NMI: 0 LOC: 6842689 ERR: 0 MIS: 0 mark@Wizard mark $ >From dmesg this machine shows the following: (rearranged in IRQ order (last column) for this discussion) 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) 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? 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? > > It would be possible to assign a different vector number to a specific > interrupt by patching the assign_irq_vector function in > arch/i386/kernel/io_apic.c Cool. This *possibly* could allow one to reduce the priority of the ide0/ide1 devices? Not sure at all. Thanks for your time to investigate this. I think that a bit more discussion in this area will yield some standard ways to optimize the Linux PC for audio use. Cheers, Mark