Magellan Linux

Contents of /trunk/ati-drivers/patches/fglrx-2.6-pagetable.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 144 - (show annotations) (download)
Tue May 8 20:06:05 2007 UTC (17 years ago) by niro
File size: 5027 byte(s)
-import

1 --- lib/modules/fglrx/build_mod/firegl_public.c.orig 2005-02-05 08:18:17.301667616 -0500
2 +++ lib/modules/fglrx/build_mod/firegl_public.c 2005-02-05 08:45:50.522339872 -0500
3 @@ -1659,13 +1659,22 @@
4 {
5 unsigned long pte_linear;
6 pgd_t* pgd_p;
7 +#if LINUX_VERSION_CODE > 0x02060a /* KERNEL_VERSION(2,6,10) */
8 + pud_t* pud_p;
9 +#endif
10 pmd_t* pmd_p;
11 pte_t* pte_p;
12 pte_t pte;
13
14 pte_linear = VMALLOC_VMADDR(virtual_addr); // convert to pte linear address (x86 => nop)
15 pgd_p = pgd_offset(mm, pte_linear);
16 +#if LINUX_VERSION_CODE > 0x02060a /* KERNEL_VERSION(2,6,10) */
17 + pud_p = pud_offset(pgd_p, pte_linear);
18 + pmd_p = pmd_offset(pud_p, pte_linear);
19 +#else
20 pmd_p = pmd_offset(pgd_p, pte_linear);
21 +#endif
22 +
23 #ifndef FGL_ATOMIC_PTE
24 #if LINUX_VERSION_CODE > 0x020500
25 pte_p = pte_offset_kernel(pmd_p, pte_linear);
26 @@ -2085,6 +2094,9 @@
27 unsigned long address)
28 {
29 pgd_t* pgd_p;
30 +#if LINUX_VERSION_CODE > 0x02060a /* KERNEL_VERSION(2,6,10) */
31 + pud_t* pud_p;
32 +#endif
33 pmd_t* pmd_p;
34 pte_t* pte_p;
35 pte_t pte;
36 @@ -2185,7 +2197,12 @@
37 /* alternatively we could generate a NOPAGE_OOM "out of memory" */
38 }
39 /* locate medium level page table (x86 => nop) */
40 +#if LINUX_VERSION_CODE > 0x02060a /* KERNEL_VERSION(2,6,10) */
41 + pud_p = pud_offset(pgd_p, pte_linear);
42 + pmd_p = pmd_offset(pud_p, pte_linear);
43 +#else
44 pmd_p = pmd_offset(pgd_p, pte_linear);
45 +#endif
46 if (!pmd_present(*pmd_p))
47 {
48 __KE_ERROR("FATAL ERROR: User queue buffer not present! (pmd)\n");
49 @@ -2549,13 +2566,21 @@
50 {
51 unsigned long pte_linear;
52 pgd_t* pgd_p;
53 +#if LINUX_VERSION_CODE > 0x02060a /* KERNEL_VERSION(2,6,10) */
54 + pud_t* pud_p;
55 +#endif
56 pmd_t* pmd_p;
57 pte_t* pte_p;
58 pte_t pte;
59
60 pte_linear = VMALLOC_VMADDR(virtual_addr); // convert to pte linear address (x86 => nop)
61 pgd_p = pgd_offset(vma->vm_mm, pte_linear);
62 +#if LINUX_VERSION_CODE > 0x02060a /* KERNEL_VERSION(2,6,10) */
63 + pud_p = pud_offset(pgd_p, pte_linear);
64 + pmd_p = pmd_offset(pud_p, pte_linear);
65 +#else
66 pmd_p = pmd_offset(pgd_p, pte_linear);
67 +#endif
68 #ifndef FGL_ATOMIC_PTE
69 #if LINUX_VERSION_CODE > 0x020500
70 pte_p = pte_offset_kernel(pmd_p, pte_linear);
71 @@ -2704,13 +2729,13 @@
72 #endif /* __ia64__ */
73 vma->vm_flags |= VM_IO; /* not in core dump */
74 }
75 - if (remap_page_range(FGL_VMA_API_PASS
76 + if (remap_pfn_range(FGL_VMA_API_PASS
77 vma->vm_start,
78 - __ke_vm_offset(vma),
79 + __ke_vm_offset(vma) >> PAGE_SHIFT,
80 vma->vm_end - vma->vm_start,
81 vma->vm_page_prot))
82 {
83 - __KE_DEBUG("remap_page_range failed\n");
84 + __KE_DEBUG("remap_pfn_range failed\n");
85 return -EAGAIN;
86 }
87 vma->vm_flags |= VM_SHM | VM_RESERVED; /* Don't swap */
88 @@ -2771,13 +2796,13 @@
89 {
90 if (__ke_vm_offset(vma) >= __pa(high_memory))
91 vma->vm_flags |= VM_IO; /* not in core dump */
92 - if (remap_page_range(FGL_VMA_API_PASS
93 + if (remap_pfn_range(FGL_VMA_API_PASS
94 vma->vm_start,
95 - __ke_vm_offset(vma),
96 + __ke_vm_offset(vma) >> PAGE_SHIFT,
97 vma->vm_end - vma->vm_start,
98 vma->vm_page_prot))
99 {
100 - __KE_DEBUG("remap_page_range failed\n");
101 + __KE_DEBUG("remap_pfn_range failed\n");
102 return -EAGAIN;
103 }
104 #ifdef __x86_64__
105 @@ -2808,13 +2833,13 @@
106 {
107 if (__ke_vm_offset(vma) >= __pa(high_memory))
108 vma->vm_flags |= VM_IO; /* not in core dump */
109 - if (remap_page_range(FGL_VMA_API_PASS
110 + if (remap_pfn_range(FGL_VMA_API_PASS
111 vma->vm_start,
112 - __ke_vm_offset(vma),
113 + __ke_vm_offset(vma) >> PAGE_SHIFT,
114 vma->vm_end - vma->vm_start,
115 vma->vm_page_prot))
116 {
117 - __KE_DEBUG("remap_page_range failed\n");
118 + __KE_DEBUG("remap_pfn_range failed\n");
119 return -EAGAIN;
120 }
121 #ifdef __x86_64__
122 @@ -2858,6 +2883,37 @@
123
124 #if LINUX_VERSION_CODE >= 0x020400
125
126 +#if LINUX_VERSION_CODE >= 0x02060b
127 +
128 +typedef struct {
129 + void (*free_memory)(struct agp_memory *);
130 + struct agp_memory * (*allocate_memory)(size_t, u32);
131 + int (*bind_memory)(struct agp_memory *, off_t);
132 + int (*unbind_memory)(struct agp_memory *);
133 + void (*enable)(u32);
134 + int (*acquire)(void);
135 + void (*release)(void);
136 + int (*copy_info)(struct agp_kern_info *);
137 +} drm_agp_t;
138 +
139 +static const drm_agp_t drm_agp = {
140 + &agp_free_memory,
141 + &agp_allocate_memory,
142 + &agp_bind_memory,
143 + &agp_unbind_memory,
144 + &agp_enable,
145 + &agp_backend_acquire,
146 + &agp_backend_release,
147 + &agp_copy_info
148 +};
149 +#undef DRM_AGP_MODULE_GET
150 +#undef DRM_AGP_MODULE_PUT
151 +
152 +#define DRM_AGP_MODULE_GET &drm_agp
153 +#define DRM_AGP_MODULE_PUT
154 +
155 +#endif
156 +
157 static const drm_agp_t *drm_agp_module_stub = NULL;
158
159 #define AGP_FUNCTIONS 8

Properties

Name Value
svn:executable *