[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