Ati Radeon Proprietary drivers 8.24.8: fglrx module on kernel 2.6.16 - Xorg 7

Manolis Nazlidis emnazli at ath.forthnet.gr
Sat Apr 29 00:22:37 EEST 2006


Kalhspera se olous.

Meta apo arketes ores psaksimatos sto google brika pos mporei kaneis na 
kanei toys odhgoys gia kartes grafikon ths seiras ATI Radeon na 
doulevoyn se Xorg 7. Paratheto edo osa anakalypsa mhpos endiaferoyn 
kapoious me paromoio hardware, oste na mhn psaxnoun.

1. Kanoume to programma egkatastashs kat arxhn na nomizei oti trexoyme 
Xorg 6.9, exontas ypopsin oti afto ginetai apo th metablith 
periballonots `X_VERSION' kai me thn timh `x690'
2. Kanoume thn egkatastash kanonika (afto einai ligo mpakalikh texnikh, 
alloste h egkatastash tha apotyxei). Oloi oi odhgoi einai topothetimenoi 
kato apo to /usr/X11R6/lib/{,modules,modules/drivers,modules/dri}. Afto 
poy menei gia na doulepsoyn einai na antigrapsoyme ta arxeia ekei poy 
einai egaktesthmenoi oi drivers gia to Xorg 7, eg usr/lib/xorg/....
3. Antigrafoyme kai ta executables toy /usr/X11R6/bin sto /usr/bin 
kathos kai oti alla sxetika arxeia einai aparaithta.

Gia linux kernel 2.6.16:
To module fglrx den kanei sosta compilation se kernel 2.6.16.

Exo brei epishs merika skorpia patches gia afto.

1. To patch gia to ./firegl_public.c to brhka se arketes listes kai to 
paratheto aftousio.
[Oi klhseis inter_module_* einai depricated.
Typika ginetai compile toy fglrx module kai xoris afto to patch alla 
prepei kaneis na ksanariksei mesa ston pyrhna to 
/usr/src/kernels/linux-2.6.16/kernel/intermodule.c]

diff -cr fglrx/build_mod/firegl_public.c 
fglrx-2.6.16/build_mod/firegl_public.c
*** fglrx/build_mod/firegl_public.c	2006-04-11 23:59:33.000000000 +0300
--- fglrx-2.6.16/build_mod/firegl_public.c	2006-04-25 00:31:31.000000000 
+0300
***************
*** 361,373 ****
   } firegl_drm_stub_info_t;
   static firegl_drm_stub_info_t firegl_stub_info;

! #if LINUX_VERSION_CODE < 0x020400
   struct firegl_drm_stub_info_t *firegl_stub_pointer = NULL;
   #define inter_module_put(x)
   #define inter_module_unregister(x)
   #define inter_module_get_request(x,y)   firegl_stub_pointer
   #define inter_module_register(x,y,z)    do { firegl_stub_pointer = z; 
} while (0)
   /* This is a kludge for backward compatibility that is only useful in 
DRM(stub_open) */
   #define fops_put(fops)      MOD_DEC_USE_COUNT
   #define fops_get(fops)      (fops); MOD_INC_USE_COUNT
   #endif // LINUX_VERSION_CODE < 0x020400
--- 361,375 ----
   } firegl_drm_stub_info_t;
   static firegl_drm_stub_info_t firegl_stub_info;

! #if LINUX_VERSION_CODE > 0x02060F
   struct firegl_drm_stub_info_t *firegl_stub_pointer = NULL;
   #define inter_module_put(x)
   #define inter_module_unregister(x)
   #define inter_module_get_request(x,y)   firegl_stub_pointer
   #define inter_module_register(x,y,z)    do { firegl_stub_pointer = z; 
} while (0)
   /* This is a kludge for backward compatibility that is only useful in 
DRM(stub_open) */
+ #endif
+ #if LINUX_VERSION_CODE < 0x020400
   #define fops_put(fops)      MOD_DEC_USE_COUNT
   #define fops_get(fops)      (fops); MOD_INC_USE_COUNT
   #endif // LINUX_VERSION_CODE < 0x020400


2.
	a) O compiler ebgaze omos kai to parakato lathos [gcc 4.1.0, se 
ekdoseis kato apo 4 den prepei na yparxei problhma logika]
./firegl_agpgart/firegl_wrap.c:171: error: static declaration of ¡errno¢ 
follows non-static declaration
/usr/src/kernels/linux-2.6.16/include/linux/unistd.h:4: error: previous 
declaration of ¡errno¢ was here
Nomizo aftoy toy eidoys ta lathh parousiastikan arketes fores apo thn 
emfanish toy gcc 4 kai exoyn typika patches sta sources. Paratheto kai 
afto to patch.

	b) Akoma eixa ena warning:
*** Warning: "verify_area" 
[/lib/modules/fglrx-2.6.16/build_mod/firegl_agpgart/fglrx_agp.ko] undefined!
Patch gia afto yphrxe kai se prohgoymenes ekdoseis ton odhgon. To paratheto

