Date: Sat, 29 May 2010 19:55:41 -0700 From: Craig Rodrigues <rodrigc@FreeBSD.org> To: "datastream datastream.freecity" <datastream.freecity@gmail.com> Cc: FreeBSD Current <freebsd-current@freebsd.org> Subject: Re: nvidia-driver 195.22 use horribly broken on amd64 between r206173 and Message-ID: <20100530025541.GA19805@FreeBSD.org> In-Reply-To: <AANLkTim2-n8CZhbnqFKXVEO_Fjg1KDFxi0eZsGJWSUkd@mail.gmail.com> References: <AANLkTil33IEVGXxsjV1oqfBgKQq-aIJ9Ur1U0Gn8Gplt@mail.gmail.com> <4BFD4AE6.5040105@cs.rice.edu> <20100526165141.GF83316@deviant.kiev.zoral.com.ua> <4C0158D0.1000902@FreeBSD.org> <AANLkTim2-n8CZhbnqFKXVEO_Fjg1KDFxi0eZsGJWSUkd@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
--Kj7319i9nmIyA2yE Content-Type: text/plain; charset=us-ascii Content-Disposition: inline On Sun, May 30, 2010 at 02:48:13AM +0800, datastream datastream.freecity wrote: > > http://www.nvnews.net/vbulletin/showthread.php?t=150719 > NVIDIA-FreeBSD-x86_64-195.36.24 with r208117 in my T61 laptop works well. Hi, I did the following: - updated r208649 - applied following patch to nvidia-driver port which bumps driver version up to 195.36.24, and also applies kib's patch My system still hangs after doing a startx. I also tried recompiling the driver *without* kib's patch, and my system still hangs. -- Craig Rodrigues rodrigc@crodrigues.org --Kj7319i9nmIyA2yE Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="nvidia-patch.txt" ? 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); --Kj7319i9nmIyA2yE--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20100530025541.GA19805>