-rt kernel et module nvidia

Salut,

J’ai un problème à l’installation du module nvidia ( j’ai utilisé sgfxi, smxi, m-a a-i nvidia et le .run direct ) sur mon nouveau noyau 2.6.33.7-rt29 de chez pengutronix. après avoir fouiné sur internet, il semblerait que l’actuel driver a besoin d’être patché. je l’ai fait, mais ça ne marche toujours pas.

Ce qui est encore plus étrange est le fait qu’avant cette installation, ce module pour mon précédent noyau 2.6.31.12-rt21 se compilait sans problème et que ce n’est plus le cas.

Voici les erreurs ( /var/log/nvidia-installer.log ) pour la compilation avec le driver 256.53

[code]nvidia-installer log file '/var/log/nvidia-installer.log’
creation time: Thu Nov 25 11:27:02 2010
installer version: 256.53

option status:
license pre-accepted : false
update : false
force update : false
expert : false
uninstall : false
driver info : false
precompiled interfaces : false
no ncurses color : false
query latest version : false
OpenGL header files : true
no questions : false
silent : false
no recursion : false
no backup : false
kernel module only : false
sanity : false
add this kernel : false
no runlevel check : false
no network : false
no ABI note : false
no RPMs : false
no kernel module : false
force SELinux : default
no X server check : false
no cc version check : true
force tls : (not specified)
force compat32 tls : (not specified)
X install prefix : (not specified)
X library install path : (not specified)
X module install path : (not specified)
OpenGL install prefix : (not specified)
OpenGL install libdir : (not specified)
compat32 install chroot : (not specified)
compat32 install prefix : (not specified)
compat32 install libdir : (not specified)
utility install prefix : (not specified)
utility install libdir : (not specified)
doc install prefix : (not specified)
kernel name : 2.6.33.7-rt29
kernel include path : (not specified)
kernel source path : /usr/src/linux-source-2.6.33.7-rt29
kernel output path : (not specified)
kernel install path : (not specified)
proc mount point : /proc
ui : (not specified)
tmpdir : /tmp
ftp mirror : ftp://download.nvidia.com
RPM file list : (not specified)

