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

Re: [résolu] passage noyau 2.4.31-> 2.6.12 triggered-leved IRQ ?





Pascal@plouf a écrit :

Salut,

C. Mourad Jaber a écrit :


J'ai trouvé la réponse en reconfigurant le BIOS de la machine qui faisait l'initiation de son bus PCI en "edge" et en lui forçant le "level", mon noyau 2.6.12 retrouve ses petits...


Ce qui est normal. Les lignes d'IRQ des slots PCI doivent être actives sur niveau ("level").

Si quelqu'un connait le fonctionnement des bus PCI, je suis prenneur d'un petit cours...


En fait le bus PCI en lui-même ne s'occupe pas du tout des interruptions. Il prévoit 4 lignes d'interruption INTA, B, C et D par slot, c'est tout. Dans l'architecture PC, un aiguillage programmable (IRQ steering) permet de router les lignes d'IRQ des slots vers les entrées du bon vieux contrôleur d'interruption, le même qu'en ISA avec ses 16 entrées dont une grande partie sont réservées. 4 lignes fois 5 slots, ça fait 20, soit beaucoup plus que le nombre d'entrées disponibles du contrôleur d'interruptions. Donc plusieurs lignes sont routées sur la même IRQ, et dès qu'il y a un peu trop de périphériques PCI ayant besoin d'une ou plusieurs IRQ, des IRQ doivent être partagées entre deux périphériques ou plus. Le résultat est un OU logique entre les différentes sources. Et pour partager, il est préférable d'avoir des IRQ sur niveau plutôt que sur front. Les IRQ du bus ISA étaient sur front, et il est bien connu qu'il ne fallait pas les partager sous peine de gros ennuis.


Merci pour cette explication :)
Je comprend mieux pourquoi ça posait problème...
Le noyau 2.4 devait gérer les irq différement, parce que ça n'avais jamais posé de pb...
@ +

Mourad



Reply to: