IRQ settings

Optimize your system for ultimate performance.

Moderators: MattKingUSA, khz

Post Reply
User avatar
raboof
Established Member
Posts: 1855
Joined: Tue Apr 08, 2008 11:58 am
Location: Deventer, NL
Has thanked: 50 times
Been thanked: 74 times
Contact:

IRQ settings

Post by raboof »

After reading some of http://linuxmusicians.com/viewtopic.php?f=44&t=279, I decided to take a look at my IRQ settings.

The /proc/interrupts of my laptop looks like:

Code: Select all

           CPU0       
  0:    3800230   IO-APIC-edge      timer
  1:       9415   IO-APIC-edge      i8042
  4:          3   IO-APIC-edge    
  8:         11   IO-APIC-edge      rtc
  9:          5   IO-APIC-fasteoi   acpi
 12:      56923   IO-APIC-edge      i8042
 14:      66315   IO-APIC-edge      libata
 15:        145   IO-APIC-edge      libata
 16:         84   IO-APIC-fasteoi   uhci_hcd:usb1, ehci_hcd:usb5, Intel ICH6, eth0
 17:          1   IO-APIC-fasteoi   uhci_hcd:usb4, yenta
 18:     552362   IO-APIC-fasteoi   uhci_hcd:usb2, ipw2200
 19:          0   IO-APIC-fasteoi   uhci_hcd:usb3
NMI:          0   Non-maskable interrupts
LOC:     376171   Local timer interrupts
RES:          0   Rescheduling interrupts
CAL:          0   function call interrupts
TLB:          0   TLB shootdowns
TRM:          0   Thermal event interrupts
SPU:          0   Spurious interrupts
ERR:          0
MIS:          0
Most online documentation seems to be about XT-PIC and I've got I/O-APIC. Where do I find good information about APIC, like what the difference is between 'edge' and 'fasteio', which IRQ's are fastest, etc?

Some suggest assigning IRQ's in the BIOS and disabling PnP there - unfortunately, my BIOS (it's a Dell Latitude d810) doesn't seem to support these settings. I'm not sure if I could make any settings by changing physical jumpers, but I doubt it.

Looking at the (old!) thread at http://lalists.stanford.edu/lau/2004/07/0609.html , it seems IRQ16 is a good place for my soundcard (the fastest non-'internal' interrupt), and in theory i should be able to assign those other devices to other IRQ's.

From dmesg:

Code: Select all

[  130.723588] ACPI: PCI Interrupt 0000:00:01.0[A] -> GSI 16 (level, low) -> IRQ 16
[  130.723593] PCI: Setting latency timer of device 0000:00:01.0 to 64
[  130.723613] ACPI: PCI Interrupt 0000:00:1c.0[A] -> GSI 16 (level, low) -> IRQ 16
[  130.723619] PCI: Setting latency timer of device 0000:00:1c.0 to 64
[  130.723631] PCI: Setting latency timer of device 0000:00:1e.0 to 64
[  130.723648] PCI: Enabling device 0000:03:01.0 (0000 -> 0003)
[  130.723652] ACPI: PCI Interrupt 0000:03:01.0[A] -> GSI 19 (level, low) -> IRQ 17
Is there anything I can do to get my soundcard on its own IRQ?
studio32

Re: IRQ settings

Post by studio32 »

kinda dived into it to...

Code: Select all

$ cat /proc/interrupts
           CPU0       
  0:        725   IO-APIC-edge      timer
  1:       3753   IO-APIC-edge      i8042
  3:          1   IO-APIC-edge    
  4:          1   IO-APIC-edge    
  6:          5   IO-APIC-edge      floppy
  7:          0   IO-APIC-edge      parport0
  8:          7   IO-APIC-edge      rtc
  9:          0   IO-APIC-fasteoi   acpi
 14:      34836   IO-APIC-edge      libata
 15:      47652   IO-APIC-edge      libata
 16:     350995   IO-APIC-fasteoi   uhci_hcd:usb1, uhci_hcd:usb4, mga@pci:0000:01:00.0
 17:      45546   IO-APIC-fasteoi   uhci_hcd:usb2, ICE1712
 18:     137409   IO-APIC-fasteoi   uhci_hcd:usb3, libata
 19:          2   IO-APIC-fasteoi   ehci_hcd:usb5
 20:     150832   IO-APIC-fasteoi   0000:02:01.0
