Asignación de IRQ

  • 1
marcelu80
#1 por marcelu80 el 14/04/2008
Hola a todos,

Acabo de comprar una tarjeta de sonido firewire Presonus FP10, la cual funciona a la perfección en Linux. Por otro lado tengo una controladora firewire Sunix con chipset Texas Instruments. El caso es que para que jack funcione adecuadamente, sin problemas de xrun ni otra clase de ruidos, tengo que combinar los frame/periods a 512 llegando a una latencia de 34ms, cosa que es una barbaridad tratándose de una tarjeta de este tipo capaz de trabajar con latencias de 2ms.

He revisado montones de cosas pero lo que veo más claro es que la controladora firewire comparte IRQ con mi tarjeta de red lo cual no tiene porque ser malo pero sí que podría serlo. Si pongo lspci -v entre otras cosas me devuelve:
Alguien escribió:

03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 01)
Subsystem: Giga-byte Technology Unknown device e000
Flags: bus master, fast devsel, latency 0, IRQ 17
I/O ports at a000

Memory at eb000000 (64-bit, non-prefetchable) [size=4K]
[virtual] Expansion ROM at 50000000 [disabled] [size=64K]
Capabilities:

04:01.0 FireWire (IEEE 1394): Texas Instruments TSB43AB23 IEEE-1394a-2000 Controller (PHY/Link) (prog-if 10 [OHCI])
Flags: bus master, medium devsel, latency 32, IRQ 17
Memory at ec004000 (32-bit, non-prefetchable) [size=2K]
Memory at ec000000 (32-bit, non-prefetchable) [size=16K]
Capabilities:

Me sorprende que de los 18 componentes que me lista el comando todos tengan latency 0 excepto este, que además resulta que sólo funciona bién ajustando la latencia a 34.8ms, muy parecido. ¿No es mucha casualidad?

Naturalmente he probado a cambiar la IRQ desde la BIOS pero parece que mi placa es Plug&Play, por lo que cede al sistema la asignación de cada componente.

¿Debo cambiar la IRQ por narices, verdad? ¿O basta con incrementar la prioridad de la controladora como sugieren aqui http://tapas.affenbande.org/wordpress/?page_id=40?, aunque no solucionaria nada porque las dos tarjetas comparten la misma interrupción.

Gracias por adelantado.

PD: No es problema de capacidad porque el ordenador es moderadamente potente.
Subir
OFERTAS Ver todas
  • -6%
    Elektron Digitakt II (B-Stock)
    939 €
    Ver oferta
  • -50%
    NI Komplete 15 Collector's Edition
    885 €
    Ver oferta
  • -7%
    Modal Argon8 (B-Stock)
    559 €
    Ver oferta
marcelu80
#2 por marcelu80 el 14/04/2008
Encontré esto pero tratándose de un tutorial de 1997 no sé si fiarme un pelo...http://cae.best.vwh.net/irqtune/
Subir
marcelu80
#3 por marcelu80 el 14/04/2008
He cambiado la tarjeta de slot y ahora ya tengo firewire en la IRQ 19 de manera exclusiva, pero me marca latencia 32ms igualmente. Adjunto registro nuevamente:
04:00.0 FireWire (IEEE 1394): Texas Instruments TSB43AB23 IEEE-1394a-2000 Controller (PHY/Link) (prog-if 10 [OHCI])
Flags: bus master, medium devsel, latency 32, IRQ 19
Memory at ec004000 (32-bit, non-prefetchable) [size=2K]
Memory at ec000000 (32-bit, non-prefetchable) [size=16K]
Capabilities:

Ando bastante perdido. No me gasté una pasta con una tarjeta de audio de ultrabaja latencia para tragarme la latencia de la controladora.
Subir
Ismael Valladolid Torres
#4 por Ismael Valladolid Torres el 16/04/2008
La IRQ 19 no existe, es una IRQ virtual. Intenta deshabilitando APIC en el BIOS e intenta por todos los medios que la tarjeta coja la 10 o la 11.

No te garantizo que puedas hacerlo. En tiempos de Windows 98, el Pentium III y la ASUS P3B-F era casi obvio pinchar las tarjetas y darle a cada una la IRQ que te apetecia darla. Luego llego Windows XP, APIC, y a los fabricantes les empezo a dar igual el asunto de las IRQ. En su descargo, es muy extrano que hoy en dia una tarjeta, controladora de red, USB2 o Firewire no comparta IRQ sin problemas con cualquier otra cosa.

Si no consigues nada dimelo por aqui y pregunto en linux-audio-user.
Subir
marcelu80
#5 por marcelu80 el 16/04/2008
Gracias Ivalladt. La verdad es que mi placa tiene más bién pocas opciones. En el manual no habla en ningún momento del APIC. Hay un menú en la BIOS donde puedo asignar la IRQ a cada uno de los 3 slots PCI, y de hecho fue lo primero que hice. Quito el auto y le marco IRQ 10 pero cuando entro en Linux me ha asignado la que le da la gana. De hecho va cambiando de la 19 a al 20 entre un arranque y otro. Incluso windows pasa de todo y le asigna la 20.

Por si podeis hacer algo adjunto enlace del manual de mi placa Gigabyte http://europe.giga-byte.com/FileList/Manual/motherboard_manual_ga-945p_s3_e.pdf

