2002-09-24 16:58:55

by Mark Knecht

[permalink] [raw]
Subject: SMP machines - IRQ Priorities

Hi,
Excuse me for interrupting you guys too much. I hope you can find a
minute to answer these two questions for me:

*** When APIC IRQs are used (IRQs higher than 15) what is the IRQ serviced
first? ***

(17 before 18 before 19?)
(19 before 18 before 17?)

*** Is the order continuous from 0-23, or are any IRQ numbers handled out of
order?

A number of Ardour users (http://ardour.sourceforge.net) are using SMP
machines. Some are working better than others. On UMP machines I've shown
that IRQ settings are important for recording audio, both under Linux and
Windows. I'm doing some legwork to understand their Linux IRQ
configurations. We're all using 2.4.19 with low latency patches.

There seem to be two configurations for SMP X86 type machines. The edited
results for lspci -v and cat /proc/interrupts is shown below:

1) Traditional IRQ numbering:
IRQ Priority
0, 1, 8, 9, 10, 11, 12, 13, 14, 15, 3, 4, 5, 6, 7

00:00.0 Host bridge:
00:01.0 PCI bridge:
00:07.0 ISA bridge:
00:07.1 IDE interface:
00:07.2 USB Controller: IRQ 10
00:07.3 USB Controller: IRQ 10
00:07.4 Bridge: IRQ 11
00:0b.0 Multimedia audio controller: IRQ 11
00:0c.0 Ethernet controller: IRQ 10
00:0e.0 Unknown mass storage controller: IRQ 11
01:00.0 VGA compatible controller: IRQ 9


2) APIC IRQ numbering
IRQ Priority

00:00.0 Host bridge:
00:01.0 PCI bridge:
00:07.0 ISA bridge:
00:07.1 IDE interface:
00:07.3 Bridge:
00:09.0 USB Controller: IRQ 17
00:09.1 USB Controller: IRQ 18
00:09.2 USB Controller: IRQ 19
00:10.0 PCI bridge:
01:05.0 VGA compatible controller: IRQ 16
02:00.0 USB Controller: IRQ 19
02:04.0 Multimedia audio: IRQ 17
02:05.0 Multimedia audio: IRQ 18
02:06.0 Serial controller: IRQ 17
02:08.0 Ethernet controller: IRQ 19

I assume, but am not sure, that the traditional numbering is on machines
where people either did not compile in APIC support or used the noapic
option. On the second set of IRQ settings we need to know what numbers to
get the audio devices on for the best low-latency performance.

Thanks,
Mark


2002-09-24 18:22:03

by Zwane Mwaikambo

[permalink] [raw]
Subject: Re: SMP machines - IRQ Priorities

On Tue, 24 Sep 2002, Mark Knecht wrote:

> Hi,
> Excuse me for interrupting you guys too much. I hope you can find a
> minute to answer these two questions for me:
>
> *** When APIC IRQs are used (IRQs higher than 15) what is the IRQ serviced
> first? ***

Priority is done by vector (each irq is assigned a vector), you can see
the listing at boot

Zwane
--
function.linuxpower.ca

2002-09-24 19:05:11

by Zwane Mwaikambo

[permalink] [raw]
Subject: RE: SMP machines - IRQ Priorities

On Tue, 24 Sep 2002, Mark Knecht wrote:

> Zwane,
> Yes, we understand that we can see a list. The problem is that we do not
> understand whether IRQ0 is considered higher priority than IRQ23.
> Unfortunately I do not have an SMP machine to look at myself right now, so
> I'm relaying info to others.
>
> The traditional IRQ order was NOT in order, due to the history of the PC
> architecture. If I was to simply guess that APIC priority was 0, 1, 2, 3,
> ... 22, 23 I could easily be wrong. Possibly it's more like the traditional
> model and would go more like 0, 1, 8, 9, 10, 11, 12, 13, 14, 15, 3, 4, 5, 6,
> 7, 16, 17...23. We simply are not sure.
>
> Does the list you are speaking of show up in dmesg or somewhere else that
> we can collect from people and compare the results we're getting in testing?

Sorry i've got an annoying habit of being terse at times; The local APIC
unit will handle interrupts depending on vector, with lowest being highest
priority. Here is a sample table with NR being the IRQ e.g. 0 = 31;

NR Log Phy Mask Trig IRR Pol Stat Dest Deli Vect:
00 00F 0F 0 0 0 0 0 1 1 31
01 00F 0F 1 0 0 0 0 1 1 39
02 000 00 1 0 0 0 0 0 0 00
03 00F 0F 0 0 0 0 0 1 1 41
04 00F 0F 0 0 0 0 0 1 1 49
05 00F 0F 0 0 0 0 0 1 1 51
06 00F 0F 1 0 0 0 0 1 1 59
07 00F 0F 0 0 0 0 0 1 1 61
08 00F 0F 0 0 0 0 0 1 1 69
09 00F 0F 0 0 0 0 0 1 1 71
0a 00F 0F 0 0 0 0 0 1 1 79
0b 00F 0F 0 0 0 0 0 1 1 81
0c 00F 0F 0 0 0 0 0 1 1 89
0d 00F 0F 0 0 0 0 0 1 1 91
0e 00F 0F 0 0 0 0 0 1 1 99
0f 00F 0F 0 0 0 0 0 1 1 A1
10 000 00 1 0 0 0 0 0 0 00
11 000 00 1 0 0 0 0 0 0 00
12 000 00 1 0 0 0 0 0 0 00
13 000 00 1 0 0 0 0 0 0 00
14 000 00 1 0 0 0 0 0 0 00
15 000 00 1 0 0 0 0 0 0 00
16 000 00 1 0 0 0 0 0 0 00
17 000 00 1 0 0 0 0 0 0 00


--
function.linuxpower.ca