diff -Naur nv.orig/nv-vm.c nv/nv-vm.c --- nv.orig/nv-vm.c 2008-02-15 02:35:05.000000000 +0000 +++ nv/nv-vm.c 2008-03-07 06:36:14.000000000 +0000 @@ -61,7 +61,7 @@ #if defined(NVCPU_X86) || defined(NVCPU_X86_64) pgprot_val(prot) &= __nv_supported_pte_mask; #endif - change_page_attr(page, 1, prot); + set_pages_uc(page, 1); } #endif } @@ -76,7 +76,7 @@ #if defined(NVCPU_X86) || defined(NVCPU_X86_64) pgprot_val(prot) &= __nv_supported_pte_mask; #endif - change_page_attr(page, 1, prot); + set_pages_wb(page, 1); } #endif /* NV_CHANGE_PAGE_ATTR_PRESENT */ } @@ -360,9 +360,6 @@ #if defined(NV_CPA_NEEDS_FLUSHING) nv_execute_on_all_cpus(cache_flush, NULL); #endif -#if defined (NVCPU_X86) || defined (NVCPU_X86_64) - global_flush_tlb(); -#endif nv_ext_flush_caches(); // handle other platform flushes if present #endif } diff -Naur nv.orig/nv.c nv/nv.c --- nv.orig/nv.c 2008-02-15 02:35:05.000000000 +0000 +++ nv/nv.c 2008-05-05 15:08:56.000000000 +0000 @@ -613,7 +613,7 @@ nv_state_t *nv; nv_linux_state_t *nvl; - proc_nvidia = create_proc_entry("nvidia", d_flags, proc_root_driver); + proc_nvidia = create_proc_entry("nvidia", d_flags, NULL); if (!proc_nvidia) goto failed; @@ -1140,7 +1140,7 @@ pgprot_val(prot) &= __nv_supported_pte_mask; // this should split the large page - change_page_attr(page, 1, prot); + set_pages_uc(page, 1); // broken kernels may get confused after splitting the page and // restore the page before returning to us. detect that case. @@ -1164,7 +1164,7 @@ pgprot_val(prot) &= __nv_supported_pte_mask; // everything's ok! - change_page_attr(page, 1, prot); + set_pages_wb(page, 1); free_page(large_page); return 0; } @@ -1829,14 +1829,14 @@ return page; #else - return NOPAGE_SIGBUS; + return VM_FAULT_SIGBUS; #endif } struct vm_operations_struct nv_vm_ops = { .open = nv_kern_vma_open, .close = nv_kern_vma_release, /* "close" */ - .nopage = nv_kern_vma_nopage, + .fault = nv_kern_vma_nopage, }; static nv_file_private_t *