summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeffrey Gardner <je_fro@gentoo.org>2007-10-24 03:56:17 +0000
committerJeffrey Gardner <je_fro@gentoo.org>2007-10-24 03:56:17 +0000
commit9f8954fc4de58fb4245ee74aa2527ed15a14a7a3 (patch)
tree9ebed767cc973e4491053a9198cc8b0a1118ee81 /x11-drivers/ati-drivers/files
parentlatest version in the tree (diff)
downloadje_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.patch127
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;
}
-