diff -u XFree86-4.2.0.orig/xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/i810_dma.c XFree86-4.2.0/xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/i810_dma.c --- XFree86-4.2.0.orig/xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/i810_dma.c Thu Sep 5 00:07:37 2002 +++ XFree86-4.2.0/xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/i810_dma.c Wed Sep 4 23:21:20 2002 @@ -35,6 +35,8 @@ #include "drmP.h" #include "i810_drv.h" #include /* For task queue support */ +#include +#include /* in case we don't have a 2.3.99-pre6 kernel or later: */ #ifndef VM_DONTCOPY @@ -230,7 +232,7 @@ #endif retcode = do_munmap(current->mm, (unsigned long)buf_priv->virtual, - (size_t) buf->total); + (size_t) buf->total, 1); #if LINUX_VERSION_CODE <= 0x020402 up( ¤t->mm->mmap_sem ); #else @@ -293,9 +295,8 @@ if(page == 0UL) return; - atomic_dec(&virt_to_page(page)->count); - clear_bit(PG_locked, &virt_to_page(page)->flags); - wake_up(&virt_to_page(page)->wait); + put_page( virt_to_page( page ) ); + UnlockPage( virt_to_page( page ) ); free_page(page); return; } diff -u XFree86-4.2.0.orig/xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/i830_dma.c XFree86-4.2.0/xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/i830_dma.c --- XFree86-4.2.0.orig/xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/i830_dma.c Thu Sep 5 00:07:37 2002 +++ XFree86-4.2.0/xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/i830_dma.c Wed Sep 4 23:21:29 2002 @@ -36,6 +36,8 @@ #include "drmP.h" #include "i830_drv.h" #include /* For task queue support */ +#include +#include /* in case we don't have a 2.3.99-pre6 kernel or later: */ #ifndef VM_DONTCOPY @@ -251,7 +253,7 @@ #else retcode = do_munmap(current->mm, (unsigned long)buf_priv->virtual, - (size_t) buf->total); + (size_t) buf->total, 1); #endif #if LINUX_VERSION_CODE <= 0x020402 up( ¤t->mm->mmap_sem ); @@ -315,9 +317,8 @@ if(page == 0UL) return; - atomic_dec(&virt_to_page(page)->count); - clear_bit(PG_locked, &virt_to_page(page)->flags); - wake_up(&virt_to_page(page)->wait); + put_page( virt_to_page( page ) ); + UnlockPage( virt_to_page( page ) ); free_page(page); return; }