|
Page : 1 2 Page Précédente | |
Auteur | Sujet : Unix, l'ACPI et les BIOS, on en est où ? |
redvivi | Bonjour à tous ! Ceci est mon coup de gueule de l'année et accessoirement ma révolte du mois. Vous avez des valeurs de température aberrantes ? Vous n'arrivez pas à contrôler vos ventilateurs, vous avez des freezes, un support incomplet voir catastrophique de la gestion de l'énergie et vous êtes vous Linux ? Ce post est fait pour vous. L'ACPI, vous connaissez ? Simplement, l'Advanced Configuration and Power Interface permet le contrôle de la gestion d'énergie par le système d'exploitation. Le standard industriel précédent, Advanced Power Management (APM), est contrôlé au niveau du BIOS et le système d'exploitation n'a pas connaissance du moment où l'ordinateur change ou va changer d'état (mise en veille ou non, charge batterie critique, vitesse des ventilateurs, veille prolongée etc). L'ACPI est généralement configuré à partir du système d'exploitation. Celà est possible à l'aide de la table de description différenciée du système (DSDT). La DSDT fournit beaucoup d'informations au système d'exploitation comme le nombre de processeurs et leurs paramètres, certains IRQ, les paramètres de contrôle des Petit préalable pour les profanes: L'IRQ (Interrupt Request ou demande d'interruption) permet de contrôler et séquencer le traitement des données de votre ordinateur. Imaginez que vous jouiez à Quake en local, et votre carte Ethernet reçoit un paquet, par exemple contenant le message MSN du boulet de votre liste de contact (on en a tous un...), hop, une demande d'interruption est générée qui va dire au CPU "Hého j'ai un paquet qui vient d'arriver, il faut que tu le traites fissa". Le CPU traite le paquet Ethernet, envoie le joli son MSN dans vos hauts parleurs entre 2 tirs de machinegun et reprend son activité histoire que vous fassiez quelques frags. Un autre exemple d'interruption de la vie courante: Vous écrivez un article sur ce beau forum et vous avez soif: vous arrêtez votre activité, vous allez boire et vous reprenez la rédaction, c'est le principe de l'interruption. L'APIC comprend 2 composants: l'IO-APIC et le Local APIC ( http://en.wikipedia.org/wiki/Intel_APIC_Architecture ). L'IO-APIC est une table de redirection des IRQ des périphériques (gère les interruptions entre les périphériques, comme le système DMA qui permet de transférer des données entre disques durs/lecteur CD sans passer par le CPU). le Local APIC (LAPIC), lui gère les interruptions du CPU par rapport aux autres périphériques (le boulet sur MSN). Comme vous pouvez l'imaginer, si la DSDT n'est pas correcte, celà compromet le bon fonctionnement de l'APIC les symptômes suivants peuvent apparaitres:
Pourquoi ce comportement irrationnel ? Visiblement, le BIOS et ses composants (ACPI, APIC) étaient en cause. J'ai décompilé et recompilé la DSDT et j'ai eu les erreurs que vous pourrez trouver à la fin de ce post. Pourquoi tant d'erreurs ? J'ai appris qu'il y avait, sur le "marché" du BIOS, 2 compilateurs permettant de compiler le code DSDT source en code assembleur ( http://www.acpi.info/ ), l'un provenant d'Intel, l'autre de Microsoft. Le compilateur d'Intel est réputé plus strict et respecte les spécifications de l'ACPI. De plus, le code source du kernel Linux utilise le code Intel afin de gérer la DSDT. Celui de Microsoft peut poser problème et générer des tables non conformes, d'où les erreurs et warnings en fin de post qui provoquent des instabilités systèmes sous Linux. Autre chose: Une rapide lecture de la DSDT peut nous amener à ces lignes là:
Comme nous pouvons le constater, la DSDT fournie au système d'exploitation n'est pas la même suivant le système d'exploitation détecté. Pourquoi celà ? Mettons nous à la place d'un constructeur de carte-mère qui respecte l'ensemble des spécifications. Malheureusement, cette carte-mère fonctionne mal à cause de certains bugs présents dans Windows au niveau de la gestion de la DSDT. Il faut absolument corriger ce problème car Windows représente plus de 90% de la part de marché. Il nous reste comme seule levier d'action le BIOS, c'est ainsi que l'on demandera à nos développeurs d'inclure des DSDT différentes selon le système d'exploitation afin de corriger ces bugs pour que tout fonctionne bien sous Windows. Malheureusement, ces corrections de bugs sont dangereuses car les systèmes Windows accepte les modifications de DSDT de toutes les versions de Windows (voir les boucles if précédentes) selon Windows Hardware Developer Central:http://www.microsoft.com/whdc/archive/_OSI-method.mspx. Linux, pour des questions de compatibilités, accepte également les modifications de DSDT de tous les Windows (et pas celle de Linux depuis la 2.6.23, paradoxalement (ftp://ftp.suse.com/pub/people/tre [...] endors.pdf), en effet ce serait bête qu'un périphérique ACPI comme un ventilateur soit détecté sous Windows et pas sous Linux). Ces "corrections de bugs" au niveau du BIOS au profit du système d'exploitation de Microsoft peuvent mener à des emplacements mémoires qui se superposent ou encore des aberrations au niveau des IRQ ("salade IRQ" ). Détail de la compilation d'une table DSDT par le compilateur Intel compilé à l'aide de celui Microsoft:
Afin d'avoir une vision plus globale du problème (et de mesurer l'étendue des dégâts), je vous propose la manipulation suivante afin de déterminer si votre table DSDT fournie par le constructeur de votre carte-mère est conforme et trouver l'origine de vos éventuels problèmes :
iasl est l'Intel ACPI Source Language compiler/decompiler Voilà, j'en ai fini. Si vous avez des erreurs, warnings lors de cette manip n'hésitez pas à indiquer le modèle/constructeur de votre carte-mère en cause. Eventuellement il est possible de débugger une DSDT en chargeant une version DSDT débuggée par vos soins dans l'initramfs, donc si vous en sentez le besoin postez l'output de iasl -tc DSDT.dsl Message édité par redvivi le 22-04-2009 à 15:54:49 |
Publicité | Posté le 20-04-2009 à 21:05:12 |
fighting_falcon |
deK watching for beerz on the wing | Topic très intéressant
--------------- (old) Feed HA/V |
deK watching for beerz on the wing | Sur ma Gigabyte GA-EP35-DS3, ça a déjà l'air moins propre :
--------------- (old) Feed HA/V |
redvivi | Ce lien pourrait faire d'affaire, cependant ça fait un bout de temps qu'il n'est pas à jour ! Les personnes qui sont prêtes à débugger de l'assembleur sont plutôt rares... Apparemment Acer n'a pas succombé au lobby du compilateur Microsoft (d'ailleurs quelqu'un sait qui est le constructeur de leur carte-mère !?), Gigabyte ça a l'air moins pire, j'ai vraiment l'impression que je suis tombé sur le constructeur qu'il ne fallait pas pour mettre Linux dessus. J'aimerais bien savoir où en sont les cartes mères Intel, ce serait un comble si ils utilisaient M$ pour leur BIOS Message cité 1 fois Message édité par redvivi le 21-04-2009 à 14:32:52 |
deK watching for beerz on the wing |
--------------- (old) Feed HA/V |
fighting_falcon | je posterai pour mon HP nc6120, mais pareil y'a des erreurs ... |
deK watching for beerz on the wing | HP DV4-1105ef :
--------------- (old) Feed HA/V |
BloodyCarnage | Je sens que ça va être funky sur mon asus à base de chipset nvidia |
redvivi | Je sens le carnage arriver.... |
Publicité | Posté le 21-04-2009 à 17:29:42 |
redvivi | Là par contre c'est plus grave: un string qui ne doit pas contenir de caractères spéciaux, et des tests qui ne fonctionnent pas ! Je tire mon chapeau à Dell ! Message édité par redvivi le 21-04-2009 à 17:34:49 |
BloodyCarnage | Contre toute attente c'est pas si affreux que ça :
|
redvivi |
Non ne t'inquiète pas ce sont les optimisations faites par le compilateur d'Intel lors de la tentative de compilation, pas les compilations effectives de ton ACPI . Cependant celà veut dire que le code peut-être optimisé, en recompilant ta DSDT et en la mettant dans ton initramfs, tu aura ainsi un BIOS et une gestion des IRQ optimisés. Même si il n'y a pas d'erreur, les warnings peuvent très bien être des fonctions/tests qui ne fonctionnent pas, d'où peut-être tes erreurs de ton log (cf post de raphoun). Quelle est la marque/modèle de ta carte-mère ? Message édité par redvivi le 22-04-2009 à 15:38:40 |
BloodyCarnage | Asus P5N-E SLi (nforce 650 SLi).
|
redvivi | je crois que je définitivement laisser tomber Asus, c'est quand même important ce genre d'erreur qui mettent en cause la stabilité de la machine. Message édité par redvivi le 21-04-2009 à 18:29:23 |
M300A | Asus EEEPC 901 (netbook)
Message édité par M300A le 21-04-2009 à 23:44:28 |
M300A | Asus P5Q-E
|
redvivi | C'est une blague ? Intel aussi s'y met ? Quel age a cette carte-mère ? Message édité par redvivi le 22-04-2009 à 13:46:08 |
guepe J'ai du noir sur la truffe ? | Ca a l'air plutot recent (LGA775) : http://pentium.com/products/mother [...] /index.htm --------------- Un blog qu'il est bien |
M300A | C'est une petite carte MicroATX avec un Pentium4 Bi-core 2.8Ghz. |
M300A | Ah oui, les BIOS sont à jours sur toutes ces bécannes ! |
sebfun | intéressant ce post |
redvivi |
Je ne suis pas expert mais il y a vraiment quelquechose qui ne tourne pas rond. Quand je regarde sur le site d'Intel ( http://pentium.com/design/motherbd [...] yspecs.htm ) les spécifications ACPI de la carte sont:
Rapide lecture de la spécification ( http://www.acpi.info/DOWNLOADS/ACPIspec-2-0a.pdf ):
Autre chose:
Est-ce que vous lisez comme moi: ils ont (déclaré une variable/méthode ?) alors que c'est un nom réservée ? (DSDT.dsl 1459: Name (_PSW, 0x01)) ? Message édité par redvivi le 22-04-2009 à 15:40:31 |
redvivi | EDIT: J'ai un peu remanié mon premier post en ajoutant des informations sur les IRQ et le pourquoi du comment de l'APIC. Message édité par redvivi le 22-04-2009 à 15:45:54 |
BloodyCarnage | Ce qui est dommage, c'est que ce post risque de ne faire que soulever la question sans pouvoir y apporter de solution envisageable.
|
redvivi | On peut toujours remplacer le DSDT par une DSDT débuggée, mais ça reste du debugging et spécifique à chaque carte-mère. Cependant il est important, je pense, de prendre conscience du problème et de son ampleur. Message édité par redvivi le 22-04-2009 à 18:13:25 |
BloodyCarnage | D'un autre côté, ce que veulent les constructeurs, c'est vendre. De deux choses l'une, soit :
|
redvivi | Ben le pire c'est que leur compilateur est en libre accès. Disons que si c'était une histoire de compilateur, le code serait à peu près correct. Mais là c'est plus grave: les développeurs se permettent de coder d'une manière peu réglementaire et non stricte car ils savent que le compilateur Microsoft derrière acceptera un code mal foutu (premier aspect qui est pas compliqué à résoudre quand meme, c'est la moindre des choses de ne pas superposer des plages mémoires !). Le deuxième aspect est que les constructeurs demandent aux dev de construire des fonctions pour palier aux bugs de Windows, là on ne peut pas faire grand chose mais ça n'empêche pas de créer un BIOS correct qui est la base du PC. Message édité par redvivi le 22-04-2009 à 19:15:39 |
crouik | j'y comprend rien du tout, mais c'est un toshiba satellite U200
|
redvivi | Jusqu'ici Acer et Toshiba sont réglos, dommage qu'ils ne fassent pas de carte-mère . Il peut etre en version Linux ton Toshiba ? Message cité 1 fois Message édité par redvivi le 22-04-2009 à 19:22:24 |
deK watching for beerz on the wing |
--------------- (old) Feed HA/V |
M300A | Un lien extremement interressant je trouve:
|
M300A |
|
redvivi | C'est quand même malheureux que l'on soit obligé de faire du reverse engineering pour faire fonctionner linux.... Que veux tu dire que ça ne marche plus, tu l'overclock un peu et tu ne peux plus changer la valeur ? Message édité par redvivi le 22-04-2009 à 22:33:11 |
deK watching for beerz on the wing |
crouik |
|
BloodyCarnage |
|
M300A |
|
guepe J'ai du noir sur la truffe ? | Je viens de tester avec mon dell dimension 9200 (desktop avec 4Gio de Ram fournie avec Vista 32 normalement )
--------------- Un blog qu'il est bien |
Publicité | Posté le |
Page : 1 2 Page Précédente |
Sujets relatifs | |
---|---|
Mail reader PHP pour lire les mails d'un compte unix | Unix.Comment avoir la liste des commandes qui commencent par ... |
Debian Etch n'utilise pas toute la RAM malgré une bonne détection BIOS | Factorielle sous Unix (Résolu) |
Machine virtuelle Unix sous Windows ? | Questions sur les droits sudo sous Unix |
Tablet pc sous un unix... | Neoware E100 : Comment accéder au bios ? |
[Unix] Users dans /etc/group : kezaco ? [CLOS] | probleme avek linux et bios |
Plus de sujets relatifs à : Unix, l'ACPI et les BIOS, on en est où ? |