diff -Naur xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/ati_pcigart.h xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/ati_pcigart.h
--- xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/ati_pcigart.h	2004-07-09 11:36:44.783982520 +0200
+++ xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/ati_pcigart.h	2004-07-09 11:34:20.054984672 +0200
@@ -68,7 +68,7 @@
 	page = virt_to_page( address );
 
 	for ( i = 0 ; i < ATI_PCIGART_TABLE_PAGES ; i++, page++ ) {
-		atomic_inc( &page->count );
+		get_page(page); //atomic_inc( &page->count );
 		SetPageReserved( page );
 	}
 
@@ -85,7 +85,7 @@
 	page = virt_to_page( address );
 
 	for ( i = 0 ; i < ATI_PCIGART_TABLE_PAGES ; i++, page++ ) {
-		atomic_dec( &page->count );
+		__put_page(page); //atomic_dec( &page->count );
 		ClearPageReserved( page );
 	}
 
diff -Naur xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/drm_vm.h xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/drm_vm.h
--- xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/drm_vm.h	2004-07-09 11:36:40.668608152 +0200
+++ xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/drm_vm.h	2004-07-09 11:34:20.063983304 +0200
@@ -101,9 +101,9 @@
 		page = virt_to_page(__va(agpmem->memory->memory[offset]));
 		get_page(page);
 
-		DRM_DEBUG("baddr = 0x%lx page = 0x%p, offset = 0x%lx, count=%d\n",
-			  baddr, __va(agpmem->memory->memory[offset]), offset,
-			  atomic_read(&page->count));
+//		DRM_DEBUG("baddr = 0x%lx page = 0x%p, offset = 0x%lx, count=%d\n",
+//			  baddr, __va(agpmem->memory->memory[offset]), offset,
+//			  atomic_read(&page->count));
 
 		return page;
         }
