Кратко ръководство за пестене на време и нерви :-)

Не знам колко от вас са се сблъсквали с подобни подобни проблеми но тук ще
изложа как успях да накарам Х -са и драйвера на ATI да работят нормално.
Системата е Slackware-current ядрото 2.6.1.

1. След като сложих 2.6.* ядро се появи странен проблем: Х -са тръгваше 
нормално
но след като го спра системата замръзваше. Решението на този въпрос бе на 
доста
неочаквано място за мен - след като спрях поддръжката на apm от ядрото 
(оставих
ACPI) нещата се оправиха.Е след дългото търсене реших да отпразнувам 
намирането
на решение като инсталирам драйверите на ATI
2. Е празника беше кратък. Инсталирах драйвера, и се опитах да компилирам
модула за ядрото намиращ се в /lib/modules/fglrx. Е да де но и тук срещнах
поредната трудност. Излизаха странни съобщения за грешка поради липсата на
дефиниция на VMALLOC_VMADDR. След ровене и консултации намерих начин да
поправя този проблем. Ето едно от възможните решения -  във файла:
/usr/src/linux/include/asm-i386/pgtable.h
добавяме следния ред:
#define VMALLOC_VMADDR(x) ((unsigned long)(x))
3. Задължително условие при компилиране на ядрото е да има поддръжка на  AGP и
да няма никаква поддръжка на DRI!! Ако сте забравили DRI поддръжката в ядрото
вероятно ще видите съобщение от рода на:
fglrx(0): DRIScreenInit failed!
Решението както се досещате е просто - конфигурирайте ядрото без поддръжка на
DRI, прекомпилирайте и нещата надявам се ще се оправят.
4.За ползващите AMD процесори - имайте предвид че има проблем при
инициализацията на DRI!  Ако Х -са не
се стартира и в dmesg откриете следните редове:Unable to handle kernel NULL
pointer dereference at virtual address 00000001 printing eip:d09a8320*pde =
0b0e6067*pte = 00000000
Oops: 0002 [#2]
............................
То проблемът най вероятно е такъв. Решението е да се промени файла:
lib/modules/fglrx/build_mod/firegl_public.c
Ето това е кода :

--------------------------------------------------------------------------------
---------------------- изрежи от тук --------------------------------
-- Attached file included as plaintext by Ecartis --
-- File: fglrx-patch.amd

--- firegl_public.c     2003-09-21 19:43:30.000000000 -0700
+++ firegl_public.c.new 2003-10-10 13:03:46.751838800 -0700
@@ -1508,7 +1508,7 @@
     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
@@ -1981,7 +1981,7 @@

         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
@@ -2187,7 +2187,7 @@
     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
@@ -3106,7 +3106,7 @@

 int __ke_amd_adv_spec_cache_feature(void)
 {
-#if ( (PAGE_ATTR_FIX == 1) || (LINUX_VERSION_CODE == 
KERNEL_VERSION(2,4,19)) )
+#if ( (PAGE_ATTR_FIX == 1) || (LINUX_VERSION_CODE >= 
KERNEL_VERSION(2,4,19)) )
 /* the kernel already does provide a fix for the AMD Athlon
    big page attribute / cache flush data consistency system bug on its own.
    (AMD claimed that CPU cache behaviour for such pages is not specified.)
--- agpgart_be.c        2003-09-21 19:43:30.000000000 -0700
+++ agpgart_be.c.new    2003-10-10 13:06:43.227010496 -0700
@@ -6070,7 +6070,7 @@
         VIA_APOLLO_KT400,
         "Via",
         "Apollo KT400",
-        via_generic_setup }, // AGP v2
+        via_kt400_setup }, // AGP v2
     { PCI_DEVICE_ID_VIA_8754, // == PCI_DEVICE_ID_VIA_P4X333,
         PCI_VENDOR_ID_VIA,
         VIA_APOLLO_P4X400,
--------------------------------------------------------------------------------
--------------------- изрежи до тук --------------------------------

Ако не ви се занимава може да изтеглите готовия файл от:
http://free.top.bg/bugar/ati/firegl_public.c

И така прекомпилирайте на ново драйвера, инсталирайте модула и се надявам 
всичко
да работи нормално. Това може да проверите като изпълните следната команда:
glxinfo
glxgears

П.П. Специални благодарности на  Виктор Василев. Без неговата помощ горните
редове нямаше да ги има :-)
============================================================================
A mail-list of Linux Users Group - Bulgaria (bulgarian linuxers).
http://www.linux-bulgaria.org - Hosted by Internet Group Ltd. - Stara Zagora
To unsubscribe: http://www.linux-bulgaria.org/public/mail_list.html
============================================================================

Reply via email to