Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
W zasadzie temat bardziej pasuje do działu hardware lecz jest sciśle powiązany z kernelem więc zdecydowałem sie napisac tutaj.
moje distro to testing z lekka pomieszany z unstable m.in. z tamtad mam kernela o numerku jak w temacie.
Wszelkie moje próby kompilacji sterownika pod to jajko legną w grózach więc chciałem sie spytac was czy macie jakis sposób na instalacje tego badziewia pod to jajko?
Próbowałem użyć pacza dla jajka 2.6.20 na firegl.public.c, lecz pacz nie chce sie zaaplikować na wyżej wymienionym pliku. Otrzymuje coś takiego:
c85-23:/lib/modules/fglrx/build_mod# patch < fglrx-2.6.20.patch patching file firegl_public.c Hunk #1 FAILED at 181. 1 out of 1 hunk FAILED -- saving rejects to file firegl_public.c.rej patching file firegl_public.c Hunk #1 FAILED at 5265. 1 out of 1 hunk FAILED -- saving rejects to file firegl_public.c.rej
Gdzieniegdzie mozna przeczytać że patch trzeba nakładać 2 razy gdyż dopiero za drugim razem zadziała lecz u mnie uruchomienie ponowne patcha nic nie daje(rezultat wyżej)
W pliku firegl_public.c.rej jest coś takiego:
*************** *** 5265,5271 **** kasThread_t* thread_obj = (kasThread_t*)hThread; init_MUTEX(&(thread_obj->sleep_finished)); init_waitqueue_head(&(thread_obj->wq_head)); - INIT_WORK(&(thread_obj->work), routine, pcontext); schedule_work(&(thread_obj->work)); return 1; } --- 5265,5271 ---- kasThread_t* thread_obj = (kasThread_t*)hThread; init_MUTEX(&(thread_obj->sleep_finished)); init_waitqueue_head(&(thread_obj->wq_head)); + INIT_WORK(&(thread_obj->work), routine); schedule_work(&(thread_obj->work)); return 1; }
Bardzo proszęo podpowiedz bo moje kombinacje nicnie dają próbowałem jeszcze edytować patcha według opisu najakiejś stronie lecz także jest lipa... prawdopodobie źle rozumiałem opis(niechrześcijańskie swinie :D). Niestety spieszę się do pracy a linku nie pamietam więc puki co prosze o jakieś podpowiedzi. Później najwyżej dożuce tę stronkę.
Offline
Spróbuj tego:
--- common/lib/modules/fglrx/build_mod/firegl_public.c 2006-12-18 10:58:15.000000000 -0500 +++ common/lib/modules/fglrx/build_mod/firegl_public.c 2006-12-18 11:14:04.000000000 -0500 @@ -181,6 +181,70 @@ int errno; #endif // __ia64__ +#if defined(__i386__) +#define __syscall_return(type, res) +do { + if ((unsigned long)(res) >= (unsigned long)(-(128 + 1))) { + errno = -(res); + res = -1; + } + return (type) (res); +} while (0) +#define _syscall2(type,name,type1,arg1,type2,arg2) +type name(type1 arg1,type2 arg2) +{ +long __res; +__asm__ volatile ("push %%ebx ; movl %2,%%ebx ; int $0x80 ; pop %%ebx" + : "=a" (__res) + : "0" (__NR_##name),"ri" ((long)(arg1)),"c" ((long)(arg2)) + : "memory"); +__syscall_return(type,__res); +} + +#define _syscall3(type,name,type1,arg1,type2,arg2,type3,arg3) +type name(type1 arg1,type2 arg2,type3 arg3) +{ +long __res; +__asm__ volatile ("push %%ebx ; movl %2,%%ebx ; int $0x80 ; pop %%ebx" + : "=a" (__res) + : "0" (__NR_##name),"ri" ((long)(arg1)),"c" ((long)(arg2)), + "d" ((long)(arg3)) : "memory"); +__syscall_return(type,__res); +} +#elif defined(__x86_64__) +#define __syscall_clobber "r11","rcx","memory" +#define __syscall "syscall" + +#define __syscall_return(type, res) +do { + if ((unsigned long)(res) >= (unsigned long)(-127)) { + errno = -(res); + res = -1; + } + return (type) (res); +} while (0) +#define _syscall2(type,name,type1,arg1,type2,arg2) +type name(type1 arg1,type2 arg2) +{ +long __res; +__asm__ volatile (__syscall + : "=a" (__res) + : "0" (__NR_##name),"D" ((long)(arg1)),"S" ((long)(arg2)) : __syscall_clobber ); +__syscall_return(type,__res); +} + +#define _syscall3(type,name,type1,arg1,type2,arg2,type3,arg3) +type name(type1 arg1,type2 arg2,type3 arg3) +{ +long __res; +__asm__ volatile (__syscall + : "=a" (__res) + : "0" (__NR_##name),"D" ((long)(arg1)),"S" ((long)(arg2)), + "d" ((long)(arg3)) : __syscall_clobber); +__syscall_return(type,__res); +} +#endif + // int mlock(const void *addr, size_t len); _syscall2(int, mlock, const void *, addr, size_t, len ) // int munlock(const void *addr, size_t len); --- common/lib/modules/fglrx/build_mod/firegl_public.c-orig 2007-01-21 23:09:10.027497362 -0600 +++ common/lib/modules/fglrx/build_mod/firegl_public.c 2007-01-21 23:09:25.219179776 -0600 @@ -5256,7 +5256,7 @@ kasThread_t* thread_obj = (kasThread_t*)hThread; init_MUTEX(&(thread_obj->sleep_finished)); init_waitqueue_head(&(thread_obj->wq_head)); - INIT_WORK(&(thread_obj->work), routine, pcontext); + INIT_WORK(&(thread_obj->work), routine); schedule_work(&(thread_obj->work)); return 1; }
nałóż 2 razy na firegl_public.c
EDIT:
na kernelu 2.6.21 dobrze do sterownika 8.35.5 działa ten patch:
http://whoopie.gmxhome.de/linux/patches/2.6.20/fglr … -2.6.20.patch
Offline
c85-23:/lib/modules/fglrx/build_mod# sh make.sh
ATI module generator V 2.0
==========================
initializing...
cat: /lib/modules/2.6.20-1-686/build/include/linux/version-*.h: Nie ma takiego pliku ani katalogu
cleaning...
patching 'highmem.h'...
assuming new VMA API since we do have kernel 2.6.x...
Assuming default VMAP API
Assuming default munmap API
doing Makefile based build for kernel 2.6.x and higher
make -C /lib/modules/2.6.20-1-686/build SUBDIRS=/lib/modules/fglrx/build_mod/2.6.x modules
make[1]: Wejście do katalogu `/usr/src/linux-headers-2.6.20-1-686'
Building modules, stage 2.
MODPOST 1 modules
FATAL: modpost: GPL-incompatible module fglrx.ko uses GPL-only symbol 'paravirt_ops'
make[2]: *** [__modpost] Błąd 1
make[1]: *** [modules] Błąd 2
make[1]: Opuszczenie katalogu `/usr/src/linux-headers-2.6.20-1-686'
make: *** [kmod_build] Błąd 2
build failed with return value 2
Przy użyciu sterowników serii 8.35.5 patch sie nakłada pieknie, lecz sterownik nie chce się dalej skompilować efekt widać powyżej.
Jak sobie poradzić z tym GPL-incompatible... doczytałem sie u ruskich, że w linux-source trzeba zmienić linie EXPORT_SYMBOL_GPL(paravirt_ops) na EXPORT_SYMBOL(paravirt_ops) lecz make file korzysta i tak z linux-headers i wychodzi taka lipa... czy nie ma sposobu żeby to zainstalować pod dystrybucyjnym jajkiem?
Offline
Czadman czyżby ci chodziło o to że sterownik 8.36.5 ma poprawione pare bugów a co za tym idzie oficjalnie wspiera jajka z seri 2.6.20? Jesli tak, to nic a nic nie zmienia w moim przypadku. Pierwszy mój post w tym temacie tyczył sie właśnie sterowników 8.36.5... ale spróbuje jeszcze wyzucić wszystko i dac tego patcha do 8.36.5.
Dam znac co z tej kiszki wyjdzie.
Offline
Czadman dzieki za pomoc przy jaju wreszcie ciesze się na 2.6.21.1 akceleracją od ati...aż się boje dopieścić configa... Małe pytanie mam czy jeśli skompilował bym to samo jajko tym samym systemem i przy okazji zachował kopie modułu fglrx.ko to czy będe mógł je po prostu dorzucić do modułów kernela? Czy to ma prawo działać?
Offline
Czadman dzieki za pomoc przy jaju wreszcie ciesze się na 2.6.21.1 akceleracją od ati...aż się boje dopieścić configa... Małe pytanie mam czy jeśli skompilował bym to samo jajko tym samym systemem i przy okazji zachował kopie modułu fglrx.ko to czy będe mógł je po prostu dorzucić do modułów kernela? Czy to ma prawo działać?
Powinno działać. Mnie zawsze po małej rekompilacji nvidia działa. Choć to pewnie zależy od wielu rzeczy.
Offline