Using: nvidia-installer ncurses user interface
-> License accepted.
-> Installing NVIDIA driver version 256.53.
-> Not probing for precompiled kernel interfaces.
-> Performing CC sanity check with CC=“cc”.
-> Using the kernel source path ‘/usr/src/linux-source-2.6.33.7-rt29’ as
specified by the ‘–kernel-source-path’ commandline option.
-> Kernel source path: ‘/usr/src/linux-source-2.6.33.7-rt29’
-> Kernel output path: ‘/usr/src/linux-source-2.6.33.7-rt29’
-> Performing rivafb check.
-> Performing nvidiafb check.
-> Performing Xen check.
-> Cleaning kernel module build directory.
executing: ‘cd ./kernel; make clean’…
-> Building kernel module:
executing: ‘cd ./kernel; make module SYSSRC=/usr/src/linux-source-2.6.33.7-r
t29 SYSOUT=/usr/src/linux-source-2.6.33.7-rt29’…
NVIDIA: calling KBUILD…
test -e include/generated/autoconf.h -a -e include/config/auto.conf || (
echo;
echo " ERROR: Kernel configuration is invalid.";
echo " include/generated/autoconf.h or include/config/auto.conf are
missing.";
echo " Run ‘make oldconfig && make prepare’ on kernel src to fix it
.";
echo;
/bin/false)
mkdir -p /usr/src/sgfxi-downloads/NVIDIA-Linux-x86_64-256.53/kernel/.tmp_ver
sions ; rm -f /usr/src/sgfxi-downloads/NVIDIA-Linux-x86_64-256.53/kernel/.tm
p_versions/*

 WARNING: Symbol version dump /usr/src/linux-source-2.6.33.7-rt29/Module.sy

mvers
is missing; modules will have no dependencies and modversions.

make -f scripts/Makefile.build obj=/usr/src/sgfxi-downloads/NVIDIA-Linux-x86
64-256.53/kernel
cc -Wp,-MD,/usr/src/sgfxi-downloads/NVIDIA-Linux-x86_64-256.53/kernel/.nv.
o.d -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/4.5.1/include -I/usr/s
rc/linux-source-2.6.33.7-rt29/arch/x86/include -Iinclude -include include/g
enerated/autoconf.h -D__KERNEL
_ -Wall -Wundef -Wstrict-prototypes -Wno-trig
raphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration
-Wno-format-security -fno-delete-null-pointer-checks -Os -m64 -mtune=generic
-mno-red-zone -mcmodel=kernel -funit-at-a-time -maccumulate-outgoing-args -f
stack-protector -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -pipe -Wno-
sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mn
o-3dnow -Wframe-larger-than=2048 -fomit-frame-pointer -Wdeclaration-after-st
atement -Wno-pointer-sign -fno-strict-overflow -fno-dwarf2-cfi-asm -fconserv
e-stack -I/usr/src/sgfxi-downloads/NVIDIA-Linux-x86_64-256.53/kernel -Wall -
MD -Wsign-compare -Wno-cast-qual -Wno-error -D__KERNEL__ -DMODULE -DNVRM -DN
V_VERSION_STRING=“256.53” -mcmodel=kernel -mno-red-zone -UDEBUG -U_DEBUG -
DNDEBUG -DMODULE -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(nv)" -
D"KBUILD_MODNAME=KBUILD_STR(nvidia)" -c -o /usr/src/sgfxi-downloads/NVIDIA-
Linux-x86_64-256.53/kernel/.tmp_nv.o /us
r/src/sgfxi-downloads/NVIDIA-Linux-x86_64-256.53/kernel/nv.c
In file included from /usr/src/linux-source-2.6.33.7-rt29/arch/x86/include/a
sm/uaccess.h:573:0,
from include/linux/poll.h:13,
from /usr/src/sgfxi-downloads/NVIDIA-Linux-x86_64-256.53/ke
rnel/nv-linux.h:84,
from /usr/src/sgfxi-downloads/NVIDIA-Linux-x86_64-256.53/ke
rnel/nv.c:13:
/usr/src/linux-source-2.6.33.7-rt29/arch/x86/include/asm/uaccess_64.h: In fu
nction ‘copy_from_user’:
/usr/src/linux-source-2.6.33.7-rt29/arch/x86/include/asm/uaccess_64.h:35:6:
warning: comparison between signed and unsigned integer expressions
/bin/sh: scripts/genksyms/genksyms: not found
make[3]: *** [/usr/src/sgfxi-downloads/NVIDIA-Linux-x86_64-256.53/kernel/nv.
o] Erreur 127
make[2]: *** [module/usr/src/sgfxi-downloads/NVIDIA-Linux-x86_64-256.53/ke
rnel] Erreur 2
NVIDIA: left KBUILD.
nvidia.ko failed to build!
make[1]: *** [module] Erreur 1
make: *** [module] Erreur 2
-> Error.
ERROR: Unable to build the NVIDIA kernel module.
ERROR: Installation has failed. Please see the file
’/var/log/nvidia-installer.log’ for details. You may find suggestions
on fixing installation problems in the README available on the Linux
driver download page at www.nvidia.com.
[/code]

Merci d’avance.

Le message d’erreur dit que scripts/genksyms/genksyms n’est pas trouvé. Normalement il est créé lors de la compilation du noyau.

J’avais contacté le gars de Pengutronix à ce sujet, il m’avait refilé ce lien :

http://article.gmane.org/gmane.linux.rt.user/6229

Mais je suppose que c’est le patch que tu as tenté d’appliquer. Entre temps j’avais résolu le problème en utilisant un noyau Liquorix.

En ce moment j’utilise celui ci :

Et ça fonctionne aussi bien qu’un noyau RT. J’ai une M-audio delta 1010lt aussi, priorité de jack dans qjackctl à 70, le contenu du /etc/security/limits.d/audio.conf est celui-ci :

[quote]@audio - rtprio 95
@audio - memlock unlimited[/quote]

Tout ça fonctionne sans problèmes pour moi, j’ai compilé les drivers nvidia en utilisant sgfxi.

Edit : erreur de balise corrigée.

Merci de vos réponses! c’est effectivement le patch que j’ai appliqué.
Je teste le noyau liquorix ce soir et je re-posterai.

Le premier warning mentionne aussi qu’il manque un fichier Module.symvers qui devrait avoir été créé lors de la compilation. Tu as bien utilisé ces sources pour compiler le noyau, et tu n’as pas fait de nettoyage (make clean) ensuite ? Si tu as installé directement une image de noyau précompilée (paquet linux-image-xxx), il faut plutôt installer les en-têtes du même noyau (linux-headers-xxx).

je n’ai pas compilé le noyau, je l’ai installé depuis pengutronix

Donc pour compiler un module externe il te faut les en-têtes du noyau correspondant à ta version, pas les sources.

C’est un problème connu du dernier noyau RT en date (le 2.6.33.7-rt29). Le driver nvidia ne veut pas se compiler pour ce noyau, d’où le patch que je donnais en lien. Mais je ne l’ai pas essayé ayant trouvé une solution qui m’arrangeait plus (noyau plus récent) entre temps. J’avais essayé de le recompiler en activant Nouveau aussi, mais j’avais échoué.

Il y a des discutions à ce sujet sur la liste “linux-rt-users” comme celle-ci par exemple : http://www.spinics.net/lists/linux-rt-users/msg05954.html

L’erreur rencontrée par L0u!$ est différente. Ce qui n’exclut pas que lorsqu’elle sera corrigée, celle que tu signales se manifeste à son tour.

Elle était là avant. Puis j’ai appliqué le patch. Et j’ai installé les headers de ce noyau, c’est pour ça que je trouve ça inexplicable…

Tu as peut-être installé les en-têtes, mais visiblement c’est l’emplacement des sources (/usr/src/linux-source-) que tu as fourni à l’installateur nvidia, pas celui des en-têtes (/usr/src/linux-headers--).

si si je t’assure, j’ai même utilisé l’option adéquate pour en être sûr.
Mais j’ai regardé dans ces dossiers, ces fichiers sont manquants ( j’ai réinstallé les headers pour être sur )

Loin de moi l’idée de douter de toi, mais as-tu installé les en-têtes complets et indiqué le bon chemin ? C’est facile de se tromper.

Par exemple, pour le noyau du paquet linux-image-2.6.33.7-rt29-1-686, il faut installer linux-headers-2.6.33.7-rt29-1-686 (qui contient Module.symvers) qui dépend de linux-headers-2.6.33.7-rt29-1-common et linux-kbuild-2.6.33.7-rt29 (qui contient scripts/genksyms/genksyms). Ensuite il faut indiquer comme chemin /usr/src/linux-headers-2.6.33.7-rt29-1-686.

[quote=“PascalHambourg”]Loin de moi l’idée de douter de toi, mais as-tu installé les en-têtes complets et indiqué le bon chemin ? C’est facile de se tromper.

Par exemple, pour le noyau du paquet linux-image-2.6.33.7-rt29-1-686, il faut installer linux-headers-2.6.33.7-rt29-1-686 (qui contient Module.symvers) qui dépend de linux-headers-2.6.33.7-rt29-1-common et linux-kbuild-2.6.33.7-rt29 (qui contient scripts/genksyms/genksyms). Ensuite il faut indiquer comme chemin /usr/src/linux-headers-2.6.33.7-rt29-1-686.[/quote]
Je viens de (re)-vérifier, oui j’ai installé les headers et kbuild. mais mes headers finissent par -common ou -amd64 et non -686, ce qui est normal je présume vu que je suis en 64 bits.
et toujours les mêmes erreurs

EDIT: et l’installeur me demande bien les sources, pas les headers, en me spécifiant bien d’installer les paquets linux-source.

Les en-têtes sont donc dans /usr/src/linux-headers-2.6.33.7-rt29-1-amd64. Les deux fichiers mentionnés s’y trouvent bien ?

EDIT : ça ne marchera pas avec des sources qui n’ont pas servi à compiler le noyau. Qu’est-ce que ça donne si tu indiques le chemin des en-têtes ?

[quote=“PascalHambourg”]Les en-têtes sont donc dans /usr/src/linux-headers-2.6.33.7-rt29-1-amd64. Les deux fichiers mentionnés s’y trouvent bien ?

EDIT : ça ne marchera pas avec des sources qui n’ont pas servi à compiler le noyau. Qu’est-ce que ça donne si tu indiques le chemin des en-têtes ?[/quote]
Bah il me dit qu’il manque kernel.h et n’essaie même pas de compiler.

Je viens de tenter un truc et c’est un demi succès:
j’ai créé un dossier “sources” et j’ai copié le contenu de linux-headers, linux-kbuild et linux-source dedans, puis j’ai indiqué ce dossier comme sources pour le module. Il a fait la compil jusqu’au bout et a indiqué “success”.

ET POURTANT, je suis allé faire un tour sur ce noyau, ça indique l’erreur classique de xorg qui ne détecte pas le driver.

Finalement j’ai choisi la solution liquorix, et ça marche très bien.

Encore merci de vous être penchés sur mon problème.