zeb_ | J'ai pu compiler les drivers 3.2.8 d'ATi avec un kernel 2.6 sur Mandrake 9.2 avec une carte mère VIA KT266 et voici mon tuto.
Tout d'abord, j'utilise le kernel 2.6 qui est sur cooker, pas celui des contrib de la 9.2, pour la simple raison que le 2.6 de cooker est plus avancé, et que le DMA est activable pour les disques. D'autre part il est très stable (aucun plantage), très fonctionnel et surtout très très rapide !
Je fonctionne avec le kernel-2.6.0.0.2mdk, il a depuis été remplacé par le kernel-2.6.0.0.3mdk dans cooker, j'espère que ce tuto marche encore.
1. Installer kernel-source-2.6.0.0.xmdk
Installer le rpm d'ATi (driver 3.2.8) comme pour le 2.4
Relancer en init 3 et décharger un driver radeon ou fglrx éventuel avec rmmod.
2. cd /lib/modules/fglrx/build_mod/2.6.x
Editer le fichier Makefile
commenter les deux lignes 31 et 32, c'est-à-dire :
#KDIR ...
#else ...
3. cd /lib/modules/fglrx/build_mod
Editer firegl_public.c
Ligne 3109, remplacer :
#if ( (PAGE_ATTR_FIX == 1) || (LINUX_VERSION_CODE == KERNEL_VERSION(2,4,19)) )
par
#if ( (PAGE_ATTR_FIX == 1) || (LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,19)) )
Ensuite appliquer le patch VMALLOC (trouvé sur rage3d). Comme je ne trouve plus le lien, copier ceci dans un fichier appelé fglrx-VMALLOC-fix.patch :
Code :
- --- ../firegl_public.c 2003-09-03 22:55:40.357810840 +0000
- +++ firegl_public.c 2003-09-03 22:55:44.145235064 +0000
- @@ -1503,7 +1503,7 @@ unsigned long __ke_get_vm_phys_addr(stru
- pte_t* pte_p;
- pte_t pte;
- - pte_linear = VMALLOC_VMADDR(virtual_addr); // convert to pte linear address (x86 => nop)
- + pte_linear = ((unsigned long)(virtual_addr)); // convert to pte linear address (x86 => nop)
- pgd_p = pgd_offset(mm, pte_linear);
- pmd_p = pmd_offset(pgd_p, pte_linear);
- #ifndef FGL_ATOMIC_PTE
- @@ -1976,7 +1976,7 @@ static vm_nopage_ret_t vm_shm_nopage(str
- Convert to pte linear address (x86 => nop)
- */
- - pte_linear = VMALLOC_VMADDR(linear);
- + pte_linear = ((unsigned long)(linear));
- /*
- Locate responsible kernel PTE for this linear address
- @@ -2182,7 +2182,7 @@ char* __ke_vm_phys_addr_str(struct vm_ar
- pte_t* pte_p;
- pte_t pte;
-
- - pte_linear = VMALLOC_VMADDR(virtual_addr); // convert to pte linear address (x86 => nop)
- + pte_linear = ((unsigned long)(virtual_addr)); // convert to pte linear address (x86 => nop)
- pgd_p = pgd_offset(vma->vm_mm, pte_linear);
- pmd_p = pmd_offset(pgd_p, pte_linear);
- #ifndef FGL_ATOMIC_PTE
|
Pour appliquer ce patch, taper :
patch -p1 <fglrx_VMALLOC-fix.patch
4. cd /lib/modules/fglrx/build_mod/2.6.x
Taper : make
5. cd ..
./make.sh
6. cd ..
./make_install.sh
7. charger (pour mon VIA) :
modprobe via_agp
8. startx
Je suis obligé de charger via_agp à chaque restart, pour avoir le irect rendering avec ces drivers et le 2.6 (alors que je n'en avais pas besoin avec le 2.4). Je laisse agpgart chargé.
Voilà, suggestions, commentaires, expériences bienvenues |