[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Раздача IRQ



Hello!

At Thu, 22 Mar 2007 15:49:29 +0300,
Max Dmitrichenko wrote:

 >> Есть роутер под приличной нагрузкой. Основная нагрузка лежит на 2
 >> сетевухи: eth0 и eth1
 >> # cat /proc/interrupts
 >>            CPU0
 >>   0:   39276550          XT-PIC  timer
 >>   1:         44          XT-PIC  i8042
 >>   2:          0          XT-PIC  cascade
 >>   5:   62000376          XT-PIC  VIA686A, eth1
 >>   6:          2          XT-PIC  floppy
 >>   7:          0          XT-PIC  parport0
 >>   8:          1          XT-PIC  rtc
 >>  10:          0          XT-PIC  uhci_hcd:usb1, uhci_hcd:usb2, eth2
 >>  11:   82591804          XT-PIC  acpi, eth0, eth3
 >>  12:      14786          XT-PIC  i8042
 >>  14:     333266          XT-PIC  ide0
 >> NMI:          0
 >> LOC:          0
 >> ERR:          0
 >> MIS:          0
 >> Как видно eth0 и eth1 сидят на своих IRQ вместе с другими устройствами.
 >> Возможно ли как-то монопольно посадить eth0 на одно IRQ, а eth1 на
 >> другое, всё остальное можно в кучу?
 >> Кто вообще рассаживает устройства по IRQ?
 > Есть IRQ, которые отведены под legacy устройства, а есть IRQ, которые отведены
 > под остальные устройства.
 > Legacy устройства не могут разделять одно IRQ, так как они генерируют прерывание
 > по фронту (Edge interrupt). К ним относятся прерывания таймера, последовательных
 > и параллельных портов, флоппи, клавиатуры, RTC. Поэтому прерывания 0, 1, 2, 3, 4,
 > 6, 7, 8, 12 забиты под эти устройства и никем не могут больше использоваться.
 > Теоретически некоторые номера прерываний можно поменять, но делает это как правило
 > BIOS, так как этот процесс весьма зависит от LPC контроллера, припаянного на мать.
 > К сожалению не помню точно, что касается IDE, а искать сейчас лень, но по-моему их
 > тоже нельзя шарить, то есть отпадают ещё 14ое и 15ое (у тебя видимо на IDE1 никого
 > нет, но его все равно не поюзаешь).
 > Контроллер прерывания у тебя PIC i8259A; на нем всего может быть 16 IRQ с номерами
 > от 0 до 15. Таким образом остаются незадействованными прерывания 5, 9, 10, 11 и 13.

В принципе, 3, 4, 5, 7, 9, 10, 11, 12, 14, 15 использовать можно на pci или даже на
isa. Irq 13 предназначется сопроцессору, 6 может роутиться на isa (за pci не скажу),
если отключен встроенный fdc. Возможность шарить существует и в случае срабатывания по
фронту, только железки должны быть соответствущие, их, кстати, не очень мало. Другое
дело, что legacy хоть и забирают по целому прерыванию, но в данном случае совсем не
мешают, еще не все прочие устройства могут садиться на отличное от 9-12, у них так 
унутри устроено. 
Btw идею отправить eth0 в пустой слот на irq 9 поддерживаю, не факт, что eth3
успешно подсядет на irq 5 к ac97 вместо eth1, и это всего одна перестановка. А eth0
не встроенная случайно?

Michael



Reply to: