# [kernel] Chargement driver ATI échoue.

## GarulfoUnix

Bonjour, 

après avoir parcouru de nombreux sujets et liens sur internet, et essayé de multiple manipulations, je post ici afin peu-être, d'obtenir une réponse du comment du pourquoi et surtout, pour résoudre ce détail embêtant.

Je possède une carte graphique AMD Radeon HD 6950 et désire utiliser le pilote libre. 

J'ai fait un emerge readon-ucode pour avoir les firmwares, dont ces derniers sont bien présent dans /lib/firmware. 

J'ai configuré mon kernel pour qu'il pointe vers les firmwares CAYMAN et lors du démarrage de Gentoo (donc au boot), j'obtiens un :

Failed to load firmware "radeon/CAYMAN_pfp.bin"

Je suis sous Gentoo 64 bits. 

Ma question est : pourquoi il ne trouve pas CAYMAN_pfp.bin dans /lib/firmware alors qu'il est présent, et configuré dans le kernel? 

Merci d'avance pour vos réponses.

----------

## El_Goretto

Tu n'as pas besoin de "configurer" le kernel pour les fichiers de firmware s'ils sont accessibles au boot dans /lib (donc pas tout à fait dès le début du boot). Cette "configuration" est en fait nécessaire si tu veux inclure dans le noyau lui même ces fichiers de firmware pour bénéficier plus tôt dans le boot de l'activation du driver. Dans ce dernier cas, sois conscients que plusieurs fichiers sont à inclure (pas de bol, j'ai déjà fait çà mais n'ai pas la conf sous la main. De mémoire, il y a 2 ou 3 fichiers à inclure).

Bref, 2 façons de procéder (la simple (rien à faire  :Smile: ), et l'autre à faire une fois pour toute).

--

edit: pour la solution simple, il est possible qu'il faille mettre radeon en module et non en dur dans le noyau, pour des raisons de timing durant le boot).

----------

## GentooUser@Clubic

Tu utilise genkernel et/ou un initrd ?

Si le message provient de l'initrd (avant que s'affiche la version d'OpenRC) c'est qu'il faut intégrer le fichier à celui-ci, si tu utilise genkernel celà s'active dans /etc/genkernel.conf.

----------

## GarulfoUnix

Non je n'utilise pas Genkernel et pas de initrd. 

Du moins je me demande vraiment si j'utilise un initrd ou pas... De facto, il est préférable d'en utiliser un? 

D'autre part, j'ai pas précisé dans mon premier message que j'avais installé les drivers propriétaires pendant l'installation de ma Gentoo. Du fait que c'était encore beaucoup plus merdique, j'ai préféré opter pour la solution libre. 

J'ai donc fait un "emerge -C ati-drivers" pour supprimer fglrx, mais quand j'ai épluché le 'dmesg' je constate qu'il est quand même chargé. Bon je doute qu'il y a un quelconque rapport avec mon problème actuel. Je pense que ça causerait soucis à un niveau bien plus loin dans le système (par exemple au démarrage de Xorg).

GentooUser@Clubic, pour répondre à ta question malgré mes premiers dires, ce message apparaît oui en effet avant OpenRC. 

El_Goretto, j'ai tenté ton approche en supprimant ce qui était visiblement inutile et le changement apporte toujours un résultat néant.

----------

## GentooUser@Clubic

Pour l'initrd c'est pas une question de préférable ou pas, plutôt d'utile ou pas  :Wink: 

Si tu n'a pas utilisé genkernel tu as configuré ton noyau à la main ? Le driver de ta radeon tu l'a mis en dur ou en module ?

----------

## El_Goretto

Je recommence mon explication.

1- méthode simple:

radeon est en module dans le noyau, chargé au démarrage "mais pas dès le chargement du noyau", donc il va pouvoir avoir accès à /lib/firmware sans problème quand il va se charger, et prendre lui même les fichiers firmware dont il a besoin (il a accès à tout). Donc: pas de configuration en rapport avec le firmware à mettre dans le noyau.

2- méthode "config deluxe":

radeon en dur dans le noyau, mais il faut alors "inclure" les fichiers firmware dans le noyau (en les listant 1 à 1 dans le champ prévu à cet effet) pour qu'ils soient dispo quand le driver se charge, soit dès le début. Le fait est que dans ce cas, on aime souvent avoir un "splashscreen" qui en jette, et donc du coup, dans mon cas, j'ai ajouté un initrd (obligatoire pour le splashscreen). Je pense (mais je peux me planter), qu'on peut se passer d'initrd si on se passe de splashscreen dans cette méthode. Si jamais tu veux un initrd, que tu n'utilises pas genkernel, mais que tu n'as pas envie de te prendre le choux, regarde dracut pour le générer simplement, c'est super convi, j'adore  :Smile: 

Pour la config noyau dans le cas d'un HD6950: CONFIG_EXTRA_FIRMWARE="radeon/CAYMAN_mc.bin radeon/CAYMAN_me.bin radeon/CAYMAN_pfp.bin radeon/CAYMAN_rlc.bin"

Pour le reste, je te laisse chercher un peu sur le net, tu as normalement tous les pointeurs.

----------

## marmotton

Pour la méthode "2", je confirme qu'on peut de passer d'initrd : c'est ma config.

=> Pour la compil noyal je :

 - copie les fichier qui vont bien dans /usr/src/linux/firmware/radeon

 - modifie la conf pour avoir dans le .config :

```

CONFIG_FIRMWARE_IN_KERNEL=y

CONFIG_EXTRA_FIRMWARE="radeon/R600_rlc.bin radeon/R700_rlc.bin radeon/CYPRESS_me.bin radeon/CYPRESS_pfp.bin radeon/CYPRESS_rlc.bin"

CONFIG_EXTRA_FIRMWARE_DIR="firmware"

```

----------

## El_Goretto

 *marmotton wrote:*   

> 
> 
>  - copie les fichier qui vont bien dans /usr/src/linux/firmware/radeon
> 
> 

 

Je ne crois pas que ce soit nécessaire, si?

----------

## guilc

Bah dans son cas si : il a modifié CONFIG_EXTRA_FIRMWARE_DIR pour mettre un chemin relatif au répertoire kernel.

Perso, je laisserai CONFIG_EXTRA_FIRMWARE_DIR="/lib/firmware/" comme ça, pas besoin de toucher les fichiers installés par portage, et la compilation va directement les choper au bon endroit  :Wink: 

----------