NMI:          0   Non-maskable interrupts
LOC:    6091920   Local timer interrupts
RES:          0   Rescheduling interrupts
CAL:          0   function call interrupts
TLB:          0   TLB shootdowns
TRM:          0   Thermal event interrupts
SPU:          0   Spurious interrupts
ERR:          0
MIS:          0

Code: Select all

17:      45546   IO-APIC-fasteoi   uhci_hcd:usb2, ICE1712

Code: Select all

~$ lspci -v
00:00.0 Host bridge: Intel Corporation 82875P/E7210 Memory Controller Hub (rev 02)
	Subsystem: Dell Unknown device 0156
	Flags: bus master, fast devsel, latency 0
	Memory at f0000000 (32-bit, prefetchable) [size=128M]
	Capabilities: <access denied>

00:01.0 PCI bridge: Intel Corporation 82875P Processor to AGP Controller (rev 02) (prog-if 00 [Normal decode])
	Flags: bus master, 66MHz, fast devsel, latency 64
	Bus: primary=00, secondary=01, subordinate=01, sec-latency=64
	Memory behind bridge: fe000000-feafffff
	Prefetchable memory behind bridge: f8000000-f9ffffff

00:06.0 System peripheral: Intel Corporation 82875P/E7210 Processor to I/O Memory Interface (rev 02)
	Flags: fast devsel
	Memory at fecf0000 (32-bit, non-prefetchable) [size=4K]

00:1d.0 USB Controller: Intel Corporation 82801EB/ER (ICH5/ICH5R) USB UHCI Controller #1 (rev 02) (prog-if 00 [UHCI])
	Subsystem: Dell Unknown device 0156
	Flags: bus master, medium devsel, latency 0, IRQ 16
	I/O ports at ff80 [size=32]

00:1d.1 USB Controller: Intel Corporation 82801EB/ER (ICH5/ICH5R) USB UHCI Controller #2 (rev 02) (prog-if 00 [UHCI])
	Subsystem: Dell Unknown device 0156
	Flags: bus master, medium devsel, latency 0, IRQ 17
	I/O ports at ff60 [size=32]

00:1d.2 USB Controller: Intel Corporation 82801EB/ER (ICH5/ICH5R) USB UHCI Controller #3 (rev 02) (prog-if 00 [UHCI])
	Subsystem: Dell Unknown device 0156
	Flags: bus master, medium devsel, latency 0, IRQ 18
	I/O ports at ff40 [size=32]

00:1d.3 USB Controller: Intel Corporation 82801EB/ER (ICH5/ICH5R) USB UHCI Controller #4 (rev 02) (prog-if 00 [UHCI])
	Subsystem: Dell Unknown device 0156
	Flags: bus master, medium devsel, latency 0, IRQ 16
	I/O ports at ff20 [size=32]

00:1d.7 USB Controller: Intel Corporation 82801EB/ER (ICH5/ICH5R) USB2 EHCI Controller (rev 02) (prog-if 20 [EHCI])
	Subsystem: Dell Unknown device 0156
	Flags: bus master, medium devsel, latency 0, IRQ 19
	Memory at ffa80800 (32-bit, non-prefetchable) [size=1K]
	Capabilities: <access denied>

00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev c2) (prog-if 00 [Normal decode])
	Flags: bus master, fast devsel, latency 0
	Bus: primary=00, secondary=02, subordinate=02, sec-latency=32
	I/O behind bridge: 0000d000-0000dfff
	Memory behind bridge: fdf00000-fdffffff

