[mdk-re] Multiple Ethernet interfaces
Alexander Bokovoy
=?iso-8859-1?q?ab_=CE=C1_avilink=2Enet?=
Вт Апр 10 18:20:16 MSD 2001
On Tue, Apr 10, 2001 at 05:51:51PM +0400, Sergey Vlasov wrote:
> On Tue, 10 Apr 2001 13:07:02 +0400
> cornet <cornet на zmail.ru> wrote:
>
> > Я не слишком понимаю, как два девайса работая одновременно и
> > независимо
> > могут разделять одно прерывание! :-/
> > Поясните, pls.
>
> У шины PCI это стандартная возможность. В ядре Linux реализуется
> следующим образом: для каждого IRQ формируется цепочка обработчиков, и
> при поступлении прерывания все они вызываются по очереди. Каждый из
> обработчиков опрашивает свое устройство, и если запрос пришел от него,
> обслуживает. Поскольку запрос выставляется по уровню, а не по фронту,
> как на ISA, если даже в процессе такой обработки придет еще один
> запрос по тому же IRQ, он не пропадет - после возврата из прерывания
> сразу произойдет новое.
>
> Есть, правда, фокус: дело в том, что обработчиков два типа - обычный
> (работает при разрешенных других прерываниях) и SA_INTERRUPT (при его
> выполнении все прерывания запрещены). Так вот, на одном IRQ могут
> висеть только обработчики одного типа. Из-за этого сетевые и звуковые
> карты не могут жить на одном прерывании, например, со SCSI (или HPT3xx
> IDE). Решение проблемы в случае материнской платы с HPT3xx -
> переставить карточку в другой слот (наблюдал такую проблему на Abit
> BX133 RAID, у нее в книжечке расписано, какой слот с чем делит
> прерывание, надо только почитать :-).
Есть и еще один фокус -- одинаковые устройства не работают при
разделении одного прерывания. Попробуйте, например, на одну PCI-шину
повесить 4 сетевых радиокарты. (других PCI-устройств нет).
--
Sincerely yours, Alexander Bokovoy
The Midgard Project | ALT Linux Team | Minsk Linux Users Group
www.midgard-project.org | www.altlinux.ru | www.minsk-lug.net
-- Happiness is just an illusion, filled with sadness and confusion.
Подробная информация о списке рассылки community