diff options
author | Jeffrey Gardner <je_fro@gentoo.org> | 2007-10-24 03:56:17 +0000 |
---|---|---|
committer | Jeffrey Gardner <je_fro@gentoo.org> | 2007-10-24 03:56:17 +0000 |
commit | 9f8954fc4de58fb4245ee74aa2527ed15a14a7a3 (patch) | |
tree | 9ebed767cc973e4491053a9198cc8b0a1118ee81 /x11-drivers/ati-drivers/files | |
parent | latest version in the tree (diff) | |
download | je_fro-9f8954fc4de58fb4245ee74aa2527ed15a14a7a3.tar.gz je_fro-9f8954fc4de58fb4245ee74aa2527ed15a14a7a3.tar.bz2 je_fro-9f8954fc4de58fb4245ee74aa2527ed15a14a7a3.zip |
adding stuff from bugzilla
svn path=/; revision=106
Diffstat (limited to 'x11-drivers/ati-drivers/files')
-rw-r--r-- | x11-drivers/ati-drivers/files/8.42.3/ati-drivers-2.6.23.patch | 127 |
1 files changed, 96 insertions, 31 deletions
diff --git a/x11-drivers/ati-drivers/files/8.42.3/ati-drivers-2.6.23.patch b/x11-drivers/ati-drivers/files/8.42.3/ati-drivers-2.6.23.patch index 9713208..fab41b3 100644 --- a/x11-drivers/ati-drivers/files/8.42.3/ati-drivers-2.6.23.patch +++ b/x11-drivers/ati-drivers/files/8.42.3/ati-drivers-2.6.23.patch @@ -1,41 +1,106 @@ -diff -Naur common/lib/modules/fglrx/build_mod/firegl_public.c common/lib/modules/fglrx/build_mod/firegl_public.c ---- common/lib/modules/fglrx/build_mod/firegl_public.c 2007-07-29 13:36:37.000000000 +0200 -+++ common/lib/modules/fglrx/build_mod/firegl_public.c 2007-07-29 14:24:11.000000000 +0200 -@@ -2409,7 +2409,11 @@ - #ifdef pte_offset_map - pte_p = pte_offset_map(pmd_p, virtual_addr); - if (pte_present(*pte_p)) -+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,22) - ret = (ptep_clear_flush_dirty(vma, virtual_addr, pte_p) ? 1 : 0); +8.43.3 for 2.6.23 compatibility + +--- firegl_public.c.orig 2007-10-23 19:31:26.000000000 +0200 ++++ firegl_public.c 2007-10-23 19:32:07.000000000 +0200 +@@ -217,6 +217,56 @@ + #define preempt_enable() + #endif + ++#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,22) ++#if defined(__i386__) ++#define ptep_test_and_clear_dirty(vma, addr, ptep) ({ \ ++ int __ret = 0; \ ++ if (pte_dirty(*(ptep))) \ ++ __ret = test_and_clear_bit(_PAGE_BIT_DIRTY, \ ++ &(ptep)->pte_low); \ ++ if (__ret) \ ++ pte_update((vma)->vm_mm, addr, ptep); \ ++ __ret; \ ++}) ++ ++static inline int pte_read(pte_t pte) { return (pte).pte_low & _PAGE_USER; } ++static inline int pte_user(pte_t pte) { return (pte).pte_low & _PAGE_USER; } ++#ifdef CONFIG_X86_PAE ++/* ++ * Is the pte executable? ++ */ ++static inline int pte_x(pte_t pte) ++{ ++ return !(pte_val(pte) & _PAGE_NX); ++} ++ ++/* ++ * All present user-pages with !NX bit are user-executable: ++ */ ++static inline int pte_exec(pte_t pte) ++{ ++ return pte_user(pte) && pte_x(pte); ++} +#else -+ return 0; ++static inline int pte_exec(pte_t pte) ++{ ++ return pte_user(pte); ++} ++#endif /* PAE */ ++ ++#elif defined(__x86_64__) ++static inline int ptep_test_and_clear_dirty(struct vm_area_struct *vma, ++ unsigned long addr, pte_t *ptep) ++{ ++ if (!pte_dirty(*ptep)) ++ return 0; ++ return test_and_clear_bit(_PAGE_BIT_DIRTY, &ptep->pte); ++} ++static inline int pte_read(pte_t pte) { return pte_val(pte) & _PAGE_USER; } ++static inline int pte_exec(pte_t pte) { return !(pte_val(pte) & _PAGE_NX); } +#endif - else - __KE_DEBUG("page not exists!\n"); - pte_unmap(pte_p); -@@ -3399,9 +3403,11 @@ - sprintf(buf, "0x%Lx %c%c%c%c%c%c\n", - *phys_address, - pte_present (pte) ? 'p' : '-', -+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23) - pte_read (pte) ? 'r' : '-', -- pte_write (pte) ? 'w' : '-', - pte_exec (pte) ? 'x' : '-', +#endif -+ pte_write (pte) ? 'w' : '-', - pte_dirty (pte) ? 'd' : '-', - pte_young (pte) ? 'a' : '-'); - } -@@ -5348,7 +5354,11 @@ ++ + // ============================================================ + /* globals */ + +@@ -2489,7 +2539,7 @@ void ATI_API_CALL __ke_put_vm_page_table + #ifndef ptep_clear_flush_dirty + #define ptep_clear_flush_dirty(__vma, __address, __ptep) \ + ({ \ +- int __dirty = ptep_test_and_clear_dirty(__ptep); \ ++ int __dirty = ptep_test_and_clear_dirty(__vma, __address, __ptep); \ + if (__dirty) \ + flush_tlb_page(__vma, __address); \ + __dirty; \ +@@ -2936,7 +2986,7 @@ int ATI_API_CALL __ke_request_irq(unsign + { + return request_irq(irq, + (void(*)(int, void *, struct pt_regs *))handler, +- SA_SHIRQ, dev_name, dev_id); ++ IRQF_SHARED, dev_name, dev_id); + } + + void ATI_API_CALL __ke_free_irq(unsigned int irq, void *dev_id) +@@ -2959,7 +3009,7 @@ int ATI_API_CALL __ke_request_irq(unsign + irq_handler_func = handler; + return request_irq(irq, + ke_irq_handler_wrap, +- SA_SHIRQ, dev_name, dev_id); ++ IRQF_SHARED, dev_name, dev_id); + } + + void ATI_API_CALL __ke_free_irq(unsigned int irq, void *dev_id) +@@ -5436,7 +5486,7 @@ unsigned int ATI_API_CALL KAS_Spinlock_R + /** \brief Type definition of the structure describing Slab Cache object */ + typedef struct tag_kasSlabCache_t + { +- kmem_cache_t* cache; /* OS slab cache object */ ++ struct kmem_cache *cache; /* OS slab cache object */ + spinlock_t lock; /* OS spinlock object protecting the cache */ + unsigned int routine_type; /* Type of routine the cache might be accessed from */ + char name[14]; /* Cache object name (kernel 2.4 restricts its length to 19 chars) */ +@@ -5482,7 +5532,7 @@ unsigned int ATI_API_CALL KAS_SlabCache_ DBG_TRACE("creating slab object '%s'", slabcache_obj->name); if ((slabcache_obj->cache = -+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23) - kmem_cache_create(slabcache_obj->name, iEntrySize, 0, 0, NULL, NULL))) -+#else +- kmem_cache_create(slabcache_obj->name, iEntrySize, 0, 0, NULL, NULL))) + kmem_cache_create(slabcache_obj->name, iEntrySize, 0, 0, NULL))) -+#endif { ret = 1; } - |