00:1f.0 ISA bridge: Intel Corporation 82801EB/ER (ICH5/ICH5R) LPC Interface Bridge (rev 02)
	Flags: bus master, medium devsel, latency 0

00:1f.1 IDE interface: Intel Corporation 82801EB/ER (ICH5/ICH5R) IDE Controller (rev 02) (prog-if 8a [Master SecP PriP])
	Subsystem: Dell Unknown device 0156
	Flags: bus master, medium devsel, latency 0, IRQ 18
	I/O ports at 01f0 [size=8]
	I/O ports at 03f4 [size=1]
	I/O ports at 0170 [size=8]
	I/O ports at 0374 [size=1]
	I/O ports at ffa0 [size=16]
	Memory at febffc00 (32-bit, non-prefetchable) [size=1K]

00:1f.2 IDE interface: Intel Corporation 82801EB (ICH5) SATA Controller (rev 02) (prog-if 8f [Master SecP SecO PriP PriO])
	Subsystem: Dell Unknown device 0156
	Flags: bus master, 66MHz, medium devsel, latency 0, IRQ 18
	I/O ports at fe00 [size=8]
	I/O ports at fe10 [size=4]
	I/O ports at fe20 [size=8]
	I/O ports at fe30 [size=4]
	I/O ports at fea0 [size=16]

00:1f.3 SMBus: Intel Corporation 82801EB/ER (ICH5/ICH5R) SMBus Controller (rev 02)
	Subsystem: Dell Precision 360
	Flags: medium devsel, IRQ 10
	I/O ports at efe0 [size=32]

01:00.0 VGA compatible controller: Matrox Graphics, Inc. MGA G400/G450 (rev 04) (prog-if 00 [VGA controller])
	Subsystem: Matrox Graphics, Inc. Millennium G400 16Mb SDRAM
	Flags: bus master, medium devsel, latency 64, IRQ 16
	Memory at f8000000 (32-bit, prefetchable) [size=32M]
	Memory at fe9fc000 (32-bit, non-prefetchable) [size=16K]
	Memory at fe000000 (32-bit, non-prefetchable) [size=8M]
	Expansion ROM at fea00000 [disabled] [size=64K]
	Capabilities: <access denied>

02:01.0 Network controller: RaLink RT2500 802.11g Cardbus/mini-PCI (rev 01)
	Subsystem: Unknown device 18eb:5312
	Flags: bus master, slow devsel, latency 64, IRQ 20
	Memory at fdfde000 (32-bit, non-prefetchable) [size=8K]
	Capabilities: <access denied>

02:03.0 Multimedia audio controller: VIA Technologies Inc. ICE1712 [Envy24] PCI Multi-Channel I/O Controller (rev 02)
	Subsystem: VIA Technologies Inc. M-Audio Delta Audiophile
	Flags: bus master, medium devsel, latency 64, IRQ 17
	I/O ports at dee0 [size=32]
	I/O ports at dec0 [size=16]
	I/O ports at ded0 [size=16]
	I/O ports at df00 [size=64]
	Capabilities: <access denied>

02:0c.0 Ethernet controller: Intel Corporation 82540EM Gigabit Ethernet Controller (rev 02)
	Subsystem: Dell Unknown device 0156
	Flags: bus master, 66MHz, medium devsel, latency 64, IRQ 18
	Memory at fdfe0000 (32-bit, non-prefetchable) [size=128K]
	I/O ports at df40 [size=64]
	Capabilities: <access denied>

Code: Select all

02:03.0 Multimedia audio controller: VIA Technologies Inc. ICE1712 [Envy24] PCI Multi-Channel I/O Controller (rev 02)
   Subsystem: VIA Technologies Inc. M-Audio Delta Audiophile
   Flags: bus master, medium devsel, latency 64, IRQ 17
   I/O ports at dee0 [size=32]
   I/O ports at dec0 [size=16]
   I/O ports at ded0 [size=16]
   I/O ports at df00 [size=64]
   Capabilities: <access denied>
