diff options
-rw-r--r-- | linux-core/README.drm | 11 | ||||
-rw-r--r-- | linux-core/drmP.h | 5 | ||||
-rw-r--r-- | linux-core/i810_dma.c | 10 | ||||
-rw-r--r-- | linux-core/i810_drv.c | 4 | ||||
-rw-r--r-- | linux-core/mga_drv.c | 4 | ||||
-rw-r--r-- | linux-core/r128_drv.c | 4 | ||||
-rw-r--r-- | linux-core/tdfx_drv.c | 4 | ||||
-rw-r--r-- | linux/README.drm | 11 | ||||
-rw-r--r-- | linux/drmP.h | 5 | ||||
-rw-r--r-- | linux/gamma_drv.c | 4 | ||||
-rw-r--r-- | linux/i810_dma.c | 10 | ||||
-rw-r--r-- | linux/i810_drv.c | 4 | ||||
-rw-r--r-- | linux/memory.c | 10 | ||||
-rw-r--r-- | linux/mga_dma.c | 10 | ||||
-rw-r--r-- | linux/mga_drv.c | 4 | ||||
-rw-r--r-- | linux/r128_drv.c | 4 | ||||
-rw-r--r-- | linux/tdfx_drv.c | 4 | ||||
-rw-r--r-- | linux/vm.c | 12 |
18 files changed, 75 insertions, 45 deletions
diff --git a/linux-core/README.drm b/linux-core/README.drm index 1cc4c277..6441e01e 100644 --- a/linux-core/README.drm +++ b/linux-core/README.drm @@ -1,3 +1,7 @@ +************************************************************ +* For the very latest on DRI development, please see: * +* http://dri.sourceforge.net/ * +************************************************************ The Direct Rendering Manager (drm) is a device-independent kernel-level device driver that provides support for the XFree86 Direct Rendering @@ -36,6 +40,7 @@ For specific information about kernel-level support, see: A Security Analysis of the Direct Rendering Infrastructure http://precisioninsight.com/dr/security.html - - -$XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/README.drm,v 1.2 1999/09/27 14:59:24 dawes Exp $ +************************************************************ +* For the very latest on DRI development, please see: * +* http://dri.sourceforge.net/ * +************************************************************ diff --git a/linux-core/drmP.h b/linux-core/drmP.h index 516e9b22..4f85d07c 100644 --- a/linux-core/drmP.h +++ b/linux-core/drmP.h @@ -139,6 +139,11 @@ typedef struct wait_queue *wait_queue_head_t; #define module_exit(x) void cleanup_module(void) { x(); } #endif + /* virt_to_page added in 2.4.0-test6 */ +#ifndef virt_to_page +#define virt_to_page(kaddr) (mem_map + MAP_NR(kaddr)) +#endif + /* Generic cmpxchg added in 2.3.x */ #ifndef __HAVE_ARCH_CMPXCHG /* Include this here so that driver can be diff --git a/linux-core/i810_dma.c b/linux-core/i810_dma.c index f3d9db43..19b7bd92 100644 --- a/linux-core/i810_dma.c +++ b/linux-core/i810_dma.c @@ -282,8 +282,8 @@ static unsigned long i810_alloc_page(drm_device_t *dev) if(address == 0UL) return 0; - atomic_inc(&mem_map[MAP_NR((void *) address)].count); - set_bit(PG_locked, &mem_map[MAP_NR((void *) address)].flags); + atomic_inc(&virt_to_page(address)->count); + set_bit(PG_locked, &virt_to_page(address)->flags); return address; } @@ -293,9 +293,9 @@ static void i810_free_page(drm_device_t *dev, unsigned long page) if(page == 0UL) return; - atomic_dec(&mem_map[MAP_NR((void *) page)].count); - clear_bit(PG_locked, &mem_map[MAP_NR((void *) page)].flags); - wake_up(&mem_map[MAP_NR((void *) page)].wait); + atomic_dec(&virt_to_page(page)->count); + clear_bit(PG_locked, &virt_to_page(page)->flags); + wake_up(&virt_to_page(page)->wait); free_page(page); return; } diff --git a/linux-core/i810_drv.c b/linux-core/i810_drv.c index 5cab071e..275663a1 100644 --- a/linux-core/i810_drv.c +++ b/linux-core/i810_drv.c @@ -44,8 +44,8 @@ static drm_device_t i810_device; drm_ctx_t i810_res_ctx; static struct file_operations i810_fops = { -#if LINUX_VERSION_CODE >= 0x020322 - /* This started being used approx. 2.3.34 */ +#if LINUX_VERSION_CODE >= 0x020400 + /* This started being used during 2.4.0-test */ owner: THIS_MODULE, #endif open: i810_open, diff --git a/linux-core/mga_drv.c b/linux-core/mga_drv.c index 7aae6f3e..acc42b83 100644 --- a/linux-core/mga_drv.c +++ b/linux-core/mga_drv.c @@ -45,8 +45,8 @@ static drm_device_t mga_device; drm_ctx_t mga_res_ctx; static struct file_operations mga_fops = { -#if LINUX_VERSION_CODE >= 0x020322 - /* This started being used approx. 2.3.34 */ +#if LINUX_VERSION_CODE >= 0x020400 + /* This started being used during 2.4.0-test */ owner: THIS_MODULE, #endif open: mga_open, diff --git a/linux-core/r128_drv.c b/linux-core/r128_drv.c index 6b1b19d5..fac88247 100644 --- a/linux-core/r128_drv.c +++ b/linux-core/r128_drv.c @@ -44,8 +44,8 @@ static drm_device_t r128_device; drm_ctx_t r128_res_ctx; static struct file_operations r128_fops = { -#if LINUX_VERSION_CODE >= 0x020322 - /* This started being used approx. 2.3.34 */ +#if LINUX_VERSION_CODE >= 0x020400 + /* This started being used during 2.4.0-test */ owner: THIS_MODULE, #endif open: r128_open, diff --git a/linux-core/tdfx_drv.c b/linux-core/tdfx_drv.c index ba8c40ce..59f10197 100644 --- a/linux-core/tdfx_drv.c +++ b/linux-core/tdfx_drv.c @@ -45,8 +45,8 @@ static drm_device_t tdfx_device; drm_ctx_t tdfx_res_ctx; static struct file_operations tdfx_fops = { -#if LINUX_VERSION_CODE >= 0x020322 - /* This started being used approx. 2.3.34 */ +#if LINUX_VERSION_CODE >= 0x020400 + /* This started being used during 2.4.0-test */ owner: THIS_MODULE, #endif open: tdfx_open, diff --git a/linux/README.drm b/linux/README.drm index 1cc4c277..6441e01e 100644 --- a/linux/README.drm +++ b/linux/README.drm @@ -1,3 +1,7 @@ +************************************************************ +* For the very latest on DRI development, please see: * +* http://dri.sourceforge.net/ * +************************************************************ The Direct Rendering Manager (drm) is a device-independent kernel-level device driver that provides support for the XFree86 Direct Rendering @@ -36,6 +40,7 @@ For specific information about kernel-level support, see: A Security Analysis of the Direct Rendering Infrastructure http://precisioninsight.com/dr/security.html - - -$XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/README.drm,v 1.2 1999/09/27 14:59:24 dawes Exp $ +************************************************************ +* For the very latest on DRI development, please see: * +* http://dri.sourceforge.net/ * +************************************************************ diff --git a/linux/drmP.h b/linux/drmP.h index 516e9b22..4f85d07c 100644 --- a/linux/drmP.h +++ b/linux/drmP.h @@ -139,6 +139,11 @@ typedef struct wait_queue *wait_queue_head_t; #define module_exit(x) void cleanup_module(void) { x(); } #endif + /* virt_to_page added in 2.4.0-test6 */ +#ifndef virt_to_page +#define virt_to_page(kaddr) (mem_map + MAP_NR(kaddr)) +#endif + /* Generic cmpxchg added in 2.3.x */ #ifndef __HAVE_ARCH_CMPXCHG /* Include this here so that driver can be diff --git a/linux/gamma_drv.c b/linux/gamma_drv.c index 32b2ba2b..13d37c24 100644 --- a/linux/gamma_drv.c +++ b/linux/gamma_drv.c @@ -50,8 +50,8 @@ static drm_device_t gamma_device; static struct file_operations gamma_fops = { -#if LINUX_VERSION_CODE >= 0x020322 - /* This started being used approx. 2.3.34 */ +#if LINUX_VERSION_CODE >= 0x020400 + /* This started being used during 2.4.0-test */ owner: THIS_MODULE, #endif open: gamma_open, diff --git a/linux/i810_dma.c b/linux/i810_dma.c index f3d9db43..19b7bd92 100644 --- a/linux/i810_dma.c +++ b/linux/i810_dma.c @@ -282,8 +282,8 @@ static unsigned long i810_alloc_page(drm_device_t *dev) if(address == 0UL) return 0; - atomic_inc(&mem_map[MAP_NR((void *) address)].count); - set_bit(PG_locked, &mem_map[MAP_NR((void *) address)].flags); + atomic_inc(&virt_to_page(address)->count); + set_bit(PG_locked, &virt_to_page(address)->flags); return address; } @@ -293,9 +293,9 @@ static void i810_free_page(drm_device_t *dev, unsigned long page) if(page == 0UL) return; - atomic_dec(&mem_map[MAP_NR((void *) page)].count); - clear_bit(PG_locked, &mem_map[MAP_NR((void *) page)].flags); - wake_up(&mem_map[MAP_NR((void *) page)].wait); + atomic_dec(&virt_to_page(page)->count); + clear_bit(PG_locked, &virt_to_page(page)->flags); + wake_up(&virt_to_page(page)->wait); free_page(page); return; } diff --git a/linux/i810_drv.c b/linux/i810_drv.c index 5cab071e..275663a1 100644 --- a/linux/i810_drv.c +++ b/linux/i810_drv.c @@ -44,8 +44,8 @@ static drm_device_t i810_device; drm_ctx_t i810_res_ctx; static struct file_operations i810_fops = { -#if LINUX_VERSION_CODE >= 0x020322 - /* This started being used approx. 2.3.34 */ +#if LINUX_VERSION_CODE >= 0x020400 + /* This started being used during 2.4.0-test */ owner: THIS_MODULE, #endif open: i810_open, diff --git a/linux/memory.c b/linux/memory.c index 5023de80..bcb674b5 100644 --- a/linux/memory.c +++ b/linux/memory.c @@ -246,7 +246,12 @@ unsigned long drm_alloc_pages(int order, int area) for (addr = address, sz = bytes; sz > 0; addr += PAGE_SIZE, sz -= PAGE_SIZE) { +#if LINUX_VERSION_CODE >= 0x020400 + /* Argument type changed in 2.4.0-test6/pre8 */ + mem_map_reserve(virt_to_page(addr)); +#else mem_map_reserve(MAP_NR(addr)); +#endif } return address; @@ -267,7 +272,12 @@ void drm_free_pages(unsigned long address, int order, int area) for (addr = address, sz = bytes; sz > 0; addr += PAGE_SIZE, sz -= PAGE_SIZE) { +#if LINUX_VERSION_CODE >= 0x020400 + /* Argument type changed in 2.4.0-test6/pre8 */ + mem_map_unreserve(virt_to_page(addr)); +#else mem_map_unreserve(MAP_NR(addr)); +#endif } free_pages(address, order); } diff --git a/linux/mga_dma.c b/linux/mga_dma.c index 28e8811c..d02c3b58 100644 --- a/linux/mga_dma.c +++ b/linux/mga_dma.c @@ -57,8 +57,8 @@ static unsigned long mga_alloc_page(drm_device_t *dev) if(address == 0UL) { return 0; } - atomic_inc(&mem_map[MAP_NR((void *) address)].count); - set_bit(PG_locked, &mem_map[MAP_NR((void *) address)].flags); + atomic_inc(&virt_to_page(address)->count); + set_bit(PG_locked, &virt_to_page(address)->flags); return address; } @@ -70,9 +70,9 @@ static void mga_free_page(drm_device_t *dev, unsigned long page) if(page == 0UL) { return; } - atomic_dec(&mem_map[MAP_NR((void *) page)].count); - clear_bit(PG_locked, &mem_map[MAP_NR((void *) page)].flags); - wake_up(&mem_map[MAP_NR((void *) page)].wait); + atomic_dec(&virt_to_page(page)->count); + clear_bit(PG_locked, &virt_to_page(page)->flags); + wake_up(&virt_to_page(page)->wait); free_page(page); return; } diff --git a/linux/mga_drv.c b/linux/mga_drv.c index 7aae6f3e..acc42b83 100644 --- a/linux/mga_drv.c +++ b/linux/mga_drv.c @@ -45,8 +45,8 @@ static drm_device_t mga_device; drm_ctx_t mga_res_ctx; static struct file_operations mga_fops = { -#if LINUX_VERSION_CODE >= 0x020322 - /* This started being used approx. 2.3.34 */ +#if LINUX_VERSION_CODE >= 0x020400 + /* This started being used during 2.4.0-test */ owner: THIS_MODULE, #endif open: mga_open, diff --git a/linux/r128_drv.c b/linux/r128_drv.c index 6b1b19d5..fac88247 100644 --- a/linux/r128_drv.c +++ b/linux/r128_drv.c @@ -44,8 +44,8 @@ static drm_device_t r128_device; drm_ctx_t r128_res_ctx; static struct file_operations r128_fops = { -#if LINUX_VERSION_CODE >= 0x020322 - /* This started being used approx. 2.3.34 */ +#if LINUX_VERSION_CODE >= 0x020400 + /* This started being used during 2.4.0-test */ owner: THIS_MODULE, #endif open: r128_open, diff --git a/linux/tdfx_drv.c b/linux/tdfx_drv.c index ba8c40ce..59f10197 100644 --- a/linux/tdfx_drv.c +++ b/linux/tdfx_drv.c @@ -45,8 +45,8 @@ static drm_device_t tdfx_device; drm_ctx_t tdfx_res_ctx; static struct file_operations tdfx_fops = { -#if LINUX_VERSION_CODE >= 0x020322 - /* This started being used approx. 2.3.34 */ +#if LINUX_VERSION_CODE >= 0x020400 + /* This started being used during 2.4.0-test */ owner: THIS_MODULE, #endif open: tdfx_open, @@ -96,13 +96,13 @@ struct page *drm_vm_shm_nopage(struct vm_area_struct *vma, offset = address - vma->vm_start; physical = (unsigned long)map->handle + offset; - atomic_inc(&mem_map[MAP_NR(physical)].count); /* Dec. by kernel */ + atomic_inc(&virt_to_page(physical)->count); /* Dec. by kernel */ DRM_DEBUG("0x%08lx => 0x%08lx\n", address, physical); #if LINUX_VERSION_CODE < 0x020317 return physical; #else - return mem_map + MAP_NR(physical); + return virt_to_page(physical); #endif } @@ -129,13 +129,13 @@ struct page *drm_vm_shm_nopage_lock(struct vm_area_struct *vma, offset = address - vma->vm_start; page = offset >> PAGE_SHIFT; physical = (unsigned long)dev->lock.hw_lock + offset; - atomic_inc(&mem_map[MAP_NR(physical)].count); /* Dec. by kernel */ + atomic_inc(&virt_to_page(physical)->count); /* Dec. by kernel */ DRM_DEBUG("0x%08lx (page %lu) => 0x%08lx\n", address, page, physical); #if LINUX_VERSION_CODE < 0x020317 return physical; #else - return mem_map + MAP_NR(physical); + return virt_to_page(physical); #endif } @@ -164,13 +164,13 @@ struct page *drm_vm_dma_nopage(struct vm_area_struct *vma, offset = address - vma->vm_start; /* vm_[pg]off[set] should be 0 */ page = offset >> PAGE_SHIFT; physical = dma->pagelist[page] + (offset & (~PAGE_MASK)); - atomic_inc(&mem_map[MAP_NR(physical)].count); /* Dec. by kernel */ + atomic_inc(&virt_to_page(physical)->count); /* Dec. by kernel */ DRM_DEBUG("0x%08lx (page %lu) => 0x%08lx\n", address, page, physical); #if LINUX_VERSION_CODE < 0x020317 return physical; #else - return mem_map + MAP_NR(physical); + return virt_to_page(physical); #endif } |