Module nvidia qui refuse de se compiler...[RESOLU]

salut à tous,
ca fait un petit bout de temps que j’ai ce problème (depuis le pilote 173.14.09 en fait)

pas moyen de compiler les module sur les noyaux que j’ai fait moi même ou qui ont été piqué chez sidux

les noyaux “officiels” debian ne posent pas de problème

j’ai l’erreur suivante :

make[3]: entrant dans le répertoire « /home/siden/linux-source-2.6.26-rt1 » CC [M] /usr/src/modules/nvidia-kernel/nv.o In file included from include/asm/dma-mapping.h:9, from include/linux/dma-mapping.h:52, from include/asm-generic/pci-dma-compat.h:7, from include/asm/pci.h:92, from include/linux/pci.h:954, from /usr/src/modules/nvidia-kernel/nv-linux.h:86, from /usr/src/modules/nvidia-kernel/nv.c:14: include/linux/scatterlist.h: In function ‘sg_virt’: include/linux/scatterlist.h:199: warning: pointer of type ‘void *’ used in arithmetic In file included from /usr/src/modules/nvidia-kernel/nv-linux.h:109, from /usr/src/modules/nvidia-kernel/nv.c:14: include/linux/highmem.h: In function ‘zero_user_segments’: include/linux/highmem.h:134: warning: pointer of type ‘void *’ used in arithmetic include/linux/highmem.h:137: warning: pointer of type ‘void *’ used in arithmetic In file included from include/linux/compat.h:14, from include/asm/mtrr.h:141, from /usr/src/modules/nvidia-kernel/nv-linux.h:116, from /usr/src/modules/nvidia-kernel/nv.c:14: include/asm/compat.h: In function ‘compat_alloc_user_space’: include/asm/compat.h:210: warning: pointer of type ‘void *’ used in arithmetic /usr/src/modules/nvidia-kernel/nv.c: In function ‘__nv_setup_pat_entries’: /usr/src/modules/nvidia-kernel/nv.c:944: warning: comparison between signed and unsigned /usr/src/modules/nvidia-kernel/nv.c: In function ‘__nv_restore_pat_entries’: /usr/src/modules/nvidia-kernel/nv.c:970: warning: comparison between signed and unsigned /usr/src/modules/nvidia-kernel/nv.c: In function ‘nv_kern_cpu_callback’: /usr/src/modules/nvidia-kernel/nv.c:1296: warning: comparison between signed and unsigned /usr/src/modules/nvidia-kernel/nv.c:1303: warning: comparison between signed and unsigned /usr/src/modules/nvidia-kernel/nv.c: In function ‘nv_alloc_file_private’: /usr/src/modules/nvidia-kernel/nv.c:1887: error: implicit declaration of function ‘__SEMAPHORE_INITIALIZER’ /usr/src/modules/nvidia-kernel/nv.c:1887: error: invalid initializer /usr/src/modules/nvidia-kernel/nv.c: In function ‘nv_lock_init_locks’: /usr/src/modules/nvidia-kernel/nv.c:3783: error: invalid initializer /usr/src/modules/nvidia-kernel/nv.c:3784: error: invalid initializer make[4]: *** [/usr/src/modules/nvidia-kernel/nv.o] Erreur 1 make[3]: *** [_module_/usr/src/modules/nvidia-kernel] Erreur 2 make[3]: quittant le répertoire « /home/siden/linux-source-2.6.26-rt1 » NVIDIA: left KBUILD. nvidia.ko failed to build! make[2]: *** [module] Erreur 1 make[2]: quittant le répertoire « /usr/src/modules/nvidia-kernel » make[1]: *** [build-stamp] Erreur 2 make[1]: quittant le répertoire « /usr/src/modules/nvidia-kernel » make: *** [kdist_image] Erreur 2

si quelqu’un a une idée de solution ca serait le bienvenu,

NB: si j’ai fait 3 compil du même noyau c’est pour essayer de faire aller le module sans la virtualisation (j’ai vu que ca pouvait poser problème mais il me semblais que c’était corrigé)

serait-ce possible que ce soit le patch RT qui fasse tout planter?

Il y a de fortes chances pour que les pilotes NVIDIA ne soient pas compatibles avec le patch rt.

À lire : nvnews.net/vbulletin/showthread.php?t=115884
Tu trouveras un patch sur cette page pour les pilotes 173.14.09.

as-tu essayé de créer ton NVIDIA avec module-assistant :question:
Il y a un tuto ds T&A
perso, j’ai tjrs réussi à installer NVIDIA, m^ avec des noyau compilés_à_ma_mode

merci Desintegr ton lien m’a donné tout ce qu’il me fallait
c’était en effet le patch RT qui posait problème. c’est passé en patchant le module nvidia.

encore merci!!!

Si j’ai bien tout compris, ce patch c’est pour installer avec le .run, or c’est marque a longueur de forum que le .run c’est le mal.

Rien ne t’empêche de créer un paquet Debian personnalisé et légèrement modifié pour inclure ce patch.

