Someone released a giant patch for fglrx that makes it compatible with 2.6.29.
Well, I really don't know how they do it, but for some reason their patches have so many offset errors and doesn't work out of the box. They even copied the kernel headers from their kernel and put them into the patch... WTF, hahahaha. So the Mandriva guys fixed it (thanks!) and i modified the patch to work stand alone - as in, you extract the fglrx .run file and do patch -p1 < ../patch.file.
Please, the next person who makes a patch... it would be really nice if you could explain to us how you always seem to have a different source than the rest of us as the patches never seem work the first time.
It's as if the patches are designed to infuriate users or try to spread FUD over fglrx. Whatever the deal, it works, so keep it up if that's your objective!
Anyway, fixed the patch, gg noobs:
PS, add an empty return line to this patch otherwise you'll get a "patch ended unexpectedly" error or related.
Well, I really don't know how they do it, but for some reason their patches have so many offset errors and doesn't work out of the box. They even copied the kernel headers from their kernel and put them into the patch... WTF, hahahaha. So the Mandriva guys fixed it (thanks!) and i modified the patch to work stand alone - as in, you extract the fglrx .run file and do patch -p1 < ../patch.file.
Please, the next person who makes a patch... it would be really nice if you could explain to us how you always seem to have a different source than the rest of us as the patches never seem work the first time.
It's as if the patches are designed to infuriate users or try to spread FUD over fglrx. Whatever the deal, it works, so keep it up if that's your objective!
Anyway, fixed the patch, gg noobs:
Code:
diff -Nparu a/common/lib/modules/fglrx/build_mod/firegl_public.c b/common/lib/modules/fglrx/build_mod/firegl_public.c --- a/common/lib/modules/fglrx/build_mod/firegl_public.c 2009-01-23 20:00:26.000000000 -0200 +++ b/common/lib/modules/fglrx/build_mod/firegl_public.c 2009-02-13 15:25:00.000000000 -0200 @@ -1460,7 +1460,11 @@ KCL_TYPE_Pid ATI_API_CALL KCL_GetTgid(vo */ KCL_TYPE_Uid ATI_API_CALL KCL_GetEffectiveUid(void) { +#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,28) + return current->cred->euid; +#else return current->euid; +#endif } /** /brief Delay execution for the specified number of microseconds @@ -1832,15 +1836,30 @@ int ATI_API_CALL KCL_PosixSecurityCapChe */ void ATI_API_CALL KCL_PosixSecurityCapSetIPCLock(unsigned int lock) { + +#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,28) + struct cred *new = prepare_creds(); + if (!new) { + printk(KERN_ERR "fglrx: could not allocate memory\n"); + return; + } +#else +#define new current +#endif if (lock == 0 ) { - cap_lower(current->cap_effective, CAP_IPC_LOCK); + cap_lower(new->cap_effective, CAP_IPC_LOCK); } else { - cap_raise(current->cap_effective, CAP_IPC_LOCK); + cap_raise(new->cap_effective, CAP_IPC_LOCK); } - return; + +#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,28) + commit_creds(new); +#else +#undef new +#endif } /** \brief Get number of available RAM pages diff -Nparu a/common/lib/modules/fglrx/build_mod/firegl_public.h b/common/lib/modules/fglrx/build_mod/firegl_public.h --- a/common/lib/modules/fglrx/build_mod/firegl_public.h 2009-01-23 20:00:26.000000000 -0200 +++ b/common/lib/modules/fglrx/build_mod/firegl_public.h 2009-02-16 14:02:50.000000000 -0300 @@ -18,6 +18,7 @@ #define _FIREGL_PUBLIC_H_ #include <stdarg.h> +#include <asm/pgtable.h> #include "kcl_pci.h" #include "kcl_io.h" @@ -590,6 +591,11 @@ extern unsigned long KCL_SYSINFO_ #define cpu_has_pge test_bit(X86_FEATURE_PGE, &boot_cpu_data.x86_capability) #endif +#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,28) +#undef pgprot_writecombine +#undef pgprot_noncached +#endif + #ifndef pgprot_writecombine #define pgprot_writecombine(prot) __pgprot((pgprot_val(prot) & ~(_PAGE_PCD)) | _PAGE_PWT) #endif @@ -598,6 +604,7 @@ extern unsigned long KCL_SYSINFO_ #define pgprot_noncached(prot) __pgprot(pgprot_val(prot) | _PAGE_PCD | _PAGE_PWT) #endif + #endif //FIREGL_USWC_SUPPORT diff -Nparu a/common/lib/modules/fglrx/build_mod/kcl_acpi.c b/common/lib/modules/fglrx/build_mod/kcl_acpi.c --- a/common/lib/modules/fglrx/build_mod/kcl_acpi.c 2009-01-23 20:00:26.000000000 -0200 +++ b/common/lib/modules/fglrx/build_mod/kcl_acpi.c 2009-02-13 15:25:00.000000000 -0200 @@ -18,6 +18,12 @@ #include <linux/autoconf.h> #include <linux/acpi.h> +#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,28) +#include <acpi/acpica/acconfig.h> +#include <acpi/acpica/aclocal.h> +#include <acpi/acpica/acobject.h> +#endif + #include "kcl_config.h" #include "kcl_type.h" #include "kcl_acpi.h" #include "kcl_acpi.h"
Comment