Cuando llegue a casa me pondré manos a la obra de nuevo.

Un saludo.
Subir
Ismael Valladolid Torres
#6 por Ismael Valladolid Torres el 16/04/2008
Puedes arrancar tu kernel con las opciones "noapic" y/o "nolapic" y teóricamente debería desactivarse la asignación de IRQ virtuales y tu tarjeta debería quedarse con la IRQ que le asigne la BIOS. Prueba y nos cuentas.

Sabes añadir las opciones al kernel durante el arranque, ¿no?
Subir
marcelu80
#7 por marcelu80 el 16/04/2008
He mirado la BIOS de arriba a abajo y no hay nada de APIC. Lo más que se parece es ACPI suspend type y no tiene nada que ver. Las interrupciones 10 y 11 están libres por lo que iría de perlas ponerla allí.
No tengo mucha maña añadiendo modulos al núcleo. Ya busco por Google a ver si me entero...

Saludos Ivalladt!
Subir
marcelu80
#8 por marcelu80 el 16/04/2008
Subir
Ismael Valladolid Torres
#9 por Ismael Valladolid Torres el 16/04/2008
¿Ha funcionado?
Subir
marcelu80
#10 por marcelu80 el 17/04/2008
Tu consejo ha funcionado que ni pintado. Con la opción noapic me respeta la asignación de la BIOS. Ahora ya no comparte nada con ningun otro dispositivo. La mala notícia es que me sigue poniendo latency 32. Ya no me quedan ideas:

04:00.0 FireWire (IEEE 1394): Texas Instruments TSB43AB23 IEEE-1394a-2000 Controller (PHY/Link) (prog-if 10 [OHCI])
Flags: bus master, medium devsel, latency 32, IRQ 11
Memory at ec004000 (32-bit, non-prefetchable) [size=2K]
Memory at ec000000 (32-bit, non-prefetchable) [size=16K]
Capabilities: [44] Power Management version 2


¿Será un problema de la tarjeta? No creo que una controladora que montan los de Citriq añada 32 ms de latencia y se queden tan anchos. ¿Alguna sugerencia? Gracias por tu tiempo.
Subir
Ismael Valladolid Torres
#11 por Ismael Valladolid Torres el 17/04/2008
Se lo pregunto a los gurús y ya te cuento...
Subir
Ismael Valladolid Torres
#12 por Ismael Valladolid Torres el 17/04/2008
Ahora que lo pienso, ¿estás corriendo un kernel rt?
Subir
marcelu80
#13 por marcelu80 el 17/04/2008
Ja ja ja. Sí claro. Ubuntu studio con:

marcel@ubuntu:~$ uname -a
Linux ubuntu 2.6.22-14-rt #1 SMP PREEMPT RT Tue Feb 12 09:57:10 UTC 2008 i686 GNU/Linux

Vaya susto, ¿no?
Subir
Ismael Valladolid Torres
#14 por Ismael Valladolid Torres el 17/04/2008
My colleague bought a Presonus FP10 firewire audio interface, which
reports working nice in Linux. Moreover he owns a firewire controller
made by Sunix with a Texas Instruments chipset. He tells us that for
having jackd working without xrun and no other artifacts he needs to
use 512 frame/periods, then latency is 34ms, which could be considered
awful as this card is able to work with 2ms latency using other
operating systems.

He checked IRQ and saw that the firewire controller shared IRQ with
the network interface. Check out output of lspci -v .

03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd.
RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 01)
Subsystem: Giga-byte Technology Unknown device e000
Flags: bus master, fast devsel, latency 0, IRQ 17
I/O ports at a000
Memory at eb000000 (64-bit, non-prefetchable) [size=4K]
[virtual] Expansion ROM at 50000000 [disabled] [size=64K]
Capabilities:

04:01.0 FireWire (IEEE 1394): Texas Instruments TSB43AB23
IEEE-1394a-2000 Controller (PHY/Link) (prog-if 10 [OHCI])
Flags: bus master, medium devsel, latency 32, IRQ 17
Memory at ec004000 (32-bit, non-prefetchable) [size=2K]
Memory at ec000000 (32-bit, non-prefetchable) [size=16K]
Capabilities:

lspci lists 18 devices and every one of then reports 0 latency except
the firewire controller. And hardware latency is 32ms, very near the
34ms of audio latency reported by jackd. So one could think that if
the firewire controller added no latency, audio latency could be as
low as 2ms. Strange, isn't it?

So it looks that audio latency achievable by jackd is limited by
hardware latency achievable by the firewire controller.

He even tried locating a PCI slot that doesn't share IRQ and running
the kernel with the noapic and nolapic options so the system ends
reporting the sound card in the IRQ 11, which is nice. No change,
hardware latency is 32ms in any case.

marcel@ubuntu:~$ uname -a
Linux ubuntu 2.6.22-14-rt #1 SMP PREEMPT RT Tue Feb 12 09:57:10 UTC
2008 i686 GNU/Linux

Anything else can be tested? Or should he put back the PCI firewire
controller and buy another? Which one? Any ideas welcome. Personal
answers not to the list also welcome.

A ver qué nos cuentan...
Subir
marcelu80
#15 por marcelu80 el 17/04/2008
Mil gracias. Yo ya cruzo los dedos.
Subir
Hilos similares
Nuevo post

Regístrate o para poder postear en este hilo