Pergunta

Eu tenho dois Digium Wildcard TDM800P com 8 portas FXO cada. Quando eu ligar as duas coisas ao mesmo tempo IRQ erros começam a aparecer fazendo meu computador não responde e inutilizável.

Um cartão funciona bem, mas eu preciso de todos os 16 FXO portas ao trabalho de receber chamadas de meu Telco. Existe uma maneira para os cartões para se comunicar uns com os outros para que eles não gerar tantas interrupções. Ou uma maneira de ajustar Linux para dedicar IRQ da separado para cada cartão.

Eu tentei desabilitar portas USB Áudio, ACPI e. Ainda muitos erros de IRQ.

Foi útil?

Solução

Esta questão seria melhor postado em serverfault, como este é um problema de hardware puro.

O problema que você está enfrentando é típica de altas placas PCI de interrupção em geral, e cartões de telefonia Digium em particular. Tenha em mente que o problema decorre de ter dois cartões na mesma bus PCI, seu objetivo é não tê-los interrupções share de IRQ.

Há um par de coisas que você pode tentar que pode resolver o seu problema:

1) Upgrade para DAHDI motoristas . Eles têm melhor contenção IRQ.

2) Mudança de um dos cartões para outro slot PCI . Alguns slots PCI sobre as pistas de acções da placa-mãe. Você quer evitar isso. Verifique o manual suas placas-mãe. Além disso, você pode executar o seguinte

cat /proc/interrupts

Você deve receber uma saída como esta

               CPU0       CPU1       CPU2       CPU3
  0:         37          2          5          8   IO-APIC-edge      timer
  1:          1          1          0          0   IO-APIC-edge      i8042
  8:          0          0          1          0   IO-APIC-edge      rtc0
  9:          0          0          0          0   IO-APIC-fasteoi   acpi
 12:          1          0          0          3   IO-APIC-edge      i8042
 14:         33         35         31         30   IO-APIC-edge      ide0
 20:          0          0          0          0   IO-APIC-fasteoi   uhci_hcd:usb2
 21:         37         37         41         38   IO-APIC-fasteoi   uhci_hcd:usb1, uhci_hcd:usb3, ehci_hcd:usb4
1269:      14357      14387      14387      14372   PCI-MSI-edge      eth0
1270:       2523       2490       2489       2503   PCI-MSI-edge      ioc0
NMI:          0          0          0          0   Non-maskable interrupts
LOC:     487635     236288     376032      88504   Local timer interrupts
RES:        507        516        571        701   Rescheduling interrupts
CAL:        205        281        237        201   function call interrupts
TLB:       2835       2190       2221       1737   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

Veja como na interrupção 21 é compartilhado por usb1, usb3 e usb4? Você não quer que isso aconteça com seus Digium cartões. By the way, Digium cartões ususaly aparecer como TDPXXX.

3) Load Balance interrupções entre CPU - Se o seu PC tiver mais de uma CPU e seu kernel e apoio motherboard IO-APIC, você pode carregar interrupções equilíbrio entre os diferentes CPUs. Isso também irá facilitar bastante a carga de interrupção em seus da CPU. Se você verificar o meu código postado anteriormente, você pode ver que interrupções do timer locais são distribuídos igualmente entre a CPU do. Se seus Digium cartões martelo apenas uma CPU (isso acontece) você pode espalhar a carga por tentar o seguinte. Dizer que queria mudar IRQ 21 (do USB acima mencionado)

cat /proc/irq/21/smp_affinity
ffffffff

Todos os 'f' nos dizem que a carga de interrupção de IRQ 21 é balanceamento de carga entre todos os CPU de. Se você quiser atribuí-la a uma determinada CPU, acrescentar que nuber para a direita em hexadecimal. Por exemplo, digamos que eu quero que o USB é a única CPU0 interrupção.

echo 1 > /proc/irq/21/smp_affinity 
cat /proc/irq/21/smp_affinity 
00000001

Então, agora apenas o primeiro CPU (CPU0) está habilitado para receber essas interrupções.

Boa sorte!

Outras dicas

PCI Digium cartões não funcionam bem quando você tenta ter mais de uma no mesmo computador. Eu tive um problema semelhante com 2 TE405 cartões no mesmo computador e tive que mudar para um cartão Sangoma (eu só precisava de um Sangoma porque suportam até 8 E1 está no mesmo cartão e é isso que eu precisava). Ou você pode tentar o AEX800 que é como o TDM800 mas é PCI-X, em vez de simples PCI idade. IIRC o problema está relacionado com o PCI.

JorgeO: Parece-me que você precisa atualizar seus drivers. Os últimos zaptel e DAHDI lançamentos incluem drivers para a TDM800P que configure a placa de uma forma que permite que o sistema seja mais tolerante do sistema host de interrupção latências.

Eu tenho Debian e não trabalho, eth0 mudança irq -> cpu0 um CPU2 cat / proc / IRQ / xxx / smp_affinity 00000003, mas não o trabalho dos procees continuar cpu0

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top