# IRQ issues on Asus M2N-SLI Deluxe mobo [SOMEWHAT SOLVED]

## echo41

Hi all

I'm somewhat stuck with IRQ assignment. My M2N mobo has the nVidia graphcis card in the PCI-E slot and all three PCI slots populated with a DVB-S, a DVB-T and a telephony card.

About once every week, the system freezes and I'm quite sure it's due to the fact that the graphics card on PCI-E and the card in the first PCI slot (DVB-S) are sharing the same IRQ 16. I've read elsewhere that the nVidia drivers (x11-drivers/nvidia-drivers) don't play nice when sharing IRQs.

```
tango ~ # cat /proc/interrupts 

           CPU0       CPU1       

  0:       7783     385656   IO-APIC-edge      timer

  1:          2         88   IO-APIC-edge      i8042

  6:          0          3   IO-APIC-edge      floppy

  7:          0          0   IO-APIC-edge      parport0

  8:          0          0   IO-APIC-edge      rtc

  9:          0          0   IO-APIC-fasteoi   acpi

 12:          0          4   IO-APIC-edge      i8042

 14:          1         81   IO-APIC-edge      ide0

 16:       7675    1621546   IO-APIC-fasteoi   bttv0, bt878, nvidia

 17:      18595     885800   IO-APIC-fasteoi   wctdm

 18:       2639     119877   IO-APIC-fasteoi   saa7133[0], saa7133[0]

 19:          0          3   IO-APIC-fasteoi   ohci1394

 20:          3        945   IO-APIC-fasteoi   libata, HDA Intel

 21:       2166      99566   IO-APIC-fasteoi   libata, ohci_hcd:usb2

 22:          0         15   IO-APIC-fasteoi   ehci_hcd:usb1

 23:       3735     170937   IO-APIC-fasteoi   libata, eth0

NMI:          0          0 

LOC:     393409     393390 

ERR:          0
```

Swapping cards changes this, but the card in the first PCI slot is always using the same IRQ 16 as does the PCI-E card.

I couldn't find a BIOS option that sounds promising - other than "PnP OS = no" and "IRQ Assignment = manual".

What can I do to give the PCI-E (nVidia graphics card) and first PCI (currently DVB-S) an IRQ of their own?Last edited by echo41 on Tue Aug 07, 2007 10:39 am; edited 1 time in total

----------

## didymos

You might be able to stop the sharing by enabling Message Signalled Interrupts in the kernel.  It depends on the device.  You can find out which are capable of using them with "lspci -v".  Some stuff, like the hda-intel driver, needs to be explicitly told to enable it, by way of a module parameter.

----------

## echo41

Thanks for the hint!

