[sisyphus] Intel PRO/1000 & Message Signaled Interrupts

Ivan Adzhubey =?iso-8859-1?q?iadzhubey_=CE=C1_rics=2Ebwh=2Eharvard=2Eedu?=
Чт Сен 11 10:53:33 MSD 2008


Доброго дня всем!

Мучаюсь со все тем же новым компьютером на м/п Intel DX38BT. При наличии 
сколько-нибудь заметного сетевого траффика он периодически самопроизвольно 
перегружается, больше пары часов аптайма не получается. При этом нигде не 
остается никаких следов причины ребута. Причиной собственно перезагрузок 
является как я подозреваю встроенный аппаратный watchdog, который не 
отключается полностью, несмотря на выставленные аж в двух местах в БИОСе 
опции disable. А сбоит похоже драйвер встроенной сетевой карты. Гугление дает 
наводку на то, что интелевские драйверы имеют оптимистичную привычку включать 
поддержку Message Signaled Interrupts (MSI), тогда как многие встроенные NIC, 
даже и вполне свежие, на самом деле этот режим не держат (по причине 
отсутствия в них поддержки MSI-X расширений, без которых вероятность race 
condition в ядре приближается к единице). Проблема в том, что отключить MSI в 
e1000/e1000e нельзя никак, кроме как пересборкой драйвера. Даже выставление 
noapic в параметрах загрузки ядра не помогает - все интеррапты переключаются 
в XT режим, кроме... eth0, который по-прежнему MSI. И что делать?? Говорят, 
что в 2.6.27 на эту тему есть какой-то патчик и некоторым он помогает, а у 
нас на дворе только-только 2.6.25...

Коллеги, никогда не покупайте материнских плат от Intel. Это что-то 
чудовищное.

# uname -a
Linux ika 2.6.25-std-def-alt9 #1 SMP Wed Sep 10 13:50:51 MSD 2008 x86_64 
GNU/Linux

# lsmod|fgrep e100
e1000e                115236  0

# lspci -v
00:19.0 Ethernet controller: Intel Corporation 82566DC-2 Gigabit Network 
Connection (rev 02)
        Subsystem: Intel Corporation Device 0001
        Flags: bus master, fast devsel, latency 0, IRQ 2301
        Memory at e0200000 (32-bit, non-prefetchable) [size=128K]
        Memory at e0224000 (32-bit, non-prefetchable) [size=4K]
        I/O ports at 20e0 [size=32]
        Capabilities: [c8] Power Management version 2
        Capabilities: [d0] Message Signalled Interrupts: Mask- 64bit+ 
Queue=0/0 Enable+
        Capabilities: [e0] Vendor Specific Information <?>
        Kernel driver in use: e1000e
        Kernel modules: e1000, e1000e

# cat /proc/interrupts
           CPU0       CPU1       CPU2       CPU3
  0:         37          1          0          0   IO-APIC-edge      timer
  1:          1          0          1          0   IO-APIC-edge      i8042
  3:          1          0          0          1   IO-APIC-edge
  8:          0          0          1          0   IO-APIC-edge      rtc
  9:          0          0          0          0   IO-APIC-fasteoi   acpi
 12:          0          2          0          2   IO-APIC-edge      i8042
 16:      13740      13701      13814      13856   IO-APIC-fasteoi   
fglrx[0]@PCI:1:0:0
 17:          7          5          5          6   IO-APIC-fasteoi   
uhci_hcd:usb3, ehci_hcd:usb7, HDA Intel
 18:        999       1034       1018       1032   IO-APIC-fasteoi   
uhci_hcd:usb1, uhci_hcd:usb6
 19:          0          1          2          0   IO-APIC-fasteoi   
uhci_hcd:usb5, ohci1394
 21:       3040       3012       3050       3044   IO-APIC-fasteoi   ata_piix, 
ata_piix, uhci_hcd:usb2
 22:         38         38         38         38   IO-APIC-fasteoi   HDA Intel
 23:       1103       1135       1126       1125   IO-APIC-fasteoi   
uhci_hcd:usb4, ehci_hcd:usb8
2301:     195398     195400     195275     195226   PCI-MSI-edge      eth0
NMI:          0          0          0          0   Non-maskable interrupts
LOC:     118133      98168      91687      85636   Local timer interrupts
RES:       1619        940        877       2208   Rescheduling interrupts
CAL:      22568      11422      25209      16560   function call interrupts
TLB:       4848       4928       6267       6532   TLB shootdowns
TRM:          0          0          0          0   Thermal event interrupts
THR:          0          0          0          0   Threshold APIC interrupts
SPU:          0          0          0          0   Spurious interrupts
ERR:          0


--Иван



Подробная информация о списке рассылки Sisyphus