diff -cr fglrx/build_mod/firegl_agpgart/firegl_wrap.c 
fglrx-2.6.16/build_mod/firegl_agpgart/firegl_wrap.c
*** fglrx/build_mod/firegl_agpgart/firegl_wrap.c	2006-04-11 
23:59:33.000000000 +0300
--- fglrx-2.6.16/build_mod/firegl_agpgart/firegl_wrap.c	2006-04-28 
23:09:24.000000000 +0300
***************
*** 168,174 ****

   #if !defined(__ia64__)
   // the macros do use errno variable
! static int errno;
   #endif // __ia64__

   // int mlock(const void *addr, size_t len);
--- 168,174 ----

   #if !defined(__ia64__)
   // the macros do use errno variable
! int errno;
   #endif // __ia64__

   // int mlock(const void *addr, size_t len);
***************
*** 1120,1126 ****
--- 1120,1130 ----

   int ATI_API_CALL __ke_verify_area(int type, const void * addr, 
unsigned long size)
   {
diff -cr fglrx/build_mod/firegl_agpgart/firegl_agp.c 
fglrx-2.6.16/build_mod/firegl_agpgart/firegl_agp.c
*** fglrx/build_mod/firegl_agpgart/firegl_agp.c	2006-04-11 
23:59:33.000000000 +0300
--- fglrx-2.6.16/build_mod/firegl_agpgart/firegl_agp.c	2006-04-25 
00:56:54.000000000 +0300
***************
*** 292,297 ****
--- 292,306 ----

   static const fglrx_agp_t *fglrx_agp_stub = NULL;

+ #if LINUX_VERSION_CODE > 0x02060F
+ struct firegl_drm_stub_info_t *firegl_stub_pointer = NULL;
+ #define inter_module_put(x)
+ #define inter_module_unregister(x)
+ #define inter_module_get_request(x,y)   firegl_stub_pointer
+ #define inter_module_register(x,y,z)    do { firegl_stub_pointer = z; 
} while (0)
+ /* This is a kludge for backward compatibility that is only useful in 
DRM(stub_open) */
+ #endif
+
   /* init_module is called when insmod is used to load the module */
   static int __init firegl_agp_init(void)
   {

+ #ifdef access_ok
+     return access_ok(type,addr,size) ? 0 : -EFAULT;
+ #else
       return verify_area(type, addr, size);
+ #endif
   }

   int ATI_API_CALL __ke_get_pci_device_info(__ke_pci_dev_t* dev, 
__ke_pci_device_info_t *pinfo)

3. To idio akrivos patch me to 1, alla sto ./firegl_agpgart/firegl_agp.c
Afto to patch den to brika kapou, alla to antegrapsa sxedon sta tyfla 
(xoris na eimai katholou sigoyros gia thn orthotha toy) apo to patch toy 
./firegl_public.c

diff -cr fglrx/build_mod/firegl_agpgart/firegl_agp.c 
fglrx-2.6.16/build_mod/firegl_agpgart/firegl_agp.c
*** fglrx/build_mod/firegl_agpgart/firegl_agp.c	2006-04-11 
23:59:33.000000000 +0300
--- fglrx-2.6.16/build_mod/firegl_agpgart/firegl_agp.c	2006-04-25 
00:56:54.000000000 +0300
***************
*** 292,297 ****
--- 292,306 ----

   static const fglrx_agp_t *fglrx_agp_stub = NULL;

+ #if LINUX_VERSION_CODE > 0x02060F
+ struct firegl_drm_stub_info_t *firegl_stub_pointer = NULL;
+ #define inter_module_put(x)
+ #define inter_module_unregister(x)
+ #define inter_module_get_request(x,y)   firegl_stub_pointer
+ #define inter_module_register(x,y,z)    do { firegl_stub_pointer = z; 
} while (0)
+ /* This is a kludge for backward compatibility that is only useful in 
DRM(stub_open) */
+ #endif
+
   /* init_module is called when insmod is used to load the module */
   static int __init firegl_agp_init(void)
   {

Episynapto kai oloklhro to patch (elpizo afto na mhn prokalei problhma 
sth list).

Se emena ola ta pio pano ekanan thn ATI-X300 na doulevei me 
3D-Acceleration. Parakalo an breite pos otidhpote apo ta parapano einai 
lathos, eite exete ta dika sas patch let me know ;)

Elpizo oti oi epomenoi proprietary drivers apo thn ATI tha yposthrizoyn 
Xorg7 kai ta kernel modules tha kanoyn compile correctly ;->

Exei kaneis dokimasei toys DRI drivers apo to freedesktop???

Me ektimhsh se olous,
Manolis Nazlidis.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: fglrx-8.24.patch
Type: text/x-patch
Size: 3514 bytes
Desc: not available
URL: <http://lists.hellug.gr/pipermail/linux-greek-users/attachments/20060429/93d1b2c4/attachment.bin>


More information about the Linux-greek-users mailing list