The following two cards are sharing IRQ 16 now. (I've swapped cards to reduce system hangs significantly.)

```
07:00.0 VGA compatible controller: nVidia Corporation NV36 [GeForce PCX 5750] (rev a2) (prog-if 00 [VGA])

        Subsystem: ASUSTeK Computer Inc. Unknown device 817e

        Flags: bus master, fast devsel, latency 0, IRQ 16

        Memory at fa000000 (32-bit, non-prefetchable) [size=16M]

        Memory at e0000000 (32-bit, prefetchable) [size=256M]

        Memory at fb000000 (32-bit, non-prefetchable) [size=16M]

        [virtual] Expansion ROM at fcfe0000 [disabled] [size=128K]

        Capabilities: [60] Power Management version 2

        Capabilities: [68] Message Signalled Interrupts: Mask- 64bit+ Queue=0/0 Enable-

        Capabilities: [78] Express Legacy Endpoint IRQ 0

        Capabilities: [100] Virtual Channel

        Capabilities: [128] Power Budgeting

01:06.0 Communication controller: Tiger Jet Network Inc. Tiger3XX Modem/ISDN interface

        Subsystem: Unknown device b1d9:0003

        Flags: bus master, medium devsel, latency 32, IRQ 16

        I/O ports at 9c00 [size=256]

        Memory at fddff000 (32-bit, non-prefetchable) [size=4K]

        Capabilities: [40] Power Management version 2
```

I have enabled CONFIG_PCI_MSI and checked whether the nvidia driver needs an option to use MSI (there's no such option), still the two cards keep sharing the IRQ:

```
16:       2680     665659   IO-APIC-fasteoi   wctdm, nvidia
```

Any ideas what I'm doing wrong here?

----------

## didymos

The nvidia driver may not support MSI.  lspci just tells you whether or not the hardware is capable, but the driver still needs to make use of that.  Where did you check the module parameters?

----------

## echo41

 *didymos wrote:*   

> The nvidia driver may not support MSI.  lspci just tells you whether or not the hardware is capable, but the driver still needs to make use of that.  Where did you check the module parameters?

 

http://http.download.nvidia.com/XFree86/Linux-x86/1.0-8774/README/index.html

----------

## sifi

The pci=noacpi boot parameter should help re-shuffle the IRQs; it did with my Asus board. Also, disabling the built-in hardware you don't use such as firewire, usb2 or sata will free up IRQs so sharing is less likely.

Afaik MSI is only for PCIe cards and doesn't work with a lot of hardware.

----------

## didymos

No, MSI is also part of PCI 2.2 or 2.3, not sure which, but it's an optional feature.  Mostly, it doesn't work with stuff because the drivers don't take advantage of it.  It's too bad, because it completely avoids the whole shared IRQ thing.  Instead of pin-based IRQs, the device gets a tiny segment of memory and writes to it to assert an interrupt.  It also gets 1-32 areas to pass messages into.  There's more to it, but I haven't read up on it.

----------

## sifi

ahh, that's a shame cos it's taken me ages to get my system stable due to sharing IRQS/bad drivers (I know in theory they can be shared but in practice???). I have a couple of e1000 and forcedeth nics that supposedly do MSI but they don't function with it enabled (cat /proc/interrupts looks nice though!).

----------

## echo41

 *sifi wrote:*   

> The pci=noacpi boot parameter should help re-shuffle the IRQs

 

Without noacpi, it looks as follows:

```
           CPU0       CPU1       

  0:         87      20569   IO-APIC-edge      timer

  1:          0         10   IO-APIC-edge      i8042

  6:          0          3   IO-APIC-edge      floppy

  7:          0          0   IO-APIC-edge      parport0

  8:          0          0   IO-APIC-edge      rtc

  9:          0          0   IO-APIC-fasteoi   acpi

 12:          0          4   IO-APIC-edge      i8042

 14:          0         83   IO-APIC-edge      ide0

 16:         58      73235   IO-APIC-fasteoi   wctdm, nvidia

 18:          0          0   IO-APIC-fasteoi   saa7133[0], saa7133[0]

 19:          0          3   IO-APIC-fasteoi   ohci1394

 20:          0        401   IO-APIC-fasteoi   libata, HDA Intel

 21:         74       4852   IO-APIC-fasteoi   libata, ohci_hcd:usb2

 22:          0         14   IO-APIC-fasteoi   ehci_hcd:usb1

 23:         83       5944   IO-APIC-fasteoi   libata, eth0
```

And with noacpi it's all on the same IRQ 11  :Smile: 

```
           CPU0       CPU1       

  0:        868      25103   IO-APIC-edge      timer

  1:          0         10   IO-APIC-edge      i8042

  2:          0          0    XT-PIC-XT        cascade

  5:         80       5295   IO-APIC-fasteoi   ohci1394, libata, ohci_hcd:usb2, HDA Intel

  6:          0          3   IO-APIC-edge      floppy

  7:          0          0   IO-APIC-edge      parport0

  8:          0          0   IO-APIC-edge      rtc

  9:          0          0   IO-APIC-edge      acpi

 10:        111       6090   IO-APIC-fasteoi   libata, ehci_hcd:usb1, eth0

 11:         61      95132   IO-APIC-fasteoi   libata, wctdm, saa7133[0], saa7133[0], nvidia

 12:          0          4   IO-APIC-edge      i8042

 14:          1         81   IO-APIC-edge      ide0
```

Booting again without noacpi reverts back to the first list. 

I wasn't aware of it to be that much of a hassle to re-assign IRQs  :Smile: 

----------

## didymos

The whole old-style IRQ system on PC-Compatible descended hardware is a big pain in the ass.  Just getting things to even share IRQs was a big deal. It wasn't so long ago that a lot of hardware demanded it's own IRQ, and sometimes even one specific IRQ.  Often, jumpers on the motherboard or card were involved.

----------

## sifi

Have you tried disabling hardware? You may find a combination that works. Do you need a floppy drive and parallel port? Try disabling usb2 (not usb1) and/or firewire if you dont need it. Failing that I think you''re out of options apart from switching to a pcie tv card. If your system's stable then I wouldn't worry too much. Good luck!

----------

## echo41

 *sifi wrote:*   

> Have you tried disabling hardware? You may find a combination that works. Do you need a floppy drive and parallel port? Try disabling usb2 (not usb1) and/or firewire if you dont need it. Failing that I think you''re out of options apart from switching to a pcie tv card. If your system's stable then I wouldn't worry too much. Good luck!

 

It now works somehow eventhough I couldn't keep two cards from sharing. But they seem to get along  :Smile: 

Thanks to all for the help!!

----------

