--- drivers/char/drm/drm_proc.c | 4 ++-- drivers/char/drm/drm_vm.c | 7 ++----- drivers/video/fbmem.c | 5 +---- drivers/video/gbefb.c | 2 +- drivers/video/sgivwfb.c | 3 +-- 5 files changed, 7 insertions(+), 14 deletions(-) Index: linux/drivers/char/drm/drm_vm.c =================================================================== --- linux.orig/drivers/char/drm/drm_vm.c +++ linux/drivers/char/drm/drm_vm.c @@ -599,11 +599,8 @@ int drm_mmap(struct file *filp, struct v /* fall through to _DRM_FRAME_BUFFER... */ case _DRM_FRAME_BUFFER: case _DRM_REGISTERS: -#if defined(__i386__) || defined(__x86_64__) - if (boot_cpu_data.x86 > 3 && map->type != _DRM_AGP) { - pgprot_val(vma->vm_page_prot) |= _PAGE_PCD; - pgprot_val(vma->vm_page_prot) &= ~_PAGE_PWT; - } +#ifdef CONFIG_X86 + vma->vm_page_prot = pgprot_writecombine(vma->vm_page_prot); #elif defined(__powerpc__) pgprot_val(vma->vm_page_prot) |= _PAGE_NO_CACHE; if (map->type == _DRM_REGISTERS) Index: linux/drivers/video/fbmem.c =================================================================== --- linux.orig/drivers/video/fbmem.c +++ linux/drivers/video/fbmem.c @@ -1189,14 +1189,11 @@ fb_mmap(struct file *file, struct vm_are vma->vm_page_prot); #elif defined(__alpha__) /* Caching is off in the I/O space quadrant by design. */ -#elif defined(__i386__) || defined(__x86_64__) - if (boot_cpu_data.x86 > 3) - pgprot_val(vma->vm_page_prot) |= _PAGE_PCD; #elif defined(__mips__) || defined(__sparc_v9__) vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot); #elif defined(__hppa__) pgprot_val(vma->vm_page_prot) |= _PAGE_NO_CACHE; -#elif defined(__arm__) || defined(__sh__) || defined(__m32r__) +#elif defined(__arm__) || defined(__sh__) || defined(__m32r__) || defined(CONFIG_X86) vma->vm_page_prot = pgprot_writecombine(vma->vm_page_prot); #elif defined(__ia64__) if (efi_range_is_wc(vma->vm_start, vma->vm_end - vma->vm_start)) Index: linux/drivers/video/sgivwfb.c =================================================================== --- linux.orig/drivers/video/sgivwfb.c +++ linux/drivers/video/sgivwfb.c @@ -714,8 +714,7 @@ static int sgivwfb_mmap(struct fb_info * if (offset + size > sgivwfb_mem_size) return -EINVAL; offset += sgivwfb_mem_phys; - pgprot_val(vma->vm_page_prot) = - pgprot_val(vma->vm_page_prot) | _PAGE_PCD; + vma->vm_page_prot = pgprot_writecombine(vma->vm_page_prot); vma->vm_flags |= VM_IO; if (remap_pfn_range(vma, vma->vm_start, offset >> PAGE_SHIFT, size, vma->vm_page_prot)) Index: linux/drivers/video/gbefb.c =================================================================== --- linux.orig/drivers/video/gbefb.c +++ linux/drivers/video/gbefb.c @@ -57,7 +57,7 @@ struct gbefb_par { #endif #endif #ifdef CONFIG_X86 -#define pgprot_fb(_prot) ((_prot) | _PAGE_PCD) +#define pgprot_fb(_prot) pgprot_writecombine(_prot) #endif /* Index: linux/drivers/char/drm/drm_proc.c =================================================================== --- linux.orig/drivers/char/drm/drm_proc.c +++ linux/drivers/char/drm/drm_proc.c @@ -512,13 +512,13 @@ static int drm__vma_info(char *buf, char vma->vm_flags & VM_IO ? 'i' : '-', VM_OFFSET(vma)); -#if defined(__i386__) +#if defined(CONFIG_X86) pgprot = pgprot_val(vma->vm_page_prot); DRM_PROC_PRINT(" %c%c%c%c%c%c%c%c%c", pgprot & _PAGE_PRESENT ? 'p' : '-', pgprot & _PAGE_RW ? 'w' : 'r', pgprot & _PAGE_USER ? 'u' : 's', - pgprot & _PAGE_PWT ? 't' : 'b', + ((pgprot & _PAGE_CACHE_MASK) == _PAGE_WC) ? 'w' : 'b', pgprot & _PAGE_PCD ? 'u' : 'c', pgprot & _PAGE_ACCESSED ? 'a' : '-', pgprot & _PAGE_DIRTY ? 'd' : '-',