Ok, je vais checher comment faire.

en fait pour appliquer le patch j’ai fait un peu le bourrin

j’ai été chercher l’archive nvidia-kernel et en ouvrant le patch, je savait quoi modifier (2 fichiers a modifier et quelques lignes a rajouter donc ca allais vite)

j’ai mis a jour l’archive et j’ai refait l’install via module-assistant et ca a marché comme sur des roulettes :smiley:

[quote=“h2osiden”]en fait pour appliquer le patch j’ai fait un peu le bourrin

j’ai été chercher l’archive nvidia-kernel et en ouvrant le patch, je savait quoi modifier (2 fichiers a modifier et quelques lignes a rajouter donc ca allais vite)

j’ai mis a jour l’archive et j’ai refait l’install via module-assistant et ca a marché comme sur des roulettes :smiley:[/quote]
Mmmmhhh. je suis pas sur de saisir, enfin je saisis le principe mais dans le detail je vois pas, tu pourrais detailler la methode?

d’abord j’ai ouvert le fichier patch

[code]diff -ru usr/src/nv/nv-linux.h usr/src/nv.2512683/nv-linux.h
— usr/src/nv/nv-linux.h 2008-06-05 00:13:45.000000000 -0700
+++ usr/src/nv.2512683/nv-linux.h 2008-06-24 09:47:50.292382526 -0700
@@ -684,12 +684,16 @@
#define nv_down(lock) down(&lock)
#define nv_up(lock) up(&lock)

+#if defined(CONFIG_PREEMPT_RT)
+#define NV_INIT_MUTEX(mutex) init_MUTEX(mutex)
+#else
#define NV_INIT_MUTEX(mutex)
{
struct semaphore __mutex =
__SEMAPHORE_INITIALIZER(*(mutex), 1);
*(mutex) = __mutex;
}
+#endif

#if defined (KERNEL_2_4)

define NV_IS_SUSER() suser()

diff -ru usr/src/nv/os-interface.c usr/src/nv.2512683/os-interface.c
— usr/src/nv/os-interface.c 2008-06-05 00:13:44.000000000 -0700
+++ usr/src/nv.2512683/os-interface.c 2008-06-24 09:47:50.292382526 -0700
@@ -87,7 +87,11 @@
{
nv_stack_t *sp;
struct completion completion;
+#if defined(CONFIG_PREEMPT_RT)

  • raw_spinlock_t lock;
    +#else
    spinlock_t lock;
    +#endif
    S032 count;
    } os_sema_t;
    [/code]

après les diff, il t’indique la location du fichier a modifier (qui n’est pas bonne dans le patch d’ou la méthode manuelle) dans ton archive nvidia-kernel tu devrait trouver un fichier nv-linux.h et os-interface.c
entre les @@ il t’indique la ligne ou il faut faire les modifs (ligne 684 pour le 1er fichier) et les lignes avec des + devant sont a rajouter par rapport au code (a mon avis si il y avait des lignes a supprimer il y aurait des - devant mais apparament il n’y en a pas car y’a rien a supprimer ^^)

une fois ces 2 fichiers modifiés tu t’assure qu’ils sont bien modifiés dans l’archive car m-a va voir l’archive et s’en fout de ce qui a été extrait

Ok je trouve les bons fichiers, je comprends comment les modifier, ou, etc… ca va ca me parait simple.
J’ai depaquete nvidia-kernel-source_173.14.09-3_amd64.deb puis trouve et decompresse nvidia-kernel.tar.bz2
Du coup je me retrouve avec un repertoire nvidia-kernel dans lequel j’ai bien modifie les bons fichiers, mais je te lis :

[quote]une fois ces 2 fichiers modifiés tu t’assure qu’ils sont bien modifiés dans l’archive
[/quote]
C’est la que ca m’echappe, faut modifier dirctement dans l’archive? Dans ce cas je ne sais pas comment faire. Faut remettre le repertoire nvidia-kernel avec les fichiers modifies dans l’archive? Idem, j’ai jamais fait. Ca doit etre tout con… quand on sait :wink:

moi je les ai modifiés directement dans l’archive
je l’ai donc ouverte (avec une bête application d’archivage) avec les droits admin pour pouvoir l’éditer.

comme file roller est très bien fait, en double cliquant sur les fichiers de l’archive il me les ouvre dans gedit et apres modification il me propose de mettre a jour l’archive et je dis oui.

j’ai pris l’archive qui était installée avec le paquet donc qui se trouve dans /usr/src/ et je l’ai bie laissée la pour que m-a la prenne

Effectivement, c’est tout con, suffisait d’y penser.
Bon, n’empeche que le build de nvidia-kernel-source a echoue, j’ai pourtant bien chnage ce qu’il fallait ou il fallait comme il fallait. Tant pis, mes drivers nv me vont tres bien de toutes facons.

(edit)
Par contre ca marche parfaitement sur la sidux 32bits que je viens d’installer en dual boot. Et heureusement parceque la par contre les drivers nv etaient une catastrophe.