can't change anything in my bios...
studio32

Re: IRQ settings

Post by studio32 »

@ raboof, I've also a Dell and the same questions as you have. Can't find PnP in my BIOS...

Code: Select all

17:      45546   IO-APIC-fasteoi   uhci_hcd:usb2, ICE1712
is this an IRQ conflict??

edit: Can't find PCI burst in my BIOS too :/
Havoc
Established Member
Posts: 179
Joined: Sat Oct 04, 2008 6:57 pm

Re: IRQ settings

Post by Havoc »

Assigning IRQ's is something I haven't done for more than 10 years... The last time I really looked at them was when I got my P2L97-DS board. I feel that recent chipsets do such a good job that it is futile to try yourself. The APIC centralises the IRQ's and form the interface to the CPU. Modern chipsets also have a lot more IRQ's then when we still used pentiums.

Two (or more) devices sharing an IRQ doesn't mean you got a conflict. It is only when the drivers can't handle the sharing that it goes wrong.

My IRQ list looks like this (but I have no idea how to read that):

Code: Select all

daw ~ # cat /proc/interrupts
           CPU0       CPU1
  0:         86          1   IO-APIC-edge      timer
  1:         17       8912   IO-APIC-edge      i8042
  7:          1          0   IO-APIC-edge
  8:          0          0   IO-APIC-edge      rtc
  9:          0          0   IO-APIC-fasteoi   acpi
 12:       5732     426511   IO-APIC-edge      i8042
 14:          0         54   IO-APIC-edge      ide0
 18:          0          3   IO-APIC-fasteoi   ohci1394
 19:       3725    1804629   IO-APIC-fasteoi   nvidia
 20:          0          0   IO-APIC-fasteoi   ehci_hcd:usb1
 21:          0          0   IO-APIC-fasteoi   sata_nv
 22:        175      43036   IO-APIC-fasteoi   sata_nv
 23:       8106    2992343   IO-APIC-fasteoi   ohci_hcd:usb2, eth0
 26:         14       4936   IO-APIC-fasteoi   arcmsr
 28:          4        631   IO-APIC-fasteoi   rme9652
NMI:          0          0   Non-maskable interrupts
LOC:   30767023   29100742   Local timer interrupts
RES:      35856      26496   Rescheduling interrupts
CAL:     105538      72053   function call interrupts
TLB:       4175       3391   TLB shootdowns
TRM:          0          0   Thermal event interrupts
THR:          0          0   Threshold APIC interrupts
SPU:          0          0   Spurious interrupts
ERR:          1
User avatar
raboof
Established Member
Posts: 1855
Joined: Tue Apr 08, 2008 11:58 am
Location: Deventer, NL
Has thanked: 50 times
Been thanked: 74 times
Contact:

Re: IRQ settings

Post by raboof »

studio32 wrote:

Code: Select all

17:      45546   IO-APIC-fasteoi   uhci_hcd:usb2, ICE1712
is this an IRQ conflict??
Well, (unless there's bugs) this will be fine functionally, but because both are on the same IRQ you can't give one priority over the other...
thorgal
Established Member
Posts: 739
Joined: Mon Apr 07, 2008 6:04 pm

Re: IRQ settings

Post by thorgal »

as raboof said, this is no conflict, this is IRQ sharing, which is a fine thing when the number of interrupts is very limited. But this does not have to be the case any longer.

Anyway, if you have other PCI slots, just try them and see what IRQ the PCI soundcard will get every time. If you are lucky enough, you will have a non shared IRQ for it. When you tune up the IRQ thread prio for it, since it is not sharing with another device (e.g. USB) only your card will benefit from this higher prio.
Post Reply