Date: Sun, 15 Aug 2004 10:24:06 +0100 From: Doug Rabson <dfr@nlsystems.com> To: Stefan Ehmann <shoesoft@gmx.net> Cc: freebsd-current@freebsd.org Subject: Re: New nvidia drivers available Message-ID: <200408151024.06247.dfr@nlsystems.com> In-Reply-To: <1092559179.756.7.camel@taxman> References: <200408141934.24107.dfr@nlsystems.com> <20040815025601.522b2f7c.manlix@demonized.net> <1092559179.756.7.camel@taxman>
next in thread | previous in thread | raw e-mail | index | archive | help
On Sunday 15 August 2004 09:39, Stefan Ehmann wrote: > On Sun, 2004-08-15 at 02:56, Johan Pettersson wrote: > > On Sat, 14 Aug 2004 19:34:24 +0100 > > > > Doug Rabson <dfr@nlsystems.com> wrote: > > > The latest 6113 build of the nvidia graphics drivers has just > > > appeared > > > > > > on nvidia's web site. Check out > > > http://www.nvidia.com/object/freebsd_1.0-6113.html if you are > > > currently using the nvidia proprietary drivers. This driver works > > > nicely on FreeBSD-current and while this version is not > > > thread-safe, it does not conflict with libpthread or libthr's use > > > of %gs so you don't have to map everything down to libc_r any > > > more :-). > > > > > > There will be a thread-safe driver available for FreeBSD-current > > > sometime after I commit the pthread parts of the TLS support > > > code. > > > > Im running the new driver on a recent -CURRENT and xorg 6.7.0. When > > starting zsnes I get this: > > > > beard ~> zsnes > > Fatal error 'Exceeded maximum lock level' at line 261 in file > > /usr/src/lib/libpthread/thread/thr_cancel.c (errno = 0) Bus error > > (core dumped) > > beard ~> > > Same error message here when starting neverball. If I map > libpthread->libc_r it's working again. > > xawtv also stopped working. Fortunately setting -xvport manually did > fix that. This might be because libGL calls libpthread's version of open() before libpthread has initialised properly. This patch might fix it - it fixes neverball's map compiler for me but I haven't actually run neverball itself. Index: thr_kern.c =================================================================== RCS file: /home/ncvs/src/lib/libpthread/thread/thr_kern.c,v retrieving revision 1.109 diff -u -r1.109 thr_kern.c --- thr_kern.c 7 Aug 2004 15:15:38 -0000 1.109 +++ thr_kern.c 8 Aug 2004 09:57:55 -0000 @@ -2382,7 +2382,7 @@ if ((thread == NULL) && ((thread = malloc(sizeof(struct pthread))) != NULL)) { bzero(thread, sizeof(struct pthread)); - if ((thread->tcb = _tcb_ctor(thread)) == NULL) { + if ((thread->tcb = _tcb_ctor(thread, curthread == NULL)) == NULL) { free(thread); thread = NULL; } else { Index: thr_open.c =================================================================== RCS file: /home/ncvs/src/lib/libpthread/thread/thr_open.c,v retrieving revision 1.16 diff -u -r1.16 thr_open.c --- thr_open.c 9 Dec 2003 02:20:56 -0000 1.16 +++ thr_open.c 15 Aug 2004 09:19:42 -0000 @@ -45,11 +45,15 @@ int __open(const char *path, int flags,...) { - struct pthread *curthread = _get_curthread(); + struct pthread *curthread; int ret; int mode = 0; va_list ap; + if (_thr_initial == NULL) + _libpthread_init(NULL); + + curthread = _get_curthread(); _thr_cancel_enter(curthread); /* Check if the file is being created: */
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200408151024.06247.dfr>