summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--linux-core/drm_memory.h9
1 files changed, 7 insertions, 2 deletions
diff --git a/linux-core/drm_memory.h b/linux-core/drm_memory.h
index e3ac883d..d6856e14 100644
--- a/linux-core/drm_memory.h
+++ b/linux-core/drm_memory.h
@@ -136,9 +136,14 @@ static inline void *agp_remap(unsigned long offset, unsigned long size,
static inline unsigned long drm_follow_page(void *vaddr)
{
- pgd_t *pgd = pgd_offset_k((unsigned long)vaddr);
+ pgd_t *pgd = pgd_offset_k((unsigned long) vaddr);
+#if LINUX_VERSION_CODE < 0x02060a /* KERNEL_VERSION(2,6,10) */
pmd_t *pmd = pmd_offset(pgd, (unsigned long)vaddr);
- pte_t *ptep = pte_offset_kernel(pmd, (unsigned long)vaddr);
+#else
+ pud_t *pud = pud_offset(pgd, (unsigned long) vaddr);
+ pmd_t *pmd = pmd_offset(pud, (unsigned long) vaddr);
+#endif
+ pte_t *ptep = pte_offset_kernel(pmd, (unsigned long) vaddr);
return pte_pfn(*ptep) << PAGE_SHIFT;
}