ot Atanas Mavrov(22-01-2004)
reiting (9)
[ dobre ]
[ zle ]
Variant za otpechatvane
Kratko rukovodstvo za pestene na vreme i nervi :-)
Ne znam kolko ot vas sa se sbluskvali s podobni podobni problemi no
tuk shte
izlozha kak uspiah da nakaram H -sa i draivera na ATI da rabotiat
normalno.
Sistemata e Slackware-current iadroto 2.6.1.
Sled kato slozhih 2.6.* iadro se poiavi stranen problem: H-sa
trugvashe normalno,
no sled kato go spra, sistemata zamruzvashe. Reshenieto na tozi vupros be
na dosta
neochakvano miasto za men - sled kato spriah poddruzhkata na apm ot iadroto
(ostavih
ACPI) neshtata se opraviha. E, sled dulgoto tursene reshih da otpraznuvam
namiraneto
na reshenie, kato instaliram draiverite na ATI.
E, praznika beshe kratuk. Instalirah draivera, i se opitah da
kompiliram
modula za iadroto, namirasht se v /lib/modules/fglrx. E da de, no i tuk
sreshtnah
porednata trudnost. Izlizaha stranni suobshteniia za greshka poradi lipsata
na
definitsiia na VMALLOC_VMADDR. Sled rovene i konsultatsii namerih nachin
da
popravia tozi problem. Eto edno ot vuzmozhnite resheniia - vuv faila /usr/src/linux/include/asm-i386/pgtable.h
dobaviame sledniia red:
#define VMALLOC_VMADDR(x) ((unsigned long)(x))
Zadulzhitelno uslovie pri kompilirane na iadroto e da ima poddruzhka
na AGP i
da niama nikakva poddruzhka na DRI!! Ako ste zabravili DRI poddruzhkata
v iadroto,
veroiatno shte vidite suobshtenie ot roda na:
fglrx(0): DRIScreenInit failed!
Reshenieto, kakto se doseshtate, e prosto - konfiguriraite iadroto bez
poddruzhka na
DRI, prekompiliraite i neshtata nadiavam se shte se opraviat.
Za polzvashtite AMD protsesori - imaite predvid, che ima problem pri
initsializatsiiata na DRI! Ako H-sa ne
se startira i v dmesg otkriete slednite redove:
Unable to handle kernel NULL
pointer dereference at virtual address 00000001 printing
eip:d09a8320*pde = 0b0e6067*pte = 00000000
Oops: 0002 [#2]
............................
To problemut nai-veroiatno e takuv. Reshenieto e da se promeni faila
lib/modules/fglrx/build_mod/firegl_public.c.
Eto tova e kodut:
-- 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,
Ako ne vi se zanimava, mozhe da izteglite gotoviia fail ot
http://free.top.bg/bugar/ati/firegl_public.c.
I taka, prekompiliraite nanovo draivera, instaliraite modula i se
nadiavam vsichko
da raboti normalno. Tova mozhe da proverite, kato izpulnite slednata
komanda:
$ glxinfo
$ glxgears
P.P. Spetsialni blagodarnosti na Viktor Vasilev. Bez negovata pomosht
gornite
redove niamashe da gi ima :-)
<< Izpolzvane na distcc i ccache | BIND9: Optsionalno zaklyuchvane na demona >>
|