(реальный irq) vs (compiled in kernel irq) under FreeBSD

aliska12

В результате моих криворуких экспериментов столкнулся с такой проблемой. Реальное прерывание, на котором висит сетевая карта не совпадает с тем прерыванием, что вкомпиляно в ядро. Сложность в том, чтобы узнать это самое реальное прерывание. Есть ли под FBSD какие-нить утилитки, которые сумеют это дело отследить?
Карточка использует драйвер ed(4) и представляет из себя плату pcmcia для ноутбука.
dmesg ничего интересного на эту тему не показывает, он лишь пишет прерывание pci-контроллера общее для всех подключенных к pci плат.
Я с этой проблемой уже сталкивался и точно знаю, что все дело в описанном выше конфликте. К сожалению, в прошлый раз я ее решил грубой переустановкой системы и указанием правильных опций sysinstallу.

abrek

помню в Linux 1.2 тоже надо было указывать irq при компиляции, настройка звука занимала у меня недели

aliska12

ed%d: device timeout Indicates that an expected transmitter interrupt
didn't occur. Usually caused by an interrupt conflict with another card
on the ISA bus. This condition could also be caused if the kernel is
configured for a different IRQ channel than the one the card is actually
using. If that is the case, you will have to either reconfigure the card
using a DOS utility or set the jumpers on the card appropriately.

цитата из мана про мою трудность. Странно как-то пользоваться некой досовской утилиткой при наличии полноценной операционки. Еще я где-то видел рекомендацию воспользоваться инфой из виндового менеджера устройств для настройки своего юникса (сам я не раз так делал)

abrek

> Странно как-то
а что странного в том, что драйвер поддерживает не все функции устройства?
ещё бывает ISA PnP, иногда работает, про поддержку в *BSD не знаю

aliska12

а на каких прерываниях вероятнее всего будет висеть сетевая карточка?

eee1

11

sergey_m

Если она у тебя ISAшная, то не еби себе мозг - выкинь ее из окна. Если она PCI, то не нужно прописывать никаких прерываний, просто device ed.

tucha96

Вот это BSD-подход :-)

Filan

> Карточка использует драйвер ed(4) и представляет из себя плату pcmcia для ноутбука.
А ты точно не перепутал?
Что-то я "побыстрому" в линте не нашёл ни одной PCMCIA (да и PCI) карточки с ником ed...

aliska12

не перепутал, уж можешь мне поверить. Она NE2000 compatible и требует как раз ed драйвер. Я фрю на ноут ставил с ее помощью по ftp

sergey_m

Тогда в ядре должно быть device ed, и должен быть запущен pccardd.

aliska12

все это запущено и работает, но не так, как должно. Где-то конфликт и я не знаю, как его устранить.
Постоянный device timeout, что значит, где-то конфликт прерываний (так написано в man 4 ed). Я не понимаю, что там " у ней внутре" происходит, потому и не могу поправить.

sergey_m

В ядре как объявлен ed?
На самом деле device timoeout "вылазит" не только из-за конфликта прерываний. Например на коаксиальной ne2000 он вылазит когда коаксиальный сегмент не терминирован.

aliska12

пробовались два разных способа.
Прямо сейчас в ядро вкомпиляны:
device miibus
device ed
вторая строка без первой не хочет компиляться.
Еще пробовал писать такую строчку:
device ed0 at isa? port 0x280 irq 10 iomem 08000
Не только с 10 прерыванием. Также добаляю строчку
pccardd_flags=' -i 10'
в /etc/rc.conf , где ' -i 10' номер прерывания.

sergey_m

Сделай
pccardd_flags=""

aliska12

уже делал, это ничего не меняет.
Только что заново вставил в ядро
device ed
Теперь при загрузке выдается следующее:
__________________________________
config> en ed0
No such device ed0
и т.д.
__________________________________
Наскока я понял, эта команда берется из /boot/kernel.conf.
Если в ядре исправить device ed на
______________________________________________
device ed0 at isa? disable port 0x280 irq 5 iomem 08000
______________________________________________
то такая ошибка выдаваться не будет, и устройство ed0 появится.
Вообще, что это за файл такой /boot/kernel.conf? Похоже, он не меняется при переустановке ядра. Я пробовал менять в нем некоторые строчки руками, например:
ir ed0 5 #почему-то мне кажется, что тут имеется ввиду прерывание

Filan

Убери эту строчку из /boot/kernel.conf.

sergey_m

А вот это в ядре есть:?


device pcic0 at isa?
device pcic1 at isa?
device card


А что выдает pccardd -d ?

aliska12

Сообщение об ошибке пропало, но проблемы не решило.
Подводя итог, на текущий момент настройки следующие.
kernel
device miibus
device ed
device card
device pcic0 at isa? irq 0 port 0x3e0 iomem 00000
device pcic1 at isa? irq 0 port 0x3e2 iomem 04000 disable
/etc/rc.conf
pccard_enable="YES"
pccard_ifconfig="DHCP"
pccardd_flags=""
dmesg говорит
pccard: card inserted, slot 0
pccard: card removed, slot 0
pccard: card inserted, slot 0
ed0 at port ....... irq 11 slot 0 on pccard0
ed0: address ..............., type NE2000 (16bit)
ed0: device timeout
ed0: device timeout
...

aliska12

см. измененное сообщение выше
> pccardd -d

Code 240 not found
Code 240 not found
code Unknown ignored


что, наверное, естесственно, т.к. этот демон уже запущен.
Короче, dmesg говорит, что все pccard слоты найдены и все в порядке.

sergey_m

А сетевушка на витой паре или на коаксиале?

aliska12

на витой. Сам кабель и дырку в свитче я уже проверил.

aliska12

Все пофиксил
Нужно было убрать из /etc/rc.conf

pccard_ifconfig="DHCP"


и вставить

ifconfig_ed0="DHCP"


Текущие (работающие) настройки:
kernel

device miibus
device ed
device card
device pcic0 at isa? irq 0 port 0x3e0 iomem 00000
device pcic1 at isa? irq 0 port 0x3e2 iomem 04000


/etc/rc.conf

pccard_enable="YES"
pccardd_flags=""
ifconfig_ed0="DHCP"


И еще я убрал все упоминания о ed из /boot/kernel.conf
Огромное спасибо Glebius and за их внимание и помощь!
Часть информации была почерпнута из списков рассылки freebsd-freebsd.org и freebsd-freebsd.org
Оставить комментарий
Имя или ник:
Комментарий: