How to disable device in Linux Debian (Wheezy)

I need to force the kernel to not load drivers for the Intel NIC in my PC to see if this helps on performance issues I have by using the second NIC that is on the same motherboard. How can I do this?


I just installed Linux Debian Wheezy on my desktop since I have been so fond and happy with Squeeze. I have encountered a problem however where the kernel after what seems to be random time stops responding to IRQ 16 and slows down the whole machine to a point where it is unusable.

Googling this shows heaps of people from all sorts of distributions and kernels with the same problem but with no solution. I checked /proc/interrupts and found that my graphics card and network card is sharing the same IRQ and decided to move the graphics card to a new slot which helped a lot. However the problem is still there, only now it is only causing problems with my intel gigabit NIC causing it to loose performance. Since I have two NICs on this machine/motherboard I want to try to disable that NIC and use the other one to see if this fixes the problem.

How can I do this?

Here is some information about my system that might be helpful to know. I cut away the information that is not important for this case.

hamartin@Sabriel:~$ lspci
00:00.0 Host bridge: Intel Corporation 2nd Generation Core Processor Family DRAM Controller (rev 09)
00:01.0 PCI bridge: Intel Corporation Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port (rev 09)
00:01.1 PCI bridge: Intel Corporation Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port (rev 09)
00:16.0 Communication controller: Intel Corporation 6 Series/C200 Series Chipset Family MEI Controller #1 (rev 04)
00:19.0 Ethernet controller: Intel Corporation 82579V Gigabit Network Connection (rev 05)
00:1a.0 USB controller: Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #2 (rev 05)
00:1b.0 Audio device: Intel Corporation 6 Series/C200 Series Chipset Family High Definition Audio Controller (rev 05)
00:1c.0 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 1 (rev b5)
00:1c.1 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 2 (rev b5)
00:1c.2 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 3 (rev b5)
00:1c.3 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 4 (rev b5)
00:1c.4 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 5 (rev b5)
00:1c.6 PCI bridge: Intel Corporation 82801 PCI Bridge (rev b5)
00:1c.7 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 8 (rev b5)
00:1d.0 USB controller: Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #1 (rev 05)
00:1f.0 ISA bridge: Intel Corporation P67 Express Chipset Family LPC Controller (rev 05)
00:1f.2 SATA controller: Intel Corporation 6 Series/C200 Series Chipset Family SATA AHCI Controller (rev 05)
00:1f.3 SMBus: Intel Corporation 6 Series/C200 Series Chipset Family SMBus Controller (rev 05)
02:00.0 VGA compatible controller: NVIDIA Corporation GF114 [GeForce GTX 560 Ti] (rev a1)
02:00.1 Audio device: NVIDIA Corporation GF114 HDMI Audio Controller (rev a1)
04:00.0 USB controller: NEC Corporation uPD720200 USB 3.0 Host Controller (rev 04)
06:00.0 SATA controller: JMicron Technology Corp. JMB362 SATA Controller (rev 10)
07:00.0 USB controller: NEC Corporation uPD720200 USB 3.0 Host Controller (rev 04)
08:00.0 PCI bridge: ASMedia Technology Inc. ASM1083/1085 PCIe to PCI Bridge (rev 01)
09:02.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8110SC/8169SC Gigabit Ethernet (rev 10)
0a:00.0 SATA controller: Marvell Technology Group Ltd. 88SE9172 SATA 6Gb/s Controller (rev 11)

Note that before I moved the graphics card IRQ 16 was shared only between the eth0 and the nouveau drivers.

hamartin@Sabriel:~$ cat /proc/interrupts 
           CPU0       CPU1       CPU2       CPU3       CPU4       CPU5       CPU6       CPU7      
 16:     400001          0          0          0          0          0          0          0   IO-APIC-fasteoi   eth0

Kernel information.

hamartin@Sabriel:~$ uname -a
Linux Sabriel 3.2.0-4-amd64 #1 SMP Debian 3.2.39-2 x86_64 GNU/Linux

Relevant logdata from /var/log/messages. This is from before I changed the placement of the graphics card.

Mar 25 01:22:50 Sabriel kernel: [    4.137920] fb0: nouveaufb frame buffer device
Mar 25 01:22:50 Sabriel kernel: [    4.137922] drm: registered panic notifier
Mar 25 01:22:50 Sabriel kernel: [    4.137927] [drm] Initialized nouveau 1.0.0 20120316 for 0000:01:00.0 on minor 0
Mar 25 01:22:50 Sabriel kernel: [    4.137966] hda_intel: Disabling MSI

I can not find the error message that was "walled" to my terminal window, I suspect it has not been written to the logs. In essence the error message said that it stopped responding to IRQs from device set to 16.

If any more information is needed, tell me and I will provide it as soon as I see there is an update here. Thanks in advance for taking the time to help.


Solution 1:

You can blacklist your module using following steps:

  1. Create a file /etc/modprobe.d/<modulename>.conf containing blacklist <modulename>
  2. Run depmod -ae as root
  3. Recreate your initrd with update-initramfs -u