Страница 1 из 1

конфликт IRQ (прерываний)

Добавлено: 2010-01-07 14:36:50
maslivets
Всем доброго времени суток.

Вообщем появилась как то потребность вставить в одну машину несколько сетевых адаптеров, а именно 4.
Вроде как бы Фря ось сетевая и как бы должна была с легкостью справится с подобным количеством железа...
да не тут то было.((

На деле все заканчивается плачевно.

Код: Выделить всё

Fatal trap 12 ...
В отчете об ошибке говорится про конфликт IRQ на разных сетевых интерфейсах.

посмотрев vmstat -i и dmesg, убедился в последнем.

Ось: Фря 7.2 и Фря 8.0, ядро ГЕНЕРИК

Теперь по подробней:
Есть сетевушка D-Link DFE-580TX (4х портовая)
Во фряхе она определяется как 4 сетевушки ste0, ste1, ste2, ste3
и выдает им следующие прерывания и порты
ste0 -- irq 18 port 0xcc00-0xcc7f
ste1 -- irq 19 port 0xc880-0xc8ff
ste2 -- irq 17 port 0xc800-0xc87f
ste3 -- irq 17 port 0xc480-0xc4ff

Если отключить ACPI (hint.acpi.0.disabled="1") то получаю
ste0 -- irq 7
ste1 -- irq 7
ste2 -- irq 11
ste3 -- irq 7

Если отключить APIC (hint.apic.0.disabled="1") (не путать с ACPI) то получаю
ste0 -- irq 11
ste1 -- irq 11
ste2 -- irq 11
ste3 -- irq 11
Правда в этом случае под 11 прерывание попадает довольно таки много устройств

Попытки указать вручную порт и прерывание не заканчиваются успехом ((
hint.ste.0.at="pci" (так же пробовал isa, pci5, pcib5) (два последних взял из dmesg по этим устройствам)
hint.ste.0.port="0xcc00-0xcc7f" (брал из dmesg, так же пробовал hint.ste.0.port="0xcc00")
hint.ste.0.portsize="0xcc00-0xcc7f" (судя по man device.hints, то это более правильней будет)
hint.ste.0.irq="17" (перепробовал и другие свободные прерывания)

Такое проделывал для каждого интерфейса... все без толку
Максимум что происходит при редактировании /boot/device.hints так это сдвиг индекса устройства...
т.е. было ste0, ste1, ste2, ste3 стало str4, ste5, ste6, ste7

Перевтыкивание в другие слоты не дает изменений вообще.
Пробывал на 2х абсолютно разных материнских платах
Если высунуть эту картачку и вставить по раздельно другие (пробовал реалтеки), то 3-я конфликтует с 4-й, т.е. те же пироги.

В биосе на предмет PnP OS, PCI IRQ уже все перелопатил.
В последней тестируемой мною мамке об этом даже ни слова.

Что самое смешное так это то что в Винде и Линухе прерывания распределяются правильно (уникально) и все работает на ура.
Винду ставил на последнюю, а вот линух на обе.

Гуугл уже не знает куда от меня ховатся )))

Кто знает как сменить прерывание для PnP устройств, плиз помогите, а то уже неделю ковыряю и перекручиваю все.
и не хотца чего то на линух переходить ((

Re: конфликт IRQ (прерываний)

Добавлено: 2010-01-08 9:09:12
maslivets
2 модератор

Топик все таки мало относится к разделу железа, так как мало конкретики по железу.

Тут проблема возникла именно под FreeBSD. (В остальных Осях проблемы нету)
И вопрос заключается в том, как под Фрей выставить прерывание для сетевых адаптеров в момент загрузки.

Re: конфликт IRQ (прерываний)

Добавлено: 2010-01-08 21:29:38
hizel
посмотрите может другое устройство нужно сдвинуть по прерываниям :-\

Re: конфликт IRQ (прерываний)

Добавлено: 2010-01-08 21:36:11
hizel
еще попробуйте выставить sysctl hw.acpi.osname в linux или windows

Re: конфликт IRQ (прерываний)

Добавлено: 2010-01-08 23:29:02
maslivets
hizel писал(а):посмотрите может другое устройство нужно сдвинуть по прерываниям :-\
Пробовал отключать лишние устройства (ну типа контролер флопика)

на 2й мамке есть встроенная сетевуха, висела на 20 прерывании.
Я предположил что Фря не смогла выделить следующий по счету прерывание из-за нее,
но даже после отключения ее в биосе, это прерывание попросту остается не затронутым.

Прерывание которое ниже по счету, irq 16, тоже занято драйвером дисплея (vgapci0)
сдвинуть его мне так же не удается, только повышается индекс устройства, т.е. становится (vgapci1)
hizel писал(а):еще попробуйте выставить sysctl hw.acpi.osname в linux или windows
хм.. этого параметра по дифолту нету как 7.2 так и в 8.0
врятли он повлияет, да и тем более параметры sysctl вроде применяются после определения всех устройств но перед загрузкой софта,
а на этом этапе уже не чего не изменить.

да и после выполнения получил ожидаемый ответ:

Код: Выделить всё

# sysctl hw.acpi.osname="linux"
sysctl: unknown oid `hw.acpi.osname`

Re: конфликт IRQ (прерываний)

Добавлено: 2010-01-08 23:37:39
hizel
http://www.freebsd.org/doc/ru/books/han ... debug.html

раздел 11.16.5.1. OS зависимости

Re: конфликт IRQ (прерываний)

Добавлено: 2010-01-09 12:06:09
maslivets
Перепробовал устанавливать значение в "Windows 2001" и "linux"
ситуация не изменилась ((


У кого то еще какие то идеи есть?


И есть ли у кого-нить инфа по поводу работоспособности /boot/device.hints
для изменения прерывания устройств на шине PCI ?

Re: конфликт IRQ (прерываний)

Добавлено: 2010-01-12 1:31:47
Oleg___
такая же фигня у меня, только с видео картой получилась http://forum.lissyara.su/viewtopic.php? ... &start=275, на одной плате ситуация один в один с вашей, на другой все работает, обе платы асус, разница только в биосе, там где есть PnP OS, PCI IRQ - не работает хоть убейся, там где только PnP вкл\выкл все хокей

Re: конфликт IRQ (прерываний)

Добавлено: 2010-01-12 16:09:01
maslivets
Oleg___ писал(а):такая же фигня у меня, только с видео картой получилась http://forum.lissyara.su/viewtopic.php? ... &start=275, на одной плате ситуация один в один с вашей, на другой все работает, обе платы асус, разница только в биосе, там где есть PnP OS, PCI IRQ - не работает хоть убейся, там где только PnP вкл\выкл все хокей
Угу, спасибо, почитал ту ветку.
Так же на днях попробовал поставить 4х портовую сетевушку в еще другую материнку. Там все ништяк. Даже в биос не пришлось лезть.
Все прерывания размапелись правильно. Так что пришел к выводу, что под Фряху нужно подыскивать железо методом тыка.


По поводу того, что все устройства могут работать на одном прерывании.
Так вот решил вставить 6 сетевух и посмотреть как линух себя поведет.
Вышло так, что 2 риалтека конфликтуют с 2-мя портами 4-х портовой сетевушки.
Ну и один какой то порт весит на одном прерывании с USB контролером.
Так вот, те что конфликтуют начинают выдавать в dmesg сообщения про watch time out.
Хотя система не падает и продолжает работать дальше.
А та, что на одном прерывании с USB, то все вроде норм.
В итоге не могу понять почему Фря ложится, а Линух продолжает рабоать с этими ерорами. :-o


Вообщем на данном этапе интересует общий вопрос, возможно ли ручное распределение прерываний средствами конфигурационных файлов (для Фряхи)?