? a.txt ? nvidia-vm_page_lock.1.patch ? work Index: Makefile =================================================================== RCS file: /home/pcvs/ports/x11/nvidia-driver/Makefile,v retrieving revision 1.98 diff -r1.98 Makefile 9c9 < DISTVERSION?= 195.36.15 --- > DISTVERSION?= 195.36.24 Index: distinfo =================================================================== RCS file: /home/pcvs/ports/x11/nvidia-driver/distinfo,v retrieving revision 1.36 diff -r1.36 distinfo 1,15c1,3 < MD5 (NVIDIA-FreeBSD-x86-195.36.15.tar.gz) = 2537ca726240344c7eaa44857e2b134e < SHA256 (NVIDIA-FreeBSD-x86-195.36.15.tar.gz) = 21fc89fa59e2cc96e560af856a3fa583ce4bfb7975465c71170c64962201e7a1 < SIZE (NVIDIA-FreeBSD-x86-195.36.15.tar.gz) = 25614326 < MD5 (NVIDIA-FreeBSD-x86_64-195.36.15.tar.gz) = 95af03aedc818a3dfd8ae9f289746ba4 < SHA256 (NVIDIA-FreeBSD-x86_64-195.36.15.tar.gz) = d64c664398cb4dade24af6b108e03607614f1f7584c71449230c646c313d0e7e < SIZE (NVIDIA-FreeBSD-x86_64-195.36.15.tar.gz) = 26449559 < MD5 (NVIDIA-FreeBSD-x86-173.14.25.tar.gz) = 1eca3916a9ae86b953f54405e1881774 < SHA256 (NVIDIA-FreeBSD-x86-173.14.25.tar.gz) = c432ed94ce71e297b2d9304d9f34f906b58e2c7c4bc13d8dbac264ed52fd6261 < SIZE (NVIDIA-FreeBSD-x86-173.14.25.tar.gz) = 16682722 < MD5 (NVIDIA-FreeBSD-x86-96.43.16.tar.gz) = 3fc5c2bb537d4a7664d84a7a0df09c7c < SHA256 (NVIDIA-FreeBSD-x86-96.43.16.tar.gz) = 38bf334284dc600d92d8436333c98d5577e34d69456ed71f1cccc75caa6dffcd < SIZE (NVIDIA-FreeBSD-x86-96.43.16.tar.gz) = 11842453 < MD5 (NVIDIA-FreeBSD-x86-71.86.13.tar.gz) = 19000b906225ebd39ca3edc1b0c3c7a5 < SHA256 (NVIDIA-FreeBSD-x86-71.86.13.tar.gz) = 27ae01cd6fe050871f7785c2146b18e74ea882f6262e46dc965bf26061238447 < SIZE (NVIDIA-FreeBSD-x86-71.86.13.tar.gz) = 8066159 --- > MD5 (NVIDIA-FreeBSD-x86-195.36.24.tar.gz) = b09ee65d4d445fe8679e50bc49bba8c7 > SHA256 (NVIDIA-FreeBSD-x86-195.36.24.tar.gz) = d175c6848ac174f4c0c54ce7325959e21132f833e13d34004fab116c7034244f > SIZE (NVIDIA-FreeBSD-x86-195.36.24.tar.gz) = 25632339 Index: files/patch-nvidia-vm_page_lock.1 =================================================================== RCS file: files/patch-nvidia-vm_page_lock.1 diff -N files/patch-nvidia-vm_page_lock.1 0a1,34 > --- src/nvidia_subr.c.orig 2010-05-26 19:34:20.722118986 +0300 > +++ src/nvidia_subr.c 2010-05-26 19:50:00.198768786 +0300 > @@ -1237,6 +1237,7 @@ > struct nvidia_alloc *at; > struct nvidia_softc *sc = nv->os_state; > vm_offset_t address; > + vm_page_t m; > uint32_t i; > vm_memattr_t attr; > uint32_t size = (count * PAGE_SIZE); > @@ -1301,9 +1302,10 @@ > > for (i = 0; i < count; i++) { > pte_array[i] = at->pte_array[i].physical_address; > - vm_page_lock_queues(); > - vm_page_wire(PHYS_TO_VM_PAGE(pte_array[i])); > - vm_page_unlock_queues(); > + m = PHYS_TO_VM_PAGE(pte_array[i]); > + vm_page_lock(m); > + vm_page_wire(m); > + vm_page_unlock(m); > sglist_append_phys(at->sg_list, pte_array[i], PAGE_SIZE); > } > > @@ -1365,9 +1367,7 @@ > os_flush_cpu_cache(); > > for (i = 0; i < count; i++) { > - vm_page_lock_queues(); > vm_page_unwire(PHYS_TO_VM_PAGE(at->pte_array[i].physical_address), 0); > - vm_page_unlock_queues(); > kmem_free(kernel_map, > at->pte_array[i].virtual_address, PAGE_SIZE); > malloc_type_freed(M_NVIDIA, PAGE_SIZE);