From owner-p4-projects@FreeBSD.ORG Sun Jan 14 02:25:39 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 29D1916A415; Sun, 14 Jan 2007 02:25:39 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id D10A316A40F for ; Sun, 14 Jan 2007 02:25:38 +0000 (UTC) (envelope-from hselasky@c2i.net) Received: from swip.net (mailfe09.swip.net [212.247.155.1]) by mx1.freebsd.org (Postfix) with ESMTP id 6CE0D13C441 for ; Sun, 14 Jan 2007 02:25:38 +0000 (UTC) (envelope-from hselasky@c2i.net) X-Cloudmark-Score: 0.000000 [] Received: from [193.217.102.48] (account mc467741@c2i.net HELO [10.0.0.249]) by mailfe09.swip.net (CommuniGate Pro SMTP 5.0.12) with ESMTPA id 213159075; Sun, 14 Jan 2007 02:25:31 +0100 From: Hans Petter Selasky To: "M. Warner Losh" Date: Sun, 14 Jan 2007 02:25:04 +0100 User-Agent: KMail/1.7 References: <200701122132.l0CLWuAG096027@repoman.freebsd.org> <20070113.122940.420518338.imp@bsdimp.com> In-Reply-To: <20070113.122940.420518338.imp@bsdimp.com> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200701140225.05299.hselasky@c2i.net> Cc: perforce@freebsd.org Subject: Re: PERFORCE change 112835 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 14 Jan 2007 02:25:39 -0000 On Saturday 13 January 2007 20:29, M. Warner Losh wrote: > In message: <200701122132.l0CLWuAG096027@repoman.freebsd.org> > > Hans Petter Selasky writes: > : http://perforce.freebsd.org/chv.cgi?CH=112835 > : > : Change 112835 by hselasky@hselasky_mini_itx on 2007/01/12 21:32:24 > : > : ether_ifattach() must be called without any mutexes held, hence > : it can sleep. Use generated typedef's for prototypes for exported > : device methods. This prevents invalid parameter passing and return. > > Why do the attach methods even have locked mutexes to drop? That was > a common error in the early locking efforts that too many network > drivers inherited. Maybe the right fix is to just remove the > lock/unlock pairs in attach entirely... > The attach code in question is run from a separate config thread, which by default locks "sc->sc_mtx" before calling the callback function. Therefore the code unlocks that lock, to avoid sleeping with mutex locked errors. Probably all of the attach code can run without "sc->sc_mtx" locked, but will require Giant locked, when changing the device tree, for example when adding new child devices like MII-bus instances. --HPS From owner-p4-projects@FreeBSD.ORG Sun Jan 14 06:34:16 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id C26ED16A5A7; Sun, 14 Jan 2007 06:34:15 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 83FDF16A5A2 for ; Sun, 14 Jan 2007 06:34:15 +0000 (UTC) (envelope-from imp@bsdimp.com) Received: from harmony.bsdimp.com (vc4-2-0-87.dsl.netrack.net [199.45.160.85]) by mx1.freebsd.org (Postfix) with ESMTP id 3400613C457 for ; Sun, 14 Jan 2007 06:34:15 +0000 (UTC) (envelope-from imp@bsdimp.com) Received: from localhost (localhost [127.0.0.1]) by harmony.bsdimp.com (8.13.4/8.13.4) with ESMTP id l0E6XiWf012900; Sat, 13 Jan 2007 23:33:44 -0700 (MST) (envelope-from imp@bsdimp.com) Date: Sat, 13 Jan 2007 23:34:01 -0700 (MST) Message-Id: <20070113.233401.228973006.imp@bsdimp.com> To: hselasky@c2i.net From: "M. Warner Losh" In-Reply-To: <200701140225.05299.hselasky@c2i.net> References: <200701122132.l0CLWuAG096027@repoman.freebsd.org> <20070113.122940.420518338.imp@bsdimp.com> <200701140225.05299.hselasky@c2i.net> X-Mailer: Mew version 4.2 on Emacs 21.3 / Mule 5.0 (SAKAKI) Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-2.0 (harmony.bsdimp.com [127.0.0.1]); Sat, 13 Jan 2007 23:33:44 -0700 (MST) Cc: perforce@freebsd.org Subject: Re: PERFORCE change 112835 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 14 Jan 2007 06:34:16 -0000 In message: <200701140225.05299.hselasky@c2i.net> Hans Petter Selasky writes: : On Saturday 13 January 2007 20:29, M. Warner Losh wrote: : > In message: <200701122132.l0CLWuAG096027@repoman.freebsd.org> : > : > Hans Petter Selasky writes: : > : http://perforce.freebsd.org/chv.cgi?CH=112835 : > : : > : Change 112835 by hselasky@hselasky_mini_itx on 2007/01/12 21:32:24 : > : : > : ether_ifattach() must be called without any mutexes held, hence : > : it can sleep. Use generated typedef's for prototypes for exported : > : device methods. This prevents invalid parameter passing and return. : > : > Why do the attach methods even have locked mutexes to drop? That was : > a common error in the early locking efforts that too many network : > drivers inherited. Maybe the right fix is to just remove the : > lock/unlock pairs in attach entirely... : > : : The attach code in question is run from a separate config thread, which by : default locks "sc->sc_mtx" before calling the callback function. Therefore : the code unlocks that lock, to avoid sleeping with mutex locked errors. I understand why mtx can't be held, but there's nothing to contend with... : Probably all of the attach code can run without "sc->sc_mtx" locked, but will : require Giant locked, when changing the device tree, for example when adding : new child devices like MII-bus instances. Giant will be locked when attach is called, but not in the deferred attach. So long as attach returns, this shouldn't be a problem. Adding children does need Giant held at the moment. Warner From owner-p4-projects@FreeBSD.ORG Sun Jan 14 09:47:48 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 39CF316A40F; Sun, 14 Jan 2007 09:47:48 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 10CEA16A47E for ; Sun, 14 Jan 2007 09:47:48 +0000 (UTC) (envelope-from rdivacky@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id F3EE813C4A5 for ; Sun, 14 Jan 2007 09:47:47 +0000 (UTC) (envelope-from rdivacky@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0E9llZe034188 for ; Sun, 14 Jan 2007 09:47:47 GMT (envelope-from rdivacky@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0E9llto034185 for perforce@freebsd.org; Sun, 14 Jan 2007 09:47:47 GMT (envelope-from rdivacky@FreeBSD.org) Date: Sun, 14 Jan 2007 09:47:47 GMT Message-Id: <200701140947.l0E9llto034185@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to rdivacky@FreeBSD.org using -f From: Roman Divacky To: Perforce Change Reviews Cc: Subject: PERFORCE change 112887 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 14 Jan 2007 09:47:48 -0000 http://perforce.freebsd.org/chv.cgi?CH=112887 Change 112887 by rdivacky@rdivacky_witten on 2007/01/14 09:47:43 Implement linux_openat(). This includes linux_at function that is common to all *at syscalls. This seems to pass my mangled LTP test. The LTP test is wrong I think (it tries to open nonexistant file and complains when it cant). The race seen in open() is present in this implementation too. If this implementation proves wrong implementing the rest of the *at syscalls will be easy. Affected files ... .. //depot/projects/linuxolator/src/sys/amd64/linux32/linux.h#12 edit .. //depot/projects/linuxolator/src/sys/amd64/linux32/linux32_dummy.c#8 edit .. //depot/projects/linuxolator/src/sys/compat/linux/linux_file.c#9 edit .. //depot/projects/linuxolator/src/sys/compat/linux/linux_util.h#2 edit .. //depot/projects/linuxolator/src/sys/i386/linux/linux.h#10 edit .. //depot/projects/linuxolator/src/sys/i386/linux/linux_dummy.c#8 edit .. //depot/projects/linuxolator/src/sys/kern/vfs_lookup.c#4 edit Differences ... ==== //depot/projects/linuxolator/src/sys/amd64/linux32/linux.h#12 (text+ko) ==== @@ -556,6 +556,8 @@ #define LINUX_F_WRLCK 1 #define LINUX_F_UNLCK 2 +#define LINUX_AT_FDCWD -100 + /* * mount flags */ ==== //depot/projects/linuxolator/src/sys/amd64/linux32/linux32_dummy.c#8 (text+ko) ==== @@ -96,7 +96,6 @@ DUMMY(inotify_add_watch); DUMMY(inotify_rm_watch); DUMMY(migrate_pages); -DUMMY(openat); DUMMY(mkdirat); DUMMY(mknodat); DUMMY(fchownat); ==== //depot/projects/linuxolator/src/sys/compat/linux/linux_file.c#9 (text+ko) ==== @@ -43,6 +43,7 @@ #include #include #include +#include #include #include #include @@ -84,52 +85,42 @@ return (error); } -int -linux_open(struct thread *td, struct linux_open_args *args) + +static int +linux_common_open(struct thread *td, char *path, int l_flags, int mode, int openat) { struct proc *p = td->td_proc; - char *path; int bsd_flags, error; - if (args->flags & LINUX_O_CREAT) - LCONVPATHCREAT(td, args->path, &path); - else - LCONVPATHEXIST(td, args->path, &path); - -#ifdef DEBUG - if (ldebug(open)) - printf(ARGS(open, "%s, 0x%x, 0x%x"), - path, args->flags, args->mode); -#endif bsd_flags = 0; - if (args->flags & LINUX_O_RDONLY) + if (l_flags & LINUX_O_RDONLY) bsd_flags |= O_RDONLY; - if (args->flags & LINUX_O_WRONLY) + if (l_flags & LINUX_O_WRONLY) bsd_flags |= O_WRONLY; - if (args->flags & LINUX_O_RDWR) + if (l_flags & LINUX_O_RDWR) bsd_flags |= O_RDWR; - if (args->flags & LINUX_O_NDELAY) + if (l_flags & LINUX_O_NDELAY) bsd_flags |= O_NONBLOCK; - if (args->flags & LINUX_O_APPEND) + if (l_flags & LINUX_O_APPEND) bsd_flags |= O_APPEND; - if (args->flags & LINUX_O_SYNC) + if (l_flags & LINUX_O_SYNC) bsd_flags |= O_FSYNC; - if (args->flags & LINUX_O_NONBLOCK) + if (l_flags & LINUX_O_NONBLOCK) bsd_flags |= O_NONBLOCK; - if (args->flags & LINUX_FASYNC) + if (l_flags & LINUX_FASYNC) bsd_flags |= O_ASYNC; - if (args->flags & LINUX_O_CREAT) + if (l_flags & LINUX_O_CREAT) bsd_flags |= O_CREAT; - if (args->flags & LINUX_O_TRUNC) + if (l_flags & LINUX_O_TRUNC) bsd_flags |= O_TRUNC; - if (args->flags & LINUX_O_EXCL) + if (l_flags & LINUX_O_EXCL) bsd_flags |= O_EXCL; - if (args->flags & LINUX_O_NOCTTY) + if (l_flags & LINUX_O_NOCTTY) bsd_flags |= O_NOCTTY; - if (args->flags & LINUX_O_DIRECT) + if (l_flags & LINUX_O_DIRECT) bsd_flags |= O_DIRECT; - error = kern_open(td, path, UIO_SYSSPACE, bsd_flags, args->mode); + error = kern_open(td, path, UIO_SYSSPACE, bsd_flags, mode); PROC_LOCK(p); if (!error && !(bsd_flags & O_NOCTTY) && SESS_LEADER(p) && !(p->p_flag & P_CONTROLT)) { @@ -150,10 +141,121 @@ printf(LMSG("open returns error %d"), error); #endif } - LFREEPATH(path); + if (!openat) + LFREEPATH(path); return error; } +/* + * common code for linux *at set of syscalls + * + * works like this: + * if filename is absolute + * ignore dirfd + * else + * if dirfd == AT_FDCWD + * return CWD/filename + * else + * return DIRFD/filename + */ +static int +linux_at(struct thread *td, int dirfd, char *filename, char **newpath, char **freebuf) +{ + struct file *fp; + int error = 0; + struct vnode *dvp; + struct filedesc *fdp = td->td_proc->p_fd; + char *fullpath = "unknown"; + char *freepath = NULL; + + /* dont do anything if the pathname is absolute */ + if (*filename == '/') { + *newpath= filename; + return (0); + } + + /* check for AT_FDWCD */ + if (dirfd == LINUX_AT_FDCWD) { + FILEDESC_LOCK(fdp); + dvp = fdp->fd_cdir; + FILEDESC_UNLOCK(fdp); + } else { + error = fget(td, dirfd, &fp); + if (error) + return (error); + dvp = fp->f_vnode; + /* only a dir can be dfd */ + if (dvp->v_type != VDIR) { + fdrop(fp, td); + return (ENOTDIR); + } + fdrop(fp, td); + } + + error = vn_fullpath(td, dvp, &fullpath, &freepath); + if (!error) { + *newpath = malloc(strlen(fullpath) + strlen(filename) + 2, M_TEMP, M_WAITOK | M_ZERO); + *freebuf = freepath; + sprintf(*newpath, "%s/%s", fullpath, filename); + } + + return (error); +} + +int +linux_openat(struct thread *td, struct linux_openat_args *args) +{ + char *newpath, *oldpath, *freebuf = NULL, *path; + int error, len; + + oldpath = malloc(MAXPATHLEN, M_TEMP, M_WAITOK); + error = copyinstr(args->filename, oldpath, MAXPATHLEN, &len); + +#ifdef DEBUG + if (ldebug(openat)) + printf(ARGS(openat, "%i, %s, 0x%x, 0x%x"), args->dfd, + oldpath, args->flags, args->mode); +#endif + + error = linux_at(td, args->dfd, oldpath, &newpath, &freebuf); + if (error) + return (error); +#ifdef DEBUG + printf(LMSG("newpath: %s"), newpath); +#endif + if (args->flags & LINUX_O_CREAT) + LCONVPATH_SEG(td, newpath, &path, 1, UIO_SYSSPACE); + else + LCONVPATH_SEG(td, newpath, &path, 0, UIO_SYSSPACE); + if (freebuf) + free(freebuf, M_TEMP); + if (*oldpath != '/') + free(newpath, M_TEMP); + + error = linux_common_open(td, path, args->flags, args->mode, 1); + free(oldpath, M_TEMP); + return (error); +} + +int +linux_open(struct thread *td, struct linux_open_args *args) +{ + char *path; + + if (args->flags & LINUX_O_CREAT) + LCONVPATHCREAT(td, args->path, &path); + else + LCONVPATHEXIST(td, args->path, &path); + +#ifdef DEBUG + if (ldebug(open)) + printf(ARGS(open, "%s, 0x%x, 0x%x"), + path, args->flags, args->mode); +#endif + + return linux_common_open(td, path, args->flags, args->mode, 0); +} + int linux_lseek(struct thread *td, struct linux_lseek_args *args) { ==== //depot/projects/linuxolator/src/sys/compat/linux/linux_util.h#2 (text+ko) ==== @@ -53,16 +53,19 @@ int linux_emul_convpath(struct thread *, char *, enum uio_seg, char **, int); -#define LCONVPATH(td, upath, pathp, i) \ +#define LCONVPATH_SEG(td, upath, pathp, i, seg) \ do { \ int _error; \ \ - _error = linux_emul_convpath(td, upath, UIO_USERSPACE, \ + _error = linux_emul_convpath(td, upath, seg, \ pathp, i); \ if (*(pathp) == NULL) \ return (_error); \ } while (0) +#define LCONVPATH(td, upath, pathp, i) \ + LCONVPATH_SEG(td, upath, pathp, i, UIO_USERSPACE) + #define LCONVPATHEXIST(td, upath, pathp) LCONVPATH(td, upath, pathp, 0) #define LCONVPATHCREAT(td, upath, pathp) LCONVPATH(td, upath, pathp, 1) #define LFREEPATH(path) free(path, M_TEMP) ==== //depot/projects/linuxolator/src/sys/i386/linux/linux.h#10 (text+ko) ==== @@ -527,6 +527,8 @@ #define LINUX_F_WRLCK 1 #define LINUX_F_UNLCK 2 +#define LINUX_AT_FDCWD -100 + /* * mount flags */ ==== //depot/projects/linuxolator/src/sys/i386/linux/linux_dummy.c#8 (text+ko) ==== @@ -86,7 +86,6 @@ DUMMY(inotify_add_watch); DUMMY(inotify_rm_watch); DUMMY(migrate_pages); -DUMMY(openat); DUMMY(mkdirat); DUMMY(mknodat); DUMMY(fchownat); ==== //depot/projects/linuxolator/src/sys/kern/vfs_lookup.c#4 (text+ko) ==== From owner-p4-projects@FreeBSD.ORG Sun Jan 14 13:53:04 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id C72D716A415; Sun, 14 Jan 2007 13:53:04 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 9F4C216A407 for ; Sun, 14 Jan 2007 13:53:04 +0000 (UTC) (envelope-from rdivacky@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 902FC13C46A for ; Sun, 14 Jan 2007 13:53:04 +0000 (UTC) (envelope-from rdivacky@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0EDr4I2085462 for ; Sun, 14 Jan 2007 13:53:04 GMT (envelope-from rdivacky@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0EDr4Bn085459 for perforce@freebsd.org; Sun, 14 Jan 2007 13:53:04 GMT (envelope-from rdivacky@FreeBSD.org) Date: Sun, 14 Jan 2007 13:53:04 GMT Message-Id: <200701141353.l0EDr4Bn085459@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to rdivacky@FreeBSD.org using -f From: Roman Divacky To: Perforce Change Reviews Cc: Subject: PERFORCE change 112893 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 14 Jan 2007 13:53:05 -0000 http://perforce.freebsd.org/chv.cgi?CH=112893 Change 112893 by rdivacky@rdivacky_witten on 2007/01/14 13:52:42 Make linux_vfork() actually work. This enables make to work again with 2.6 Affected files ... .. //depot/projects/linuxolator/src/sys/amd64/linux32/linux32_machdep.c#19 edit .. //depot/projects/linuxolator/src/sys/i386/linux/linux_machdep.c#14 edit Differences ... ==== //depot/projects/linuxolator/src/sys/amd64/linux32/linux32_machdep.c#19 (text+ko) ==== @@ -516,6 +516,7 @@ return (error); /* wait for the children to exit, ie. emulate vfork */ PROC_LOCK(p2); + p2->p_flag |= P_PPWAIT; while (p2->p_flag & P_PPWAIT) msleep(td->td_proc, &p2->p_mtx, PWAIT, "ppwait", 0); PROC_UNLOCK(p2); ==== //depot/projects/linuxolator/src/sys/i386/linux/linux_machdep.c#14 (text+ko) ==== @@ -341,6 +341,7 @@ return (error); /* wait for the children to exit, ie. emulate vfork */ PROC_LOCK(p2); + p2->p_flag |= P_PPWAIT; while (p2->p_flag & P_PPWAIT) msleep(td->td_proc, &p2->p_mtx, PWAIT, "ppwait", 0); PROC_UNLOCK(p2); From owner-p4-projects@FreeBSD.ORG Sun Jan 14 16:50:05 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 5AD8016A4C2; Sun, 14 Jan 2007 16:50:05 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 17F3416A47E for ; Sun, 14 Jan 2007 16:50:05 +0000 (UTC) (envelope-from rdivacky@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 1E19B13C468 for ; Sun, 14 Jan 2007 16:50:03 +0000 (UTC) (envelope-from rdivacky@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0EGo1Fx031833 for ; Sun, 14 Jan 2007 16:50:02 GMT (envelope-from rdivacky@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0EGnxce031818 for perforce@freebsd.org; Sun, 14 Jan 2007 16:49:59 GMT (envelope-from rdivacky@FreeBSD.org) Date: Sun, 14 Jan 2007 16:49:59 GMT Message-Id: <200701141649.l0EGnxce031818@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to rdivacky@FreeBSD.org using -f From: Roman Divacky To: Perforce Change Reviews Cc: Subject: PERFORCE change 112906 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 14 Jan 2007 16:50:05 -0000 http://perforce.freebsd.org/chv.cgi?CH=112906 Change 112906 by rdivacky@rdivacky_witten on 2007/01/14 16:49:54 IFC Affected files ... .. //depot/projects/linuxolator/src/sys/amd64/amd64/identcpu.c#2 integrate .. //depot/projects/linuxolator/src/sys/amd64/amd64/mp_machdep.c#4 integrate .. //depot/projects/linuxolator/src/sys/amd64/amd64/nexus.c#4 integrate .. //depot/projects/linuxolator/src/sys/amd64/include/setjmp.h#2 integrate .. //depot/projects/linuxolator/src/sys/amd64/include/specialreg.h#2 integrate .. //depot/projects/linuxolator/src/sys/amd64/linux32/linux32_machdep.c#20 integrate .. //depot/projects/linuxolator/src/sys/boot/common/pnp.c#2 integrate .. //depot/projects/linuxolator/src/sys/boot/common/pnpdata#2 delete .. //depot/projects/linuxolator/src/sys/boot/forth/loader.conf#4 integrate .. //depot/projects/linuxolator/src/sys/compat/linux/linux_emul.c#20 integrate .. //depot/projects/linuxolator/src/sys/compat/linux/linux_emul.h#8 integrate .. //depot/projects/linuxolator/src/sys/compat/linux/linux_ipc.c#9 integrate .. //depot/projects/linuxolator/src/sys/compat/linux/linux_mib.c#8 integrate .. //depot/projects/linuxolator/src/sys/compat/linux/linux_misc.c#52 integrate .. //depot/projects/linuxolator/src/sys/compat/linux/linux_signal.c#11 integrate .. //depot/projects/linuxolator/src/sys/conf/NOTES#15 integrate .. //depot/projects/linuxolator/src/sys/conf/options#13 integrate .. //depot/projects/linuxolator/src/sys/dev/acpica/acpi.c#4 integrate .. //depot/projects/linuxolator/src/sys/dev/acpica/acpi_cpu.c#2 integrate .. //depot/projects/linuxolator/src/sys/dev/acpica/acpi_package.c#2 integrate .. //depot/projects/linuxolator/src/sys/dev/acpica/acpi_perf.c#2 integrate .. //depot/projects/linuxolator/src/sys/dev/acpica/acpi_throttle.c#2 integrate .. //depot/projects/linuxolator/src/sys/dev/acpica/acpivar.h#2 integrate .. //depot/projects/linuxolator/src/sys/dev/bce/if_bce.c#9 integrate .. //depot/projects/linuxolator/src/sys/dev/bce/if_bcereg.h#6 integrate .. //depot/projects/linuxolator/src/sys/dev/bge/if_bgereg.h#8 integrate .. //depot/projects/linuxolator/src/sys/dev/cy/cy_isa.c#2 integrate .. //depot/projects/linuxolator/src/sys/dev/fb/boot_font.c#2 integrate .. //depot/projects/linuxolator/src/sys/dev/fb/creatorreg.h#1 branch .. //depot/projects/linuxolator/src/sys/dev/fb/gallant12x22.c#1 branch .. //depot/projects/linuxolator/src/sys/dev/fb/gfb.c#2 delete .. //depot/projects/linuxolator/src/sys/dev/fb/gfb.h#2 integrate .. //depot/projects/linuxolator/src/sys/dev/gfb/gfb_pci.c#2 delete .. //depot/projects/linuxolator/src/sys/dev/gfb/gfb_pci.h#2 delete .. //depot/projects/linuxolator/src/sys/dev/ichsmb/ichsmb.c#3 integrate .. //depot/projects/linuxolator/src/sys/dev/ichsmb/ichsmb_pci.c#2 integrate .. //depot/projects/linuxolator/src/sys/dev/idt/idtreg.h#2 integrate .. //depot/projects/linuxolator/src/sys/dev/mii/acphy.c#3 integrate .. //depot/projects/linuxolator/src/sys/dev/mii/acphyreg.h#2 integrate .. //depot/projects/linuxolator/src/sys/dev/mii/amphy.c#3 integrate .. //depot/projects/linuxolator/src/sys/dev/mii/exphy.c#2 integrate .. //depot/projects/linuxolator/src/sys/dev/mii/inphy.c#3 integrate .. //depot/projects/linuxolator/src/sys/dev/mii/lxtphy.c#3 integrate .. //depot/projects/linuxolator/src/sys/dev/mii/mii_physubr.c#3 integrate .. //depot/projects/linuxolator/src/sys/dev/mii/miivar.h#3 integrate .. //depot/projects/linuxolator/src/sys/dev/mii/nsphy.c#3 integrate .. //depot/projects/linuxolator/src/sys/dev/mii/rlphy.c#3 integrate .. //depot/projects/linuxolator/src/sys/dev/mii/ruephy.c#2 integrate .. //depot/projects/linuxolator/src/sys/dev/msk/if_msk.c#3 integrate .. //depot/projects/linuxolator/src/sys/dev/pci/pci.c#13 integrate .. //depot/projects/linuxolator/src/sys/dev/pci/pci_pci.c#6 integrate .. //depot/projects/linuxolator/src/sys/dev/pci/pcib_private.h#4 integrate .. //depot/projects/linuxolator/src/sys/dev/re/if_re.c#5 integrate .. //depot/projects/linuxolator/src/sys/dev/sound/pci/hda/hdac.c#11 integrate .. //depot/projects/linuxolator/src/sys/dev/syscons/scvesactl.c#2 integrate .. //depot/projects/linuxolator/src/sys/dev/usb/if_aue.c#6 integrate .. //depot/projects/linuxolator/src/sys/dev/usb/if_auereg.h#5 integrate .. //depot/projects/linuxolator/src/sys/dev/usb/usb_ethersubr.c#3 integrate .. //depot/projects/linuxolator/src/sys/dev/usb/usb_ethersubr.h#3 integrate .. //depot/projects/linuxolator/src/sys/fs/udf/udf_vfsops.c#4 integrate .. //depot/projects/linuxolator/src/sys/i386/i386/identcpu.c#3 integrate .. //depot/projects/linuxolator/src/sys/i386/i386/machdep.c#10 integrate .. //depot/projects/linuxolator/src/sys/i386/i386/mp_machdep.c#4 integrate .. //depot/projects/linuxolator/src/sys/i386/i386/nexus.c#4 integrate .. //depot/projects/linuxolator/src/sys/i386/include/setjmp.h#2 integrate .. //depot/projects/linuxolator/src/sys/i386/include/specialreg.h#2 integrate .. //depot/projects/linuxolator/src/sys/i386/linux/linux_machdep.c#15 integrate .. //depot/projects/linuxolator/src/sys/ia64/include/exec.h#2 integrate .. //depot/projects/linuxolator/src/sys/ia64/include/floatingpoint.h#2 integrate .. //depot/projects/linuxolator/src/sys/ia64/include/reloc.h#2 integrate .. //depot/projects/linuxolator/src/sys/kern/kern_acct.c#5 integrate .. //depot/projects/linuxolator/src/sys/kern/kern_acl.c#3 integrate .. //depot/projects/linuxolator/src/sys/kern/kern_ntptime.c#3 integrate .. //depot/projects/linuxolator/src/sys/kern/kern_prot.c#5 integrate .. //depot/projects/linuxolator/src/sys/kern/subr_turnstile.c#2 integrate .. //depot/projects/linuxolator/src/sys/kern/tty_pts.c#5 integrate .. //depot/projects/linuxolator/src/sys/kern/uipc_socket.c#8 integrate .. //depot/projects/linuxolator/src/sys/kern/uipc_usrreq.c#4 integrate .. //depot/projects/linuxolator/src/sys/modules/sound/driver/emu10kx/Makefile#3 integrate .. //depot/projects/linuxolator/src/sys/net80211/ieee80211_freebsd.c#2 integrate .. //depot/projects/linuxolator/src/sys/net80211/ieee80211_freebsd.h#2 integrate .. //depot/projects/linuxolator/src/sys/net80211/ieee80211_input.c#4 integrate .. //depot/projects/linuxolator/src/sys/net80211/ieee80211_node.c#3 integrate .. //depot/projects/linuxolator/src/sys/net80211/ieee80211_proto.c#3 integrate .. //depot/projects/linuxolator/src/sys/net80211/ieee80211_proto.h#2 integrate .. //depot/projects/linuxolator/src/sys/netatalk/COPYRIGHT#2 integrate .. //depot/projects/linuxolator/src/sys/netatalk/aarp.c#3 integrate .. //depot/projects/linuxolator/src/sys/netatalk/aarp.h#2 integrate .. //depot/projects/linuxolator/src/sys/netatalk/at.h#2 integrate .. //depot/projects/linuxolator/src/sys/netatalk/at_extern.h#2 integrate .. //depot/projects/linuxolator/src/sys/netatalk/at_proto.c#2 integrate .. //depot/projects/linuxolator/src/sys/netatalk/at_rmx.c#2 integrate .. //depot/projects/linuxolator/src/sys/netatalk/at_var.h#2 integrate .. //depot/projects/linuxolator/src/sys/netatalk/ddp.h#2 integrate .. //depot/projects/linuxolator/src/sys/netatalk/ddp_input.c#3 integrate .. //depot/projects/linuxolator/src/sys/netatalk/ddp_output.c#3 integrate .. //depot/projects/linuxolator/src/sys/netatalk/ddp_pcb.c#3 integrate .. //depot/projects/linuxolator/src/sys/netatalk/ddp_pcb.h#2 integrate .. //depot/projects/linuxolator/src/sys/netatalk/ddp_usrreq.c#2 integrate .. //depot/projects/linuxolator/src/sys/netatalk/ddp_var.h#2 integrate .. //depot/projects/linuxolator/src/sys/netgraph/ng_deflate.c#2 integrate .. //depot/projects/linuxolator/src/sys/netinet/ip.h#2 integrate .. //depot/projects/linuxolator/src/sys/netinet/ip_fw2.c#11 integrate .. //depot/projects/linuxolator/src/sys/netinet6/esp_aesctr.c#2 integrate .. //depot/projects/linuxolator/src/sys/netinet6/in6_cksum.c#2 integrate .. //depot/projects/linuxolator/src/sys/netipx/ipx.c#2 integrate .. //depot/projects/linuxolator/src/sys/netipx/ipx.h#2 integrate .. //depot/projects/linuxolator/src/sys/netipx/ipx_cksum.c#2 integrate .. //depot/projects/linuxolator/src/sys/netipx/ipx_if.h#2 integrate .. //depot/projects/linuxolator/src/sys/netipx/ipx_input.c#2 integrate .. //depot/projects/linuxolator/src/sys/netipx/ipx_ip.c#2 integrate .. //depot/projects/linuxolator/src/sys/netipx/ipx_ip.h#2 integrate .. //depot/projects/linuxolator/src/sys/netipx/ipx_outputfl.c#2 integrate .. //depot/projects/linuxolator/src/sys/netipx/ipx_pcb.c#3 integrate .. //depot/projects/linuxolator/src/sys/netipx/ipx_pcb.h#2 integrate .. //depot/projects/linuxolator/src/sys/netipx/ipx_proto.c#2 integrate .. //depot/projects/linuxolator/src/sys/netipx/ipx_usrreq.c#3 integrate .. //depot/projects/linuxolator/src/sys/netipx/ipx_var.h#2 integrate .. //depot/projects/linuxolator/src/sys/netipx/spx.h#2 integrate .. //depot/projects/linuxolator/src/sys/netipx/spx_debug.c#2 integrate .. //depot/projects/linuxolator/src/sys/netipx/spx_debug.h#2 integrate .. //depot/projects/linuxolator/src/sys/netipx/spx_timer.h#2 integrate .. //depot/projects/linuxolator/src/sys/netipx/spx_usrreq.c#2 integrate .. //depot/projects/linuxolator/src/sys/netipx/spx_var.h#2 integrate .. //depot/projects/linuxolator/src/sys/netnatm/natm.c#2 integrate .. //depot/projects/linuxolator/src/sys/netnatm/natm.h#2 integrate .. //depot/projects/linuxolator/src/sys/netnatm/natm_pcb.c#2 integrate .. //depot/projects/linuxolator/src/sys/netnatm/natm_proto.c#2 integrate .. //depot/projects/linuxolator/src/sys/pci/alpm.c#3 integrate .. //depot/projects/linuxolator/src/sys/pci/amdpm.c#3 integrate .. //depot/projects/linuxolator/src/sys/pci/amdsmb.c#3 integrate .. //depot/projects/linuxolator/src/sys/pci/if_pcn.c#4 integrate .. //depot/projects/linuxolator/src/sys/pci/intpm.c#3 integrate .. //depot/projects/linuxolator/src/sys/pci/intpmreg.h#3 integrate .. //depot/projects/linuxolator/src/sys/pci/nfsmb.c#4 integrate .. //depot/projects/linuxolator/src/sys/pci/viapm.c#3 integrate .. //depot/projects/linuxolator/src/sys/powerpc/conf/NOTES#3 integrate .. //depot/projects/linuxolator/src/sys/powerpc/include/reloc.h#2 integrate .. //depot/projects/linuxolator/src/sys/sparc64/include/ofw_nexus.h#1 branch .. //depot/projects/linuxolator/src/sys/sparc64/include/reloc.h#2 integrate .. //depot/projects/linuxolator/src/sys/sparc64/include/setjmp.h#2 integrate .. //depot/projects/linuxolator/src/sys/sparc64/pci/ofw_pcibus.c#3 integrate .. //depot/projects/linuxolator/src/sys/sparc64/pci/psycho.c#2 integrate .. //depot/projects/linuxolator/src/sys/sparc64/pci/psychoreg.h#2 integrate .. //depot/projects/linuxolator/src/sys/sun4v/include/reloc.h#2 integrate .. //depot/projects/linuxolator/src/sys/sun4v/include/setjmp.h#2 integrate .. //depot/projects/linuxolator/src/sys/sys/copyright.h#4 integrate .. //depot/projects/linuxolator/src/sys/sys/priority.h#2 integrate .. //depot/projects/linuxolator/src/sys/sys/rtprio.h#5 integrate .. //depot/projects/linuxolator/src/sys/ufs/ufs/ufs_acl.c#2 integrate .. //depot/projects/linuxolator/src/sys/vm/uma_core.c#4 integrate Differences ... ==== //depot/projects/linuxolator/src/sys/amd64/amd64/identcpu.c#2 (text+ko) ==== @@ -39,7 +39,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/identcpu.c,v 1.148 2006/08/01 01:23:39 obrien Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/identcpu.c,v 1.149 2007/01/09 19:23:21 jkim Exp $"); #include "opt_cpu.h" @@ -228,8 +228,8 @@ "\007" "\010EST" /* Enhanced SpeedStep */ "\011TM2" /* Thermal Monitor 2 */ - "\012" - "\013CNTX-ID" /* L1 context ID available */ + "\012SSSE3" /* SSSE3 */ + "\013CNXT-ID" /* L1 context ID available */ "\014" "\015" "\016CX16" /* CMPXCHG16B Instruction */ ==== //depot/projects/linuxolator/src/sys/amd64/amd64/mp_machdep.c#4 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/mp_machdep.c,v 1.278 2006/10/10 23:23:11 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/mp_machdep.c,v 1.279 2007/01/11 00:17:02 jeff Exp $"); #include "opt_cpu.h" #include "opt_kstack_pages.h" @@ -948,11 +948,10 @@ ipi_bitmap = atomic_readandclear_int(&cpu_ipi_pending[cpu]); -#ifdef IPI_PREEMPTION - if (ipi_bitmap & IPI_PREEMPT) { + if (ipi_bitmap & (1 << IPI_PREEMPT)) { mtx_lock_spin(&sched_lock); /* Don't preempt the idle thread */ - if (curthread->td_priority < PRI_MIN_IDLE) { + if (curthread != PCPU_GET(idlethread)) { struct thread *running_thread = curthread; if (running_thread->td_critnest > 1) running_thread->td_owepreempt = 1; @@ -961,7 +960,6 @@ } mtx_unlock_spin(&sched_lock); } -#endif /* Nothing to do for AST */ } ==== //depot/projects/linuxolator/src/sys/amd64/amd64/nexus.c#4 (text+ko) ==== @@ -28,7 +28,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/nexus.c,v 1.70 2006/11/13 22:23:32 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/nexus.c,v 1.71 2007/01/11 19:40:19 jhb Exp $"); /* * This code implements a `root nexus' for Intel Architecture @@ -371,24 +371,9 @@ * If this is a memory resource, map it into the kernel. */ if (rman_get_bustag(r) == AMD64_BUS_SPACE_MEM) { - caddr_t vaddr = 0; + void *vaddr; - if (rman_get_end(r) < 1024 * 1024) { - /* - * The first 1Mb is mapped at KERNBASE. - */ - vaddr = (caddr_t)(uintptr_t)(KERNBASE + rman_get_start(r)); - } else { - u_int64_t paddr; - u_int64_t psize; - u_int32_t poffs; - - paddr = rman_get_start(r); - psize = rman_get_size(r); - - poffs = paddr - trunc_page(paddr); - vaddr = (caddr_t) pmap_mapdev(paddr-poffs, psize+poffs) + poffs; - } + vaddr = pmap_mapdev(rman_get_start(r), rman_get_size(r)); rman_set_virtual(r, vaddr); rman_set_bushandle(r, (bus_space_handle_t) vaddr); } @@ -402,12 +387,9 @@ /* * If this is a memory resource, unmap it. */ - if ((rman_get_bustag(r) == AMD64_BUS_SPACE_MEM) && - (rman_get_end(r) >= 1024 * 1024)) { - u_int32_t psize; - - psize = rman_get_size(r); - pmap_unmapdev((vm_offset_t)rman_get_virtual(r), psize); + if (rman_get_bustag(r) == AMD64_BUS_SPACE_MEM) { + pmap_unmapdev((vm_offset_t)rman_get_virtual(r), + rman_get_size(r)); } return (rman_deactivate_resource(r)); ==== //depot/projects/linuxolator/src/sys/amd64/include/setjmp.h#2 (text+ko) ==== @@ -10,10 +10,7 @@ * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by John Birrell. - * 4. Neither the name of the author nor the names of any co-contributors + * 3. Neither the name of the author nor the names of any co-contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * @@ -29,7 +26,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/amd64/include/setjmp.h,v 1.9 2003/06/02 21:49:35 peter Exp $ + * $FreeBSD: src/sys/amd64/include/setjmp.h,v 1.10 2007/01/12 07:24:06 imp Exp $ */ #ifndef _MACHINE_SETJMP_H_ ==== //depot/projects/linuxolator/src/sys/amd64/include/specialreg.h#2 (text+ko) ==== @@ -27,7 +27,7 @@ * SUCH DAMAGE. * * from: @(#)specialreg.h 7.1 (Berkeley) 5/9/91 - * $FreeBSD: src/sys/amd64/include/specialreg.h,v 1.35 2006/07/13 16:09:40 jkim Exp $ + * $FreeBSD: src/sys/amd64/include/specialreg.h,v 1.36 2007/01/09 19:23:21 jkim Exp $ */ #ifndef _MACHINE_SPECIALREG_H_ @@ -118,7 +118,8 @@ #define CPUID2_VMX 0x00000020 #define CPUID2_EST 0x00000080 #define CPUID2_TM2 0x00000100 -#define CPUID2_CNTXID 0x00000400 +#define CPUID2_SSSE3 0x00000200 +#define CPUID2_CNXTID 0x00000400 #define CPUID2_CX16 0x00002000 #define CPUID2_XTPR 0x00004000 ==== //depot/projects/linuxolator/src/sys/amd64/linux32/linux32_machdep.c#20 (text+ko) ==== @@ -29,7 +29,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/linux32/linux32_machdep.c,v 1.24 2007/01/06 15:58:34 netchild Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/linux32/linux32_machdep.c,v 1.26 2007/01/14 16:20:37 netchild Exp $"); #include #include ==== //depot/projects/linuxolator/src/sys/boot/common/pnp.c#2 (text+ko) ==== @@ -4,7 +4,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/boot/common/pnp.c,v 1.16 2003/08/25 23:30:41 obrien Exp $"); +__FBSDID("$FreeBSD: src/sys/boot/common/pnp.c,v 1.17 2007/01/07 22:25:45 marius Exp $"); /* * "Plug and Play" functionality. @@ -82,52 +82,6 @@ return(CMD_OK); } -#if 0 -/* - * Try to load outstanding modules (eg. after disk change) - */ -COMMAND_SET(pnpload, "pnpload", "load modules for PnP devices", pnp_load); - -static int -pnp_load(int argc, char *argv[]) -{ - struct pnpinfo *pi; - char *modfname; - - /* find anything? */ - if (STAILQ_FIRST(&pnp_devices) != NULL) { - - /* check for kernel, assign modules handled by static drivers there */ - if (pnp_scankernel()) { - command_errmsg = "cannot load drivers until kernel loaded"; - return(CMD_ERROR); - } - if (fname == NULL) { - /* default paths */ - pnp_readconf("/boot/pnpdata.local"); - pnp_readconf("/boot/pnpdata"); - } else { - if (pnp_readconf(fname)) { - sprintf(command_errbuf, "can't read PnP information from '%s'", fname); - return(CMD_ERROR); - } - } - - /* try to load any modules that have been nominated */ - STAILQ_FOREACH(pi, &pnp_devices, pi_link) { - /* Already loaded? */ - if ((pi->pi_module != NULL) && (file_findfile(pi->pi_module, NULL) == NULL)) { - modfname = malloc(strlen(pi->pi_module) + 4); - sprintf(modfname, "%s.ko", pi->pi_module); /* XXX implicit knowledge of KLD module filenames */ - if (mod_load(pi->pi_module, pi->pi_argc, pi->pi_argv)) - printf("Could not load module '%s' for device '%s'\n", modfname, STAILQ_FIRST(&pi->pi_ident)->id_ident); - free(modfname); - } - } - } - return(CMD_OK); -} -#endif /* * Throw away anything we think we know about PnP devices. */ @@ -142,159 +96,7 @@ pnp_freeinfo(pi); } } -#if 0 -/* - * The PnP configuration database consists of a flat text file with - * entries one per line. Valid lines are: - * - * # - * - * This line is a comment, and ignored. - * - * [] - * - * Entries following this line are for devices connected to the - * bus , At least one such entry must be encountered - * before identifiers are recognised. - * - * ident= rev= module= args= - * - * This line describes an identifier:module mapping. The 'ident' - * and 'module' fields are required; the 'rev' field is currently - * ignored (but should be used), and the 'args' field must come - * last. - * - * Comments may be appended to lines; any character including or following - * '#' on a line is ignored. - */ -static int -pnp_readconf(char *path) -{ - struct pnpinfo *pi; - struct pnpident *id; - int fd, line; - char lbuf[128], *currbus, *ident, *revision, *module, *args; - char *cp, *ep, *tp, c; - - /* try to open the file */ - if ((fd = open(path, O_RDONLY)) >= 0) { - line = 0; - currbus = NULL; - - while (fgetstr(lbuf, sizeof(lbuf), fd) > 0) { - line++; - /* Find the first non-space character on the line */ - for (cp = lbuf; (*cp != 0) && !isspace(*cp); cp++) - ; - - /* keep/discard? */ - if ((*cp == 0) || (*cp == '#')) - continue; - - /* cut trailing comment? */ - if ((ep = strchr(cp, '#')) != NULL) - *ep = 0; - - /* bus declaration? */ - if (*cp == '[') { - if (((ep = strchr(cp, ']')) == NULL) || ((ep - cp) < 2)) { - printf("%s line %d: bad bus specification\n", path, line); - } else { - if (currbus != NULL) - free(currbus); - *ep = 0; - currbus = strdup(cp + 1); - } - continue; - } - - /* XXX should we complain? */ - if (currbus == NULL) - continue; - - /* mapping */ - for (ident = module = args = revision = NULL; *cp != 0;) { - - /* discard leading whitespace */ - if (isspace(*cp)) { - cp++; - continue; - } - - /* scan for terminator, separator */ - for (ep = cp; (*ep != 0) && (*ep != '=') && !isspace(*ep); ep++) - ; - - if (*ep == '=') { - *ep = 0; - for (tp = ep + 1; (*tp != 0) && !isspace(*tp); tp++) - ; - c = *tp; - *tp = 0; - if ((ident == NULL) && !strcmp(cp, "ident")) { - ident = ep + 1; - } else if ((revision == NULL) && !strcmp(cp, "revision")) { - revision = ep + 1; - } else if ((args == NULL) && !strcmp(cp, "args")) { - *tp = c; - while (*tp != 0) /* skip to end of string */ - tp++; - args = ep + 1; - } else { - /* XXX complain? */ - } - cp = tp; - continue; - } - - /* it's garbage or a keyword - ignore it for now */ - cp = ep; - } - - /* we must have at least ident and module set to be interesting */ - if ((ident == NULL) || (module == NULL)) - continue; - - /* - * Loop looking for module/bus that might match this, but aren't already - * assigned. - * XXX no revision parse/test here yet. - */ - STAILQ_FOREACH(pi, &pnp_devices, pi_link) { - - /* no driver assigned, bus matches OK */ - if ((pi->pi_module == NULL) && - !strcmp(pi->pi_handler->pp_name, currbus)) { - - /* scan idents, take first match */ - STAILQ_FOREACH(id, &pi->pi_ident, id_link) - if (!strcmp(id->id_ident, ident)) - break; - - /* find a match? */ - if (id != NULL) { - if (args != NULL) - if (parse(&pi->pi_argc, &pi->pi_argv, args)) { - printf("%s line %d: bad arguments\n", path, line); - continue; - } - pi->pi_module = strdup(module); - printf("use module '%s' for %s:%s\n", module, pi->pi_handler->pp_name, id->id_ident); - } - } - } - } - close(fd); - } - return(CMD_OK); -} -static int -pnp_scankernel(void) -{ - return(CMD_OK); -} -#endif /* * Add a unique identifier to (pi) */ ==== //depot/projects/linuxolator/src/sys/boot/forth/loader.conf#4 (text+ko) ==== @@ -6,7 +6,7 @@ # # All arguments must be in double quotes. # -# $FreeBSD: src/sys/boot/forth/loader.conf,v 1.114 2006/12/13 02:48:22 yongari Exp $ +# $FreeBSD: src/sys/boot/forth/loader.conf,v 1.117 2007/01/14 13:55:43 maxim Exp $ ############################################################## ### Basic configuration options ############################ @@ -147,13 +147,13 @@ # ggatec(8), ggated(8), ggatel(8)) geom_label_load="NO" # File system labels (see glabel(8)) geom_md_load="NO" # Memory disk driver (vnode/swap/malloc) (see + # md(4), mdconfig(8)) geom_mirror_load="NO" # RAID1 disk driver (see gmirror(8)) geom_nop_load="NO" # Transparent disk driver (see gnop(8)) geom_raid3_load="NO" # RAID3 disk driver (see graid3(8)) geom_shsec_load="NO" # Shared secret disk driver (see gshsec(8)) geom_stripe_load="NO" # RAID0 disk driver (see gstripe(8)) geom_uzip_load="NO" # Compressed disk images driver (see mkuzip(8)) - # md(4), mdconfig(8)) geom_vinum_load="NO" # Concatenated/mirror/raid driver (see vinum(4)) @@ -183,7 +183,8 @@ ############################################################## if_disc_load="NO" # Discard device -if_ef_load="NO" # pseudo-device providing support for multiple ethernet frame types +if_ef_load="NO" # pseudo-device providing support for multiple + # ethernet frame types if_faith_load="NO" # IPv6-to-IPv4 TCP relay capturing interface if_gif_load="NO" # generic tunnel interface if_gre_load="NO" # encapsulating network device @@ -217,21 +218,25 @@ if_cue_load="NO" # CATC USB-EL1210A USB Ethernet if_dc_load="NO" # DEC/Intel 21143 and various workalikes if_de_load="NO" # DEC DC21x4x Ethernet -if_ed_load="NO" # National Semiconductor DS8390/WD83C690 Ethernet +if_ed_load="NO" # National Semiconductor DS8390/WD83C690 + # Ethernet if_em_load="NO" # Intel(R) PRO/1000 Gigabit Ethernet if_en_load="NO" # Midway-based ATM interfaces if_ep_load="NO" # 3Com Etherlink III (3c5x9) if_ex_load="NO" # Intel EtherExpress Pro/10 Ethernet -if_fe_load="NO" # Fujitsu MB86960A/MB86965A based Ethernet adapters +if_fe_load="NO" # Fujitsu MB86960A/MB86965A based Ethernet + # adapters if_fxp_load="NO" # Intel EtherExpress PRO/100B (82557, 82558) if_gem_load="NO" # Sun GEM/Sun ERI/Apple GMAC if_hme_load="NO" # Sun Microelectronics STP2002-STQ Ethernet if_ie_load="NO" # Intel 82586 if_ipw_load="NO" # Intel PRO/Wireless 2100 wireless -if_iwi_load="NO" # Intel PRO/Wireless 2200BG/2225BG/2915ABG wireless +if_iwi_load="NO" # Intel PRO/Wireless 2200BG/2225BG/2915ABG + # wireless if_ixgb_load="NO" # Intel PRO/10Gb Ethernet if_le_load="NO" # AMD Am7900 LANCE and Am79C9xx PCnet -if_lge_load="NO" # Level 1 LXT1001 NetCellerator PCI Gigabit Ethernet +if_lge_load="NO" # Level 1 LXT1001 NetCellerator PCI Gigabit + # Ethernet if_msk_load="NO" # Marvell/SysKonnect Yukon II Gigabit Ethernet if_mxge_load="NO" # Myricom Myri10GE 10Gb Ethernet if_my_load="NO" # Myson PCI Fast Ethernet @@ -289,18 +294,21 @@ ng_ksocket_load="NO" # kernel socket netgraph node type ng_l2tp_load="NO" # L2TP protocol netgraph node type ng_lmi_load="NO" # frame relay LMI protocol netgraph node type -ng_mppc_load="NO" # Microsoft MPPC/MPPE compression and encryption netgraph node type -ng_netflow_load="NO" # Cisco's NetFlow netgraph note type +ng_mppc_load="NO" # Microsoft MPPC/MPPE compression and + # encryption netgraph node type +ng_netflow_load="NO" # Cisco's NetFlow netgraph node type ng_one2many_load="NO" # packet multiplexing netgraph node type ng_ppp_load="NO" # PPP protocol netgraph node type ng_pppoe_load="NO" # RFC 2516 PPPOE protocol netgraph node type ng_pptpgre_load="NO" # PPTP GRE protocol netgraph node type ng_rfc1490_load="NO" # RFC 1490 netgraph node type ng_socket_load="NO" # Netgraph socket node type -ng_split_load="NO" # netgraph node to separate incoming and outgoing flows +ng_split_load="NO" # netgraph node to separate incoming and + # outgoing flows ng_sppp_load="NO" # sppp netgraph node type ng_tee_load="NO" # Netgraph ``tee'' node type -ng_tty_load="NO" # Netgraph node type that is also a line discipline +ng_tty_load="NO" # Netgraph node type that is also a line + # discipline ng_vjc_load="NO" # Van Jacobsen compression netgraph node type ng_vlan_load="NO" # IEEE 802.1Q VLAN tagging netgraph node type ==== //depot/projects/linuxolator/src/sys/compat/linux/linux_emul.c#20 (text+ko) ==== @@ -27,7 +27,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/compat/linux/linux_emul.c,v 1.10 2006/12/31 12:42:55 netchild Exp $"); +__FBSDID("$FreeBSD: src/sys/compat/linux/linux_emul.c,v 1.12 2007/01/07 19:09:20 netchild Exp $"); #include "opt_compat.h" ==== //depot/projects/linuxolator/src/sys/compat/linux/linux_emul.h#8 (text+ko) ==== @@ -25,7 +25,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $FreeBSD: src/sys/compat/linux/linux_emul.h,v 1.5 2006/12/31 12:42:55 netchild Exp $ + * $FreeBSD: src/sys/compat/linux/linux_emul.h,v 1.6 2007/01/07 19:00:38 netchild Exp $ */ #ifndef _LINUX_EMUL_H_ ==== //depot/projects/linuxolator/src/sys/compat/linux/linux_ipc.c#9 (text+ko) ==== @@ -27,7 +27,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/compat/linux/linux_ipc.c,v 1.53 2006/12/20 20:08:45 jkim Exp $"); +__FBSDID("$FreeBSD: src/sys/compat/linux/linux_ipc.c,v 1.54 2007/01/14 16:34:43 netchild Exp $"); #include #include ==== //depot/projects/linuxolator/src/sys/compat/linux/linux_mib.c#8 (text+ko) ==== @@ -27,7 +27,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/compat/linux/linux_mib.c,v 1.27 2006/12/31 12:39:10 netchild Exp $"); +__FBSDID("$FreeBSD: src/sys/compat/linux/linux_mib.c,v 1.29 2007/01/14 16:07:01 netchild Exp $"); #include #include ==== //depot/projects/linuxolator/src/sys/compat/linux/linux_misc.c#52 (text+ko) ==== @@ -28,7 +28,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/compat/linux/linux_misc.c,v 1.202 2006/12/31 13:16:00 netchild Exp $"); +__FBSDID("$FreeBSD: src/sys/compat/linux/linux_misc.c,v 1.205 2007/01/07 19:30:19 netchild Exp $"); #include "opt_compat.h" #include "opt_mac.h" ==== //depot/projects/linuxolator/src/sys/compat/linux/linux_signal.c#11 (text+ko) ==== @@ -27,7 +27,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/compat/linux/linux_signal.c,v 1.63 2007/01/01 14:47:45 delphij Exp $"); +__FBSDID("$FreeBSD: src/sys/compat/linux/linux_signal.c,v 1.65 2007/01/07 19:14:06 netchild Exp $"); #include #include ==== //depot/projects/linuxolator/src/sys/conf/NOTES#15 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/NOTES,v 1.1405 2007/01/03 11:12:54 piso Exp $ +# $FreeBSD: src/sys/conf/NOTES,v 1.1406 2007/01/10 18:45:17 marius Exp $ # # NOTES -- Lines that can be cut/pasted into kernel and hints configs. # @@ -1398,6 +1398,7 @@ options SC_NO_CUTPASTE options SC_NO_FONT_LOADING options SC_NO_HISTORY +options SC_NO_MODE_CHANGE options SC_NO_SYSMOUSE options SC_NO_SUSPEND_VTYSWITCH ==== //depot/projects/linuxolator/src/sys/conf/options#13 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/options,v 1.571 2007/01/03 11:12:54 piso Exp $ +# $FreeBSD: src/sys/conf/options,v 1.572 2007/01/10 18:45:17 marius Exp $ # # On the handling of kernel options # @@ -707,6 +707,7 @@ SC_NO_CUTPASTE opt_syscons.h SC_NO_FONT_LOADING opt_syscons.h SC_NO_HISTORY opt_syscons.h +SC_NO_MODE_CHANGE opt_syscons.h SC_NO_SUSPEND_VTYSWITCH opt_syscons.h SC_NO_SYSMOUSE opt_syscons.h SC_NORM_ATTR opt_syscons.h ==== //depot/projects/linuxolator/src/sys/dev/acpica/acpi.c#4 (text+ko) ==== @@ -28,7 +28,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi.c,v 1.229 2006/09/21 18:56:03 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi.c,v 1.230 2007/01/07 21:53:42 njl Exp $"); #include "opt_acpi.h" #include @@ -1110,7 +1110,7 @@ /* Allocate an IO port or memory resource, given its GAS. */ int acpi_bus_alloc_gas(device_t dev, int *type, int *rid, ACPI_GENERIC_ADDRESS *gas, - struct resource **res) + struct resource **res, u_int flags) { int error, res_type; @@ -1143,7 +1143,7 @@ bus_set_resource(dev, res_type, *rid, gas->Address, gas->RegisterBitWidth / 8); - *res = bus_alloc_resource_any(dev, res_type, rid, RF_ACTIVE); + *res = bus_alloc_resource_any(dev, res_type, rid, RF_ACTIVE | flags); if (*res != NULL) { *type = res_type; error = 0; ==== //depot/projects/linuxolator/src/sys/dev/acpica/acpi_cpu.c#2 (text+ko) ==== @@ -26,7 +26,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi_cpu.c,v 1.59 2005/10/25 21:15:47 njl Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi_cpu.c,v 1.61 2007/01/08 00:45:46 njl Exp $"); #include "opt_acpi.h" #include @@ -51,9 +51,6 @@ /* * Support for ACPI Processor devices, including C[1-3] sleep states. - * - * TODO: implement scans of all CPUs to be sure all Cx states are - * equivalent. */ /* Hooks for the ACPI CA debugging infrastructure */ @@ -80,10 +77,20 @@ int cpu_cx_count; /* Number of valid Cx states. */ int cpu_prev_sleep;/* Last idle sleep duration. */ int cpu_features; /* Child driver supported features. */ + /* Runtime state. */ + int cpu_non_c3; /* Index of lowest non-C3 state. */ + int cpu_short_slp; /* Count of < 1us sleeps. */ + u_int cpu_cx_stats[MAX_CX_STATES];/* Cx usage history. */ + /* Values for sysctl. */ + struct sysctl_ctx_list cpu_sysctl_ctx; + struct sysctl_oid *cpu_sysctl_tree; + int cpu_cx_lowest; + char cpu_cx_supported[64]; + int cpu_rid; }; struct acpi_cpu_device { - struct resource_list ad_rl; + struct resource_list ad_rl; }; #define CPU_GET_REG(reg, width) \ @@ -110,20 +117,17 @@ /* Platform hardware resource information. */ static uint32_t cpu_smi_cmd; /* Value to write to SMI_CMD. */ static uint8_t cpu_cst_cnt; /* Indicate we are _CST aware. */ -static int cpu_rid; /* Driver-wide resource id. */ static int cpu_quirks; /* Indicate any hardware bugs. */ /* Runtime state. */ -static int cpu_cx_count; /* Number of valid states */ -static int cpu_non_c3; /* Index of lowest non-C3 state. */ -static int cpu_short_slp; /* Count of < 1us sleeps. */ -static u_int cpu_cx_stats[MAX_CX_STATES];/* Cx usage history. */ +static int cpu_disable_idle; /* Disable entry to idle function */ +static int cpu_cx_count; /* Number of valid Cx states */ /* Values for sysctl. */ -static struct sysctl_ctx_list acpi_cpu_sysctl_ctx; -static struct sysctl_oid *acpi_cpu_sysctl_tree; +static struct sysctl_ctx_list cpu_sysctl_ctx; +static struct sysctl_oid *cpu_sysctl_tree; +static int cpu_cx_generic; static int cpu_cx_lowest; -static char cpu_cx_supported[64]; static device_t *cpu_devices; static int cpu_ndevices; @@ -140,15 +144,17 @@ static int acpi_cpu_read_ivar(device_t dev, device_t child, int index, uintptr_t *result); static int acpi_cpu_shutdown(device_t dev); -static int acpi_cpu_cx_probe(struct acpi_cpu_softc *sc); +static void acpi_cpu_cx_probe(struct acpi_cpu_softc *sc); +static void acpi_cpu_generic_cx_probe(struct acpi_cpu_softc *sc); static int acpi_cpu_cx_cst(struct acpi_cpu_softc *sc); static void acpi_cpu_startup(void *arg); -static void acpi_cpu_startup_cx(void); +static void acpi_cpu_startup_cx(struct acpi_cpu_softc *sc); static void acpi_cpu_idle(void); static void acpi_cpu_notify(ACPI_HANDLE h, UINT32 notify, void *context); -static int acpi_cpu_quirks(struct acpi_cpu_softc *sc); +static int acpi_cpu_quirks(void); static int acpi_cpu_usage_sysctl(SYSCTL_HANDLER_ARGS); static int acpi_cpu_cx_lowest_sysctl(SYSCTL_HANDLER_ARGS); +static int acpi_cpu_global_cx_lowest_sysctl(SYSCTL_HANDLER_ARGS); static device_method_t acpi_cpu_methods[] = { /* Device interface */ @@ -288,11 +294,24 @@ ACPI_DEBUG_PRINT((ACPI_DB_INFO, "acpi_cpu%d: P_BLK at %#x/%d\n", device_get_unit(dev), sc->cpu_p_blk, sc->cpu_p_blk_len)); - acpi_sc = acpi_device_get_parent_softc(dev); - sysctl_ctx_init(&acpi_cpu_sysctl_ctx); - acpi_cpu_sysctl_tree = SYSCTL_ADD_NODE(&acpi_cpu_sysctl_ctx, - SYSCTL_CHILDREN(acpi_sc->acpi_sysctl_tree), OID_AUTO, "cpu", - CTLFLAG_RD, 0, ""); + /* + * If this is the first cpu we attach, create and initialize the generic + * resources that will be used by all acpi cpu devices. + */ + if (device_get_unit(dev) == 0) { + /* Assume we won't be using generic Cx mode by default */ + cpu_cx_generic = FALSE; + + /* Install hw.acpi.cpu sysctl tree */ + acpi_sc = acpi_device_get_parent_softc(dev); + sysctl_ctx_init(&cpu_sysctl_ctx); + cpu_sysctl_tree = SYSCTL_ADD_NODE(&cpu_sysctl_ctx, + SYSCTL_CHILDREN(acpi_sc->acpi_sysctl_tree), OID_AUTO, "cpu", + CTLFLAG_RD, 0, "node for CPU children"); + + /* Queue post cpu-probing task handler */ + AcpiOsQueueForExecution(OSD_PRIORITY_LO, acpi_cpu_startup, NULL); + } /* * Before calling any CPU methods, collect child driver feature hints @@ -327,17 +346,8 @@ AcpiEvaluateObject(sc->cpu_handle, "_PDC", &arglist, NULL); } - /* - * Probe for Cx state support. If it isn't present, free up unused - * resources. - */ - if (acpi_cpu_cx_probe(sc) == 0) { - status = AcpiInstallNotifyHandler(sc->cpu_handle, ACPI_DEVICE_NOTIFY, - acpi_cpu_notify, sc); - if (device_get_unit(dev) == 0) - AcpiOsQueueForExecution(OSD_PRIORITY_LO, acpi_cpu_startup, NULL); - } else - sysctl_ctx_free(&acpi_cpu_sysctl_ctx); + /* Probe for Cx state support. */ + acpi_cpu_cx_probe(sc); /* Finally, call identify and probe/attach for child devices. */ bus_generic_probe(dev); @@ -371,7 +381,7 @@ * return the pc_cpuid to reference this processor. */ if (pcpu_data->pc_acpi_id == 0xffffffff) - pcpu_data->pc_acpi_id = *acpi_id; + pcpu_data->pc_acpi_id = *acpi_id; else if (pcpu_data->pc_acpi_id != *acpi_id) *acpi_id = pcpu_data->pc_acpi_id; *cpu_id = pcpu_data->pc_cpuid; @@ -396,17 +406,17 @@ static device_t acpi_cpu_add_child(device_t dev, int order, const char *name, int unit) { - struct acpi_cpu_device *ad; - device_t child; + struct acpi_cpu_device *ad; + device_t child; if ((ad = malloc(sizeof(*ad), M_TEMP, M_NOWAIT | M_ZERO)) == NULL) - return (NULL); + return (NULL); resource_list_init(&ad->ad_rl); child = device_add_child_ordered(dev, order, name, unit); if (child != NULL) - device_set_ivars(child, ad); + device_set_ivars(child, ad); else free(ad, M_TEMP); return (child); @@ -440,7 +450,7 @@ bus_generic_shutdown(dev); /* Disable any entry to the idle function. */ - cpu_cx_count = 0; + cpu_disable_idle = TRUE; /* Signal and wait for all processors to exit acpi_cpu_idle(). */ smp_rendezvous(NULL, NULL, NULL, NULL); @@ -448,105 +458,99 @@ return_VALUE (0); } -static int +static void acpi_cpu_cx_probe(struct acpi_cpu_softc *sc) { - ACPI_GENERIC_ADDRESS gas; - struct acpi_cx *cx_ptr; - int error; + ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__); - ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__); + /* Use initial sleep value of 1 sec. to start with lowest idle state. */ + sc->cpu_prev_sleep = 1000000; + sc->cpu_cx_lowest = 0; /* - * Bus mastering arbitration control is needed to keep caches coherent - * while sleeping in C3. If it's not present but a working flush cache - * instruction is present, flush the caches before entering C3 instead. - * Otherwise, just disable C3 completely. + * Check for the ACPI 2.0 _CST sleep states object. If we can't find + * any, we'll revert to generic FADT/P_BLK Cx control method which will + * be handled by acpi_cpu_startup. We need to defer to after having + * probed all the cpus in the system before probing for generic Cx + * states as we may already have found cpus with valid _CST packages */ - if (AcpiGbl_FADT->V1_Pm2CntBlk == 0 || AcpiGbl_FADT->Pm2CntLen == 0) { - if (AcpiGbl_FADT->WbInvd && AcpiGbl_FADT->WbInvdFlush == 0) { - cpu_quirks |= CPU_QUIRK_NO_BM_CTRL; - ACPI_DEBUG_PRINT((ACPI_DB_INFO, - "acpi_cpu%d: no BM control, using flush cache method\n", - device_get_unit(sc->cpu_dev))); - } else { >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Sun Jan 14 18:55:42 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 6C67216A4A7; Sun, 14 Jan 2007 18:55:42 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 2995916A492 for ; Sun, 14 Jan 2007 18:55:42 +0000 (UTC) (envelope-from zec@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 1A7BE13C43E for ; Sun, 14 Jan 2007 18:55:42 +0000 (UTC) (envelope-from zec@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0EItf3a055793 for ; Sun, 14 Jan 2007 18:55:41 GMT (envelope-from zec@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0EIteT0055776 for perforce@freebsd.org; Sun, 14 Jan 2007 18:55:40 GMT (envelope-from zec@FreeBSD.org) Date: Sun, 14 Jan 2007 18:55:40 GMT Message-Id: <200701141855.l0EIteT0055776@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to zec@FreeBSD.org using -f From: Marko Zec To: Perforce Change Reviews Cc: Subject: PERFORCE change 112910 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 14 Jan 2007 18:55:42 -0000 http://perforce.freebsd.org/chv.cgi?CH=112910 Change 112910 by zec@zec_tca51 on 2007/01/14 18:54:54 In callout_reset() check whether the handle provided by the caller is already linked in somewhere in the callout wheel. If it is, panic. This check can be insanely expensive and shouldn't be compiled in under normal circumstances, but at the moment I need this for chasing ghosts... Affected files ... .. //depot/projects/vimage/src/sys/kern/kern_timeout.c#2 edit Differences ... ==== //depot/projects/vimage/src/sys/kern/kern_timeout.c#2 (text+ko) ==== @@ -37,6 +37,8 @@ #include __FBSDID("$FreeBSD: src/sys/kern/kern_timeout.c,v 1.102 2006/10/11 14:57:03 glebius Exp $"); +#include "opt_vimage.h" + #include #include #include @@ -465,6 +467,23 @@ c->c_flags |= (CALLOUT_ACTIVE | CALLOUT_PENDING); c->c_func = ftn; c->c_time = ticks + to_ticks; +#if (defined(VIMAGE) && defined(INVARIANTS)) + /* + * MARKO XXX + * + * I'm suspecting that some lockups might have been caused by + * a single callout handle being scheduled multiple times. + * This loop examines the entire callwhell before inserting a + * new handle, and if the handle is already linked in it panics. + */ + int callwheel_iter; + struct callout *c_iter; + for (callwheel_iter = 0; callwheel_iter <= callwheelmask; + callwheel_iter++) + TAILQ_FOREACH(c_iter, &callwheel[callwheel_iter], c_links.tqe) + if (c_iter == c) + panic("finally got you!"); +#endif TAILQ_INSERT_TAIL(&callwheel[c->c_time & callwheelmask], c, c_links.tqe); CTR5(KTR_CALLOUT, "%sscheduled %p func %p arg %p in %d", From owner-p4-projects@FreeBSD.ORG Sun Jan 14 18:56:43 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 5F82816A417; Sun, 14 Jan 2007 18:56:43 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 25D7B16A40F for ; Sun, 14 Jan 2007 18:56:43 +0000 (UTC) (envelope-from zec@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 16C8913C43E for ; Sun, 14 Jan 2007 18:56:43 +0000 (UTC) (envelope-from zec@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0EIug8J055880 for ; Sun, 14 Jan 2007 18:56:42 GMT (envelope-from zec@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0EIug7d055877 for perforce@freebsd.org; Sun, 14 Jan 2007 18:56:42 GMT (envelope-from zec@FreeBSD.org) Date: Sun, 14 Jan 2007 18:56:42 GMT Message-Id: <200701141856.l0EIug7d055877@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to zec@FreeBSD.org using -f From: Marko Zec To: Perforce Change Reviews Cc: Subject: PERFORCE change 112911 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 14 Jan 2007 18:56:43 -0000 http://perforce.freebsd.org/chv.cgi?CH=112911 Change 112911 by zec@zec_tca51 on 2007/01/14 18:56:38 Use a separate rtq_timer callout handle for each vnet instance. Cought by: change 112910 Affected files ... .. //depot/projects/vimage/src/sys/netinet/in_rmx.c#3 edit .. //depot/projects/vimage/src/sys/netinet/vinet.h#7 edit Differences ... ==== //depot/projects/vimage/src/sys/netinet/in_rmx.c#3 (text+ko) ==== @@ -57,6 +57,7 @@ #include #include #include +#include #include #include #include @@ -253,20 +254,29 @@ } #define RTQ_TIMEOUT 60*10 /* run no less than once every ten minutes */ -static int rtq_timeout = RTQ_TIMEOUT; +#ifndef VIMAGE +static int rtq_timeout; static struct callout rtq_timer; +#endif static void in_rtqtimo(void *rock) { + CURVNETB_SET_QUIET((struct vnet_base *) rock); + INIT_VNET_NET((struct vnet_base *) rock); + INIT_VNET_INET((struct vnet_base *) rock); +#ifdef VIMAGE + struct radix_node_head *rnh = V_rt_tables[AF_INET]; +#else struct radix_node_head *rnh = rock; +#endif struct rtqk_arg arg; struct timeval atv; static time_t last_adjusted_timeout = 0; arg.found = arg.killed = 0; arg.rnh = rnh; - arg.nextstop = time_uptime + rtq_timeout; + arg.nextstop = time_uptime + V_rtq_timeout; arg.draining = arg.updating = 0; RADIX_NODE_HEAD_LOCK(rnh); rnh->rnh_walktree(rnh, in_rtqkill, &arg); @@ -281,7 +291,7 @@ * hard. */ if ((arg.found - arg.killed > rtq_toomany) && - (time_uptime - last_adjusted_timeout >= rtq_timeout) && + (time_uptime - last_adjusted_timeout >= V_rtq_timeout) && rtq_reallyold > rtq_minreallyold) { rtq_reallyold = 2 * rtq_reallyold / 3; if (rtq_reallyold < rtq_minreallyold) { @@ -302,7 +312,8 @@ atv.tv_usec = 0; atv.tv_sec = arg.nextstop - time_uptime; - callout_reset(&rtq_timer, tvtohz(&atv), in_rtqtimo, rock); + callout_reset(&V_rtq_timer, tvtohz(&atv), in_rtqtimo, rock); + CURVNETB_RESTORE(); } void @@ -329,6 +340,7 @@ in_inithead(void **head, int off) { INIT_VNET_NET(curvnetb); + INIT_VNET_INET(curvnetb); struct radix_node_head *rnh; if (!rn_inithead(head, off)) @@ -337,12 +349,17 @@ if (head != (void **)&V_rt_tables[AF_INET]) /* BOGUS! */ return 1; /* only do this for the real routing table */ + V_rtq_timeout = RTQ_TIMEOUT; rnh = *head; rnh->rnh_addaddr = in_addroute; rnh->rnh_matchaddr = in_matroute; rnh->rnh_close = in_clsroute; - callout_init(&rtq_timer, CALLOUT_MPSAFE); + callout_init(&V_rtq_timer, CALLOUT_MPSAFE); +#ifdef VIMAGE + in_rtqtimo(curvnetb); /* kick off timeout first time */ +#else in_rtqtimo(rnh); /* kick off timeout first time */ +#endif return 1; } ==== //depot/projects/vimage/src/sys/netinet/vinet.h#7 (text+ko) ==== @@ -95,6 +95,9 @@ struct igmpstat _igmpstat; SLIST_HEAD(, router_info) _router_info_head; + + int _rtq_timeout; + struct callout _rtq_timer; }; extern struct vnet_inet vnet_inet_0; @@ -149,4 +152,7 @@ #define V_router_info_head VNET_INET(router_info_head) +#define V_rtq_timeout VNET_INET(rtq_timeout) +#define V_rtq_timer VNET_INET(rtq_timer) + #endif /* !_NETINET_VINET_H_ */ From owner-p4-projects@FreeBSD.ORG Mon Jan 15 00:05:14 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 9576A16A492; Mon, 15 Jan 2007 00:05:14 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 521E916A415 for ; Mon, 15 Jan 2007 00:05:14 +0000 (UTC) (envelope-from kmacy@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 341E613C448 for ; Mon, 15 Jan 2007 00:05:14 +0000 (UTC) (envelope-from kmacy@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0F05E20019536 for ; Mon, 15 Jan 2007 00:05:14 GMT (envelope-from kmacy@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0F05DZt019533 for perforce@freebsd.org; Mon, 15 Jan 2007 00:05:13 GMT (envelope-from kmacy@freebsd.org) Date: Mon, 15 Jan 2007 00:05:13 GMT Message-Id: <200701150005.l0F05DZt019533@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to kmacy@freebsd.org using -f From: Kip Macy To: Perforce Change Reviews Cc: Subject: PERFORCE change 112916 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 15 Jan 2007 00:05:14 -0000 http://perforce.freebsd.org/chv.cgi?CH=112916 Change 112916 by kmacy@kmacy_serendipity:sam_wifi on 2007/01/15 00:04:17 ensure that the ic lock is acquired before the driver softc lock enroll them in the proper order in WITNESS Affected files ... .. //depot/projects/wifi/sys/kern/subr_witness.c#20 edit Differences ... ==== //depot/projects/wifi/sys/kern/subr_witness.c#20 (text+ko) ==== @@ -361,6 +361,18 @@ { "nfsd_mtx", &lock_class_mtx_sleep }, { "so_snd", &lock_class_mtx_sleep }, { NULL, NULL }, + + /* + * IEEE 802.11 + */ + { "802.11 com lock", &lock_class_mtx_sleep}, + { NULL, NULL }, + /* + * Network drivers + */ + { "network driver", &lock_class_mtx_sleep}, + { NULL, NULL }, + /* * CDEV */ From owner-p4-projects@FreeBSD.ORG Mon Jan 15 10:27:29 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 0588F16A417; Mon, 15 Jan 2007 10:27:29 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id D489316A407 for ; Mon, 15 Jan 2007 10:27:28 +0000 (UTC) (envelope-from piso@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id C49AA13C448 for ; Mon, 15 Jan 2007 10:27:28 +0000 (UTC) (envelope-from piso@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0FARSEo058074 for ; Mon, 15 Jan 2007 10:27:28 GMT (envelope-from piso@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0FARRTY058071 for perforce@freebsd.org; Mon, 15 Jan 2007 10:27:27 GMT (envelope-from piso@freebsd.org) Date: Mon, 15 Jan 2007 10:27:27 GMT Message-Id: <200701151027.l0FARRTY058071@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to piso@freebsd.org using -f From: Paolo Pisati To: Perforce Change Reviews Cc: Subject: PERFORCE change 112929 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 15 Jan 2007 10:27:29 -0000 http://perforce.freebsd.org/chv.cgi?CH=112929 Change 112929 by piso@piso_newluxor on 2007/01/15 10:27:06 IFC@112928 Affected files ... .. //depot/projects/soc2006/intr_filter/amd64/include/setjmp.h#2 integrate .. //depot/projects/soc2006/intr_filter/amd64/linux32/linux32_machdep.c#7 integrate .. //depot/projects/soc2006/intr_filter/boot/forth/loader.conf#6 integrate .. //depot/projects/soc2006/intr_filter/compat/linux/linux_ipc.c#6 integrate .. //depot/projects/soc2006/intr_filter/compat/linux/linux_mib.c#4 integrate .. //depot/projects/soc2006/intr_filter/dev/ath/ath_rate/sample/sample.c#3 integrate .. //depot/projects/soc2006/intr_filter/dev/ath/ath_rate/sample/sample.h#4 integrate .. //depot/projects/soc2006/intr_filter/dev/ath/if_ath.c#11 integrate .. //depot/projects/soc2006/intr_filter/dev/ath/if_athvar.h#9 integrate .. //depot/projects/soc2006/intr_filter/dev/bce/if_bce.c#10 integrate .. //depot/projects/soc2006/intr_filter/dev/cy/cy_isa.c#5 integrate .. //depot/projects/soc2006/intr_filter/dev/fb/creatorreg.h#2 integrate .. //depot/projects/soc2006/intr_filter/dev/fb/gallant12x22.c#2 integrate .. //depot/projects/soc2006/intr_filter/dev/mii/acphy.c#4 integrate .. //depot/projects/soc2006/intr_filter/dev/mii/acphyreg.h#2 integrate .. //depot/projects/soc2006/intr_filter/dev/mii/amphy.c#4 integrate .. //depot/projects/soc2006/intr_filter/dev/mii/exphy.c#3 integrate .. //depot/projects/soc2006/intr_filter/dev/mii/inphy.c#4 integrate .. //depot/projects/soc2006/intr_filter/dev/mii/lxtphy.c#5 integrate .. //depot/projects/soc2006/intr_filter/dev/mii/mii_physubr.c#5 integrate .. //depot/projects/soc2006/intr_filter/dev/mii/miivar.h#4 integrate .. //depot/projects/soc2006/intr_filter/dev/mii/nsphy.c#5 integrate .. //depot/projects/soc2006/intr_filter/dev/mii/rlphy.c#5 integrate .. //depot/projects/soc2006/intr_filter/dev/mii/ruephy.c#3 integrate .. //depot/projects/soc2006/intr_filter/dev/pci/pci.c#8 integrate .. //depot/projects/soc2006/intr_filter/dev/pci/pci_pci.c#4 integrate .. //depot/projects/soc2006/intr_filter/dev/pci/pcib_private.h#4 integrate .. //depot/projects/soc2006/intr_filter/dev/sound/pci/hda/hdac.c#7 integrate .. //depot/projects/soc2006/intr_filter/i386/i386/machdep.c#9 integrate .. //depot/projects/soc2006/intr_filter/i386/include/setjmp.h#2 integrate .. //depot/projects/soc2006/intr_filter/i386/linux/linux_machdep.c#6 integrate .. //depot/projects/soc2006/intr_filter/ia64/include/exec.h#2 integrate .. //depot/projects/soc2006/intr_filter/ia64/include/floatingpoint.h#2 integrate .. //depot/projects/soc2006/intr_filter/ia64/include/reloc.h#2 integrate .. //depot/projects/soc2006/intr_filter/kern/kern_acl.c#4 integrate .. //depot/projects/soc2006/intr_filter/kern/kern_ntptime.c#3 integrate .. //depot/projects/soc2006/intr_filter/net80211/_ieee80211.h#3 integrate .. //depot/projects/soc2006/intr_filter/net80211/ieee80211.c#6 integrate .. //depot/projects/soc2006/intr_filter/net80211/ieee80211_node.c#4 integrate .. //depot/projects/soc2006/intr_filter/netatalk/aarp.c#4 integrate .. //depot/projects/soc2006/intr_filter/netatalk/aarp.h#2 integrate .. //depot/projects/soc2006/intr_filter/netatalk/at.h#2 integrate .. //depot/projects/soc2006/intr_filter/netatalk/at_extern.h#2 integrate .. //depot/projects/soc2006/intr_filter/netatalk/at_proto.c#2 integrate .. //depot/projects/soc2006/intr_filter/netatalk/at_rmx.c#2 integrate .. //depot/projects/soc2006/intr_filter/netatalk/at_var.h#2 integrate .. //depot/projects/soc2006/intr_filter/netatalk/ddp.h#2 integrate .. //depot/projects/soc2006/intr_filter/netatalk/ddp_input.c#4 integrate .. //depot/projects/soc2006/intr_filter/netatalk/ddp_output.c#3 integrate .. //depot/projects/soc2006/intr_filter/netatalk/ddp_pcb.c#5 integrate .. //depot/projects/soc2006/intr_filter/netatalk/ddp_pcb.h#3 integrate .. //depot/projects/soc2006/intr_filter/netatalk/ddp_usrreq.c#4 integrate .. //depot/projects/soc2006/intr_filter/netatalk/ddp_var.h#2 integrate .. //depot/projects/soc2006/intr_filter/netgraph/ng_deflate.c#3 integrate .. //depot/projects/soc2006/intr_filter/netgraph/ng_pred1.c#2 integrate .. //depot/projects/soc2006/intr_filter/netgraph/ng_tcpmss.c#2 integrate .. //depot/projects/soc2006/intr_filter/netinet/if_ether.c#5 integrate .. //depot/projects/soc2006/intr_filter/netinet/ip.h#2 integrate .. //depot/projects/soc2006/intr_filter/netinet6/esp_aesctr.c#3 integrate .. //depot/projects/soc2006/intr_filter/netinet6/in6_cksum.c#4 integrate .. //depot/projects/soc2006/intr_filter/pci/if_pcn.c#4 integrate .. //depot/projects/soc2006/intr_filter/powerpc/include/reloc.h#2 integrate .. //depot/projects/soc2006/intr_filter/powerpc/powerpc/cpu.c#2 integrate .. //depot/projects/soc2006/intr_filter/powerpc/powerpc/machdep.c#5 integrate .. //depot/projects/soc2006/intr_filter/sparc64/include/ofw_nexus.h#2 integrate .. //depot/projects/soc2006/intr_filter/sparc64/include/reloc.h#2 integrate .. //depot/projects/soc2006/intr_filter/sparc64/include/setjmp.h#2 integrate .. //depot/projects/soc2006/intr_filter/sun4v/include/reloc.h#3 integrate .. //depot/projects/soc2006/intr_filter/sun4v/include/setjmp.h#3 integrate Differences ... ==== //depot/projects/soc2006/intr_filter/amd64/include/setjmp.h#2 (text+ko) ==== @@ -10,10 +10,7 @@ * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by John Birrell. - * 4. Neither the name of the author nor the names of any co-contributors + * 3. Neither the name of the author nor the names of any co-contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * @@ -29,7 +26,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/amd64/include/setjmp.h,v 1.9 2003/06/02 21:49:35 peter Exp $ + * $FreeBSD: src/sys/amd64/include/setjmp.h,v 1.10 2007/01/12 07:24:06 imp Exp $ */ #ifndef _MACHINE_SETJMP_H_ ==== //depot/projects/soc2006/intr_filter/amd64/linux32/linux32_machdep.c#7 (text+ko) ==== @@ -29,7 +29,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/linux32/linux32_machdep.c,v 1.25 2007/01/07 19:00:38 netchild Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/linux32/linux32_machdep.c,v 1.26 2007/01/14 16:20:37 netchild Exp $"); #include #include @@ -497,6 +497,7 @@ return (error); /* wait for the children to exit, ie. emulate vfork */ PROC_LOCK(p2); + p2->p_flag |= P_PPWAIT; while (p2->p_flag & P_PPWAIT) msleep(td->td_proc, &p2->p_mtx, PWAIT, "ppwait", 0); PROC_UNLOCK(p2); ==== //depot/projects/soc2006/intr_filter/boot/forth/loader.conf#6 (text+ko) ==== @@ -6,7 +6,7 @@ # # All arguments must be in double quotes. # -# $FreeBSD: src/sys/boot/forth/loader.conf,v 1.114 2006/12/13 02:48:22 yongari Exp $ +# $FreeBSD: src/sys/boot/forth/loader.conf,v 1.117 2007/01/14 13:55:43 maxim Exp $ ############################################################## ### Basic configuration options ############################ @@ -147,13 +147,13 @@ # ggatec(8), ggated(8), ggatel(8)) geom_label_load="NO" # File system labels (see glabel(8)) geom_md_load="NO" # Memory disk driver (vnode/swap/malloc) (see + # md(4), mdconfig(8)) geom_mirror_load="NO" # RAID1 disk driver (see gmirror(8)) geom_nop_load="NO" # Transparent disk driver (see gnop(8)) geom_raid3_load="NO" # RAID3 disk driver (see graid3(8)) geom_shsec_load="NO" # Shared secret disk driver (see gshsec(8)) geom_stripe_load="NO" # RAID0 disk driver (see gstripe(8)) geom_uzip_load="NO" # Compressed disk images driver (see mkuzip(8)) - # md(4), mdconfig(8)) geom_vinum_load="NO" # Concatenated/mirror/raid driver (see vinum(4)) @@ -183,7 +183,8 @@ ############################################################## if_disc_load="NO" # Discard device -if_ef_load="NO" # pseudo-device providing support for multiple ethernet frame types +if_ef_load="NO" # pseudo-device providing support for multiple + # ethernet frame types if_faith_load="NO" # IPv6-to-IPv4 TCP relay capturing interface if_gif_load="NO" # generic tunnel interface if_gre_load="NO" # encapsulating network device @@ -217,21 +218,25 @@ if_cue_load="NO" # CATC USB-EL1210A USB Ethernet if_dc_load="NO" # DEC/Intel 21143 and various workalikes if_de_load="NO" # DEC DC21x4x Ethernet -if_ed_load="NO" # National Semiconductor DS8390/WD83C690 Ethernet +if_ed_load="NO" # National Semiconductor DS8390/WD83C690 + # Ethernet if_em_load="NO" # Intel(R) PRO/1000 Gigabit Ethernet if_en_load="NO" # Midway-based ATM interfaces if_ep_load="NO" # 3Com Etherlink III (3c5x9) if_ex_load="NO" # Intel EtherExpress Pro/10 Ethernet -if_fe_load="NO" # Fujitsu MB86960A/MB86965A based Ethernet adapters +if_fe_load="NO" # Fujitsu MB86960A/MB86965A based Ethernet + # adapters if_fxp_load="NO" # Intel EtherExpress PRO/100B (82557, 82558) if_gem_load="NO" # Sun GEM/Sun ERI/Apple GMAC if_hme_load="NO" # Sun Microelectronics STP2002-STQ Ethernet if_ie_load="NO" # Intel 82586 if_ipw_load="NO" # Intel PRO/Wireless 2100 wireless -if_iwi_load="NO" # Intel PRO/Wireless 2200BG/2225BG/2915ABG wireless +if_iwi_load="NO" # Intel PRO/Wireless 2200BG/2225BG/2915ABG + # wireless if_ixgb_load="NO" # Intel PRO/10Gb Ethernet if_le_load="NO" # AMD Am7900 LANCE and Am79C9xx PCnet -if_lge_load="NO" # Level 1 LXT1001 NetCellerator PCI Gigabit Ethernet +if_lge_load="NO" # Level 1 LXT1001 NetCellerator PCI Gigabit + # Ethernet if_msk_load="NO" # Marvell/SysKonnect Yukon II Gigabit Ethernet if_mxge_load="NO" # Myricom Myri10GE 10Gb Ethernet if_my_load="NO" # Myson PCI Fast Ethernet @@ -289,18 +294,21 @@ ng_ksocket_load="NO" # kernel socket netgraph node type ng_l2tp_load="NO" # L2TP protocol netgraph node type ng_lmi_load="NO" # frame relay LMI protocol netgraph node type -ng_mppc_load="NO" # Microsoft MPPC/MPPE compression and encryption netgraph node type -ng_netflow_load="NO" # Cisco's NetFlow netgraph note type +ng_mppc_load="NO" # Microsoft MPPC/MPPE compression and + # encryption netgraph node type +ng_netflow_load="NO" # Cisco's NetFlow netgraph node type ng_one2many_load="NO" # packet multiplexing netgraph node type ng_ppp_load="NO" # PPP protocol netgraph node type ng_pppoe_load="NO" # RFC 2516 PPPOE protocol netgraph node type ng_pptpgre_load="NO" # PPTP GRE protocol netgraph node type ng_rfc1490_load="NO" # RFC 1490 netgraph node type ng_socket_load="NO" # Netgraph socket node type -ng_split_load="NO" # netgraph node to separate incoming and outgoing flows +ng_split_load="NO" # netgraph node to separate incoming and + # outgoing flows ng_sppp_load="NO" # sppp netgraph node type ng_tee_load="NO" # Netgraph ``tee'' node type -ng_tty_load="NO" # Netgraph node type that is also a line discipline +ng_tty_load="NO" # Netgraph node type that is also a line + # discipline ng_vjc_load="NO" # Van Jacobsen compression netgraph node type ng_vlan_load="NO" # IEEE 802.1Q VLAN tagging netgraph node type ==== //depot/projects/soc2006/intr_filter/compat/linux/linux_ipc.c#6 (text+ko) ==== @@ -27,7 +27,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/compat/linux/linux_ipc.c,v 1.53 2006/12/20 20:08:45 jkim Exp $"); +__FBSDID("$FreeBSD: src/sys/compat/linux/linux_ipc.c,v 1.54 2007/01/14 16:34:43 netchild Exp $"); #include #include @@ -571,9 +571,13 @@ td->td_retval[0] = seminfo.semmni; return 0; /* No need for __semctl call */ case LINUX_GETALL: - /* FALLTHROUGH */ + cmd = GETALL; + semun.val = args->arg.val; + break; case LINUX_SETALL: - /* FALLTHROUGH */ + cmd = SETALL; + semun.val = args->arg.val; + break; default: linux_msg(td, "ipc type %d is not implemented", args->cmd & ~LINUX_IPC_64); ==== //depot/projects/soc2006/intr_filter/compat/linux/linux_mib.c#4 (text+ko) ==== @@ -27,7 +27,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/compat/linux/linux_mib.c,v 1.28 2007/01/07 19:20:17 netchild Exp $"); +__FBSDID("$FreeBSD: src/sys/compat/linux/linux_mib.c,v 1.29 2007/01/14 16:07:01 netchild Exp $"); #include #include @@ -233,7 +233,7 @@ { struct prison *pr; struct linux_prison *lpr; - int use26 = 0; /* defaults to off */ + int use26 = linux_use_linux26; pr = td->td_ucred->cr_prison; if (pr != NULL) { @@ -241,8 +241,7 @@ lpr = (struct linux_prison *)pr->pr_linux; use26 = lpr->pr_use_linux26; } - } else - use26 = linux_use_linux26; + } return (use26); } ==== //depot/projects/soc2006/intr_filter/dev/ath/ath_rate/sample/sample.c#3 (text+ko) ==== @@ -35,7 +35,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/ath/ath_rate/sample/sample.c,v 1.15 2006/12/13 19:34:35 sam Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/ath/ath_rate/sample/sample.c,v 1.16 2007/01/15 01:17:44 sam Exp $"); /* * John Bicket's SampleRate control algorithm. @@ -533,24 +533,6 @@ short_tries, long_tries); return; } - - if (ts->ts_status) { /* this packet failed */ - DPRINTF(sc, ATH_DEBUG_RATE, -"%s: %s size %d rate/try [%d/%d %d/%d %d/%d %d/%d] FAIL tries [%d/%d]\n", - __func__, - ether_sprintf(an->an_node.ni_macaddr), - bin_to_size(size_to_bin(frame_size)), - sc->sc_hwmap[MS(ds0->ds_ctl3, AR_XmitRate0)].ieeerate, - MS(ds0->ds_ctl2, AR_XmitDataTries0), - sc->sc_hwmap[MS(ds0->ds_ctl3, AR_XmitRate1)].ieeerate, - MS(ds0->ds_ctl2, AR_XmitDataTries1), - sc->sc_hwmap[MS(ds0->ds_ctl3, AR_XmitRate2)].ieeerate, - MS(ds0->ds_ctl2, AR_XmitDataTries2), - sc->sc_hwmap[MS(ds0->ds_ctl3, AR_XmitRate3)].ieeerate, - MS(ds0->ds_ctl2, AR_XmitDataTries3), - short_tries, long_tries); - } - mrr = sc->sc_mrretry && !(ic->ic_flags & IEEE80211_F_USEPROT); if (!mrr || !(ts->ts_rate & HAL_TXSTAT_ALTRATE)) { int ndx = rate_to_ndx(sn, final_rate); @@ -571,32 +553,43 @@ 0, 0, short_tries, long_tries, ts->ts_status); } else { - int rate0, tries0, ndx0; - int rate1, tries1, ndx1; - int rate2, tries2, ndx2; - int rate3, tries3, ndx3; + int hwrate0, rate0, tries0, ndx0; + int hwrate1, rate1, tries1, ndx1; + int hwrate2, rate2, tries2, ndx2; + int hwrate3, rate3, tries3, ndx3; int finalTSIdx = ts->ts_finaltsi; /* * Process intermediate rates that failed. */ - rate0 = sc->sc_hwmap[MS(ds0->ds_ctl3, AR_XmitRate0)].ieeerate; + if (sc->sc_ah->ah_magic != 0x20065416) { + hwrate0 = MS(ds0->ds_ctl3, AR_XmitRate0); + hwrate1 = MS(ds0->ds_ctl3, AR_XmitRate1); + hwrate2 = MS(ds0->ds_ctl3, AR_XmitRate2); + hwrate3 = MS(ds0->ds_ctl3, AR_XmitRate3); + } else { + hwrate0 = MS(ds0->ds_ctl3, AR5416_XmitRate0); + hwrate1 = MS(ds0->ds_ctl3, AR5416_XmitRate1); + hwrate2 = MS(ds0->ds_ctl3, AR5416_XmitRate2); + hwrate3 = MS(ds0->ds_ctl3, AR5416_XmitRate3); + } + + rate0 = sc->sc_hwmap[hwrate0].ieeerate; tries0 = MS(ds0->ds_ctl2, AR_XmitDataTries0); ndx0 = rate_to_ndx(sn, rate0); - rate1 = sc->sc_hwmap[MS(ds0->ds_ctl3, AR_XmitRate1)].ieeerate; + rate1 = sc->sc_hwmap[hwrate1].ieeerate; tries1 = MS(ds0->ds_ctl2, AR_XmitDataTries1); ndx1 = rate_to_ndx(sn, rate1); - rate2 = sc->sc_hwmap[MS(ds0->ds_ctl3, AR_XmitRate2)].ieeerate; + rate2 = sc->sc_hwmap[hwrate2].ieeerate; tries2 = MS(ds0->ds_ctl2, AR_XmitDataTries2); ndx2 = rate_to_ndx(sn, rate2); - rate3 = sc->sc_hwmap[MS(ds0->ds_ctl3, AR_XmitRate3)].ieeerate; + rate3 = sc->sc_hwmap[hwrate3].ieeerate; tries3 = MS(ds0->ds_ctl2, AR_XmitDataTries3); ndx3 = rate_to_ndx(sn, rate3); -#if 1 DPRINTF(sc, ATH_DEBUG_RATE, "%s: %s size %d finaltsidx %d tries %d %s rate/try [%d/%d %d/%d %d/%d %d/%d]\n", __func__, ether_sprintf(an->an_node.ni_macaddr), @@ -608,7 +601,6 @@ rate1, tries1, rate2, tries2, rate3, tries3); -#endif /* * NB: series > 0 are not penalized for failure ==== //depot/projects/soc2006/intr_filter/dev/ath/ath_rate/sample/sample.h#4 (text+ko) ==== @@ -33,7 +33,7 @@ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF * THE POSSIBILITY OF SUCH DAMAGES. * - * $FreeBSD: src/sys/dev/ath/ath_rate/sample/sample.h,v 1.6 2006/12/13 19:34:35 sam Exp $ + * $FreeBSD: src/sys/dev/ath/ath_rate/sample/sample.h,v 1.7 2007/01/15 01:17:44 sam Exp $ */ /* @@ -136,6 +136,16 @@ #define AR_XmitRate3 0x000f8000 /* series 3 tx rate */ #define AR_XmitRate3_S 15 +/* TX ds_ctl3 for 5416 */ +#define AR5416_XmitRate0 0x000000ff /* series 0 tx rate */ +#define AR5416_XmitRate0_S 0 +#define AR5416_XmitRate1 0x0000ff00 /* series 1 tx rate */ +#define AR5416_XmitRate1_S 8 +#define AR5416_XmitRate2 0x00ff0000 /* series 2 tx rate */ +#define AR5416_XmitRate2_S 16 +#define AR5416_XmitRate3 0xff000000 /* series 3 tx rate */ +#define AR5416_XmitRate3_S 24 + #define MS(_v, _f) (((_v) & (_f)) >> _f##_S) /* ==== //depot/projects/soc2006/intr_filter/dev/ath/if_ath.c#11 (text+ko) ==== @@ -35,7 +35,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/ath/if_ath.c,v 1.158 2006/12/27 19:07:09 sam Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/ath/if_ath.c,v 1.159 2007/01/15 01:15:57 sam Exp $"); /* * Driver for the Atheros Wireless LAN controller. @@ -364,8 +364,8 @@ ath_rate_setup(sc, IEEE80211_MODE_11G); ath_rate_setup(sc, IEEE80211_MODE_TURBO_A); ath_rate_setup(sc, IEEE80211_MODE_TURBO_G); - ath_rate_setup(sc, IEEE80211_MODE_11A_HALF); - ath_rate_setup(sc, IEEE80211_MODE_11A_QUARTER); + ath_rate_setup(sc, IEEE80211_MODE_HALF); + ath_rate_setup(sc, IEEE80211_MODE_QUARTER); /* NB: setup here so ath_rate_update is happy */ ath_setcurmode(sc, IEEE80211_MODE_11A); @@ -885,8 +885,14 @@ } } -static u_int -ath_chan2flags(struct ieee80211com *ic, struct ieee80211_channel *chan) +/* + * Convert net80211 channel to a HAL channel with the flags + * constrained to reflect the current operating mode and + * the frequency possibly mapped for GSM channels. + */ +static void +ath_mapchan(struct ieee80211com *ic, HAL_CHANNEL *hc, + const struct ieee80211_channel *chan) { #define N(a) (sizeof(a) / sizeof(a[0])) static const u_int modeflags[] = { @@ -902,11 +908,14 @@ KASSERT(mode < N(modeflags), ("unexpected phy mode %u", mode)); KASSERT(modeflags[mode] != 0, ("mode %u undefined", mode)); + hc->channelFlags = modeflags[mode]; if (IEEE80211_IS_CHAN_HALF(chan)) - return modeflags[mode] | CHANNEL_HALF; + hc->channelFlags |= CHANNEL_HALF; if (IEEE80211_IS_CHAN_QUARTER(chan)) - return modeflags[mode] | CHANNEL_QUARTER; - return modeflags[mode]; + hc->channelFlags |= CHANNEL_QUARTER; + + hc->channel = IEEE80211_IS_CHAN_GSM(chan) ? + 2422 + (922 - chan->ic_freq) : chan->ic_freq; #undef N } @@ -936,8 +945,7 @@ * be followed by initialization of the appropriate bits * and then setup of the interrupt mask. */ - sc->sc_curchan.channel = ic->ic_curchan->ic_freq; - sc->sc_curchan.channelFlags = ath_chan2flags(ic, ic->ic_curchan); + ath_mapchan(ic, &sc->sc_curchan, ic->ic_curchan); if (!ath_hal_reset(ah, sc->sc_opmode, &sc->sc_curchan, AH_FALSE, &status)) { if_printf(ifp, "unable to reset hardware; hal status %u\n", status); @@ -1095,16 +1103,13 @@ struct ath_softc *sc = ifp->if_softc; struct ieee80211com *ic = &sc->sc_ic; struct ath_hal *ah = sc->sc_ah; - struct ieee80211_channel *c; HAL_STATUS status; /* * Convert to a HAL channel description with the flags * constrained to reflect the current operating mode. */ - c = ic->ic_curchan; - sc->sc_curchan.channel = c->ic_freq; - sc->sc_curchan.channelFlags = ath_chan2flags(ic, c); + ath_mapchan(ic, &sc->sc_curchan, ic->ic_curchan); ath_hal_intrset(ah, 0); /* disable interrupts */ ath_draintxq(sc); /* stop xmit side */ @@ -1122,7 +1127,7 @@ * that changes the channel so update any state that * might change as a result. */ - ath_chan_change(sc, c); + ath_chan_change(sc, ic->ic_curchan); if (ath_startrecv(sc) != 0) /* restart recv */ if_printf(ifp, "%s: unable to start recv logic\n", __func__); if (ic->ic_state == IEEE80211_S_RUN) @@ -1859,17 +1864,19 @@ struct ath_hal *ah = sc->sc_ah; u_int usec; - if (IEEE80211_IS_CHAN_A(ic->ic_curchan)) { - if (IEEE80211_IS_CHAN_HALF(ic->ic_curchan)) - usec = 13; - else if (IEEE80211_IS_CHAN_QUARTER(ic->ic_curchan)) - usec = 21; + if (IEEE80211_IS_CHAN_HALF(ic->ic_curchan)) + usec = 13; + else if (IEEE80211_IS_CHAN_QUARTER(ic->ic_curchan)) + usec = 21; + else if (IEEE80211_IS_CHAN_ANYG(ic->ic_curchan)) { + /* honor short/long slot time only in 11g */ + /* XXX shouldn't honor on pure g or turbo g channel */ + if (ic->ic_flags & IEEE80211_F_SHSLOT) + usec = HAL_SLOT_TIME_9; else - usec = HAL_SLOT_TIME_9; - } else if (ic->ic_flags & IEEE80211_F_SHSLOT) + usec = HAL_SLOT_TIME_20; + } else usec = HAL_SLOT_TIME_9; - else - usec = HAL_SLOT_TIME_20; DPRINTF(sc, ATH_DEBUG_RESET, "%s: chan %u MHz flags 0x%x %s slot, %u usec\n", @@ -4318,13 +4325,12 @@ * Change channels and update the h/w rate map * if we're switching; e.g. 11a to 11b/g. */ - mode = ieee80211_chan2mode(ic, chan); - if (mode == IEEE80211_MODE_11A) { - if (IEEE80211_IS_CHAN_HALF(chan)) - mode = IEEE80211_MODE_11A_HALF; - else if (IEEE80211_IS_CHAN_QUARTER(chan)) - mode = IEEE80211_MODE_11A_QUARTER; - } + if (IEEE80211_IS_CHAN_HALF(chan)) + mode = IEEE80211_MODE_HALF; + else if (IEEE80211_IS_CHAN_QUARTER(chan)) + mode = IEEE80211_MODE_QUARTER; + else + mode = ieee80211_chan2mode(ic, chan); if (mode != sc->sc_curmode) ath_setcurmode(sc, mode); /* @@ -4340,6 +4346,10 @@ flags = IEEE80211_CHAN_B; if (IEEE80211_IS_CHAN_T(chan)) flags |= IEEE80211_CHAN_TURBO; + if (IEEE80211_IS_CHAN_HALF(chan)) + flags |= IEEE80211_CHAN_HALF; + if (IEEE80211_IS_CHAN_QUARTER(chan)) + flags |= IEEE80211_CHAN_QUARTER; sc->sc_tx_th.wt_chan_freq = sc->sc_rx_th.wr_chan_freq = htole16(chan->ic_freq); sc->sc_tx_th.wt_chan_flags = sc->sc_rx_th.wr_chan_flags = @@ -4400,8 +4410,7 @@ * the flags constrained to reflect the current * operating mode. */ - hchan.channel = chan->ic_freq; - hchan.channelFlags = ath_chan2flags(ic, chan); + ath_mapchan(ic, &hchan, chan); DPRINTF(sc, ATH_DEBUG_RESET, "%s: %u (%u MHz, hal flags 0x%x) -> %u (%u MHz, hal flags 0x%x)\n", @@ -4829,6 +4838,9 @@ ix, c->channel, c->channelFlags); continue; } + if (bootverbose) + if_printf(ifp, "hal channel %u/%x -> %u\n", + c->channel, c->channelFlags, ix); /* * Calculate net80211 flags; most are compatible * but some need massaging. Note the static turbo @@ -4838,6 +4850,12 @@ flags = c->channelFlags & COMPAT; if (c->channelFlags & CHANNEL_STURBO) flags |= IEEE80211_CHAN_TURBO; + if (ath_hal_isgsmsku(ah)) { + /* remap to true frequencies */ + c->channel = 922 + (2422 - c->channel); + flags |= IEEE80211_CHAN_GSM; + ix = ieee80211_mhz2ieee(c->channel, flags); + } if (ic->ic_channels[ix].ic_freq == 0) { ic->ic_channels[ix].ic_freq = c->channel; ic->ic_channels[ix].ic_flags = flags; @@ -4943,10 +4961,10 @@ case IEEE80211_MODE_11A: rt = ath_hal_getratetable(ah, HAL_MODE_11A); break; - case IEEE80211_MODE_11A_HALF: + case IEEE80211_MODE_HALF: rt = ath_hal_getratetable(ah, HAL_MODE_11A_HALF_RATE); break; - case IEEE80211_MODE_11A_QUARTER: + case IEEE80211_MODE_QUARTER: rt = ath_hal_getratetable(ah, HAL_MODE_11A_QUARTER_RATE); break; case IEEE80211_MODE_11B: @@ -4995,6 +5013,7 @@ { 4, 267, 66 }, { 2, 400, 100 }, { 0, 500, 130 }, + /* XXX half/quarter rates */ }; const HAL_RATE_TABLE *rt; int i, j; ==== //depot/projects/soc2006/intr_filter/dev/ath/if_athvar.h#9 (text+ko) ==== @@ -33,7 +33,7 @@ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF * THE POSSIBILITY OF SUCH DAMAGES. * - * $FreeBSD: src/sys/dev/ath/if_athvar.h,v 1.56 2006/12/27 19:07:09 sam Exp $ + * $FreeBSD: src/sys/dev/ath/if_athvar.h,v 1.58 2007/01/15 04:26:19 sam Exp $ */ /* @@ -208,8 +208,8 @@ sc_xchanmode: 1,/* extended channel mode */ sc_outdoor : 1;/* outdoor operation */ /* rate tables */ -#define IEEE80211_MODE_11A_HALF (IEEE80211_MODE_MAX+0) -#define IEEE80211_MODE_11A_QUARTER (IEEE80211_MODE_MAX+1) +#define IEEE80211_MODE_HALF (IEEE80211_MODE_MAX+0) +#define IEEE80211_MODE_QUARTER (IEEE80211_MODE_MAX+1) const HAL_RATE_TABLE *sc_rates[IEEE80211_MODE_MAX+2]; const HAL_RATE_TABLE *sc_currates; /* current rate table */ enum ieee80211_phymode sc_curmode; /* current phy mode */ @@ -559,6 +559,11 @@ (((ah)->ah_regdomain == 0 && (ah)->ah_countryCode == 842) || \ (ah)->ah_regdomain == 0x12) #endif +#if HAL_ABI_VERSION < 0x06122400 +/* XXX yech, can't get to regdomain so just hack a compat shim */ +#define ath_hal_isgsmsku(ah) \ + ((ah)->ah_countryCode == 843) +#endif #define ath_hal_setuprxdesc(_ah, _ds, _size, _intreq) \ ((*(_ah)->ah_setupRxDesc)((_ah), (_ds), (_size), (_intreq))) ==== //depot/projects/soc2006/intr_filter/dev/bce/if_bce.c#10 (text) ==== @@ -29,7 +29,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/bce/if_bce.c,v 1.24 2007/01/11 03:18:31 delphij Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/bce/if_bce.c,v 1.25 2007/01/13 04:35:15 jhb Exp $"); /* * The following controllers are supported by this driver: @@ -305,6 +305,7 @@ static int bce_ioctl (struct ifnet *, u_long, caddr_t); static void bce_watchdog (struct bce_softc *); static int bce_ifmedia_upd (struct ifnet *); +static void bce_ifmedia_upd_locked (struct ifnet *); static void bce_ifmedia_sts (struct ifnet *, struct ifmediareq *); static void bce_init_locked (struct bce_softc *); static void bce_init (void *); @@ -3812,12 +3813,24 @@ bce_ifmedia_upd(struct ifnet *ifp) { struct bce_softc *sc; + + sc = ifp->if_softc; + BCE_LOCK(sc); + bce_ifmedia_upd_locked(ifp); + BCE_UNLOCK(sc); + return (0); +} + +static void +bce_ifmedia_upd_locked(struct ifnet *ifp) +{ + struct bce_softc *sc; struct mii_data *mii; struct ifmedia *ifm; - int rc = 0; sc = ifp->if_softc; ifm = &sc->bce_ifmedia; + BCE_LOCK_ASSERT(sc); /* DRC - ToDo: Add SerDes support. */ @@ -3825,13 +3838,11 @@ sc->bce_link = 0; if (mii->mii_instance) { struct mii_softc *miisc; - for (miisc = LIST_FIRST(&mii->mii_phys); miisc != NULL; - miisc = LIST_NEXT(miisc, mii_list)) + + LIST_FOREACH(miisc, &mii->mii_phys, mii_list) mii_phy_reset(miisc); } mii_mediachg(mii); - - return(rc); } @@ -4444,7 +4455,7 @@ /* Enable host interrupts. */ bce_enable_intr(sc); - bce_ifmedia_upd(ifp); + bce_ifmedia_upd_locked(ifp); ifp->if_drv_flags |= IFF_DRV_RUNNING; ifp->if_drv_flags &= ~IFF_DRV_OACTIVE; @@ -4487,7 +4498,7 @@ REG_RD(sc, BCE_MISC_ENABLE_SET_BITS); DELAY(20); - bce_ifmedia_upd(ifp); + bce_ifmedia_upd_locked(ifp); bce_mgmt_init_locked_exit: DBPRINT(sc, BCE_VERBOSE_RESET, "Exiting %s()\n", __FUNCTION__); ==== //depot/projects/soc2006/intr_filter/dev/cy/cy_isa.c#5 (text+ko) ==== @@ -33,7 +33,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/cy/cy_isa.c,v 1.146 2004/05/30 20:08:29 phk Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/cy/cy_isa.c,v 1.147 2007/01/13 11:00:56 bde Exp $"); #include #include @@ -74,7 +74,7 @@ { struct resource *mem_res; cy_addr iobase; - int mem_rid; + int error, mem_rid; if (isa_get_logicalid(dev) != 0) /* skip PnP probes */ return (ENXIO); @@ -96,8 +96,9 @@ cy_outb(iobase, CY_CLEAR_INTR, 0, 0); DELAY(500); + error = (cy_units(iobase, 0) == 0 ? ENXIO : 0); bus_release_resource(dev, SYS_RES_MEMORY, mem_rid, mem_res); - return (cy_units(iobase, 0) == 0 ? ENXIO : 0); + return (error); } static int ==== //depot/projects/soc2006/intr_filter/dev/fb/creatorreg.h#2 (text+ko) ==== @@ -45,7 +45,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/dev/fb/creatorreg.h,v 1.5 2005/07/10 11:16:34 marius Exp $ + * $FreeBSD: src/sys/dev/fb/creatorreg.h,v 1.6 2007/01/13 22:33:11 marius Exp $ */ #ifndef _DEV_FB_CREATOR_H_ ==== //depot/projects/soc2006/intr_filter/dev/fb/gallant12x22.c#2 (text+ko) ==== @@ -35,7 +35,7 @@ * * Derived from: @(#)gallant19.h 8.1 (Berkeley) 6/11/93 * - * $FreeBSD: src/sys/dev/fb/gallant12x22.c,v 1.3 2005/01/06 01:42:40 imp Exp $ + * $FreeBSD: src/sys/dev/fb/gallant12x22.c,v 1.4 2007/01/13 22:36:22 marius Exp $ */ static u_char gallant12x22_data[] = { ==== //depot/projects/soc2006/intr_filter/dev/mii/acphy.c#4 (text+ko) ==== @@ -65,7 +65,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/mii/acphy.c,v 1.20 2006/12/02 21:19:54 marius Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/mii/acphy.c,v 1.21 2007/01/12 22:59:38 marius Exp $"); /* * Driver for Altima AC101 10/100 PHY @@ -156,6 +156,19 @@ sc->mii_capabilities = PHY_READ(sc, MII_BMSR) & ma->mii_capmask; device_printf(dev, " "); + +#define ADD(m, c) ifmedia_add(&mii->mii_media, (m), (c), NULL) + if ((PHY_READ(sc, MII_ACPHY_MCTL) & AC_MCTL_FX_SEL) != 0) { + sc->mii_flags |= MIIF_HAVEFIBER; + ADD(IFM_MAKEWORD(IFM_ETHER, IFM_100_FX, 0, sc->mii_inst), + MII_MEDIA_100_TX); + printf("100baseFX, "); + ADD(IFM_MAKEWORD(IFM_ETHER, IFM_100_FX, IFM_FDX, sc->mii_inst), + MII_MEDIA_100_TX_FDX); + printf("100baseFX-FDX, "); + } +#undef ADD + mii_phy_add_media(sc); printf("\n"); ==== //depot/projects/soc2006/intr_filter/dev/mii/acphyreg.h#2 (text+ko) ==== @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/dev/mii/acphyreg.h,v 1.1 2001/02/07 19:57:16 semenu Exp $ + * $FreeBSD: src/sys/dev/mii/acphyreg.h,v 1.2 2007/01/12 22:58:04 marius Exp $ */ #ifndef _DEV_MII_ACPHYREG_H_ @@ -57,20 +57,20 @@ #define MII_ACPHY_MCTL 0x15 /* Mode control */ #define AC_MCTL_FX_SEL 0x0001 /* FX mode */ -#define AC_MCTL_BYP_PCS 0x0001 /* Bypass PCS */ -#define AC_MCTL_SCRMBL 0x0004 /* Data scrambling */ -#define AC_MCTL_REM_LOOP 0x0008 /* Remote loopback */ -#define AC_MCTL_DIS_WDT 0x0010 /* Disable watchdog timer */ -#define AC_MCTL_DIS_REC 0x0020 /* Disable recv error counter */ -#define AC_MCTL_REC_FULL 0x0040 /* Recv error counter full */ -#define AC_MCTL_FRC_FEF 0x0080 /* Force Far End Fault Insert. */ -#define AC_MCTL_DIS_FEF 0x0100 /* Disable FEF Insertion */ -#define AC_MCTL_LED_SEL 0x0200 /* Compat LED config */ -#define AC_MCTL_ALED_SEL 0x0400 /* ActLED RX&TX - RX only */ -#define AC_MCTL_10BT_SEL 0x0800 /* Enable 7-wire interface */ -#define AC_MCTL_DIS_JAB 0x1000 /* Disable jabber */ -#define AC_MCTL_FRC_LINK 0x2000 /* Force TX link up */ -#define AC_MCTL_DIS_NLP 0x4000 /* Disable NLP check */ +#define AC_MCTL_BYP_PCS 0x0002 /* Bypass PCS */ +#define AC_MCTL_SCRMBL 0x0004 /* Data scrambling */ +#define AC_MCTL_REM_LOOP 0x0008 /* Remote loopback */ +#define AC_MCTL_DIS_WDT 0x0010 /* Disable watchdog timer */ +#define AC_MCTL_DIS_REC 0x0020 /* Disable recv error counter */ +#define AC_MCTL_REC_FULL 0x0040 /* Recv error counter full */ +#define AC_MCTL_FRC_FEF 0x0080 /* Force Far End Fault Insert. */ +#define AC_MCTL_DIS_FEF 0x0100 /* Disable FEF Insertion */ +#define AC_MCTL_LED_SEL 0x0200 /* Compat LED config */ +#define AC_MCTL_ALED_SEL 0x0400 /* ActLED RX&TX - RX only */ +#define AC_MCTL_10BT_SEL 0x0800 /* Enable 7-wire interface */ +#define AC_MCTL_DIS_JAB 0x1000 /* Disable jabber */ +#define AC_MCTL_FRC_LINK 0x2000 /* Force TX link up */ +#define AC_MCTL_DIS_NLP 0x4000 /* Disable NLP check */ #define MII_ACPHY_REC 0x18 /* Recv error counter */ ==== //depot/projects/soc2006/intr_filter/dev/mii/amphy.c#4 (text+ko) ==== @@ -31,7 +31,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/mii/amphy.c,v 1.21 2006/12/02 21:21:16 marius Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/mii/amphy.c,v 1.22 2007/01/12 22:27:46 marius Exp $"); /* * driver for AMD AM79c873 PHYs @@ -120,7 +120,7 @@ #if 0 ADD(IFM_MAKEWORD(IFM_ETHER, IFM_100_TX, IFM_LOOP, sc->mii_inst), - BMCR_LOOP|BMCR_S100); + MII_MEDIA_100_TX); #endif mii_phy_reset(sc); ==== //depot/projects/soc2006/intr_filter/dev/mii/exphy.c#3 (text+ko) ==== @@ -67,7 +67,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/mii/exphy.c,v 1.21 2006/07/03 02:53:39 yongari Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/mii/exphy.c,v 1.23 2007/01/12 23:17:43 marius Exp $"); /* * driver for 3Com internal PHYs @@ -114,36 +114,27 @@ static int exphy_service(struct mii_softc *, struct mii_data *, int); static void exphy_reset(struct mii_softc *); +/* + * Some 3Com internal PHYs report zero for OUI and model, others use + * actual values. + * Note that the 3Com internal PHYs having OUI 0x105a and model 0 are + * handled fine by ukphy(4); they can be isolated and don't require + * special treatment after reset. + */ +static const struct mii_phydesc exphys[] = { + { 0, 0, "3Com internal media interface" }, + MII_PHY_DESC(BROADCOM, 3C905C), + MII_PHY_END +}; + static int exphy_probe(device_t dev) { - struct mii_attach_args *ma; - device_t parent; - ma = device_get_ivars(dev); - parent = device_get_parent(device_get_parent(dev)); - - /* - * Argh, 3Com PHY reports oui == 0 model == 0! - */ - if ((MII_OUI(ma->mii_id1, ma->mii_id2) != 0 || - MII_MODEL(ma->mii_id2) != 0) && - (MII_OUI(ma->mii_id1, ma->mii_id2) != MII_OUI_BROADCOM || - MII_MODEL(ma->mii_id2) != MII_MODEL_BROADCOM_3C905C)) - return (ENXIO); - - /* - * Make sure the parent is an `ex'. - */ - if (strcmp(device_get_name(parent), "xl") != 0) - return (ENXIO); - - if (MII_OUI(ma->mii_id1, ma->mii_id2) == 0) - device_set_desc(dev, "3Com internal media interface"); - else - device_set_desc(dev, MII_STR_BROADCOM_3C905C); - - return (BUS_PROBE_DEFAULT); + if (strcmp(device_get_name(device_get_parent(device_get_parent(dev))), + "xl") == 0) + return (mii_phy_dev_probe(dev, exphys, BUS_PROBE_DEFAULT)); + return (ENXIO); } static int @@ -164,7 +155,7 @@ */ if (mii->mii_instance != 0) { device_printf(dev, "ignoring this PHY, non-zero instance\n"); - return(ENXIO); + return (ENXIO); } LIST_INSERT_HEAD(&mii->mii_phys, sc, mii_list); @@ -179,13 +170,8 @@ #define ADD(m, c) ifmedia_add(&mii->mii_media, (m), (c), NULL) -#if 0 /* See above. */ - ADD(IFM_MAKEWORD(IFM_ETHER, IFM_NONE, 0, sc->mii_inst), - BMCR_ISO); -#endif - ADD(IFM_MAKEWORD(IFM_ETHER, IFM_100_TX, IFM_LOOP, sc->mii_inst), - BMCR_LOOP|BMCR_S100); + MII_MEDIA_100_TX); exphy_reset(sc); @@ -196,7 +182,7 @@ printf("\n"); #undef ADD MIIBUS_MEDIAINIT(sc->mii_dev); - return(0); + return (0); } static int @@ -232,12 +218,6 @@ return (0); /* - * Only used for autonegotiation. - */ - if (IFM_SUBTYPE(ife->ifm_media) != IFM_AUTO) - break; - - /* * The 3Com PHY's autonegotiation doesn't need to be * kicked; it continues in the background. */ ==== //depot/projects/soc2006/intr_filter/dev/mii/inphy.c#4 (text+ko) ==== @@ -29,7 +29,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/mii/inphy.c,v 1.16 2006/12/02 15:32:33 marius Exp $"); >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Mon Jan 15 22:49:11 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 7660A16A417; Mon, 15 Jan 2007 22:49:11 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 51F8016A407 for ; Mon, 15 Jan 2007 22:49:11 +0000 (UTC) (envelope-from jkim@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 43B6613C45E for ; Mon, 15 Jan 2007 22:49:11 +0000 (UTC) (envelope-from jkim@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0FMnBbQ031768 for ; Mon, 15 Jan 2007 22:49:11 GMT (envelope-from jkim@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0FMnB1i031765 for perforce@freebsd.org; Mon, 15 Jan 2007 22:49:11 GMT (envelope-from jkim@freebsd.org) Date: Mon, 15 Jan 2007 22:49:11 GMT Message-Id: <200701152249.l0FMnB1i031765@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to jkim@freebsd.org using -f From: Jung-uk Kim To: Perforce Change Reviews Cc: Subject: PERFORCE change 112953 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 15 Jan 2007 22:49:11 -0000 http://perforce.freebsd.org/chv.cgi?CH=112953 Change 112953 by jkim@jkim_hammer on 2007/01/15 22:48:53 Remove unused len and fix build on amd64. Affected files ... .. //depot/projects/linuxolator/src/sys/compat/linux/linux_file.c#10 edit Differences ... ==== //depot/projects/linuxolator/src/sys/compat/linux/linux_file.c#10 (text+ko) ==== @@ -206,10 +206,10 @@ linux_openat(struct thread *td, struct linux_openat_args *args) { char *newpath, *oldpath, *freebuf = NULL, *path; - int error, len; + int error; oldpath = malloc(MAXPATHLEN, M_TEMP, M_WAITOK); - error = copyinstr(args->filename, oldpath, MAXPATHLEN, &len); + error = copyinstr(args->filename, oldpath, MAXPATHLEN, NULL); #ifdef DEBUG if (ldebug(openat)) From owner-p4-projects@FreeBSD.ORG Mon Jan 15 22:50:13 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 9A0EF16A416; Mon, 15 Jan 2007 22:50:13 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 5B58916A40F for ; Mon, 15 Jan 2007 22:50:13 +0000 (UTC) (envelope-from kmacy@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 3CE2113C441 for ; Mon, 15 Jan 2007 22:50:13 +0000 (UTC) (envelope-from kmacy@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0FMoDip031898 for ; Mon, 15 Jan 2007 22:50:13 GMT (envelope-from kmacy@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0FMoD5h031895 for perforce@freebsd.org; Mon, 15 Jan 2007 22:50:13 GMT (envelope-from kmacy@freebsd.org) Date: Mon, 15 Jan 2007 22:50:13 GMT Message-Id: <200701152250.l0FMoD5h031895@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to kmacy@freebsd.org using -f From: Kip Macy To: Perforce Change Reviews Cc: Subject: PERFORCE change 112954 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 15 Jan 2007 22:50:13 -0000 http://perforce.freebsd.org/chv.cgi?CH=112954 Change 112954 by kmacy@kmacy_serendipity:sam_wifi on 2007/01/15 22:49:30 fix panic in iwi_node_free caused by ic_ifp not being set when media_init is indirectly called from attach, by moving initialization of ic_ifp earlier Affected files ... .. //depot/projects/wifi/sys/dev/iwi/if_iwi.c#20 edit Differences ... ==== //depot/projects/wifi/sys/dev/iwi/if_iwi.c#20 (text+ko) ==== @@ -378,6 +378,7 @@ device_printf(dev, "can not if_alloc()\n"); goto fail; } + ic->ic_ifp = ifp; ifp->if_softc = sc; if_initname(ifp, device_get_name(dev), device_get_unit(dev)); ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST; @@ -389,7 +390,6 @@ ifp->if_snd.ifq_drv_maxlen = IFQ_MAXLEN; IFQ_SET_READY(&ifp->if_snd); - ic->ic_ifp = ifp; ic->ic_wme.wme_update = iwi_wme_update; ic->ic_phytype = IEEE80211_T_OFDM; /* not only, but not used */ ic->ic_opmode = IEEE80211_M_STA; /* default to BSS mode */ From owner-p4-projects@FreeBSD.ORG Mon Jan 15 22:51:15 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 5AF4316A415; Mon, 15 Jan 2007 22:51:15 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 398F016A412 for ; Mon, 15 Jan 2007 22:51:15 +0000 (UTC) (envelope-from kmacy@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 2B6B613C459 for ; Mon, 15 Jan 2007 22:51:15 +0000 (UTC) (envelope-from kmacy@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0FMpFKL032162 for ; Mon, 15 Jan 2007 22:51:15 GMT (envelope-from kmacy@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0FMpEAb032151 for perforce@freebsd.org; Mon, 15 Jan 2007 22:51:14 GMT (envelope-from kmacy@freebsd.org) Date: Mon, 15 Jan 2007 22:51:14 GMT Message-Id: <200701152251.l0FMpEAb032151@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to kmacy@freebsd.org using -f From: Kip Macy To: Perforce Change Reviews Cc: Subject: PERFORCE change 112955 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 15 Jan 2007 22:51:15 -0000 http://perforce.freebsd.org/chv.cgi?CH=112955 Change 112955 by kmacy@kmacy_serendipity:sam_wifi on 2007/01/15 22:50:22 add ieee80211_regdomain.c to wlan module Affected files ... .. //depot/projects/wifi/sys/modules/wlan/Makefile#7 edit Differences ... ==== //depot/projects/wifi/sys/modules/wlan/Makefile#7 (text+ko) ==== @@ -6,7 +6,7 @@ SRCS= ieee80211.c ieee80211_crypto.c ieee80211_crypto_none.c \ ieee80211_freebsd.c ieee80211_input.c ieee80211_ioctl.c \ ieee80211_node.c ieee80211_output.c ieee80211_power.c \ - ieee80211_proto.c ieee80211_scan.c + ieee80211_proto.c ieee80211_scan.c ieee80211_regdomain.c SRCS+= bus_if.h device_if.h opt_compat.h opt_inet.h opt_ipx.h .if !defined(KERNBUILDDIR) From owner-p4-projects@FreeBSD.ORG Mon Jan 15 22:55:23 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id C045316A47C; Mon, 15 Jan 2007 22:55:23 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 7B72E16A412 for ; Mon, 15 Jan 2007 22:55:23 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 6B67E13C45A for ; Mon, 15 Jan 2007 22:55:23 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0FMtNJb033420 for ; Mon, 15 Jan 2007 22:55:23 GMT (envelope-from hselasky@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0FMtKId033379 for perforce@freebsd.org; Mon, 15 Jan 2007 22:55:20 GMT (envelope-from hselasky@FreeBSD.org) Date: Mon, 15 Jan 2007 22:55:20 GMT Message-Id: <200701152255.l0FMtKId033379@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to hselasky@FreeBSD.org using -f From: Hans Petter Selasky To: Perforce Change Reviews Cc: Subject: PERFORCE change 112957 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 15 Jan 2007 22:55:24 -0000 http://perforce.freebsd.org/chv.cgi?CH=112957 Change 112957 by hselasky@hselasky_mini_itx on 2007/01/15 22:54:41 Fix problems and memory leaks regarding calls to "device_get_children()". Affected files ... .. //depot/projects/usb/src/sys/amd64/pci/pci_bus.c#2 edit .. //depot/projects/usb/src/sys/compat/linsysfs/linsysfs.c#2 edit .. //depot/projects/usb/src/sys/compat/ndis/subr_ntoskrnl.c#2 edit .. //depot/projects/usb/src/sys/dev/acpica/acpi.c#3 edit .. //depot/projects/usb/src/sys/dev/acpica/acpi_pci.c#2 edit .. //depot/projects/usb/src/sys/dev/ata/ata-all.c#3 edit .. //depot/projects/usb/src/sys/dev/ata/ata-cbus.c#2 edit .. //depot/projects/usb/src/sys/dev/ata/ata-chipset.c#3 edit .. //depot/projects/usb/src/sys/dev/ata/ata-disk.c#3 edit .. //depot/projects/usb/src/sys/dev/ata/ata-pci.c#2 edit .. //depot/projects/usb/src/sys/dev/ata/atapi-cam.c#2 edit .. //depot/projects/usb/src/sys/dev/cardbus/cardbus.c#3 edit .. //depot/projects/usb/src/sys/dev/cardbus/cardbus_device.c#2 edit .. //depot/projects/usb/src/sys/dev/esp/esp_sbus.c#2 edit .. //depot/projects/usb/src/sys/dev/hme/if_hme_pci.c#2 edit .. //depot/projects/usb/src/sys/dev/mii/mlphy.c#3 edit .. //depot/projects/usb/src/sys/dev/mii/tlphy.c#3 edit .. //depot/projects/usb/src/sys/dev/pccard/pccard_device.c#2 edit .. //depot/projects/usb/src/sys/dev/pccbb/pccbb.c#3 edit .. //depot/projects/usb/src/sys/dev/pci/pci.c#3 edit .. //depot/projects/usb/src/sys/dev/ppbus/ppbconf.c#2 edit .. //depot/projects/usb/src/sys/dev/ppc/ppc.c#2 edit .. //depot/projects/usb/src/sys/dev/sound/pci/csa.c#2 edit .. //depot/projects/usb/src/sys/dev/sound/pci/emu10kx.c#2 edit .. //depot/projects/usb/src/sys/dev/spibus/spibus.c#2 edit .. //depot/projects/usb/src/sys/i386/pci/pci_bus.c#2 edit .. //depot/projects/usb/src/sys/isa/isa_common.c#3 edit .. //depot/projects/usb/src/sys/kern/kern_cpu.c#2 edit .. //depot/projects/usb/src/sys/kern/subr_bus.c#3 edit .. //depot/projects/usb/src/sys/pci/agp.c#3 edit .. //depot/projects/usb/src/sys/pci/agp_i810.c#3 edit .. //depot/projects/usb/src/sys/pci/if_sis.c#3 edit .. //depot/projects/usb/src/sys/sys/bus.h#3 edit Differences ... ==== //depot/projects/usb/src/sys/amd64/pci/pci_bus.c#2 (text+ko) ==== ==== //depot/projects/usb/src/sys/compat/linsysfs/linsysfs.c#2 (text) ==== @@ -214,10 +214,12 @@ } } - device_get_children(dev, &children, &nchildren); - for (i = 0; i < nchildren; i++) { + if (!device_get_children(dev, &children, &nchildren)) { + for (i = 0; i < nchildren; i++) { if (children[i]) linsysfs_run_bus(children[i], dir, scsi, new_path, prefix); + } + free(children, M_TEMP); } if (new_path != path) free(new_path, M_TEMP); ==== //depot/projects/usb/src/sys/compat/ndis/subr_ntoskrnl.c#2 (text+ko) ==== @@ -2662,22 +2662,17 @@ * level of recursion to inspect them. */ - device_get_children(dev, &children, &childcnt); - - for (i = 0; i < childcnt; i++) { + if (!device_get_children(dev, &children, &childcnt)) { + for (i = 0; i < childcnt; i++) { matching_dev = ntoskrnl_finddev(children[i], paddr, res); if (matching_dev != NULL) { free(children, M_TEMP); return(matching_dev); } + } + free(children, M_TEMP); } - - /* Won't somebody please think of the children! */ - - if (children != NULL) - free(children, M_TEMP); - return(NULL); } ==== //depot/projects/usb/src/sys/dev/acpica/acpi.c#3 (text+ko) ==== @@ -625,8 +625,8 @@ * device has an _SxD method for the next sleep state, use that power * state instead. */ - device_get_children(dev, &devlist, &numdevs); - for (i = 0; i < numdevs; i++) { + if (!device_get_children(dev, &devlist, &numdevs)) { + for (i = 0; i < numdevs; i++) { /* If the device is not attached, we've powered it down elsewhere. */ child = devlist[i]; if (!device_is_attached(child)) @@ -641,8 +641,9 @@ child, &pstate); if ((error == 0 || error == ESRCH) && acpi_do_powerstate) pci_set_powerstate(child, pstate); + } + free(devlist, M_TEMP); } - free(devlist, M_TEMP); error = 0; return (error); @@ -661,16 +662,17 @@ * Put all devices in D0 before resuming them. Call _S0D on each one * since some systems expect this. */ - device_get_children(dev, &devlist, &numdevs); - for (i = 0; i < numdevs; i++) { + if (!device_get_children(dev, &devlist, &numdevs)) { + for (i = 0; i < numdevs; i++) { child = devlist[i]; handle = acpi_get_handle(child); if (handle) AcpiEvaluateObject(handle, "_S0D", NULL, NULL); if (device_is_attached(child) && acpi_do_powerstate) pci_set_powerstate(child, PCI_POWERSTATE_D0); + } + free(devlist, M_TEMP); } - free(devlist, M_TEMP); return (bus_generic_resume(dev)); } @@ -761,16 +763,17 @@ int i, numdevs; DEVICE_IDENTIFY(driver, dev); - device_get_children(dev, &devlist, &numdevs); - for (i = 0; i < numdevs; i++) { + if (!device_get_children(dev, &devlist, &numdevs)) { + for (i = 0; i < numdevs; i++) { child = devlist[i]; if (device_get_state(child) == DS_NOTPRESENT) { /* pci_set_powerstate(child, PCI_POWERSTATE_D0); */ if (device_probe_and_attach(child) != 0) ; /* pci_set_powerstate(child, PCI_POWERSTATE_D3); */ } + } + free(devlist, M_TEMP); } - free(devlist, M_TEMP); } /* Location hint for devctl(8) */ @@ -2404,7 +2407,7 @@ error = device_get_children(dev, &devlist, &numdevs); if (error != 0 || numdevs == 0) { - if (numdevs == 0) + if (error == 0) free(devlist, M_TEMP); return (error); } ==== //depot/projects/usb/src/sys/dev/acpica/acpi_pci.c#2 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/ata/ata-all.c#3 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/ata/ata-cbus.c#2 (text+ko) ==== @@ -261,12 +261,13 @@ int count, i; /* find channel number on this controller */ - device_get_children(device_get_parent(dev), &children, &count); - for (i = 0; i < count; i++) { + if (!device_get_children(device_get_parent(dev), &children, &count)) { + for (i = 0; i < count; i++) { if (children[i] == dev) ch->unit = i; + } + free(children, M_TEMP); } - free(children, M_TEMP); /* setup the resource vectors */ for (i = ATA_DATA; i <= ATA_COMMAND; i ++) { ==== //depot/projects/usb/src/sys/dev/ata/ata-chipset.c#3 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/ata/ata-disk.c#3 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/ata/ata-pci.c#2 (text+ko) ==== @@ -539,12 +539,13 @@ bzero(ch, sizeof(struct ata_channel)); /* find channel number on this controller */ - device_get_children(device_get_parent(dev), &children, &count); - for (i = 0; i < count; i++) { + if (!device_get_children(device_get_parent(dev), &children, &count)) { + for (i = 0; i < count; i++) { if (children[i] == dev) ch->unit = i; + } + free(children, M_TEMP); } - free(children, M_TEMP); sprintf(buffer, "ATA channel %d", ch->unit); device_set_desc_copy(dev, buffer); ==== //depot/projects/usb/src/sys/dev/ata/atapi-cam.c#2 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/cardbus/cardbus.c#3 (text+ko) ==== @@ -217,7 +217,8 @@ int tmp; int err = 0; - device_get_children(cbdev, &devlist, &numdevs); + if (device_get_children(cbdev, &devlist, &numdevs)) + return ENOENT; if (numdevs == 0) { free(devlist, M_TEMP); @@ -251,7 +252,8 @@ struct cardbus_devinfo *dinfo; DEVICE_IDENTIFY(driver, cbdev); - device_get_children(cbdev, &devlist, &numdevs); + if (device_get_children(cbdev, &devlist, &numdevs)) + return; /* * If there are no drivers attached, but there are children, * then power the card up. ==== //depot/projects/usb/src/sys/dev/cardbus/cardbus_device.c#2 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/esp/esp_sbus.c#2 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/hme/if_hme_pci.c#2 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/mii/mlphy.c#3 (text+ko) ==== @@ -195,14 +195,15 @@ * See if there's another PHY on this bus with us. * If so, we may need it for 10Mbps modes. */ - device_get_children(msc->ml_mii.mii_dev, &devlist, &devs); - for (i = 0; i < devs; i++) { + if (!device_get_children(msc->ml_mii.mii_dev, &devlist, &devs)) { + for (i = 0; i < devs; i++) { if (strcmp(device_get_name(devlist[i]), "mlphy")) { other = device_get_softc(devlist[i]); break; } + } + free(devlist, M_TEMP); } - free(devlist, M_TEMP); switch (cmd) { case MII_POLLSTAT: @@ -404,14 +405,15 @@ int devs, i; /* See if there's another PHY on the bus with us. */ - device_get_children(msc->ml_mii.mii_dev, &devlist, &devs); - for (i = 0; i < devs; i++) { + if (!device_get_children(msc->ml_mii.mii_dev, &devlist, &devs)) { + for (i = 0; i < devs; i++) { if (strcmp(device_get_name(devlist[i]), "mlphy")) { other = device_get_softc(devlist[i]); break; } + } + free(devlist, M_TEMP); } - free(devlist, M_TEMP); if (other == NULL) return; ==== //depot/projects/usb/src/sys/dev/mii/tlphy.c#3 (text+ko) ==== @@ -168,15 +168,16 @@ device_t *devlist; int devs, i; - device_get_children(sc->sc_mii.mii_dev, &devlist, &devs); - for (i = 0; i < devs; i++) { + if (!device_get_children(sc->sc_mii.mii_dev, &devlist, &devs)) { + for (i = 0; i < devs; i++) { if (strcmp(device_get_name(devlist[i]), "tlphy")) { other = device_get_softc(devlist[i]); capmask &= ~other->mii_capabilities; break; } + } + free(devlist, M_TEMP); } - free(devlist, M_TEMP); } mii->mii_instance++; ==== //depot/projects/usb/src/sys/dev/pccard/pccard_device.c#2 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/pccbb/pccbb.c#3 (text+ko) ==== @@ -302,10 +302,11 @@ * for the kldload/unload case to work. If we failed to do that, then * we'd get duplicate devices when cbb.ko was reloaded. */ - device_get_children(brdev, &devlist, &numdevs); - for (tmp = 0; tmp < numdevs; tmp++) - device_delete_child(brdev, devlist[tmp]); - free(devlist, M_TEMP); + if (!device_get_children(brdev, &devlist, &numdevs)) { + for (tmp = 0; tmp < numdevs; tmp++) + device_delete_child(brdev, devlist[tmp]); + free(devlist, M_TEMP); + } /* Turn off the interrupts */ cbb_set(sc, CBB_SOCKET_MASK, 0); @@ -413,14 +414,15 @@ int wake = 0; DEVICE_IDENTIFY(driver, brdev); - device_get_children(brdev, &devlist, &numdevs); - for (tmp = 0; tmp < numdevs; tmp++) { + if (!device_get_children(brdev, &devlist, &numdevs)) { + for (tmp = 0; tmp < numdevs; tmp++) { dev = devlist[tmp]; if (device_get_state(dev) == DS_NOTPRESENT && device_probe_and_attach(dev) == 0) wake++; + } + free(devlist, M_TEMP); } - free(devlist, M_TEMP); if (wake > 0) { mtx_lock(&sc->mtx); ==== //depot/projects/usb/src/sys/dev/pci/pci.c#3 (text+ko) ==== @@ -1193,7 +1193,8 @@ acpi_dev = NULL; if (pci_do_power_resume) acpi_dev = devclass_get_device(devclass_find("acpi"), 0); - device_get_children(dev, &devlist, &numdevs); + if (device_get_children(dev, &devlist, &numdevs)) + return ENOMEM; for (i = 0; i < numdevs; i++) { child = devlist[i]; dinfo = (struct pci_devinfo *) device_get_ivars(child); @@ -1240,7 +1241,8 @@ acpi_dev = NULL; if (pci_do_power_resume) acpi_dev = devclass_get_device(devclass_find("acpi"), 0); - device_get_children(dev, &devlist, &numdevs); + if (device_get_children(dev, &devlist, &numdevs)) + return ENOMEM; for (i = 0; i < numdevs; i++) { /* * Notify ACPI we're going to D0 but ignore the result. If @@ -1289,8 +1291,8 @@ if (bootverbose) device_printf(dev, "driver added\n"); DEVICE_IDENTIFY(driver, dev); - device_get_children(dev, &devlist, &numdevs); - for (i = 0; i < numdevs; i++) { + if (!device_get_children(dev, &devlist, &numdevs)) { + for (i = 0; i < numdevs; i++) { child = devlist[i]; if (device_get_state(child) != DS_NOTPRESENT) continue; @@ -1302,8 +1304,9 @@ pci_cfg_restore(child, dinfo); if (device_probe_and_attach(child) != 0) pci_cfg_save(child, dinfo, 1); + } + free(devlist, M_TEMP); } - free(devlist, M_TEMP); } int ==== //depot/projects/usb/src/sys/dev/ppbus/ppbconf.c#2 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/ppc/ppc.c#2 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/sound/pci/csa.c#2 (text+ko) ==== @@ -120,8 +120,8 @@ for (i = 0, busp = pci_devices; i < pci_count; i++, busp++) { pci_childcount = 0; - device_get_children(*busp, &pci_children, &pci_childcount); - for (j = 0, childp = pci_children; j < pci_childcount; j++, childp++) { + if (!device_get_children(*busp, &pci_children, &pci_childcount)) { + for (j = 0, childp = pci_children; j < pci_childcount; j++, childp++) { if (pci_get_vendor(*childp) == 0x8086 && pci_get_device(*childp) == 0x7113) { port = (pci_read_config(*childp, 0x41, 1) << 8) + 0x10; /* XXX */ @@ -135,8 +135,9 @@ free(pci_children, M_TEMP); return 0; } + } + free(pci_children, M_TEMP); } - free(pci_children, M_TEMP); } free(pci_devices, M_TEMP); ==== //depot/projects/usb/src/sys/dev/sound/pci/emu10kx.c#2 (text+ko) ==== @@ -2949,12 +2949,13 @@ r = device_delete_child(dev, sc->midi[1]); if (r) return (r); - (void)device_get_children(dev, &childlist, &devcount); - for (i = 0; i < devcount - 1; i++) { + if (!device_get_children(dev, &childlist, &devcount)) { + for (i = 0; i < devcount - 1; i++) { /* XXX why is there "-1" here ? */ device_printf(dev, "removing stale child %d (unit %d)\n", i, device_get_unit(childlist[i])); device_delete_child(dev, childlist[i]); + } + free(childlist, M_TEMP); } - free(childlist, M_TEMP); /* shutdown chip */ emu_uninit(sc); ==== //depot/projects/usb/src/sys/dev/spibus/spibus.c#2 (text+ko) ==== ==== //depot/projects/usb/src/sys/i386/pci/pci_bus.c#2 (text+ko) ==== ==== //depot/projects/usb/src/sys/isa/isa_common.c#3 (text+ko) ==== ==== //depot/projects/usb/src/sys/kern/kern_cpu.c#2 (text+ko) ==== ==== //depot/projects/usb/src/sys/kern/subr_bus.c#3 (text+ko) ==== @@ -1849,6 +1849,7 @@ device_get_children(device_t dev, device_t **devlistp, int *devcountp) { int count; + int n; device_t child; device_t *list; @@ -1857,14 +1858,31 @@ count++; } - list = malloc(count * sizeof(device_t), M_TEMP, M_NOWAIT|M_ZERO); - if (!list) + if (count == 0) { + /* avoid zero size allocation */ + n = 1 * sizeof(device_t); + } else { + n = count * sizeof(device_t); + } + + list = malloc(n, M_TEMP, M_NOWAIT|M_ZERO); + if (!list) { + *devlistp = NULL; + *devcountp = 0; return (ENOMEM); + } - count = 0; + n = 0; TAILQ_FOREACH(child, &dev->children, link) { - list[count] = child; - count++; + if (n < count) { + list[n] = child; + n++; + } + } + + if (n != count) { + printf("device_get_children: Number of devices changed " + "from %d to %d!\n", count, n); } *devlistp = list; ==== //depot/projects/usb/src/sys/pci/agp.c#3 (text+ko) ==== @@ -118,8 +118,8 @@ bus = devclass_get_device(pci, busnum); if (!bus) continue; - device_get_children(bus, &kids, &numkids); - for (i = 0; i < numkids; i++) { + if (!device_get_children(bus, &kids, &numkids)) { + for (i = 0; i < numkids; i++) { dev = kids[i]; if (pci_get_class(dev) == PCIC_DISPLAY && pci_get_subclass(dev) == PCIS_DISPLAY_VGA) @@ -128,8 +128,9 @@ return dev; } + } + free(kids, M_TEMP); } - free(kids, M_TEMP); } return 0; ==== //depot/projects/usb/src/sys/pci/agp_i810.c#3 (text+ko) ==== ==== //depot/projects/usb/src/sys/pci/if_sis.c#3 (text+ko) ==== @@ -349,20 +349,22 @@ for (i = 0, busp = pci_devices; i < pci_count; i++, busp++) { pci_childcount = 0; - device_get_children(*busp, &pci_children, &pci_childcount); - for (j = 0, childp = pci_children; + if (!device_get_children(*busp, &pci_children, &pci_childcount)) { + for (j = 0, childp = pci_children; j < pci_childcount; j++, childp++) { if (pci_get_vendor(*childp) == SIS_VENDORID && pci_get_device(*childp) == 0x0008) { child = *childp; + free(pci_children, M_TEMP); goto done; } + } + free(pci_children, M_TEMP); } } done: free(pci_devices, M_TEMP); - free(pci_children, M_TEMP); return(child); } ==== //depot/projects/usb/src/sys/sys/bus.h#3 (text+ko) ==== From owner-p4-projects@FreeBSD.ORG Mon Jan 15 23:13:48 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id B6ADF16A47E; Mon, 15 Jan 2007 23:13:48 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 699CE16A40F for ; Mon, 15 Jan 2007 23:13:48 +0000 (UTC) (envelope-from kmacy@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 4301B13C448 for ; Mon, 15 Jan 2007 23:13:48 +0000 (UTC) (envelope-from kmacy@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0FNDmEu037731 for ; Mon, 15 Jan 2007 23:13:48 GMT (envelope-from kmacy@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0FNDma8037728 for perforce@freebsd.org; Mon, 15 Jan 2007 23:13:48 GMT (envelope-from kmacy@freebsd.org) Date: Mon, 15 Jan 2007 23:13:48 GMT Message-Id: <200701152313.l0FNDma8037728@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to kmacy@freebsd.org using -f From: Kip Macy To: Perforce Change Reviews Cc: Subject: PERFORCE change 112958 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 15 Jan 2007 23:13:49 -0000 http://perforce.freebsd.org/chv.cgi?CH=112958 Change 112958 by kmacy@kmacy_serendipity:sam_wifi on 2007/01/15 23:13:46 create general config with all 802.11 functionality in modules Affected files ... .. //depot/projects/wifi/sys/i386/conf/WIFI_DEBUG#1 add Differences ... From owner-p4-projects@FreeBSD.ORG Mon Jan 15 23:15:52 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id E5CF316A417; Mon, 15 Jan 2007 23:15:51 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id BF11F16A40F for ; Mon, 15 Jan 2007 23:15:51 +0000 (UTC) (envelope-from piso@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id B09A513C468 for ; Mon, 15 Jan 2007 23:15:51 +0000 (UTC) (envelope-from piso@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0FNFpP0037973 for ; Mon, 15 Jan 2007 23:15:51 GMT (envelope-from piso@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0FNFpsm037970 for perforce@freebsd.org; Mon, 15 Jan 2007 23:15:51 GMT (envelope-from piso@freebsd.org) Date: Mon, 15 Jan 2007 23:15:51 GMT Message-Id: <200701152315.l0FNFpsm037970@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to piso@freebsd.org using -f From: Paolo Pisati To: Perforce Change Reviews Cc: Subject: PERFORCE change 112959 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 15 Jan 2007 23:15:52 -0000 http://perforce.freebsd.org/chv.cgi?CH=112959 Change 112959 by piso@piso_newluxor on 2007/01/15 23:15:43 Looks like we don't need intr_table_lock while scanning through interrupt_sources[]. While here, do some spacing and indentation according to style. Affected files ... .. //depot/projects/soc2006/intr_filter/amd64/amd64/intr_machdep.c#21 edit Differences ... ==== //depot/projects/soc2006/intr_filter/amd64/amd64/intr_machdep.c#21 (text+ko) ==== @@ -227,10 +227,13 @@ walk_intr_src(void) { struct intsrc *isrc; static int i = 0; + int j; - for (; iis_event != NULL) return (isrc->is_event); } @@ -242,9 +245,8 @@ intr_callout_reset(void) { - mtx_lock_spin(&intr_table_lock); - callout_reset(&stray_callout_handle, hz, &stray_detection, &walk_intr_src); - mtx_unlock_spin(&intr_table_lock); + callout_reset(&stray_callout_handle, hz, &stray_detection, + &walk_intr_src); } void @@ -397,7 +399,7 @@ intrcnt_index = 1; STAILQ_INIT(&pics); mtx_init(&intr_table_lock, "intr table", NULL, MTX_SPIN); - callout_init_mtx(&stray_callout_handle, &intr_table_lock, 0); + callout_init(&stray_callout_handle, 1); } SYSINIT(intr_init, SI_SUB_INTR, SI_ORDER_FIRST, intr_init, NULL) From owner-p4-projects@FreeBSD.ORG Mon Jan 15 23:59:48 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id D3F7316A47E; Mon, 15 Jan 2007 23:59:47 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id A5BBE16A416 for ; Mon, 15 Jan 2007 23:59:47 +0000 (UTC) (envelope-from kmacy@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 9733F13C459 for ; Mon, 15 Jan 2007 23:59:47 +0000 (UTC) (envelope-from kmacy@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0FNxlw4044509 for ; Mon, 15 Jan 2007 23:59:47 GMT (envelope-from kmacy@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0FNxlPs044506 for perforce@freebsd.org; Mon, 15 Jan 2007 23:59:47 GMT (envelope-from kmacy@freebsd.org) Date: Mon, 15 Jan 2007 23:59:47 GMT Message-Id: <200701152359.l0FNxlPs044506@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to kmacy@freebsd.org using -f From: Kip Macy To: Perforce Change Reviews Cc: Subject: PERFORCE change 112961 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 15 Jan 2007 23:59:48 -0000 http://perforce.freebsd.org/chv.cgi?CH=112961 Change 112961 by kmacy@kmacy_serendipity:sam_wifi on 2007/01/15 23:59:10 remove check forbidding INTR_FAST on cardbus, evidently it isn't needed any more Affected files ... .. //depot/projects/wifi/sys/dev/pccbb/pccbb.c#12 edit Differences ... ==== //depot/projects/wifi/sys/dev/pccbb/pccbb.c#12 (text+ko) ==== @@ -354,14 +354,6 @@ struct cbb_softc *sc = device_get_softc(dev); int err; - /* - * Well, this is no longer strictly true. You can have multiple - * FAST ISRs, but can't mix fast and slow, so we have to assume - * least common denominator until the base system supports mixing - * and matching better. - */ - if ((flags & INTR_FAST) != 0) - return (EINVAL); ih = malloc(sizeof(struct cbb_intrhand), M_DEVBUF, M_NOWAIT); if (ih == NULL) return (ENOMEM); From owner-p4-projects@FreeBSD.ORG Tue Jan 16 00:16:11 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 111C116A417; Tue, 16 Jan 2007 00:16:11 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id D4D1C16A407 for ; Tue, 16 Jan 2007 00:16:10 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id C679013C459 for ; Tue, 16 Jan 2007 00:16:10 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0G0GAl1048801 for ; Tue, 16 Jan 2007 00:16:10 GMT (envelope-from hselasky@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0G0GAVC048798 for perforce@freebsd.org; Tue, 16 Jan 2007 00:16:10 GMT (envelope-from hselasky@FreeBSD.org) Date: Tue, 16 Jan 2007 00:16:10 GMT Message-Id: <200701160016.l0G0GAVC048798@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to hselasky@FreeBSD.org using -f From: Hans Petter Selasky To: Perforce Change Reviews Cc: Subject: PERFORCE change 112964 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 16 Jan 2007 00:16:11 -0000 http://perforce.freebsd.org/chv.cgi?CH=112964 Change 112964 by hselasky@hselasky_mini_itx on 2007/01/16 00:16:00 New USB detach order: Top to bottom instead of bottom to top. This lets the USB device drivers choose when to detach the children from the "device_detach" bus method. For example some APIs like the MII-bus API requires certain steps to be taken before it can be detached. In general this is about preventing "downcalls" after that the child has been detached. If the child is detached before the "device_detach" method of the parent is invoked, there is no easy way to know when to stop "downcalls" in the device hierarchy. Affected files ... .. //depot/projects/usb/src/sys/dev/usb/ehci_pci.c#11 edit .. //depot/projects/usb/src/sys/dev/usb/ohci_pci.c#11 edit .. //depot/projects/usb/src/sys/dev/usb/uhci_pci.c#10 edit .. //depot/projects/usb/src/sys/dev/usb/uhub.c#8 edit .. //depot/projects/usb/src/sys/dev/usb/usb.c#9 edit .. //depot/projects/usb/src/sys/dev/usb/usb_subr.c#22 edit .. //depot/projects/usb/src/sys/dev/usb/usb_subr.h#26 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb/ehci_pci.c#11 (text+ko) ==== @@ -88,6 +88,13 @@ static void ehci_pci_givecontroller(device_t self); static void ehci_pci_takecontroller(device_t self); +static device_probe_t ehci_pci_probe; +static device_attach_t ehci_pci_attach; +static device_detach_t ehci_pci_detach; +static device_suspend_t ehci_pci_suspend; +static device_resume_t ehci_pci_resume; +static device_shutdown_t ehci_pci_shutdown; + static int ehci_pci_suspend(device_t self) { @@ -200,9 +207,6 @@ } static int -ehci_pci_detach(device_t self); - -static int ehci_pci_attach(device_t self) { ehci_softc_t *sc = device_get_softc(self); @@ -364,10 +368,14 @@ if(sc->sc_bus.bdev) { + device_detach(sc->sc_bus.bdev); device_delete_child(self, sc->sc_bus.bdev); sc->sc_bus.bdev = NULL; } + /* during module unload there are lots of children leftover */ + device_delete_all_children(self); + pci_disable_busmaster(self); /* ==== //depot/projects/usb/src/sys/dev/usb/ohci_pci.c#11 (text+ko) ==== @@ -80,10 +80,11 @@ #define PCI_OHCI_BASE_REG 0x10 -static int ohci_pci_attach(device_t self); -static int ohci_pci_detach(device_t self); -static int ohci_pci_suspend(device_t self); -static int ohci_pci_resume(device_t self); +static device_probe_t ohci_pci_probe; +static device_attach_t ohci_pci_attach; +static device_detach_t ohci_pci_detach; +static device_suspend_t ohci_pci_suspend; +static device_resume_t ohci_pci_resume; static int ohci_pci_suspend(device_t self) @@ -331,10 +332,14 @@ if(sc->sc_bus.bdev) { + device_detach(sc->sc_bus.bdev); device_delete_child(self, sc->sc_bus.bdev); sc->sc_bus.bdev = NULL; } + /* during module unload there are lots of children leftover */ + device_delete_all_children(self); + pci_disable_busmaster(self); if(sc->irq_res && sc->ih) ==== //depot/projects/usb/src/sys/dev/usb/uhci_pci.c#10 (text+ko) ==== @@ -73,10 +73,11 @@ #define PCI_UHCI_BASE_REG 0x20 -static int uhci_pci_attach(device_t self); -static int uhci_pci_detach(device_t self); -static int uhci_pci_suspend(device_t self); -static int uhci_pci_resume(device_t self); +static device_probe_t uhci_pci_probe; +static device_attach_t uhci_pci_attach; +static device_detach_t uhci_pci_detach; +static device_suspend_t uhci_pci_suspend; +static device_resume_t uhci_pci_resume; static int uhci_pci_suspend(device_t self) @@ -330,10 +331,14 @@ if(sc->sc_bus.bdev) { + device_detach(sc->sc_bus.bdev); device_delete_child(self, sc->sc_bus.bdev); sc->sc_bus.bdev = NULL; } + /* during module unload there are lots of children leftover */ + device_delete_all_children(self); + /* * disable interrupts that might have been switched on in * uhci_init. ==== //depot/projects/usb/src/sys/dev/usb/uhub.c#8 (text+ko) ==== @@ -599,6 +599,9 @@ DPRINTF(("sc=%port\n", sc)); + /* detach all children first */ + bus_generic_detach(dev); + if(hub == NULL) /* must be partially working */ { return (0); ==== //depot/projects/usb/src/sys/dev/usb/usb.c#9 (text+ko) ==== @@ -587,6 +587,9 @@ "usb wait explore", 0); } + /* detach children first */ + bus_generic_detach(dev); + if(bus->root_port.device != NULL) { /* free device, but not sub-devices, ==== //depot/projects/usb/src/sys/dev/usb/usb_subr.c#22 (text+ko) ==== @@ -1439,8 +1439,12 @@ printf("(addr %d) disconnected\n", udev->address); - /* device_delete_child() will detach all sub-devices ! */ - if(device_delete_child + /* first detach the child to give the child's detach routine + * a chance to detach the sub-devices in the correct order. + * Then delete the child using "device_delete_child()" which + * will detach all sub-devices from the bottom and upwards! + */ + if (device_detach(subdev[0]) || device_delete_child (device_get_parent(subdev[0]), subdev[0])) { /* if detach fails sub-devices will still @@ -2650,3 +2654,26 @@ } return (m_new); } + +/*---------------------------------------------------------------------------* + * device_delete_all_children - delete all children of a device + *---------------------------------------------------------------------------*/ +int32_t +device_delete_all_children(device_t dev) +{ + device_t *devlist; + int32_t devcount; + int32_t error; + + error = device_get_children(dev, &devlist, &devcount); + if (error == 0) { + while (devcount-- > 0) { + error = device_delete_child(dev, devlist[devcount]); + if (error) { + break; + } + } + free(devlist, M_TEMP); + } + return error; +} ==== //depot/projects/usb/src/sys/dev/usb/usb_subr.h#26 (text+ko) ==== @@ -739,6 +739,8 @@ struct mbuf * usbd_ether_get_mbuf(void); +int32_t device_delete_all_children(device_t dev); + /* routines from usb.c */ #if 0 From owner-p4-projects@FreeBSD.ORG Tue Jan 16 00:19:15 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 8DE7416A415; Tue, 16 Jan 2007 00:19:15 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 56BB716A40F for ; Tue, 16 Jan 2007 00:19:15 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 48BB113C442 for ; Tue, 16 Jan 2007 00:19:15 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0G0JFiB048892 for ; Tue, 16 Jan 2007 00:19:15 GMT (envelope-from hselasky@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0G0JEo5048889 for perforce@freebsd.org; Tue, 16 Jan 2007 00:19:14 GMT (envelope-from hselasky@FreeBSD.org) Date: Tue, 16 Jan 2007 00:19:14 GMT Message-Id: <200701160019.l0G0JEo5048889@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to hselasky@FreeBSD.org using -f From: Hans Petter Selasky To: Perforce Change Reviews Cc: Subject: PERFORCE change 112965 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 16 Jan 2007 00:19:15 -0000 http://perforce.freebsd.org/chv.cgi?CH=112965 Change 112965 by hselasky@hselasky_mini_itx on 2007/01/16 00:18:13 Extension to change 112964. Affected files ... .. //depot/projects/usb/src/sys/dev/usb/if_ural.c#17 edit .. //depot/projects/usb/src/sys/dev/usb/if_zyd.c#3 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb/if_ural.c#17 (text+ko) ==== @@ -608,6 +608,9 @@ mtx_unlock(&(sc->sc_mtx)); + /* get rid of any late children */ + bus_generic_detach(dev); + if (ifp) { bpfdetach(ifp); ieee80211_ifdetach(ic); ==== //depot/projects/usb/src/sys/dev/usb/if_zyd.c#3 (text+ko) ==== @@ -2159,6 +2159,9 @@ mtx_unlock(&(sc->sc_mtx)); + /* get rid of any late children */ + bus_generic_detach(dev); + if (ifp) { bpfdetach(ifp); ieee80211_ifdetach(ic); From owner-p4-projects@FreeBSD.ORG Tue Jan 16 01:14:25 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id B089C16A4A0; Tue, 16 Jan 2007 01:14:25 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 7D34F16A417 for ; Tue, 16 Jan 2007 01:14:25 +0000 (UTC) (envelope-from jkim@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 6AC3E13C471 for ; Tue, 16 Jan 2007 01:14:25 +0000 (UTC) (envelope-from jkim@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0G1EOMx070094 for ; Tue, 16 Jan 2007 01:14:24 GMT (envelope-from jkim@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0G1EOvA070090 for perforce@freebsd.org; Tue, 16 Jan 2007 01:14:24 GMT (envelope-from jkim@freebsd.org) Date: Tue, 16 Jan 2007 01:14:24 GMT Message-Id: <200701160114.l0G1EOvA070090@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to jkim@freebsd.org using -f From: Jung-uk Kim To: Perforce Change Reviews Cc: Subject: PERFORCE change 112967 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 16 Jan 2007 01:14:26 -0000 http://perforce.freebsd.org/chv.cgi?CH=112967 Change 112967 by jkim@jkim_hammer on 2007/01/16 01:13:58 IFC Affected files ... .. //depot/projects/linuxolator/src/sys/dev/aac/aac_cam.c#3 integrate .. //depot/projects/linuxolator/src/sys/dev/acpica/acpi_cpu.c#3 integrate .. //depot/projects/linuxolator/src/sys/dev/ath/ath_rate/sample/sample.c#3 integrate .. //depot/projects/linuxolator/src/sys/dev/ath/ath_rate/sample/sample.h#3 integrate .. //depot/projects/linuxolator/src/sys/dev/ath/if_ath.c#6 integrate .. //depot/projects/linuxolator/src/sys/dev/ath/if_athvar.h#6 integrate .. //depot/projects/linuxolator/src/sys/dev/bge/if_bge.c#11 integrate .. //depot/projects/linuxolator/src/sys/dev/bge/if_bgereg.h#9 integrate .. //depot/projects/linuxolator/src/sys/dev/mii/brgphy.c#5 integrate .. //depot/projects/linuxolator/src/sys/dev/mii/miidevs#5 integrate .. //depot/projects/linuxolator/src/sys/fs/udf/udf_vnops.c#3 integrate .. //depot/projects/linuxolator/src/sys/kern/kern_subr.c#4 edit .. //depot/projects/linuxolator/src/sys/net80211/_ieee80211.h#3 integrate .. //depot/projects/linuxolator/src/sys/net80211/ieee80211.c#5 integrate .. //depot/projects/linuxolator/src/sys/net80211/ieee80211_node.c#4 integrate .. //depot/projects/linuxolator/src/sys/netgraph/ng_deflate.c#3 integrate .. //depot/projects/linuxolator/src/sys/netgraph/ng_pred1.c#2 integrate .. //depot/projects/linuxolator/src/sys/netgraph/ng_tcpmss.c#2 integrate .. //depot/projects/linuxolator/src/sys/netinet/if_ether.c#5 integrate .. //depot/projects/linuxolator/src/sys/netinet/sctp_asconf.c#5 integrate .. //depot/projects/linuxolator/src/sys/netinet/sctp_constants.h#4 integrate .. //depot/projects/linuxolator/src/sys/netinet/sctp_crc32.c#2 integrate .. //depot/projects/linuxolator/src/sys/netinet/sctp_indata.c#5 integrate .. //depot/projects/linuxolator/src/sys/netinet/sctp_indata.h#2 integrate .. //depot/projects/linuxolator/src/sys/netinet/sctp_input.c#5 integrate .. //depot/projects/linuxolator/src/sys/netinet/sctp_os_bsd.h#4 integrate .. //depot/projects/linuxolator/src/sys/netinet/sctp_output.c#5 integrate .. //depot/projects/linuxolator/src/sys/netinet/sctp_pcb.c#5 integrate .. //depot/projects/linuxolator/src/sys/netinet/sctp_pcb.h#4 integrate .. //depot/projects/linuxolator/src/sys/netinet/sctp_structs.h#5 integrate .. //depot/projects/linuxolator/src/sys/netinet/sctp_uio.h#4 integrate .. //depot/projects/linuxolator/src/sys/netinet/sctp_usrreq.c#5 integrate .. //depot/projects/linuxolator/src/sys/netinet/sctp_var.h#3 integrate .. //depot/projects/linuxolator/src/sys/netinet/sctputil.c#5 integrate .. //depot/projects/linuxolator/src/sys/netinet/sctputil.h#4 integrate .. //depot/projects/linuxolator/src/sys/netinet6/sctp6_usrreq.c#5 integrate .. //depot/projects/linuxolator/src/sys/powerpc/powerpc/cpu.c#2 integrate .. //depot/projects/linuxolator/src/sys/powerpc/powerpc/machdep.c#4 integrate .. //depot/projects/linuxolator/src/sys/sparc64/sbus/sbus.c#2 integrate .. //depot/projects/linuxolator/src/sys/sys/systm.h#6 integrate Differences ... ==== //depot/projects/linuxolator/src/sys/dev/aac/aac_cam.c#3 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/aac/aac_cam.c,v 1.25 2006/11/02 00:54:33 mjacob Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/aac/aac_cam.c,v 1.26 2007/01/15 16:22:20 scottl Exp $"); /* * CAM front-end for communicating with non-DASD devices @@ -586,6 +586,7 @@ device_printf(sc->aac_dev,"Error %d sending ResetBus command\n", e); aac_release_sync_fib(sc); + mtx_unlock(&sc->aac_io_lock); return (CAM_REQ_ABORTED); } ==== //depot/projects/linuxolator/src/sys/dev/acpica/acpi_cpu.c#3 (text+ko) ==== @@ -26,7 +26,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi_cpu.c,v 1.61 2007/01/08 00:45:46 njl Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi_cpu.c,v 1.62 2007/01/15 18:17:36 njl Exp $"); #include "opt_acpi.h" #include @@ -480,7 +480,8 @@ * was an error parsing it. Switch back to generic mode. */ cpu_cx_generic = TRUE; - device_printf(sc->cpu_dev, "Switching to generic Cx mode\n"); + if (bootverbose) + device_printf(sc->cpu_dev, "switching to generic Cx mode\n"); } /* @@ -574,20 +575,18 @@ buf.Pointer = NULL; buf.Length = ACPI_ALLOCATE_BUFFER; status = AcpiEvaluateObject(sc->cpu_handle, "_CST", NULL, &buf); - if (ACPI_FAILURE(status)) { - device_printf(sc->cpu_dev, "Unable to find _CST method\n"); + if (ACPI_FAILURE(status)) return (ENXIO); - } /* _CST is a package with a count and at least one Cx package. */ top = (ACPI_OBJECT *)buf.Pointer; if (!ACPI_PKG_VALID(top, 2) || acpi_PkgInt32(top, 0, &count) != 0) { - device_printf(sc->cpu_dev, "Invalid _CST package\n"); + device_printf(sc->cpu_dev, "invalid _CST package\n"); AcpiOsFree(buf.Pointer); return (ENXIO); } if (count != top->Package.Count - 1) { - device_printf(sc->cpu_dev, "Invalid _CST state count (%d != %d)\n", + device_printf(sc->cpu_dev, "invalid _CST state count (%d != %d)\n", count, top->Package.Count - 1); count = top->Package.Count - 1; } ==== //depot/projects/linuxolator/src/sys/dev/ath/ath_rate/sample/sample.c#3 (text+ko) ==== @@ -35,7 +35,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/ath/ath_rate/sample/sample.c,v 1.15 2006/12/13 19:34:35 sam Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/ath/ath_rate/sample/sample.c,v 1.16 2007/01/15 01:17:44 sam Exp $"); /* * John Bicket's SampleRate control algorithm. @@ -533,24 +533,6 @@ short_tries, long_tries); return; } - - if (ts->ts_status) { /* this packet failed */ - DPRINTF(sc, ATH_DEBUG_RATE, -"%s: %s size %d rate/try [%d/%d %d/%d %d/%d %d/%d] FAIL tries [%d/%d]\n", - __func__, - ether_sprintf(an->an_node.ni_macaddr), - bin_to_size(size_to_bin(frame_size)), - sc->sc_hwmap[MS(ds0->ds_ctl3, AR_XmitRate0)].ieeerate, - MS(ds0->ds_ctl2, AR_XmitDataTries0), - sc->sc_hwmap[MS(ds0->ds_ctl3, AR_XmitRate1)].ieeerate, - MS(ds0->ds_ctl2, AR_XmitDataTries1), - sc->sc_hwmap[MS(ds0->ds_ctl3, AR_XmitRate2)].ieeerate, - MS(ds0->ds_ctl2, AR_XmitDataTries2), - sc->sc_hwmap[MS(ds0->ds_ctl3, AR_XmitRate3)].ieeerate, - MS(ds0->ds_ctl2, AR_XmitDataTries3), - short_tries, long_tries); - } - mrr = sc->sc_mrretry && !(ic->ic_flags & IEEE80211_F_USEPROT); if (!mrr || !(ts->ts_rate & HAL_TXSTAT_ALTRATE)) { int ndx = rate_to_ndx(sn, final_rate); @@ -571,32 +553,43 @@ 0, 0, short_tries, long_tries, ts->ts_status); } else { - int rate0, tries0, ndx0; - int rate1, tries1, ndx1; - int rate2, tries2, ndx2; - int rate3, tries3, ndx3; + int hwrate0, rate0, tries0, ndx0; + int hwrate1, rate1, tries1, ndx1; + int hwrate2, rate2, tries2, ndx2; + int hwrate3, rate3, tries3, ndx3; int finalTSIdx = ts->ts_finaltsi; /* * Process intermediate rates that failed. */ - rate0 = sc->sc_hwmap[MS(ds0->ds_ctl3, AR_XmitRate0)].ieeerate; + if (sc->sc_ah->ah_magic != 0x20065416) { + hwrate0 = MS(ds0->ds_ctl3, AR_XmitRate0); + hwrate1 = MS(ds0->ds_ctl3, AR_XmitRate1); + hwrate2 = MS(ds0->ds_ctl3, AR_XmitRate2); + hwrate3 = MS(ds0->ds_ctl3, AR_XmitRate3); + } else { + hwrate0 = MS(ds0->ds_ctl3, AR5416_XmitRate0); + hwrate1 = MS(ds0->ds_ctl3, AR5416_XmitRate1); + hwrate2 = MS(ds0->ds_ctl3, AR5416_XmitRate2); + hwrate3 = MS(ds0->ds_ctl3, AR5416_XmitRate3); + } + + rate0 = sc->sc_hwmap[hwrate0].ieeerate; tries0 = MS(ds0->ds_ctl2, AR_XmitDataTries0); ndx0 = rate_to_ndx(sn, rate0); - rate1 = sc->sc_hwmap[MS(ds0->ds_ctl3, AR_XmitRate1)].ieeerate; + rate1 = sc->sc_hwmap[hwrate1].ieeerate; tries1 = MS(ds0->ds_ctl2, AR_XmitDataTries1); ndx1 = rate_to_ndx(sn, rate1); - rate2 = sc->sc_hwmap[MS(ds0->ds_ctl3, AR_XmitRate2)].ieeerate; + rate2 = sc->sc_hwmap[hwrate2].ieeerate; tries2 = MS(ds0->ds_ctl2, AR_XmitDataTries2); ndx2 = rate_to_ndx(sn, rate2); - rate3 = sc->sc_hwmap[MS(ds0->ds_ctl3, AR_XmitRate3)].ieeerate; + rate3 = sc->sc_hwmap[hwrate3].ieeerate; tries3 = MS(ds0->ds_ctl2, AR_XmitDataTries3); ndx3 = rate_to_ndx(sn, rate3); -#if 1 DPRINTF(sc, ATH_DEBUG_RATE, "%s: %s size %d finaltsidx %d tries %d %s rate/try [%d/%d %d/%d %d/%d %d/%d]\n", __func__, ether_sprintf(an->an_node.ni_macaddr), @@ -608,7 +601,6 @@ rate1, tries1, rate2, tries2, rate3, tries3); -#endif /* * NB: series > 0 are not penalized for failure ==== //depot/projects/linuxolator/src/sys/dev/ath/ath_rate/sample/sample.h#3 (text+ko) ==== @@ -33,7 +33,7 @@ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF * THE POSSIBILITY OF SUCH DAMAGES. * - * $FreeBSD: src/sys/dev/ath/ath_rate/sample/sample.h,v 1.6 2006/12/13 19:34:35 sam Exp $ + * $FreeBSD: src/sys/dev/ath/ath_rate/sample/sample.h,v 1.7 2007/01/15 01:17:44 sam Exp $ */ /* @@ -136,6 +136,16 @@ #define AR_XmitRate3 0x000f8000 /* series 3 tx rate */ #define AR_XmitRate3_S 15 +/* TX ds_ctl3 for 5416 */ +#define AR5416_XmitRate0 0x000000ff /* series 0 tx rate */ +#define AR5416_XmitRate0_S 0 +#define AR5416_XmitRate1 0x0000ff00 /* series 1 tx rate */ +#define AR5416_XmitRate1_S 8 +#define AR5416_XmitRate2 0x00ff0000 /* series 2 tx rate */ +#define AR5416_XmitRate2_S 16 +#define AR5416_XmitRate3 0xff000000 /* series 3 tx rate */ +#define AR5416_XmitRate3_S 24 + #define MS(_v, _f) (((_v) & (_f)) >> _f##_S) /* ==== //depot/projects/linuxolator/src/sys/dev/ath/if_ath.c#6 (text+ko) ==== @@ -35,7 +35,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/ath/if_ath.c,v 1.158 2006/12/27 19:07:09 sam Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/ath/if_ath.c,v 1.159 2007/01/15 01:15:57 sam Exp $"); /* * Driver for the Atheros Wireless LAN controller. @@ -364,8 +364,8 @@ ath_rate_setup(sc, IEEE80211_MODE_11G); ath_rate_setup(sc, IEEE80211_MODE_TURBO_A); ath_rate_setup(sc, IEEE80211_MODE_TURBO_G); - ath_rate_setup(sc, IEEE80211_MODE_11A_HALF); - ath_rate_setup(sc, IEEE80211_MODE_11A_QUARTER); + ath_rate_setup(sc, IEEE80211_MODE_HALF); + ath_rate_setup(sc, IEEE80211_MODE_QUARTER); /* NB: setup here so ath_rate_update is happy */ ath_setcurmode(sc, IEEE80211_MODE_11A); @@ -885,8 +885,14 @@ } } -static u_int -ath_chan2flags(struct ieee80211com *ic, struct ieee80211_channel *chan) +/* + * Convert net80211 channel to a HAL channel with the flags + * constrained to reflect the current operating mode and + * the frequency possibly mapped for GSM channels. + */ +static void +ath_mapchan(struct ieee80211com *ic, HAL_CHANNEL *hc, + const struct ieee80211_channel *chan) { #define N(a) (sizeof(a) / sizeof(a[0])) static const u_int modeflags[] = { @@ -902,11 +908,14 @@ KASSERT(mode < N(modeflags), ("unexpected phy mode %u", mode)); KASSERT(modeflags[mode] != 0, ("mode %u undefined", mode)); + hc->channelFlags = modeflags[mode]; if (IEEE80211_IS_CHAN_HALF(chan)) - return modeflags[mode] | CHANNEL_HALF; + hc->channelFlags |= CHANNEL_HALF; if (IEEE80211_IS_CHAN_QUARTER(chan)) - return modeflags[mode] | CHANNEL_QUARTER; - return modeflags[mode]; + hc->channelFlags |= CHANNEL_QUARTER; + + hc->channel = IEEE80211_IS_CHAN_GSM(chan) ? + 2422 + (922 - chan->ic_freq) : chan->ic_freq; #undef N } @@ -936,8 +945,7 @@ * be followed by initialization of the appropriate bits * and then setup of the interrupt mask. */ - sc->sc_curchan.channel = ic->ic_curchan->ic_freq; - sc->sc_curchan.channelFlags = ath_chan2flags(ic, ic->ic_curchan); + ath_mapchan(ic, &sc->sc_curchan, ic->ic_curchan); if (!ath_hal_reset(ah, sc->sc_opmode, &sc->sc_curchan, AH_FALSE, &status)) { if_printf(ifp, "unable to reset hardware; hal status %u\n", status); @@ -1095,16 +1103,13 @@ struct ath_softc *sc = ifp->if_softc; struct ieee80211com *ic = &sc->sc_ic; struct ath_hal *ah = sc->sc_ah; - struct ieee80211_channel *c; HAL_STATUS status; /* * Convert to a HAL channel description with the flags * constrained to reflect the current operating mode. */ - c = ic->ic_curchan; - sc->sc_curchan.channel = c->ic_freq; - sc->sc_curchan.channelFlags = ath_chan2flags(ic, c); + ath_mapchan(ic, &sc->sc_curchan, ic->ic_curchan); ath_hal_intrset(ah, 0); /* disable interrupts */ ath_draintxq(sc); /* stop xmit side */ @@ -1122,7 +1127,7 @@ * that changes the channel so update any state that * might change as a result. */ - ath_chan_change(sc, c); + ath_chan_change(sc, ic->ic_curchan); if (ath_startrecv(sc) != 0) /* restart recv */ if_printf(ifp, "%s: unable to start recv logic\n", __func__); if (ic->ic_state == IEEE80211_S_RUN) @@ -1859,17 +1864,19 @@ struct ath_hal *ah = sc->sc_ah; u_int usec; - if (IEEE80211_IS_CHAN_A(ic->ic_curchan)) { - if (IEEE80211_IS_CHAN_HALF(ic->ic_curchan)) - usec = 13; - else if (IEEE80211_IS_CHAN_QUARTER(ic->ic_curchan)) - usec = 21; + if (IEEE80211_IS_CHAN_HALF(ic->ic_curchan)) + usec = 13; + else if (IEEE80211_IS_CHAN_QUARTER(ic->ic_curchan)) + usec = 21; + else if (IEEE80211_IS_CHAN_ANYG(ic->ic_curchan)) { + /* honor short/long slot time only in 11g */ + /* XXX shouldn't honor on pure g or turbo g channel */ + if (ic->ic_flags & IEEE80211_F_SHSLOT) + usec = HAL_SLOT_TIME_9; else - usec = HAL_SLOT_TIME_9; - } else if (ic->ic_flags & IEEE80211_F_SHSLOT) + usec = HAL_SLOT_TIME_20; + } else usec = HAL_SLOT_TIME_9; - else - usec = HAL_SLOT_TIME_20; DPRINTF(sc, ATH_DEBUG_RESET, "%s: chan %u MHz flags 0x%x %s slot, %u usec\n", @@ -4318,13 +4325,12 @@ * Change channels and update the h/w rate map * if we're switching; e.g. 11a to 11b/g. */ - mode = ieee80211_chan2mode(ic, chan); - if (mode == IEEE80211_MODE_11A) { - if (IEEE80211_IS_CHAN_HALF(chan)) - mode = IEEE80211_MODE_11A_HALF; - else if (IEEE80211_IS_CHAN_QUARTER(chan)) - mode = IEEE80211_MODE_11A_QUARTER; - } + if (IEEE80211_IS_CHAN_HALF(chan)) + mode = IEEE80211_MODE_HALF; + else if (IEEE80211_IS_CHAN_QUARTER(chan)) + mode = IEEE80211_MODE_QUARTER; + else + mode = ieee80211_chan2mode(ic, chan); if (mode != sc->sc_curmode) ath_setcurmode(sc, mode); /* @@ -4340,6 +4346,10 @@ flags = IEEE80211_CHAN_B; if (IEEE80211_IS_CHAN_T(chan)) flags |= IEEE80211_CHAN_TURBO; + if (IEEE80211_IS_CHAN_HALF(chan)) + flags |= IEEE80211_CHAN_HALF; + if (IEEE80211_IS_CHAN_QUARTER(chan)) + flags |= IEEE80211_CHAN_QUARTER; sc->sc_tx_th.wt_chan_freq = sc->sc_rx_th.wr_chan_freq = htole16(chan->ic_freq); sc->sc_tx_th.wt_chan_flags = sc->sc_rx_th.wr_chan_flags = @@ -4400,8 +4410,7 @@ * the flags constrained to reflect the current * operating mode. */ - hchan.channel = chan->ic_freq; - hchan.channelFlags = ath_chan2flags(ic, chan); + ath_mapchan(ic, &hchan, chan); DPRINTF(sc, ATH_DEBUG_RESET, "%s: %u (%u MHz, hal flags 0x%x) -> %u (%u MHz, hal flags 0x%x)\n", @@ -4829,6 +4838,9 @@ ix, c->channel, c->channelFlags); continue; } + if (bootverbose) + if_printf(ifp, "hal channel %u/%x -> %u\n", + c->channel, c->channelFlags, ix); /* * Calculate net80211 flags; most are compatible * but some need massaging. Note the static turbo @@ -4838,6 +4850,12 @@ flags = c->channelFlags & COMPAT; if (c->channelFlags & CHANNEL_STURBO) flags |= IEEE80211_CHAN_TURBO; + if (ath_hal_isgsmsku(ah)) { + /* remap to true frequencies */ + c->channel = 922 + (2422 - c->channel); + flags |= IEEE80211_CHAN_GSM; + ix = ieee80211_mhz2ieee(c->channel, flags); + } if (ic->ic_channels[ix].ic_freq == 0) { ic->ic_channels[ix].ic_freq = c->channel; ic->ic_channels[ix].ic_flags = flags; @@ -4943,10 +4961,10 @@ case IEEE80211_MODE_11A: rt = ath_hal_getratetable(ah, HAL_MODE_11A); break; - case IEEE80211_MODE_11A_HALF: + case IEEE80211_MODE_HALF: rt = ath_hal_getratetable(ah, HAL_MODE_11A_HALF_RATE); break; - case IEEE80211_MODE_11A_QUARTER: + case IEEE80211_MODE_QUARTER: rt = ath_hal_getratetable(ah, HAL_MODE_11A_QUARTER_RATE); break; case IEEE80211_MODE_11B: @@ -4995,6 +5013,7 @@ { 4, 267, 66 }, { 2, 400, 100 }, { 0, 500, 130 }, + /* XXX half/quarter rates */ }; const HAL_RATE_TABLE *rt; int i, j; ==== //depot/projects/linuxolator/src/sys/dev/ath/if_athvar.h#6 (text+ko) ==== @@ -33,7 +33,7 @@ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF * THE POSSIBILITY OF SUCH DAMAGES. * - * $FreeBSD: src/sys/dev/ath/if_athvar.h,v 1.56 2006/12/27 19:07:09 sam Exp $ + * $FreeBSD: src/sys/dev/ath/if_athvar.h,v 1.58 2007/01/15 04:26:19 sam Exp $ */ /* @@ -208,8 +208,8 @@ sc_xchanmode: 1,/* extended channel mode */ sc_outdoor : 1;/* outdoor operation */ /* rate tables */ -#define IEEE80211_MODE_11A_HALF (IEEE80211_MODE_MAX+0) -#define IEEE80211_MODE_11A_QUARTER (IEEE80211_MODE_MAX+1) +#define IEEE80211_MODE_HALF (IEEE80211_MODE_MAX+0) +#define IEEE80211_MODE_QUARTER (IEEE80211_MODE_MAX+1) const HAL_RATE_TABLE *sc_rates[IEEE80211_MODE_MAX+2]; const HAL_RATE_TABLE *sc_currates; /* current rate table */ enum ieee80211_phymode sc_curmode; /* current phy mode */ @@ -559,6 +559,11 @@ (((ah)->ah_regdomain == 0 && (ah)->ah_countryCode == 842) || \ (ah)->ah_regdomain == 0x12) #endif +#if HAL_ABI_VERSION < 0x06122400 +/* XXX yech, can't get to regdomain so just hack a compat shim */ +#define ath_hal_isgsmsku(ah) \ + ((ah)->ah_countryCode == 843) +#endif #define ath_hal_setuprxdesc(_ah, _ds, _size, _intreq) \ ((*(_ah)->ah_setupRxDesc)((_ah), (_ds), (_size), (_intreq))) ==== //depot/projects/linuxolator/src/sys/dev/bge/if_bge.c#11 (text+ko) ==== @@ -32,7 +32,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/bge/if_bge.c,v 1.172 2006/12/26 18:33:55 bde Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/bge/if_bge.c,v 1.173 2007/01/15 21:43:43 jkim Exp $"); /* * Broadcom BCM570x family gigabit ethernet driver for FreeBSD. @@ -1686,7 +1686,7 @@ br != NULL ? "" : "unknown ", id >> 16); device_set_desc_copy(dev, buf); if (pci_get_subvendor(dev) == DELL_VENDORID) - sc->bge_flags |= BGE_FLAG_NO3LED; + sc->bge_flags |= BGE_FLAG_NO_3LED; return (0); } t++; @@ -2197,25 +2197,36 @@ case BGE_ASICREV_BCM5704: sc->bge_flags |= BGE_FLAG_5700_FAMILY | BGE_FLAG_JUMBO; break; - case BGE_ASICREV_BCM5714_A0: case BGE_ASICREV_BCM5780: case BGE_ASICREV_BCM5714: sc->bge_flags |= BGE_FLAG_5714_FAMILY /* | BGE_FLAG_JUMBO */; - /* Fall through */ - + /* FALLTHRU */ case BGE_ASICREV_BCM5750: case BGE_ASICREV_BCM5752: case BGE_ASICREV_BCM5755: case BGE_ASICREV_BCM5787: sc->bge_flags |= BGE_FLAG_575X_PLUS; - /* Fall through */ - + /* FALLTHRU */ case BGE_ASICREV_BCM5705: sc->bge_flags |= BGE_FLAG_5705_PLUS; break; } + /* Set various bug flags. */ + if (sc->bge_chiprev == BGE_CHIPREV_5703_AX || + sc->bge_chiprev == BGE_CHIPREV_5704_AX) + sc->bge_flags |= BGE_FLAG_ADC_BUG; + if (sc->bge_chipid == BGE_CHIPID_BCM5704_A0) + sc->bge_flags |= BGE_FLAG_5704_A0_BUG; + if (BGE_IS_5705_PLUS(sc)) { + if (sc->bge_asicrev == BGE_ASICREV_BCM5755 || + sc->bge_asicrev == BGE_ASICREV_BCM5787) + sc->bge_flags |= BGE_FLAG_JITTER_BUG; + else + sc->bge_flags |= BGE_FLAG_BER_BUG; + } + /* * Check if this is a PCI-X or PCI Express device. */ @@ -4190,7 +4201,7 @@ printf(" - PCI-X Bus\n"); if (sc->bge_flags & BGE_FLAG_PCIE) printf(" - PCI Express Bus\n"); - if (sc->bge_flags & BGE_FLAG_NO3LED) + if (sc->bge_flags & BGE_FLAG_NO_3LED) printf(" - No 3 LEDs\n"); if (sc->bge_flags & BGE_FLAG_RX_ALIGNBUG) printf(" - RX Alignment Bug\n"); ==== //depot/projects/linuxolator/src/sys/dev/bge/if_bgereg.h#9 (text+ko) ==== @@ -30,7 +30,7 @@ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF * THE POSSIBILITY OF SUCH DAMAGE. * - * $FreeBSD: src/sys/dev/bge/if_bgereg.h,v 1.66 2007/01/11 01:43:24 jdp Exp $ + * $FreeBSD: src/sys/dev/bge/if_bgereg.h,v 1.67 2007/01/15 21:43:43 jkim Exp $ */ /* @@ -303,6 +303,9 @@ #define BGE_CHIPREV_5700_BX 0x71 #define BGE_CHIPREV_5700_CX 0x72 #define BGE_CHIPREV_5701_AX 0x00 +#define BGE_CHIPREV_5703_AX 0x10 +#define BGE_CHIPREV_5704_AX 0x20 +#define BGE_CHIPREV_5704_BX 0x21 #define BGE_CHIPREV_5750_AX 0x40 #define BGE_CHIPREV_5750_BX 0x41 @@ -2445,18 +2448,21 @@ struct resource *bge_res; struct ifmedia bge_ifmedia; /* TBI media info */ uint32_t bge_flags; -#define BGE_FLAG_EXTRAM 0x00000001 /* External SSRAM (unused) */ -#define BGE_FLAG_TBI 0x00000002 -#define BGE_FLAG_RX_ALIGNBUG 0x00000004 -#define BGE_FLAG_NO3LED 0x00000008 -#define BGE_FLAG_PCIX 0x00000010 -#define BGE_FLAG_PCIE 0x00000020 -#define BGE_FLAG_JUMBO 0x00000040 -#define BGE_FLAG_5700_FAMILY 0x00000100 -#define BGE_FLAG_5705_PLUS 0x00000200 -#define BGE_FLAG_5714_FAMILY 0x00000400 -#define BGE_FLAG_575X_PLUS 0x00000800 -#define BGE_FLAG_MSI 0x00001000 +#define BGE_FLAG_TBI 0x00000001 +#define BGE_FLAG_JUMBO 0x00000002 +#define BGE_FLAG_MSI 0x00000100 +#define BGE_FLAG_PCIX 0x00000200 +#define BGE_FLAG_PCIE 0x00000400 +#define BGE_FLAG_5700_FAMILY 0x00001000 +#define BGE_FLAG_5705_PLUS 0x00002000 +#define BGE_FLAG_5714_FAMILY 0x00004000 +#define BGE_FLAG_575X_PLUS 0x00008000 +#define BGE_FLAG_RX_ALIGNBUG 0x00100000 +#define BGE_FLAG_NO_3LED 0x00200000 +#define BGE_FLAG_ADC_BUG 0x00400000 +#define BGE_FLAG_5704_A0_BUG 0x00800000 +#define BGE_FLAG_JITTER_BUG 0x01000000 +#define BGE_FLAG_BER_BUG 0x02000000 uint32_t bge_chipid; uint8_t bge_asicrev; uint8_t bge_chiprev; ==== //depot/projects/linuxolator/src/sys/dev/mii/brgphy.c#5 (text+ko) ==== @@ -31,7 +31,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/mii/brgphy.c,v 1.52 2006/12/20 00:34:12 jkim Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/mii/brgphy.c,v 1.55 2007/01/16 00:52:26 jkim Exp $"); /* * Driver for the Broadcom BCR5400 1000baseTX PHY. @@ -66,6 +66,12 @@ static int brgphy_probe(device_t); static int brgphy_attach(device_t); +struct brgphy_softc { + struct mii_softc mii_sc; + int mii_model; + int mii_rev; +}; + static device_method_t brgphy_methods[] = { /* device interface */ DEVMETHOD(device_probe, brgphy_probe), @@ -93,9 +99,12 @@ static void brgphy_loop(struct mii_softc *); static void bcm5401_load_dspcode(struct mii_softc *); static void bcm5411_load_dspcode(struct mii_softc *); -static void bcm5703_load_dspcode(struct mii_softc *); -static void bcm5750_load_dspcode(struct mii_softc *); -static int brgphy_mii_model; +static void brgphy_fixup_adc_bug(struct mii_softc *); +static void brgphy_fixup_5704_a0_bug(struct mii_softc *); +static void brgphy_fixup_ber_bug(struct mii_softc *); +static void brgphy_fixup_jitter_bug(struct mii_softc *); +static void brgphy_ethernet_wirespeed(struct mii_softc *); +static void brgphy_jumbo_settings(struct mii_softc *, u_long); static const struct mii_phydesc brgphys[] = { MII_PHY_DESC(xxBROADCOM, BCM5400), @@ -112,6 +121,7 @@ MII_PHY_DESC(xxBROADCOM, BCM5752), MII_PHY_DESC(xxBROADCOM, BCM5754), MII_PHY_DESC(xxBROADCOM, BCM5780), + MII_PHY_DESC(xxBROADCOM_ALT1, BCM5787), MII_PHY_END }; @@ -125,6 +135,7 @@ static int brgphy_attach(device_t dev) { + struct brgphy_softc *bsc; struct mii_softc *sc; struct mii_attach_args *ma; struct mii_data *mii; @@ -133,7 +144,8 @@ struct bce_softc *bce_sc = NULL; int fast_ether_only = FALSE; - sc = device_get_softc(dev); + bsc = device_get_softc(dev); + sc = &bsc->mii_sc; ma = device_get_ivars(dev); sc->mii_dev = device_get_parent(dev); mii = device_get_softc(sc->mii_dev); @@ -157,7 +169,8 @@ BMCR_LOOP | BMCR_S100); #endif - brgphy_mii_model = MII_MODEL(ma->mii_id2); + bsc->mii_model = MII_MODEL(ma->mii_id2); + bsc->mii_rev = MII_REV(ma->mii_id2); brgphy_reset(sc); sc->mii_capabilities = PHY_READ(sc, MII_BMSR) & ma->mii_capmask; @@ -204,6 +217,7 @@ static int brgphy_service(struct mii_softc *sc, struct mii_data *mii, int cmd) { + struct brgphy_softc *bsc = (struct brgphy_softc *)sc; struct ifmedia_entry *ife = mii->mii_media.ifm_cur; switch (cmd) { @@ -301,10 +315,13 @@ if (sc->mii_media_active != mii->mii_media_active || sc->mii_media_status != mii->mii_media_status || cmd == MII_MEDIACHG) { - switch (brgphy_mii_model) { + switch (bsc->mii_model) { case MII_MODEL_xxBROADCOM_BCM5400: + bcm5401_load_dspcode(sc); + break; case MII_MODEL_xxBROADCOM_BCM5401: - bcm5401_load_dspcode(sc); + if (bsc->mii_rev == 1 || bsc->mii_rev == 3) + bcm5401_load_dspcode(sc); break; case MII_MODEL_xxBROADCOM_BCM5411: bcm5411_load_dspcode(sc); @@ -318,6 +335,7 @@ static void brgphy_setmedia(struct mii_softc *sc, int media, int master) { + struct brgphy_softc *bsc = (struct brgphy_softc *)sc; int bmcr, gig; switch (IFM_SUBTYPE(media)) { @@ -351,7 +369,7 @@ PHY_WRITE(sc, BRGPHY_MII_BMCR, bmcr | BRGPHY_BMCR_AUTOEN | BRGPHY_BMCR_STARTNEG); - if (brgphy_mii_model != MII_MODEL_xxBROADCOM_BCM5701) + if (bsc->mii_model != MII_MODEL_xxBROADCOM_BCM5701) return; /* @@ -432,12 +450,13 @@ static int brgphy_mii_phy_auto(struct mii_softc *sc) { + struct brgphy_softc *bsc = (struct brgphy_softc *)sc; int ktcr = 0; brgphy_loop(sc); brgphy_reset(sc); ktcr = BRGPHY_1000CTL_AFD | BRGPHY_1000CTL_AHD; - if (brgphy_mii_model == MII_MODEL_xxBROADCOM_BCM5701) + if (bsc->mii_model == MII_MODEL_xxBROADCOM_BCM5701) ktcr |= BRGPHY_1000CTL_MSE | BRGPHY_1000CTL_MSC; PHY_WRITE(sc, BRGPHY_MII_1000CTL, ktcr); ktcr = PHY_READ(sc, BRGPHY_MII_1000CTL); @@ -515,7 +534,7 @@ } static void -bcm5703_load_dspcode(struct mii_softc *sc) +brgphy_fixup_adc_bug(struct mii_softc *sc) { static const struct { int reg; @@ -533,7 +552,7 @@ } static void -bcm5704_load_dspcode(struct mii_softc *sc) +brgphy_fixup_5704_a0_bug(struct mii_softc *sc) { static const struct { int reg; @@ -550,7 +569,7 @@ } static void -bcm5750_load_dspcode(struct mii_softc *sc) +brgphy_fixup_ber_bug(struct mii_softc *sc) { static const struct { int reg; @@ -573,37 +592,83 @@ } static void +brgphy_fixup_jitter_bug(struct mii_softc *sc) +{ + static const struct { + int reg; + uint16_t val; + } dspcode[] = { + { BRGPHY_MII_AUXCTL, 0x0c00 }, + { BRGPHY_MII_DSP_ADDR_REG, 0x000a }, + { BRGPHY_MII_DSP_RW_PORT, 0x010b }, + { BRGPHY_MII_AUXCTL, 0x0400 }, + { 0, 0 }, + }; + int i; + + for (i = 0; dspcode[i].reg != 0; i++) + PHY_WRITE(sc, dspcode[i].reg, dspcode[i].val); +} + +static void +brgphy_ethernet_wirespeed(struct mii_softc *sc) +{ + u_int32_t val; + + /* Enable Ethernet@WireSpeed. */ + PHY_WRITE(sc, BRGPHY_MII_AUXCTL, 0x7007); + val = PHY_READ(sc, BRGPHY_MII_AUXCTL); + PHY_WRITE(sc, BRGPHY_MII_AUXCTL, val | (1 << 15) | (1 << 4)); +} + +static void +brgphy_jumbo_settings(struct mii_softc *sc, u_long mtu) +{ + u_int32_t val; + + /* Set or clear jumbo frame settings in the PHY. */ + if (mtu > ETHER_MAX_LEN) { + PHY_WRITE(sc, BRGPHY_MII_AUXCTL, 0x7); + val = PHY_READ(sc, BRGPHY_MII_AUXCTL); + PHY_WRITE(sc, BRGPHY_MII_AUXCTL, + val | BRGPHY_AUXCTL_LONG_PKT); + + val = PHY_READ(sc, BRGPHY_MII_PHY_EXTCTL); + PHY_WRITE(sc, BRGPHY_MII_PHY_EXTCTL, + val | BRGPHY_PHY_EXTCTL_HIGH_LA); + } else { + PHY_WRITE(sc, BRGPHY_MII_AUXCTL, 0x7); + val = PHY_READ(sc, BRGPHY_MII_AUXCTL); + PHY_WRITE(sc, BRGPHY_MII_AUXCTL, + val & ~(BRGPHY_AUXCTL_LONG_PKT | 0x7)); + + val = PHY_READ(sc, BRGPHY_MII_PHY_EXTCTL); + PHY_WRITE(sc, BRGPHY_MII_PHY_EXTCTL, + val & ~BRGPHY_PHY_EXTCTL_HIGH_LA); + } +} + +static void brgphy_reset(struct mii_softc *sc) { - u_int32_t val; - struct ifnet *ifp; - struct bge_softc *bge_sc = NULL; - struct bce_softc *bce_sc = NULL; + struct brgphy_softc *bsc = (struct brgphy_softc *)sc; + struct bge_softc *bge_sc = NULL; + struct bce_softc *bce_sc = NULL; + struct ifnet *ifp; mii_phy_reset(sc); - switch (brgphy_mii_model) { + switch (bsc->mii_model) { case MII_MODEL_xxBROADCOM_BCM5400: + bcm5401_load_dspcode(sc); + break; case MII_MODEL_xxBROADCOM_BCM5401: - bcm5401_load_dspcode(sc); + if (bsc->mii_rev == 1 || bsc->mii_rev == 3) + bcm5401_load_dspcode(sc); break; case MII_MODEL_xxBROADCOM_BCM5411: bcm5411_load_dspcode(sc); break; - case MII_MODEL_xxBROADCOM_BCM5703: - bcm5703_load_dspcode(sc); - break; - case MII_MODEL_xxBROADCOM_BCM5704: - bcm5704_load_dspcode(sc); - break; - case MII_MODEL_xxBROADCOM_BCM5750: - case MII_MODEL_xxBROADCOM_BCM5752: - case MII_MODEL_xxBROADCOM_BCM5714: - case MII_MODEL_xxBROADCOM_BCM5780: - case MII_MODEL_xxBROADCOM_BCM5706C: - case MII_MODEL_xxBROADCOM_BCM5708C: - bcm5750_load_dspcode(sc); - break; } ifp = sc->mii_pdata->mii_ifp; @@ -617,53 +682,36 @@ /* Handle any NetXtreme/bge workarounds. */ if (bge_sc) { + /* Fix up various bugs */ + if (bge_sc->bge_flags & BGE_FLAG_ADC_BUG) + brgphy_fixup_adc_bug(sc); + if (bge_sc->bge_flags & BGE_FLAG_5704_A0_BUG) + brgphy_fixup_5704_a0_bug(sc); + if (bge_sc->bge_flags & BGE_FLAG_BER_BUG) + brgphy_fixup_ber_bug(sc); + if (bge_sc->bge_flags & BGE_FLAG_JITTER_BUG) + brgphy_fixup_jitter_bug(sc); + + brgphy_jumbo_settings(sc, ifp->if_mtu); + /* * Don't enable Ethernet@WireSpeed for the 5700 or the - * 5705 A1 and A2 chips. Make sure we only do this test - * on "bge" NICs, since other drivers may use this same - * PHY subdriver. + * 5705 A1 and A2 chips. */ - if (bge_sc->bge_asicrev == BGE_ASICREV_BCM5700 || - bge_sc->bge_chipid == BGE_CHIPID_BCM5705_A1 || - bge_sc->bge_chipid == BGE_CHIPID_BCM5705_A2) - return; + if (bge_sc->bge_asicrev != BGE_ASICREV_BCM5700 && + bge_sc->bge_chipid != BGE_CHIPID_BCM5705_A1 && + bge_sc->bge_chipid != BGE_CHIPID_BCM5705_A2) + brgphy_ethernet_wirespeed(sc); - /* Enable Ethernet@WireSpeed. */ - PHY_WRITE(sc, BRGPHY_MII_AUXCTL, 0x7007); - val = PHY_READ(sc, BRGPHY_MII_AUXCTL); - PHY_WRITE(sc, BRGPHY_MII_AUXCTL, val | (1 << 15) | (1 << 4)); - /* Enable Link LED on Dell boxes */ - if (bge_sc->bge_flags & BGE_FLAG_NO3LED) { + if (bge_sc->bge_flags & BGE_FLAG_NO_3LED) { PHY_WRITE(sc, BRGPHY_MII_PHY_EXTCTL, PHY_READ(sc, BRGPHY_MII_PHY_EXTCTL) & ~BRGPHY_PHY_EXTCTL_3_LED); } } else if (bce_sc) { - /* Set or clear jumbo frame settings in the PHY. */ - if (ifp->if_mtu > ETHER_MAX_LEN) { - PHY_WRITE(sc, BRGPHY_MII_AUXCTL, 0x7); - val = PHY_READ(sc, BRGPHY_MII_AUXCTL); - PHY_WRITE(sc, BRGPHY_MII_AUXCTL, - val | BRGPHY_AUXCTL_LONG_PKT); - - val = PHY_READ(sc, BRGPHY_MII_PHY_EXTCTL); - PHY_WRITE(sc, BRGPHY_MII_PHY_EXTCTL, - val | BRGPHY_PHY_EXTCTL_HIGH_LA); - } else { - PHY_WRITE(sc, BRGPHY_MII_AUXCTL, 0x7); - val = PHY_READ(sc, BRGPHY_MII_AUXCTL); - PHY_WRITE(sc, BRGPHY_MII_AUXCTL, - val & ~(BRGPHY_AUXCTL_LONG_PKT | 0x7)); - - val = PHY_READ(sc, BRGPHY_MII_PHY_EXTCTL); - PHY_WRITE(sc, BRGPHY_MII_PHY_EXTCTL, - val & ~BRGPHY_PHY_EXTCTL_HIGH_LA); - } - - /* Enable Ethernet@Wirespeed */ - PHY_WRITE(sc, BRGPHY_MII_AUXCTL, 0x7007); - val = PHY_READ(sc, BRGPHY_MII_AUXCTL); - PHY_WRITE(sc, BRGPHY_MII_AUXCTL, (val | (1 << 15) | (1 << 4))); + brgphy_fixup_ber_bug(sc); + brgphy_jumbo_settings(sc, ifp->if_mtu); + brgphy_ethernet_wirespeed(sc); } } ==== //depot/projects/linuxolator/src/sys/dev/mii/miidevs#5 (text+ko) ==== @@ -1,4 +1,4 @@ -$FreeBSD: src/sys/dev/mii/miidevs,v 1.38 2007/01/05 01:46:26 ticso Exp $ +$FreeBSD: src/sys/dev/mii/miidevs,v 1.39 2007/01/15 21:43:43 jkim Exp $ /*$NetBSD: miidevs,v 1.6 1999/05/14 11:37:30 drochner Exp $*/ /*- @@ -131,6 +131,7 @@ model xxBROADCOM BCM5780 0x0035 BCM5780 10/100/1000baseTX PHY model xxBROADCOM BCM5706C 0x0015 BCM5706C 10/100/1000baseTX PHY model xxBROADCOM BCM5708C 0x0036 BCM5708C 10/100/1000baseTX PHY +model xxBROADCOM_ALT1 BCM5787 0x000e BCM5787 10/100/1000baseTX PHY /* Cicada Semiconductor PHYs (now owned by Vitesse?) */ model CICADA CS8201 0x0001 Cicada CS8201 10/100/1000TX PHY ==== //depot/projects/linuxolator/src/sys/fs/udf/udf_vnops.c#3 (text+ko) ==== @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/fs/udf/udf_vnops.c,v 1.62 2006/12/23 18:53:22 pav Exp $ + * $FreeBSD: src/sys/fs/udf/udf_vnops.c,v 1.63 2007/01/15 18:45:36 pav Exp $ */ /* udf_vnops.c */ @@ -339,38 +339,60 @@ } } +#define lblkno(udfmp, loc) ((loc) >> (udfmp)->bshift) +#define blkoff(udfmp, loc) ((loc) & (udfmp)->bmask) +#define lblktosize(imp, blk) ((blk) << (udfmp)->bshift) + static int -udf_read(struct vop_read_args *a) +udf_read(struct vop_read_args *ap) { - struct vnode *vp = a->a_vp; - struct uio *uio = a->a_uio; + struct vnode *vp = ap->a_vp; + struct uio *uio = ap->a_uio; struct udf_node *node = VTON(vp); + struct udf_mnt *udfmp; struct buf *bp; >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Tue Jan 16 09:57:29 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 7C16516A415; Tue, 16 Jan 2007 09:57:29 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 4039316A40F for ; Tue, 16 Jan 2007 09:57:29 +0000 (UTC) (envelope-from zec@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 3048713C461 for ; Tue, 16 Jan 2007 09:57:29 +0000 (UTC) (envelope-from zec@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0G9vT0U077359 for ; Tue, 16 Jan 2007 09:57:29 GMT (envelope-from zec@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0G9vSwI077356 for perforce@freebsd.org; Tue, 16 Jan 2007 09:57:28 GMT (envelope-from zec@FreeBSD.org) Date: Tue, 16 Jan 2007 09:57:28 GMT Message-Id: <200701160957.l0G9vSwI077356@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to zec@FreeBSD.org using -f From: Marko Zec To: Perforce Change Reviews Cc: Subject: PERFORCE change 112976 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 16 Jan 2007 09:57:29 -0000 http://perforce.freebsd.org/chv.cgi?CH=112976 Change 112976 by zec@zec_tca51 on 2007/01/16 09:56:54 Temporarily delete the config files in another attempt to cheat on the cvsup exporter which refuses to propagate any changes in the sys/i386/conf directory because once upon the time it included a .cvsignore file. Affected files ... .. //depot/projects/vimage/src/sys/i386/conf/DEFAULTS#3 delete .. //depot/projects/vimage/src/sys/i386/conf/GENERIC#4 delete .. //depot/projects/vimage/src/sys/i386/conf/GENERIC.hints#3 delete .. //depot/projects/vimage/src/sys/i386/conf/MAC#3 delete .. //depot/projects/vimage/src/sys/i386/conf/Makefile#3 delete .. //depot/projects/vimage/src/sys/i386/conf/NOTES#5 delete .. //depot/projects/vimage/src/sys/i386/conf/PAE#3 delete .. //depot/projects/vimage/src/sys/i386/conf/VIMAGE#3 delete .. //depot/projects/vimage/src/sys/i386/conf/XBOX#3 delete Differences ... From owner-p4-projects@FreeBSD.ORG Tue Jan 16 10:05:40 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id D4FF416A415; Tue, 16 Jan 2007 10:05:39 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id AE20716A407 for ; Tue, 16 Jan 2007 10:05:39 +0000 (UTC) (envelope-from piso@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 9E3E613C442 for ; Tue, 16 Jan 2007 10:05:39 +0000 (UTC) (envelope-from piso@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0GA5dT4080168 for ; Tue, 16 Jan 2007 10:05:39 GMT (envelope-from piso@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0GA5deK080165 for perforce@freebsd.org; Tue, 16 Jan 2007 10:05:39 GMT (envelope-from piso@freebsd.org) Date: Tue, 16 Jan 2007 10:05:39 GMT Message-Id: <200701161005.l0GA5deK080165@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to piso@freebsd.org using -f From: Paolo Pisati To: Perforce Change Reviews Cc: Subject: PERFORCE change 112977 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 16 Jan 2007 10:05:40 -0000 http://perforce.freebsd.org/chv.cgi?CH=112977 Change 112977 by piso@piso_newluxor on 2007/01/16 10:05:22 Get rid of the lock in the callout path. While here, fix some spacing and indentation. Affected files ... .. //depot/projects/soc2006/intr_filter/i386/i386/intr_machdep.c#28 edit Differences ... ==== //depot/projects/soc2006/intr_filter/i386/i386/intr_machdep.c#28 (text+ko) ==== @@ -217,9 +217,10 @@ walk_intrs_src(void) { struct intsrc *isrc; static int i = 0; + int j; - for (; i < NUM_IO_INTS; ) { - int j = i++; + for (; i < NUM_IO_INTS;) { + j = i++; isrc = interrupt_sources[j]; if (isrc != NULL && isrc->is_event != NULL) return (isrc->is_event); @@ -284,10 +285,8 @@ intr_callout_reset(void) { - mtx_lock_spin(&intr_table_lock); callout_reset(&stray_callout_handle, hz, - &stray_detection, &walk_intrs_src); - mtx_unlock_spin(&intr_table_lock); + &stray_detection, &walk_intrs_src); } static void @@ -385,7 +384,7 @@ intrcnt_index = 1; STAILQ_INIT(&pics); mtx_init(&intr_table_lock, "intr table", NULL, MTX_SPIN); - callout_init_mtx(&stray_callout_handle, &intr_table_lock, 0); + callout_init(&stray_callout_handle, 1); // XXX - we don't drain the callout... } SYSINIT(intr_init, SI_SUB_INTR, SI_ORDER_FIRST, intr_init, NULL) From owner-p4-projects@FreeBSD.ORG Tue Jan 16 10:07:43 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id ECE5A16A412; Tue, 16 Jan 2007 10:07:42 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id C687316A407 for ; Tue, 16 Jan 2007 10:07:42 +0000 (UTC) (envelope-from zec@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id B6CAE13C441 for ; Tue, 16 Jan 2007 10:07:42 +0000 (UTC) (envelope-from zec@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0GA7gug080293 for ; Tue, 16 Jan 2007 10:07:42 GMT (envelope-from zec@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0GA7g5i080290 for perforce@freebsd.org; Tue, 16 Jan 2007 10:07:42 GMT (envelope-from zec@FreeBSD.org) Date: Tue, 16 Jan 2007 10:07:42 GMT Message-Id: <200701161007.l0GA7g5i080290@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to zec@FreeBSD.org using -f From: Marko Zec To: Perforce Change Reviews Cc: Subject: PERFORCE change 112978 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 16 Jan 2007 10:07:43 -0000 http://perforce.freebsd.org/chv.cgi?CH=112978 Change 112978 by zec@zec_tca51 on 2007/01/16 10:07:10 Bring the files deleted by change 112976 back to life. Affected files ... .. //depot/projects/vimage/src/sys/i386/conf/DEFAULTS#4 add .. //depot/projects/vimage/src/sys/i386/conf/GENERIC#5 add .. //depot/projects/vimage/src/sys/i386/conf/GENERIC.hints#4 add .. //depot/projects/vimage/src/sys/i386/conf/MAC#4 add .. //depot/projects/vimage/src/sys/i386/conf/Makefile#4 add .. //depot/projects/vimage/src/sys/i386/conf/NOTES#6 add .. //depot/projects/vimage/src/sys/i386/conf/PAE#4 add .. //depot/projects/vimage/src/sys/i386/conf/TCA51C#1 add .. //depot/projects/vimage/src/sys/i386/conf/TCA51V#1 add .. //depot/projects/vimage/src/sys/i386/conf/VIMAGE#4 add .. //depot/projects/vimage/src/sys/i386/conf/XBOX#4 add Differences ... From owner-p4-projects@FreeBSD.ORG Tue Jan 16 10:11:50 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 36CBE16A47C; Tue, 16 Jan 2007 10:11:50 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id E611F16A416 for ; Tue, 16 Jan 2007 10:11:49 +0000 (UTC) (envelope-from piso@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id D66E413C428 for ; Tue, 16 Jan 2007 10:11:49 +0000 (UTC) (envelope-from piso@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0GABmYW081098 for ; Tue, 16 Jan 2007 10:11:48 GMT (envelope-from piso@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0GABmDf081094 for perforce@freebsd.org; Tue, 16 Jan 2007 10:11:48 GMT (envelope-from piso@freebsd.org) Date: Tue, 16 Jan 2007 10:11:48 GMT Message-Id: <200701161011.l0GABmDf081094@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to piso@freebsd.org using -f From: Paolo Pisati To: Perforce Change Reviews Cc: Subject: PERFORCE change 112980 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 16 Jan 2007 10:11:50 -0000 http://perforce.freebsd.org/chv.cgi?CH=112980 Change 112980 by piso@piso_newluxor on 2007/01/16 10:10:55 Move spin lock acquisition inside the interrupt scanning function. While here, fix spacing and indentation. Affected files ... .. //depot/projects/soc2006/intr_filter/ia64/ia64/interrupt.c#20 edit Differences ... ==== //depot/projects/soc2006/intr_filter/ia64/ia64/interrupt.c#20 (text+ko) ==== @@ -273,7 +273,7 @@ { mtx_init(&ia64_intrs_lock, "intr table", NULL, MTX_SPIN); - callout_init_mtx(&stray_callout_handle, &ia64_intrs_lock, 0); + callout_init(&stray_callout_handle, 1); } SYSINIT(ithds_init, SI_SUB_INTR, SI_ORDER_SECOND, ithds_init, NULL); @@ -361,10 +361,13 @@ walk_intr_ia64(void) { struct ia64_intr *ia64_i; static int i = 0; + int j; - for (; i < IA64_NUMI; ) { - int j = i++; + for (; i < IA64_NUMI;) { + j = i++; + mtx_lock_spin(&ia64_intrs_lock); ia64_i = ia64_intrs[j]; + mtx_unlock_spin(&ia64_intrs_lock); if (ia64_i != NULL && ia64_i->event != NULL) return (ia64_i->event); } @@ -374,12 +377,10 @@ void intr_callout_reset(void) -{ - - mtx_lock_spin(&ia64_intrs_lock); +{ + callout_reset(&stray_callout_handle, hz, - &stray_detection, &walk_intr_ia64); - mtx_unlock_spin(&ia64_intrs_lock); + &stray_detection, &walk_intr_ia64); } static void From owner-p4-projects@FreeBSD.ORG Tue Jan 16 10:18:59 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id D535E16A417; Tue, 16 Jan 2007 10:18:58 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 947F916A415 for ; Tue, 16 Jan 2007 10:18:58 +0000 (UTC) (envelope-from piso@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id C5CF613C455 for ; Tue, 16 Jan 2007 10:18:57 +0000 (UTC) (envelope-from piso@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0GAIvZg081931 for ; Tue, 16 Jan 2007 10:18:57 GMT (envelope-from piso@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0GAIvIL081928 for perforce@freebsd.org; Tue, 16 Jan 2007 10:18:57 GMT (envelope-from piso@freebsd.org) Date: Tue, 16 Jan 2007 10:18:57 GMT Message-Id: <200701161018.l0GAIvIL081928@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to piso@freebsd.org using -f From: Paolo Pisati To: Perforce Change Reviews Cc: Subject: PERFORCE change 112981 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 16 Jan 2007 10:18:59 -0000 http://perforce.freebsd.org/chv.cgi?CH=112981 Change 112981 by piso@piso_newluxor on 2007/01/16 10:18:52 Move spin lock acquisition for the callout path into the interrupt scanning function, and add the callout_init() call that ought to be there. Affected files ... .. //depot/projects/soc2006/intr_filter/powerpc/powerpc/intr_machdep.c#26 edit Differences ... ==== //depot/projects/soc2006/intr_filter/powerpc/powerpc/intr_machdep.c#26 (text+ko) ==== @@ -123,6 +123,7 @@ panic("intr_init: unable to allocate interrupt handler array"); mtx_init(&ppc_intrs_lock, "intr table", NULL, MTX_SPIN); + callout_init(&stray_callout_handle, 1); irq_enable = irq_e; @@ -286,7 +287,9 @@ for (; i < ppc_nintrs; ) { j = i++; + mtx_lock_spin(&ppc_intrs_lock); intr = ppc_intrs[j]; + mtx_unlock_spin(&ppc_intrs_lock); if (intr != NULL && intr->event != NULL) return (intr->event); } @@ -297,11 +300,9 @@ void intr_callout_reset(void) { - - mtx_lock_spin(&ppc_intrs_lock); + callout_reset(&stray_callout_handle, hz, &stray_detection, - &walk_intr_ppc); - mtx_unlock_spin(&ppc_intrs_lock); + &walk_intr_ppc); } void From owner-p4-projects@FreeBSD.ORG Tue Jan 16 10:29:15 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id EDC9316A52F; Tue, 16 Jan 2007 10:29:14 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id AB9F616A4E8 for ; Tue, 16 Jan 2007 10:29:14 +0000 (UTC) (envelope-from zec@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 58C0B13C441 for ; Tue, 16 Jan 2007 10:29:13 +0000 (UTC) (envelope-from zec@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0GATD1p084396 for ; Tue, 16 Jan 2007 10:29:13 GMT (envelope-from zec@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0GATAKm084354 for perforce@freebsd.org; Tue, 16 Jan 2007 10:29:10 GMT (envelope-from zec@FreeBSD.org) Date: Tue, 16 Jan 2007 10:29:10 GMT Message-Id: <200701161029.l0GATAKm084354@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to zec@FreeBSD.org using -f From: Marko Zec To: Perforce Change Reviews Cc: Subject: PERFORCE change 112982 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 16 Jan 2007 10:29:15 -0000 http://perforce.freebsd.org/chv.cgi?CH=112982 Change 112982 by zec@zec_tca51 on 2007/01/16 10:28:14 IFC @ 112979 Affected files ... .. //depot/projects/vimage/src/sys/amd64/amd64/identcpu.c#2 integrate .. //depot/projects/vimage/src/sys/amd64/amd64/mp_machdep.c#2 integrate .. //depot/projects/vimage/src/sys/amd64/amd64/nexus.c#2 integrate .. //depot/projects/vimage/src/sys/amd64/include/setjmp.h#2 integrate .. //depot/projects/vimage/src/sys/amd64/include/specialreg.h#2 integrate .. //depot/projects/vimage/src/sys/amd64/linux32/linux32_machdep.c#4 integrate .. //depot/projects/vimage/src/sys/boot/common/pnp.c#2 integrate .. //depot/projects/vimage/src/sys/boot/common/pnpdata#2 delete .. //depot/projects/vimage/src/sys/boot/forth/loader.conf#3 integrate .. //depot/projects/vimage/src/sys/compat/linux/linux_emul.c#3 integrate .. //depot/projects/vimage/src/sys/compat/linux/linux_emul.h#3 integrate .. //depot/projects/vimage/src/sys/compat/linux/linux_ipc.c#3 integrate .. //depot/projects/vimage/src/sys/compat/linux/linux_mib.c#3 integrate .. //depot/projects/vimage/src/sys/compat/linux/linux_misc.c#4 integrate .. //depot/projects/vimage/src/sys/compat/linux/linux_signal.c#3 integrate .. //depot/projects/vimage/src/sys/conf/NOTES#5 integrate .. //depot/projects/vimage/src/sys/conf/options#6 integrate .. //depot/projects/vimage/src/sys/dev/aac/aac_cam.c#2 integrate .. //depot/projects/vimage/src/sys/dev/acpica/acpi.c#2 integrate .. //depot/projects/vimage/src/sys/dev/acpica/acpi_cpu.c#2 integrate .. //depot/projects/vimage/src/sys/dev/acpica/acpi_package.c#2 integrate .. //depot/projects/vimage/src/sys/dev/acpica/acpi_perf.c#2 integrate .. //depot/projects/vimage/src/sys/dev/acpica/acpi_throttle.c#2 integrate .. //depot/projects/vimage/src/sys/dev/acpica/acpivar.h#2 integrate .. //depot/projects/vimage/src/sys/dev/ath/ath_rate/sample/sample.c#3 integrate .. //depot/projects/vimage/src/sys/dev/ath/ath_rate/sample/sample.h#3 integrate .. //depot/projects/vimage/src/sys/dev/ath/if_ath.c#4 integrate .. //depot/projects/vimage/src/sys/dev/ath/if_athvar.h#4 integrate .. //depot/projects/vimage/src/sys/dev/bce/if_bce.c#3 integrate .. //depot/projects/vimage/src/sys/dev/bce/if_bcereg.h#2 integrate .. //depot/projects/vimage/src/sys/dev/bge/if_bge.c#4 integrate .. //depot/projects/vimage/src/sys/dev/bge/if_bgereg.h#4 integrate .. //depot/projects/vimage/src/sys/dev/cy/cy_isa.c#2 integrate .. //depot/projects/vimage/src/sys/dev/fb/boot_font.c#2 integrate .. //depot/projects/vimage/src/sys/dev/fb/creatorreg.h#1 branch .. //depot/projects/vimage/src/sys/dev/fb/gallant12x22.c#1 branch .. //depot/projects/vimage/src/sys/dev/fb/gfb.c#2 delete .. //depot/projects/vimage/src/sys/dev/fb/gfb.h#2 integrate .. //depot/projects/vimage/src/sys/dev/gfb/gfb_pci.c#2 delete .. //depot/projects/vimage/src/sys/dev/gfb/gfb_pci.h#2 delete .. //depot/projects/vimage/src/sys/dev/ichsmb/ichsmb.c#2 integrate .. //depot/projects/vimage/src/sys/dev/ichsmb/ichsmb_pci.c#2 integrate .. //depot/projects/vimage/src/sys/dev/idt/idtreg.h#2 integrate .. //depot/projects/vimage/src/sys/dev/mii/acphy.c#3 integrate .. //depot/projects/vimage/src/sys/dev/mii/acphyreg.h#2 integrate .. //depot/projects/vimage/src/sys/dev/mii/amphy.c#3 integrate .. //depot/projects/vimage/src/sys/dev/mii/brgphy.c#4 integrate .. //depot/projects/vimage/src/sys/dev/mii/exphy.c#2 integrate .. //depot/projects/vimage/src/sys/dev/mii/inphy.c#3 integrate .. //depot/projects/vimage/src/sys/dev/mii/lxtphy.c#3 integrate .. //depot/projects/vimage/src/sys/dev/mii/mii_physubr.c#3 integrate .. //depot/projects/vimage/src/sys/dev/mii/miidevs#4 integrate .. //depot/projects/vimage/src/sys/dev/mii/miivar.h#3 integrate .. //depot/projects/vimage/src/sys/dev/mii/nsphy.c#3 integrate .. //depot/projects/vimage/src/sys/dev/mii/rlphy.c#3 integrate .. //depot/projects/vimage/src/sys/dev/mii/ruephy.c#2 integrate .. //depot/projects/vimage/src/sys/dev/msk/if_msk.c#3 integrate .. //depot/projects/vimage/src/sys/dev/pci/pci.c#4 integrate .. //depot/projects/vimage/src/sys/dev/pci/pci_pci.c#2 integrate .. //depot/projects/vimage/src/sys/dev/pci/pcib_private.h#3 integrate .. //depot/projects/vimage/src/sys/dev/re/if_re.c#3 integrate .. //depot/projects/vimage/src/sys/dev/sound/pci/hda/hdac.c#5 integrate .. //depot/projects/vimage/src/sys/dev/syscons/scvesactl.c#2 integrate .. //depot/projects/vimage/src/sys/dev/usb/if_aue.c#4 integrate .. //depot/projects/vimage/src/sys/dev/usb/if_auereg.h#4 integrate .. //depot/projects/vimage/src/sys/dev/usb/usb_ethersubr.c#3 integrate .. //depot/projects/vimage/src/sys/dev/usb/usb_ethersubr.h#3 integrate .. //depot/projects/vimage/src/sys/fs/udf/udf_vfsops.c#2 integrate .. //depot/projects/vimage/src/sys/fs/udf/udf_vnops.c#3 integrate .. //depot/projects/vimage/src/sys/i386/i386/identcpu.c#2 integrate .. //depot/projects/vimage/src/sys/i386/i386/machdep.c#4 integrate .. //depot/projects/vimage/src/sys/i386/i386/mp_machdep.c#2 integrate .. //depot/projects/vimage/src/sys/i386/i386/nexus.c#2 integrate .. //depot/projects/vimage/src/sys/i386/include/setjmp.h#2 integrate .. //depot/projects/vimage/src/sys/i386/include/specialreg.h#2 integrate .. //depot/projects/vimage/src/sys/i386/linux/linux_machdep.c#2 integrate .. //depot/projects/vimage/src/sys/ia64/include/exec.h#2 integrate .. //depot/projects/vimage/src/sys/ia64/include/floatingpoint.h#2 integrate .. //depot/projects/vimage/src/sys/ia64/include/reloc.h#2 integrate .. //depot/projects/vimage/src/sys/kern/kern_acct.c#2 integrate .. //depot/projects/vimage/src/sys/kern/kern_acl.c#2 integrate .. //depot/projects/vimage/src/sys/kern/kern_ntptime.c#2 integrate .. //depot/projects/vimage/src/sys/kern/kern_prot.c#2 integrate .. //depot/projects/vimage/src/sys/kern/kern_subr.c#3 integrate .. //depot/projects/vimage/src/sys/kern/subr_turnstile.c#2 integrate .. //depot/projects/vimage/src/sys/kern/tty_pts.c#2 integrate .. //depot/projects/vimage/src/sys/kern/uipc_socket.c#5 integrate .. //depot/projects/vimage/src/sys/kern/uipc_usrreq.c#3 integrate .. //depot/projects/vimage/src/sys/modules/sound/driver/emu10kx/Makefile#3 integrate .. //depot/projects/vimage/src/sys/net80211/_ieee80211.h#3 integrate .. //depot/projects/vimage/src/sys/net80211/ieee80211.c#3 integrate .. //depot/projects/vimage/src/sys/net80211/ieee80211_freebsd.c#2 integrate .. //depot/projects/vimage/src/sys/net80211/ieee80211_freebsd.h#2 integrate .. //depot/projects/vimage/src/sys/net80211/ieee80211_input.c#3 integrate .. //depot/projects/vimage/src/sys/net80211/ieee80211_node.c#3 integrate .. //depot/projects/vimage/src/sys/net80211/ieee80211_proto.c#3 integrate .. //depot/projects/vimage/src/sys/net80211/ieee80211_proto.h#2 integrate .. //depot/projects/vimage/src/sys/netatalk/COPYRIGHT#2 integrate .. //depot/projects/vimage/src/sys/netatalk/aarp.c#2 integrate .. //depot/projects/vimage/src/sys/netatalk/aarp.h#2 integrate .. //depot/projects/vimage/src/sys/netatalk/at.h#2 integrate .. //depot/projects/vimage/src/sys/netatalk/at_extern.h#2 integrate .. //depot/projects/vimage/src/sys/netatalk/at_proto.c#2 integrate .. //depot/projects/vimage/src/sys/netatalk/at_rmx.c#2 integrate .. //depot/projects/vimage/src/sys/netatalk/at_var.h#2 integrate .. //depot/projects/vimage/src/sys/netatalk/ddp.h#2 integrate .. //depot/projects/vimage/src/sys/netatalk/ddp_input.c#2 integrate .. //depot/projects/vimage/src/sys/netatalk/ddp_output.c#2 integrate .. //depot/projects/vimage/src/sys/netatalk/ddp_pcb.c#2 integrate .. //depot/projects/vimage/src/sys/netatalk/ddp_pcb.h#2 integrate .. //depot/projects/vimage/src/sys/netatalk/ddp_usrreq.c#2 integrate .. //depot/projects/vimage/src/sys/netatalk/ddp_var.h#2 integrate .. //depot/projects/vimage/src/sys/netgraph/ng_deflate.c#2 integrate .. //depot/projects/vimage/src/sys/netgraph/ng_pred1.c#2 integrate .. //depot/projects/vimage/src/sys/netgraph/ng_tcpmss.c#2 integrate .. //depot/projects/vimage/src/sys/netinet/if_ether.c#6 integrate .. //depot/projects/vimage/src/sys/netinet/ip.h#2 integrate .. //depot/projects/vimage/src/sys/netinet/ip_fw2.c#7 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_asconf.c#4 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_constants.h#3 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_crc32.c#2 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_indata.c#4 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_indata.h#2 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_input.c#4 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_os_bsd.h#4 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_output.c#4 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_pcb.c#4 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_pcb.h#4 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_structs.h#4 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_uio.h#3 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_usrreq.c#4 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_var.h#3 integrate .. //depot/projects/vimage/src/sys/netinet/sctputil.c#4 integrate .. //depot/projects/vimage/src/sys/netinet/sctputil.h#3 integrate .. //depot/projects/vimage/src/sys/netinet6/esp_aesctr.c#2 integrate .. //depot/projects/vimage/src/sys/netinet6/in6_cksum.c#2 integrate .. //depot/projects/vimage/src/sys/netinet6/sctp6_usrreq.c#4 integrate .. //depot/projects/vimage/src/sys/netipx/ipx.c#2 integrate .. //depot/projects/vimage/src/sys/netipx/ipx.h#2 integrate .. //depot/projects/vimage/src/sys/netipx/ipx_cksum.c#2 integrate .. //depot/projects/vimage/src/sys/netipx/ipx_if.h#2 integrate .. //depot/projects/vimage/src/sys/netipx/ipx_input.c#2 integrate .. //depot/projects/vimage/src/sys/netipx/ipx_ip.c#2 integrate .. //depot/projects/vimage/src/sys/netipx/ipx_ip.h#2 integrate .. //depot/projects/vimage/src/sys/netipx/ipx_outputfl.c#2 integrate .. //depot/projects/vimage/src/sys/netipx/ipx_pcb.c#2 integrate .. //depot/projects/vimage/src/sys/netipx/ipx_pcb.h#2 integrate .. //depot/projects/vimage/src/sys/netipx/ipx_proto.c#2 integrate .. //depot/projects/vimage/src/sys/netipx/ipx_usrreq.c#2 integrate .. //depot/projects/vimage/src/sys/netipx/ipx_var.h#2 integrate .. //depot/projects/vimage/src/sys/netipx/spx.h#2 integrate .. //depot/projects/vimage/src/sys/netipx/spx_debug.c#2 integrate .. //depot/projects/vimage/src/sys/netipx/spx_debug.h#2 integrate .. //depot/projects/vimage/src/sys/netipx/spx_timer.h#2 integrate .. //depot/projects/vimage/src/sys/netipx/spx_usrreq.c#2 integrate .. //depot/projects/vimage/src/sys/netipx/spx_var.h#2 integrate .. //depot/projects/vimage/src/sys/netnatm/natm.c#2 integrate .. //depot/projects/vimage/src/sys/netnatm/natm.h#2 integrate .. //depot/projects/vimage/src/sys/netnatm/natm_pcb.c#2 integrate .. //depot/projects/vimage/src/sys/netnatm/natm_proto.c#2 integrate .. //depot/projects/vimage/src/sys/pci/alpm.c#2 integrate .. //depot/projects/vimage/src/sys/pci/amdpm.c#2 integrate .. //depot/projects/vimage/src/sys/pci/amdsmb.c#2 integrate .. //depot/projects/vimage/src/sys/pci/if_pcn.c#2 integrate .. //depot/projects/vimage/src/sys/pci/intpm.c#2 integrate .. //depot/projects/vimage/src/sys/pci/intpmreg.h#2 integrate .. //depot/projects/vimage/src/sys/pci/nfsmb.c#2 integrate .. //depot/projects/vimage/src/sys/pci/viapm.c#2 integrate .. //depot/projects/vimage/src/sys/powerpc/conf/NOTES#2 integrate .. //depot/projects/vimage/src/sys/powerpc/include/reloc.h#2 integrate .. //depot/projects/vimage/src/sys/powerpc/powerpc/cpu.c#2 integrate .. //depot/projects/vimage/src/sys/powerpc/powerpc/machdep.c#3 integrate .. //depot/projects/vimage/src/sys/sparc64/include/ofw_nexus.h#1 branch .. //depot/projects/vimage/src/sys/sparc64/include/reloc.h#2 integrate .. //depot/projects/vimage/src/sys/sparc64/include/setjmp.h#2 integrate .. //depot/projects/vimage/src/sys/sparc64/pci/ofw_pcibus.c#2 integrate .. //depot/projects/vimage/src/sys/sparc64/pci/psycho.c#2 integrate .. //depot/projects/vimage/src/sys/sparc64/pci/psychoreg.h#2 integrate .. //depot/projects/vimage/src/sys/sparc64/sbus/sbus.c#2 integrate .. //depot/projects/vimage/src/sys/sun4v/include/reloc.h#2 integrate .. //depot/projects/vimage/src/sys/sun4v/include/setjmp.h#2 integrate .. //depot/projects/vimage/src/sys/sys/copyright.h#3 integrate .. //depot/projects/vimage/src/sys/sys/priority.h#2 integrate .. //depot/projects/vimage/src/sys/sys/rtprio.h#3 integrate .. //depot/projects/vimage/src/sys/sys/systm.h#3 integrate .. //depot/projects/vimage/src/sys/ufs/ufs/ufs_acl.c#2 integrate .. //depot/projects/vimage/src/sys/vm/uma_core.c#3 integrate Differences ... ==== //depot/projects/vimage/src/sys/amd64/amd64/identcpu.c#2 (text+ko) ==== @@ -39,7 +39,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/identcpu.c,v 1.148 2006/08/01 01:23:39 obrien Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/identcpu.c,v 1.149 2007/01/09 19:23:21 jkim Exp $"); #include "opt_cpu.h" @@ -228,8 +228,8 @@ "\007" "\010EST" /* Enhanced SpeedStep */ "\011TM2" /* Thermal Monitor 2 */ - "\012" - "\013CNTX-ID" /* L1 context ID available */ + "\012SSSE3" /* SSSE3 */ + "\013CNXT-ID" /* L1 context ID available */ "\014" "\015" "\016CX16" /* CMPXCHG16B Instruction */ ==== //depot/projects/vimage/src/sys/amd64/amd64/mp_machdep.c#2 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/mp_machdep.c,v 1.278 2006/10/10 23:23:11 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/mp_machdep.c,v 1.279 2007/01/11 00:17:02 jeff Exp $"); #include "opt_cpu.h" #include "opt_kstack_pages.h" @@ -948,11 +948,10 @@ ipi_bitmap = atomic_readandclear_int(&cpu_ipi_pending[cpu]); -#ifdef IPI_PREEMPTION - if (ipi_bitmap & IPI_PREEMPT) { + if (ipi_bitmap & (1 << IPI_PREEMPT)) { mtx_lock_spin(&sched_lock); /* Don't preempt the idle thread */ - if (curthread->td_priority < PRI_MIN_IDLE) { + if (curthread != PCPU_GET(idlethread)) { struct thread *running_thread = curthread; if (running_thread->td_critnest > 1) running_thread->td_owepreempt = 1; @@ -961,7 +960,6 @@ } mtx_unlock_spin(&sched_lock); } -#endif /* Nothing to do for AST */ } ==== //depot/projects/vimage/src/sys/amd64/amd64/nexus.c#2 (text+ko) ==== @@ -28,7 +28,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/nexus.c,v 1.70 2006/11/13 22:23:32 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/nexus.c,v 1.71 2007/01/11 19:40:19 jhb Exp $"); /* * This code implements a `root nexus' for Intel Architecture @@ -371,24 +371,9 @@ * If this is a memory resource, map it into the kernel. */ if (rman_get_bustag(r) == AMD64_BUS_SPACE_MEM) { - caddr_t vaddr = 0; + void *vaddr; - if (rman_get_end(r) < 1024 * 1024) { - /* - * The first 1Mb is mapped at KERNBASE. - */ - vaddr = (caddr_t)(uintptr_t)(KERNBASE + rman_get_start(r)); - } else { - u_int64_t paddr; - u_int64_t psize; - u_int32_t poffs; - - paddr = rman_get_start(r); - psize = rman_get_size(r); - - poffs = paddr - trunc_page(paddr); - vaddr = (caddr_t) pmap_mapdev(paddr-poffs, psize+poffs) + poffs; - } + vaddr = pmap_mapdev(rman_get_start(r), rman_get_size(r)); rman_set_virtual(r, vaddr); rman_set_bushandle(r, (bus_space_handle_t) vaddr); } @@ -402,12 +387,9 @@ /* * If this is a memory resource, unmap it. */ - if ((rman_get_bustag(r) == AMD64_BUS_SPACE_MEM) && - (rman_get_end(r) >= 1024 * 1024)) { - u_int32_t psize; - - psize = rman_get_size(r); - pmap_unmapdev((vm_offset_t)rman_get_virtual(r), psize); + if (rman_get_bustag(r) == AMD64_BUS_SPACE_MEM) { + pmap_unmapdev((vm_offset_t)rman_get_virtual(r), + rman_get_size(r)); } return (rman_deactivate_resource(r)); ==== //depot/projects/vimage/src/sys/amd64/include/setjmp.h#2 (text+ko) ==== @@ -10,10 +10,7 @@ * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by John Birrell. - * 4. Neither the name of the author nor the names of any co-contributors + * 3. Neither the name of the author nor the names of any co-contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * @@ -29,7 +26,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/amd64/include/setjmp.h,v 1.9 2003/06/02 21:49:35 peter Exp $ + * $FreeBSD: src/sys/amd64/include/setjmp.h,v 1.10 2007/01/12 07:24:06 imp Exp $ */ #ifndef _MACHINE_SETJMP_H_ ==== //depot/projects/vimage/src/sys/amd64/include/specialreg.h#2 (text+ko) ==== @@ -27,7 +27,7 @@ * SUCH DAMAGE. * * from: @(#)specialreg.h 7.1 (Berkeley) 5/9/91 - * $FreeBSD: src/sys/amd64/include/specialreg.h,v 1.35 2006/07/13 16:09:40 jkim Exp $ + * $FreeBSD: src/sys/amd64/include/specialreg.h,v 1.36 2007/01/09 19:23:21 jkim Exp $ */ #ifndef _MACHINE_SPECIALREG_H_ @@ -118,7 +118,8 @@ #define CPUID2_VMX 0x00000020 #define CPUID2_EST 0x00000080 #define CPUID2_TM2 0x00000100 -#define CPUID2_CNTXID 0x00000400 +#define CPUID2_SSSE3 0x00000200 +#define CPUID2_CNXTID 0x00000400 #define CPUID2_CX16 0x00002000 #define CPUID2_XTPR 0x00004000 ==== //depot/projects/vimage/src/sys/amd64/linux32/linux32_machdep.c#4 (text+ko) ==== @@ -29,7 +29,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/linux32/linux32_machdep.c,v 1.24 2007/01/06 15:58:34 netchild Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/linux32/linux32_machdep.c,v 1.26 2007/01/14 16:20:37 netchild Exp $"); #include #include @@ -497,6 +497,7 @@ return (error); /* wait for the children to exit, ie. emulate vfork */ PROC_LOCK(p2); + p2->p_flag |= P_PPWAIT; while (p2->p_flag & P_PPWAIT) msleep(td->td_proc, &p2->p_mtx, PWAIT, "ppwait", 0); PROC_UNLOCK(p2); @@ -564,7 +565,7 @@ /* create the emuldata */ error = linux_proc_init(td, p2->p_pid, args->flags); /* reference it - no need to check this */ - em = em_find(p2, EMUL_UNLOCKED); + em = em_find(p2, EMUL_DOLOCK); KASSERT(em != NULL, ("clone: emuldata not found.\n")); /* and adjust it */ if (args->flags & CLONE_PARENT_SETTID) { ==== //depot/projects/vimage/src/sys/boot/common/pnp.c#2 (text+ko) ==== @@ -4,7 +4,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/boot/common/pnp.c,v 1.16 2003/08/25 23:30:41 obrien Exp $"); +__FBSDID("$FreeBSD: src/sys/boot/common/pnp.c,v 1.17 2007/01/07 22:25:45 marius Exp $"); /* * "Plug and Play" functionality. @@ -82,52 +82,6 @@ return(CMD_OK); } -#if 0 -/* - * Try to load outstanding modules (eg. after disk change) - */ -COMMAND_SET(pnpload, "pnpload", "load modules for PnP devices", pnp_load); - -static int -pnp_load(int argc, char *argv[]) -{ - struct pnpinfo *pi; - char *modfname; - - /* find anything? */ - if (STAILQ_FIRST(&pnp_devices) != NULL) { - - /* check for kernel, assign modules handled by static drivers there */ - if (pnp_scankernel()) { - command_errmsg = "cannot load drivers until kernel loaded"; - return(CMD_ERROR); - } - if (fname == NULL) { - /* default paths */ - pnp_readconf("/boot/pnpdata.local"); - pnp_readconf("/boot/pnpdata"); - } else { - if (pnp_readconf(fname)) { - sprintf(command_errbuf, "can't read PnP information from '%s'", fname); - return(CMD_ERROR); - } - } - - /* try to load any modules that have been nominated */ - STAILQ_FOREACH(pi, &pnp_devices, pi_link) { - /* Already loaded? */ - if ((pi->pi_module != NULL) && (file_findfile(pi->pi_module, NULL) == NULL)) { - modfname = malloc(strlen(pi->pi_module) + 4); - sprintf(modfname, "%s.ko", pi->pi_module); /* XXX implicit knowledge of KLD module filenames */ - if (mod_load(pi->pi_module, pi->pi_argc, pi->pi_argv)) - printf("Could not load module '%s' for device '%s'\n", modfname, STAILQ_FIRST(&pi->pi_ident)->id_ident); - free(modfname); - } - } - } - return(CMD_OK); -} -#endif /* * Throw away anything we think we know about PnP devices. */ @@ -142,159 +96,7 @@ pnp_freeinfo(pi); } } -#if 0 -/* - * The PnP configuration database consists of a flat text file with - * entries one per line. Valid lines are: - * - * # - * - * This line is a comment, and ignored. - * - * [] - * - * Entries following this line are for devices connected to the - * bus , At least one such entry must be encountered - * before identifiers are recognised. - * - * ident= rev= module= args= - * - * This line describes an identifier:module mapping. The 'ident' - * and 'module' fields are required; the 'rev' field is currently - * ignored (but should be used), and the 'args' field must come - * last. - * - * Comments may be appended to lines; any character including or following - * '#' on a line is ignored. - */ -static int -pnp_readconf(char *path) -{ - struct pnpinfo *pi; - struct pnpident *id; - int fd, line; - char lbuf[128], *currbus, *ident, *revision, *module, *args; - char *cp, *ep, *tp, c; - - /* try to open the file */ - if ((fd = open(path, O_RDONLY)) >= 0) { - line = 0; - currbus = NULL; - - while (fgetstr(lbuf, sizeof(lbuf), fd) > 0) { - line++; - /* Find the first non-space character on the line */ - for (cp = lbuf; (*cp != 0) && !isspace(*cp); cp++) - ; - - /* keep/discard? */ - if ((*cp == 0) || (*cp == '#')) - continue; - - /* cut trailing comment? */ - if ((ep = strchr(cp, '#')) != NULL) - *ep = 0; - - /* bus declaration? */ - if (*cp == '[') { - if (((ep = strchr(cp, ']')) == NULL) || ((ep - cp) < 2)) { - printf("%s line %d: bad bus specification\n", path, line); - } else { - if (currbus != NULL) - free(currbus); - *ep = 0; - currbus = strdup(cp + 1); - } - continue; - } - - /* XXX should we complain? */ - if (currbus == NULL) - continue; - - /* mapping */ - for (ident = module = args = revision = NULL; *cp != 0;) { - - /* discard leading whitespace */ - if (isspace(*cp)) { - cp++; - continue; - } - - /* scan for terminator, separator */ - for (ep = cp; (*ep != 0) && (*ep != '=') && !isspace(*ep); ep++) - ; - - if (*ep == '=') { - *ep = 0; - for (tp = ep + 1; (*tp != 0) && !isspace(*tp); tp++) - ; - c = *tp; - *tp = 0; - if ((ident == NULL) && !strcmp(cp, "ident")) { - ident = ep + 1; - } else if ((revision == NULL) && !strcmp(cp, "revision")) { - revision = ep + 1; - } else if ((args == NULL) && !strcmp(cp, "args")) { - *tp = c; - while (*tp != 0) /* skip to end of string */ - tp++; - args = ep + 1; - } else { - /* XXX complain? */ - } - cp = tp; - continue; - } - - /* it's garbage or a keyword - ignore it for now */ - cp = ep; - } - - /* we must have at least ident and module set to be interesting */ - if ((ident == NULL) || (module == NULL)) - continue; - - /* - * Loop looking for module/bus that might match this, but aren't already - * assigned. - * XXX no revision parse/test here yet. - */ - STAILQ_FOREACH(pi, &pnp_devices, pi_link) { - - /* no driver assigned, bus matches OK */ - if ((pi->pi_module == NULL) && - !strcmp(pi->pi_handler->pp_name, currbus)) { - - /* scan idents, take first match */ - STAILQ_FOREACH(id, &pi->pi_ident, id_link) - if (!strcmp(id->id_ident, ident)) - break; - - /* find a match? */ - if (id != NULL) { - if (args != NULL) - if (parse(&pi->pi_argc, &pi->pi_argv, args)) { - printf("%s line %d: bad arguments\n", path, line); - continue; - } - pi->pi_module = strdup(module); - printf("use module '%s' for %s:%s\n", module, pi->pi_handler->pp_name, id->id_ident); - } - } - } - } - close(fd); - } - return(CMD_OK); -} -static int -pnp_scankernel(void) -{ - return(CMD_OK); -} -#endif /* * Add a unique identifier to (pi) */ ==== //depot/projects/vimage/src/sys/boot/forth/loader.conf#3 (text+ko) ==== @@ -6,7 +6,7 @@ # # All arguments must be in double quotes. # -# $FreeBSD: src/sys/boot/forth/loader.conf,v 1.114 2006/12/13 02:48:22 yongari Exp $ +# $FreeBSD: src/sys/boot/forth/loader.conf,v 1.117 2007/01/14 13:55:43 maxim Exp $ ############################################################## ### Basic configuration options ############################ @@ -147,13 +147,13 @@ # ggatec(8), ggated(8), ggatel(8)) geom_label_load="NO" # File system labels (see glabel(8)) geom_md_load="NO" # Memory disk driver (vnode/swap/malloc) (see + # md(4), mdconfig(8)) geom_mirror_load="NO" # RAID1 disk driver (see gmirror(8)) geom_nop_load="NO" # Transparent disk driver (see gnop(8)) geom_raid3_load="NO" # RAID3 disk driver (see graid3(8)) geom_shsec_load="NO" # Shared secret disk driver (see gshsec(8)) geom_stripe_load="NO" # RAID0 disk driver (see gstripe(8)) geom_uzip_load="NO" # Compressed disk images driver (see mkuzip(8)) - # md(4), mdconfig(8)) geom_vinum_load="NO" # Concatenated/mirror/raid driver (see vinum(4)) @@ -183,7 +183,8 @@ ############################################################## if_disc_load="NO" # Discard device -if_ef_load="NO" # pseudo-device providing support for multiple ethernet frame types +if_ef_load="NO" # pseudo-device providing support for multiple + # ethernet frame types if_faith_load="NO" # IPv6-to-IPv4 TCP relay capturing interface if_gif_load="NO" # generic tunnel interface if_gre_load="NO" # encapsulating network device @@ -217,21 +218,25 @@ if_cue_load="NO" # CATC USB-EL1210A USB Ethernet if_dc_load="NO" # DEC/Intel 21143 and various workalikes if_de_load="NO" # DEC DC21x4x Ethernet -if_ed_load="NO" # National Semiconductor DS8390/WD83C690 Ethernet +if_ed_load="NO" # National Semiconductor DS8390/WD83C690 + # Ethernet if_em_load="NO" # Intel(R) PRO/1000 Gigabit Ethernet if_en_load="NO" # Midway-based ATM interfaces if_ep_load="NO" # 3Com Etherlink III (3c5x9) if_ex_load="NO" # Intel EtherExpress Pro/10 Ethernet -if_fe_load="NO" # Fujitsu MB86960A/MB86965A based Ethernet adapters +if_fe_load="NO" # Fujitsu MB86960A/MB86965A based Ethernet + # adapters if_fxp_load="NO" # Intel EtherExpress PRO/100B (82557, 82558) if_gem_load="NO" # Sun GEM/Sun ERI/Apple GMAC if_hme_load="NO" # Sun Microelectronics STP2002-STQ Ethernet if_ie_load="NO" # Intel 82586 if_ipw_load="NO" # Intel PRO/Wireless 2100 wireless -if_iwi_load="NO" # Intel PRO/Wireless 2200BG/2225BG/2915ABG wireless +if_iwi_load="NO" # Intel PRO/Wireless 2200BG/2225BG/2915ABG + # wireless if_ixgb_load="NO" # Intel PRO/10Gb Ethernet if_le_load="NO" # AMD Am7900 LANCE and Am79C9xx PCnet -if_lge_load="NO" # Level 1 LXT1001 NetCellerator PCI Gigabit Ethernet +if_lge_load="NO" # Level 1 LXT1001 NetCellerator PCI Gigabit + # Ethernet if_msk_load="NO" # Marvell/SysKonnect Yukon II Gigabit Ethernet if_mxge_load="NO" # Myricom Myri10GE 10Gb Ethernet if_my_load="NO" # Myson PCI Fast Ethernet @@ -289,18 +294,21 @@ ng_ksocket_load="NO" # kernel socket netgraph node type ng_l2tp_load="NO" # L2TP protocol netgraph node type ng_lmi_load="NO" # frame relay LMI protocol netgraph node type -ng_mppc_load="NO" # Microsoft MPPC/MPPE compression and encryption netgraph node type -ng_netflow_load="NO" # Cisco's NetFlow netgraph note type +ng_mppc_load="NO" # Microsoft MPPC/MPPE compression and + # encryption netgraph node type +ng_netflow_load="NO" # Cisco's NetFlow netgraph node type ng_one2many_load="NO" # packet multiplexing netgraph node type ng_ppp_load="NO" # PPP protocol netgraph node type ng_pppoe_load="NO" # RFC 2516 PPPOE protocol netgraph node type ng_pptpgre_load="NO" # PPTP GRE protocol netgraph node type ng_rfc1490_load="NO" # RFC 1490 netgraph node type ng_socket_load="NO" # Netgraph socket node type -ng_split_load="NO" # netgraph node to separate incoming and outgoing flows +ng_split_load="NO" # netgraph node to separate incoming and + # outgoing flows ng_sppp_load="NO" # sppp netgraph node type ng_tee_load="NO" # Netgraph ``tee'' node type -ng_tty_load="NO" # Netgraph node type that is also a line discipline +ng_tty_load="NO" # Netgraph node type that is also a line + # discipline ng_vjc_load="NO" # Van Jacobsen compression netgraph node type ng_vlan_load="NO" # IEEE 802.1Q VLAN tagging netgraph node type ==== //depot/projects/vimage/src/sys/compat/linux/linux_emul.c#3 (text+ko) ==== @@ -27,7 +27,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/compat/linux/linux_emul.c,v 1.10 2006/12/31 12:42:55 netchild Exp $"); +__FBSDID("$FreeBSD: src/sys/compat/linux/linux_emul.c,v 1.12 2007/01/07 19:09:20 netchild Exp $"); #include "opt_compat.h" @@ -63,12 +63,12 @@ { struct linux_emuldata *em; - if (locked == EMUL_UNLOCKED) + if (locked == EMUL_DOLOCK) EMUL_LOCK(&emul_lock); em = p->p_emuldata; - if (em == NULL && locked == EMUL_UNLOCKED) + if (em == NULL && locked == EMUL_DOLOCK) EMUL_UNLOCK(&emul_lock); return (em); @@ -104,7 +104,7 @@ EMUL_LOCK(&emul_lock); } else { /* lookup the old one */ - em = em_find(td->td_proc, EMUL_UNLOCKED); + em = em_find(td->td_proc, EMUL_DOLOCK); KASSERT(em != NULL, ("proc_init: emuldata not found in exec case.\n")); } @@ -119,10 +119,12 @@ if (child != 0) { if (flags & CLONE_THREAD) { /* lookup the parent */ - p_em = em_find(td->td_proc, EMUL_LOCKED); + EMUL_SHARED_WLOCK(&emul_shared_lock); + p_em = em_find(td->td_proc, EMUL_DONTLOCK); KASSERT(p_em != NULL, ("proc_init: parent emuldata not found for CLONE_THREAD\n")); em->shared = p_em->shared; em->shared->refs++; + EMUL_SHARED_WUNLOCK(&emul_shared_lock); } else { /* * handled earlier to avoid malloc(M_WAITOK) with @@ -159,7 +161,7 @@ return; /* find the emuldata */ - em = em_find(p, EMUL_UNLOCKED); + em = em_find(p, EMUL_DOLOCK); KASSERT(em != NULL, ("proc_exit: emuldata not found.\n")); @@ -217,7 +219,7 @@ continue; if (__predict_false(q->p_sysent != &elf_linux_sysvec)) continue; - em = em_find(q, EMUL_UNLOCKED); + em = em_find(q, EMUL_DOLOCK); KASSERT(em != NULL, ("linux_reparent: emuldata not found: %i\n", q->p_pid)); if (em->pdeath_signal != 0) { PROC_LOCK(q); @@ -244,7 +246,7 @@ && p->p_sysent == &elf_linux_sysvec)) { struct linux_emuldata *em; - em = em_find(p, EMUL_UNLOCKED); + em = em_find(p, EMUL_DOLOCK); KASSERT(em != NULL, ("proc_exec: emuldata not found.\n")); @@ -280,7 +282,7 @@ retry: /* find the emuldata */ - em = em_find(p, EMUL_UNLOCKED); + em = em_find(p, EMUL_DOLOCK); if (em == NULL) { /* @@ -315,7 +317,7 @@ #endif /* find the emuldata */ - em = em_find(td->td_proc, EMUL_UNLOCKED); + em = em_find(td->td_proc, EMUL_DOLOCK); KASSERT(em != NULL, ("set_tid_address: emuldata not found.\n")); ==== //depot/projects/vimage/src/sys/compat/linux/linux_emul.h#3 (text+ko) ==== @@ -25,7 +25,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $FreeBSD: src/sys/compat/linux/linux_emul.h,v 1.5 2006/12/31 12:42:55 netchild Exp $ + * $FreeBSD: src/sys/compat/linux/linux_emul.h,v 1.6 2007/01/07 19:00:38 netchild Exp $ */ #ifndef _LINUX_EMUL_H_ @@ -66,8 +66,8 @@ #define EMUL_SHARED_WUNLOCK(l) sx_xunlock(l) /* for em_find use */ -#define EMUL_LOCKED 1 -#define EMUL_UNLOCKED 0 +#define EMUL_DOLOCK 1 +#define EMUL_DONTLOCK 0 int linux_proc_init(struct thread *, pid_t, int); void linux_proc_exit(void *, struct proc *); ==== //depot/projects/vimage/src/sys/compat/linux/linux_ipc.c#3 (text+ko) ==== @@ -27,7 +27,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/compat/linux/linux_ipc.c,v 1.53 2006/12/20 20:08:45 jkim Exp $"); +__FBSDID("$FreeBSD: src/sys/compat/linux/linux_ipc.c,v 1.54 2007/01/14 16:34:43 netchild Exp $"); #include #include @@ -571,9 +571,13 @@ td->td_retval[0] = seminfo.semmni; return 0; /* No need for __semctl call */ case LINUX_GETALL: - /* FALLTHROUGH */ + cmd = GETALL; + semun.val = args->arg.val; + break; case LINUX_SETALL: - /* FALLTHROUGH */ + cmd = SETALL; + semun.val = args->arg.val; + break; default: linux_msg(td, "ipc type %d is not implemented", args->cmd & ~LINUX_IPC_64); ==== //depot/projects/vimage/src/sys/compat/linux/linux_mib.c#3 (text+ko) ==== @@ -27,7 +27,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/compat/linux/linux_mib.c,v 1.27 2006/12/31 12:39:10 netchild Exp $"); +__FBSDID("$FreeBSD: src/sys/compat/linux/linux_mib.c,v 1.29 2007/01/14 16:07:01 netchild Exp $"); #include #include @@ -233,18 +233,15 @@ { struct prison *pr; struct linux_prison *lpr; - int use26 = 0; /* defaults to off */ + int use26 = linux_use_linux26; pr = td->td_ucred->cr_prison; if (pr != NULL) { - mtx_lock(&pr->pr_mtx); if (pr->pr_linux != NULL) { lpr = (struct linux_prison *)pr->pr_linux; use26 = lpr->pr_use_linux26; } - mtx_unlock(&pr->pr_mtx); - } else - use26 = linux_use_linux26; + } return (use26); } ==== //depot/projects/vimage/src/sys/compat/linux/linux_misc.c#4 (text+ko) ==== @@ -28,7 +28,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/compat/linux/linux_misc.c,v 1.202 2006/12/31 13:16:00 netchild Exp $"); +__FBSDID("$FreeBSD: src/sys/compat/linux/linux_misc.c,v 1.205 2007/01/07 19:30:19 netchild Exp $"); #include "opt_compat.h" #include "opt_mac.h" @@ -100,7 +100,7 @@ static unsigned int linux_to_bsd_resource[LINUX_RLIM_NLIMITS] = { RLIMIT_CPU, RLIMIT_FSIZE, RLIMIT_DATA, RLIMIT_STACK, RLIMIT_CORE, RLIMIT_RSS, RLIMIT_NPROC, RLIMIT_NOFILE, - RLIMIT_MEMLOCK, -1 + RLIMIT_MEMLOCK, RLIMIT_AS }; struct l_sysinfo { @@ -1439,10 +1439,9 @@ #endif if (linux_use26(td)) { - em = em_find(td->td_proc, EMUL_UNLOCKED); + em = em_find(td->td_proc, EMUL_DONTLOCK); KASSERT(em != NULL, ("getpid: emuldata not found.\n")); td->td_retval[0] = em->shared->group_pid; - EMUL_UNLOCK(&emul_lock); } else { td->td_retval[0] = td->td_proc->p_pid; } @@ -1481,7 +1480,7 @@ return (0); } - em = em_find(td->td_proc, EMUL_UNLOCKED); + em = em_find(td->td_proc, EMUL_DONTLOCK); KASSERT(em != NULL, ("getppid: process emuldata not found.\n")); @@ -1501,14 +1500,13 @@ /* if its also linux process */ if (pp->p_sysent == &elf_linux_sysvec) { - em = em_find(pp, EMUL_LOCKED); + em = em_find(pp, EMUL_DONTLOCK); KASSERT(em != NULL, ("getppid: parent emuldata not found.\n")); td->td_retval[0] = em->shared->group_pid; } else td->td_retval[0] = pp->p_pid; - EMUL_UNLOCK(&emul_lock); PROC_UNLOCK(pp); return (0); @@ -1608,7 +1606,7 @@ #endif if (linux_use26(td)) { - td_em = em_find(td->td_proc, EMUL_UNLOCKED); + td_em = em_find(td->td_proc, EMUL_DOLOCK); KASSERT(td_em != NULL, ("exit_group: emuldata not found.\n")); @@ -1656,13 +1654,13 @@ case LINUX_PR_SET_PDEATHSIG: if (!LINUX_SIG_VALID(args->arg2)) return (EINVAL); - em = em_find(p, EMUL_UNLOCKED); + em = em_find(p, EMUL_DOLOCK); KASSERT(em != NULL, ("prctl: emuldata not found.\n")); em->pdeath_signal = args->arg2; EMUL_UNLOCK(&emul_lock); break; case LINUX_PR_GET_PDEATHSIG: - em = em_find(p, EMUL_UNLOCKED); + em = em_find(p, EMUL_DOLOCK); KASSERT(em != NULL, ("prctl: emuldata not found.\n")); error = copyout(&em->pdeath_signal, (void *)(register_t)args->arg2, ==== //depot/projects/vimage/src/sys/compat/linux/linux_signal.c#3 (text+ko) ==== @@ -27,7 +27,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/compat/linux/linux_signal.c,v 1.63 2007/01/01 14:47:45 delphij Exp $"); +__FBSDID("$FreeBSD: src/sys/compat/linux/linux_signal.c,v 1.65 2007/01/07 19:14:06 netchild Exp $"); #include #include @@ -561,7 +561,7 @@ PROC_UNLOCK(p); - em = em_find(p, EMUL_UNLOCKED); + em = em_find(p, EMUL_DONTLOCK); if (em == NULL) { #ifdef DEBUG @@ -573,8 +573,6 @@ if (em->shared->group_pid != args->tgid) return ESRCH; - EMUL_UNLOCK(&emul_lock); - return linux_kill(td, &ka); } ==== //depot/projects/vimage/src/sys/conf/NOTES#5 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/NOTES,v 1.1405 2007/01/03 11:12:54 piso Exp $ +# $FreeBSD: src/sys/conf/NOTES,v 1.1406 2007/01/10 18:45:17 marius Exp $ # # NOTES -- Lines that can be cut/pasted into kernel and hints configs. >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Tue Jan 16 11:32:31 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id A0F8216A415; Tue, 16 Jan 2007 11:32:31 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 578EE16A40F for ; Tue, 16 Jan 2007 11:32:31 +0000 (UTC) (envelope-from piso@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 4786213C44B for ; Tue, 16 Jan 2007 11:32:31 +0000 (UTC) (envelope-from piso@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0GBWVsu095806 for ; Tue, 16 Jan 2007 11:32:31 GMT (envelope-from piso@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0GBWUWr095801 for perforce@freebsd.org; Tue, 16 Jan 2007 11:32:30 GMT (envelope-from piso@freebsd.org) Date: Tue, 16 Jan 2007 11:32:30 GMT Message-Id: <200701161132.l0GBWUWr095801@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to piso@freebsd.org using -f From: Paolo Pisati To: Perforce Change Reviews Cc: Subject: PERFORCE change 112983 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 16 Jan 2007 11:32:31 -0000 http://perforce.freebsd.org/chv.cgi?CH=112983 Change 112983 by piso@piso_newluxor on 2007/01/16 11:31:42 Get rid of the spin lock acquisition in the callout path. While here, do some spacing according to style. Affected files ... .. //depot/projects/soc2006/intr_filter/sparc64/sparc64/intr_machdep.c#20 edit Differences ... ==== //depot/projects/soc2006/intr_filter/sparc64/sparc64/intr_machdep.c#20 (text+ko) ==== @@ -234,7 +234,7 @@ { mtx_init(&intr_table_lock, "intr table", NULL, MTX_SPIN); - callout_init_mtx(&stray_callout_handle, &intr_table_lock, 0); + callout_init(&stray_callout_handle, 1); } /* Stray detection MD code */ @@ -242,9 +242,10 @@ walk_intr_sparc64(void) { struct intr_vector *iv; static int i = 0; + int j; - for (; iiv_event != NULL) return (iv->iv_event); @@ -257,10 +258,8 @@ intr_callout_reset(void) { - mtx_lock_spin(&intr_table_lock); callout_reset(&stray_callout_handle, hz, - &stray_detection, &walk_intr_sparc64); - mtx_unlock_spin(&intr_table_lock); + &stray_detection, &walk_intr_sparc64); } static void From owner-p4-projects@FreeBSD.ORG Tue Jan 16 11:42:44 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 78E5D16A4A0; Tue, 16 Jan 2007 11:42:44 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 3235616A407 for ; Tue, 16 Jan 2007 11:42:44 +0000 (UTC) (envelope-from piso@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 2323213C478 for ; Tue, 16 Jan 2007 11:42:44 +0000 (UTC) (envelope-from piso@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0GBgiSD097619 for ; Tue, 16 Jan 2007 11:42:44 GMT (envelope-from piso@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0GBghPa097616 for perforce@freebsd.org; Tue, 16 Jan 2007 11:42:43 GMT (envelope-from piso@freebsd.org) Date: Tue, 16 Jan 2007 11:42:43 GMT Message-Id: <200701161142.l0GBghPa097616@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to piso@freebsd.org using -f From: Paolo Pisati To: Perforce Change Reviews Cc: Subject: PERFORCE change 112984 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 16 Jan 2007 11:42:44 -0000 http://perforce.freebsd.org/chv.cgi?CH=112984 Change 112984 by piso@piso_newluxor on 2007/01/16 11:42:17 Get rid of the spin lock acquisition in the callout path. While here, fix spacing. Affected files ... .. //depot/projects/soc2006/intr_filter/sun4v/sun4v/intr_machdep.c#4 edit Differences ... ==== //depot/projects/soc2006/intr_filter/sun4v/sun4v/intr_machdep.c#4 (text+ko) ==== @@ -157,9 +157,10 @@ walk_intr_sun4v(void) { struct intr_vector *iv; static int i = 0; + int j; - for (; iiv_event != NULL) return (iv->iv_event); @@ -172,10 +173,8 @@ intr_callout_reset(void) { - mtx_lock_spin(&intr_table_lock); callout_reset(&stray_callout_handle, hz, &stray_detection, &walk_intr_sun4v); - mtx_unlock_spin(&intr_table_lock); } /* From owner-p4-projects@FreeBSD.ORG Tue Jan 16 12:25:37 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id A955716A412; Tue, 16 Jan 2007 12:25:37 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 82AA816A407 for ; Tue, 16 Jan 2007 12:25:37 +0000 (UTC) (envelope-from piso@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 73ECA13C455 for ; Tue, 16 Jan 2007 12:25:37 +0000 (UTC) (envelope-from piso@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0GCPbXM005434 for ; Tue, 16 Jan 2007 12:25:37 GMT (envelope-from piso@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0GCPbVi005431 for perforce@freebsd.org; Tue, 16 Jan 2007 12:25:37 GMT (envelope-from piso@freebsd.org) Date: Tue, 16 Jan 2007 12:25:37 GMT Message-Id: <200701161225.l0GCPbVi005431@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to piso@freebsd.org using -f From: Paolo Pisati To: Perforce Change Reviews Cc: Subject: PERFORCE change 112986 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 16 Jan 2007 12:25:38 -0000 http://perforce.freebsd.org/chv.cgi?CH=112986 Change 112986 by piso@piso_newluxor on 2007/01/16 12:24:37 Modify the interrupt scanning table function: o Get rid of a useless variable. o Turn the for(..) loop into a while(...). o Spacing and style fixes. Affected files ... .. //depot/projects/soc2006/intr_filter/amd64/amd64/intr_machdep.c#22 edit .. //depot/projects/soc2006/intr_filter/arm/arm/intr.c#19 edit .. //depot/projects/soc2006/intr_filter/i386/i386/intr_machdep.c#29 edit .. //depot/projects/soc2006/intr_filter/ia64/ia64/interrupt.c#21 edit .. //depot/projects/soc2006/intr_filter/powerpc/powerpc/intr_machdep.c#27 edit .. //depot/projects/soc2006/intr_filter/sparc64/sparc64/intr_machdep.c#21 edit .. //depot/projects/soc2006/intr_filter/sun4v/sun4v/intr_machdep.c#5 edit Differences ... ==== //depot/projects/soc2006/intr_filter/amd64/amd64/intr_machdep.c#22 (text+ko) ==== @@ -224,15 +224,14 @@ /* Stray detection MD code */ static struct intr_event * -walk_intr_src(void) { +walk_intr_src(void) +{ struct intsrc *isrc; static int i = 0; - int j; - for (; i < NUM_IO_INTS;) { - j = i++; + while (i < NUM_IO_INTS) { mtx_lock_spin(&intr_table_lock); - isrc = interrupt_sources[j]; + isrc = interrupt_sources[i++]; mtx_unlock_spin(&intr_table_lock); if (isrc != NULL && isrc->is_event != NULL) return (isrc->is_event); ==== //depot/projects/soc2006/intr_filter/arm/arm/intr.c#19 (text+ko) ==== @@ -110,13 +110,13 @@ /* Stray detection MD code */ static struct intr_event * -walk_intrs_events(void) { +walk_intrs_events(void) +{ struct intr_event *ie; static int i = 0; - for (; i < NIRQ; ) { - int j = i++; - ie = intr_events[j]; + while (i < NIRQ) { + ie = intr_events[i++]; if (ie != NULL) return (ie); } ==== //depot/projects/soc2006/intr_filter/i386/i386/intr_machdep.c#29 (text+ko) ==== @@ -214,14 +214,13 @@ /* Stray detection MD code */ static struct intr_event * -walk_intrs_src(void) { +walk_intrs_src(void) +{ struct intsrc *isrc; static int i = 0; - int j; - for (; i < NUM_IO_INTS;) { - j = i++; - isrc = interrupt_sources[j]; + while (i < NUM_IO_INTS) { + isrc = interrupt_sources[i++]; if (isrc != NULL && isrc->is_event != NULL) return (isrc->is_event); } ==== //depot/projects/soc2006/intr_filter/ia64/ia64/interrupt.c#21 (text+ko) ==== @@ -358,15 +358,14 @@ /* Stray detection MD code */ static struct intr_event * -walk_intr_ia64(void) { +walk_intr_ia64(void) +{ struct ia64_intr *ia64_i; static int i = 0; - int j; - for (; i < IA64_NUMI;) { - j = i++; + while (i < IA64_NUMI) { mtx_lock_spin(&ia64_intrs_lock); - ia64_i = ia64_intrs[j]; + ia64_i = ia64_intrs[i++]; mtx_unlock_spin(&ia64_intrs_lock); if (ia64_i != NULL && ia64_i->event != NULL) return (ia64_i->event); ==== //depot/projects/soc2006/intr_filter/powerpc/powerpc/intr_machdep.c#27 (text+ko) ==== @@ -283,12 +283,10 @@ { struct ppc_intr *intr; static int i = 0; - int j; - for (; i < ppc_nintrs; ) { - j = i++; + while (i < ppc_nintrs) { mtx_lock_spin(&ppc_intrs_lock); - intr = ppc_intrs[j]; + intr = ppc_intrs[i++]; mtx_unlock_spin(&ppc_intrs_lock); if (intr != NULL && intr->event != NULL) return (intr->event); ==== //depot/projects/soc2006/intr_filter/sparc64/sparc64/intr_machdep.c#21 (text+ko) ==== @@ -239,14 +239,13 @@ /* Stray detection MD code */ static struct intr_event * -walk_intr_sparc64(void) { +walk_intr_sparc64(void) +{ struct intr_vector *iv; static int i = 0; - int j; - for (; iiv_event != NULL) return (iv->iv_event); } ==== //depot/projects/soc2006/intr_filter/sun4v/sun4v/intr_machdep.c#5 (text+ko) ==== @@ -154,14 +154,13 @@ /* Stray detection MD code */ static struct intr_event * -walk_intr_sun4v(void) { +walk_intr_sun4v(void) +{ struct intr_vector *iv; static int i = 0; - int j; - for (; iiv_event != NULL) return (iv->iv_event); } From owner-p4-projects@FreeBSD.ORG Tue Jan 16 13:35:23 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 3BF8816A415; Tue, 16 Jan 2007 13:35:23 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id EDC6B16A40F for ; Tue, 16 Jan 2007 13:35:22 +0000 (UTC) (envelope-from piso@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id DCA7F13C45A for ; Tue, 16 Jan 2007 13:35:22 +0000 (UTC) (envelope-from piso@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0GDZMjm025876 for ; Tue, 16 Jan 2007 13:35:22 GMT (envelope-from piso@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0GDZ3Qg025837 for perforce@freebsd.org; Tue, 16 Jan 2007 13:35:03 GMT (envelope-from piso@freebsd.org) Date: Tue, 16 Jan 2007 13:35:03 GMT Message-Id: <200701161335.l0GDZ3Qg025837@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to piso@freebsd.org using -f From: Paolo Pisati To: Perforce Change Reviews Cc: Subject: PERFORCE change 112990 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 16 Jan 2007 13:35:23 -0000 http://perforce.freebsd.org/chv.cgi?CH=112990 Change 112990 by piso@piso_newluxor on 2007/01/16 13:34:25 IFC@112988 Affected files ... .. //depot/projects/soc2005/libalias/bin/sh/exec.c#2 integrate .. //depot/projects/soc2005/libalias/etc/rc.d/jail#3 integrate .. //depot/projects/soc2005/libalias/etc/rc.d/power_profile#2 integrate .. //depot/projects/soc2005/libalias/games/fortune/datfiles/fortunes#11 integrate .. //depot/projects/soc2005/libalias/games/fortune/datfiles/fortunes.sp.ok#2 integrate .. //depot/projects/soc2005/libalias/games/fortune/datfiles/fortunes2-o#2 integrate .. //depot/projects/soc2005/libalias/games/fortune/datfiles/zippy#2 integrate .. //depot/projects/soc2005/libalias/include/mqueue.h#2 integrate .. //depot/projects/soc2005/libalias/lib/libarchive/COPYING#2 integrate .. //depot/projects/soc2005/libalias/lib/libarchive/archive.h.in#6 integrate .. //depot/projects/soc2005/libalias/lib/libarchive/archive_check_magic.c#3 integrate .. //depot/projects/soc2005/libalias/lib/libarchive/archive_entry.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libarchive/archive_entry.c#3 integrate .. //depot/projects/soc2005/libalias/lib/libarchive/archive_entry.h#2 integrate .. //depot/projects/soc2005/libalias/lib/libarchive/archive_platform.h#4 integrate .. //depot/projects/soc2005/libalias/lib/libarchive/archive_private.h#6 integrate .. //depot/projects/soc2005/libalias/lib/libarchive/archive_read.3#4 integrate .. //depot/projects/soc2005/libalias/lib/libarchive/archive_read.c#7 integrate .. //depot/projects/soc2005/libalias/lib/libarchive/archive_read_data_into_buffer.c#3 integrate .. //depot/projects/soc2005/libalias/lib/libarchive/archive_read_data_into_fd.c#3 integrate .. //depot/projects/soc2005/libalias/lib/libarchive/archive_read_extract.c#5 integrate .. //depot/projects/soc2005/libalias/lib/libarchive/archive_read_open_fd.c#4 integrate .. //depot/projects/soc2005/libalias/lib/libarchive/archive_read_open_file.c#5 integrate .. //depot/projects/soc2005/libalias/lib/libarchive/archive_read_open_filename.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libarchive/archive_read_open_memory.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libarchive/archive_read_support_compression_all.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libarchive/archive_read_support_compression_bzip2.c#5 integrate .. //depot/projects/soc2005/libalias/lib/libarchive/archive_read_support_compression_compress.c#4 integrate .. //depot/projects/soc2005/libalias/lib/libarchive/archive_read_support_compression_gzip.c#4 integrate .. //depot/projects/soc2005/libalias/lib/libarchive/archive_read_support_compression_none.c#6 integrate .. //depot/projects/soc2005/libalias/lib/libarchive/archive_read_support_format_all.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libarchive/archive_read_support_format_cpio.c#5 integrate .. //depot/projects/soc2005/libalias/lib/libarchive/archive_read_support_format_iso9660.c#3 integrate .. //depot/projects/soc2005/libalias/lib/libarchive/archive_read_support_format_tar.c#6 integrate .. //depot/projects/soc2005/libalias/lib/libarchive/archive_read_support_format_zip.c#3 integrate .. //depot/projects/soc2005/libalias/lib/libarchive/archive_string.c#3 integrate .. //depot/projects/soc2005/libalias/lib/libarchive/archive_string.h#3 integrate .. //depot/projects/soc2005/libalias/lib/libarchive/archive_string_sprintf.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libarchive/archive_util.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libarchive/archive_util.c#3 integrate .. //depot/projects/soc2005/libalias/lib/libarchive/archive_write.3#4 integrate .. //depot/projects/soc2005/libalias/lib/libarchive/archive_write.c#5 integrate .. //depot/projects/soc2005/libalias/lib/libarchive/archive_write_open_fd.c#3 integrate .. //depot/projects/soc2005/libalias/lib/libarchive/archive_write_open_file.c#3 integrate .. //depot/projects/soc2005/libalias/lib/libarchive/archive_write_open_filename.c#3 integrate .. //depot/projects/soc2005/libalias/lib/libarchive/archive_write_open_memory.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libarchive/archive_write_set_compression_bzip2.c#3 integrate .. //depot/projects/soc2005/libalias/lib/libarchive/archive_write_set_compression_gzip.c#3 integrate .. //depot/projects/soc2005/libalias/lib/libarchive/archive_write_set_compression_none.c#3 integrate .. //depot/projects/soc2005/libalias/lib/libarchive/archive_write_set_format.c#3 integrate .. //depot/projects/soc2005/libalias/lib/libarchive/archive_write_set_format_by_name.c#3 integrate .. //depot/projects/soc2005/libalias/lib/libarchive/archive_write_set_format_cpio.c#3 integrate .. //depot/projects/soc2005/libalias/lib/libarchive/archive_write_set_format_pax.c#3 integrate .. //depot/projects/soc2005/libalias/lib/libarchive/archive_write_set_format_shar.c#3 integrate .. //depot/projects/soc2005/libalias/lib/libarchive/archive_write_set_format_ustar.c#3 integrate .. //depot/projects/soc2005/libalias/lib/libarchive/config_freebsd.h#2 integrate .. //depot/projects/soc2005/libalias/lib/libarchive/libarchive-formats.5#3 integrate .. //depot/projects/soc2005/libalias/lib/libarchive/libarchive.3#4 integrate .. //depot/projects/soc2005/libalias/lib/libarchive/tar.5#4 integrate .. //depot/projects/soc2005/libalias/lib/libc/amd64/SYS.h#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/amd64/gen/_setjmp.S#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/amd64/gen/ldexp.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/amd64/gen/modf.S#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/amd64/gen/setjmp.S#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/amd64/gen/sigsetjmp.S#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/amd64/sys/brk.S#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/amd64/sys/cerror.S#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/amd64/sys/exect.S#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/amd64/sys/pipe.S#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/amd64/sys/ptrace.S#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/amd64/sys/reboot.S#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/amd64/sys/sbrk.S#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/amd64/sys/setlogin.S#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/amd64/sys/sigreturn.S#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/amd64/sys/vfork.S#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/compat-43/creat.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/compat-43/creat.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/compat-43/gethostid.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/compat-43/gethostid.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/compat-43/getwd.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/compat-43/killpg.2#3 integrate .. //depot/projects/soc2005/libalias/lib/libc/compat-43/killpg.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/compat-43/sethostid.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/compat-43/setpgrp.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/compat-43/setrgid.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/compat-43/setruid.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/compat-43/setruid.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/compat-43/sigcompat.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/compat-43/sigpause.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/compat-43/sigsetmask.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/compat-43/sigvec.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/db/btree/bt_close.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/db/btree/bt_conv.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/db/btree/bt_debug.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/db/btree/bt_delete.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/db/btree/bt_get.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/db/btree/bt_open.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/db/btree/bt_overflow.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/db/btree/bt_page.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/db/btree/bt_put.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/db/btree/bt_search.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/db/btree/bt_seq.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/db/btree/bt_split.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/db/btree/bt_utils.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/db/btree/btree.h#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/db/btree/extern.h#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/db/db/db.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/db/hash/extern.h#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/db/hash/hash.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/db/hash/hash.h#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/db/hash/hash_bigkey.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/db/hash/hash_buf.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/db/hash/hash_func.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/db/hash/hash_log2.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/db/hash/hash_page.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/db/hash/ndbm.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/db/hash/page.h#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/db/man/btree.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/db/man/dbopen.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/db/man/hash.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/db/man/mpool.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/db/man/recno.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/db/mpool/mpool.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/db/recno/extern.h#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/db/recno/rec_close.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/db/recno/rec_delete.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/db/recno/rec_get.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/db/recno/rec_open.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/db/recno/rec_put.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/db/recno/rec_search.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/db/recno/rec_seq.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/db/recno/rec_utils.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/db/recno/recno.h#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/db/test/btree.tests/main.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/db/test/dbtest.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/db/test/hash.tests/driver2.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/db/test/hash.tests/tcreat3.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/db/test/hash.tests/tdel.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/db/test/hash.tests/thash4.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/db/test/hash.tests/tread2.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/db/test/hash.tests/tseq.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/db/test/hash.tests/tverify.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/__xuname.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/_spinlock_stub.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/alarm.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/alarm.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/assert.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/clock.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/clock.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/closedir.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/confstr.3#3 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/confstr.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/crypt.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/ctermid.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/ctermid.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/daemon.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/daemon.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/devname.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/devname.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/directory.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/disklabel.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/err.3#4 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/err.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/errlst.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/exec.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/exec.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/fnmatch.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/fnmatch.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/frexp.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/fstab.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/fts.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/fts.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/getbootfile.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/getbootfile.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/getbsize.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/getbsize.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/getcap.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/getcap.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/getcwd.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/getcwd.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/getdiskbyname.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/getdomainname.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/getdomainname.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/getfsent.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/getgrent.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/getgrouplist.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/getgrouplist.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/gethostname.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/gethostname.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/getloadavg.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/getloadavg.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/getlogin.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/getmntinfo.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/getmntinfo.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/getnetgrent.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/getnetgrent.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/getosreldate.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/getpagesize.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/getpagesize.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/getpass.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/getpwent.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/getttyent.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/getttyent.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/getusershell.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/getusershell.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/getvfsbyname.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/getvfsbyname.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/glob.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/glob.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/initgroups.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/initgroups.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/isatty.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/ldexp.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/modf.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/nice.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/nice.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/nlist.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/nlist.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/opendir.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/pause.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/pause.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/popen.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/popen.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/psignal.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/psignal.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/pw_scan.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/pw_scan.h#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/pwcache.3#3 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/pwcache.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/raise.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/raise.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/readdir.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/rewinddir.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/scandir.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/scandir.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/seekdir.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/setdomainname.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/sethostname.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/setjmp.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/setjmperr.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/setmode.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/setmode.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/siginterrupt.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/siginterrupt.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/siglist.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/signal.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/signal.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/sigsetops.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/sigsetops.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/sleep.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/sleep.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/stringlist.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/strtofflags.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/strtofflags.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/sysconf.3#3 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/sysconf.c#3 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/sysctl.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/sysctl.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/syslog.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/syslog.c#3 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/tcgetpgrp.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/tcsendbreak.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/tcsetattr.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/tcsetpgrp.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/telldir.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/termios.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/time.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/time.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/times.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/times.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/timezone.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/timezone.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/ttyname.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/ttyname.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/ttyslot.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/tzset.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/ualarm.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/ualarm.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/uname.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/uname.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/unvis.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/unvis.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/usleep.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/usleep.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/utime.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/utime.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/valloc.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/valloc.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/vis.3#3 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/vis.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/wait.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/wait3.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gen/waitpid.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gmon/gmon.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gmon/mcount.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/gmon/moncontrol.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/i386/SYS.h#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/i386/gen/_setjmp.S#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/i386/gen/fabs.S#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/i386/gen/ldexp.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/i386/gen/modf.S#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/i386/gen/setjmp.S#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/i386/gen/sigsetjmp.S#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/i386/stdlib/abs.S#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/i386/stdlib/div.S#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/i386/stdlib/labs.S#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/i386/string/bcopy.S#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/i386/sys/Ovfork.S#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/i386/sys/brk.S#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/i386/sys/cerror.S#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/i386/sys/exect.S#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/i386/sys/i386_get_ldt.2#3 integrate .. //depot/projects/soc2005/libalias/lib/libc/i386/sys/pipe.S#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/i386/sys/ptrace.S#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/i386/sys/reboot.S#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/i386/sys/sbrk.S#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/i386/sys/setlogin.S#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/i386/sys/sigreturn.S#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/i386/sys/syscall.S#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/include/libc_private.h#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/include/spinlock.h#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/inet/inet_addr.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/inet/inet_lnaof.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/inet/inet_makeaddr.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/inet/inet_netof.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/inet/inet_network.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/inet/inet_ntoa.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/locale/ctype.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/locale/digittoint.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/locale/euc.5#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/locale/gbk.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/locale/isalnum.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/locale/isalpha.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/locale/isascii.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/locale/isblank.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/locale/iscntrl.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/locale/isctype.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/locale/isdigit.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/locale/isgraph.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/locale/islower.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/locale/isprint.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/locale/ispunct.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/locale/isspace.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/locale/isupper.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/locale/iswalnum.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/locale/iswctype.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/locale/isxdigit.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/locale/localeconv.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/locale/mblen.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/locale/mbstowcs.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/locale/mbtowc.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/locale/multibyte.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/locale/none.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/locale/rune.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/locale/runetype.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/locale/setlocale.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/locale/setlocale.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/locale/setrunelocale.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/locale/table.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/locale/toascii.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/locale/tolower.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/locale/tolower.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/locale/toupper.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/locale/toupper.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/locale/towlower.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/locale/towupper.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/locale/utf8.5#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/locale/wcstoimax.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/locale/wcstol.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/locale/wcstoll.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/locale/wcstombs.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/locale/wcstoul.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/locale/wcstoull.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/locale/wcstoumax.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/locale/wctomb.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/locale/wcwidth.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/net/byteorder.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/net/gethostbydns.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/net/gethostbyht.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/net/gethostbyname.3#4 integrate .. //depot/projects/soc2005/libalias/lib/libc/net/getipnodebyname.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/net/getnetbydns.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/net/getnetbyht.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/net/getnetent.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/net/getproto.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/net/getprotoent.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/net/getprotoent.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/net/getprotoname.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/net/getservent.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/net/getservent.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/net/inet.3#3 integrate .. //depot/projects/soc2005/libalias/lib/libc/net/inet_net.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/net/linkaddr.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/net/linkaddr.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/net/map_v4v6.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/net/nsdispatch.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/net/rcmd.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/net/rcmd.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/net/rcmdsh.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/net/recv.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/net/resolver.3#4 integrate .. //depot/projects/soc2005/libalias/lib/libc/net/send.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/quad/TESTS/divrem.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/quad/TESTS/mul.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/quad/adddi3.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/quad/anddi3.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/quad/ashldi3.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/quad/ashrdi3.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/quad/cmpdi2.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/quad/divdi3.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/quad/fixdfdi.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/quad/fixsfdi.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/quad/fixunsdfdi.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/quad/fixunssfdi.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/quad/floatdidf.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/quad/floatdisf.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/quad/floatunsdidf.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/quad/iordi3.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/quad/lshldi3.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/quad/lshrdi3.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/quad/moddi3.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/quad/muldi3.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/quad/negdi2.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/quad/notdi2.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/quad/qdivrem.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/quad/quad.h#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/quad/subdi3.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/quad/ucmpdi2.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/quad/udivdi3.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/quad/umoddi3.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/quad/xordi3.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/regex/cname.h#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/regex/engine.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/regex/regcomp.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/regex/regerror.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/regex/regex.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/regex/regex2.h#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/regex/regexec.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/regex/regfree.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/regex/utils.h#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/resolv/herror.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/resolv/res_comp.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/resolv/res_debug.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/resolv/res_init.c#4 integrate .. //depot/projects/soc2005/libalias/lib/libc/resolv/res_mkquery.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/resolv/res_query.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/resolv/res_send.c#5 integrate .. //depot/projects/soc2005/libalias/lib/libc/sparc64/SYS.h#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sparc64/fpu/fpu.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sparc64/fpu/fpu_add.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sparc64/fpu/fpu_arith.h#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sparc64/fpu/fpu_compare.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sparc64/fpu/fpu_div.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sparc64/fpu/fpu_emu.h#3 integrate .. //depot/projects/soc2005/libalias/lib/libc/sparc64/fpu/fpu_explode.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sparc64/fpu/fpu_implode.c#3 integrate .. //depot/projects/soc2005/libalias/lib/libc/sparc64/fpu/fpu_mul.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sparc64/fpu/fpu_sqrt.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sparc64/fpu/fpu_subr.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sparc64/gen/_setjmp.S#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sparc64/gen/fixunsdfsi.S#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sparc64/gen/modf.S#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sparc64/gen/setjmp.S#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sparc64/sys/brk.S#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sparc64/sys/cerror.S#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sparc64/sys/exect.S#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sparc64/sys/pipe.S#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sparc64/sys/ptrace.S#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sparc64/sys/sbrk.S#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sparc64/sys/setlogin.S#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/_flock_stub.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/clrerr.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/fclose.3#3 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/fclose.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/fdopen.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/feof.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/ferror.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/ferror.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/fflush.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/fflush.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/fgetc.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/fgetln.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/fgetln.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/fgetpos.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/fgets.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/fgets.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/fgetwln.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/fgetws.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/fileno.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/findfp.c#3 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/flags.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/floatio.h#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/fopen.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/fopen.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/fprintf.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/fpurge.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/fputc.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/fputs.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/fputs.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/fputws.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/fread.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/fread.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/freopen.c#4 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/fscanf.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/fseek.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/fseek.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/fsetpos.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/ftell.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/funopen.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/funopen.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/fvwrite.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/fvwrite.h#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/fwalk.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/fwrite.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/getc.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/getc.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/getchar.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/gets.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/getw.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/getwc.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/glue.h#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/local.h#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/makebuf.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/mktemp.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/mktemp.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/perror.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/printf.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/printf.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/putc.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/putc.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/putchar.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/puts.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/putw.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/putwc.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/refill.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/remove.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/remove.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/rewind.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/rget.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/scanf.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/scanf.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/setbuf.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/setbuf.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/setbuffer.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/setvbuf.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/snprintf.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/sprintf.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/sscanf.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/stdio.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/stdio.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/tempnam.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/tmpfile.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/tmpnam.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/tmpnam.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/ungetc.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/ungetc.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/ungetwc.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/vfprintf.c#4 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/vfscanf.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/vfwprintf.c#3 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/vfwscanf.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/vprintf.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/vscanf.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/vsnprintf.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/vsprintf.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/vsscanf.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/vswscanf.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/wbuf.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/wprintf.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/wscanf.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdio/wsetup.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdlib/abort.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdlib/abort.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdlib/abs.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdlib/abs.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdlib/alloca.3#3 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdlib/atexit.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdlib/atexit.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdlib/atexit.h#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdlib/atof.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdlib/atof.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdlib/atoi.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdlib/atoi.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdlib/atol.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdlib/atol.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdlib/atoll.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdlib/bsearch.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdlib/bsearch.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdlib/div.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdlib/div.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdlib/exit.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdlib/exit.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdlib/getenv.3#4 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdlib/getenv.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdlib/getopt.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdlib/getopt.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdlib/getsubopt.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdlib/getsubopt.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdlib/heapsort.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdlib/labs.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdlib/labs.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdlib/ldiv.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdlib/ldiv.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdlib/memory.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdlib/merge.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdlib/putenv.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdlib/qsort.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdlib/qsort.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdlib/radixsort.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdlib/radixsort.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdlib/rand.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdlib/rand.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdlib/random.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdlib/random.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdlib/realpath.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdlib/setenv.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdlib/strtod.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdlib/strtoimax.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdlib/strtol.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdlib/strtol.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdlib/strtoll.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdlib/strtoq.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdlib/strtoul.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdlib/strtoul.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdlib/strtoull.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdlib/strtoumax.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdlib/strtouq.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdlib/system.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdlib/system.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdtime/ctime.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/stdtime/strftime.3#3 integrate .. //depot/projects/soc2005/libalias/lib/libc/string/bcmp.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/string/bcmp.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/string/bcopy.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/string/bcopy.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/string/bstring.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/string/bzero.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/string/ffs.3#3 integrate .. //depot/projects/soc2005/libalias/lib/libc/string/ffs.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/string/ffsl.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/string/fls.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/string/flsl.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/string/index.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/string/index.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/string/memccpy.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/string/memccpy.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/string/memchr.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/string/memchr.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/string/memcmp.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/string/memcmp.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/string/memcpy.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/string/memmove.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/string/memset.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/string/memset.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/string/rindex.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/string/strcasecmp.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/string/strcasecmp.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/string/strcasestr.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/string/strcat.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/string/strcat.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/string/strchr.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/string/strcmp.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/string/strcmp.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/string/strcoll.3#3 integrate .. //depot/projects/soc2005/libalias/lib/libc/string/strcpy.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/string/strcpy.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/string/strcspn.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/string/strdup.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/string/strdup.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/string/strerror.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/string/strerror.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/string/string.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/string/strlen.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/string/strlen.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/string/strmode.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/string/strmode.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/string/strncat.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/string/strncmp.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/string/strncpy.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/string/strnstr.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/string/strpbrk.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/string/strpbrk.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/string/strsep.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/string/strsep.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/string/strsignal.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/string/strspn.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/string/strstr.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/string/strstr.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/string/strxfrm.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/string/swab.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/string/swab.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/string/wcscmp.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/string/wcscoll.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/string/wcsncmp.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/string/wcsncpy.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/string/wcsstr.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/string/wcswidth.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/string/wcsxfrm.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/string/wmemchr.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/__error.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/_exit.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/accept.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/access.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/acct.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/adjtime.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/bind.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/brk.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/chdir.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/chflags.2#4 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/chmod.2#3 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/chown.2#3 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/chroot.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/clock_gettime.2#4 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/close.2#3 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/connect.2#4 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/dup.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/execve.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/fcntl.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/flock.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/fork.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/fsync.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/ftruncate.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/getdirentries.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/getdtablesize.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/getfh.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/getfsstat.2#3 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/getgid.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/getgroups.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/getitimer.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/getlogin.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/getpeername.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/getpgrp.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/getpid.2#3 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/getpriority.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/getrlimit.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/getrusage.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/getsockname.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/getsockopt.2#3 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/gettimeofday.2#3 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/getuid.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/intro.2#3 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/ioctl.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/issetugid.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/kill.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/ktrace.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/link.2#3 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/listen.2#3 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/lseek.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/lseek.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/madvise.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/mincore.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/minherit.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/mkdir.2#3 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/mkfifo.2#3 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/mknod.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/mlock.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/mmap.2#3 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/mmap.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/mount.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/mprotect.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/msync.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/munmap.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/nanosleep.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/nfssvc.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/open.2#3 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/pathconf.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/pipe.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/pread.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/profil.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/pwrite.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/quotactl.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/read.2#4 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/readlink.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/reboot.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/recv.2#4 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/rename.2#3 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/revoke.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/rmdir.2#3 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/select.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/send.2#3 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/setgroups.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/setpgid.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/setregid.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/setreuid.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/setsid.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/setuid.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/shutdown.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/sigaction.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/sigaltstack.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/sigpending.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/sigprocmask.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/sigreturn.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/sigstack.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/sigsuspend.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/socket.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/socketpair.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/stat.2#3 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/statfs.2#3 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/swapon.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/symlink.2#3 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/sync.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/sysarch.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/syscall.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/truncate.2#3 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/truncate.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/umask.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/undelete.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/unlink.2#3 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/utimes.2#4 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/vfork.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/wait.2#2 integrate .. //depot/projects/soc2005/libalias/lib/libc/sys/write.2#3 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/pthread_private.h#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_accept.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_attr_destroy.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_attr_getdetachstate.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_attr_getstackaddr.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_attr_getstacksize.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_attr_init.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_attr_setcreatesuspend_np.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_attr_setdetachstate.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_attr_setstackaddr.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_attr_setstacksize.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_bind.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_clean.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_close.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_cond.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_condattr_destroy.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_condattr_init.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_connect.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_create.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_detach.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_dup.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_dup2.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_equal.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_execve.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_exit.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_fchmod.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_fchown.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_fcntl.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_fd.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_find_thread.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_flock.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_fork.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_fstat.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_fstatfs.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_fsync.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_gc.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_getdirentries.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_getpeername.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_getprio.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_getsockname.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_getsockopt.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_info.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_init.c#3 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_ioctl.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_join.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_kern.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_kill.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_listen.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_multi_np.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_mutex.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_mutexattr_destroy.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_nanosleep.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_once.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_open.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_pipe.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_read.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_readv.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_recvfrom.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_recvmsg.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_resume_np.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_select.c#3 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_self.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_sendmsg.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_sendto.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_seterrno.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_setprio.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_setsockopt.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_shutdown.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_sig.c#3 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_sigaction.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_sigmask.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_sigpending.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_sigprocmask.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_sigsuspend.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_sigwait.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_single_np.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_socket.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_socketpair.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_spec.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_spinlock.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_suspend_np.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_wait4.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_write.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_writev.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libc_r/uthread/uthread_yield.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libcompat/4.1/ftime.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libcompat/4.1/getpw.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libcompat/4.1/stty.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libcompat/4.3/cfree.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libcompat/4.3/re_comp.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libcompat/4.3/regex.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libcompat/4.3/rexec.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libcompat/4.3/rexec.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libcompat/4.4/cuserid.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libcompat/regexp/regexp.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libipx/ipx.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libipx/ipx_addr.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libipx/ipx_ntoa.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libkvm/kvm.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libkvm/kvm.c#3 integrate .. //depot/projects/soc2005/libalias/lib/libkvm/kvm.h#2 integrate .. //depot/projects/soc2005/libalias/lib/libkvm/kvm_amd64.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libkvm/kvm_arm.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libkvm/kvm_file.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libkvm/kvm_geterr.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libkvm/kvm_getfiles.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libkvm/kvm_getloadavg.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libkvm/kvm_getloadavg.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libkvm/kvm_getprocs.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libkvm/kvm_i386.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libkvm/kvm_nlist.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libkvm/kvm_open.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libkvm/kvm_private.h#2 integrate .. //depot/projects/soc2005/libalias/lib/libkvm/kvm_proc.c#5 integrate .. //depot/projects/soc2005/libalias/lib/libkvm/kvm_read.3#2 integrate .. //depot/projects/soc2005/libalias/lib/libkvm/kvm_sparc.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libkvm/kvm_sparc64.c#3 integrate .. //depot/projects/soc2005/libalias/lib/libncp/ipx.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libncp/ipxsap.h#2 integrate .. //depot/projects/soc2005/libalias/lib/libncp/ncpl_bind.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libncp/ncpl_conn.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libncp/ncpl_file.c#3 integrate .. //depot/projects/soc2005/libalias/lib/libncp/ncpl_misc.c#3 integrate .. //depot/projects/soc2005/libalias/lib/libncp/ncpl_msg.c#3 integrate .. //depot/projects/soc2005/libalias/lib/libncp/ncpl_net.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libncp/ncpl_nls.c#3 integrate .. //depot/projects/soc2005/libalias/lib/libncp/ncpl_queue.c#3 integrate .. //depot/projects/soc2005/libalias/lib/libncp/ncpl_rcfile.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libncp/ncpl_rpc.c#3 integrate .. //depot/projects/soc2005/libalias/lib/libncp/ncpl_subr.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libncp/sap.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libncurses/pathnames.h#2 integrate .. //depot/projects/soc2005/libalias/lib/libncurses/termcap.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libpthread/thread/thr_attr_destroy.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libpthread/thread/thr_attr_getdetachstate.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libpthread/thread/thr_attr_getstackaddr.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libpthread/thread/thr_attr_getstacksize.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libpthread/thread/thr_attr_init.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libpthread/thread/thr_attr_setcreatesuspend_np.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libpthread/thread/thr_attr_setdetachstate.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libpthread/thread/thr_attr_setstackaddr.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libpthread/thread/thr_attr_setstacksize.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libpthread/thread/thr_clean.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libpthread/thread/thr_close.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libpthread/thread/thr_cond.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libpthread/thread/thr_condattr_destroy.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libpthread/thread/thr_condattr_init.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libpthread/thread/thr_create.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libpthread/thread/thr_detach.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libpthread/thread/thr_equal.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libpthread/thread/thr_exit.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libpthread/thread/thr_fcntl.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libpthread/thread/thr_find_thread.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libpthread/thread/thr_fork.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libpthread/thread/thr_fsync.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libpthread/thread/thr_getprio.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libpthread/thread/thr_info.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libpthread/thread/thr_init.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libpthread/thread/thr_join.c#3 integrate .. //depot/projects/soc2005/libalias/lib/libpthread/thread/thr_kill.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libpthread/thread/thr_mattr_kind_np.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libpthread/thread/thr_multi_np.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libpthread/thread/thr_mutex.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libpthread/thread/thr_mutexattr_destroy.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libpthread/thread/thr_nanosleep.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libpthread/thread/thr_once.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libpthread/thread/thr_open.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libpthread/thread/thr_private.h#2 integrate .. //depot/projects/soc2005/libalias/lib/libpthread/thread/thr_read.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libpthread/thread/thr_readv.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libpthread/thread/thr_resume_np.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libpthread/thread/thr_select.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libpthread/thread/thr_self.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libpthread/thread/thr_seterrno.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libpthread/thread/thr_setprio.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libpthread/thread/thr_sig.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libpthread/thread/thr_sigaction.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libpthread/thread/thr_sigmask.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libpthread/thread/thr_sigprocmask.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libpthread/thread/thr_sigsuspend.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libpthread/thread/thr_sigwait.c#2 integrate .. //depot/projects/soc2005/libalias/lib/libpthread/thread/thr_single_np.c#2 integrate >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Tue Jan 16 15:31:53 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id B5C1516A412; Tue, 16 Jan 2007 15:31:53 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 65A4616A415 for ; Tue, 16 Jan 2007 15:31:53 +0000 (UTC) (envelope-from zec@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 3F9FD13C44B for ; Tue, 16 Jan 2007 15:31:53 +0000 (UTC) (envelope-from zec@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0GFVrCN046730 for ; Tue, 16 Jan 2007 15:31:53 GMT (envelope-from zec@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0GFVrsl046725 for perforce@freebsd.org; Tue, 16 Jan 2007 15:31:53 GMT (envelope-from zec@FreeBSD.org) Date: Tue, 16 Jan 2007 15:31:53 GMT Message-Id: <200701161531.l0GFVrsl046725@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to zec@FreeBSD.org using -f From: Marko Zec To: Perforce Change Reviews Cc: Subject: PERFORCE change 113000 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 16 Jan 2007 15:31:54 -0000 http://perforce.freebsd.org/chv.cgi?CH=113000 Change 113000 by zec@zec_tca51 on 2007/01/16 15:31:45 Delete the two kernel config files of my own that should never have been added to p4. Recreate the .cvsignore file in sys/i386/conf. NB the delete / add trick seems to successfully bypass the .cvsignore barrier that the p4 -> cvsup exporter imposes. Affected files ... .. //depot/projects/vimage/src/sys/i386/conf/.cvsignore#3 add .. //depot/projects/vimage/src/sys/i386/conf/TCA51C#2 delete .. //depot/projects/vimage/src/sys/i386/conf/TCA51V#2 delete Differences ... From owner-p4-projects@FreeBSD.ORG Tue Jan 16 19:00:22 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 60B9D16A47C; Tue, 16 Jan 2007 19:00:22 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 2A5DB16A412 for ; Tue, 16 Jan 2007 19:00:22 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id E848113C46A for ; Tue, 16 Jan 2007 19:00:21 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0GJ0L1d097829 for ; Tue, 16 Jan 2007 19:00:21 GMT (envelope-from hselasky@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0GJ0LMB097826 for perforce@freebsd.org; Tue, 16 Jan 2007 19:00:21 GMT (envelope-from hselasky@FreeBSD.org) Date: Tue, 16 Jan 2007 19:00:21 GMT Message-Id: <200701161900.l0GJ0LMB097826@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to hselasky@FreeBSD.org using -f From: Hans Petter Selasky To: Perforce Change Reviews Cc: Subject: PERFORCE change 113011 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 16 Jan 2007 19:00:22 -0000 http://perforce.freebsd.org/chv.cgi?CH=113011 Change 113011 by hselasky@hselasky_mini_itx on 2007/01/16 18:59:40 Update if_aue so that it works with newer device revisions, starting at bcdDevice = 0x0201. Affected files ... .. //depot/projects/usb/src/sys/dev/usb/if_aue.c#16 edit .. //depot/projects/usb/src/sys/dev/usb/if_auereg.h#11 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb/if_aue.c#16 (text+ko) ==== @@ -816,6 +816,10 @@ sc->sc_product = uaa->product; sc->sc_vendor = uaa->vendor; + if (uaa->release >= 0x0201) { + sc->sc_flags |= AUE_FLAG_VER_2; /* XXX currently undocumented */ + } + usbd_set_desc(dev, uaa->device); snprintf(sc->sc_name, sizeof(sc->sc_name), "%s", @@ -1120,28 +1124,39 @@ return; tr_transferred: + DPRINTF(sc, 10, "received %d bytes\n", xfer->actlen); - if (xfer->actlen <= (4 + ETHER_CRC_LEN)) { - ifp->if_ierrors++; - goto tr_setup; - } + if (sc->sc_flags & AUE_FLAG_VER_2) { + + if (xfer->actlen == 0) { + ifp->if_ierrors++; + goto tr_setup; + } + + } else { + + if (xfer->actlen <= (4 + ETHER_CRC_LEN)) { + ifp->if_ierrors++; + goto tr_setup; + } + + usbd_copy_out(&(xfer->buf_data), xfer->actlen - 4, &(sc->sc_rxpkt), + sizeof(sc->sc_rxpkt)); - usbd_copy_out(&(xfer->buf_data), xfer->actlen - 4, &(sc->sc_rxpkt), - sizeof(sc->sc_rxpkt)); + /* turn off all the non-error bits + * in the rx status word: + */ + sc->sc_rxpkt.aue_rxstat &= AUE_RXSTAT_MASK; - /* turn off all the non-error bits - * in the rx status word: - */ - sc->sc_rxpkt.aue_rxstat &= AUE_RXSTAT_MASK; + if (sc->sc_rxpkt.aue_rxstat) { + ifp->if_ierrors++; + goto tr_setup; + } - if (sc->sc_rxpkt.aue_rxstat) { - ifp->if_ierrors++; - goto tr_setup; + /* No errors; receive the packet. */ + xfer->actlen -= (4 + ETHER_CRC_LEN); } - /* No errors; receive the packet. */ - xfer->actlen -= (4 + ETHER_CRC_LEN); - m = usbd_ether_get_mbuf(); if (m == NULL) { @@ -1221,7 +1236,7 @@ return; tr_transferred: - DPRINTF(sc, 10, "transfer complete\n"); + DPRINTF(sc, 10, "transfer of %d bytes complete\n", xfer->actlen); ifp->if_opackets++; ifp->if_drv_flags &= ~IFF_DRV_OACTIVE; @@ -1250,21 +1265,31 @@ m->m_pkthdr.len = MCLBYTES; } - xfer->length = (m->m_pkthdr.len + 2); + if (sc->sc_flags & AUE_FLAG_VER_2) { + + xfer->length = m->m_pkthdr.len; + + usbd_m_copy_in(&(xfer->buf_data), 0, + m, 0, m->m_pkthdr.len); + + } else { + + xfer->length = (m->m_pkthdr.len + 2); - /* - * The ADMtek documentation says that the packet length is - * supposed to be specified in the first two bytes of the - * transfer, however it actually seems to ignore this info - * and base the frame size on the bulk transfer length. - */ - buf[0] = (u_int8_t)(m->m_pkthdr.len); - buf[1] = (u_int8_t)(m->m_pkthdr.len >> 8); + /* + * The ADMtek documentation says that the packet length is + * supposed to be specified in the first two bytes of the + * transfer, however it actually seems to ignore this info + * and base the frame size on the bulk transfer length. + */ + buf[0] = (u_int8_t)(m->m_pkthdr.len); + buf[1] = (u_int8_t)(m->m_pkthdr.len >> 8); - usbd_copy_in(&(xfer->buf_data), 0, buf, 2); + usbd_copy_in(&(xfer->buf_data), 0, buf, 2); - usbd_m_copy_in(&(xfer->buf_data), 2, - m, 0, m->m_pkthdr.len); + usbd_m_copy_in(&(xfer->buf_data), 2, + m, 0, m->m_pkthdr.len); + } /* * if there's a BPF listener, bounce a copy ==== //depot/projects/usb/src/sys/dev/usb/if_auereg.h#11 (text+ko) ==== @@ -227,6 +227,7 @@ #define AUE_FLAG_LL_READY 0x0040 /* Lower Layer Ready */ #define AUE_FLAG_HL_READY 0x0080 /* Higher Layer Ready */ #define AUE_FLAG_INTR_STALL 0x0100 /* wait for clearing of stall */ +#define AUE_FLAG_VER_2 0x0200 /* chip is version 2 */ uint8_t sc_name[16]; }; From owner-p4-projects@FreeBSD.ORG Tue Jan 16 21:10:08 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 1A01016A47E; Tue, 16 Jan 2007 21:10:08 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id B7D6316A415; Tue, 16 Jan 2007 21:10:07 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from server.baldwin.cx (66-23-211-162.clients.speedfactory.net [66.23.211.162]) by mx1.freebsd.org (Postfix) with ESMTP id 5B9E913C45A; Tue, 16 Jan 2007 21:10:07 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from localhost.corp.yahoo.com (john@localhost [127.0.0.1]) (authenticated bits=0) by server.baldwin.cx (8.13.6/8.13.6) with ESMTP id l0GLA1M8047029; Tue, 16 Jan 2007 16:10:01 -0500 (EST) (envelope-from jhb@freebsd.org) From: John Baldwin To: Roman Divacky Date: Tue, 16 Jan 2007 15:52:36 -0500 User-Agent: KMail/1.9.1 References: <200701141353.l0EDr4Bn085459@repoman.freebsd.org> In-Reply-To: <200701141353.l0EDr4Bn085459@repoman.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-15" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200701161552.36888.jhb@freebsd.org> X-Greylist: Sender succeeded SMTP AUTH authentication, not delayed by milter-greylist-2.0.2 (server.baldwin.cx [127.0.0.1]); Tue, 16 Jan 2007 16:10:01 -0500 (EST) X-Virus-Scanned: ClamAV 0.88.3/2457/Tue Jan 16 06:53:04 2007 on server.baldwin.cx X-Virus-Status: Clean X-Spam-Status: No, score=-4.4 required=4.2 tests=ALL_TRUSTED,AWL,BAYES_00 autolearn=ham version=3.1.3 X-Spam-Checker-Version: SpamAssassin 3.1.3 (2006-06-01) on server.baldwin.cx Cc: Perforce Change Reviews Subject: Re: PERFORCE change 112893 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 16 Jan 2007 21:10:08 -0000 On Sunday 14 January 2007 08:53, Roman Divacky wrote: > http://perforce.freebsd.org/chv.cgi?CH=112893 > > Change 112893 by rdivacky@rdivacky_witten on 2007/01/14 13:52:42 > > Make linux_vfork() actually work. This enables make to work again > with 2.6 You should be using RFSTOPPED and starting the new process up after you set P_PPWAIT before you block to avoid races. -- John Baldwin From owner-p4-projects@FreeBSD.ORG Tue Jan 16 21:10:23 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 0099B16A58F; Tue, 16 Jan 2007 21:10:22 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id CA26F16A574 for ; Tue, 16 Jan 2007 21:10:22 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from server.baldwin.cx (66-23-211-162.clients.speedfactory.net [66.23.211.162]) by mx1.freebsd.org (Postfix) with ESMTP id 52BED13C45A for ; Tue, 16 Jan 2007 21:10:12 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from localhost.corp.yahoo.com (john@localhost [127.0.0.1]) (authenticated bits=0) by server.baldwin.cx (8.13.6/8.13.6) with ESMTP id l0GLA1M9047029; Tue, 16 Jan 2007 16:10:07 -0500 (EST) (envelope-from jhb@freebsd.org) From: John Baldwin To: Kip Macy Date: Tue, 16 Jan 2007 15:55:35 -0500 User-Agent: KMail/1.9.1 References: <200701150005.l0F05DZt019533@repoman.freebsd.org> In-Reply-To: <200701150005.l0F05DZt019533@repoman.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-15" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200701161555.36296.jhb@freebsd.org> X-Greylist: Sender succeeded SMTP AUTH authentication, not delayed by milter-greylist-2.0.2 (server.baldwin.cx [127.0.0.1]); Tue, 16 Jan 2007 16:10:07 -0500 (EST) X-Virus-Scanned: ClamAV 0.88.3/2457/Tue Jan 16 06:53:04 2007 on server.baldwin.cx X-Virus-Status: Clean X-Spam-Status: No, score=-4.4 required=4.2 tests=ALL_TRUSTED,AWL,BAYES_00 autolearn=ham version=3.1.3 X-Spam-Checker-Version: SpamAssassin 3.1.3 (2006-06-01) on server.baldwin.cx Cc: Perforce Change Reviews Subject: Re: PERFORCE change 112916 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 16 Jan 2007 21:10:24 -0000 On Sunday 14 January 2007 19:05, Kip Macy wrote: > http://perforce.freebsd.org/chv.cgi?CH=112916 > > Change 112916 by kmacy@kmacy_serendipity:sam_wifi on 2007/01/15 00:04:17 > > ensure that the ic lock is acquired before the driver softc lock > enroll them in the proper order in WITNESS > > Affected files ... > > .. //depot/projects/wifi/sys/kern/subr_witness.c#20 edit > > Differences ... > > ==== //depot/projects/wifi/sys/kern/subr_witness.c#20 (text+ko) ==== > > @@ -361,6 +361,18 @@ > { "nfsd_mtx", &lock_class_mtx_sleep }, > { "so_snd", &lock_class_mtx_sleep }, > { NULL, NULL }, > + > + /* > + * IEEE 802.11 > + */ > + { "802.11 com lock", &lock_class_mtx_sleep}, > + { NULL, NULL }, > + /* > + * Network drivers > + */ > + { "network driver", &lock_class_mtx_sleep}, > + { NULL, NULL }, > + This doesn't encode any orders. You probably need to drop the NULL, NULL after "802.11 com lock". Basically, the order list is a list of lists, with each list terminated by a NULL, NULL, and the list of lists terminated by a double NULL, NULL. -- John Baldwin From owner-p4-projects@FreeBSD.ORG Tue Jan 16 21:10:24 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 2F89516A417; Tue, 16 Jan 2007 21:10:23 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id DB25F16A57E; Tue, 16 Jan 2007 21:10:22 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from server.baldwin.cx (66-23-211-162.clients.speedfactory.net [66.23.211.162]) by mx1.freebsd.org (Postfix) with ESMTP id 6121613C468; Tue, 16 Jan 2007 21:10:14 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from localhost.corp.yahoo.com (john@localhost [127.0.0.1]) (authenticated bits=0) by server.baldwin.cx (8.13.6/8.13.6) with ESMTP id l0GLA1MA047029; Tue, 16 Jan 2007 16:10:12 -0500 (EST) (envelope-from jhb@freebsd.org) From: John Baldwin To: Paolo Pisati Date: Tue, 16 Jan 2007 16:01:05 -0500 User-Agent: KMail/1.9.1 References: <200701161011.l0GABmDf081094@repoman.freebsd.org> In-Reply-To: <200701161011.l0GABmDf081094@repoman.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-15" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200701161601.05588.jhb@freebsd.org> X-Greylist: Sender succeeded SMTP AUTH authentication, not delayed by milter-greylist-2.0.2 (server.baldwin.cx [127.0.0.1]); Tue, 16 Jan 2007 16:10:12 -0500 (EST) X-Virus-Scanned: ClamAV 0.88.3/2457/Tue Jan 16 06:53:04 2007 on server.baldwin.cx X-Virus-Status: Clean X-Spam-Status: No, score=-4.4 required=4.2 tests=ALL_TRUSTED,AWL,BAYES_00 autolearn=ham version=3.1.3 X-Spam-Checker-Version: SpamAssassin 3.1.3 (2006-06-01) on server.baldwin.cx Cc: Perforce Change Reviews Subject: Re: PERFORCE change 112980 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 16 Jan 2007 21:10:24 -0000 On Tuesday 16 January 2007 05:11, Paolo Pisati wrote: > http://perforce.freebsd.org/chv.cgi?CH=112980 > > Change 112980 by piso@piso_newluxor on 2007/01/16 10:10:55 > > Move spin lock acquisition inside the interrupt scanning > function. > While here, fix spacing and indentation. FYI, callout_init_mtx() doesn't work with spin mutexes. > Affected files ... > > .. //depot/projects/soc2006/intr_filter/ia64/ia64/interrupt.c#20 edit > > Differences ... > > ==== //depot/projects/soc2006/intr_filter/ia64/ia64/interrupt.c#20 (text+ko) ==== > > @@ -273,7 +273,7 @@ > { > > mtx_init(&ia64_intrs_lock, "intr table", NULL, MTX_SPIN); > - callout_init_mtx(&stray_callout_handle, &ia64_intrs_lock, 0); > + callout_init(&stray_callout_handle, 1); > } > SYSINIT(ithds_init, SI_SUB_INTR, SI_ORDER_SECOND, ithds_init, NULL); > > @@ -361,10 +361,13 @@ > walk_intr_ia64(void) { > struct ia64_intr *ia64_i; > static int i = 0; > + int j; > > - for (; i < IA64_NUMI; ) { > - int j = i++; > + for (; i < IA64_NUMI;) { > + j = i++; > + mtx_lock_spin(&ia64_intrs_lock); > ia64_i = ia64_intrs[j]; > + mtx_unlock_spin(&ia64_intrs_lock); > if (ia64_i != NULL && ia64_i->event != NULL) > return (ia64_i->event); > } > @@ -374,12 +377,10 @@ > > void > intr_callout_reset(void) > -{ > - > - mtx_lock_spin(&ia64_intrs_lock); > +{ > + > callout_reset(&stray_callout_handle, hz, > - &stray_detection, &walk_intr_ia64); > - mtx_unlock_spin(&ia64_intrs_lock); > + &stray_detection, &walk_intr_ia64); > } > > static void > -- John Baldwin From owner-p4-projects@FreeBSD.ORG Tue Jan 16 21:22:20 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 25D9F16A4DE; Tue, 16 Jan 2007 21:22:20 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id B8B0216A4C2 for ; Tue, 16 Jan 2007 21:22:19 +0000 (UTC) (envelope-from zec@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id A85F713C4A6 for ; Tue, 16 Jan 2007 21:22:19 +0000 (UTC) (envelope-from zec@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0GLMJRL035125 for ; Tue, 16 Jan 2007 21:22:19 GMT (envelope-from zec@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0GLMJr0035120 for perforce@freebsd.org; Tue, 16 Jan 2007 21:22:19 GMT (envelope-from zec@FreeBSD.org) Date: Tue, 16 Jan 2007 21:22:19 GMT Message-Id: <200701162122.l0GLMJr0035120@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to zec@FreeBSD.org using -f From: Marko Zec To: Perforce Change Reviews Cc: Subject: PERFORCE change 113021 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 16 Jan 2007 21:22:20 -0000 http://perforce.freebsd.org/chv.cgi?CH=113021 Change 113021 by zec@zec_tca51 on 2007/01/16 21:21:44 Fix the changes to ipfw to allow it to compile with INET6. Affected files ... .. //depot/projects/vimage/src/sys/netinet/ip_fw2.c#8 edit .. //depot/projects/vimage/src/sys/netinet/ip_fw_pfil.c#4 edit Differences ... ==== //depot/projects/vimage/src/sys/netinet/ip_fw2.c#8 (text+ko) ==== @@ -311,19 +311,26 @@ /* * IPv6 specific variables */ +#ifndef VIMAGE +static int fw_deny_unknown_exthdrs; +#endif + SYSCTL_DECL(_net_inet6_ip6); - -static struct sysctl_ctx_list ip6_fw_sysctl_ctx; -static struct sysctl_oid *ip6_fw_sysctl_tree; +SYSCTL_NODE(_net_inet6_ip6, OID_AUTO, fw, CTLFLAG_RW | CTLFLAG_SECURE, + 0, "Firewall"); +SYSCTL_V_PROC(V_NET, vnet_ipfw, _net_inet6_ip6_fw, OID_AUTO, enable, + CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_SECURE3, fw6_enable, 0, + ipfw_chg_hook, "I", "Enable ipfw+6"); +SYSCTL_V_INT(V_NET, vnet_ipfw, _net_inet6_ip6_fw, OID_AUTO, + deny_unknown_exthdrs, CTLFLAG_RW | CTLFLAG_SECURE, + fw_deny_unknown_exthdrs, 0, + "Deny packets with unknown IPv6 Extension Headers"); #endif /* INET6 */ #endif /* SYSCTL_NODE */ #ifdef IPFIREWALL_NAT MODULE_DEPEND(ipfw, libalias, 1, 1, 1); #endif -#ifndef VIMAGE -static int fw_deny_unknown_exthdrs; -#endif /* * L3HDR maps an ipv4 pointer into a layer3 header pointer of type T @@ -4980,23 +4987,6 @@ int ipfw_init(void) { -#ifdef INET6 - /* Setup IPv6 fw sysctl tree. */ - sysctl_ctx_init(&ip6_fw_sysctl_ctx); - ip6_fw_sysctl_tree = SYSCTL_ADD_NODE(&ip6_fw_sysctl_ctx, - SYSCTL_STATIC_CHILDREN(_net_inet6_ip6), OID_AUTO, "fw", - CTLFLAG_RW | CTLFLAG_SECURE, 0, "Firewall"); - SYSCTL_ADD_PROC(&ip6_fw_sysctl_ctx, SYSCTL_CHILDREN(ip6_fw_sysctl_tree), - OID_AUTO, "enable", CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_SECURE3, - &fw6_enable, 0, ipfw_chg_hook, "I", "Enable ipfw+6"); -#if 0 /* XXX MARKO */ - SYSCTL_ADD_V_INT(V_NET, vnet_ipfw, &ip6_fw_sysctl_ctx, - SYSCTL_CHILDREN(ip6_fw_sysctl_tree), - OID_AUTO, "deny_unknown_exthdrs", CTLFLAG_RW | CTLFLAG_SECURE, - fw_deny_unknown_exthdrs, 0, - "Deny packets with unknown IPv6 Extension Headers"); -#endif /* 0 */ -#endif ipfw_dyn_rule_zone = uma_zcreate("IPFW dynamic rule zone", sizeof(ipfw_dyn_rule), NULL, NULL, NULL, NULL, @@ -5116,10 +5106,5 @@ IPFW_DYN_LOCK_DESTROY(); uma_zdestroy(ipfw_dyn_rule_zone); -#ifdef INET6 - /* Free IPv6 fw sysctl tree. */ - sysctl_ctx_free(&ip6_fw_sysctl_ctx); -#endif - printf("IP firewall unloaded\n"); } ==== //depot/projects/vimage/src/sys/netinet/ip_fw_pfil.c#4 (text+ko) ==== @@ -519,7 +519,7 @@ error = ipfw_unhook(); } #ifdef INET6 - if (arg1 == &fw6_enable) { + if (arg1 == &V_fw6_enable) { if (enable) error = ipfw6_hook(); else From owner-p4-projects@FreeBSD.ORG Tue Jan 16 22:14:46 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id D478216A4B3; Tue, 16 Jan 2007 22:14:45 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id AC33116A494; Tue, 16 Jan 2007 22:14:45 +0000 (UTC) (envelope-from xdivac02@stud.fit.vutbr.cz) Received: from eva.fit.vutbr.cz (eva.fit.vutbr.cz [147.229.176.14]) by mx1.freebsd.org (Postfix) with ESMTP id 3D6FE13C468; Tue, 16 Jan 2007 22:14:45 +0000 (UTC) (envelope-from xdivac02@stud.fit.vutbr.cz) Received: from eva.fit.vutbr.cz (localhost [127.0.0.1]) by eva.fit.vutbr.cz (envelope-from xdivac02@eva.fit.vutbr.cz) (8.13.8/8.13.7) with ESMTP id l0GMEixn010471 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Tue, 16 Jan 2007 23:14:44 +0100 (CET) Received: (from xdivac02@localhost) by eva.fit.vutbr.cz (8.13.8/8.13.3/Submit) id l0GMEi2x010470; Tue, 16 Jan 2007 23:14:44 +0100 (CET) Date: Tue, 16 Jan 2007 23:14:44 +0100 From: Divacky Roman To: John Baldwin Message-ID: <20070116221444.GA10264@stud.fit.vutbr.cz> References: <200701141353.l0EDr4Bn085459@repoman.freebsd.org> <200701161552.36888.jhb@freebsd.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <200701161552.36888.jhb@freebsd.org> User-Agent: Mutt/1.4.2.2i X-Scanned-By: MIMEDefang 2.57 on 147.229.176.14 Cc: Roman Divacky , Perforce Change Reviews Subject: Re: PERFORCE change 112893 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 16 Jan 2007 22:14:46 -0000 On Tue, Jan 16, 2007 at 03:52:36PM -0500, John Baldwin wrote: > On Sunday 14 January 2007 08:53, Roman Divacky wrote: > > http://perforce.freebsd.org/chv.cgi?CH=112893 > > > > Change 112893 by rdivacky@rdivacky_witten on 2007/01/14 13:52:42 > > > > Make linux_vfork() actually work. This enables make to work again > > with 2.6 > > You should be using RFSTOPPED and starting the new process up after you set > P_PPWAIT before you block to avoid races. fork1() for vfork does exactly this... I just copied its behaviour. It also seems to me to be more correct but fork1() does it this way. can you look at it? From owner-p4-projects@FreeBSD.ORG Tue Jan 16 22:24:58 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id C76F816A4C2; Tue, 16 Jan 2007 22:24:57 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 847AA16A407; Tue, 16 Jan 2007 22:24:57 +0000 (UTC) (envelope-from xdivac02@stud.fit.vutbr.cz) Received: from eva.fit.vutbr.cz (eva.fit.vutbr.cz [147.229.176.14]) by mx1.freebsd.org (Postfix) with ESMTP id 1501E13C442; Tue, 16 Jan 2007 22:24:56 +0000 (UTC) (envelope-from xdivac02@stud.fit.vutbr.cz) Received: from eva.fit.vutbr.cz (localhost [127.0.0.1]) by eva.fit.vutbr.cz (envelope-from xdivac02@eva.fit.vutbr.cz) (8.13.8/8.13.7) with ESMTP id l0GMOtEP011468 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Tue, 16 Jan 2007 23:24:55 +0100 (CET) Received: (from xdivac02@localhost) by eva.fit.vutbr.cz (8.13.8/8.13.3/Submit) id l0GMOtHb011467; Tue, 16 Jan 2007 23:24:55 +0100 (CET) Date: Tue, 16 Jan 2007 23:24:55 +0100 From: Divacky Roman To: John Baldwin Message-ID: <20070116222455.GA11360@stud.fit.vutbr.cz> References: <200701141353.l0EDr4Bn085459@repoman.freebsd.org> <200701161552.36888.jhb@freebsd.org> <20070116221444.GA10264@stud.fit.vutbr.cz> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20070116221444.GA10264@stud.fit.vutbr.cz> User-Agent: Mutt/1.4.2.2i X-Scanned-By: MIMEDefang 2.57 on 147.229.176.14 Cc: Roman Divacky , Perforce Change Reviews Subject: Re: PERFORCE change 112893 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 16 Jan 2007 22:24:58 -0000 On Tue, Jan 16, 2007 at 11:14:44PM +0100, Divacky Roman wrote: > On Tue, Jan 16, 2007 at 03:52:36PM -0500, John Baldwin wrote: > > On Sunday 14 January 2007 08:53, Roman Divacky wrote: > > > http://perforce.freebsd.org/chv.cgi?CH=112893 > > > > > > Change 112893 by rdivacky@rdivacky_witten on 2007/01/14 13:52:42 > > > > > > Make linux_vfork() actually work. This enables make to work again > > > with 2.6 > > > > You should be using RFSTOPPED and starting the new process up after you set > > P_PPWAIT before you block to avoid races. > > fork1() for vfork does exactly this... I just copied its behaviour. It also > seems to me to be more correct but fork1() does it this way. > > can you look at it? I wrong understood what you said.. ignore the previous mail. why is it better to set the flag while the p2 process sleeps? the sleeping affects p1 (parent) process which will sleep anyway - I dont see any race or something. can you explain please? From owner-p4-projects@FreeBSD.ORG Tue Jan 16 22:52:16 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 7A14716A494; Tue, 16 Jan 2007 22:52:16 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 4086516A416 for ; Tue, 16 Jan 2007 22:52:16 +0000 (UTC) (envelope-from jkim@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 30B9613C457 for ; Tue, 16 Jan 2007 22:52:16 +0000 (UTC) (envelope-from jkim@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0GMqGW7051486 for ; Tue, 16 Jan 2007 22:52:16 GMT (envelope-from jkim@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0GMqFdx051482 for perforce@freebsd.org; Tue, 16 Jan 2007 22:52:15 GMT (envelope-from jkim@freebsd.org) Date: Tue, 16 Jan 2007 22:52:15 GMT Message-Id: <200701162252.l0GMqFdx051482@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to jkim@freebsd.org using -f From: Jung-uk Kim To: Perforce Change Reviews Cc: Subject: PERFORCE change 113025 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 16 Jan 2007 22:52:16 -0000 http://perforce.freebsd.org/chv.cgi?CH=113025 Change 113025 by jkim@jkim_hammer on 2007/01/16 22:52:01 Check PROT_READ before setting PROT_EXEC. Linux has added READ_IMPLIES_EXEC personality but we do not have the feature. We just assume it is always on to make it backward compatible. This fixes mmap05 LTP test case on amd64. Affected files ... .. //depot/projects/linuxolator/src/sys/amd64/linux32/linux32_machdep.c#21 edit Differences ... ==== //depot/projects/linuxolator/src/sys/amd64/linux32/linux32_machdep.c#21 (text+ko) ==== @@ -877,11 +877,12 @@ } /* - * We add PROT_EXEC to work around buggy applications (e.g. Java) - * that take advantage of the fact that execute permissions are not - * enforced by x86 CPUs. + * Linux has added READ_IMPLIES_EXEC personality but we do not support + * the feature yet. We just assume READ_IMPLIES_EXEC is always on. */ - bsd_args.prot = linux_args->prot | PROT_EXEC; + if (linux_args->prot & PROT_READ) + bsd_args.prot = linux_args->prot | PROT_EXEC; + if (linux_args->flags & LINUX_MAP_ANON) bsd_args.fd = -1; else { From owner-p4-projects@FreeBSD.ORG Tue Jan 16 23:03:20 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 58EB216A49E; Tue, 16 Jan 2007 23:03:20 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 2A25316A47C; Tue, 16 Jan 2007 23:03:20 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from server.baldwin.cx (66-23-211-162.clients.speedfactory.net [66.23.211.162]) by mx1.freebsd.org (Postfix) with ESMTP id C696B13C442; Tue, 16 Jan 2007 23:03:19 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from localhost.corp.yahoo.com (john@localhost [127.0.0.1]) (authenticated bits=0) by server.baldwin.cx (8.13.6/8.13.6) with ESMTP id l0GN3GKx047831; Tue, 16 Jan 2007 18:03:18 -0500 (EST) (envelope-from jhb@freebsd.org) From: John Baldwin To: Divacky Roman Date: Tue, 16 Jan 2007 18:03:11 -0500 User-Agent: KMail/1.9.1 References: <200701141353.l0EDr4Bn085459@repoman.freebsd.org> <20070116221444.GA10264@stud.fit.vutbr.cz> <20070116222455.GA11360@stud.fit.vutbr.cz> In-Reply-To: <20070116222455.GA11360@stud.fit.vutbr.cz> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200701161803.12044.jhb@freebsd.org> X-Greylist: Sender succeeded SMTP AUTH authentication, not delayed by milter-greylist-2.0.2 (server.baldwin.cx [127.0.0.1]); Tue, 16 Jan 2007 18:03:18 -0500 (EST) X-Virus-Scanned: ClamAV 0.88.3/2457/Tue Jan 16 06:53:04 2007 on server.baldwin.cx X-Virus-Status: Clean X-Spam-Status: No, score=-4.4 required=4.2 tests=ALL_TRUSTED,AWL,BAYES_00 autolearn=ham version=3.1.3 X-Spam-Checker-Version: SpamAssassin 3.1.3 (2006-06-01) on server.baldwin.cx Cc: Roman Divacky , Perforce Change Reviews Subject: Re: PERFORCE change 112893 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 16 Jan 2007 23:03:20 -0000 On Tuesday 16 January 2007 17:24, Divacky Roman wrote: > On Tue, Jan 16, 2007 at 11:14:44PM +0100, Divacky Roman wrote: > > On Tue, Jan 16, 2007 at 03:52:36PM -0500, John Baldwin wrote: > > > On Sunday 14 January 2007 08:53, Roman Divacky wrote: > > > > http://perforce.freebsd.org/chv.cgi?CH=112893 > > > > > > > > Change 112893 by rdivacky@rdivacky_witten on 2007/01/14 13:52:42 > > > > > > > > Make linux_vfork() actually work. This enables make to work again > > > > with 2.6 > > > > > > You should be using RFSTOPPED and starting the new process up after you set > > > P_PPWAIT before you block to avoid races. > > > > fork1() for vfork does exactly this... I just copied its behaviour. It also > > seems to me to be more correct but fork1() does it this way. > > > > can you look at it? > > I wrong understood what you said.. ignore the previous mail. > > why is it better to set the flag while the p2 process sleeps? the sleeping > affects p1 (parent) process which will sleep anyway - I dont see any race > or something. can you explain please? If p1 is preempted before it sets the flag and p2 runs and exits, then p1 resumes and sets the flag and goes to sleep, it will never be woken up because p2 will have already exited. -- John Baldwin From owner-p4-projects@FreeBSD.ORG Tue Jan 16 23:33:10 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id BDCF416A417; Tue, 16 Jan 2007 23:33:10 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 99FEE16A412 for ; Tue, 16 Jan 2007 23:33:10 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 8999713C467 for ; Tue, 16 Jan 2007 23:33:10 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0GNXA5Q059448 for ; Tue, 16 Jan 2007 23:33:10 GMT (envelope-from hselasky@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0GNX9S2059444 for perforce@freebsd.org; Tue, 16 Jan 2007 23:33:09 GMT (envelope-from hselasky@FreeBSD.org) Date: Tue, 16 Jan 2007 23:33:09 GMT Message-Id: <200701162333.l0GNX9S2059444@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to hselasky@FreeBSD.org using -f From: Hans Petter Selasky To: Perforce Change Reviews Cc: Subject: PERFORCE change 113031 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 16 Jan 2007 23:33:11 -0000 http://perforce.freebsd.org/chv.cgi?CH=113031 Change 113031 by hselasky@hselasky_mini_itx on 2007/01/16 23:32:59 Implement proper support for high speed isochronous and interrupt transfer multiplier, bits 11..12 of wMaxPacketSize. Affected files ... .. //depot/projects/usb/src/sys/dev/usb/ehci.c#15 edit .. //depot/projects/usb/src/sys/dev/usb/ohci.c#13 edit .. //depot/projects/usb/src/sys/dev/usb/ugen.c#10 edit .. //depot/projects/usb/src/sys/dev/usb/uhci.c#14 edit .. //depot/projects/usb/src/sys/dev/usb/usb_subr.c#23 edit .. //depot/projects/usb/src/sys/dev/usb/usb_subr.h#27 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb/ehci.c#15 (text+ko) ==== @@ -1672,7 +1672,7 @@ } qh->qh_endphub = htole32 - (EHCI_QH_SET_MULT(1)| + (EHCI_QH_SET_MULT(xfer->max_packet_count & 3)| EHCI_QH_SET_CMASK(0xf0)); if(xfer->udev->myhsport) @@ -2519,7 +2519,7 @@ } /* set transfer multiplier */ - td->itd_bp[2] = htole32(1); + td->itd_bp[2] = htole32(xfer->max_packet_count & 3); } return; } @@ -3545,8 +3545,11 @@ (xfer->pipe->methods == &ehci_device_bulk_methods) || (xfer->pipe->methods == &ehci_device_intr_methods)) { - usbd_std_transfer_setup(xfer, setup, 0x400, 0x400); - + if ((xfer->pipe->methods == &ehci_device_intr_methods) && + (udev->speed == USB_SPEED_HIGH)) + usbd_std_transfer_setup(xfer, setup, 0x400, 0xC00, 3); + else + usbd_std_transfer_setup(xfer, setup, 0x400, 0x400, 1); nqh = 1; nqtd = (1+ /* SETUP */ 1+ /* STATUS */ 1 /* SHORTPKT */) + @@ -3554,7 +3557,7 @@ } else if(xfer->pipe->methods == &ehci_device_isoc_fs_methods) { - usbd_std_transfer_setup(xfer, setup, 188, 188); + usbd_std_transfer_setup(xfer, setup, 188, 188, 1); if(xfer->nframes == 0) { @@ -3578,7 +3581,7 @@ } else if(xfer->pipe->methods == &ehci_device_isoc_hs_methods) { - usbd_std_transfer_setup(xfer, setup, 0x400, 0xC00); + usbd_std_transfer_setup(xfer, setup, 0x400, 0xC00, 3); if(xfer->nframes == 0) { @@ -3602,7 +3605,7 @@ } else { - usbd_std_transfer_setup(xfer, setup, 0x400, 0x400); + usbd_std_transfer_setup(xfer, setup, 0x400, 0x400, 1); } } ==== //depot/projects/usb/src/sys/dev/usb/ohci.c#13 (text+ko) ==== @@ -2614,7 +2614,7 @@ } else { - usbd_std_transfer_setup(xfer, setup, 0x500, 0x500); + usbd_std_transfer_setup(xfer, setup, 0x500, 0x500, 1); /* * calculate ntd and nqh ==== //depot/projects/usb/src/sys/dev/usb/ugen.c#10 (text+ko) ==== @@ -642,9 +642,9 @@ break; case UE_ISOCHRONOUS: - isize = UGETW(ed->wMaxPacketSize); + isize = usbd_get_max_frame_size(ed); - /* wMaxPacketSize is validated + /* the maximum frame size is validated * by "usbd_fill_iface_data()" */ @@ -736,14 +736,15 @@ switch(ed->bmAttributes & UE_XFERTYPE) { case UE_INTERRUPT: + isize = usbd_get_max_frame_size(ed); usbd_config[0].flags = USBD_SHORT_XFER_OK; usbd_config[0].callback = ugen_interrupt_callback; - usbd_config[0].bufsize = UGETW(ed->wMaxPacketSize); + usbd_config[0].bufsize = isize; usbd_config[0].interval = USBD_DEFAULT_INTERVAL; if(ugen_allocate_blocks (sc, sce, UGEN_RD_CFG, - &sce->in_queue, 1, UGETW(ed->wMaxPacketSize)) == 0) + &sce->in_queue, 1, isize) == 0) { return ENOMEM; } @@ -786,9 +787,11 @@ case UE_ISOCHRONOUS: - isize = UGETW(ed->wMaxPacketSize); + isize = usbd_get_max_frame_size(ed); - /* wMaxPacketSize is validated by "usbd_fill_iface_data()" */ + /* the maximum frame size is validated + * by "usbd_fill_iface_data()" + */ if(usbd_get_speed(sc->sc_udev) == USB_SPEED_HIGH) { @@ -1385,7 +1388,7 @@ plen1 = xfer->frlengths; ptr1 = xfer->buffer; - isize = UGETW(sce->pipe_in->edesc->wMaxPacketSize); + isize = usbd_get_max_frame_size(sce->pipe_in->edesc); n = sce->in_frames; while(n--) { @@ -1423,7 +1426,7 @@ tr_setup: tr_error: - isize = UGETW(sce->pipe_in->edesc->wMaxPacketSize); + isize = usbd_get_max_frame_size(sce->pipe_in->edesc); for(n = 0; n < sce->in_frames; n++) { /* setup size for next transfer */ @@ -1454,7 +1457,7 @@ plen1 = xfer->frlengths; ptr1 = xfer->buffer; - isize = UGETW(sce->pipe_out->edesc->wMaxPacketSize); + isize = usbd_get_max_frame_size(sce->pipe_out->edesc); n = sce->out_frames; while(n--) { @@ -1663,7 +1666,7 @@ case USB_GET_FRAME_SIZE: if(sce->pipe_in) { - *(int *)addr = UGETW(sce->pipe_in->edesc->wMaxPacketSize); + *(int *)addr = usbd_get_max_frame_size(sce->pipe_in->edesc); } else { ==== //depot/projects/usb/src/sys/dev/usb/uhci.c#14 (text+ko) ==== @@ -2873,7 +2873,7 @@ } else { - usbd_std_transfer_setup(xfer, setup, 0x500, 0x500); + usbd_std_transfer_setup(xfer, setup, 0x500, 0x500, 1); /* * compute ntd and nqh ==== //depot/projects/usb/src/sys/dev/usb/usb_subr.c#23 (text+ko) ==== @@ -512,38 +512,27 @@ if(udev->speed == USB_SPEED_HIGH) { - u_int16_t mps; - /* control and bulk endpoints have max packet limits */ + /* control and bulk endpoints have fixed max packet sizes */ switch (UE_GET_XFERTYPE(ed->bmAttributes)) { case UE_CONTROL: - mps = USB_2_MAX_CTRL_PACKET; - goto check; + USETW(ed->wMaxPacketSize, USB_2_MAX_CTRL_PACKET); + break; case UE_BULK: - mps = USB_2_MAX_BULK_PACKET; - check: - if(UGETW(ed->wMaxPacketSize) != mps) - { - USETW(ed->wMaxPacketSize, mps); -#ifdef DIAGNOSTIC - printf("%s: bad wMaxPacketSize, addr=%d!\n", - __FUNCTION__, udev->address); -#endif - } - break; - default: + USETW(ed->wMaxPacketSize, USB_2_MAX_BULK_PACKET); break; } } - if(UGETW(ed->wMaxPacketSize) == 0) - { + + if (usbd_get_max_frame_size(ed) == 0) { #ifdef USB_DEBUG - printf("%s: invalid wMaxPacketSize, addr=%d!\n", - __FUNCTION__, udev->address); + printf("%s: invalid wMaxPacketSize=0x%04x, addr=%d!\n", + __FUNCTION__, UGETW(ed->wMaxPacketSize), + udev->address); #endif - /* avoid division by zero - * (in EHCI/UHCI/OHCI drivers) - */ - USETW(ed->wMaxPacketSize, USB_MAX_IPACKET); + /* avoid division by zero + * (in EHCI/UHCI/OHCI drivers) + */ + usbd_set_max_packet_size_count(ed, USB_MAX_IPACKET, 1); } /* find a free pipe */ @@ -1293,20 +1282,13 @@ if(speed == USB_SPEED_HIGH) { /* max packet size must be 64 (sec 5.5.3) */ - if(udev->ddesc.bMaxPacketSize != USB_2_MAX_CTRL_PACKET) - { -#ifdef DIAGNOSTIC - printf("%s: addr=%d bad max packet size\n", - __FUNCTION__, udev->address); -#endif - udev->ddesc.bMaxPacketSize = USB_2_MAX_CTRL_PACKET; - } + udev->ddesc.bMaxPacketSize = USB_2_MAX_CTRL_PACKET; } if(udev->ddesc.bMaxPacketSize == 0) { #ifdef USB_DEBUG - printf("%s: addr=%d invalid bMaxPacketSize!\n", + printf("%s: addr=%d invalid bMaxPacketSize=0x00!\n", __FUNCTION__, udev->address); #endif /* avoid division by zero */ @@ -2212,7 +2194,8 @@ void usbd_std_transfer_setup(struct usbd_xfer *xfer, const struct usbd_config *setup, - u_int16_t max_packet_size, u_int16_t max_frame_size) + u_int16_t max_packet_size, u_int16_t max_frame_size, + uint8_t max_packet_count) { __callout_init_mtx(&xfer->timeout_handle, xfer->usb_mtx, CALLOUT_RETURNUNLOCKED); @@ -2223,16 +2206,18 @@ xfer->callback = setup->callback; xfer->interval = setup->interval; xfer->endpoint = xfer->pipe->edesc->bEndpointAddress; - xfer->max_packet_size = UGETW(xfer->pipe->edesc->wMaxPacketSize); + xfer->max_packet_size = usbd_get_max_packet_size(xfer->pipe->edesc); + xfer->max_packet_count = usbd_get_max_packet_count(xfer->pipe->edesc); + xfer->max_frame_size = usbd_get_max_frame_size(xfer->pipe->edesc); xfer->length = setup->bufsize; - if(xfer->interval == 0) - { + /* check interrupt interval */ + + if (xfer->interval == 0) { xfer->interval = xfer->pipe->edesc->bInterval; } - if(xfer->interval == 0) - { + if (xfer->interval == 0) { /* one is the smallest interval */ xfer->interval = 1; } @@ -2247,18 +2232,27 @@ xfer->max_packet_size = max_packet_size; } - /* frame_size: isochronous frames only */ + /* check the maximum packet count */ + + if (xfer->max_packet_count == 0) { + xfer->max_packet_count = 1; + } + + if (xfer->max_packet_count > max_packet_count) { + xfer->max_packet_count = max_packet_count; + } + + /* check the maximum frame size */ - xfer->max_frame_size = max_frame_size; + if (xfer->max_frame_size > max_frame_size) { + xfer->max_frame_size = max_frame_size; + } if (xfer->length == 0) { - xfer->length = xfer->max_packet_size; + xfer->length = xfer->max_frame_size; if (xfer->nframes) { xfer->length *= xfer->nframes; } - if (setup->sub_frames) { - xfer->length *= setup->sub_frames; - } } return; } @@ -2677,3 +2671,45 @@ } return error; } + +/*---------------------------------------------------------------------------* + * usbd_get_max_packet_size - get maximum packet size + *---------------------------------------------------------------------------*/ +uint16_t +usbd_get_max_packet_size(usb_endpoint_descriptor_t *edesc) +{ + return (UGETW(edesc->wMaxPacketSize) & 0x7FF); +} + +/*---------------------------------------------------------------------------* + * usbd_get_max_packet_count - get maximum packet count + *---------------------------------------------------------------------------*/ +uint16_t +usbd_get_max_packet_count(usb_endpoint_descriptor_t *edesc) +{ + return (1 + ((UGETW(edesc->wMaxPacketSize) >> 11) & 3)); +} + +/*---------------------------------------------------------------------------* + * usbd_get_max_frame_size - get maximum frame size + *---------------------------------------------------------------------------*/ +uint16_t +usbd_get_max_frame_size(usb_endpoint_descriptor_t *edesc) +{ + uint16_t n; + n = UGETW(edesc->wMaxPacketSize); + return (n & 0x7FF) * (1 + ((n >> 11) & 3)); +} + +/*---------------------------------------------------------------------------* + * usbd_set_max_packet_size_count - set maximum packet size and count + *---------------------------------------------------------------------------*/ +void +usbd_set_max_packet_size_count(usb_endpoint_descriptor_t *edesc, + uint16_t size, uint16_t count) +{ + uint16_t n; + n = (size & 0x7FF)|(((count-1) & 3) << 11); + USETW(edesc->wMaxPacketSize, n); + return; +} ==== //depot/projects/usb/src/sys/dev/usb/usb_subr.h#27 (text+ko) ==== @@ -279,11 +279,6 @@ * used in isochronous * mode */ - u_int8_t sub_frames; /* number of sub-frames - * contained within each - * frame. Used in High-Speed - * isochronous mode. - */ u_int8_t index; /* pipe index to use, if more * than one descriptor matches * type, address, direction ... @@ -376,6 +371,7 @@ u_int8_t address; u_int8_t endpoint; u_int8_t interval; /* milliseconds */ + uint8_t max_packet_count; u_int16_t max_packet_size; u_int16_t max_frame_size; @@ -702,9 +698,8 @@ #endif #endif -void -usbd_std_transfer_setup(struct usbd_xfer *xfer, const struct usbd_config *setup, - u_int16_t max_packet_size, u_int16_t max_frame_size); +void usbd_std_transfer_setup(struct usbd_xfer *xfer, const struct usbd_config *setup, u_int16_t max_packet_size, u_int16_t max_frame_size, uint8_t max_packet_count); + u_int8_t usbd_make_str_desc(void *ptr, u_int16_t max_len, const char *s); @@ -741,6 +736,12 @@ int32_t device_delete_all_children(device_t dev); +uint16_t usbd_get_max_packet_size(usb_endpoint_descriptor_t *edesc); +uint16_t usbd_get_max_packet_count(usb_endpoint_descriptor_t *edesc); +uint16_t usbd_get_max_frame_size(usb_endpoint_descriptor_t *edesc); + +void usbd_set_max_packet_size_count(usb_endpoint_descriptor_t *edesc, uint16_t size, uint16_t count); + /* routines from usb.c */ #if 0 From owner-p4-projects@FreeBSD.ORG Tue Jan 16 23:46:29 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id CD98A16A417; Tue, 16 Jan 2007 23:46:28 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 89D7E16A40F for ; Tue, 16 Jan 2007 23:46:28 +0000 (UTC) (envelope-from jkim@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 7A05713C442 for ; Tue, 16 Jan 2007 23:46:28 +0000 (UTC) (envelope-from jkim@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0GNkSic063605 for ; Tue, 16 Jan 2007 23:46:28 GMT (envelope-from jkim@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0GNkSOi063600 for perforce@freebsd.org; Tue, 16 Jan 2007 23:46:28 GMT (envelope-from jkim@freebsd.org) Date: Tue, 16 Jan 2007 23:46:28 GMT Message-Id: <200701162346.l0GNkSOi063600@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to jkim@freebsd.org using -f From: Jung-uk Kim To: Perforce Change Reviews Cc: Subject: PERFORCE change 113033 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 16 Jan 2007 23:46:29 -0000 http://perforce.freebsd.org/chv.cgi?CH=113033 Change 113033 by jkim@jkim_hammer on 2007/01/16 23:45:49 MFi386: iopl(2) This fixes LTP iopl01 and iopl02 on amd64. Affected files ... .. //depot/projects/linuxolator/src/sys/amd64/linux32/linux32_machdep.c#22 edit .. //depot/projects/linuxolator/src/sys/amd64/linux32/linux32_proto.h#18 edit .. //depot/projects/linuxolator/src/sys/amd64/linux32/linux32_syscall.h#18 edit .. //depot/projects/linuxolator/src/sys/amd64/linux32/linux32_sysent.c#17 edit .. //depot/projects/linuxolator/src/sys/amd64/linux32/syscalls.master#17 edit Differences ... ==== //depot/projects/linuxolator/src/sys/amd64/linux32/linux32_machdep.c#22 (text+ko) ==== @@ -43,6 +43,7 @@ #include #include #include +#include #include #include #include @@ -60,6 +61,7 @@ #include #include +#include #include #include #include @@ -934,6 +936,23 @@ } int +linux_iopl(struct thread *td, struct linux_iopl_args *args) +{ + int error; + + if (args->level < 0 || args->level > 3) + return (EINVAL); + if ((error = priv_check(td, PRIV_IO)) != 0) + return (error); + if ((error = securelevel_gt(td->td_ucred, 0)) != 0) + return (error); + td->td_frame->tf_rflags = (td->td_frame->tf_rflags & ~PSL_IOPL) | + (args->level * (PSL_IOPL / 3)); + + return (0); +} + +int linux_pipe(struct thread *td, struct linux_pipe_args *args) { int pip[2]; @@ -1271,4 +1290,3 @@ return (0); } - ==== //depot/projects/linuxolator/src/sys/amd64/linux32/linux32_proto.h#18 (text+ko) ==== @@ -344,6 +344,9 @@ struct linux_uname_args { register_t dummy; }; +struct linux_iopl_args { + char level_l_[PADL_(l_ulong)]; l_ulong level; char level_r_[PADR_(l_ulong)]; +}; struct linux_vhangup_args { register_t dummy; }; @@ -1032,6 +1035,7 @@ int linux_newlstat(struct thread *, struct linux_newlstat_args *); int linux_newfstat(struct thread *, struct linux_newfstat_args *); int linux_uname(struct thread *, struct linux_uname_args *); +int linux_iopl(struct thread *, struct linux_iopl_args *); int linux_vhangup(struct thread *, struct linux_vhangup_args *); int linux_wait4(struct thread *, struct linux_wait4_args *); int linux_swapoff(struct thread *, struct linux_swapoff_args *); @@ -1284,6 +1288,7 @@ #define LINUX_SYS_AUE_linux_newlstat AUE_LSTAT #define LINUX_SYS_AUE_linux_newfstat AUE_FSTAT #define LINUX_SYS_AUE_linux_uname AUE_NULL +#define LINUX_SYS_AUE_linux_iopl AUE_NULL #define LINUX_SYS_AUE_linux_vhangup AUE_NULL #define LINUX_SYS_AUE_linux_wait4 AUE_WAIT4 #define LINUX_SYS_AUE_linux_swapoff AUE_SWAPOFF ==== //depot/projects/linuxolator/src/sys/amd64/linux32/linux32_syscall.h#18 (text+ko) ==== @@ -103,6 +103,7 @@ #define LINUX_SYS_linux_newlstat 107 #define LINUX_SYS_linux_newfstat 108 #define LINUX_SYS_linux_uname 109 +#define LINUX_SYS_linux_iopl 110 #define LINUX_SYS_linux_vhangup 111 #define LINUX_SYS_linux_wait4 114 #define LINUX_SYS_linux_swapoff 115 ==== //depot/projects/linuxolator/src/sys/amd64/linux32/linux32_sysent.c#17 (text+ko) ==== ==== //depot/projects/linuxolator/src/sys/amd64/linux32/syscalls.master#17 (text+ko) ==== @@ -198,7 +198,7 @@ 108 AUE_FSTAT STD { int linux_newfstat(l_uint fd, \ struct l_newstat *buf); } 109 AUE_NULL STD { int linux_uname(void); } -110 AUE_NULL UNIMPL iopl +110 AUE_NULL STD { int linux_iopl(l_ulong level); } 111 AUE_NULL STD { int linux_vhangup(void); } 112 AUE_NULL UNIMPL idle 113 AUE_NULL UNIMPL vm86old From owner-p4-projects@FreeBSD.ORG Wed Jan 17 02:43:10 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 3C2A616A416; Wed, 17 Jan 2007 02:43:10 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id F38F916A407 for ; Wed, 17 Jan 2007 02:43:09 +0000 (UTC) (envelope-from adamartin@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id E1F9813C455 for ; Wed, 17 Jan 2007 02:43:09 +0000 (UTC) (envelope-from adamartin@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0H2h9Z3048179 for ; Wed, 17 Jan 2007 02:43:09 GMT (envelope-from adamartin@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0H2h9OI048176 for perforce@freebsd.org; Wed, 17 Jan 2007 02:43:09 GMT (envelope-from adamartin@FreeBSD.org) Date: Wed, 17 Jan 2007 02:43:09 GMT Message-Id: <200701170243.l0H2h9OI048176@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to adamartin@FreeBSD.org using -f From: Adam Martin To: Perforce Change Reviews Cc: Subject: PERFORCE change 113041 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 17 Jan 2007 02:43:10 -0000 http://perforce.freebsd.org/chv.cgi?CH=113041 Change 113041 by adamartin@adamartin_hobbes on 2007/01/17 02:43:01 Added datastream parser, and state machine code to the protocol handler sections of AutoFS. TemplateFS now has a proper dynamic instance allocation mechanism. Code cleanups for better look, all around. (TemplateFS stays in style(9), and AutoFS is now in ADAM style. I'll fix it later.) AutoFS also suffered a major cleanup of internal structure linking. (Now all structures are linked through an AutoFS instance pointer. There are accompanying macros to make accessing useful structures simple.) Affected files ... .. //depot/projects/soc2006/adamartin_autofs/autofs/autofs_ctl.c#9 edit .. //depot/projects/soc2006/adamartin_autofs/autofs/autofs_dev.c#9 edit .. //depot/projects/soc2006/adamartin_autofs/autofs/autofs_dev.h#7 edit .. //depot/projects/soc2006/adamartin_autofs/autofs/autofs_tfsops.c#3 edit .. //depot/projects/soc2006/adamartin_autofs/autofs/autofs_types.h#4 edit .. //depot/projects/soc2006/adamartin_autofs/autofs/protocol.c#8 edit .. //depot/projects/soc2006/adamartin_autofs/autofs/protocol.h#8 edit .. //depot/projects/soc2006/adamartin_autofs/templatefs/templatefs.c#3 edit .. //depot/projects/soc2006/adamartin_autofs/templatefs/templatefs.h#2 edit Differences ... ==== //depot/projects/soc2006/adamartin_autofs/autofs/autofs_ctl.c#9 (text+ko) ==== @@ -49,19 +49,36 @@ #include "autofs_subr.h" #include "debug.h" +#include "../templatefs/templatefs.h" + +#define AUTOFS_NAME "autofs_dev" + struct cdev *autofs_ctl_dev; struct autofs_ctl_state autofs_ctl_state; static d_ioctl_t autofs_ctl_ioctl; -struct cdevsw autofs_ctl_devops = { - .d_version= D_VERSION, - .d_open= NULL, - .d_close= NULL, - .d_read= NULL, - .d_write= NULL, - .d_name= AUTOFS_CTL_DEV_NAME, - .d_ioctl= autofs_ctl_ioctl, +struct cdevsw autofs_ctl_devops= +{ + .d_version= D_VERSION, + .d_open= NULL, + .d_close= NULL, + .d_read= NULL, + .d_write= NULL, + .d_poll= NULL, + .d_name= AUTOFS_CTL_DEV_NAME, + .d_ioctl= autofs_ctl_ioctl, +}; + +static struct cdevsw autofs_device_devops= +{ + .d_open= autofs_dev_open, + .d_close= autofs_dev_close, + .d_read= autofs_dev_read, + .d_write= autofs_dev_write, + .d_poll= autofs_dev_poll, + .d_version= D_VERSION, + .d_name= AUTOFS_NAME, }; int @@ -72,13 +89,20 @@ return 0; } -MALLOC_DECLARE( M_AUTOFS_DEV ); -MALLOC_DEFINE( M_AUTOFS_DEV, "autofs_dev", "autofs device structure" ); + +MALLOC_DECLARE( M_AUTOFS_INSTANCE ); +MALLOC_DEFINE( M_AUTOFS_INSTANCE, "autofs_instance", "autofs instance data" ); MALLOC_DECLARE( M_AUTOFS_DEV_BUFFERS ); -MALLOC_DEFINE( M_AUTOFS_DEV_BUFFERS, "autofs_dev_buffers", "autofs device io buffers" ); +MALLOC_DEFINE( M_AUTOFS_DEV_BUFFERS, "autofs_dev_bufs", + "autofs device io buffers" ); + +MALLOC_DECLARE( M_AUTOFS_PROTOCOL_STATE ); +MALLOC_DEFINE( M_AUTOFS_PROTOCOL_STATE, "autofs_protocol_state", + "buffer for autofs protocol state tracking" ); -MALLOC_DEFINE( M_AUTOFS_DEV_LOCKS, "autofs_dev_lock", "Autofs mutex locks for individual devices..." ); +/* MALLOC_DEFINE( M_AUTOFS_DEV_LOCKS, "autofs_dev_lock", + "Autofs mutex locks for individual devices..." ); */ static int @@ -93,39 +117,90 @@ } static int -create_autofs_node( int num, autofs_instance_t *instance ) +create_autofs_node( int num, autofs_instance_t **instance_p ) { - int error; - struct cdevsw *autofs_cdevsw; - struct cdev *autofs_cdev; - struct autofs_dev_bufs *autofs_dev_data; + $cleanup_init; + + int error; + struct cdevsw *devsw; + struct cdev *device; + struct autofs_dev_bufs *buffers; + struct autofs_instance *instance; + struct tfs_info *ti; + struct autofs_protocol_state *prot_state; error= 0; - autofs_cdevsw= malloc( sizeof( struct cdevsw ), M_AUTOFS_DEV, M_WAITOK ); - autofs_dev_data= malloc( sizeof( struct autofs_dev_bufs ), - M_AUTOFS_DEV_BUFFERS, M_WAITOK ); + instance_p= NULL; + + /* + * Allocate all autofs buffers, and setup a new TemplateFS instance. + */ + + instance= malloc( sizeof( autofs_instance_t ), M_AUTOFS_INSTANCE, + M_WAITOK | M_ZERO ); + $cleanup( free( instance, M_AUTOFS_INSTANCE ); ); + + + buffers= malloc( sizeof( struct autofs_dev_bufs ), M_AUTOFS_DEV_BUFFERS, + M_WAITOK | M_ZERO ); + $cleanup( free( buffers, M_AUTOFS_DEV_BUFFERS ); ); + + prot_state= malloc( sizeof( struct autofs_protocol_state ), + M_AUTOFS_PROTOCOL_STATE, M_WAITOK | M_ZERO ); + $cleanup( free( prot_state, M_AUTOFS_PROTOCOL_STATE ); ); + + devsw= &autofs_device_devops; + + error= tfs_create_instance( &ti ); + if( error != 0 ) + { + $return ( error ); + } +# if 0 + $cleanup( tfs_destroy_instance( ti );); +# endif + + /* + * Associate TemplateFS data structures together + */ + + + + prot_state->message= NULL; + prot_state->current_state= PROTOCOL_WAITING; + prot_state->bytes_read= 0; + + buffers->input= autofs_queue_init(); + buffers->output= autofs_queue_init(); + buffers->instances= 0; + + + /* + * Make the device, and lock it. + */ + device= make_dev( devsw, num, UID_ROOT, GID_WHEEL, 0600, + "autofs%d", num ); - autofs_dev_data->input= autofs_queue_init(); - autofs_dev_data->output= autofs_queue_init(); - autofs_dev_data->instances= 0; - autofs_dev_data->this_instance= instance; + /* Possible race? Locking the device? */ + /* How to lock it? */ - autofs_cdevsw->d_open= autofs_dev_open; - autofs_cdevsw->d_close= autofs_dev_close; - autofs_cdevsw->d_read= autofs_dev_read; - autofs_cdevsw->d_write= autofs_dev_write; - autofs_cdevsw->d_poll= autofs_dev_poll; - autofs_cdevsw->d_version= D_VERSION; - autofs_cdevsw->d_name= "autofs_dev"; - autofs_cdev= make_dev( autofs_cdevsw, num, UID_ROOT, GID_WHEEL, 0600, "autofs%d", num ); - if( autofs_cdev == NULL ) + /* Check the device, and then associate the device to the instance */ + if( device == NULL ) { - panic( "Bad autofs_cdev\n" ); + panic( "Bad device in %s:%d\n", __FILE__, __LINE__ ); } - autofs_cdev->si_priv= (struct cdev_priv *) autofs_dev_data; + prot_state->instance= instance; + buffers->this_instance= instance; + ti->ti_priv= (void *) instance; + device->si_priv= (struct cdev_priv *) instance; + + /* + * Don't deallocate the resources -- + * they're for the working filesystem + */ return error; } @@ -173,7 +248,7 @@ ) */ arg= autofs_ctl_state.next_assignable_node++; - error= create_autofs_node( arg, instance ); + error= create_autofs_node( arg, &instance ); $do_cleanup; ==== //depot/projects/soc2006/adamartin_autofs/autofs/autofs_dev.c#9 (text+ko) ==== @@ -56,14 +56,7 @@ int write_buffer( queue *q, void *data, int len ) { - $cleanup_init_size( 8 ); - int error; - error= 0; - - autofs_queue_write( q, data, len ); - - //parse_user_message(); - $return error; + return autofs_queue_write( q, data, len ); } @@ -155,7 +148,7 @@ * right now. */ } - while( remains > 0 ); /** FIXME: Shouldn't this be == **/ + while( remains == 0 ); /** FIXME: Shouldn't this be == **/ amt= MIN( remains, amt ); autofs_queue_read( q, out_buf, amt ); @@ -170,16 +163,19 @@ autofs_dev_write( struct cdev *dev, struct uio *uio, int ioflag ) { struct autofs_dev_bufs *bufs; - queue *q; int amt; int error; unsigned char in_buf[ AUTOFS_IO_BUF_SIZE ]; /* No more than a page! */ + struct autofs_protocol_state *prot; + queue *in_q; error= 0; + + prot= AUTOFS_GET_PROTOCOL( DEV, dev ); amt= MIN( uio->uio_resid, AUTOFS_IO_BUF_SIZE ); bufs= AUTOFS_GET_BUFFERS( DEV, dev ); - q= bufs->input; + in_q= bufs->input; error= uiomove( in_buf, amt, uio ); @@ -189,7 +185,9 @@ } - autofs_queue_write( q, in_buf, amt ); + autofs_queue_write( in_q, in_buf, amt ); + + parse_user_message( prot ); return error; ==== //depot/projects/soc2006/adamartin_autofs/autofs/autofs_dev.h#7 (text+ko) ==== ==== //depot/projects/soc2006/adamartin_autofs/autofs/autofs_tfsops.c#3 (text+ko) ==== @@ -136,7 +136,7 @@ //if( take_autofs_lock( instance, node ) ) //{ - send_mount_request( &msg, buffers->output ); + send_mount_request( &msg, buffers ); //} return 1; ==== //depot/projects/soc2006/adamartin_autofs/autofs/autofs_types.h#4 (text+ko) ==== @@ -23,6 +23,7 @@ struct autofs_transaction; struct autofs_dev_bufs; struct autofs_mount; +struct autofs_protocol_state; struct message_header; @@ -33,6 +34,7 @@ typedef struct autofs_transaction autofs_transaction_t; typedef struct autofs_dev_bufs autofs_dev_bufs_t; typedef struct autofs_mount autofs_mount_t; +typedef struct autofs_protocol_state autofs_protocol_state_t; /************** END FORWARD DEFINITIONS *****************/ @@ -54,6 +56,7 @@ autofs_mount_t *mount_list; /** This will be a hash **/ autofs_transaction_t *in_flight; /** A hash of inflight transactions **/ + autofs_protocol_state_t *protocol_state; void *extensions; }; @@ -104,6 +107,33 @@ +struct autofs_protocol_state +{ + /* + * The protocol state can be: + * + * Undefined - should never be this state + * Waiting - waiting for a new command + * Reading - reading a command (id is current_command) + * Error - final state in the chain, reached on an error + */ + int current_state; +# define PROTOCOL_UNDEFINED ( 0x00 ) +# define PROTOCOL_WAITING ( 0x01 ) +# define PROTOCOL_READING ( 0x02 ) +# define PROTOCOL_ERROR ( 0x03 ) + + + int curr_cmd_id; /* Used to determine length */ + int bytes_read; /* How many bytes read thus far */ + int max_bytes_to_read; /* Adjusted as we read */ + + autofs_instance_t *instance; + + struct message_header *message; + +}; + /*************************************************************************** The GET* macros get a piece of autofs state, from a "holder", where holder is DEV, NODE, INSTANCE or ROOT: @@ -112,12 +142,14 @@ NODE - a node (mountpoint) within the AutoFS system INSTANCE - the instance descriptor of an AutoFS system ROOT - the tfs_info (vfs_info) descriptor of the underlying templatefs + PROTOCOL - the autofs protocol state tracking structure + BUFFERS - the device input output buffers of the autofs protocol E.G.: AUTOFS_GET_BUFFERS( ROOT, autofs_tfs_info ) E.G.: AUTOFS_GET_TXNS( DEV, autofs_cdevsw ) one can get: - BUFFERS, DEV, TXNS, INSTANCE + BUFFERS, DEV, TXNS, INSTANCE, PROTOCOL ****************************************************************************/ @@ -137,6 +169,10 @@ ( (struct cdev *) ( AUTOFS_GET_INSTANCE( TYPE, __datum__ )->\ device_struct ) ) +#define AUTOFS_GET_PROTOCOL( TYPE, __datum__ )\ + ( (struct autofs_protocol_state *) ( AUTOFS_GET_INSTANCE( TYPE, \ + __datum__ )->protocol_state ) ) + #define AUTOFS_DEV_GET_INSTANCE( dev )\ ( ( dev )->si_priv ) @@ -150,4 +186,10 @@ #define AUTOFS_INSTANCE_GET_INSTANCE( instance )\ ( ( instance ) ) +#define AUTOFS_PROTOCOL_GET_INSTANCE( protocol )\ + ( ( protocol )->instance ) + +#define AUTOFS_BUFFERS_GET_INSTANCE( protocol )\ + ( ( protocol )->this_instance ) + #endif /*** __AUTOFS_TYPES_H__ ***/ ==== //depot/projects/soc2006/adamartin_autofs/autofs/protocol.c#8 (text+ko) ==== @@ -38,14 +38,230 @@ #include "autofs_types.h" +#include "debug.h" + +#define BOGUS ( 0xDEADBEEF ) + +#ifndef MAX +#define MAX( a, b ) ( ( ( a ) > ( b ) ) ? ( a ) : ( b ) ) +#endif + +#ifndef MIN +#define MIN( a, b ) ( ( ( b ) > ( b ) ) ? ( a ) : ( b ) ) +#endif + + +MALLOC_DECLARE( M_AUTOFS_TRANSACTION_BUFFER ); +MALLOC_DEFINE( M_AUTOFS_TRANSACTION_BUFFER, "autofs_txn_buf", + "AutoFS transaction processing buffer" ); + +#ifdef TRIM_NEEDED +#define TRIM_SIZE ( sizeof( void * ) ) +#else +#define TRIM_SIZE ( ( 0 ) ) +#endif + +static int +command_sizes[]= +{ + 0x00, /* INVALID */ + sizeof( struct mount_request ) - TRIM_SIZE, /* MOUNT_REQUEST */ + sizeof( struct mount_done ), /* MOUNT_DONE */ + sizeof( struct hello ), /* HELLO */ + sizeof( struct greeting ) - TRIM_SIZE, /* AUTOFS_GREETING */ + sizeof( struct greeting_response ) - TRIM_SIZE, /* GREETING_RESPONSE */ + sizeof( struct modify_mounts ) - TRIM_SIZE, /* MODIFY_MOUNTS */ + sizeof( struct modify_mounts_acknowledge ) - TRIM_SIZE, /* MM_ACK */ +}; + +static void command_dispatch( autofs_protocol_state_t *protocol ); + +static int +adjust_inqueue( int cmd ) +{ + return command_sizes[ cmd ]; +} + + +/* + * XXX: FIXME: This is a big nasty. (ADAM) + * This parses input from the data buffers (queues), + * and dispatches out the results to complete command handlers. + * This could DEFINATELY be fixed up by somebody at some point. + */ + +void +parse_user_message( autofs_protocol_state_t *protocol ) +{ + $cleanup_init_size( 8 ); + autofs_instance_t *instance; + autofs_dev_bufs_t *buffers; + autofs_transaction_t *txns; + queue *q; + + struct message_header *mesg; + + int error; + int cnt; + + error= 0; + cnt=0; + + + instance= AUTOFS_GET_INSTANCE( PROTOCOL, protocol ); + buffers= AUTOFS_GET_BUFFERS( PROTOCOL, protocol ); + txns= AUTOFS_GET_TXNS( PROTOCOL, protocol ); + + q= buffers->input; + + + + /** use state machine here. **/ + switch( protocol->current_state ) + { + case PROTOCOL_WAITING: + /* Allocate a message header */ + mesg= malloc( sizeof( struct message_header ), + M_AUTOFS_TRANSACTION_BUFFER, + M_WAITOK | M_ZERO ); + $cleanup + ( + free( mesg, M_AUTOFS_TRANSACTION_BUFFER ); + protocol->message= NULL; + ); + protocol->message= mesg; + + if( autofs_queue_remaining( q ) < + ( sizeof( struct message_header ) - + TRIM_SIZE ) ) + { + $return; + } + autofs_queue_read( q, (void *) mesg, + sizeof( struct message_header ) - + sizeof( void * ) ); + + protocol->curr_cmd_id= mesg->message_type; + protocol->bytes_read= sizeof( struct message_header ) - + sizeof( void * ); + protocol->max_bytes_to_read= sizeof( struct + message_header ) - sizeof( void * ); + + protocol->max_bytes_to_read+= adjust_inqueue( + protocol->curr_cmd_id ); + + /** FALLTHROUGH **/ + case PROTOCOL_READING: + mesg= protocol->message; + + while( ( autofs_queue_remaining( q ) != 0) && + ( protocol->bytes_read < + protocol->max_bytes_to_read ) ) + { + cnt= MIN( ( protocol->max_bytes_to_read - + protocol->bytes_read ), + autofs_queue_remaining( q ) ); + + autofs_queue_read( q, (void *) &( (char *) + mesg )[ protocol->bytes_read ], + cnt ); + protocol->bytes_read+= cnt; + } + + /* + * Command dispatch will parse what is read so far + * and see if we need to do any more parsing. It + * will adjust the protocol fields appropriately, and + * also free the message buffer on success. + */ + + command_dispatch( protocol ); + + break; + + + + + case PROTOCOL_ERROR: + panic( "Autofs protocol halted!" ); + break; + + case PROTOCOL_UNDEFINED: + + DEBUG EPRINTF( "AutoFS protocol error!\n" ); + + /** FALLTHROUGH **/ + default: + /** NOTREACHED **/ + + panic( "Autofs protocol invalid state!" ); + break; + } + + return; +} + + +static void +command_dispatch( autofs_protocol_state_t *protocol ) +{ + autofs_instance_t *instance; + int cnt; + + cnt= 0; + instance= AUTOFS_GET_INSTANCE( PROTOCOL, protocol ); + + if( protocol->bytes_read < protocol->max_bytes_to_read ) + { + /* Nothing to do yet. Not done reading! */ + DEBUG9 EPRINTF( "Stalling out, incomplete message.\n" ); + return; + } + + DEBUG9 EPRINTF( "Command encountered, with sufficient length, run " + "more tests...\n" ); + + switch( protocol->curr_cmd_id ) + { + case COMMAND_ACK: + DEBUG4 EPRINTF( "Encountered an ACK command.\n" ); + /* Do Ack appropriate stuff */ + break; + + case COMMAND_MOUNT_REQUEST: + DEBUG6 EPRINTF( "Encountered MOUNT_DONE command.\n" ); + break; + + case COMMAND_GREETING_RESPONSE: + DEBUG6 EPRINTF( "Encountered GREETING_RESPONSE command." + " Number of mountpoints:\n" ); + break; + + + default: + /** NOTREACHED **/ + + DEBUG4 EPRINTF( "Encountered an unknown command id: " + "%d!\n", protocol->curr_cmd_id ); + + protocol->current_state= PROTOCOL_ERROR; + break; + } +} + + int process_mount_complete( struct message_header *, autofs_instance_t * ); int -send_mount_request( struct message_header *req, queue *out_buffer ) +send_mount_request( struct message_header *req, autofs_dev_bufs_t *buffers ) { - struct mount_request *mb= (struct mount_request *) req->message_data; + struct mount_request *mb; + queue *out_buffer; + + out_buffer= buffers->output; + mb= (struct mount_request *) req->message_data; write_buffer( out_buffer, (void *) req, sizeof( struct message_header ) ); @@ -59,7 +275,6 @@ } -#define BOGUS ( 0xDEADBEEF ) int process_mount_complete( struct message_header *req, ==== //depot/projects/soc2006/adamartin_autofs/autofs/protocol.h#8 (text+ko) ==== @@ -226,10 +226,13 @@ }; +#ifdef _KERNEL +#include "autofs_types.h" #include "autofs_subr.h" -int send_mount_request( struct message_header *req, queue *q ); +int send_mount_request( struct message_header *req, autofs_dev_bufs_t *buffer ); -int parse_user_message( void ); +void parse_user_message( autofs_protocol_state_t *protocol ); +#endif #endif /*** AUTOFS_PROTOCOL_HEADER ***/ ==== //depot/projects/soc2006/adamartin_autofs/templatefs/templatefs.c#3 (text+ko) ==== @@ -77,6 +77,9 @@ static MALLOC_DEFINE(M_TFSNODES, "tfs_nodes", "templatefs nodes"); +MALLOC_DECLARE(M_TFSINFO); +MALLOC_DEFINE(M_TFSINFO, "tfs_info", "Template fs superblock info"); + SYSCTL_NODE(_vfs, OID_AUTO, tfs, CTLFLAG_RW, 0, "templatefs"); @@ -84,6 +87,8 @@ #error "TFS_FSNAMELEN is not equal to MFSNAMELEN" #endif +#define SLASH ( '/' ) + /* * Add a node to a directory */ @@ -286,7 +291,7 @@ } /* - * Mount a pseudofs instance + * Mount a templatefs instance */ int tfs_mount(struct tfs_info *ti, struct mount *mp, struct thread *td) @@ -318,7 +323,7 @@ } /* - * Unmount a pseudofs instance + * Unmount a templatefs instance */ int tfs_unmount(struct mount *mp, int mntflags, struct thread *td) @@ -358,48 +363,118 @@ return (0); } + /* - * Initialize a (static) pseudofs instance + * Create an on-the-fly independent instance of a TemplateFS derivative + */ + +int +tfs_create_instance(struct tfs_info **pti) +{ + struct tfs_node *root; + struct tfs_info *ti; + int error; + + error= 0; + + /* Insulate against returning free'd memory in case of error. */ + *pti= NULL; + + ti = malloc(sizeof (struct tfs_info), M_TFSINFO, M_WAITOK|M_ZERO); + /* Don't set the pti value here... wait for the rest to go kosher. */ + + mtx_init(&ti->ti_mutex, "templatefs", NULL, MTX_DEF); + + /* + * TODO: Must populate the tfs_info struct, beyond just + * the root-vnode + */ + + + /* XXX: What else from tfs_init is needed? */ + MALLOC(root, struct tfs_node *, sizeof *root, + M_TFSNODES, M_WAITOK|M_ZERO); + + root->tn_type = tfstype_root; + root->tn_name[0] = SLASH; + root->tn_info = ti; + if (_tfs_fixup_dir(root) != 0) { + FREE(root, M_TFSNODES); + return (ENODEV); /** XXX Based upon tfs_init's errno **/ + } + ti->ti_root = root; + tfs_fileno_init(ti); + + /* Finally we can set the pti, since we know all is good. */ + *pti= ti; + return 0; +} + +/* + * Initialize a (static) templatefs instance * ADAM -- if it's static, then this is bad... we need it at dynamic time. */ int tfs_init(struct tfs_info *ti, struct vfsconf *vfc) { - struct tfs_node *root; + /* XXX: Removed, because tfs_create_instance() does this! */ + /* struct tfs_node *root; */ int error; - mtx_init(&ti->ti_mutex, "pseudofs", NULL, MTX_DEF); + error = 0; + + mtx_init(&ti->ti_mutex, "templatefs", NULL, MTX_DEF); /** TODO, should this be moved to mount? How much of it? **/ /* set up the root diretory */ + + #ifdef KEEP_TFS_INIT_VNODE MALLOC(root, struct tfs_node *, sizeof *root, M_TFSNODES, M_WAITOK|M_ZERO); root->tn_type = tfstype_root; - root->tn_name[0] = '/'; + root->tn_name[0] = SLASH; root->tn_info = ti; if (_tfs_fixup_dir(root) != 0) { FREE(root, M_TFSNODES); return (ENODEV); /* XXX not really the right errno */ } ti->ti_root = root; + #else + ti->ti_root = NULL; + #endif /* construct file hierarchy */ - error = (ti->ti_init)(ti, vfc); + /* error = (ti->ti_init)(ti, vfc); */ if (error) { - tfs_destroy(root); + /* tfs_destroy(root); */ ti->ti_root = NULL; mtx_destroy(&ti->ti_mutex); return (error); } + #ifdef KEEP_TFS_INIT_VNODE tfs_fileno_init(ti); + #endif if (bootverbose) printf("%s registered\n", ti->ti_name); return (0); } /* - * Destroy a pseudofs instance + * Destroy a templatefs instance + */ + +int +tfs_destroy_instance(struct tfs_info **pti) +{ + printf("Bugaboo! Unsure what to do here.\n"); + /* See what from uninit is needed. */ + + return ENOSYS; +} + +/* + * Destroy a templatefs instance (Static, again!) */ int tfs_uninit(struct tfs_info *ti, struct vfsconf *vfc) ==== //depot/projects/soc2006/adamartin_autofs/templatefs/templatefs.h#2 (text+ko) ==== @@ -270,6 +270,14 @@ int tfs_init (struct tfs_info *ti, struct vfsconf *vfc); int tfs_uninit (struct tfs_info *ti, struct vfsconf *vfc); + +/* + * TemplateFS initialization, and instantiation primitives (and cleanup) + */ + +int tfs_create_instance(struct tfs_info **pti); +int tfs_destroy_instance(struct tfs_info **pti); + /* * Directory structure construction and manipulation */ From owner-p4-projects@FreeBSD.ORG Wed Jan 17 09:36:04 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 70E7E16A416; Wed, 17 Jan 2007 09:36:04 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 3118C16A412 for ; Wed, 17 Jan 2007 09:36:04 +0000 (UTC) (envelope-from alexander@leidinger.net) Received: from redbull.bpaserver.net (redbullneu.bpaserver.net [213.198.78.217]) by mx1.freebsd.org (Postfix) with ESMTP id DEC0F13C442 for ; Wed, 17 Jan 2007 09:36:01 +0000 (UTC) (envelope-from alexander@leidinger.net) Received: from outgoing.leidinger.net (p54A5D3F5.dip.t-dialin.net [84.165.211.245]) by redbull.bpaserver.net (Postfix) with ESMTP id 007832E113; Wed, 17 Jan 2007 10:15:36 +0100 (CET) Received: from webmail.leidinger.net (webmail.Leidinger.net [192.168.1.102]) by outgoing.leidinger.net (Postfix) with ESMTP id E4FFA5B4CA0; Wed, 17 Jan 2007 10:07:53 +0100 (CET) Received: (from www@localhost) by webmail.leidinger.net (8.13.8/8.13.8/Submit) id l0H97rAL012612; Wed, 17 Jan 2007 10:07:53 +0100 (CET) (envelope-from Alexander@Leidinger.net) Received: from pslux.cec.eu.int (pslux.cec.eu.int [158.169.9.14]) by webmail.leidinger.net (Horde MIME library) with HTTP; Wed, 17 Jan 2007 10:07:53 +0100 Message-ID: <20070117100753.s34xp2kc1wks40w4@webmail.leidinger.net> X-Priority: 3 (Normal) Date: Wed, 17 Jan 2007 10:07:53 +0100 From: Alexander Leidinger To: Jung-uk Kim References: <200701162346.l0GNkSOi063600@repoman.freebsd.org> In-Reply-To: <200701162346.l0GNkSOi063600@repoman.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; DelSp="Yes"; format="flowed" Content-Disposition: inline Content-Transfer-Encoding: 7bit User-Agent: Internet Messaging Program (IMP) H3 (4.1.3) / FreeBSD-7.0 X-BPAnet-MailScanner-Information: Please contact the ISP for more information X-BPAnet-MailScanner: Found to be clean X-BPAnet-MailScanner-SpamCheck: not spam, SpamAssassin (not cached, score=-14.864, required 6, autolearn=not spam, BAYES_00 -15.00, DK_POLICY_SIGNSOME 0.00, FORGED_RCVD_HELO 0.14) X-BPAnet-MailScanner-From: alexander@leidinger.net X-Spam-Status: No Cc: Perforce Change Reviews Subject: Re: PERFORCE change 113033 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 17 Jan 2007 09:36:04 -0000 Quoting Jung-uk Kim (from Tue, 16 Jan 2007 23:46:28 GMT): > http://perforce.freebsd.org/chv.cgi?CH=113033 > > Change 113033 by jkim@jkim_hammer on 2007/01/16 23:45:49 > > MFi386: iopl(2) > > This fixes LTP iopl01 and iopl02 on amd64. Is the thread stuff MD? If not, is there something else which is MD? Bye, Alexander. -- Self Test for Paranoia: You know you have it when you can't think of anything that's your own fault. http://www.Leidinger.net Alexander @ Leidinger.net: PGP ID = B0063FE7 http://www.FreeBSD.org netchild @ FreeBSD.org : PGP ID = 72077137 From owner-p4-projects@FreeBSD.ORG Wed Jan 17 09:48:18 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 3350916A417; Wed, 17 Jan 2007 09:48:18 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id E81E716A40F for ; Wed, 17 Jan 2007 09:48:17 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id C070F13C442 for ; Wed, 17 Jan 2007 09:48:17 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0H9mAdv080085 for ; Wed, 17 Jan 2007 09:48:10 GMT (envelope-from hselasky@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0H9mA87080082 for perforce@freebsd.org; Wed, 17 Jan 2007 09:48:10 GMT (envelope-from hselasky@FreeBSD.org) Date: Wed, 17 Jan 2007 09:48:10 GMT Message-Id: <200701170948.l0H9mA87080082@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to hselasky@FreeBSD.org using -f From: Hans Petter Selasky To: Perforce Change Reviews Cc: Subject: PERFORCE change 113056 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 17 Jan 2007 09:48:18 -0000 http://perforce.freebsd.org/chv.cgi?CH=113056 Change 113056 by hselasky@hselasky_mini_itx on 2007/01/17 09:48:07 Compile fix for Sparc64. Affected files ... .. //depot/projects/usb/src/sys/dev/usb/usb_subr.c#24 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb/usb_subr.c#24 (text+ko) ==== @@ -1858,7 +1858,7 @@ panic("%s:%d Too large object, %d bytes, will " "not fit on a USB page, %d bytes!\n", __FUNCTION__, __LINE__, obj_len, - USB_PAGE_SIZE); + (int32_t)USB_PAGE_SIZE); } if (obj_len > (USB_PAGE_SIZE - (size & (USB_PAGE_SIZE-1)))) { From owner-p4-projects@FreeBSD.ORG Wed Jan 17 15:34:32 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 5A0C916A416; Wed, 17 Jan 2007 15:34:32 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 2B87E16A412 for ; Wed, 17 Jan 2007 15:34:32 +0000 (UTC) (envelope-from zec@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 04A0E13C448 for ; Wed, 17 Jan 2007 15:34:32 +0000 (UTC) (envelope-from zec@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0HFYViq079590 for ; Wed, 17 Jan 2007 15:34:31 GMT (envelope-from zec@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0HFYVUC079587 for perforce@freebsd.org; Wed, 17 Jan 2007 15:34:31 GMT (envelope-from zec@FreeBSD.org) Date: Wed, 17 Jan 2007 15:34:31 GMT Message-Id: <200701171534.l0HFYVUC079587@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to zec@FreeBSD.org using -f From: Marko Zec To: Perforce Change Reviews Cc: Subject: PERFORCE change 113072 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 17 Jan 2007 15:34:32 -0000 http://perforce.freebsd.org/chv.cgi?CH=113072 Change 113072 by zec@zec_tca51 on 2007/01/17 15:33:36 Move the userspace utility sources into a more appropriate directory. Affected files ... .. //depot/projects/vimage/src/usr.sbin/Makefile#2 delete .. //depot/projects/vimage/src/usr.sbin/vimage.8#2 delete .. //depot/projects/vimage/src/usr.sbin/vimage.c#2 delete .. //depot/projects/vimage/src/usr.sbin/vimage/Makefile#1 add .. //depot/projects/vimage/src/usr.sbin/vimage/vimage.8#1 add .. //depot/projects/vimage/src/usr.sbin/vimage/vimage.c#1 add Differences ... From owner-p4-projects@FreeBSD.ORG Wed Jan 17 18:33:01 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 096CA16A417; Wed, 17 Jan 2007 18:33:01 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 9681316A412 for ; Wed, 17 Jan 2007 18:33:00 +0000 (UTC) (envelope-from jkim@FreeBSD.org) Received: from anuket.mj.niksun.com (gwnew.niksun.com [65.115.46.162]) by mx1.freebsd.org (Postfix) with ESMTP id 3220B13C441 for ; Wed, 17 Jan 2007 18:32:59 +0000 (UTC) (envelope-from jkim@FreeBSD.org) Received: from niksun.com (anuket [10.70.0.5]) by anuket.mj.niksun.com (8.13.6/8.13.6) with ESMTP id l0HHumWd042460; Wed, 17 Jan 2007 12:57:12 -0500 (EST) (envelope-from jkim@FreeBSD.org) From: Jung-uk Kim To: Alexander Leidinger Date: Wed, 17 Jan 2007 12:56:41 -0500 User-Agent: KMail/1.6.2 References: <200701162346.l0GNkSOi063600@repoman.freebsd.org> <20070117100753.s34xp2kc1wks40w4@webmail.leidinger.net> In-Reply-To: <20070117100753.s34xp2kc1wks40w4@webmail.leidinger.net> MIME-Version: 1.0 Content-Disposition: inline Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Message-Id: <200701171256.45889.jkim@FreeBSD.org> X-Virus-Scanned: ClamAV 0.88.6/2459/Tue Jan 16 17:03:34 2007 on anuket.mj.niksun.com X-Virus-Status: Clean Cc: Perforce Change Reviews Subject: Re: PERFORCE change 113033 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 17 Jan 2007 18:33:01 -0000 On Wednesday 17 January 2007 04:07 am, Alexander Leidinger wrote: > Quoting Jung-uk Kim (from Tue, 16 Jan 2007 23:46:28 GMT): > > http://perforce.freebsd.org/chv.cgi?CH=113033 > > > > Change 113033 by jkim@jkim_hammer on 2007/01/16 23:45:49 > > > > MFi386: iopl(2) > > > > This fixes LTP iopl01 and iopl02 on amd64. > > Is the thread stuff MD? If not, is there something else which is > MD? This is not thread stuff. ;-) It is MD because i386 has eflags while amd64 has rflags, which is 64-bit extended eflags. Jung-uk Kim From owner-p4-projects@FreeBSD.ORG Wed Jan 17 22:34:18 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 6280C16A416; Wed, 17 Jan 2007 22:34:18 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 2567A16A407 for ; Wed, 17 Jan 2007 22:34:18 +0000 (UTC) (envelope-from rdivacky@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 177F113C44C for ; Wed, 17 Jan 2007 22:34:18 +0000 (UTC) (envelope-from rdivacky@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0HMYHbY076057 for ; Wed, 17 Jan 2007 22:34:17 GMT (envelope-from rdivacky@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0HMYHXj076054 for perforce@freebsd.org; Wed, 17 Jan 2007 22:34:17 GMT (envelope-from rdivacky@FreeBSD.org) Date: Wed, 17 Jan 2007 22:34:17 GMT Message-Id: <200701172234.l0HMYHXj076054@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to rdivacky@FreeBSD.org using -f From: Roman Divacky To: Perforce Change Reviews Cc: Subject: PERFORCE change 113077 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 17 Jan 2007 22:34:18 -0000 http://perforce.freebsd.org/chv.cgi?CH=113077 Change 113077 by rdivacky@rdivacky_witten on 2007/01/17 22:33:40 Dont expose em->shared to the outside world before its properly initialized. Might not affect anything but its at least a better coding style. Affected files ... .. //depot/projects/linuxolator/src/sys/compat/linux/linux_emul.c#21 edit Differences ... ==== //depot/projects/linuxolator/src/sys/compat/linux/linux_emul.c#21 (text+ko) ==== @@ -91,11 +91,11 @@ struct linux_emuldata_shared *s; s = malloc(sizeof *s, M_LINUX, M_WAITOK | M_ZERO); - em->shared = s; s->refs = 1; s->group_pid = child; LIST_INIT(&s->threads); + em->shared = s; } p = pfind(child); KASSERT(p != NULL, ("process not found in proc_init\n")); From owner-p4-projects@FreeBSD.ORG Wed Jan 17 22:35:25 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 4A7F816A4E6; Wed, 17 Jan 2007 22:35:25 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 10CED16A4E5 for ; Wed, 17 Jan 2007 22:35:25 +0000 (UTC) (envelope-from gonzo@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 02AFD13C45A for ; Wed, 17 Jan 2007 22:35:25 +0000 (UTC) (envelope-from gonzo@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0HMZOfr076162 for ; Wed, 17 Jan 2007 22:35:24 GMT (envelope-from gonzo@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0HMZOqK076158 for perforce@freebsd.org; Wed, 17 Jan 2007 22:35:24 GMT (envelope-from gonzo@FreeBSD.org) Date: Wed, 17 Jan 2007 22:35:24 GMT Message-Id: <200701172235.l0HMZOqK076158@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to gonzo@FreeBSD.org using -f From: Oleksandr Tymoshenko To: Perforce Change Reviews Cc: Subject: PERFORCE change 113079 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 17 Jan 2007 22:35:25 -0000 http://perforce.freebsd.org/chv.cgi?CH=113079 Change 113079 by gonzo@gonzo_hq on 2007/01/17 22:35:10 o Add dynamic tags for rtld-elf. Affected files ... .. //depot/projects/mips2/src/sys/mips/include/elf.h#4 edit Differences ... ==== //depot/projects/mips2/src/sys/mips/include/elf.h#4 (text+ko) ==== @@ -157,6 +157,28 @@ #define R_MIPS_PJUMP 35 #define R_MIPS_RELGOT 36 +#define R_MIPS_max 37 +#define R_TYPE(name) __CONCAT(R_MIPS_,name) + +/* mips dynamic tags */ + +#define DT_MIPS_RLD_VERSION 0x70000001 +#define DT_MIPS_TIME_STAMP 0x70000002 +#define DT_MIPS_ICHECKSUM 0x70000003 +#define DT_MIPS_IVERSION 0x70000004 +#define DT_MIPS_FLAGS 0x70000005 +#define DT_MIPS_BASE_ADDRESS 0x70000006 +#define DT_MIPS_CONFLICT 0x70000008 +#define DT_MIPS_LIBLIST 0x70000009 +#define DT_MIPS_CONFLICTNO 0x7000000b +#define DT_MIPS_LOCAL_GOTNO 0x7000000a /* number of local got ents */ +#define DT_MIPS_LIBLISTNO 0x70000010 +#define DT_MIPS_SYMTABNO 0x70000011 /* number of .dynsym entries */ +#define DT_MIPS_UNREFEXTNO 0x70000012 +#define DT_MIPS_GOTSYM 0x70000013 /* first dynamic sym in got */ +#define DT_MIPS_HIPAGENO 0x70000014 +#define DT_MIPS_RLD_MAP 0x70000016 /* address of loader map */ + /* Define "machine" characteristics */ #if __ELF_WORD_SIZE == 32 #define ELF_TARG_CLASS ELFCLASS32 From owner-p4-projects@FreeBSD.ORG Wed Jan 17 22:40:35 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 3D0C616A417; Wed, 17 Jan 2007 22:40:35 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id DC2DD16A415 for ; Wed, 17 Jan 2007 22:40:34 +0000 (UTC) (envelope-from gonzo@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id CE12213C45A for ; Wed, 17 Jan 2007 22:40:34 +0000 (UTC) (envelope-from gonzo@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0HMeYYG076472 for ; Wed, 17 Jan 2007 22:40:34 GMT (envelope-from gonzo@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0HMeYnC076468 for perforce@freebsd.org; Wed, 17 Jan 2007 22:40:34 GMT (envelope-from gonzo@FreeBSD.org) Date: Wed, 17 Jan 2007 22:40:34 GMT Message-Id: <200701172240.l0HMeYnC076468@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to gonzo@FreeBSD.org using -f From: Oleksandr Tymoshenko To: Perforce Change Reviews Cc: Subject: PERFORCE change 113082 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 17 Jan 2007 22:40:35 -0000 http://perforce.freebsd.org/chv.cgi?CH=113082 Change 113082 by gonzo@gonzo_hq on 2007/01/17 22:39:38 o We don't need verbose mode by default anymore o Set t9 to entry point in exec_setregs. This is required by -mabicalls flag and PIC code. Affected files ... .. //depot/projects/mips2/src/sys/mips/mips/machdep.c#25 edit Differences ... ==== //depot/projects/mips2/src/sys/mips/mips/machdep.c#25 (text+ko) ==== @@ -98,7 +98,7 @@ int i; printf("entry: mips_init()\n"); - bootverbose = 1; + bootverbose = 0; realmem = btoc(64 << 20); @@ -278,6 +278,7 @@ tf->tf_regs[TF_SP] = (register_t)stack; tf->tf_regs[TF_SR] |= MIPS_SR_KSU_USER; tf->tf_regs[TF_SR] |= MIPS_SR_COP_0_BIT; + tf->tf_regs[TF_T9] = (register_t)entry; /* Used by PIC code */ } intptr_t From owner-p4-projects@FreeBSD.ORG Wed Jan 17 22:45:41 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id C2B2A16A492; Wed, 17 Jan 2007 22:45:41 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 9C18E16A40F for ; Wed, 17 Jan 2007 22:45:41 +0000 (UTC) (envelope-from rdivacky@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 8D81B13C44C for ; Wed, 17 Jan 2007 22:45:41 +0000 (UTC) (envelope-from rdivacky@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0HMjfsI077822 for ; Wed, 17 Jan 2007 22:45:41 GMT (envelope-from rdivacky@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0HMjfuE077819 for perforce@freebsd.org; Wed, 17 Jan 2007 22:45:41 GMT (envelope-from rdivacky@FreeBSD.org) Date: Wed, 17 Jan 2007 22:45:41 GMT Message-Id: <200701172245.l0HMjfuE077819@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to rdivacky@FreeBSD.org using -f From: Roman Divacky To: Perforce Change Reviews Cc: Subject: PERFORCE change 113083 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 17 Jan 2007 22:45:42 -0000 http://perforce.freebsd.org/chv.cgi?CH=113083 Change 113083 by rdivacky@rdivacky_witten on 2007/01/17 22:45:02 Dont expose em via p->p_emuldata until its properly initialized. This also enables us to get rid of some locking and simplify the code because we are workin on a local copy. Affected files ... .. //depot/projects/linuxolator/src/sys/compat/linux/linux_emul.c#22 edit Differences ... ==== //depot/projects/linuxolator/src/sys/compat/linux/linux_emul.c#22 (text+ko) ==== @@ -97,14 +97,9 @@ LIST_INIT(&s->threads); em->shared = s; } - p = pfind(child); - KASSERT(p != NULL, ("process not found in proc_init\n")); - p->p_emuldata = em; - PROC_UNLOCK(p); - EMUL_LOCK(&emul_lock); } else { /* lookup the old one */ - em = em_find(td->td_proc, EMUL_DOLOCK); + em = em_find(td->td_proc, EMUL_DONTLOCK); KASSERT(em != NULL, ("proc_init: emuldata not found in exec case.\n")); } @@ -120,11 +115,12 @@ if (flags & CLONE_THREAD) { /* lookup the parent */ EMUL_SHARED_WLOCK(&emul_shared_lock); - p_em = em_find(td->td_proc, EMUL_DONTLOCK); + p_em = em_find(td->td_proc, EMUL_DOLOCK); KASSERT(p_em != NULL, ("proc_init: parent emuldata not found for CLONE_THREAD\n")); em->shared = p_em->shared; em->shared->refs++; EMUL_SHARED_WUNLOCK(&emul_shared_lock); + EMUL_UNLOCK(&emul_lock); } else { /* * handled earlier to avoid malloc(M_WAITOK) with @@ -133,17 +129,17 @@ } } if (child != 0) { - EMUL_UNLOCK(&emul_lock); EMUL_SHARED_WLOCK(&emul_shared_lock); LIST_INSERT_HEAD(&em->shared->threads, em, threads); EMUL_SHARED_WUNLOCK(&emul_shared_lock); p = pfind(child); + KASSERT(p != NULL, ("process not found in proc_init\n")); + p->p_emuldata = em; /* we might have a sleeping linux_schedtail */ wakeup(&p->p_emuldata); PROC_UNLOCK(p); - } else - EMUL_UNLOCK(&emul_lock); + } return (0); } From owner-p4-projects@FreeBSD.ORG Thu Jan 18 02:43:39 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 2212416A47E; Thu, 18 Jan 2007 02:43:39 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id EB71316A416 for ; Thu, 18 Jan 2007 02:43:38 +0000 (UTC) (envelope-from jkim@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id DB7F113C45A for ; Thu, 18 Jan 2007 02:43:38 +0000 (UTC) (envelope-from jkim@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0I2hc8q035078 for ; Thu, 18 Jan 2007 02:43:38 GMT (envelope-from jkim@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0I2hcLn035071 for perforce@freebsd.org; Thu, 18 Jan 2007 02:43:38 GMT (envelope-from jkim@freebsd.org) Date: Thu, 18 Jan 2007 02:43:38 GMT Message-Id: <200701180243.l0I2hcLn035071@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to jkim@freebsd.org using -f From: Jung-uk Kim To: Perforce Change Reviews Cc: Subject: PERFORCE change 113090 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 18 Jan 2007 02:43:39 -0000 http://perforce.freebsd.org/chv.cgi?CH=113090 Change 113090 by jkim@jkim_hammer on 2007/01/18 02:43:32 - Add Linux kernel version strings to /proc/sys/kernel. - Properly implement OS build date string instead of using fake one. Affected files ... .. //depot/projects/linuxolator/src/sys/compat/linprocfs/linprocfs.c#8 edit Differences ... ==== //depot/projects/linuxolator/src/sys/compat/linprocfs/linprocfs.c#8 (text+ko) ==== @@ -416,6 +416,37 @@ } /* + * Get OS build date + */ +static void +linprocfs_osbuild(struct thread *td, struct sbuf *sb) +{ + char osbuild[256]; + int kern_ver[2]; + size_t size; + char *cp1, *cp2; + + cp1 = NULL; + kern_ver[0] = CTL_KERN; + kern_ver[1] = KERN_VERSION; + osbuild[0] = '\0'; + size = sizeof(osbuild); + if (kernel_sysctl(td, kern_ver, 2, &osbuild, &size, 0, 0, 0, 0) == 0) { + cp1 = strstr(osbuild, "\n"); + cp2 = strstr(osbuild, ":"); + if (cp1 && cp2) { + *cp1 = *cp2 = '\0'; + cp1 = strstr(osbuild, "#"); + } else + cp1 = NULL; + } + if (cp1) + sbuf_printf(sb, "%s%s", cp1, cp2 + 1); + else + sbuf_printf(sb, "#4 Sun Dec 18 04:30:00 CET 1977"); +} + +/* * Filler function for proc/version */ static int @@ -426,10 +457,11 @@ linux_get_osname(td, osname); linux_get_osrelease(td, osrelease); + sbuf_printf(sb, "%s version %s (des@freebsd.org) (gcc version " + __VERSION__ ") ", osname, osrelease); + linprocfs_osbuild(td, sb); + sbuf_cat(sb, "\n"); - sbuf_printf(sb, - "%s version %s (des@freebsd.org) (gcc version " __VERSION__ ")" - " #4 Sun Dec 18 04:30:00 CET 1977\n", osname, osrelease); return (0); } @@ -925,6 +957,46 @@ } /* + * Filler function for proc/sys/kernel/osrelease + */ +static int +linprocfs_doosrelease(PFS_FILL_ARGS) +{ + char osrelease[LINUX_MAX_UTSNAME]; + + linux_get_osrelease(td, osrelease); + sbuf_printf(sb, "%s\n", osrelease); + + return (0); +} + +/* + * Filler function for proc/sys/kernel/ostype + */ +static int +linprocfs_doostype(PFS_FILL_ARGS) +{ + char osname[LINUX_MAX_UTSNAME]; + + linux_get_osname(td, osname); + sbuf_printf(sb, "%s\n", osname); + + return (0); +} + +/* + * Filler function for proc/sys/kernel/version + */ +static int +linprocfs_doosbuild(PFS_FILL_ARGS) +{ + linprocfs_osbuild(td, sb); + sbuf_cat(sb, "\n"); + + return (0); +} + +/* * Filler function for proc/sys/kernel/msgmni */ static int @@ -1136,6 +1208,12 @@ dir = pfs_create_dir(root, "sys", NULL, NULL, 0); /* /proc/sys/kernel/... */ dir = pfs_create_dir(dir, "kernel", NULL, NULL, 0); + pfs_create_file(dir, "osrelease", &linprocfs_doosrelease, + NULL, NULL, PFS_RD); + pfs_create_file(dir, "ostype", &linprocfs_doostype, + NULL, NULL, PFS_RD); + pfs_create_file(dir, "version", &linprocfs_doosbuild, + NULL, NULL, PFS_RD); pfs_create_file(dir, "msgmni", &linprocfs_domsgmni, NULL, NULL, PFS_RD); pfs_create_file(dir, "pid_max", &linprocfs_dopid_max, From owner-p4-projects@FreeBSD.ORG Thu Jan 18 08:54:55 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 26C5A16A47C; Thu, 18 Jan 2007 08:54:55 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id DBE3F16A407; Thu, 18 Jan 2007 08:54:54 +0000 (UTC) (envelope-from xdivac02@stud.fit.vutbr.cz) Received: from eva.fit.vutbr.cz (eva.fit.vutbr.cz [147.229.176.14]) by mx1.freebsd.org (Postfix) with ESMTP id 5A6B213C428; Thu, 18 Jan 2007 08:54:54 +0000 (UTC) (envelope-from xdivac02@stud.fit.vutbr.cz) Received: from eva.fit.vutbr.cz (localhost [127.0.0.1]) by eva.fit.vutbr.cz (envelope-from xdivac02@eva.fit.vutbr.cz) (8.13.8/8.13.7) with ESMTP id l0I8srfH060296 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Thu, 18 Jan 2007 09:54:53 +0100 (CET) Received: (from xdivac02@localhost) by eva.fit.vutbr.cz (8.13.8/8.13.3/Submit) id l0I8sqEg060294; Thu, 18 Jan 2007 09:54:52 +0100 (CET) Date: Thu, 18 Jan 2007 09:54:52 +0100 From: Divacky Roman To: Jung-uk Kim Message-ID: <20070118085452.GA60150@stud.fit.vutbr.cz> References: <200701180243.l0I2hcLn035071@repoman.freebsd.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <200701180243.l0I2hcLn035071@repoman.freebsd.org> User-Agent: Mutt/1.4.2.2i X-Scanned-By: MIMEDefang 2.57 on 147.229.176.14 Cc: Perforce Change Reviews Subject: Re: PERFORCE change 113090 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 18 Jan 2007 08:54:55 -0000 > + sbuf_printf(sb, "%s version %s (des@freebsd.org) (gcc version " makes me wonder... shouldnt the des@freebsd.org be change to emulation@freebsd.org or something like that? this looks strange to me (might have a purpose I am not aware of) roman From owner-p4-projects@FreeBSD.ORG Thu Jan 18 09:30:11 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 3590B16A40F; Thu, 18 Jan 2007 09:30:11 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id E9B1316A416 for ; Thu, 18 Jan 2007 09:30:10 +0000 (UTC) (envelope-from rdivacky@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id C622613C459 for ; Thu, 18 Jan 2007 09:30:10 +0000 (UTC) (envelope-from rdivacky@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0I9UAfk024028 for ; Thu, 18 Jan 2007 09:30:10 GMT (envelope-from rdivacky@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0I9UAlw024022 for perforce@freebsd.org; Thu, 18 Jan 2007 09:30:10 GMT (envelope-from rdivacky@FreeBSD.org) Date: Thu, 18 Jan 2007 09:30:10 GMT Message-Id: <200701180930.l0I9UAlw024022@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to rdivacky@FreeBSD.org using -f From: Roman Divacky To: Perforce Change Reviews Cc: Subject: PERFORCE change 113097 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 18 Jan 2007 09:30:11 -0000 http://perforce.freebsd.org/chv.cgi?CH=113097 Change 113097 by rdivacky@rdivacky_witten on 2007/01/18 09:29:19 In linux_fork and linux_vfork create the process in stopped state to be sure that the new process runs with fully initialized emuldata structure [1]. Also fix the vfork (both in linux_clone and linux_vfork) race that could result in never woken up process [2]. Reported by: Scot Hetzel [1] Suggested by: jhb [2] Affected files ... .. //depot/projects/linuxolator/src/sys/amd64/linux32/linux32_machdep.c#23 edit .. //depot/projects/linuxolator/src/sys/i386/linux/linux_machdep.c#16 edit Differences ... ==== //depot/projects/linuxolator/src/sys/amd64/linux32/linux32_machdep.c#23 (text+ko) ==== @@ -474,14 +474,21 @@ linux_fork(struct thread *td, struct linux_fork_args *args) { int error; + struct proc *p2; + struct thread *td2; #ifdef DEBUG if (ldebug(fork)) printf(ARGS(fork, "")); #endif - if ((error = fork(td, (struct fork_args *)args)) != 0) + if ((error = fork1(td, RFFDG | RFPROC | RFSTOPPED, 0, &p2)) != 0) return (error); + + if (error == 0) { + td->td_retval[0] = p2->p_pid; + td->td_retval[1] = 0; + } if (td->td_retval[1] == 1) td->td_retval[0] = 0; @@ -489,6 +496,14 @@ if (error) return (error); + td2 = FIRST_THREAD_IN_PROC(p2); + + /* make it run */ + mtx_lock_spin(&sched_lock); + TD_SET_CAN_RUN(td2); + setrunqueue(td2, SRQ_BORING); + mtx_unlock_spin(&sched_lock); + return (0); } @@ -497,6 +512,7 @@ { int error; struct proc *p2; + struct thread *td2; #ifdef DEBUG if (ldebug(vfork)) @@ -504,7 +520,7 @@ #endif /* exclude RFPPWAIT */ - if ((error = fork1(td, RFFDG | RFPROC | RFMEM, 0, &p2)) != 0) + if ((error = fork1(td, RFFDG | RFPROC | RFMEM | RFSTOPPED, 0, &p2)) != 0) return (error); if (error == 0) { td->td_retval[0] = p2->p_pid; @@ -516,12 +532,23 @@ error = linux_proc_init(td, td->td_retval[0], 0); if (error) return (error); + + p2->p_flag |= P_PPWAIT; + + td2 = FIRST_THREAD_IN_PROC(p2); + + /* make it run */ + mtx_lock_spin(&sched_lock); + TD_SET_CAN_RUN(td2); + setrunqueue(td2, SRQ_BORING); + mtx_unlock_spin(&sched_lock); + /* wait for the children to exit, ie. emulate vfork */ PROC_LOCK(p2); - p2->p_flag |= P_PPWAIT; while (p2->p_flag & P_PPWAIT) msleep(td->td_proc, &p2->p_mtx, PWAIT, "ppwait", 0); PROC_UNLOCK(p2); + return (0); } @@ -682,6 +709,8 @@ printf(LMSG("clone: successful rfork to %ld, stack %p sig = %d"), (long)p2->p_pid, args->stack, exit_signal); #endif + if (args->flags & CLONE_VFORK) + p2->p_flag |= P_PPWAIT; /* * Make this runnable after we are finished with it. @@ -697,7 +726,6 @@ if (args->flags & CLONE_VFORK) { /* wait for the children to exit, ie. emulate vfork */ PROC_LOCK(p2); - p2->p_flag |= P_PPWAIT; while (p2->p_flag & P_PPWAIT) msleep(td->td_proc, &p2->p_mtx, PWAIT, "ppwait", 0); PROC_UNLOCK(p2); ==== //depot/projects/linuxolator/src/sys/i386/linux/linux_machdep.c#16 (text+ko) ==== @@ -297,14 +297,21 @@ linux_fork(struct thread *td, struct linux_fork_args *args) { int error; + struct proc *p2; + struct thread *td2; #ifdef DEBUG if (ldebug(fork)) printf(ARGS(fork, "")); #endif - if ((error = fork(td, (struct fork_args *)args)) != 0) + if ((error = fork1(td, RFFDG | RFPROC | RFSTOPPED, 0, &p2)) != 0) return (error); + + if (error == 0) { + td->td_retval[0] = p2->p_pid; + td->td_retval[1] = 0; + } if (td->td_retval[1] == 1) td->td_retval[0] = 0; @@ -312,6 +319,14 @@ if (error) return (error); + td2 = FIRST_THREAD_IN_PROC(p2); + + /* make it run */ + mtx_lock_spin(&sched_lock); + TD_SET_CAN_RUN(td2); + setrunqueue(td2, SRQ_BORING); + mtx_unlock_spin(&sched_lock); + return (0); } @@ -320,6 +335,7 @@ { int error; struct proc *p2; + struct thread *td2; #ifdef DEBUG if (ldebug(vfork)) @@ -327,10 +343,10 @@ #endif /* exclude RFPPWAIT */ - if ((error = fork1(td, RFFDG | RFPROC | RFMEM, 0, &p2)) != 0) + if ((error = fork1(td, RFFDG | RFPROC | RFMEM | RFSTOPPED, 0, &p2)) != 0) return (error); if (error == 0) { - td->td_retval[0] = p2->p_pid; + td->td_retval[0] = p2->p_pid; td->td_retval[1] = 0; } /* Are we the child? */ @@ -339,9 +355,19 @@ error = linux_proc_init(td, td->td_retval[0], 0); if (error) return (error); + + p2->p_flag |= P_PPWAIT; + + td2 = FIRST_THREAD_IN_PROC(p2); + + /* make it run */ + mtx_lock_spin(&sched_lock); + TD_SET_CAN_RUN(td2); + setrunqueue(td2, SRQ_BORING); + mtx_unlock_spin(&sched_lock); + /* wait for the children to exit, ie. emulate vfork */ PROC_LOCK(p2); - p2->p_flag |= P_PPWAIT; while (p2->p_flag & P_PPWAIT) msleep(td->td_proc, &p2->p_mtx, PWAIT, "ppwait", 0); PROC_UNLOCK(p2); @@ -520,6 +546,8 @@ printf(LMSG("clone: successful rfork to %ld, stack %p sig = %d"), (long)p2->p_pid, args->stack, exit_signal); #endif + if (args->flags & CLONE_VFORK) + p2->p_flag |= P_PPWAIT; /* * Make this runnable after we are finished with it. @@ -535,7 +563,6 @@ if (args->flags & CLONE_VFORK) { /* wait for the children to exit, ie. emulate vfork */ PROC_LOCK(p2); - p2->p_flag |= P_PPWAIT; while (p2->p_flag & P_PPWAIT) msleep(td->td_proc, &p2->p_mtx, PWAIT, "ppwait", 0); PROC_UNLOCK(p2); From owner-p4-projects@FreeBSD.ORG Thu Jan 18 10:02:54 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id E0AE216A492; Thu, 18 Jan 2007 10:02:53 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 9F53716A47C for ; Thu, 18 Jan 2007 10:02:53 +0000 (UTC) (envelope-from rdivacky@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 8DBC813C44B for ; Thu, 18 Jan 2007 10:02:53 +0000 (UTC) (envelope-from rdivacky@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0IA2rKf029510 for ; Thu, 18 Jan 2007 10:02:53 GMT (envelope-from rdivacky@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0IA2qX2029497 for perforce@freebsd.org; Thu, 18 Jan 2007 10:02:52 GMT (envelope-from rdivacky@FreeBSD.org) Date: Thu, 18 Jan 2007 10:02:52 GMT Message-Id: <200701181002.l0IA2qX2029497@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to rdivacky@FreeBSD.org using -f From: Roman Divacky To: Perforce Change Reviews Cc: Subject: PERFORCE change 113099 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 18 Jan 2007 10:02:54 -0000 http://perforce.freebsd.org/chv.cgi?CH=113099 Change 113099 by rdivacky@rdivacky_witten on 2007/01/18 10:02:38 IFC Affected files ... .. //depot/projects/linuxolator/src/sys/amd64/include/md_var.h#2 integrate .. //depot/projects/linuxolator/src/sys/arm/arm/busdma_machdep.c#2 integrate .. //depot/projects/linuxolator/src/sys/arm/arm/vm_machdep.c#4 integrate .. //depot/projects/linuxolator/src/sys/arm/include/bus_dma.h#2 integrate .. //depot/projects/linuxolator/src/sys/arm/include/md_var.h#2 integrate .. //depot/projects/linuxolator/src/sys/arm/include/pmap.h#4 integrate .. //depot/projects/linuxolator/src/sys/arm/xscale/ixp425/if_npe.c#2 integrate .. //depot/projects/linuxolator/src/sys/arm/xscale/ixp425/ixp425.c#2 integrate .. //depot/projects/linuxolator/src/sys/arm/xscale/ixp425/ixp425_pci.c#2 integrate .. //depot/projects/linuxolator/src/sys/arm/xscale/ixp425/ixp425var.h#2 integrate .. //depot/projects/linuxolator/src/sys/compat/linux/linux_file.c#11 integrate .. //depot/projects/linuxolator/src/sys/conf/files.sparc64#5 integrate .. //depot/projects/linuxolator/src/sys/ddb/db_command.c#5 integrate .. //depot/projects/linuxolator/src/sys/ddb/db_thread.c#2 integrate .. //depot/projects/linuxolator/src/sys/dev/fb/creator.c#2 integrate .. //depot/projects/linuxolator/src/sys/dev/fb/creatorreg.h#2 integrate .. //depot/projects/linuxolator/src/sys/dev/mfi/mfi_pci.c#2 integrate .. //depot/projects/linuxolator/src/sys/dev/mii/brgphy.c#6 integrate .. //depot/projects/linuxolator/src/sys/dev/pci/pci.c#14 integrate .. //depot/projects/linuxolator/src/sys/dev/pci/pcireg.h#4 integrate .. //depot/projects/linuxolator/src/sys/dev/re/if_re.c#6 integrate .. //depot/projects/linuxolator/src/sys/dev/sound/pci/hda/hdac_private.h#3 integrate .. //depot/projects/linuxolator/src/sys/dev/usb/ums.c#2 integrate .. //depot/projects/linuxolator/src/sys/fs/msdosfs/denode.h#3 integrate .. //depot/projects/linuxolator/src/sys/fs/msdosfs/msdosfs_fat.c#2 integrate .. //depot/projects/linuxolator/src/sys/i386/i386/pmap.c#6 integrate .. //depot/projects/linuxolator/src/sys/i386/ibcs2/ibcs2_sysvec.c#2 integrate .. //depot/projects/linuxolator/src/sys/kern/imgact_elf.c#3 integrate .. //depot/projects/linuxolator/src/sys/kern/init_main.c#7 integrate .. //depot/projects/linuxolator/src/sys/kern/kern_descrip.c#5 integrate .. //depot/projects/linuxolator/src/sys/kern/kern_ktrace.c#5 integrate .. //depot/projects/linuxolator/src/sys/kern/kern_resource.c#7 integrate .. //depot/projects/linuxolator/src/sys/kern/kern_sig.c#7 integrate .. //depot/projects/linuxolator/src/sys/kern/kern_subr.c#5 integrate .. //depot/projects/linuxolator/src/sys/kern/subr_turnstile.c#3 integrate .. //depot/projects/linuxolator/src/sys/kern/subr_witness.c#5 integrate .. //depot/projects/linuxolator/src/sys/net/bridgestp.c#9 integrate .. //depot/projects/linuxolator/src/sys/netinet6/icmp6.c#3 integrate .. //depot/projects/linuxolator/src/sys/pci/if_rlreg.h#3 integrate .. //depot/projects/linuxolator/src/sys/pci/intpm.c#4 integrate .. //depot/projects/linuxolator/src/sys/sparc64/creator/creator.h#2 delete .. //depot/projects/linuxolator/src/sys/sparc64/creator/creator_upa.c#2 delete .. //depot/projects/linuxolator/src/sys/sparc64/sparc64/ofw_machdep.c#2 integrate .. //depot/projects/linuxolator/src/sys/sparc64/sparc64/upa.c#1 branch .. //depot/projects/linuxolator/src/sys/ufs/ffs/ffs_alloc.c#3 integrate .. //depot/projects/linuxolator/src/sys/ufs/ufs/ufs_vnops.c#7 integrate .. //depot/projects/linuxolator/src/sys/vm/vm_object.c#5 integrate .. //depot/projects/linuxolator/src/sys/vm/vm_pageout.c#3 integrate Differences ... ==== //depot/projects/linuxolator/src/sys/amd64/include/md_var.h#2 (text+ko) ==== @@ -26,7 +26,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/amd64/include/md_var.h,v 1.78 2006/06/19 22:36:01 davidxu Exp $ + * $FreeBSD: src/sys/amd64/include/md_var.h,v 1.80 2007/01/18 05:46:32 rodrigc Exp $ */ #ifndef _MACHINE_MD_VAR_H_ ==== //depot/projects/linuxolator/src/sys/arm/arm/busdma_machdep.c#2 (text+ko) ==== @@ -29,7 +29,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/arm/arm/busdma_machdep.c,v 1.27 2006/08/25 15:10:45 cognet Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/busdma_machdep.c,v 1.28 2007/01/17 00:53:05 cognet Exp $"); /* * MacPPC bus dma support routines @@ -48,6 +48,7 @@ #include #include #include +#include #include #include @@ -56,7 +57,14 @@ #include #include #include +#include +#define MAX_BPAGES 64 +#define BUS_DMA_COULD_BOUNCE BUS_DMA_BUS3 +#define BUS_DMA_MIN_ALLOC_COMP BUS_DMA_BUS4 + +struct bounce_zone; + struct bus_dma_tag { bus_dma_tag_t parent; bus_size_t alignment; @@ -81,8 +89,47 @@ */ struct arm32_dma_range *ranges; int _nranges; + struct bounce_zone *bounce_zone; }; +struct bounce_page { + vm_offset_t vaddr; /* kva of bounce buffer */ + vm_offset_t vaddr_nocache; /* kva of bounce buffer uncached */ + bus_addr_t busaddr; /* Physical address */ + vm_offset_t datavaddr; /* kva of client data */ + bus_size_t datacount; /* client data count */ + STAILQ_ENTRY(bounce_page) links; +}; + +int busdma_swi_pending; + +struct bounce_zone { + STAILQ_ENTRY(bounce_zone) links; + STAILQ_HEAD(bp_list, bounce_page) bounce_page_list; + int total_bpages; + int free_bpages; + int reserved_bpages; + int active_bpages; + int total_bounced; + int total_deferred; + bus_size_t alignment; + bus_size_t boundary; + bus_addr_t lowaddr; + char zoneid[8]; + char lowaddrid[20]; + struct sysctl_ctx_list sysctl_tree; + struct sysctl_oid *sysctl_tree_top; +}; + +static struct mtx bounce_lock; +static int total_bpages; +static int busdma_zonecount; +static STAILQ_HEAD(, bounce_zone) bounce_zone_list; + +SYSCTL_NODE(_hw, OID_AUTO, busdma, CTLFLAG_RD, 0, "Busdma parameters"); +SYSCTL_INT(_hw_busdma, OID_AUTO, total_bpages, CTLFLAG_RD, &total_bpages, 0, + "Total bounce pages"); + #define DMAMAP_LINEAR 0x1 #define DMAMAP_MBUF 0x2 #define DMAMAP_UIO 0x4 @@ -90,6 +137,9 @@ #define DMAMAP_TYPE_MASK (DMAMAP_LINEAR|DMAMAP_MBUF|DMAMAP_UIO) #define DMAMAP_COHERENT 0x8 struct bus_dmamap { + struct bp_list bpages; + int pagesneeded; + int pagesreserved; bus_dma_tag_t dmat; int flags; void *buffer; @@ -97,8 +147,15 @@ void *allocbuffer; TAILQ_ENTRY(bus_dmamap) freelist; int len; + STAILQ_ENTRY(bus_dmamap) links; + bus_dmamap_callback_t *callback; + void *callback_arg; + }; +static STAILQ_HEAD(, bus_dmamap) bounce_map_waitinglist; +static STAILQ_HEAD(, bus_dmamap) bounce_map_callbacklist; + static TAILQ_HEAD(,bus_dmamap) dmamap_freelist = TAILQ_HEAD_INITIALIZER(dmamap_freelist); @@ -109,6 +166,45 @@ MTX_SYSINIT(busdma_mtx, &busdma_mtx, "busdma lock", MTX_DEF); +static void init_bounce_pages(void *dummy); +static int alloc_bounce_zone(bus_dma_tag_t dmat); +static int alloc_bounce_pages(bus_dma_tag_t dmat, u_int numpages); +static int reserve_bounce_pages(bus_dma_tag_t dmat, bus_dmamap_t map, + int commit); +static bus_addr_t add_bounce_page(bus_dma_tag_t dmat, bus_dmamap_t map, + vm_offset_t vaddr, bus_size_t size); +static void free_bounce_page(bus_dma_tag_t dmat, struct bounce_page *bpage); + +/* Default tag, as most drivers provide no parent tag. */ +bus_dma_tag_t arm_root_dma_tag; + +/* + * Return true if a match is made. + * + * To find a match walk the chain of bus_dma_tag_t's looking for 'paddr'. + * + * If paddr is within the bounds of the dma tag then call the filter callback + * to check for a match, if there is no filter callback then assume a match. + */ +static int +run_filter(bus_dma_tag_t dmat, bus_addr_t paddr) +{ + int retval; + + retval = 0; + + do { + if (((paddr > dmat->lowaddr && paddr <= dmat->highaddr) + || ((paddr & (dmat->alignment - 1)) != 0)) + && (dmat->filter == NULL + || (*dmat->filter)(dmat->filterarg, paddr) != 0)) + retval = 1; + + dmat = dmat->parent; + } while (retval == 0 && dmat != NULL); + return (retval); +} + static void arm_dmamap_freelist_init(void *dummy) { @@ -129,6 +225,19 @@ bus_dmamap_t map, void *buf, bus_size_t buflen, struct pmap *pmap, int flags, vm_offset_t *lastaddrp, int *segp); +static __inline int +_bus_dma_can_bounce(vm_offset_t lowaddr, vm_offset_t highaddr) +{ + int i; + for (i = 0; phys_avail[i] && phys_avail[i + 1]; i += 2) { + if ((lowaddr >= phys_avail[i] && lowaddr <= phys_avail[i + 1]) + || (lowaddr < phys_avail[i] && + highaddr > phys_avail[i])) + return (1); + } + return (0); +} + static __inline struct arm32_dma_range * _bus_dma_inrange(struct arm32_dma_range *ranges, int nranges, bus_addr_t curaddr) @@ -195,11 +304,12 @@ TAILQ_REMOVE(&dmamap_freelist, map, freelist); mtx_unlock(&busdma_mtx); if (!map) { - map = malloc(sizeof(*map), M_DEVBUF, M_NOWAIT); + map = malloc(sizeof(*map), M_DEVBUF, M_NOWAIT | M_ZERO); if (map) map->flags = DMAMAP_ALLOCATED; } else map->flags = 0; + STAILQ_INIT(&map->bpages); return (map); } @@ -232,6 +342,8 @@ int error = 0; /* Return a NULL tag on failure */ *dmat = NULL; + if (!parent) + parent = arm_root_dma_tag; newtag = (bus_dma_tag_t)malloc(sizeof(*newtag), M_DEVBUF, M_NOWAIT); if (newtag == NULL) { @@ -273,6 +385,9 @@ else if (parent->boundary != 0) newtag->boundary = min(parent->boundary, newtag->boundary); + if ((newtag->filter != NULL) || + ((parent->flags & BUS_DMA_COULD_BOUNCE) != 0)) + newtag->flags |= BUS_DMA_COULD_BOUNCE; if (newtag->filter == NULL) { /* * Short circuit looking at our parent directly @@ -285,8 +400,38 @@ if (newtag->parent != NULL) atomic_add_int(&parent->ref_count, 1); } + if (_bus_dma_can_bounce(newtag->lowaddr, newtag->highaddr) + || newtag->alignment > 1) + newtag->flags |= BUS_DMA_COULD_BOUNCE; + + if (((newtag->flags & BUS_DMA_COULD_BOUNCE) != 0) && + (flags & BUS_DMA_ALLOCNOW) != 0) { + struct bounce_zone *bz; + + /* Must bounce */ + + if ((error = alloc_bounce_zone(newtag)) != 0) { + free(newtag, M_DEVBUF); + return (error); + } + bz = newtag->bounce_zone; - *dmat = newtag; + if (ptoa(bz->total_bpages) < maxsize) { + int pages; + + pages = atop(maxsize) - bz->total_bpages; + + /* Add pages to our bounce pool */ + if (alloc_bounce_pages(newtag, pages) < pages) + error = ENOMEM; + } + /* Performed initial allocation */ + newtag->flags |= BUS_DMA_MIN_ALLOC_COMP; + } + if (error != 0) + free(newtag, M_DEVBUF); + else + *dmat = newtag; CTR4(KTR_BUSDMA, "%s returned tag %p tag flags 0x%x error %d", __func__, newtag, (newtag != NULL ? newtag->flags : 0), error); @@ -327,6 +472,7 @@ return (0); } +#include /* * Allocate a handle for mapping from kva/uva/physical * address space into bus device space. @@ -335,9 +481,7 @@ bus_dmamap_create(bus_dma_tag_t dmat, int flags, bus_dmamap_t *mapp) { bus_dmamap_t newmap; -#ifdef KTR int error = 0; -#endif newmap = _busdma_alloc_dmamap(); if (newmap == NULL) { @@ -349,6 +493,52 @@ newmap->allocbuffer = NULL; dmat->map_count++; + /* + * Bouncing might be required if the driver asks for an active + * exclusion region, a data alignment that is stricter than 1, and/or + * an active address boundary. + */ + if (dmat->flags & BUS_DMA_COULD_BOUNCE) { + + /* Must bounce */ + struct bounce_zone *bz; + int maxpages; + + if (dmat->bounce_zone == NULL) { + if ((error = alloc_bounce_zone(dmat)) != 0) { + _busdma_free_dmamap(newmap); + *mapp = NULL; + return (error); + } + } + bz = dmat->bounce_zone; + + /* Initialize the new map */ + STAILQ_INIT(&((*mapp)->bpages)); + + /* + * Attempt to add pages to our pool on a per-instance + * basis up to a sane limit. + */ + maxpages = MAX_BPAGES; + if ((dmat->flags & BUS_DMA_MIN_ALLOC_COMP) == 0 + || (dmat->map_count > 0 && bz->total_bpages < maxpages)) { + int pages; + + pages = MAX(atop(dmat->maxsize), 1); + pages = MIN(maxpages - bz->total_bpages, pages); + pages = MAX(pages, 1); + if (alloc_bounce_pages(dmat, pages) < pages) + error = ENOMEM; + + if ((dmat->flags & BUS_DMA_MIN_ALLOC_COMP) == 0) { + if (error == 0) + dmat->flags |= BUS_DMA_MIN_ALLOC_COMP; + } else { + error = 0; + } + } + } CTR4(KTR_BUSDMA, "%s: tag %p tag flags 0x%x error %d", __func__, dmat, dmat->flags, error); @@ -364,6 +554,11 @@ { _busdma_free_dmamap(map); + if (STAILQ_FIRST(&map->bpages) != NULL) { + CTR3(KTR_BUSDMA, "%s: tag %p error %d", + __func__, dmat, EBUSY); + return (EBUSY); + } dmat->map_count--; CTR2(KTR_BUSDMA, "%s: tag %p error 0", __func__, dmat); return (0); @@ -399,7 +594,9 @@ *mapp = newmap; newmap->dmat = dmat; - if (dmat->maxsize <= PAGE_SIZE) { + if (dmat->maxsize <= PAGE_SIZE && + (dmat->alignment < dmat->maxsize) && + !_bus_dma_can_bounce(dmat->lowaddr, dmat->highaddr)) { *vaddr = malloc(dmat->maxsize, M_DEVBUF, mflags); } else { /* @@ -452,7 +649,9 @@ vaddr = map->origbuffer; arm_unmap_nocache(map->allocbuffer, dmat->maxsize); } - if (dmat->maxsize <= PAGE_SIZE) + if (dmat->maxsize <= PAGE_SIZE && + dmat->alignment < dmat->maxsize && + !_bus_dma_can_bounce(dmat->lowaddr, dmat->highaddr)) free(vaddr, M_DEVBUF); else { contigfree(vaddr, dmat->maxsize, M_DEVBUF); @@ -462,6 +661,64 @@ CTR3(KTR_BUSDMA, "%s: tag %p flags 0x%x", __func__, dmat, dmat->flags); } +static int +_bus_dmamap_count_pages(bus_dma_tag_t dmat, bus_dmamap_t map, void *buf, + bus_size_t buflen, int flags, int *nb) +{ + vm_offset_t vaddr; + vm_offset_t vendaddr; + bus_addr_t paddr; + int needbounce = *nb; + + if ((map->pagesneeded == 0)) { + CTR4(KTR_BUSDMA, "lowaddr= %d Maxmem= %d, boundary= %d, " + "alignment= %d", dmat->lowaddr, ptoa((vm_paddr_t)Maxmem), + dmat->boundary, dmat->alignment); + CTR3(KTR_BUSDMA, "map= %p, nobouncemap= %p, pagesneeded= %d", + map, &nobounce_dmamap, map->pagesneeded); + /* + * Count the number of bounce pages + * needed in order to complete this transfer + */ + vaddr = trunc_page((vm_offset_t)buf); + vendaddr = (vm_offset_t)buf + buflen; + + while (vaddr < vendaddr) { + paddr = pmap_kextract(vaddr); + if (((dmat->flags & BUS_DMA_COULD_BOUNCE) != 0) && + run_filter(dmat, paddr) != 0) { + needbounce = 1; + map->pagesneeded++; + } + vaddr += PAGE_SIZE; + } + CTR1(KTR_BUSDMA, "pagesneeded= %d\n", map->pagesneeded); + } + + /* Reserve Necessary Bounce Pages */ + if (map->pagesneeded != 0) { + mtx_lock(&bounce_lock); + if (flags & BUS_DMA_NOWAIT) { + if (reserve_bounce_pages(dmat, map, 0) != 0) { + mtx_unlock(&bounce_lock); + return (ENOMEM); + } + } else { + if (reserve_bounce_pages(dmat, map, 1) != 0) { + /* Queue us for resources */ + STAILQ_INSERT_TAIL(&bounce_map_waitinglist, + map, links); + mtx_unlock(&bounce_lock); + return (EINPROGRESS); + } + } + mtx_unlock(&bounce_lock); + } + + *nb = needbounce; + return (0); +} + /* * Utility function to load a linear buffer. lastaddrp holds state * between invocations (for multiple-buffer loads). segp contains @@ -481,10 +738,17 @@ pd_entry_t *pde; pt_entry_t pte; pt_entry_t *ptep; + int needbounce = 0; lastaddr = *lastaddrp; bmask = ~(dmat->boundary - 1); + if ((dmat->flags & BUS_DMA_COULD_BOUNCE) != 0) { + error = _bus_dmamap_count_pages(dmat, map, buf, buflen, flags, + &needbounce); + if (error) + return (error); + } CTR3(KTR_BUSDMA, "lowaddr= %d boundary= %d, " "alignment= %d", dmat->lowaddr, dmat->boundary, dmat->alignment); @@ -531,20 +795,6 @@ map->flags &= ~DMAMAP_COHERENT; } - if (dmat->ranges) { - struct arm32_dma_range *dr; - - dr = _bus_dma_inrange(dmat->ranges, dmat->_nranges, - curaddr); - if (dr == NULL) - return (EINVAL); - /* - * In a valid DMA range. Translate the physical - * memory address to an address in the DMA window. - */ - curaddr = (curaddr - dr->dr_sysbase) + dr->dr_busbase; - - } /* * Compute the segment size, and adjust counts. */ @@ -560,12 +810,30 @@ if (sgsize > (baddr - curaddr)) sgsize = (baddr - curaddr); } + if (((dmat->flags & BUS_DMA_COULD_BOUNCE) != 0) && + map->pagesneeded != 0 && run_filter(dmat, curaddr)) + curaddr = add_bounce_page(dmat, map, vaddr, sgsize); + + if (dmat->ranges) { + struct arm32_dma_range *dr; + dr = _bus_dma_inrange(dmat->ranges, dmat->_nranges, + curaddr); + if (dr == NULL) + return (EINVAL); + /* + * In a valid DMA range. Translate the physical + * memory address to an address in the DMA window. + */ + curaddr = (curaddr - dr->dr_sysbase) + dr->dr_busbase; + + } + /* * Insert chunk into a segment, coalescing with * the previous segment if possible. */ - if (seg >= 0 && curaddr == lastaddr && + if (needbounce == 0 && seg >= 0 && curaddr == lastaddr && (segs[seg].ds_len + sgsize) <= dmat->maxsegsz && (dmat->boundary == 0 || (segs[seg].ds_addr & bmask) == @@ -615,6 +883,8 @@ KASSERT(dmat != NULL, ("dmatag is NULL")); KASSERT(map != NULL, ("dmamap is NULL")); + map->callback = callback; + map->callback_arg = callback_arg; map->flags &= ~DMAMAP_TYPE_MASK; map->flags |= DMAMAP_LINEAR|DMAMAP_COHERENT; map->buffer = buf; @@ -622,6 +892,8 @@ error = bus_dmamap_load_buffer(dmat, dm_segments, map, buf, buflen, kernel_pmap, flags, &lastaddr, &nsegs); + if (error == EINPROGRESS) + return (error); if (error) (*callback)(callback_arg, NULL, 0, error); else @@ -797,26 +1069,93 @@ void _bus_dmamap_unload(bus_dma_tag_t dmat, bus_dmamap_t map) { + struct bounce_page *bpage; + map->flags &= ~DMAMAP_TYPE_MASK; + while ((bpage = STAILQ_FIRST(&map->bpages)) != NULL) { + STAILQ_REMOVE_HEAD(&map->bpages, links); + free_bounce_page(dmat, bpage); + } return; } static __inline void bus_dmamap_sync_buf(void *buf, int len, bus_dmasync_op_t op) { + char _tmp_cl[arm_dcache_align], _tmp_clend[arm_dcache_align]; if (op & BUS_DMASYNC_PREWRITE) cpu_dcache_wb_range((vm_offset_t)buf, len); - if (op & BUS_DMASYNC_PREREAD) { + if (op & BUS_DMASYNC_POSTREAD) { + if ((vm_offset_t)buf & arm_dcache_align_mask) + memcpy(_tmp_cl, (void *)((vm_offset_t)buf & ~ + arm_dcache_align_mask), + (vm_offset_t)buf - ((vm_offset_t)buf &~ + arm_dcache_align_mask)); + if (((vm_offset_t)buf + len) & arm_dcache_align_mask) + memcpy(_tmp_cl, (void *)((vm_offset_t)buf & ~ + arm_dcache_align_mask), + (vm_offset_t)buf - ((vm_offset_t)buf &~ + arm_dcache_align_mask)); + if (((vm_offset_t)buf + len) & arm_dcache_align_mask) + memcpy(_tmp_clend, (void *)(((vm_offset_t)buf + len) & ~ + arm_dcache_align_mask), + (vm_offset_t)buf +len - (((vm_offset_t)buf + len) &~ + arm_dcache_align_mask)); + cpu_dcache_inv_range((vm_offset_t)buf, len); if ((vm_offset_t)buf & arm_dcache_align_mask) - cpu_dcache_wbinv_range((vm_offset_t)buf & - ~arm_dcache_align_mask, arm_dcache_align); + memcpy((void *)((vm_offset_t)buf & + ~arm_dcache_align_mask), + _tmp_cl, + (vm_offset_t)buf - ((vm_offset_t)buf &~ + arm_dcache_align_mask)); if (((vm_offset_t)buf + len) & arm_dcache_align_mask) - cpu_dcache_wbinv_range(((vm_offset_t)buf + len) & - ~arm_dcache_align_mask, arm_dcache_align); + memcpy((void *)(((vm_offset_t)buf + len) & ~ + arm_dcache_align_mask), _tmp_clend, + (vm_offset_t)buf +len - (((vm_offset_t)buf + len) &~ + arm_dcache_align_mask)); + } +} + +static void +_bus_dmamap_sync_bp(bus_dma_tag_t dmat, bus_dmamap_t map, bus_dmasync_op_t op) +{ + struct bounce_page *bpage; + + STAILQ_FOREACH(bpage, &map->bpages, links) { + if (op & BUS_DMASYNC_PREWRITE) { + bcopy((void *)bpage->datavaddr, + (void *)(bpage->vaddr_nocache != 0 ? + bpage->vaddr_nocache : bpage->vaddr), + bpage->datacount); + if (bpage->vaddr_nocache == 0) + cpu_dcache_wb_range(bpage->vaddr, + bpage->datacount); + } + if (op & BUS_DMASYNC_POSTREAD) { + if (bpage->vaddr_nocache == 0) + cpu_dcache_inv_range(bpage->vaddr, + bpage->datacount); + bcopy((void *)(bpage->vaddr_nocache != 0 ? + bpage->vaddr_nocache : bpage->vaddr), + (void *)bpage->datavaddr, bpage->datacount); + } + } +} + +static __inline int +_bus_dma_buf_is_in_bp(bus_dmamap_t map, void *buf, int len) +{ + struct bounce_page *bpage; + + STAILQ_FOREACH(bpage, &map->bpages, links) { + if ((vm_offset_t)buf >= bpage->datavaddr && + (vm_offset_t)buf + len < bpage->datavaddr + + bpage->datacount) + return (1); } - if (op & BUS_DMASYNC_POSTREAD) - cpu_dcache_inv_range((vm_offset_t)buf, len); + return (0); + } void @@ -829,6 +1168,8 @@ if (op == BUS_DMASYNC_POSTWRITE) return; + if (STAILQ_FIRST(&map->bpages)) + _bus_dmamap_sync_bp(dmat, map, op); if (map->flags & DMAMAP_COHERENT) return; if ((op && BUS_DMASYNC_POSTREAD) && (map->len >= 2 * PAGE_SIZE)) { @@ -838,12 +1179,14 @@ CTR3(KTR_BUSDMA, "%s: op %x flags %x", __func__, op, map->flags); switch(map->flags & DMAMAP_TYPE_MASK) { case DMAMAP_LINEAR: - bus_dmamap_sync_buf(map->buffer, map->len, op); + if (!(_bus_dma_buf_is_in_bp(map, map->buffer, map->len))) + bus_dmamap_sync_buf(map->buffer, map->len, op); break; case DMAMAP_MBUF: m = map->buffer; while (m) { - if (m->m_len > 0) + if (m->m_len > 0 && + !(_bus_dma_buf_is_in_bp(map, m->m_data, m->m_len))) bus_dmamap_sync_buf(m->m_data, m->m_len, op); m = m->m_next; } @@ -856,8 +1199,10 @@ bus_size_t minlen = resid < iov[i].iov_len ? resid : iov[i].iov_len; if (minlen > 0) { - bus_dmamap_sync_buf(iov[i].iov_base, minlen, - op); + if (!_bus_dma_buf_is_in_bp(map, iov[i].iov_base, + minlen)) + bus_dmamap_sync_buf(iov[i].iov_base, + minlen, op); resid -= minlen; } } @@ -867,3 +1212,247 @@ } cpu_drain_writebuf(); } + +static void +init_bounce_pages(void *dummy __unused) +{ + + total_bpages = 0; + STAILQ_INIT(&bounce_zone_list); + STAILQ_INIT(&bounce_map_waitinglist); + STAILQ_INIT(&bounce_map_callbacklist); + mtx_init(&bounce_lock, "bounce pages lock", NULL, MTX_DEF); +} +SYSINIT(bpages, SI_SUB_LOCK, SI_ORDER_ANY, init_bounce_pages, NULL); + +static struct sysctl_ctx_list * +busdma_sysctl_tree(struct bounce_zone *bz) +{ + return (&bz->sysctl_tree); +} + +static struct sysctl_oid * +busdma_sysctl_tree_top(struct bounce_zone *bz) +{ + return (bz->sysctl_tree_top); +} + +static int +alloc_bounce_zone(bus_dma_tag_t dmat) +{ + struct bounce_zone *bz; + + /* Check to see if we already have a suitable zone */ + STAILQ_FOREACH(bz, &bounce_zone_list, links) { + if ((dmat->alignment <= bz->alignment) + && (dmat->boundary <= bz->boundary) + && (dmat->lowaddr >= bz->lowaddr)) { + dmat->bounce_zone = bz; + return (0); + } + } + + if ((bz = (struct bounce_zone *)malloc(sizeof(*bz), M_DEVBUF, + M_NOWAIT | M_ZERO)) == NULL) + return (ENOMEM); + + STAILQ_INIT(&bz->bounce_page_list); + bz->free_bpages = 0; + bz->reserved_bpages = 0; + bz->active_bpages = 0; + bz->lowaddr = dmat->lowaddr; + bz->alignment = dmat->alignment; + bz->boundary = dmat->boundary; + snprintf(bz->zoneid, 8, "zone%d", busdma_zonecount); + busdma_zonecount++; + snprintf(bz->lowaddrid, 18, "%#jx", (uintmax_t)bz->lowaddr); + STAILQ_INSERT_TAIL(&bounce_zone_list, bz, links); + dmat->bounce_zone = bz; + + sysctl_ctx_init(&bz->sysctl_tree); + bz->sysctl_tree_top = SYSCTL_ADD_NODE(&bz->sysctl_tree, + SYSCTL_STATIC_CHILDREN(_hw_busdma), OID_AUTO, bz->zoneid, + CTLFLAG_RD, 0, ""); + if (bz->sysctl_tree_top == NULL) { + sysctl_ctx_free(&bz->sysctl_tree); + return (0); /* XXX error code? */ + } + + SYSCTL_ADD_INT(busdma_sysctl_tree(bz), + SYSCTL_CHILDREN(busdma_sysctl_tree_top(bz)), OID_AUTO, + "total_bpages", CTLFLAG_RD, &bz->total_bpages, 0, + "Total bounce pages"); + SYSCTL_ADD_INT(busdma_sysctl_tree(bz), + SYSCTL_CHILDREN(busdma_sysctl_tree_top(bz)), OID_AUTO, + "free_bpages", CTLFLAG_RD, &bz->free_bpages, 0, + "Free bounce pages"); + SYSCTL_ADD_INT(busdma_sysctl_tree(bz), + SYSCTL_CHILDREN(busdma_sysctl_tree_top(bz)), OID_AUTO, + "reserved_bpages", CTLFLAG_RD, &bz->reserved_bpages, 0, + "Reserved bounce pages"); + SYSCTL_ADD_INT(busdma_sysctl_tree(bz), + SYSCTL_CHILDREN(busdma_sysctl_tree_top(bz)), OID_AUTO, + "active_bpages", CTLFLAG_RD, &bz->active_bpages, 0, + "Active bounce pages"); + SYSCTL_ADD_INT(busdma_sysctl_tree(bz), + SYSCTL_CHILDREN(busdma_sysctl_tree_top(bz)), OID_AUTO, + "total_bounced", CTLFLAG_RD, &bz->total_bounced, 0, + "Total bounce requests"); + SYSCTL_ADD_INT(busdma_sysctl_tree(bz), + SYSCTL_CHILDREN(busdma_sysctl_tree_top(bz)), OID_AUTO, + "total_deferred", CTLFLAG_RD, &bz->total_deferred, 0, + "Total bounce requests that were deferred"); + SYSCTL_ADD_STRING(busdma_sysctl_tree(bz), + SYSCTL_CHILDREN(busdma_sysctl_tree_top(bz)), OID_AUTO, + "lowaddr", CTLFLAG_RD, bz->lowaddrid, 0, ""); + SYSCTL_ADD_INT(busdma_sysctl_tree(bz), + SYSCTL_CHILDREN(busdma_sysctl_tree_top(bz)), OID_AUTO, + "alignment", CTLFLAG_RD, &bz->alignment, 0, ""); + SYSCTL_ADD_INT(busdma_sysctl_tree(bz), + SYSCTL_CHILDREN(busdma_sysctl_tree_top(bz)), OID_AUTO, + "boundary", CTLFLAG_RD, &bz->boundary, 0, ""); + + return (0); +} + +static int +alloc_bounce_pages(bus_dma_tag_t dmat, u_int numpages) +{ + struct bounce_zone *bz; + int count; + + bz = dmat->bounce_zone; + count = 0; + while (numpages > 0) { + struct bounce_page *bpage; + + bpage = (struct bounce_page *)malloc(sizeof(*bpage), M_DEVBUF, + M_NOWAIT | M_ZERO); + + if (bpage == NULL) + break; + bpage->vaddr = (vm_offset_t)contigmalloc(PAGE_SIZE, M_DEVBUF, + M_NOWAIT, 0ul, + bz->lowaddr, + PAGE_SIZE, + bz->boundary); + if (bpage->vaddr == 0) { + free(bpage, M_DEVBUF); + break; + } + bpage->busaddr = pmap_kextract(bpage->vaddr); + bpage->vaddr_nocache = (vm_offset_t)arm_remap_nocache( + (void *)bpage->vaddr, PAGE_SIZE); + mtx_lock(&bounce_lock); + STAILQ_INSERT_TAIL(&bz->bounce_page_list, bpage, links); + total_bpages++; + bz->total_bpages++; + bz->free_bpages++; + mtx_unlock(&bounce_lock); + count++; + numpages--; + } + return (count); +} + +static int +reserve_bounce_pages(bus_dma_tag_t dmat, bus_dmamap_t map, int commit) +{ + struct bounce_zone *bz; + int pages; + + mtx_assert(&bounce_lock, MA_OWNED); + bz = dmat->bounce_zone; + pages = MIN(bz->free_bpages, map->pagesneeded - map->pagesreserved); + if (commit == 0 && map->pagesneeded > (map->pagesreserved + pages)) + return (map->pagesneeded - (map->pagesreserved + pages)); + bz->free_bpages -= pages; + bz->reserved_bpages += pages; + map->pagesreserved += pages; + pages = map->pagesneeded - map->pagesreserved; + + return (pages); +} + +static bus_addr_t +add_bounce_page(bus_dma_tag_t dmat, bus_dmamap_t map, vm_offset_t vaddr, + bus_size_t size) +{ + struct bounce_zone *bz; + struct bounce_page *bpage; + + KASSERT(dmat->bounce_zone != NULL, ("no bounce zone in dma tag")); + KASSERT(map != NULL && map != &nobounce_dmamap, + ("add_bounce_page: bad map %p", map)); + + bz = dmat->bounce_zone; + if (map->pagesneeded == 0) + panic("add_bounce_page: map doesn't need any pages"); + map->pagesneeded--; + + if (map->pagesreserved == 0) + panic("add_bounce_page: map doesn't need any pages"); + map->pagesreserved--; + + mtx_lock(&bounce_lock); + bpage = STAILQ_FIRST(&bz->bounce_page_list); + if (bpage == NULL) + panic("add_bounce_page: free page list is empty"); + + STAILQ_REMOVE_HEAD(&bz->bounce_page_list, links); + bz->reserved_bpages--; + bz->active_bpages++; + mtx_unlock(&bounce_lock); + + bpage->datavaddr = vaddr; + bpage->datacount = size; + STAILQ_INSERT_TAIL(&(map->bpages), bpage, links); + return (bpage->busaddr); +} + +static void +free_bounce_page(bus_dma_tag_t dmat, struct bounce_page *bpage) +{ + struct bus_dmamap *map; + struct bounce_zone *bz; + + bz = dmat->bounce_zone; + bpage->datavaddr = 0; + bpage->datacount = 0; + + mtx_lock(&bounce_lock); + STAILQ_INSERT_HEAD(&bz->bounce_page_list, bpage, links); + bz->free_bpages++; + bz->active_bpages--; + if ((map = STAILQ_FIRST(&bounce_map_waitinglist)) != NULL) { + if (reserve_bounce_pages(map->dmat, map, 1) == 0) { + STAILQ_REMOVE_HEAD(&bounce_map_waitinglist, links); + STAILQ_INSERT_TAIL(&bounce_map_callbacklist, + map, links); + busdma_swi_pending = 1; + bz->total_deferred++; + swi_sched(vm_ih, 0); + } + } + mtx_unlock(&bounce_lock); +} + +void +busdma_swi(void) +{ + bus_dma_tag_t dmat; + struct bus_dmamap *map; + + mtx_lock(&bounce_lock); + while ((map = STAILQ_FIRST(&bounce_map_callbacklist)) != NULL) { + STAILQ_REMOVE_HEAD(&bounce_map_callbacklist, links); + mtx_unlock(&bounce_lock); + dmat = map->dmat; + (dmat->lockfunc)(dmat->lockfuncarg, BUS_DMA_LOCK); + bus_dmamap_load(map->dmat, map, map->buffer, map->len, + map->callback, map->callback_arg, /*flags*/0); + (dmat->lockfunc)(dmat->lockfuncarg, BUS_DMA_UNLOCK); + mtx_lock(&bounce_lock); + } + mtx_unlock(&bounce_lock); +} ==== //depot/projects/linuxolator/src/sys/arm/arm/vm_machdep.c#4 (text+ko) ==== @@ -41,7 +41,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/arm/arm/vm_machdep.c,v 1.29 2006/11/07 22:35:30 cognet Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/vm_machdep.c,v 1.30 2007/01/17 00:53:05 cognet Exp $"); #include #include @@ -70,6 +70,8 @@ #include #include +#include + #ifndef NSFBUFS #define NSFBUFS (512 + maxusers * 16) #endif @@ -371,6 +373,9 @@ void swi_vm(void *dummy) { + + if (busdma_swi_pending) + busdma_swi(); } void ==== //depot/projects/linuxolator/src/sys/arm/include/bus_dma.h#2 (text+ko) ==== @@ -67,7 +67,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Thu Jan 18 10:08:02 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id E723116A4A0; Thu, 18 Jan 2007 10:08:01 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id C4CC616A40F for ; Thu, 18 Jan 2007 10:08:01 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id B55A513C461 for ; Thu, 18 Jan 2007 10:08:01 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0IA812E031556 for ; Thu, 18 Jan 2007 10:08:01 GMT (envelope-from hselasky@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0IA810Z031551 for perforce@freebsd.org; Thu, 18 Jan 2007 10:08:01 GMT (envelope-from hselasky@FreeBSD.org) Date: Thu, 18 Jan 2007 10:08:01 GMT Message-Id: <200701181008.l0IA810Z031551@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to hselasky@FreeBSD.org using -f From: Hans Petter Selasky To: Perforce Change Reviews Cc: Subject: PERFORCE change 113101 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 18 Jan 2007 10:08:02 -0000 http://perforce.freebsd.org/chv.cgi?CH=113101 Change 113101 by hselasky@hselasky_mini_itx on 2007/01/18 10:07:13 If the number of devices changed during list traversal, set "count" to the lowest value. Affected files ... .. //depot/projects/usb/src/sys/kern/subr_bus.c#4 edit Differences ... ==== //depot/projects/usb/src/sys/kern/subr_bus.c#4 (text+ko) ==== @@ -1876,13 +1876,16 @@ TAILQ_FOREACH(child, &dev->children, link) { if (n < count) { list[n] = child; - n++; } + n++; } if (n != count) { printf("device_get_children: Number of devices changed " "from %d to %d!\n", count, n); + if (n < count) { + count = n; + } } *devlistp = list; From owner-p4-projects@FreeBSD.ORG Thu Jan 18 10:16:12 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 95C7C16A416; Thu, 18 Jan 2007 10:16:12 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 5B87A16A407 for ; Thu, 18 Jan 2007 10:16:12 +0000 (UTC) (envelope-from rdivacky@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 4CA7C13C442 for ; Thu, 18 Jan 2007 10:16:12 +0000 (UTC) (envelope-from rdivacky@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0IAGCUJ033196 for ; Thu, 18 Jan 2007 10:16:12 GMT (envelope-from rdivacky@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0IAGB2s033193 for perforce@freebsd.org; Thu, 18 Jan 2007 10:16:11 GMT (envelope-from rdivacky@FreeBSD.org) Date: Thu, 18 Jan 2007 10:16:11 GMT Message-Id: <200701181016.l0IAGB2s033193@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to rdivacky@FreeBSD.org using -f From: Roman Divacky To: Perforce Change Reviews Cc: Subject: PERFORCE change 113102 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 18 Jan 2007 10:16:12 -0000 http://perforce.freebsd.org/chv.cgi?CH=113102 Change 113102 by rdivacky@rdivacky_witten on 2007/01/18 10:15:16 Fix mismerge by IFC Affected files ... .. //depot/projects/linuxolator/src/sys/compat/linux/linux_file.c#12 edit Differences ... ==== //depot/projects/linuxolator/src/sys/compat/linux/linux_file.c#12 (text+ko) ==== @@ -120,9 +120,9 @@ bsd_flags |= O_EXCL; if (l_flags & LINUX_O_NOCTTY) bsd_flags |= O_NOCTTY; - if (args->flags & LINUX_O_DIRECT) + if (l_flags & LINUX_O_DIRECT) bsd_flags |= O_DIRECT; - if (args->flags & LINUX_O_NOFOLLOW) + if (l_flags & LINUX_O_NOFOLLOW) bsd_flags |= O_NOFOLLOW; /* XXX LINUX_O_NOATIME: unable to be easily implemented. */ @@ -149,7 +149,7 @@ PROC_UNLOCK(p); sx_sunlock(&proctree_lock); } - if (args->flags & LINUX_O_DIRECTORY) { + if (l_flags & LINUX_O_DIRECTORY) { if (fp->f_type != DTYPE_VNODE || fp->f_vnode->v_type != VDIR) { error = ENOTDIR; From owner-p4-projects@FreeBSD.ORG Thu Jan 18 10:17:15 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 2944B16A415; Thu, 18 Jan 2007 10:17:15 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id CA1C216A47E for ; Thu, 18 Jan 2007 10:17:14 +0000 (UTC) (envelope-from rdivacky@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id BAEE613C467 for ; Thu, 18 Jan 2007 10:17:14 +0000 (UTC) (envelope-from rdivacky@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0IAHEpc033248 for ; Thu, 18 Jan 2007 10:17:14 GMT (envelope-from rdivacky@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0IAHE0a033245 for perforce@freebsd.org; Thu, 18 Jan 2007 10:17:14 GMT (envelope-from rdivacky@FreeBSD.org) Date: Thu, 18 Jan 2007 10:17:14 GMT Message-Id: <200701181017.l0IAHE0a033245@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to rdivacky@FreeBSD.org using -f From: Roman Divacky To: Perforce Change Reviews Cc: Subject: PERFORCE change 113103 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 18 Jan 2007 10:17:15 -0000 http://perforce.freebsd.org/chv.cgi?CH=113103 Change 113103 by rdivacky@rdivacky_witten on 2007/01/18 10:17:04 We have to lock the em in a case of child == 0 because its looked up thus shared. Affected files ... .. //depot/projects/linuxolator/src/sys/compat/linux/linux_emul.c#23 edit Differences ... ==== //depot/projects/linuxolator/src/sys/compat/linux/linux_emul.c#23 (text+ko) ==== @@ -99,7 +99,7 @@ } } else { /* lookup the old one */ - em = em_find(td->td_proc, EMUL_DONTLOCK); + em = em_find(td->td_proc, EMUL_DOLOCK); KASSERT(em != NULL, ("proc_init: emuldata not found in exec case.\n")); } @@ -139,7 +139,8 @@ /* we might have a sleeping linux_schedtail */ wakeup(&p->p_emuldata); PROC_UNLOCK(p); - } + } else + EMUL_UNLOCK(&emul_lock); return (0); } From owner-p4-projects@FreeBSD.ORG Thu Jan 18 10:19:18 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 9349016A494; Thu, 18 Jan 2007 10:19:18 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 55A6416A407 for ; Thu, 18 Jan 2007 10:19:18 +0000 (UTC) (envelope-from rdivacky@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 2E01813C45B for ; Thu, 18 Jan 2007 10:19:18 +0000 (UTC) (envelope-from rdivacky@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0IAJIL8033366 for ; Thu, 18 Jan 2007 10:19:18 GMT (envelope-from rdivacky@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0IAJHxU033363 for perforce@freebsd.org; Thu, 18 Jan 2007 10:19:17 GMT (envelope-from rdivacky@FreeBSD.org) Date: Thu, 18 Jan 2007 10:19:17 GMT Message-Id: <200701181019.l0IAJHxU033363@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to rdivacky@FreeBSD.org using -f From: Roman Divacky To: Perforce Change Reviews Cc: Subject: PERFORCE change 113104 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 18 Jan 2007 10:19:18 -0000 http://perforce.freebsd.org/chv.cgi?CH=113104 Change 113104 by rdivacky@rdivacky_witten on 2007/01/18 10:18:29 Whitespace. Affected files ... .. //depot/projects/linuxolator/src/sys/compat/linux/linux_emul.c#24 edit Differences ... ==== //depot/projects/linuxolator/src/sys/compat/linux/linux_emul.c#24 (text+ko) ==== @@ -140,7 +140,7 @@ wakeup(&p->p_emuldata); PROC_UNLOCK(p); } else - EMUL_UNLOCK(&emul_lock); + EMUL_UNLOCK(&emul_lock); return (0); } From owner-p4-projects@FreeBSD.ORG Thu Jan 18 10:40:45 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 8004B16A47E; Thu, 18 Jan 2007 10:40:45 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 3AB8316A416 for ; Thu, 18 Jan 2007 10:40:45 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 12BE213C45A for ; Thu, 18 Jan 2007 10:40:45 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0IAeiN0036717 for ; Thu, 18 Jan 2007 10:40:44 GMT (envelope-from hselasky@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0IAei63036714 for perforce@freebsd.org; Thu, 18 Jan 2007 10:40:44 GMT (envelope-from hselasky@FreeBSD.org) Date: Thu, 18 Jan 2007 10:40:44 GMT Message-Id: <200701181040.l0IAei63036714@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to hselasky@FreeBSD.org using -f From: Hans Petter Selasky To: Perforce Change Reviews Cc: Subject: PERFORCE change 113105 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 18 Jan 2007 10:40:45 -0000 http://perforce.freebsd.org/chv.cgi?CH=113105 Change 113105 by hselasky@hselasky_mini_itx on 2007/01/18 10:40:02 Use unsigned type for counting the number of devices. Affected files ... .. //depot/projects/usb/src/sys/kern/subr_bus.c#5 edit Differences ... ==== //depot/projects/usb/src/sys/kern/subr_bus.c#5 (text+ko) ==== @@ -1848,8 +1848,8 @@ int device_get_children(device_t dev, device_t **devlistp, int *devcountp) { - int count; - int n; + uint32_t count; + uint32_t n; device_t child; device_t *list; From owner-p4-projects@FreeBSD.ORG Thu Jan 18 10:46:54 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 78C6916A417; Thu, 18 Jan 2007 10:46:54 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 4B3A516A40F for ; Thu, 18 Jan 2007 10:46:54 +0000 (UTC) (envelope-from piso@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 3A47913C448 for ; Thu, 18 Jan 2007 10:46:54 +0000 (UTC) (envelope-from piso@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0IAksXZ038102 for ; Thu, 18 Jan 2007 10:46:54 GMT (envelope-from piso@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0IAkquu038099 for perforce@freebsd.org; Thu, 18 Jan 2007 10:46:52 GMT (envelope-from piso@freebsd.org) Date: Thu, 18 Jan 2007 10:46:52 GMT Message-Id: <200701181046.l0IAkquu038099@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to piso@freebsd.org using -f From: Paolo Pisati To: Perforce Change Reviews Cc: Subject: PERFORCE change 113106 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 18 Jan 2007 10:46:54 -0000 http://perforce.freebsd.org/chv.cgi?CH=113106 Change 113106 by piso@piso_newluxor on 2007/01/18 10:46:50 IFC@113100 Affected files ... .. //depot/projects/soc2005/libalias/sys/netinet/libalias/alias.c#33 edit .. //depot/projects/soc2005/libalias/sys/netinet/libalias/alias.h#10 edit .. //depot/projects/soc2006/intr_filter/amd64/include/md_var.h#3 integrate .. //depot/projects/soc2006/intr_filter/arm/arm/busdma_machdep.c#3 integrate .. //depot/projects/soc2006/intr_filter/arm/arm/vm_machdep.c#6 integrate .. //depot/projects/soc2006/intr_filter/arm/include/bus_dma.h#2 integrate .. //depot/projects/soc2006/intr_filter/arm/include/md_var.h#2 integrate .. //depot/projects/soc2006/intr_filter/arm/include/pmap.h#4 integrate .. //depot/projects/soc2006/intr_filter/arm/xscale/ixp425/if_npe.c#2 integrate .. //depot/projects/soc2006/intr_filter/arm/xscale/ixp425/ixp425.c#2 integrate .. //depot/projects/soc2006/intr_filter/arm/xscale/ixp425/ixp425_pci.c#2 integrate .. //depot/projects/soc2006/intr_filter/arm/xscale/ixp425/ixp425var.h#2 integrate .. //depot/projects/soc2006/intr_filter/compat/linux/linux_file.c#5 integrate .. //depot/projects/soc2006/intr_filter/conf/files.sparc64#4 integrate .. //depot/projects/soc2006/intr_filter/ddb/db_command.c#5 integrate .. //depot/projects/soc2006/intr_filter/ddb/db_thread.c#3 integrate .. //depot/projects/soc2006/intr_filter/dev/aac/aac_cam.c#4 integrate .. //depot/projects/soc2006/intr_filter/dev/acpica/acpi_cpu.c#3 integrate .. //depot/projects/soc2006/intr_filter/dev/bge/if_bge.c#11 integrate .. //depot/projects/soc2006/intr_filter/dev/bge/if_bgereg.h#10 integrate .. //depot/projects/soc2006/intr_filter/dev/fb/creator.c#3 integrate .. //depot/projects/soc2006/intr_filter/dev/fb/creatorreg.h#3 integrate .. //depot/projects/soc2006/intr_filter/dev/mfi/mfi_pci.c#3 integrate .. //depot/projects/soc2006/intr_filter/dev/mii/brgphy.c#6 integrate .. //depot/projects/soc2006/intr_filter/dev/mii/miidevs#6 integrate .. //depot/projects/soc2006/intr_filter/dev/pci/pci.c#9 integrate .. //depot/projects/soc2006/intr_filter/dev/pci/pcireg.h#4 integrate .. //depot/projects/soc2006/intr_filter/dev/re/if_re.c#14 integrate .. //depot/projects/soc2006/intr_filter/dev/sound/pci/hda/hdac_private.h#3 integrate .. //depot/projects/soc2006/intr_filter/dev/usb/ums.c#3 integrate .. //depot/projects/soc2006/intr_filter/fs/msdosfs/denode.h#4 integrate .. //depot/projects/soc2006/intr_filter/fs/msdosfs/msdosfs_fat.c#2 integrate .. //depot/projects/soc2006/intr_filter/fs/udf/udf_vnops.c#3 integrate .. //depot/projects/soc2006/intr_filter/i386/i386/pmap.c#9 integrate .. //depot/projects/soc2006/intr_filter/i386/ibcs2/ibcs2_sysvec.c#2 integrate .. //depot/projects/soc2006/intr_filter/kern/imgact_elf.c#3 integrate .. //depot/projects/soc2006/intr_filter/kern/init_main.c#6 integrate .. //depot/projects/soc2006/intr_filter/kern/kern_descrip.c#8 integrate .. //depot/projects/soc2006/intr_filter/kern/kern_ktrace.c#6 integrate .. //depot/projects/soc2006/intr_filter/kern/kern_resource.c#7 integrate .. //depot/projects/soc2006/intr_filter/kern/kern_sig.c#6 integrate .. //depot/projects/soc2006/intr_filter/kern/kern_subr.c#5 integrate .. //depot/projects/soc2006/intr_filter/kern/subr_turnstile.c#5 integrate .. //depot/projects/soc2006/intr_filter/kern/subr_witness.c#5 integrate .. //depot/projects/soc2006/intr_filter/net/bridgestp.c#8 integrate .. //depot/projects/soc2006/intr_filter/netinet/sctp_asconf.c#5 integrate .. //depot/projects/soc2006/intr_filter/netinet/sctp_asconf.h#3 integrate .. //depot/projects/soc2006/intr_filter/netinet/sctp_auth.c#3 integrate .. //depot/projects/soc2006/intr_filter/netinet/sctp_bsd_addr.c#3 integrate .. //depot/projects/soc2006/intr_filter/netinet/sctp_bsd_addr.h#2 integrate .. //depot/projects/soc2006/intr_filter/netinet/sctp_constants.h#4 integrate .. //depot/projects/soc2006/intr_filter/netinet/sctp_crc32.c#2 integrate .. //depot/projects/soc2006/intr_filter/netinet/sctp_crc32.h#2 integrate .. //depot/projects/soc2006/intr_filter/netinet/sctp_indata.c#5 integrate .. //depot/projects/soc2006/intr_filter/netinet/sctp_indata.h#2 integrate .. //depot/projects/soc2006/intr_filter/netinet/sctp_input.c#5 integrate .. //depot/projects/soc2006/intr_filter/netinet/sctp_input.h#2 integrate .. //depot/projects/soc2006/intr_filter/netinet/sctp_os.h#3 integrate .. //depot/projects/soc2006/intr_filter/netinet/sctp_os_bsd.h#4 integrate .. //depot/projects/soc2006/intr_filter/netinet/sctp_output.c#5 integrate .. //depot/projects/soc2006/intr_filter/netinet/sctp_output.h#2 integrate .. //depot/projects/soc2006/intr_filter/netinet/sctp_pcb.c#5 integrate .. //depot/projects/soc2006/intr_filter/netinet/sctp_pcb.h#4 integrate .. //depot/projects/soc2006/intr_filter/netinet/sctp_peeloff.c#3 integrate .. //depot/projects/soc2006/intr_filter/netinet/sctp_peeloff.h#2 integrate .. //depot/projects/soc2006/intr_filter/netinet/sctp_structs.h#5 integrate .. //depot/projects/soc2006/intr_filter/netinet/sctp_timer.c#4 integrate .. //depot/projects/soc2006/intr_filter/netinet/sctp_timer.h#2 integrate .. //depot/projects/soc2006/intr_filter/netinet/sctp_uio.h#4 integrate .. //depot/projects/soc2006/intr_filter/netinet/sctp_usrreq.c#5 integrate .. //depot/projects/soc2006/intr_filter/netinet/sctp_var.h#3 integrate .. //depot/projects/soc2006/intr_filter/netinet/sctputil.c#5 integrate .. //depot/projects/soc2006/intr_filter/netinet/sctputil.h#4 integrate .. //depot/projects/soc2006/intr_filter/netinet6/icmp6.c#5 integrate .. //depot/projects/soc2006/intr_filter/netinet6/sctp6_usrreq.c#5 integrate .. //depot/projects/soc2006/intr_filter/netinet6/sctp6_var.h#2 integrate .. //depot/projects/soc2006/intr_filter/pci/if_rlreg.h#7 integrate .. //depot/projects/soc2006/intr_filter/pci/intpm.c#7 integrate .. //depot/projects/soc2006/intr_filter/sparc64/creator/creator.h#2 delete .. //depot/projects/soc2006/intr_filter/sparc64/creator/creator_upa.c#2 delete .. //depot/projects/soc2006/intr_filter/sparc64/sbus/sbus.c#8 integrate .. //depot/projects/soc2006/intr_filter/sparc64/sparc64/ofw_machdep.c#2 integrate .. //depot/projects/soc2006/intr_filter/sparc64/sparc64/upa.c#1 branch .. //depot/projects/soc2006/intr_filter/sys/systm.h#7 integrate .. //depot/projects/soc2006/intr_filter/ufs/ffs/ffs_alloc.c#4 integrate .. //depot/projects/soc2006/intr_filter/ufs/ufs/ufs_vnops.c#5 integrate .. //depot/projects/soc2006/intr_filter/vm/vm_object.c#6 integrate .. //depot/projects/soc2006/intr_filter/vm/vm_pageout.c#4 integrate Differences ... ==== //depot/projects/soc2005/libalias/sys/netinet/libalias/alias.c#33 (text+ko) ==== @@ -1212,15 +1212,26 @@ } /* Local prototypes */ +#ifdef _KERNEL +static int +LibAliasOutLocked(struct libalias *la, struct mbuf *ptr, int maxpacketsize, + int create); +static int +LibAliasInLocked(struct libalias *la, struct mbuf *ptr, int maxpacketsize); +#else static int -LibAliasOutLocked(struct libalias *la, char *ptr, - int maxpacketsize, int create); +LibAliasOutLocked(struct libalias *la, char *ptr,int maxpacketsize, + int create); static int -LibAliasInLocked(struct libalias *la, char *ptr, - int maxpacketsize); +LibAliasInLocked(struct libalias *la, char *ptr, int maxpacketsize); +#endif int +#ifdef _KERNEL +LibAliasIn(struct libalias *la, struct mbuf *ptr, int maxpacketsize) +#else LibAliasIn(struct libalias *la, char *ptr, int maxpacketsize) +#endif { int res; @@ -1231,7 +1242,11 @@ } static int +#ifdef _KERNEL +LibAliasInLocked(struct libalias *la, struct mbuf *ptr, int maxpacketsize) +#else LibAliasInLocked(struct libalias *la, char *ptr, int maxpacketsize) +#endif { struct in_addr alias_addr; struct ip *pip; ==== //depot/projects/soc2005/libalias/sys/netinet/libalias/alias.h#10 (text+ko) ==== ==== //depot/projects/soc2006/intr_filter/amd64/include/md_var.h#3 (text+ko) ==== @@ -26,7 +26,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/amd64/include/md_var.h,v 1.78 2006/06/19 22:36:01 davidxu Exp $ + * $FreeBSD: src/sys/amd64/include/md_var.h,v 1.80 2007/01/18 05:46:32 rodrigc Exp $ */ #ifndef _MACHINE_MD_VAR_H_ ==== //depot/projects/soc2006/intr_filter/arm/arm/busdma_machdep.c#3 (text+ko) ==== @@ -29,7 +29,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/arm/arm/busdma_machdep.c,v 1.27 2006/08/25 15:10:45 cognet Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/busdma_machdep.c,v 1.28 2007/01/17 00:53:05 cognet Exp $"); /* * MacPPC bus dma support routines @@ -48,6 +48,7 @@ #include #include #include +#include #include #include @@ -56,7 +57,14 @@ #include #include #include +#include +#define MAX_BPAGES 64 +#define BUS_DMA_COULD_BOUNCE BUS_DMA_BUS3 +#define BUS_DMA_MIN_ALLOC_COMP BUS_DMA_BUS4 + +struct bounce_zone; + struct bus_dma_tag { bus_dma_tag_t parent; bus_size_t alignment; @@ -81,8 +89,47 @@ */ struct arm32_dma_range *ranges; int _nranges; + struct bounce_zone *bounce_zone; }; +struct bounce_page { + vm_offset_t vaddr; /* kva of bounce buffer */ + vm_offset_t vaddr_nocache; /* kva of bounce buffer uncached */ + bus_addr_t busaddr; /* Physical address */ + vm_offset_t datavaddr; /* kva of client data */ + bus_size_t datacount; /* client data count */ + STAILQ_ENTRY(bounce_page) links; +}; + +int busdma_swi_pending; + +struct bounce_zone { + STAILQ_ENTRY(bounce_zone) links; + STAILQ_HEAD(bp_list, bounce_page) bounce_page_list; + int total_bpages; + int free_bpages; + int reserved_bpages; + int active_bpages; + int total_bounced; + int total_deferred; + bus_size_t alignment; + bus_size_t boundary; + bus_addr_t lowaddr; + char zoneid[8]; + char lowaddrid[20]; + struct sysctl_ctx_list sysctl_tree; + struct sysctl_oid *sysctl_tree_top; +}; + +static struct mtx bounce_lock; +static int total_bpages; +static int busdma_zonecount; +static STAILQ_HEAD(, bounce_zone) bounce_zone_list; + +SYSCTL_NODE(_hw, OID_AUTO, busdma, CTLFLAG_RD, 0, "Busdma parameters"); +SYSCTL_INT(_hw_busdma, OID_AUTO, total_bpages, CTLFLAG_RD, &total_bpages, 0, + "Total bounce pages"); + #define DMAMAP_LINEAR 0x1 #define DMAMAP_MBUF 0x2 #define DMAMAP_UIO 0x4 @@ -90,6 +137,9 @@ #define DMAMAP_TYPE_MASK (DMAMAP_LINEAR|DMAMAP_MBUF|DMAMAP_UIO) #define DMAMAP_COHERENT 0x8 struct bus_dmamap { + struct bp_list bpages; + int pagesneeded; + int pagesreserved; bus_dma_tag_t dmat; int flags; void *buffer; @@ -97,8 +147,15 @@ void *allocbuffer; TAILQ_ENTRY(bus_dmamap) freelist; int len; + STAILQ_ENTRY(bus_dmamap) links; + bus_dmamap_callback_t *callback; + void *callback_arg; + }; +static STAILQ_HEAD(, bus_dmamap) bounce_map_waitinglist; +static STAILQ_HEAD(, bus_dmamap) bounce_map_callbacklist; + static TAILQ_HEAD(,bus_dmamap) dmamap_freelist = TAILQ_HEAD_INITIALIZER(dmamap_freelist); @@ -109,6 +166,45 @@ MTX_SYSINIT(busdma_mtx, &busdma_mtx, "busdma lock", MTX_DEF); +static void init_bounce_pages(void *dummy); +static int alloc_bounce_zone(bus_dma_tag_t dmat); +static int alloc_bounce_pages(bus_dma_tag_t dmat, u_int numpages); +static int reserve_bounce_pages(bus_dma_tag_t dmat, bus_dmamap_t map, + int commit); +static bus_addr_t add_bounce_page(bus_dma_tag_t dmat, bus_dmamap_t map, + vm_offset_t vaddr, bus_size_t size); +static void free_bounce_page(bus_dma_tag_t dmat, struct bounce_page *bpage); + +/* Default tag, as most drivers provide no parent tag. */ +bus_dma_tag_t arm_root_dma_tag; + +/* + * Return true if a match is made. + * + * To find a match walk the chain of bus_dma_tag_t's looking for 'paddr'. + * + * If paddr is within the bounds of the dma tag then call the filter callback + * to check for a match, if there is no filter callback then assume a match. + */ +static int +run_filter(bus_dma_tag_t dmat, bus_addr_t paddr) +{ + int retval; + + retval = 0; + + do { + if (((paddr > dmat->lowaddr && paddr <= dmat->highaddr) + || ((paddr & (dmat->alignment - 1)) != 0)) + && (dmat->filter == NULL + || (*dmat->filter)(dmat->filterarg, paddr) != 0)) + retval = 1; + + dmat = dmat->parent; + } while (retval == 0 && dmat != NULL); + return (retval); +} + static void arm_dmamap_freelist_init(void *dummy) { @@ -129,6 +225,19 @@ bus_dmamap_t map, void *buf, bus_size_t buflen, struct pmap *pmap, int flags, vm_offset_t *lastaddrp, int *segp); +static __inline int +_bus_dma_can_bounce(vm_offset_t lowaddr, vm_offset_t highaddr) +{ + int i; + for (i = 0; phys_avail[i] && phys_avail[i + 1]; i += 2) { + if ((lowaddr >= phys_avail[i] && lowaddr <= phys_avail[i + 1]) + || (lowaddr < phys_avail[i] && + highaddr > phys_avail[i])) + return (1); + } + return (0); +} + static __inline struct arm32_dma_range * _bus_dma_inrange(struct arm32_dma_range *ranges, int nranges, bus_addr_t curaddr) @@ -195,11 +304,12 @@ TAILQ_REMOVE(&dmamap_freelist, map, freelist); mtx_unlock(&busdma_mtx); if (!map) { - map = malloc(sizeof(*map), M_DEVBUF, M_NOWAIT); + map = malloc(sizeof(*map), M_DEVBUF, M_NOWAIT | M_ZERO); if (map) map->flags = DMAMAP_ALLOCATED; } else map->flags = 0; + STAILQ_INIT(&map->bpages); return (map); } @@ -232,6 +342,8 @@ int error = 0; /* Return a NULL tag on failure */ *dmat = NULL; + if (!parent) + parent = arm_root_dma_tag; newtag = (bus_dma_tag_t)malloc(sizeof(*newtag), M_DEVBUF, M_NOWAIT); if (newtag == NULL) { @@ -273,6 +385,9 @@ else if (parent->boundary != 0) newtag->boundary = min(parent->boundary, newtag->boundary); + if ((newtag->filter != NULL) || + ((parent->flags & BUS_DMA_COULD_BOUNCE) != 0)) + newtag->flags |= BUS_DMA_COULD_BOUNCE; if (newtag->filter == NULL) { /* * Short circuit looking at our parent directly @@ -285,8 +400,38 @@ if (newtag->parent != NULL) atomic_add_int(&parent->ref_count, 1); } + if (_bus_dma_can_bounce(newtag->lowaddr, newtag->highaddr) + || newtag->alignment > 1) + newtag->flags |= BUS_DMA_COULD_BOUNCE; + + if (((newtag->flags & BUS_DMA_COULD_BOUNCE) != 0) && + (flags & BUS_DMA_ALLOCNOW) != 0) { + struct bounce_zone *bz; + + /* Must bounce */ + + if ((error = alloc_bounce_zone(newtag)) != 0) { + free(newtag, M_DEVBUF); + return (error); + } + bz = newtag->bounce_zone; - *dmat = newtag; + if (ptoa(bz->total_bpages) < maxsize) { + int pages; + + pages = atop(maxsize) - bz->total_bpages; + + /* Add pages to our bounce pool */ + if (alloc_bounce_pages(newtag, pages) < pages) + error = ENOMEM; + } + /* Performed initial allocation */ + newtag->flags |= BUS_DMA_MIN_ALLOC_COMP; + } + if (error != 0) + free(newtag, M_DEVBUF); + else + *dmat = newtag; CTR4(KTR_BUSDMA, "%s returned tag %p tag flags 0x%x error %d", __func__, newtag, (newtag != NULL ? newtag->flags : 0), error); @@ -327,6 +472,7 @@ return (0); } +#include /* * Allocate a handle for mapping from kva/uva/physical * address space into bus device space. @@ -335,9 +481,7 @@ bus_dmamap_create(bus_dma_tag_t dmat, int flags, bus_dmamap_t *mapp) { bus_dmamap_t newmap; -#ifdef KTR int error = 0; -#endif newmap = _busdma_alloc_dmamap(); if (newmap == NULL) { @@ -349,6 +493,52 @@ newmap->allocbuffer = NULL; dmat->map_count++; + /* + * Bouncing might be required if the driver asks for an active + * exclusion region, a data alignment that is stricter than 1, and/or + * an active address boundary. + */ + if (dmat->flags & BUS_DMA_COULD_BOUNCE) { + + /* Must bounce */ + struct bounce_zone *bz; + int maxpages; + + if (dmat->bounce_zone == NULL) { + if ((error = alloc_bounce_zone(dmat)) != 0) { + _busdma_free_dmamap(newmap); + *mapp = NULL; + return (error); + } + } + bz = dmat->bounce_zone; + + /* Initialize the new map */ + STAILQ_INIT(&((*mapp)->bpages)); + + /* + * Attempt to add pages to our pool on a per-instance + * basis up to a sane limit. + */ + maxpages = MAX_BPAGES; + if ((dmat->flags & BUS_DMA_MIN_ALLOC_COMP) == 0 + || (dmat->map_count > 0 && bz->total_bpages < maxpages)) { + int pages; + + pages = MAX(atop(dmat->maxsize), 1); + pages = MIN(maxpages - bz->total_bpages, pages); + pages = MAX(pages, 1); + if (alloc_bounce_pages(dmat, pages) < pages) + error = ENOMEM; + + if ((dmat->flags & BUS_DMA_MIN_ALLOC_COMP) == 0) { + if (error == 0) + dmat->flags |= BUS_DMA_MIN_ALLOC_COMP; + } else { + error = 0; + } + } + } CTR4(KTR_BUSDMA, "%s: tag %p tag flags 0x%x error %d", __func__, dmat, dmat->flags, error); @@ -364,6 +554,11 @@ { _busdma_free_dmamap(map); + if (STAILQ_FIRST(&map->bpages) != NULL) { + CTR3(KTR_BUSDMA, "%s: tag %p error %d", + __func__, dmat, EBUSY); + return (EBUSY); + } dmat->map_count--; CTR2(KTR_BUSDMA, "%s: tag %p error 0", __func__, dmat); return (0); @@ -399,7 +594,9 @@ *mapp = newmap; newmap->dmat = dmat; - if (dmat->maxsize <= PAGE_SIZE) { + if (dmat->maxsize <= PAGE_SIZE && + (dmat->alignment < dmat->maxsize) && + !_bus_dma_can_bounce(dmat->lowaddr, dmat->highaddr)) { *vaddr = malloc(dmat->maxsize, M_DEVBUF, mflags); } else { /* @@ -452,7 +649,9 @@ vaddr = map->origbuffer; arm_unmap_nocache(map->allocbuffer, dmat->maxsize); } - if (dmat->maxsize <= PAGE_SIZE) + if (dmat->maxsize <= PAGE_SIZE && + dmat->alignment < dmat->maxsize && + !_bus_dma_can_bounce(dmat->lowaddr, dmat->highaddr)) free(vaddr, M_DEVBUF); else { contigfree(vaddr, dmat->maxsize, M_DEVBUF); @@ -462,6 +661,64 @@ CTR3(KTR_BUSDMA, "%s: tag %p flags 0x%x", __func__, dmat, dmat->flags); } +static int +_bus_dmamap_count_pages(bus_dma_tag_t dmat, bus_dmamap_t map, void *buf, + bus_size_t buflen, int flags, int *nb) +{ + vm_offset_t vaddr; + vm_offset_t vendaddr; + bus_addr_t paddr; + int needbounce = *nb; + + if ((map->pagesneeded == 0)) { + CTR4(KTR_BUSDMA, "lowaddr= %d Maxmem= %d, boundary= %d, " + "alignment= %d", dmat->lowaddr, ptoa((vm_paddr_t)Maxmem), + dmat->boundary, dmat->alignment); + CTR3(KTR_BUSDMA, "map= %p, nobouncemap= %p, pagesneeded= %d", + map, &nobounce_dmamap, map->pagesneeded); + /* + * Count the number of bounce pages + * needed in order to complete this transfer + */ + vaddr = trunc_page((vm_offset_t)buf); + vendaddr = (vm_offset_t)buf + buflen; + + while (vaddr < vendaddr) { + paddr = pmap_kextract(vaddr); + if (((dmat->flags & BUS_DMA_COULD_BOUNCE) != 0) && + run_filter(dmat, paddr) != 0) { + needbounce = 1; + map->pagesneeded++; + } + vaddr += PAGE_SIZE; + } + CTR1(KTR_BUSDMA, "pagesneeded= %d\n", map->pagesneeded); + } + + /* Reserve Necessary Bounce Pages */ + if (map->pagesneeded != 0) { + mtx_lock(&bounce_lock); + if (flags & BUS_DMA_NOWAIT) { + if (reserve_bounce_pages(dmat, map, 0) != 0) { + mtx_unlock(&bounce_lock); + return (ENOMEM); + } + } else { + if (reserve_bounce_pages(dmat, map, 1) != 0) { + /* Queue us for resources */ + STAILQ_INSERT_TAIL(&bounce_map_waitinglist, + map, links); + mtx_unlock(&bounce_lock); + return (EINPROGRESS); + } + } + mtx_unlock(&bounce_lock); + } + + *nb = needbounce; + return (0); +} + /* * Utility function to load a linear buffer. lastaddrp holds state * between invocations (for multiple-buffer loads). segp contains @@ -481,10 +738,17 @@ pd_entry_t *pde; pt_entry_t pte; pt_entry_t *ptep; + int needbounce = 0; lastaddr = *lastaddrp; bmask = ~(dmat->boundary - 1); + if ((dmat->flags & BUS_DMA_COULD_BOUNCE) != 0) { + error = _bus_dmamap_count_pages(dmat, map, buf, buflen, flags, + &needbounce); + if (error) + return (error); + } CTR3(KTR_BUSDMA, "lowaddr= %d boundary= %d, " "alignment= %d", dmat->lowaddr, dmat->boundary, dmat->alignment); @@ -531,20 +795,6 @@ map->flags &= ~DMAMAP_COHERENT; } - if (dmat->ranges) { - struct arm32_dma_range *dr; - - dr = _bus_dma_inrange(dmat->ranges, dmat->_nranges, - curaddr); - if (dr == NULL) - return (EINVAL); - /* - * In a valid DMA range. Translate the physical - * memory address to an address in the DMA window. - */ - curaddr = (curaddr - dr->dr_sysbase) + dr->dr_busbase; - - } /* * Compute the segment size, and adjust counts. */ @@ -560,12 +810,30 @@ if (sgsize > (baddr - curaddr)) sgsize = (baddr - curaddr); } + if (((dmat->flags & BUS_DMA_COULD_BOUNCE) != 0) && + map->pagesneeded != 0 && run_filter(dmat, curaddr)) + curaddr = add_bounce_page(dmat, map, vaddr, sgsize); + + if (dmat->ranges) { + struct arm32_dma_range *dr; + dr = _bus_dma_inrange(dmat->ranges, dmat->_nranges, + curaddr); + if (dr == NULL) + return (EINVAL); + /* + * In a valid DMA range. Translate the physical + * memory address to an address in the DMA window. + */ + curaddr = (curaddr - dr->dr_sysbase) + dr->dr_busbase; + + } + /* * Insert chunk into a segment, coalescing with * the previous segment if possible. */ - if (seg >= 0 && curaddr == lastaddr && + if (needbounce == 0 && seg >= 0 && curaddr == lastaddr && (segs[seg].ds_len + sgsize) <= dmat->maxsegsz && (dmat->boundary == 0 || (segs[seg].ds_addr & bmask) == @@ -615,6 +883,8 @@ KASSERT(dmat != NULL, ("dmatag is NULL")); KASSERT(map != NULL, ("dmamap is NULL")); + map->callback = callback; + map->callback_arg = callback_arg; map->flags &= ~DMAMAP_TYPE_MASK; map->flags |= DMAMAP_LINEAR|DMAMAP_COHERENT; map->buffer = buf; @@ -622,6 +892,8 @@ error = bus_dmamap_load_buffer(dmat, dm_segments, map, buf, buflen, kernel_pmap, flags, &lastaddr, &nsegs); + if (error == EINPROGRESS) + return (error); if (error) (*callback)(callback_arg, NULL, 0, error); else @@ -797,26 +1069,93 @@ void _bus_dmamap_unload(bus_dma_tag_t dmat, bus_dmamap_t map) { + struct bounce_page *bpage; + map->flags &= ~DMAMAP_TYPE_MASK; + while ((bpage = STAILQ_FIRST(&map->bpages)) != NULL) { + STAILQ_REMOVE_HEAD(&map->bpages, links); + free_bounce_page(dmat, bpage); + } return; } static __inline void bus_dmamap_sync_buf(void *buf, int len, bus_dmasync_op_t op) { + char _tmp_cl[arm_dcache_align], _tmp_clend[arm_dcache_align]; if (op & BUS_DMASYNC_PREWRITE) cpu_dcache_wb_range((vm_offset_t)buf, len); - if (op & BUS_DMASYNC_PREREAD) { + if (op & BUS_DMASYNC_POSTREAD) { + if ((vm_offset_t)buf & arm_dcache_align_mask) + memcpy(_tmp_cl, (void *)((vm_offset_t)buf & ~ + arm_dcache_align_mask), + (vm_offset_t)buf - ((vm_offset_t)buf &~ + arm_dcache_align_mask)); + if (((vm_offset_t)buf + len) & arm_dcache_align_mask) + memcpy(_tmp_cl, (void *)((vm_offset_t)buf & ~ + arm_dcache_align_mask), + (vm_offset_t)buf - ((vm_offset_t)buf &~ + arm_dcache_align_mask)); + if (((vm_offset_t)buf + len) & arm_dcache_align_mask) + memcpy(_tmp_clend, (void *)(((vm_offset_t)buf + len) & ~ + arm_dcache_align_mask), + (vm_offset_t)buf +len - (((vm_offset_t)buf + len) &~ + arm_dcache_align_mask)); + cpu_dcache_inv_range((vm_offset_t)buf, len); if ((vm_offset_t)buf & arm_dcache_align_mask) - cpu_dcache_wbinv_range((vm_offset_t)buf & - ~arm_dcache_align_mask, arm_dcache_align); + memcpy((void *)((vm_offset_t)buf & + ~arm_dcache_align_mask), + _tmp_cl, + (vm_offset_t)buf - ((vm_offset_t)buf &~ + arm_dcache_align_mask)); if (((vm_offset_t)buf + len) & arm_dcache_align_mask) - cpu_dcache_wbinv_range(((vm_offset_t)buf + len) & - ~arm_dcache_align_mask, arm_dcache_align); + memcpy((void *)(((vm_offset_t)buf + len) & ~ + arm_dcache_align_mask), _tmp_clend, + (vm_offset_t)buf +len - (((vm_offset_t)buf + len) &~ + arm_dcache_align_mask)); + } +} + +static void +_bus_dmamap_sync_bp(bus_dma_tag_t dmat, bus_dmamap_t map, bus_dmasync_op_t op) +{ + struct bounce_page *bpage; + + STAILQ_FOREACH(bpage, &map->bpages, links) { + if (op & BUS_DMASYNC_PREWRITE) { + bcopy((void *)bpage->datavaddr, + (void *)(bpage->vaddr_nocache != 0 ? + bpage->vaddr_nocache : bpage->vaddr), + bpage->datacount); + if (bpage->vaddr_nocache == 0) + cpu_dcache_wb_range(bpage->vaddr, + bpage->datacount); + } + if (op & BUS_DMASYNC_POSTREAD) { + if (bpage->vaddr_nocache == 0) + cpu_dcache_inv_range(bpage->vaddr, + bpage->datacount); + bcopy((void *)(bpage->vaddr_nocache != 0 ? + bpage->vaddr_nocache : bpage->vaddr), + (void *)bpage->datavaddr, bpage->datacount); + } + } +} + +static __inline int +_bus_dma_buf_is_in_bp(bus_dmamap_t map, void *buf, int len) +{ + struct bounce_page *bpage; + + STAILQ_FOREACH(bpage, &map->bpages, links) { + if ((vm_offset_t)buf >= bpage->datavaddr && + (vm_offset_t)buf + len < bpage->datavaddr + + bpage->datacount) + return (1); } - if (op & BUS_DMASYNC_POSTREAD) - cpu_dcache_inv_range((vm_offset_t)buf, len); + return (0); + } void @@ -829,6 +1168,8 @@ if (op == BUS_DMASYNC_POSTWRITE) return; + if (STAILQ_FIRST(&map->bpages)) + _bus_dmamap_sync_bp(dmat, map, op); if (map->flags & DMAMAP_COHERENT) return; if ((op && BUS_DMASYNC_POSTREAD) && (map->len >= 2 * PAGE_SIZE)) { @@ -838,12 +1179,14 @@ CTR3(KTR_BUSDMA, "%s: op %x flags %x", __func__, op, map->flags); switch(map->flags & DMAMAP_TYPE_MASK) { case DMAMAP_LINEAR: - bus_dmamap_sync_buf(map->buffer, map->len, op); + if (!(_bus_dma_buf_is_in_bp(map, map->buffer, map->len))) + bus_dmamap_sync_buf(map->buffer, map->len, op); break; case DMAMAP_MBUF: m = map->buffer; while (m) { - if (m->m_len > 0) + if (m->m_len > 0 && + !(_bus_dma_buf_is_in_bp(map, m->m_data, m->m_len))) bus_dmamap_sync_buf(m->m_data, m->m_len, op); m = m->m_next; } @@ -856,8 +1199,10 @@ bus_size_t minlen = resid < iov[i].iov_len ? resid : iov[i].iov_len; if (minlen > 0) { - bus_dmamap_sync_buf(iov[i].iov_base, minlen, - op); + if (!_bus_dma_buf_is_in_bp(map, iov[i].iov_base, + minlen)) + bus_dmamap_sync_buf(iov[i].iov_base, + minlen, op); resid -= minlen; } } @@ -867,3 +1212,247 @@ } cpu_drain_writebuf(); } + +static void +init_bounce_pages(void *dummy __unused) +{ + + total_bpages = 0; + STAILQ_INIT(&bounce_zone_list); + STAILQ_INIT(&bounce_map_waitinglist); + STAILQ_INIT(&bounce_map_callbacklist); + mtx_init(&bounce_lock, "bounce pages lock", NULL, MTX_DEF); +} +SYSINIT(bpages, SI_SUB_LOCK, SI_ORDER_ANY, init_bounce_pages, NULL); + +static struct sysctl_ctx_list * +busdma_sysctl_tree(struct bounce_zone *bz) +{ + return (&bz->sysctl_tree); +} + +static struct sysctl_oid * +busdma_sysctl_tree_top(struct bounce_zone *bz) +{ + return (bz->sysctl_tree_top); +} + +static int +alloc_bounce_zone(bus_dma_tag_t dmat) +{ + struct bounce_zone *bz; + + /* Check to see if we already have a suitable zone */ + STAILQ_FOREACH(bz, &bounce_zone_list, links) { + if ((dmat->alignment <= bz->alignment) + && (dmat->boundary <= bz->boundary) + && (dmat->lowaddr >= bz->lowaddr)) { + dmat->bounce_zone = bz; + return (0); + } + } + + if ((bz = (struct bounce_zone *)malloc(sizeof(*bz), M_DEVBUF, + M_NOWAIT | M_ZERO)) == NULL) + return (ENOMEM); + + STAILQ_INIT(&bz->bounce_page_list); + bz->free_bpages = 0; + bz->reserved_bpages = 0; + bz->active_bpages = 0; + bz->lowaddr = dmat->lowaddr; + bz->alignment = dmat->alignment; + bz->boundary = dmat->boundary; + snprintf(bz->zoneid, 8, "zone%d", busdma_zonecount); + busdma_zonecount++; + snprintf(bz->lowaddrid, 18, "%#jx", (uintmax_t)bz->lowaddr); + STAILQ_INSERT_TAIL(&bounce_zone_list, bz, links); + dmat->bounce_zone = bz; + + sysctl_ctx_init(&bz->sysctl_tree); + bz->sysctl_tree_top = SYSCTL_ADD_NODE(&bz->sysctl_tree, + SYSCTL_STATIC_CHILDREN(_hw_busdma), OID_AUTO, bz->zoneid, + CTLFLAG_RD, 0, ""); + if (bz->sysctl_tree_top == NULL) { + sysctl_ctx_free(&bz->sysctl_tree); + return (0); /* XXX error code? */ + } + + SYSCTL_ADD_INT(busdma_sysctl_tree(bz), + SYSCTL_CHILDREN(busdma_sysctl_tree_top(bz)), OID_AUTO, + "total_bpages", CTLFLAG_RD, &bz->total_bpages, 0, + "Total bounce pages"); + SYSCTL_ADD_INT(busdma_sysctl_tree(bz), + SYSCTL_CHILDREN(busdma_sysctl_tree_top(bz)), OID_AUTO, + "free_bpages", CTLFLAG_RD, &bz->free_bpages, 0, + "Free bounce pages"); + SYSCTL_ADD_INT(busdma_sysctl_tree(bz), + SYSCTL_CHILDREN(busdma_sysctl_tree_top(bz)), OID_AUTO, + "reserved_bpages", CTLFLAG_RD, &bz->reserved_bpages, 0, + "Reserved bounce pages"); + SYSCTL_ADD_INT(busdma_sysctl_tree(bz), + SYSCTL_CHILDREN(busdma_sysctl_tree_top(bz)), OID_AUTO, + "active_bpages", CTLFLAG_RD, &bz->active_bpages, 0, + "Active bounce pages"); + SYSCTL_ADD_INT(busdma_sysctl_tree(bz), + SYSCTL_CHILDREN(busdma_sysctl_tree_top(bz)), OID_AUTO, + "total_bounced", CTLFLAG_RD, &bz->total_bounced, 0, + "Total bounce requests"); + SYSCTL_ADD_INT(busdma_sysctl_tree(bz), + SYSCTL_CHILDREN(busdma_sysctl_tree_top(bz)), OID_AUTO, + "total_deferred", CTLFLAG_RD, &bz->total_deferred, 0, + "Total bounce requests that were deferred"); + SYSCTL_ADD_STRING(busdma_sysctl_tree(bz), + SYSCTL_CHILDREN(busdma_sysctl_tree_top(bz)), OID_AUTO, + "lowaddr", CTLFLAG_RD, bz->lowaddrid, 0, ""); + SYSCTL_ADD_INT(busdma_sysctl_tree(bz), + SYSCTL_CHILDREN(busdma_sysctl_tree_top(bz)), OID_AUTO, + "alignment", CTLFLAG_RD, &bz->alignment, 0, ""); + SYSCTL_ADD_INT(busdma_sysctl_tree(bz), + SYSCTL_CHILDREN(busdma_sysctl_tree_top(bz)), OID_AUTO, + "boundary", CTLFLAG_RD, &bz->boundary, 0, ""); + + return (0); +} + +static int +alloc_bounce_pages(bus_dma_tag_t dmat, u_int numpages) +{ + struct bounce_zone *bz; + int count; + + bz = dmat->bounce_zone; + count = 0; + while (numpages > 0) { + struct bounce_page *bpage; + + bpage = (struct bounce_page *)malloc(sizeof(*bpage), M_DEVBUF, + M_NOWAIT | M_ZERO); + + if (bpage == NULL) + break; + bpage->vaddr = (vm_offset_t)contigmalloc(PAGE_SIZE, M_DEVBUF, + M_NOWAIT, 0ul, + bz->lowaddr, + PAGE_SIZE, + bz->boundary); + if (bpage->vaddr == 0) { + free(bpage, M_DEVBUF); + break; + } + bpage->busaddr = pmap_kextract(bpage->vaddr); + bpage->vaddr_nocache = (vm_offset_t)arm_remap_nocache( + (void *)bpage->vaddr, PAGE_SIZE); + mtx_lock(&bounce_lock); + STAILQ_INSERT_TAIL(&bz->bounce_page_list, bpage, links); + total_bpages++; + bz->total_bpages++; + bz->free_bpages++; + mtx_unlock(&bounce_lock); + count++; + numpages--; + } + return (count); +} + +static int +reserve_bounce_pages(bus_dma_tag_t dmat, bus_dmamap_t map, int commit) +{ + struct bounce_zone *bz; + int pages; + + mtx_assert(&bounce_lock, MA_OWNED); + bz = dmat->bounce_zone; + pages = MIN(bz->free_bpages, map->pagesneeded - map->pagesreserved); + if (commit == 0 && map->pagesneeded > (map->pagesreserved + pages)) + return (map->pagesneeded - (map->pagesreserved + pages)); + bz->free_bpages -= pages; + bz->reserved_bpages += pages; + map->pagesreserved += pages; + pages = map->pagesneeded - map->pagesreserved; + + return (pages); +} + +static bus_addr_t +add_bounce_page(bus_dma_tag_t dmat, bus_dmamap_t map, vm_offset_t vaddr, + bus_size_t size) +{ + struct bounce_zone *bz; + struct bounce_page *bpage; + + KASSERT(dmat->bounce_zone != NULL, ("no bounce zone in dma tag")); + KASSERT(map != NULL && map != &nobounce_dmamap, + ("add_bounce_page: bad map %p", map)); + + bz = dmat->bounce_zone; + if (map->pagesneeded == 0) + panic("add_bounce_page: map doesn't need any pages"); + map->pagesneeded--; + + if (map->pagesreserved == 0) + panic("add_bounce_page: map doesn't need any pages"); + map->pagesreserved--; + + mtx_lock(&bounce_lock); + bpage = STAILQ_FIRST(&bz->bounce_page_list); + if (bpage == NULL) + panic("add_bounce_page: free page list is empty"); + + STAILQ_REMOVE_HEAD(&bz->bounce_page_list, links); + bz->reserved_bpages--; + bz->active_bpages++; + mtx_unlock(&bounce_lock); + >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Thu Jan 18 13:20:55 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id AB3C116A49E; Thu, 18 Jan 2007 13:20:55 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 840E416A40F; Thu, 18 Jan 2007 13:20:55 +0000 (UTC) (envelope-from alexander@leidinger.net) Received: from redbull.bpaserver.net (redbullneu.bpaserver.net [213.198.78.217]) by mx1.freebsd.org (Postfix) with ESMTP id 32AED13C4B9; Thu, 18 Jan 2007 13:20:55 +0000 (UTC) (envelope-from alexander@leidinger.net) Received: from outgoing.leidinger.net (p54A5D12E.dip.t-dialin.net [84.165.209.46]) by redbull.bpaserver.net (Postfix) with ESMTP id 144772E1BA; Thu, 18 Jan 2007 14:28:48 +0100 (CET) Received: from webmail.leidinger.net (webmail.Leidinger.net [192.168.1.102]) by outgoing.leidinger.net (Postfix) with ESMTP id 32FEF5B4891; Thu, 18 Jan 2007 14:20:43 +0100 (CET) Received: (from www@localhost) by webmail.leidinger.net (8.13.8/8.13.8/Submit) id l0IDKfBx098292; Thu, 18 Jan 2007 14:20:41 +0100 (CET) (envelope-from Alexander@Leidinger.net) Received: from psbru.cec.eu.int (psbru.cec.eu.int [158.169.131.14]) by webmail.leidinger.net (Horde MIME library) with HTTP; Thu, 18 Jan 2007 14:20:41 +0100 Message-ID: <20070118142041.uio1r7xxesw4g0oo@webmail.leidinger.net> X-Priority: 3 (Normal) Date: Thu, 18 Jan 2007 14:20:41 +0100 From: Alexander Leidinger To: Divacky Roman References: <200701180243.l0I2hcLn035071@repoman.freebsd.org> <20070118085452.GA60150@stud.fit.vutbr.cz> In-Reply-To: <20070118085452.GA60150@stud.fit.vutbr.cz> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; DelSp="Yes"; format="flowed" Content-Disposition: inline Content-Transfer-Encoding: 7bit User-Agent: Internet Messaging Program (IMP) H3 (4.1.3) / FreeBSD-7.0 X-BPAnet-MailScanner-Information: Please contact the ISP for more information X-BPAnet-MailScanner: Found to be clean X-BPAnet-MailScanner-SpamCheck: not spam, SpamAssassin (not cached, score=-14.787, required 6, autolearn=not spam, BAYES_00 -15.00, DK_POLICY_SIGNSOME 0.00, FORGED_RCVD_HELO 0.14, TW_OC 0.08) X-BPAnet-MailScanner-From: alexander@leidinger.net X-Spam-Status: No Cc: Perforce Change Reviews , des@freebsd.org, Jung-uk Kim Subject: Re: PERFORCE change 113090 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 18 Jan 2007 13:20:56 -0000 Quoting Divacky Roman (from Thu, 18 Jan 2007 09:54:52 +0100): >> + sbuf_printf(sb, "%s version %s (des@freebsd.org) (gcc version " > > makes me wonder... shouldnt the des@freebsd.org be change to > emulation@freebsd.org > or something like that? this looks strange to me (might have a > purpose I am not > aware of) Dag-Erling wrote this (linprocfs). And so far I passed each linprocfs change past him (in some way). If des hands over the maintainership (I hope he doesn't but reviews patches instead) of linprocfs to emulation@, it can be changed. Unless this happens I suggest to forget this idea. Bye, Alexander. -- COMPASS [for the CDC-6000 series] is the sort of assembler one expects from a corporation whose president codes in octal. -- J. N. Gray http://www.Leidinger.net Alexander @ Leidinger.net: PGP ID = B0063FE7 http://www.FreeBSD.org netchild @ FreeBSD.org : PGP ID = 72077137 From owner-p4-projects@FreeBSD.ORG Thu Jan 18 14:29:42 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 47C1B16A415; Thu, 18 Jan 2007 14:29:42 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 1CD2416A407 for ; Thu, 18 Jan 2007 14:29:42 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 0B92A13C455 for ; Thu, 18 Jan 2007 14:29:42 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0IETf3q009770 for ; Thu, 18 Jan 2007 14:29:42 GMT (envelope-from jhb@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0IETc8F009766 for perforce@freebsd.org; Thu, 18 Jan 2007 14:29:38 GMT (envelope-from jhb@freebsd.org) Date: Thu, 18 Jan 2007 14:29:38 GMT Message-Id: <200701181429.l0IETc8F009766@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to jhb@freebsd.org using -f From: John Baldwin To: Perforce Change Reviews Cc: Subject: PERFORCE change 113116 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 18 Jan 2007 14:29:42 -0000 http://perforce.freebsd.org/chv.cgi?CH=113116 Change 113116 by jhb@jhb_zion on 2007/01/18 14:28:59 IFC @113114. Affected files ... .. //depot/projects/smpng/sys/amd64/include/md_var.h#14 integrate .. //depot/projects/smpng/sys/amd64/linux32/linux32_machdep.c#16 integrate .. //depot/projects/smpng/sys/arm/arm/busdma_machdep.c#19 integrate .. //depot/projects/smpng/sys/arm/arm/vm_machdep.c#25 integrate .. //depot/projects/smpng/sys/arm/include/bus_dma.h#2 integrate .. //depot/projects/smpng/sys/arm/include/md_var.h#4 integrate .. //depot/projects/smpng/sys/arm/include/pmap.h#21 integrate .. //depot/projects/smpng/sys/arm/xscale/ixp425/if_npe.c#2 integrate .. //depot/projects/smpng/sys/arm/xscale/ixp425/ixp425.c#2 integrate .. //depot/projects/smpng/sys/arm/xscale/ixp425/ixp425_pci.c#2 integrate .. //depot/projects/smpng/sys/arm/xscale/ixp425/ixp425var.h#2 integrate .. //depot/projects/smpng/sys/boot/forth/loader.conf#46 integrate .. //depot/projects/smpng/sys/compat/linux/linux_file.c#34 integrate .. //depot/projects/smpng/sys/compat/linux/linux_ipc.c#30 integrate .. //depot/projects/smpng/sys/compat/linux/linux_mib.c#16 integrate .. //depot/projects/smpng/sys/conf/files.sparc64#60 integrate .. //depot/projects/smpng/sys/conf/options#133 integrate .. //depot/projects/smpng/sys/ddb/db_command.c#37 integrate .. //depot/projects/smpng/sys/ddb/db_thread.c#9 integrate .. //depot/projects/smpng/sys/dev/aac/aac_cam.c#21 integrate .. //depot/projects/smpng/sys/dev/acpica/acpi_cpu.c#37 integrate .. //depot/projects/smpng/sys/dev/ath/ath_rate/sample/sample.c#9 integrate .. //depot/projects/smpng/sys/dev/ath/ath_rate/sample/sample.h#5 integrate .. //depot/projects/smpng/sys/dev/ath/if_ath.c#48 integrate .. //depot/projects/smpng/sys/dev/ath/if_athvar.h#29 integrate .. //depot/projects/smpng/sys/dev/bce/if_bce.c#12 integrate .. //depot/projects/smpng/sys/dev/bge/if_bge.c#86 integrate .. //depot/projects/smpng/sys/dev/bge/if_bgereg.h#51 integrate .. //depot/projects/smpng/sys/dev/cy/cy_isa.c#3 integrate .. //depot/projects/smpng/sys/dev/dpt/dpt.h#6 integrate .. //depot/projects/smpng/sys/dev/dpt/dpt_eisa.c#9 integrate .. //depot/projects/smpng/sys/dev/dpt/dpt_scsi.c#18 integrate .. //depot/projects/smpng/sys/dev/fb/creator.c#11 integrate .. //depot/projects/smpng/sys/dev/fb/creatorreg.h#2 integrate .. //depot/projects/smpng/sys/dev/fb/fbreg.h#15 integrate .. //depot/projects/smpng/sys/dev/fb/gallant12x22.c#2 integrate .. //depot/projects/smpng/sys/dev/mfi/mfi_pci.c#4 integrate .. //depot/projects/smpng/sys/dev/mii/acphy.c#16 integrate .. //depot/projects/smpng/sys/dev/mii/acphyreg.h#2 integrate .. //depot/projects/smpng/sys/dev/mii/brgphy.c#36 integrate .. //depot/projects/smpng/sys/dev/mii/exphy.c#15 integrate .. //depot/projects/smpng/sys/dev/mii/mii_physubr.c#16 integrate .. //depot/projects/smpng/sys/dev/mii/miidevs#22 integrate .. //depot/projects/smpng/sys/dev/mii/miivar.h#9 integrate .. //depot/projects/smpng/sys/dev/mii/rlphy.c#20 integrate .. //depot/projects/smpng/sys/dev/mii/ruephy.c#6 integrate .. //depot/projects/smpng/sys/dev/pci/pci.c#84 integrate .. //depot/projects/smpng/sys/dev/pci/pci_pci.c#31 integrate .. //depot/projects/smpng/sys/dev/pci/pcib_private.h#10 integrate .. //depot/projects/smpng/sys/dev/pci/pcireg.h#19 integrate .. //depot/projects/smpng/sys/dev/re/if_re.c#49 integrate .. //depot/projects/smpng/sys/dev/si/si.c#23 integrate .. //depot/projects/smpng/sys/dev/sound/pci/hda/hdac.c#7 integrate .. //depot/projects/smpng/sys/dev/sound/pci/hda/hdac_private.h#3 integrate .. //depot/projects/smpng/sys/dev/usb/ums.c#25 integrate .. //depot/projects/smpng/sys/fs/msdosfs/denode.h#14 integrate .. //depot/projects/smpng/sys/fs/msdosfs/msdosfs_fat.c#10 integrate .. //depot/projects/smpng/sys/fs/udf/udf_vnops.c#36 integrate .. //depot/projects/smpng/sys/i386/i386/machdep.c#123 integrate .. //depot/projects/smpng/sys/i386/i386/pmap.c#112 integrate .. //depot/projects/smpng/sys/i386/ibcs2/ibcs2_sysvec.c#10 integrate .. //depot/projects/smpng/sys/i386/linux/linux_machdep.c#40 integrate .. //depot/projects/smpng/sys/kern/imgact_elf.c#54 integrate .. //depot/projects/smpng/sys/kern/init_main.c#65 integrate .. //depot/projects/smpng/sys/kern/kern_descrip.c#100 integrate .. //depot/projects/smpng/sys/kern/kern_ktrace.c#57 integrate .. //depot/projects/smpng/sys/kern/kern_resource.c#67 integrate .. //depot/projects/smpng/sys/kern/kern_sig.c#130 integrate .. //depot/projects/smpng/sys/kern/kern_subr.c#44 integrate .. //depot/projects/smpng/sys/kern/subr_turnstile.c#36 integrate .. //depot/projects/smpng/sys/kern/subr_witness.c#157 integrate .. //depot/projects/smpng/sys/net/bridgestp.c#18 integrate .. //depot/projects/smpng/sys/net80211/_ieee80211.h#6 integrate .. //depot/projects/smpng/sys/net80211/ieee80211.c#26 integrate .. //depot/projects/smpng/sys/net80211/ieee80211_node.c#30 integrate .. //depot/projects/smpng/sys/netgraph/ng_deflate.c#2 integrate .. //depot/projects/smpng/sys/netgraph/ng_ppp.c#21 integrate .. //depot/projects/smpng/sys/netgraph/ng_pred1.c#2 integrate .. //depot/projects/smpng/sys/netgraph/ng_tcpmss.c#3 integrate .. //depot/projects/smpng/sys/netinet/if_ether.c#52 integrate .. //depot/projects/smpng/sys/netinet/sctp_asconf.c#4 integrate .. //depot/projects/smpng/sys/netinet/sctp_asconf.h#3 integrate .. //depot/projects/smpng/sys/netinet/sctp_auth.c#3 integrate .. //depot/projects/smpng/sys/netinet/sctp_bsd_addr.c#3 integrate .. //depot/projects/smpng/sys/netinet/sctp_bsd_addr.h#2 integrate .. //depot/projects/smpng/sys/netinet/sctp_constants.h#4 integrate .. //depot/projects/smpng/sys/netinet/sctp_crc32.c#2 integrate .. //depot/projects/smpng/sys/netinet/sctp_crc32.h#2 integrate .. //depot/projects/smpng/sys/netinet/sctp_indata.c#5 integrate .. //depot/projects/smpng/sys/netinet/sctp_indata.h#2 integrate .. //depot/projects/smpng/sys/netinet/sctp_input.c#5 integrate .. //depot/projects/smpng/sys/netinet/sctp_input.h#2 integrate .. //depot/projects/smpng/sys/netinet/sctp_os.h#3 integrate .. //depot/projects/smpng/sys/netinet/sctp_os_bsd.h#4 integrate .. //depot/projects/smpng/sys/netinet/sctp_output.c#5 integrate .. //depot/projects/smpng/sys/netinet/sctp_output.h#2 integrate .. //depot/projects/smpng/sys/netinet/sctp_pcb.c#4 integrate .. //depot/projects/smpng/sys/netinet/sctp_pcb.h#4 integrate .. //depot/projects/smpng/sys/netinet/sctp_peeloff.c#3 integrate .. //depot/projects/smpng/sys/netinet/sctp_peeloff.h#2 integrate .. //depot/projects/smpng/sys/netinet/sctp_structs.h#4 integrate .. //depot/projects/smpng/sys/netinet/sctp_timer.c#4 integrate .. //depot/projects/smpng/sys/netinet/sctp_timer.h#2 integrate .. //depot/projects/smpng/sys/netinet/sctp_uio.h#4 integrate .. //depot/projects/smpng/sys/netinet/sctp_usrreq.c#5 integrate .. //depot/projects/smpng/sys/netinet/sctp_var.h#3 integrate .. //depot/projects/smpng/sys/netinet/sctputil.c#6 integrate .. //depot/projects/smpng/sys/netinet/sctputil.h#4 integrate .. //depot/projects/smpng/sys/netinet6/icmp6.c#37 integrate .. //depot/projects/smpng/sys/netinet6/sctp6_usrreq.c#4 integrate .. //depot/projects/smpng/sys/netinet6/sctp6_var.h#2 integrate .. //depot/projects/smpng/sys/pci/if_pcn.c#43 integrate .. //depot/projects/smpng/sys/pci/if_rlreg.h#35 integrate .. //depot/projects/smpng/sys/pci/intpm.c#14 integrate .. //depot/projects/smpng/sys/powerpc/powerpc/cpu.c#6 integrate .. //depot/projects/smpng/sys/powerpc/powerpc/machdep.c#72 integrate .. //depot/projects/smpng/sys/sparc64/creator/creator.h#6 delete .. //depot/projects/smpng/sys/sparc64/creator/creator_upa.c#10 delete .. //depot/projects/smpng/sys/sparc64/include/bus.h#28 integrate .. //depot/projects/smpng/sys/sparc64/include/ofw_nexus.h#2 integrate .. //depot/projects/smpng/sys/sparc64/isa/isa.c#17 integrate .. //depot/projects/smpng/sys/sparc64/pci/ofw_pci_if.m#6 integrate .. //depot/projects/smpng/sys/sparc64/pci/psycho.c#40 integrate .. //depot/projects/smpng/sys/sparc64/sbus/sbus.c#26 integrate .. //depot/projects/smpng/sys/sparc64/sparc64/ofw_machdep.c#12 integrate .. //depot/projects/smpng/sys/sun4v/include/bus.h#2 integrate .. //depot/projects/smpng/sys/sun4v/sun4v/hv_pci.c#3 integrate .. //depot/projects/smpng/sys/sys/systm.h#77 integrate .. //depot/projects/smpng/sys/ufs/ffs/ffs_alloc.c#43 integrate .. //depot/projects/smpng/sys/ufs/ufs/ufs_vnops.c#60 integrate .. //depot/projects/smpng/sys/vm/vm_object.c#90 integrate .. //depot/projects/smpng/sys/vm/vm_pageout.c#60 integrate Differences ... ==== //depot/projects/smpng/sys/amd64/include/md_var.h#14 (text+ko) ==== @@ -26,7 +26,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/amd64/include/md_var.h,v 1.78 2006/06/19 22:36:01 davidxu Exp $ + * $FreeBSD: src/sys/amd64/include/md_var.h,v 1.80 2007/01/18 05:46:32 rodrigc Exp $ */ #ifndef _MACHINE_MD_VAR_H_ ==== //depot/projects/smpng/sys/amd64/linux32/linux32_machdep.c#16 (text+ko) ==== @@ -29,7 +29,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/linux32/linux32_machdep.c,v 1.25 2007/01/07 19:00:38 netchild Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/linux32/linux32_machdep.c,v 1.26 2007/01/14 16:20:37 netchild Exp $"); #include #include @@ -497,6 +497,7 @@ return (error); /* wait for the children to exit, ie. emulate vfork */ PROC_LOCK(p2); + p2->p_flag |= P_PPWAIT; while (p2->p_flag & P_PPWAIT) msleep(td->td_proc, &p2->p_mtx, PWAIT, "ppwait", 0); PROC_UNLOCK(p2); ==== //depot/projects/smpng/sys/arm/arm/busdma_machdep.c#19 (text+ko) ==== @@ -29,7 +29,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/arm/arm/busdma_machdep.c,v 1.27 2006/08/25 15:10:45 cognet Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/busdma_machdep.c,v 1.28 2007/01/17 00:53:05 cognet Exp $"); /* * MacPPC bus dma support routines @@ -48,6 +48,7 @@ #include #include #include +#include #include #include @@ -56,7 +57,14 @@ #include #include #include +#include +#define MAX_BPAGES 64 +#define BUS_DMA_COULD_BOUNCE BUS_DMA_BUS3 +#define BUS_DMA_MIN_ALLOC_COMP BUS_DMA_BUS4 + +struct bounce_zone; + struct bus_dma_tag { bus_dma_tag_t parent; bus_size_t alignment; @@ -81,8 +89,47 @@ */ struct arm32_dma_range *ranges; int _nranges; + struct bounce_zone *bounce_zone; }; +struct bounce_page { + vm_offset_t vaddr; /* kva of bounce buffer */ + vm_offset_t vaddr_nocache; /* kva of bounce buffer uncached */ + bus_addr_t busaddr; /* Physical address */ + vm_offset_t datavaddr; /* kva of client data */ + bus_size_t datacount; /* client data count */ + STAILQ_ENTRY(bounce_page) links; +}; + +int busdma_swi_pending; + +struct bounce_zone { + STAILQ_ENTRY(bounce_zone) links; + STAILQ_HEAD(bp_list, bounce_page) bounce_page_list; + int total_bpages; + int free_bpages; + int reserved_bpages; + int active_bpages; + int total_bounced; + int total_deferred; + bus_size_t alignment; + bus_size_t boundary; + bus_addr_t lowaddr; + char zoneid[8]; + char lowaddrid[20]; + struct sysctl_ctx_list sysctl_tree; + struct sysctl_oid *sysctl_tree_top; +}; + +static struct mtx bounce_lock; +static int total_bpages; +static int busdma_zonecount; +static STAILQ_HEAD(, bounce_zone) bounce_zone_list; + +SYSCTL_NODE(_hw, OID_AUTO, busdma, CTLFLAG_RD, 0, "Busdma parameters"); +SYSCTL_INT(_hw_busdma, OID_AUTO, total_bpages, CTLFLAG_RD, &total_bpages, 0, + "Total bounce pages"); + #define DMAMAP_LINEAR 0x1 #define DMAMAP_MBUF 0x2 #define DMAMAP_UIO 0x4 @@ -90,6 +137,9 @@ #define DMAMAP_TYPE_MASK (DMAMAP_LINEAR|DMAMAP_MBUF|DMAMAP_UIO) #define DMAMAP_COHERENT 0x8 struct bus_dmamap { + struct bp_list bpages; + int pagesneeded; + int pagesreserved; bus_dma_tag_t dmat; int flags; void *buffer; @@ -97,8 +147,15 @@ void *allocbuffer; TAILQ_ENTRY(bus_dmamap) freelist; int len; + STAILQ_ENTRY(bus_dmamap) links; + bus_dmamap_callback_t *callback; + void *callback_arg; + }; +static STAILQ_HEAD(, bus_dmamap) bounce_map_waitinglist; +static STAILQ_HEAD(, bus_dmamap) bounce_map_callbacklist; + static TAILQ_HEAD(,bus_dmamap) dmamap_freelist = TAILQ_HEAD_INITIALIZER(dmamap_freelist); @@ -109,6 +166,45 @@ MTX_SYSINIT(busdma_mtx, &busdma_mtx, "busdma lock", MTX_DEF); +static void init_bounce_pages(void *dummy); +static int alloc_bounce_zone(bus_dma_tag_t dmat); +static int alloc_bounce_pages(bus_dma_tag_t dmat, u_int numpages); +static int reserve_bounce_pages(bus_dma_tag_t dmat, bus_dmamap_t map, + int commit); +static bus_addr_t add_bounce_page(bus_dma_tag_t dmat, bus_dmamap_t map, + vm_offset_t vaddr, bus_size_t size); +static void free_bounce_page(bus_dma_tag_t dmat, struct bounce_page *bpage); + +/* Default tag, as most drivers provide no parent tag. */ +bus_dma_tag_t arm_root_dma_tag; + +/* + * Return true if a match is made. + * + * To find a match walk the chain of bus_dma_tag_t's looking for 'paddr'. + * + * If paddr is within the bounds of the dma tag then call the filter callback + * to check for a match, if there is no filter callback then assume a match. + */ +static int +run_filter(bus_dma_tag_t dmat, bus_addr_t paddr) +{ + int retval; + + retval = 0; + + do { + if (((paddr > dmat->lowaddr && paddr <= dmat->highaddr) + || ((paddr & (dmat->alignment - 1)) != 0)) + && (dmat->filter == NULL + || (*dmat->filter)(dmat->filterarg, paddr) != 0)) + retval = 1; + + dmat = dmat->parent; + } while (retval == 0 && dmat != NULL); + return (retval); +} + static void arm_dmamap_freelist_init(void *dummy) { @@ -129,6 +225,19 @@ bus_dmamap_t map, void *buf, bus_size_t buflen, struct pmap *pmap, int flags, vm_offset_t *lastaddrp, int *segp); +static __inline int +_bus_dma_can_bounce(vm_offset_t lowaddr, vm_offset_t highaddr) +{ + int i; + for (i = 0; phys_avail[i] && phys_avail[i + 1]; i += 2) { + if ((lowaddr >= phys_avail[i] && lowaddr <= phys_avail[i + 1]) + || (lowaddr < phys_avail[i] && + highaddr > phys_avail[i])) + return (1); + } + return (0); +} + static __inline struct arm32_dma_range * _bus_dma_inrange(struct arm32_dma_range *ranges, int nranges, bus_addr_t curaddr) @@ -195,11 +304,12 @@ TAILQ_REMOVE(&dmamap_freelist, map, freelist); mtx_unlock(&busdma_mtx); if (!map) { - map = malloc(sizeof(*map), M_DEVBUF, M_NOWAIT); + map = malloc(sizeof(*map), M_DEVBUF, M_NOWAIT | M_ZERO); if (map) map->flags = DMAMAP_ALLOCATED; } else map->flags = 0; + STAILQ_INIT(&map->bpages); return (map); } @@ -232,6 +342,8 @@ int error = 0; /* Return a NULL tag on failure */ *dmat = NULL; + if (!parent) + parent = arm_root_dma_tag; newtag = (bus_dma_tag_t)malloc(sizeof(*newtag), M_DEVBUF, M_NOWAIT); if (newtag == NULL) { @@ -273,6 +385,9 @@ else if (parent->boundary != 0) newtag->boundary = min(parent->boundary, newtag->boundary); + if ((newtag->filter != NULL) || + ((parent->flags & BUS_DMA_COULD_BOUNCE) != 0)) + newtag->flags |= BUS_DMA_COULD_BOUNCE; if (newtag->filter == NULL) { /* * Short circuit looking at our parent directly @@ -285,8 +400,38 @@ if (newtag->parent != NULL) atomic_add_int(&parent->ref_count, 1); } + if (_bus_dma_can_bounce(newtag->lowaddr, newtag->highaddr) + || newtag->alignment > 1) + newtag->flags |= BUS_DMA_COULD_BOUNCE; + + if (((newtag->flags & BUS_DMA_COULD_BOUNCE) != 0) && + (flags & BUS_DMA_ALLOCNOW) != 0) { + struct bounce_zone *bz; + + /* Must bounce */ + + if ((error = alloc_bounce_zone(newtag)) != 0) { + free(newtag, M_DEVBUF); + return (error); + } + bz = newtag->bounce_zone; - *dmat = newtag; + if (ptoa(bz->total_bpages) < maxsize) { + int pages; + + pages = atop(maxsize) - bz->total_bpages; + + /* Add pages to our bounce pool */ + if (alloc_bounce_pages(newtag, pages) < pages) + error = ENOMEM; + } + /* Performed initial allocation */ + newtag->flags |= BUS_DMA_MIN_ALLOC_COMP; + } + if (error != 0) + free(newtag, M_DEVBUF); + else + *dmat = newtag; CTR4(KTR_BUSDMA, "%s returned tag %p tag flags 0x%x error %d", __func__, newtag, (newtag != NULL ? newtag->flags : 0), error); @@ -327,6 +472,7 @@ return (0); } +#include /* * Allocate a handle for mapping from kva/uva/physical * address space into bus device space. @@ -335,9 +481,7 @@ bus_dmamap_create(bus_dma_tag_t dmat, int flags, bus_dmamap_t *mapp) { bus_dmamap_t newmap; -#ifdef KTR int error = 0; -#endif newmap = _busdma_alloc_dmamap(); if (newmap == NULL) { @@ -349,6 +493,52 @@ newmap->allocbuffer = NULL; dmat->map_count++; + /* + * Bouncing might be required if the driver asks for an active + * exclusion region, a data alignment that is stricter than 1, and/or + * an active address boundary. + */ + if (dmat->flags & BUS_DMA_COULD_BOUNCE) { + + /* Must bounce */ + struct bounce_zone *bz; + int maxpages; + + if (dmat->bounce_zone == NULL) { + if ((error = alloc_bounce_zone(dmat)) != 0) { + _busdma_free_dmamap(newmap); + *mapp = NULL; + return (error); + } + } + bz = dmat->bounce_zone; + + /* Initialize the new map */ + STAILQ_INIT(&((*mapp)->bpages)); + + /* + * Attempt to add pages to our pool on a per-instance + * basis up to a sane limit. + */ + maxpages = MAX_BPAGES; + if ((dmat->flags & BUS_DMA_MIN_ALLOC_COMP) == 0 + || (dmat->map_count > 0 && bz->total_bpages < maxpages)) { + int pages; + + pages = MAX(atop(dmat->maxsize), 1); + pages = MIN(maxpages - bz->total_bpages, pages); + pages = MAX(pages, 1); + if (alloc_bounce_pages(dmat, pages) < pages) + error = ENOMEM; + + if ((dmat->flags & BUS_DMA_MIN_ALLOC_COMP) == 0) { + if (error == 0) + dmat->flags |= BUS_DMA_MIN_ALLOC_COMP; + } else { + error = 0; + } + } + } CTR4(KTR_BUSDMA, "%s: tag %p tag flags 0x%x error %d", __func__, dmat, dmat->flags, error); @@ -364,6 +554,11 @@ { _busdma_free_dmamap(map); + if (STAILQ_FIRST(&map->bpages) != NULL) { + CTR3(KTR_BUSDMA, "%s: tag %p error %d", + __func__, dmat, EBUSY); + return (EBUSY); + } dmat->map_count--; CTR2(KTR_BUSDMA, "%s: tag %p error 0", __func__, dmat); return (0); @@ -399,7 +594,9 @@ *mapp = newmap; newmap->dmat = dmat; - if (dmat->maxsize <= PAGE_SIZE) { + if (dmat->maxsize <= PAGE_SIZE && + (dmat->alignment < dmat->maxsize) && + !_bus_dma_can_bounce(dmat->lowaddr, dmat->highaddr)) { *vaddr = malloc(dmat->maxsize, M_DEVBUF, mflags); } else { /* @@ -452,7 +649,9 @@ vaddr = map->origbuffer; arm_unmap_nocache(map->allocbuffer, dmat->maxsize); } - if (dmat->maxsize <= PAGE_SIZE) + if (dmat->maxsize <= PAGE_SIZE && + dmat->alignment < dmat->maxsize && + !_bus_dma_can_bounce(dmat->lowaddr, dmat->highaddr)) free(vaddr, M_DEVBUF); else { contigfree(vaddr, dmat->maxsize, M_DEVBUF); @@ -462,6 +661,64 @@ CTR3(KTR_BUSDMA, "%s: tag %p flags 0x%x", __func__, dmat, dmat->flags); } +static int +_bus_dmamap_count_pages(bus_dma_tag_t dmat, bus_dmamap_t map, void *buf, + bus_size_t buflen, int flags, int *nb) +{ + vm_offset_t vaddr; + vm_offset_t vendaddr; + bus_addr_t paddr; + int needbounce = *nb; + + if ((map->pagesneeded == 0)) { + CTR4(KTR_BUSDMA, "lowaddr= %d Maxmem= %d, boundary= %d, " + "alignment= %d", dmat->lowaddr, ptoa((vm_paddr_t)Maxmem), + dmat->boundary, dmat->alignment); + CTR3(KTR_BUSDMA, "map= %p, nobouncemap= %p, pagesneeded= %d", + map, &nobounce_dmamap, map->pagesneeded); + /* + * Count the number of bounce pages + * needed in order to complete this transfer + */ + vaddr = trunc_page((vm_offset_t)buf); + vendaddr = (vm_offset_t)buf + buflen; + + while (vaddr < vendaddr) { + paddr = pmap_kextract(vaddr); + if (((dmat->flags & BUS_DMA_COULD_BOUNCE) != 0) && + run_filter(dmat, paddr) != 0) { + needbounce = 1; + map->pagesneeded++; + } + vaddr += PAGE_SIZE; + } + CTR1(KTR_BUSDMA, "pagesneeded= %d\n", map->pagesneeded); + } + + /* Reserve Necessary Bounce Pages */ + if (map->pagesneeded != 0) { + mtx_lock(&bounce_lock); + if (flags & BUS_DMA_NOWAIT) { + if (reserve_bounce_pages(dmat, map, 0) != 0) { + mtx_unlock(&bounce_lock); + return (ENOMEM); + } + } else { + if (reserve_bounce_pages(dmat, map, 1) != 0) { + /* Queue us for resources */ + STAILQ_INSERT_TAIL(&bounce_map_waitinglist, + map, links); + mtx_unlock(&bounce_lock); + return (EINPROGRESS); + } + } + mtx_unlock(&bounce_lock); + } + + *nb = needbounce; + return (0); +} + /* * Utility function to load a linear buffer. lastaddrp holds state * between invocations (for multiple-buffer loads). segp contains @@ -481,10 +738,17 @@ pd_entry_t *pde; pt_entry_t pte; pt_entry_t *ptep; + int needbounce = 0; lastaddr = *lastaddrp; bmask = ~(dmat->boundary - 1); + if ((dmat->flags & BUS_DMA_COULD_BOUNCE) != 0) { + error = _bus_dmamap_count_pages(dmat, map, buf, buflen, flags, + &needbounce); + if (error) + return (error); + } CTR3(KTR_BUSDMA, "lowaddr= %d boundary= %d, " "alignment= %d", dmat->lowaddr, dmat->boundary, dmat->alignment); @@ -531,20 +795,6 @@ map->flags &= ~DMAMAP_COHERENT; } - if (dmat->ranges) { - struct arm32_dma_range *dr; - - dr = _bus_dma_inrange(dmat->ranges, dmat->_nranges, - curaddr); - if (dr == NULL) - return (EINVAL); - /* - * In a valid DMA range. Translate the physical - * memory address to an address in the DMA window. - */ - curaddr = (curaddr - dr->dr_sysbase) + dr->dr_busbase; - - } /* * Compute the segment size, and adjust counts. */ @@ -560,12 +810,30 @@ if (sgsize > (baddr - curaddr)) sgsize = (baddr - curaddr); } + if (((dmat->flags & BUS_DMA_COULD_BOUNCE) != 0) && + map->pagesneeded != 0 && run_filter(dmat, curaddr)) + curaddr = add_bounce_page(dmat, map, vaddr, sgsize); + + if (dmat->ranges) { + struct arm32_dma_range *dr; + dr = _bus_dma_inrange(dmat->ranges, dmat->_nranges, + curaddr); + if (dr == NULL) + return (EINVAL); + /* + * In a valid DMA range. Translate the physical + * memory address to an address in the DMA window. + */ + curaddr = (curaddr - dr->dr_sysbase) + dr->dr_busbase; + + } + /* * Insert chunk into a segment, coalescing with * the previous segment if possible. */ - if (seg >= 0 && curaddr == lastaddr && + if (needbounce == 0 && seg >= 0 && curaddr == lastaddr && (segs[seg].ds_len + sgsize) <= dmat->maxsegsz && (dmat->boundary == 0 || (segs[seg].ds_addr & bmask) == @@ -615,6 +883,8 @@ KASSERT(dmat != NULL, ("dmatag is NULL")); KASSERT(map != NULL, ("dmamap is NULL")); + map->callback = callback; + map->callback_arg = callback_arg; map->flags &= ~DMAMAP_TYPE_MASK; map->flags |= DMAMAP_LINEAR|DMAMAP_COHERENT; map->buffer = buf; @@ -622,6 +892,8 @@ error = bus_dmamap_load_buffer(dmat, dm_segments, map, buf, buflen, kernel_pmap, flags, &lastaddr, &nsegs); + if (error == EINPROGRESS) + return (error); if (error) (*callback)(callback_arg, NULL, 0, error); else @@ -797,26 +1069,93 @@ void _bus_dmamap_unload(bus_dma_tag_t dmat, bus_dmamap_t map) { + struct bounce_page *bpage; + map->flags &= ~DMAMAP_TYPE_MASK; + while ((bpage = STAILQ_FIRST(&map->bpages)) != NULL) { + STAILQ_REMOVE_HEAD(&map->bpages, links); + free_bounce_page(dmat, bpage); + } return; } static __inline void bus_dmamap_sync_buf(void *buf, int len, bus_dmasync_op_t op) { + char _tmp_cl[arm_dcache_align], _tmp_clend[arm_dcache_align]; if (op & BUS_DMASYNC_PREWRITE) cpu_dcache_wb_range((vm_offset_t)buf, len); - if (op & BUS_DMASYNC_PREREAD) { + if (op & BUS_DMASYNC_POSTREAD) { + if ((vm_offset_t)buf & arm_dcache_align_mask) + memcpy(_tmp_cl, (void *)((vm_offset_t)buf & ~ + arm_dcache_align_mask), + (vm_offset_t)buf - ((vm_offset_t)buf &~ + arm_dcache_align_mask)); + if (((vm_offset_t)buf + len) & arm_dcache_align_mask) + memcpy(_tmp_cl, (void *)((vm_offset_t)buf & ~ + arm_dcache_align_mask), + (vm_offset_t)buf - ((vm_offset_t)buf &~ + arm_dcache_align_mask)); + if (((vm_offset_t)buf + len) & arm_dcache_align_mask) + memcpy(_tmp_clend, (void *)(((vm_offset_t)buf + len) & ~ + arm_dcache_align_mask), + (vm_offset_t)buf +len - (((vm_offset_t)buf + len) &~ + arm_dcache_align_mask)); + cpu_dcache_inv_range((vm_offset_t)buf, len); if ((vm_offset_t)buf & arm_dcache_align_mask) - cpu_dcache_wbinv_range((vm_offset_t)buf & - ~arm_dcache_align_mask, arm_dcache_align); + memcpy((void *)((vm_offset_t)buf & + ~arm_dcache_align_mask), + _tmp_cl, + (vm_offset_t)buf - ((vm_offset_t)buf &~ + arm_dcache_align_mask)); if (((vm_offset_t)buf + len) & arm_dcache_align_mask) - cpu_dcache_wbinv_range(((vm_offset_t)buf + len) & - ~arm_dcache_align_mask, arm_dcache_align); + memcpy((void *)(((vm_offset_t)buf + len) & ~ + arm_dcache_align_mask), _tmp_clend, + (vm_offset_t)buf +len - (((vm_offset_t)buf + len) &~ + arm_dcache_align_mask)); + } +} + +static void +_bus_dmamap_sync_bp(bus_dma_tag_t dmat, bus_dmamap_t map, bus_dmasync_op_t op) +{ + struct bounce_page *bpage; + + STAILQ_FOREACH(bpage, &map->bpages, links) { + if (op & BUS_DMASYNC_PREWRITE) { + bcopy((void *)bpage->datavaddr, + (void *)(bpage->vaddr_nocache != 0 ? + bpage->vaddr_nocache : bpage->vaddr), + bpage->datacount); + if (bpage->vaddr_nocache == 0) + cpu_dcache_wb_range(bpage->vaddr, + bpage->datacount); + } + if (op & BUS_DMASYNC_POSTREAD) { + if (bpage->vaddr_nocache == 0) + cpu_dcache_inv_range(bpage->vaddr, + bpage->datacount); + bcopy((void *)(bpage->vaddr_nocache != 0 ? + bpage->vaddr_nocache : bpage->vaddr), + (void *)bpage->datavaddr, bpage->datacount); + } + } +} + +static __inline int +_bus_dma_buf_is_in_bp(bus_dmamap_t map, void *buf, int len) +{ + struct bounce_page *bpage; + + STAILQ_FOREACH(bpage, &map->bpages, links) { + if ((vm_offset_t)buf >= bpage->datavaddr && + (vm_offset_t)buf + len < bpage->datavaddr + + bpage->datacount) + return (1); } - if (op & BUS_DMASYNC_POSTREAD) - cpu_dcache_inv_range((vm_offset_t)buf, len); + return (0); + } void @@ -829,6 +1168,8 @@ if (op == BUS_DMASYNC_POSTWRITE) return; + if (STAILQ_FIRST(&map->bpages)) + _bus_dmamap_sync_bp(dmat, map, op); if (map->flags & DMAMAP_COHERENT) return; if ((op && BUS_DMASYNC_POSTREAD) && (map->len >= 2 * PAGE_SIZE)) { @@ -838,12 +1179,14 @@ CTR3(KTR_BUSDMA, "%s: op %x flags %x", __func__, op, map->flags); switch(map->flags & DMAMAP_TYPE_MASK) { case DMAMAP_LINEAR: - bus_dmamap_sync_buf(map->buffer, map->len, op); + if (!(_bus_dma_buf_is_in_bp(map, map->buffer, map->len))) + bus_dmamap_sync_buf(map->buffer, map->len, op); break; case DMAMAP_MBUF: m = map->buffer; while (m) { - if (m->m_len > 0) + if (m->m_len > 0 && + !(_bus_dma_buf_is_in_bp(map, m->m_data, m->m_len))) bus_dmamap_sync_buf(m->m_data, m->m_len, op); m = m->m_next; } @@ -856,8 +1199,10 @@ bus_size_t minlen = resid < iov[i].iov_len ? resid : iov[i].iov_len; if (minlen > 0) { - bus_dmamap_sync_buf(iov[i].iov_base, minlen, - op); + if (!_bus_dma_buf_is_in_bp(map, iov[i].iov_base, + minlen)) + bus_dmamap_sync_buf(iov[i].iov_base, + minlen, op); resid -= minlen; } } @@ -867,3 +1212,247 @@ } cpu_drain_writebuf(); } + +static void +init_bounce_pages(void *dummy __unused) +{ + + total_bpages = 0; + STAILQ_INIT(&bounce_zone_list); + STAILQ_INIT(&bounce_map_waitinglist); + STAILQ_INIT(&bounce_map_callbacklist); + mtx_init(&bounce_lock, "bounce pages lock", NULL, MTX_DEF); +} +SYSINIT(bpages, SI_SUB_LOCK, SI_ORDER_ANY, init_bounce_pages, NULL); + +static struct sysctl_ctx_list * +busdma_sysctl_tree(struct bounce_zone *bz) +{ + return (&bz->sysctl_tree); +} + +static struct sysctl_oid * +busdma_sysctl_tree_top(struct bounce_zone *bz) +{ + return (bz->sysctl_tree_top); +} + +static int +alloc_bounce_zone(bus_dma_tag_t dmat) +{ + struct bounce_zone *bz; + + /* Check to see if we already have a suitable zone */ + STAILQ_FOREACH(bz, &bounce_zone_list, links) { + if ((dmat->alignment <= bz->alignment) + && (dmat->boundary <= bz->boundary) + && (dmat->lowaddr >= bz->lowaddr)) { + dmat->bounce_zone = bz; + return (0); + } + } + + if ((bz = (struct bounce_zone *)malloc(sizeof(*bz), M_DEVBUF, + M_NOWAIT | M_ZERO)) == NULL) + return (ENOMEM); + + STAILQ_INIT(&bz->bounce_page_list); + bz->free_bpages = 0; + bz->reserved_bpages = 0; + bz->active_bpages = 0; + bz->lowaddr = dmat->lowaddr; + bz->alignment = dmat->alignment; + bz->boundary = dmat->boundary; + snprintf(bz->zoneid, 8, "zone%d", busdma_zonecount); + busdma_zonecount++; + snprintf(bz->lowaddrid, 18, "%#jx", (uintmax_t)bz->lowaddr); + STAILQ_INSERT_TAIL(&bounce_zone_list, bz, links); + dmat->bounce_zone = bz; + + sysctl_ctx_init(&bz->sysctl_tree); + bz->sysctl_tree_top = SYSCTL_ADD_NODE(&bz->sysctl_tree, + SYSCTL_STATIC_CHILDREN(_hw_busdma), OID_AUTO, bz->zoneid, + CTLFLAG_RD, 0, ""); + if (bz->sysctl_tree_top == NULL) { + sysctl_ctx_free(&bz->sysctl_tree); + return (0); /* XXX error code? */ + } + + SYSCTL_ADD_INT(busdma_sysctl_tree(bz), + SYSCTL_CHILDREN(busdma_sysctl_tree_top(bz)), OID_AUTO, + "total_bpages", CTLFLAG_RD, &bz->total_bpages, 0, + "Total bounce pages"); + SYSCTL_ADD_INT(busdma_sysctl_tree(bz), + SYSCTL_CHILDREN(busdma_sysctl_tree_top(bz)), OID_AUTO, + "free_bpages", CTLFLAG_RD, &bz->free_bpages, 0, + "Free bounce pages"); + SYSCTL_ADD_INT(busdma_sysctl_tree(bz), + SYSCTL_CHILDREN(busdma_sysctl_tree_top(bz)), OID_AUTO, + "reserved_bpages", CTLFLAG_RD, &bz->reserved_bpages, 0, + "Reserved bounce pages"); + SYSCTL_ADD_INT(busdma_sysctl_tree(bz), + SYSCTL_CHILDREN(busdma_sysctl_tree_top(bz)), OID_AUTO, + "active_bpages", CTLFLAG_RD, &bz->active_bpages, 0, + "Active bounce pages"); + SYSCTL_ADD_INT(busdma_sysctl_tree(bz), + SYSCTL_CHILDREN(busdma_sysctl_tree_top(bz)), OID_AUTO, + "total_bounced", CTLFLAG_RD, &bz->total_bounced, 0, + "Total bounce requests"); + SYSCTL_ADD_INT(busdma_sysctl_tree(bz), + SYSCTL_CHILDREN(busdma_sysctl_tree_top(bz)), OID_AUTO, + "total_deferred", CTLFLAG_RD, &bz->total_deferred, 0, + "Total bounce requests that were deferred"); + SYSCTL_ADD_STRING(busdma_sysctl_tree(bz), + SYSCTL_CHILDREN(busdma_sysctl_tree_top(bz)), OID_AUTO, + "lowaddr", CTLFLAG_RD, bz->lowaddrid, 0, ""); + SYSCTL_ADD_INT(busdma_sysctl_tree(bz), + SYSCTL_CHILDREN(busdma_sysctl_tree_top(bz)), OID_AUTO, + "alignment", CTLFLAG_RD, &bz->alignment, 0, ""); + SYSCTL_ADD_INT(busdma_sysctl_tree(bz), + SYSCTL_CHILDREN(busdma_sysctl_tree_top(bz)), OID_AUTO, + "boundary", CTLFLAG_RD, &bz->boundary, 0, ""); + + return (0); +} + +static int +alloc_bounce_pages(bus_dma_tag_t dmat, u_int numpages) +{ + struct bounce_zone *bz; + int count; + + bz = dmat->bounce_zone; + count = 0; + while (numpages > 0) { + struct bounce_page *bpage; + + bpage = (struct bounce_page *)malloc(sizeof(*bpage), M_DEVBUF, + M_NOWAIT | M_ZERO); + + if (bpage == NULL) + break; + bpage->vaddr = (vm_offset_t)contigmalloc(PAGE_SIZE, M_DEVBUF, + M_NOWAIT, 0ul, + bz->lowaddr, + PAGE_SIZE, + bz->boundary); + if (bpage->vaddr == 0) { + free(bpage, M_DEVBUF); + break; + } + bpage->busaddr = pmap_kextract(bpage->vaddr); + bpage->vaddr_nocache = (vm_offset_t)arm_remap_nocache( + (void *)bpage->vaddr, PAGE_SIZE); + mtx_lock(&bounce_lock); + STAILQ_INSERT_TAIL(&bz->bounce_page_list, bpage, links); + total_bpages++; + bz->total_bpages++; + bz->free_bpages++; + mtx_unlock(&bounce_lock); + count++; + numpages--; + } + return (count); +} + +static int +reserve_bounce_pages(bus_dma_tag_t dmat, bus_dmamap_t map, int commit) +{ + struct bounce_zone *bz; + int pages; + + mtx_assert(&bounce_lock, MA_OWNED); + bz = dmat->bounce_zone; + pages = MIN(bz->free_bpages, map->pagesneeded - map->pagesreserved); + if (commit == 0 && map->pagesneeded > (map->pagesreserved + pages)) + return (map->pagesneeded - (map->pagesreserved + pages)); + bz->free_bpages -= pages; + bz->reserved_bpages += pages; + map->pagesreserved += pages; + pages = map->pagesneeded - map->pagesreserved; + + return (pages); +} + +static bus_addr_t +add_bounce_page(bus_dma_tag_t dmat, bus_dmamap_t map, vm_offset_t vaddr, + bus_size_t size) +{ + struct bounce_zone *bz; + struct bounce_page *bpage; + + KASSERT(dmat->bounce_zone != NULL, ("no bounce zone in dma tag")); + KASSERT(map != NULL && map != &nobounce_dmamap, + ("add_bounce_page: bad map %p", map)); + + bz = dmat->bounce_zone; + if (map->pagesneeded == 0) + panic("add_bounce_page: map doesn't need any pages"); + map->pagesneeded--; >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Thu Jan 18 14:37:00 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 1D76C16A415; Thu, 18 Jan 2007 14:37:00 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id C0FAE16A407 for ; Thu, 18 Jan 2007 14:36:59 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from server.baldwin.cx (66-23-211-162.clients.speedfactory.net [66.23.211.162]) by mx1.freebsd.org (Postfix) with ESMTP id 6A32213C45A for ; Thu, 18 Jan 2007 14:36:59 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from zion.baldwin.cx (zion.baldwin.cx [192.168.0.7]) (authenticated bits=0) by server.baldwin.cx (8.13.6/8.13.6) with ESMTP id l0IEaq4k063039; Thu, 18 Jan 2007 09:36:52 -0500 (EST) (envelope-from jhb@freebsd.org) From: John Baldwin To: Jung-uk Kim Date: Thu, 18 Jan 2007 09:17:14 -0500 User-Agent: KMail/1.9.4 References: <200701180243.l0I2hcLn035071@repoman.freebsd.org> In-Reply-To: <200701180243.l0I2hcLn035071@repoman.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-15" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200701180917.15131.jhb@freebsd.org> X-Greylist: Sender succeeded SMTP AUTH authentication, not delayed by milter-greylist-2.0.2 (server.baldwin.cx [192.168.0.1]); Thu, 18 Jan 2007 09:36:53 -0500 (EST) X-Virus-Scanned: ClamAV 0.88.3/2462/Thu Jan 18 05:07:46 2007 on server.baldwin.cx X-Virus-Status: Clean X-Spam-Status: No, score=-4.4 required=4.2 tests=ALL_TRUSTED,AWL,BAYES_00 autolearn=ham version=3.1.3 X-Spam-Checker-Version: SpamAssassin 3.1.3 (2006-06-01) on server.baldwin.cx Cc: Perforce Change Reviews Subject: Re: PERFORCE change 113090 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 18 Jan 2007 14:37:00 -0000 On Wednesday 17 January 2007 21:43, Jung-uk Kim wrote: > http://perforce.freebsd.org/chv.cgi?CH=113090 > > Change 113090 by jkim@jkim_hammer on 2007/01/18 02:43:32 > > - Add Linux kernel version strings to /proc/sys/kernel. > - Properly implement OS build date string instead of using fake one. > > Affected files ... > > .. //depot/projects/linuxolator/src/sys/compat/linprocfs/linprocfs.c#8 edit > > Differences ... > > ==== //depot/projects/linuxolator/src/sys/compat/linprocfs/linprocfs.c#8 (text+ko) ==== > > @@ -416,6 +416,37 @@ > } > > /* > + * Get OS build date > + */ > +static void > +linprocfs_osbuild(struct thread *td, struct sbuf *sb) > +{ > + char osbuild[256]; > + int kern_ver[2]; > + size_t size; > + char *cp1, *cp2; > + > + cp1 = NULL; > + kern_ver[0] = CTL_KERN; > + kern_ver[1] = KERN_VERSION; > + osbuild[0] = '\0'; > + size = sizeof(osbuild); > + if (kernel_sysctl(td, kern_ver, 2, &osbuild, &size, 0, 0, 0, 0) == 0) { > + cp1 = strstr(osbuild, "\n"); > + cp2 = strstr(osbuild, ":"); > + if (cp1 && cp2) { > + *cp1 = *cp2 = '\0'; > + cp1 = strstr(osbuild, "#"); > + } else > + cp1 = NULL; > + } > + if (cp1) > + sbuf_printf(sb, "%s%s", cp1, cp2 + 1); > + else > + sbuf_printf(sb, "#4 Sun Dec 18 04:30:00 CET 1977"); > +} You can just reference the 'version' global variable w/o having to bounce through the sysctl. It's defined in . -- John Baldwin From owner-p4-projects@FreeBSD.ORG Thu Jan 18 14:37:06 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 5300816A51B; Thu, 18 Jan 2007 14:37:06 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 3073F16A407; Thu, 18 Jan 2007 14:37:06 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from server.baldwin.cx (66-23-211-162.clients.speedfactory.net [66.23.211.162]) by mx1.freebsd.org (Postfix) with ESMTP id A979813C428; Thu, 18 Jan 2007 14:37:05 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from zion.baldwin.cx (zion.baldwin.cx [192.168.0.7]) (authenticated bits=0) by server.baldwin.cx (8.13.6/8.13.6) with ESMTP id l0IEaq4l063039; Thu, 18 Jan 2007 09:36:59 -0500 (EST) (envelope-from jhb@freebsd.org) From: John Baldwin To: Roman Divacky Date: Thu, 18 Jan 2007 09:19:22 -0500 User-Agent: KMail/1.9.4 References: <200701180930.l0I9UAlw024022@repoman.freebsd.org> In-Reply-To: <200701180930.l0I9UAlw024022@repoman.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-15" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200701180919.22897.jhb@freebsd.org> X-Greylist: Sender succeeded SMTP AUTH authentication, not delayed by milter-greylist-2.0.2 (server.baldwin.cx [192.168.0.1]); Thu, 18 Jan 2007 09:36:59 -0500 (EST) X-Virus-Scanned: ClamAV 0.88.3/2462/Thu Jan 18 05:07:46 2007 on server.baldwin.cx X-Virus-Status: Clean X-Spam-Status: No, score=-4.4 required=4.2 tests=ALL_TRUSTED,AWL,BAYES_00 autolearn=ham version=3.1.3 X-Spam-Checker-Version: SpamAssassin 3.1.3 (2006-06-01) on server.baldwin.cx Cc: Perforce Change Reviews Subject: Re: PERFORCE change 113097 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 18 Jan 2007 14:37:06 -0000 On Thursday 18 January 2007 04:30, Roman Divacky wrote: > http://perforce.freebsd.org/chv.cgi?CH=113097 > > Change 113097 by rdivacky@rdivacky_witten on 2007/01/18 09:29:19 > > In linux_fork and linux_vfork create the process in stopped state > to be sure that the new process runs with fully initialized emuldata > structure [1]. Also fix the vfork (both in linux_clone and linux_vfork) > race that could result in never woken up process [2]. > > Reported by: Scot Hetzel [1] > Suggested by: jhb [2] One minor nit would be to fix the comments that say '/* make it run */' to be a full sentence (style(9)). You can use the comment from linux_clone() for that if you want. The code changes look good though. -- John Baldwin From owner-p4-projects@FreeBSD.ORG Thu Jan 18 14:37:10 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id B143A16A521; Thu, 18 Jan 2007 14:37:10 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 8D6B816A51E for ; Thu, 18 Jan 2007 14:37:10 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from server.baldwin.cx (66-23-211-162.clients.speedfactory.net [66.23.211.162]) by mx1.freebsd.org (Postfix) with ESMTP id 0086E13C468 for ; Thu, 18 Jan 2007 14:37:09 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from zion.baldwin.cx (zion.baldwin.cx [192.168.0.7]) (authenticated bits=0) by server.baldwin.cx (8.13.6/8.13.6) with ESMTP id l0IEaq4m063039; Thu, 18 Jan 2007 09:37:05 -0500 (EST) (envelope-from jhb@freebsd.org) From: John Baldwin To: Hans Petter Selasky Date: Thu, 18 Jan 2007 09:20:22 -0500 User-Agent: KMail/1.9.4 References: <200701181008.l0IA810Z031551@repoman.freebsd.org> In-Reply-To: <200701181008.l0IA810Z031551@repoman.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-15" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200701180920.22453.jhb@freebsd.org> X-Greylist: Sender succeeded SMTP AUTH authentication, not delayed by milter-greylist-2.0.2 (server.baldwin.cx [192.168.0.1]); Thu, 18 Jan 2007 09:37:05 -0500 (EST) X-Virus-Scanned: ClamAV 0.88.3/2462/Thu Jan 18 05:07:46 2007 on server.baldwin.cx X-Virus-Status: Clean X-Spam-Status: No, score=-4.4 required=4.2 tests=ALL_TRUSTED,AWL,BAYES_00 autolearn=ham version=3.1.3 X-Spam-Checker-Version: SpamAssassin 3.1.3 (2006-06-01) on server.baldwin.cx Cc: Perforce Change Reviews Subject: Re: PERFORCE change 113101 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 18 Jan 2007 14:37:11 -0000 On Thursday 18 January 2007 05:08, Hans Petter Selasky wrote: > http://perforce.freebsd.org/chv.cgi?CH=113101 > > Change 113101 by hselasky@hselasky_mini_itx on 2007/01/18 10:07:13 > > If the number of devices changed during list traversal, set > "count" to the lowest value. There shouldn't be a need for this. Currently this stuff is protected by Giant, but at some point in the future it will all be covered with an sx lock which will basically single-thread most of new-bus including attach/detach, etc. > Affected files ... > > .. //depot/projects/usb/src/sys/kern/subr_bus.c#4 edit > > Differences ... > > ==== //depot/projects/usb/src/sys/kern/subr_bus.c#4 (text+ko) ==== > > @@ -1876,13 +1876,16 @@ > TAILQ_FOREACH(child, &dev->children, link) { > if (n < count) { > list[n] = child; > - n++; > } > + n++; > } > > if (n != count) { > printf("device_get_children: Number of devices changed " > "from %d to %d!\n", count, n); > + if (n < count) { > + count = n; > + } > } > > *devlistp = list; > -- John Baldwin From owner-p4-projects@FreeBSD.ORG Thu Jan 18 14:37:17 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 30F9216A4DD; Thu, 18 Jan 2007 14:37:17 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id EBA1E16A47E for ; Thu, 18 Jan 2007 14:37:16 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from server.baldwin.cx (66-23-211-162.clients.speedfactory.net [66.23.211.162]) by mx1.freebsd.org (Postfix) with ESMTP id 9AA4E13C441 for ; Thu, 18 Jan 2007 14:37:16 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from zion.baldwin.cx (zion.baldwin.cx [192.168.0.7]) (authenticated bits=0) by server.baldwin.cx (8.13.6/8.13.6) with ESMTP id l0IEaq4n063039; Thu, 18 Jan 2007 09:37:09 -0500 (EST) (envelope-from jhb@freebsd.org) From: John Baldwin To: Hans Petter Selasky Date: Thu, 18 Jan 2007 09:21:27 -0500 User-Agent: KMail/1.9.4 References: <200701181040.l0IAei63036714@repoman.freebsd.org> In-Reply-To: <200701181040.l0IAei63036714@repoman.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-15" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200701180921.27766.jhb@freebsd.org> X-Greylist: Sender succeeded SMTP AUTH authentication, not delayed by milter-greylist-2.0.2 (server.baldwin.cx [192.168.0.1]); Thu, 18 Jan 2007 09:37:09 -0500 (EST) X-Virus-Scanned: ClamAV 0.88.3/2462/Thu Jan 18 05:07:46 2007 on server.baldwin.cx X-Virus-Status: Clean X-Spam-Status: No, score=-4.4 required=4.2 tests=ALL_TRUSTED,AWL,BAYES_00 autolearn=ham version=3.1.3 X-Spam-Checker-Version: SpamAssassin 3.1.3 (2006-06-01) on server.baldwin.cx Cc: Perforce Change Reviews Subject: Re: PERFORCE change 113105 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 18 Jan 2007 14:37:17 -0000 On Thursday 18 January 2007 05:40, Hans Petter Selasky wrote: > http://perforce.freebsd.org/chv.cgi?CH=113105 > > Change 113105 by hselasky@hselasky_mini_itx on 2007/01/18 10:40:02 > > Use unsigned type for counting the number of devices. uint32_t should be used when you really need a 32-bit type. For simple counting you should use either 'int' or 'u_int'. > Affected files ... > > .. //depot/projects/usb/src/sys/kern/subr_bus.c#5 edit > > Differences ... > > ==== //depot/projects/usb/src/sys/kern/subr_bus.c#5 (text+ko) ==== > > @@ -1848,8 +1848,8 @@ > int > device_get_children(device_t dev, device_t **devlistp, int *devcountp) > { > - int count; > - int n; > + uint32_t count; > + uint32_t n; > device_t child; > device_t *list; > > -- John Baldwin From owner-p4-projects@FreeBSD.ORG Thu Jan 18 15:15:14 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 6245C16A47C; Thu, 18 Jan 2007 15:15:14 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 15F2716A407; Thu, 18 Jan 2007 15:15:14 +0000 (UTC) (envelope-from des@des.no) Received: from tim.des.no (tim.des.no [194.63.250.121]) by mx1.freebsd.org (Postfix) with ESMTP id B9EA013C471; Thu, 18 Jan 2007 15:15:13 +0000 (UTC) (envelope-from des@des.no) Received: from tim.des.no (localhost [127.0.0.1]) by spam.des.no (Postfix) with ESMTP id 661DD2081; Thu, 18 Jan 2007 15:58:18 +0100 (CET) X-Spam-Tests: AWL X-Spam-Learn: disabled X-Spam-Score: 0.0/3.0 X-Spam-Checker-Version: SpamAssassin 3.1.7 (2006-10-05) on tim.des.no Received: from dwp.des.no (des.no [80.203.243.180]) by tim.des.no (Postfix) with ESMTP id 4972D2049; Thu, 18 Jan 2007 15:58:17 +0100 (CET) Received: by dwp.des.no (Postfix, from userid 1001) id 31C1DB86E; Thu, 18 Jan 2007 15:59:34 +0100 (CET) From: des@des.no (Dag-Erling =?iso-8859-1?Q?Sm=F8rgrav?=) To: Alexander Leidinger References: <200701180243.l0I2hcLn035071@repoman.freebsd.org> <20070118085452.GA60150@stud.fit.vutbr.cz> <20070118142041.uio1r7xxesw4g0oo@webmail.leidinger.net> Date: Thu, 18 Jan 2007 15:59:34 +0100 In-Reply-To: <20070118142041.uio1r7xxesw4g0oo@webmail.leidinger.net> (Alexander Leidinger's message of "Thu, 18 Jan 2007 14:20:41 +0100") Message-ID: <86tzyo2xex.fsf@dwp.des.no> User-Agent: Gnus/5.110006 (No Gnus v0.6) Emacs/21.3 (berkeley-unix) MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable Cc: Divacky Roman , Perforce Change Reviews , Jung-uk Kim Subject: Re: PERFORCE change 113090 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 18 Jan 2007 15:15:14 -0000 Alexander Leidinger writes: > Dag-Erling wrote this (linprocfs). And so far I passed each linprocfs > change past him (in some way). If des hands over the maintainership (I > hope he doesn't but reviews patches instead) of linprocfs to > emulation@, it can be changed. Unless this happens I suggest to forget > this idea. I have to wonder what the purpose of the change is... the version string has no significance for application compatibility. It is in a way my signature on the code, and I'd very much appreciate if you could just leave the current implementation alone. The thing that looks like an email address isn't, by the way. It's supposed to be the login name of the person that built the kernel and the host name of the machine on which it was built. It isn't easily available at run time, and it seemed more appropriate to hardcode it as "des@freebsd.org" than as "root@localhost". DES --=20 Dag-Erling Sm=F8rgrav - des@des.no From owner-p4-projects@FreeBSD.ORG Thu Jan 18 15:26:31 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id E851716A47E; Thu, 18 Jan 2007 15:26:30 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 7ACE716A415; Thu, 18 Jan 2007 15:26:30 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from server.baldwin.cx (66-23-211-162.clients.speedfactory.net [66.23.211.162]) by mx1.freebsd.org (Postfix) with ESMTP id 2231513C457; Thu, 18 Jan 2007 15:26:30 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from zion.baldwin.cx (zion.baldwin.cx [192.168.0.7]) (authenticated bits=0) by server.baldwin.cx (8.13.6/8.13.6) with ESMTP id l0IFQKdJ063376; Thu, 18 Jan 2007 10:26:20 -0500 (EST) (envelope-from jhb@freebsd.org) From: John Baldwin To: "Dag-Erling =?iso-8859-1?q?Sm=F8rgrav?=" Date: Thu, 18 Jan 2007 10:26:08 -0500 User-Agent: KMail/1.9.4 References: <200701180243.l0I2hcLn035071@repoman.freebsd.org> <20070118142041.uio1r7xxesw4g0oo@webmail.leidinger.net> <86tzyo2xex.fsf@dwp.des.no> In-Reply-To: <86tzyo2xex.fsf@dwp.des.no> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Message-Id: <200701181026.08997.jhb@freebsd.org> X-Greylist: Sender succeeded SMTP AUTH authentication, not delayed by milter-greylist-2.0.2 (server.baldwin.cx [192.168.0.1]); Thu, 18 Jan 2007 10:26:21 -0500 (EST) X-Virus-Scanned: ClamAV 0.88.3/2462/Thu Jan 18 05:07:46 2007 on server.baldwin.cx X-Virus-Status: Clean X-Spam-Status: No, score=-4.4 required=4.2 tests=ALL_TRUSTED,AWL,BAYES_00 autolearn=ham version=3.1.3 X-Spam-Checker-Version: SpamAssassin 3.1.3 (2006-06-01) on server.baldwin.cx Cc: Alexander Leidinger , Divacky Roman , Perforce Change Reviews , Jung-uk Kim Subject: Re: PERFORCE change 113090 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 18 Jan 2007 15:26:31 -0000 On Thursday 18 January 2007 09:59, Dag-Erling Sm=F8rgrav wrote: > Alexander Leidinger writes: > > Dag-Erling wrote this (linprocfs). And so far I passed each linprocfs > > change past him (in some way). If des hands over the maintainership (I > > hope he doesn't but reviews patches instead) of linprocfs to > > emulation@, it can be changed. Unless this happens I suggest to forget > > this idea. >=20 > I have to wonder what the purpose of the change is... the version > string has no significance for application compatibility. It is in a > way my signature on the code, and I'd very much appreciate if you > could just leave the current implementation alone. I agree. > The thing that looks like an email address isn't, by the way. It's > supposed to be the login name of the person that built the kernel and > the host name of the machine on which it was built. It isn't easily > available at run time, and it seemed more appropriate to hardcode it > as "des@freebsd.org" than as "root@localhost". You could parse this out of 'version' the way they are parsing out the build date. =2D-=20 John Baldwin From owner-p4-projects@FreeBSD.ORG Thu Jan 18 15:31:54 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 8DC5116A64F; Thu, 18 Jan 2007 15:31:54 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 57B0216A64B; Thu, 18 Jan 2007 15:31:54 +0000 (UTC) (envelope-from des@des.no) Received: from tim.des.no (tim.des.no [194.63.250.121]) by mx1.freebsd.org (Postfix) with ESMTP id 15A8013C459; Thu, 18 Jan 2007 15:31:54 +0000 (UTC) (envelope-from des@des.no) Received: from tim.des.no (localhost [127.0.0.1]) by spam.des.no (Postfix) with ESMTP id 52F1C2083; Thu, 18 Jan 2007 16:01:20 +0100 (CET) X-Spam-Tests: AWL X-Spam-Learn: disabled X-Spam-Score: 0.0/3.0 X-Spam-Checker-Version: SpamAssassin 3.1.7 (2006-10-05) on tim.des.no Received: from dwp.des.no (des.no [80.203.243.180]) by tim.des.no (Postfix) with ESMTP id CCC352049; Thu, 18 Jan 2007 16:01:19 +0100 (CET) Received: by dwp.des.no (Postfix, from userid 1001) id 3EF14B86E; Thu, 18 Jan 2007 16:02:36 +0100 (CET) From: des@des.no (Dag-Erling =?iso-8859-1?Q?Sm=F8rgrav?=) To: Alexander Leidinger References: <200701180243.l0I2hcLn035071@repoman.freebsd.org> <20070118085452.GA60150@stud.fit.vutbr.cz> <20070118142041.uio1r7xxesw4g0oo@webmail.leidinger.net> <86tzyo2xex.fsf@dwp.des.no> Date: Thu, 18 Jan 2007 16:02:36 +0100 In-Reply-To: <86tzyo2xex.fsf@dwp.des.no> (Dag-Erling =?iso-8859-1?Q?Sm=F8r?= =?iso-8859-1?Q?grav's?= message of "Thu, 18 Jan 2007 15:59:34 +0100") Message-ID: <86ps9c2x9v.fsf@dwp.des.no> User-Agent: Gnus/5.110006 (No Gnus v0.6) Emacs/21.3 (berkeley-unix) MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable Cc: Divacky Roman , Perforce Change Reviews , Jung-uk Kim Subject: Re: PERFORCE change 113090 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 18 Jan 2007 15:31:54 -0000 One other thing: the correct spelling is "linuxulator", not "linuxolator". DES --=20 Dag-Erling Sm=F8rgrav - des@des.no From owner-p4-projects@FreeBSD.ORG Thu Jan 18 16:57:17 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id A432416A417; Thu, 18 Jan 2007 16:57:17 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 3E86816A407 for ; Thu, 18 Jan 2007 16:57:17 +0000 (UTC) (envelope-from jkim@FreeBSD.org) Received: from anuket.mj.niksun.com (gwnew.niksun.com [65.115.46.162]) by mx1.freebsd.org (Postfix) with ESMTP id F0FBE13C45D for ; Thu, 18 Jan 2007 16:57:16 +0000 (UTC) (envelope-from jkim@FreeBSD.org) Received: from niksun.com (anuket [10.70.0.5]) by anuket.mj.niksun.com (8.13.6/8.13.6) with ESMTP id l0IGvF5R086383; Thu, 18 Jan 2007 11:57:15 -0500 (EST) (envelope-from jkim@FreeBSD.org) From: Jung-uk Kim To: John Baldwin Date: Thu, 18 Jan 2007 11:57:12 -0500 User-Agent: KMail/1.6.2 References: <200701180243.l0I2hcLn035071@repoman.freebsd.org> <200701180917.15131.jhb@freebsd.org> In-Reply-To: <200701180917.15131.jhb@freebsd.org> MIME-Version: 1.0 Content-Disposition: inline Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Message-Id: <200701181157.13834.jkim@FreeBSD.org> X-Virus-Scanned: ClamAV 0.88.6/2462/Thu Jan 18 05:07:46 2007 on anuket.mj.niksun.com X-Virus-Status: Clean Cc: Perforce Change Reviews Subject: Re: PERFORCE change 113090 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 18 Jan 2007 16:57:17 -0000 On Thursday 18 January 2007 09:17 am, John Baldwin wrote: > On Wednesday 17 January 2007 21:43, Jung-uk Kim wrote: > > http://perforce.freebsd.org/chv.cgi?CH=113090 > > > > Change 113090 by jkim@jkim_hammer on 2007/01/18 02:43:32 > > > > - Add Linux kernel version strings to /proc/sys/kernel. > > - Properly implement OS build date string instead of using fake > > one. > > > > Affected files ... > > > > .. > > //depot/projects/linuxolator/src/sys/compat/linprocfs/linprocfs.c > >#8 edit > > > > Differences ... > > > > ==== > > //depot/projects/linuxolator/src/sys/compat/linprocfs/linprocfs.c > >#8 (text+ko) ==== > > > > @@ -416,6 +416,37 @@ > > } > > > > /* > > + * Get OS build date > > + */ > > +static void > > +linprocfs_osbuild(struct thread *td, struct sbuf *sb) > > +{ > > + char osbuild[256]; > > + int kern_ver[2]; > > + size_t size; > > + char *cp1, *cp2; > > + > > + cp1 = NULL; > > + kern_ver[0] = CTL_KERN; > > + kern_ver[1] = KERN_VERSION; > > + osbuild[0] = '\0'; > > + size = sizeof(osbuild); > > + if (kernel_sysctl(td, kern_ver, 2, &osbuild, &size, 0, 0, 0, 0) > > == 0) { + cp1 = strstr(osbuild, "\n"); > > + cp2 = strstr(osbuild, ":"); > > + if (cp1 && cp2) { > > + *cp1 = *cp2 = '\0'; > > + cp1 = strstr(osbuild, "#"); > > + } else > > + cp1 = NULL; > > + } > > + if (cp1) > > + sbuf_printf(sb, "%s%s", cp1, cp2 + 1); > > + else > > + sbuf_printf(sb, "#4 Sun Dec 18 04:30:00 CET 1977"); > > +} > > You can just reference the 'version' global variable w/o having to > bounce through the sysctl. It's defined in . Actually I thought about that but I implemented this way for no apparent reason. :-) I will just grab sys/systm.h in the next revision and I will parse builder string as well. Thanks, Jung-uk Kim From owner-p4-projects@FreeBSD.ORG Thu Jan 18 17:16:31 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 1E3F016A49E; Thu, 18 Jan 2007 17:16:31 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id A4F8316A494 for ; Thu, 18 Jan 2007 17:16:30 +0000 (UTC) (envelope-from rdivacky@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 950E613C4BC for ; Thu, 18 Jan 2007 17:16:30 +0000 (UTC) (envelope-from rdivacky@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0IHGUuI061591 for ; Thu, 18 Jan 2007 17:16:30 GMT (envelope-from rdivacky@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0IHGUkh061588 for perforce@freebsd.org; Thu, 18 Jan 2007 17:16:30 GMT (envelope-from rdivacky@FreeBSD.org) Date: Thu, 18 Jan 2007 17:16:30 GMT Message-Id: <200701181716.l0IHGUkh061588@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to rdivacky@FreeBSD.org using -f From: Roman Divacky To: Perforce Change Reviews Cc: Subject: PERFORCE change 113124 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 18 Jan 2007 17:16:31 -0000 http://perforce.freebsd.org/chv.cgi?CH=113124 Change 113124 by rdivacky@rdivacky_witten on 2007/01/18 17:16:14 Set the P_PPWAIT flag when the proc is locked. Suggested by: jhb Affected files ... .. //depot/projects/linuxolator/src/sys/amd64/linux32/linux32_machdep.c#24 edit .. //depot/projects/linuxolator/src/sys/i386/linux/linux_machdep.c#17 edit Differences ... ==== //depot/projects/linuxolator/src/sys/amd64/linux32/linux32_machdep.c#24 (text+ko) ==== @@ -533,7 +533,9 @@ if (error) return (error); + PROC_LOCK(p2); p2->p_flag |= P_PPWAIT; + PROC_UNLOCK(p2); td2 = FIRST_THREAD_IN_PROC(p2); @@ -709,8 +711,11 @@ printf(LMSG("clone: successful rfork to %ld, stack %p sig = %d"), (long)p2->p_pid, args->stack, exit_signal); #endif - if (args->flags & CLONE_VFORK) + if (args->flags & CLONE_VFORK) { + PROC_LOCK(p2); p2->p_flag |= P_PPWAIT; + PROC_UNLOCK(p2); + } /* * Make this runnable after we are finished with it. ==== //depot/projects/linuxolator/src/sys/i386/linux/linux_machdep.c#17 (text+ko) ==== @@ -356,7 +356,9 @@ if (error) return (error); + PROC_LOCK(p2); p2->p_flag |= P_PPWAIT; + PROC_UNLOCK(p2); td2 = FIRST_THREAD_IN_PROC(p2); @@ -546,8 +548,11 @@ printf(LMSG("clone: successful rfork to %ld, stack %p sig = %d"), (long)p2->p_pid, args->stack, exit_signal); #endif - if (args->flags & CLONE_VFORK) + if (args->flags & CLONE_VFORK) { + PROC_LOCK(p2); p2->p_flag |= P_PPWAIT; + PROC_UNLOCK(p2); + } /* * Make this runnable after we are finished with it. From owner-p4-projects@FreeBSD.ORG Thu Jan 18 18:04:31 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 446BC16A415; Thu, 18 Jan 2007 18:04:31 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 076BE16A407 for ; Thu, 18 Jan 2007 18:04:31 +0000 (UTC) (envelope-from mjacob@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id EB49D13C44B for ; Thu, 18 Jan 2007 18:04:30 +0000 (UTC) (envelope-from mjacob@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0II4UmT075016 for ; Thu, 18 Jan 2007 18:04:30 GMT (envelope-from mjacob@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0II4Uqt075011 for perforce@freebsd.org; Thu, 18 Jan 2007 18:04:30 GMT (envelope-from mjacob@freebsd.org) Date: Thu, 18 Jan 2007 18:04:30 GMT Message-Id: <200701181804.l0II4Uqt075011@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to mjacob@freebsd.org using -f From: Matt Jacob To: Perforce Change Reviews Cc: Subject: PERFORCE change 113126 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 18 Jan 2007 18:04:31 -0000 http://perforce.freebsd.org/chv.cgi?CH=113126 Change 113126 by mjacob@mjexp on 2007/01/18 18:04:16 Some minor changes in how we set up cards- we'll read nvram and default parameters at the end of isp_reset, not the front if isp_init as this allows us to get WWPNs when we're coming up in ISP_ROLE_NONE. Other preparations for reintroducing channels back into target mode and channels for initiator mode in FC cards (N-port virtualization). Affected files ... .. //depot/projects/mjexp/sys/dev/isp/isp.c#8 edit .. //depot/projects/mjexp/sys/dev/isp/isp_freebsd.c#8 edit .. //depot/projects/mjexp/sys/dev/isp/isp_freebsd.h#5 edit .. //depot/projects/mjexp/sys/dev/isp/isp_target.c#4 edit .. //depot/projects/mjexp/sys/dev/isp/isp_target.h#3 edit .. //depot/projects/mjexp/sys/dev/isp/isp_tpublic.h#3 edit .. //depot/projects/mjexp/sys/dev/isp/ispvar.h#4 edit Differences ... ==== //depot/projects/mjexp/sys/dev/isp/isp.c#8 (text+ko) ==== @@ -1170,6 +1170,14 @@ isp->isp_maxluns = 16; } } + /* + * Must do this first to get defaults established. + */ + isp_setdfltparm(isp, 0); + if (IS_DUALBUS(isp)) { + isp_setdfltparm(isp, 1); + } + } /* @@ -1181,14 +1189,6 @@ void isp_init(ispsoftc_t *isp) { - /* - * Must do this first to get defaults established. - */ - isp_setdfltparm(isp, 0); - if (IS_DUALBUS(isp)) { - isp_setdfltparm(isp, 1); - } - if (IS_FC(isp)) { /* * Do this *before* initializing the firmware. @@ -7034,15 +7034,16 @@ fcp->isp_retry_count = ICB_DFLT_RCOUNT; /* Platform specific.... */ fcp->isp_loopid = DEFAULT_LOOPID(isp); - fcp->isp_nodewwn = DEFAULT_NODEWWN(isp); - fcp->isp_portwwn = DEFAULT_PORTWWN(isp); + fcp->isp_wwnn_nvram = DEFAULT_NODEWWN(isp); + fcp->isp_wwpn_nvram = DEFAULT_PORTWWN(isp); fcp->isp_fwoptions = 0; fcp->isp_fwoptions |= ICBOPT_FAIRNESS; fcp->isp_fwoptions |= ICBOPT_PDBCHANGE_AE; fcp->isp_fwoptions |= ICBOPT_HARD_ADDRESS; fcp->isp_fwoptions |= ICBOPT_FAST_POST; - if (isp->isp_confopts & ISP_CFG_FULL_DUPLEX) + if (isp->isp_confopts & ISP_CFG_FULL_DUPLEX) { fcp->isp_fwoptions |= ICBOPT_FULL_DUPLEX; + } /* * Make sure this is turned off now until we get @@ -7052,7 +7053,7 @@ /* * Now try and read NVRAM unless told to not do so. - * This will set fcparam's isp_nodewwn && isp_portwwn. + * This will set fcparam's isp_wwnn_nvram && isp_wwpn_nvram. */ if ((isp->isp_confopts & ISP_CFG_NONVRAM) == 0) { nvfail = isp_read_nvram(isp); @@ -7081,8 +7082,8 @@ * We always start out with values derived * from NVRAM or our platform default. */ - ISP_NODEWWN(isp) = fcp->isp_nodewwn; - if (fcp->isp_nodewwn == 0) { + ISP_NODEWWN(isp) = fcp->isp_wwnn_nvram; + if (fcp->isp_wwnn_nvram == 0) { isp_prt(isp, ISP_LOGCONFIG, "bad WWNN- using default"); ISP_NODEWWN(isp) = DEFAULT_NODEWWN(isp); @@ -7098,8 +7099,8 @@ * We always start out with values derived * from NVRAM or our platform default. */ - ISP_PORTWWN(isp) = fcp->isp_portwwn; - if (fcp->isp_portwwn == 0) { + ISP_PORTWWN(isp) = fcp->isp_wwpn_nvram; + if (fcp->isp_wwpn_nvram == 0) { isp_prt(isp, ISP_LOGCONFIG, "bad WWPN- using default"); ISP_PORTWWN(isp) = DEFAULT_PORTWWN(isp); @@ -7841,10 +7842,10 @@ /* * Make sure we have both Node and Port as non-zero values. */ - if (fcp->isp_nodewwn != 0 && fcp->isp_portwwn == 0) { - fcp->isp_portwwn = fcp->isp_nodewwn; - } else if (fcp->isp_nodewwn == 0 && fcp->isp_portwwn != 0) { - fcp->isp_nodewwn = fcp->isp_portwwn; + if (fcp->isp_wwnn_nvram != 0 && fcp->isp_wwpn_nvram == 0) { + fcp->isp_wwpn_nvram = fcp->isp_wwnn_nvram; + } else if (fcp->isp_wwnn_nvram == 0 && fcp->isp_wwpn_nvram != 0) { + fcp->isp_wwnn_nvram = fcp->isp_wwpn_nvram; } /* @@ -7853,14 +7854,14 @@ * make sure that there's some non-zero value in 48..56 * for the Port WWN. */ - if (fcp->isp_nodewwn && fcp->isp_portwwn) { - if ((fcp->isp_nodewwn & (((uint64_t) 0xfff) << 48)) != 0 && - (fcp->isp_nodewwn >> 60) == 2) { - fcp->isp_nodewwn &= ~((uint64_t) 0xfff << 48); + if (fcp->isp_wwnn_nvram && fcp->isp_wwpn_nvram) { + if ((fcp->isp_wwnn_nvram & (((uint64_t) 0xfff) << 48)) != 0 && + (fcp->isp_wwnn_nvram >> 60) == 2) { + fcp->isp_wwnn_nvram &= ~((uint64_t) 0xfff << 48); } - if ((fcp->isp_portwwn & (((uint64_t) 0xfff) << 48)) == 0 && - (fcp->isp_portwwn >> 60) == 2) { - fcp->isp_portwwn |= ((uint64_t) 1 << 56); + if ((fcp->isp_wwpn_nvram & (((uint64_t) 0xfff) << 48)) == 0 && + (fcp->isp_wwpn_nvram >> 60) == 2) { + fcp->isp_wwpn_nvram |= ((uint64_t) 1 << 56); } } } @@ -7890,7 +7891,7 @@ wwn |= (((uint64_t) 2)<< 60); } } - fcp->isp_portwwn = wwn; + fcp->isp_wwpn_nvram = wwn; if (IS_2200(isp) || IS_23XX(isp)) { wwn = ISP2100_NVRAM_NODE_NAME(nvram_data); if (wwn) { @@ -7904,7 +7905,7 @@ } else { wwn &= ~((uint64_t) 0xfff << 48); } - fcp->isp_nodewwn = wwn; + fcp->isp_wwnn_nvram = wwn; isp_fix_nvram_wwns(isp); @@ -7924,8 +7925,8 @@ fcp->isp_fwoptions = ISP2100_NVRAM_OPTIONS(nvram_data); isp_prt(isp, ISP_LOGDEBUG0, "NVRAM 0x%08x%08x 0x%08x%08x maxalloc %d maxframelen %d", - (uint32_t) (fcp->isp_nodewwn >> 32), (uint32_t) fcp->isp_nodewwn, - (uint32_t) (fcp->isp_portwwn >> 32), (uint32_t) fcp->isp_portwwn, + (uint32_t) (fcp->isp_wwnn_nvram >> 32), (uint32_t) fcp->isp_wwnn_nvram, + (uint32_t) (fcp->isp_wwpn_nvram >> 32), (uint32_t) fcp->isp_wwpn_nvram, ISP2100_NVRAM_MAXIOCBALLOCATION(nvram_data), ISP2100_NVRAM_MAXFRAMELENGTH(nvram_data)); isp_prt(isp, ISP_LOGDEBUG0, @@ -7969,7 +7970,7 @@ wwn = 0; } } - fcp->isp_portwwn = wwn; + fcp->isp_wwpn_nvram = wwn; wwn = ISP2400_NVRAM_NODE_NAME(nvram_data); if (wwn) { @@ -7977,7 +7978,7 @@ wwn = 0; } } - fcp->isp_nodewwn = wwn; + fcp->isp_wwnn_nvram = wwn; isp_fix_nvram_wwns(isp); ==== //depot/projects/mjexp/sys/dev/isp/isp_freebsd.c#8 (text+ko) ==== @@ -486,8 +486,8 @@ hba->fc_scsi_supported = 1; hba->fc_topology = FCPARAM(isp)->isp_topo + 1; hba->fc_loopid = FCPARAM(isp)->isp_loopid; - hba->nvram_node_wwn = FCPARAM(isp)->isp_nodewwn; - hba->nvram_port_wwn = FCPARAM(isp)->isp_portwwn; + hba->nvram_node_wwn = FCPARAM(isp)->isp_wwnn_nvram; + hba->nvram_port_wwn = FCPARAM(isp)->isp_wwpn_nvram; hba->active_node_wwn = ISP_NODEWWN(isp); hba->active_port_wwn = ISP_PORTWWN(isp); } @@ -3674,9 +3674,9 @@ } if (isp->isp_osinfo.mboxcmd_done == 0) { isp_prt(isp, ISP_LOGWARN, - "%s Mailbox Command (0x%x) Timeout", + "%s Mailbox Command (0x%x) Timeout (%uus)", isp->isp_osinfo.mbox_sleep_ok? "Interrupting" : "Polled", - isp->isp_lastmbxcmd); + isp->isp_lastmbxcmd, usecs); mbp->param[0] = MBOX_TIMEOUT; isp->isp_osinfo.mboxcmd_done = 1; } ==== //depot/projects/mjexp/sys/dev/isp/isp_freebsd.h#5 (text+ko) ==== @@ -346,8 +346,8 @@ #define DEFAULT_LOOPID(x) (isp)->isp_osinfo.default_id #define DEFAULT_NODEWWN(isp) (isp)->isp_osinfo.default_node_wwn #define DEFAULT_PORTWWN(isp) (isp)->isp_osinfo.default_port_wwn -#define ISP_NODEWWN(isp) FCPARAM(isp)->isp_nodewwn -#define ISP_PORTWWN(isp) FCPARAM(isp)->isp_portwwn +#define ISP_NODEWWN(isp) FCPARAM(isp)->isp_wwnn_nvram +#define ISP_PORTWWN(isp) FCPARAM(isp)->isp_wwpn_nvram #if BYTE_ORDER == BIG_ENDIAN #ifdef ISP_SBUS_SUPPORTED ==== //depot/projects/mjexp/sys/dev/isp/isp_target.c#4 (text+ko) ==== @@ -827,7 +827,7 @@ nt.nt_iid = GET_IID_VAL(inp->in_iid); nt.nt_tgt = inp->in_tgt; nt.nt_lun = inp->in_lun; - IN_MAKE_TAGID(nt.nt_tagval, 0, inp); + IN_MAKE_TAGID(nt.nt_tagval, GET_BUS_VAL(inp->in_iid), 0, inp); nt.nt_lreserved = inp; if (status == IN_IDE_RECEIVED || status == IN_MSG_RECEIVED) { @@ -875,8 +875,7 @@ { tmd_notify_t nt; static const char f1[] = "%s from N-port handle 0x%x lun %d seq 0x%x"; - static const char f2[] = - "unknown %s 0x%x lun %d N-Port handle 0x%x task flags 0x%x seq 0x%x\n"; + static const char f2[] = "unknown %s 0x%x lun %d N-Port handle 0x%x task flags 0x%x seq 0x%x\n"; uint16_t seqid, loopid; MEMZERO(&nt, sizeof (tmd_notify_t)); @@ -896,7 +895,7 @@ } else { nt.nt_lun = inp->in_lun; } - IN_FC_MAKE_TAGID(nt.nt_tagval, 0, seqid); + IN_FC_MAKE_TAGID(nt.nt_tagval, 0, 0, seqid); nt.nt_need_ack = 1; nt.nt_lreserved = inp; @@ -941,9 +940,9 @@ isp_got_tmf_24xx(ispsoftc_t *isp, at7_entry_t *aep) { tmd_notify_t nt; - static const char f1[] = "%s from PortID 0x%06x lun %d seq 0x%x"; + static const char f1[] = "%s from PortID 0x%06x lun %d seq 0x%llx"; static const char f2[] = - "unknown Task Flag 0x%x lun %d PortID 0x%x tag 0x%x\n"; + "unknown Task Flag 0x%x lun %d PortID 0x%x tag 0x%llx\n"; uint32_t sid; MEMZERO(&nt, sizeof (tmd_notify_t)); @@ -952,6 +951,9 @@ nt.nt_lun = (aep->at_cmnd.fcp_cmnd_lun[0] << 8) | (aep->at_cmnd.fcp_cmnd_lun[1]); + /* + * XXX: VPIDX HAS TO BE DERIVED FROM DESTINATION PORT + */ nt.nt_tagval = aep->at_rxid; nt.nt_lreserved = aep; sid = ==== //depot/projects/mjexp/sys/dev/isp/isp_target.h#3 (text+ko) ==== @@ -325,13 +325,13 @@ * Macros to create and fetch and test concatenated handle and tag value macros */ -#define AT_MAKE_TAGID(tid, inst, aep) \ +#define AT_MAKE_TAGID(tid, bus, inst, aep) \ tid = aep->at_handle; \ if (aep->at_flags & AT_TQAE) { \ tid |= (aep->at_tag_val << 16); \ tid |= (1 << 24); \ } \ - tid |= (GET_BUS_VAL(aep->at_iid) << 25); \ + tid |= (bus << 25); \ tid |= (inst << 26) #define CT_MAKE_TAGID(tid, bus, inst, ct) \ @@ -349,11 +349,11 @@ #define AT_GET_BUS(val) (((val) >> 25) & 0x1) #define AT_GET_HANDLE(val) ((val) & 0xffff) -#define IN_MAKE_TAGID(tid, inst, inp) \ +#define IN_MAKE_TAGID(tid, bus, inst, inp) \ tid = inp->in_seqid; \ tid |= (inp->in_tag_val << 16); \ tid |= (1 << 24); \ - tid |= (GET_BUS_VAL(inp->in_iid) << 25); \ + tid |= (bus << 25); \ tid |= (inst << 26) #define TAG_INSERT_INST(tid, inst) \ @@ -423,31 +423,35 @@ /* * Macros to create and fetch and test concatenated handle and tag value macros */ -#define AT2_MAKE_TAGID(tid, inst, aep) \ +#define AT2_MAKE_TAGID(tid, bus, inst, aep) \ tid = aep->at_rxid; \ - tid |= (inst << 16) + tid |= (((uint64_t)inst) << 32); \ + tid |= (((uint64_t)bus) << 48) -#define CT2_MAKE_TAGID(tid, inst, ct) \ +#define CT2_MAKE_TAGID(tid, bus, inst, ct) \ tid = ct->ct_rxid; \ - tid |= (inst << 16) + tid |= (((uint64_t)inst) << 32); \ + tid |= (((uint64_t)(bus & 0xff)) << 48) #define AT2_HAS_TAG(val) 1 -#define AT2_GET_TAG(val) ((val) & 0xffff) -#define AT2_GET_INST(val) ((val) >> 16) +#define AT2_GET_TAG(val) ((val) & 0xffffffff) +#define AT2_GET_INST(val) ((val) >> 32) #define AT2_GET_HANDLE AT2_GET_TAG +#define AT2_GET_BUS(val) (((val) >> 48) & 0xff) #define FC_HAS_TAG AT2_HAS_TAG #define FC_GET_TAG AT2_GET_TAG #define FC_GET_INST AT2_GET_INST #define FC_GET_HANDLE AT2_GET_HANDLE -#define IN_FC_MAKE_TAGID(tid, inst, seqid) \ +#define IN_FC_MAKE_TAGID(tid, bus, inst, seqid) \ tid = seqid; \ - tid |= (inst << 16) + tid |= (((uint64_t)inst) << 32); \ + tid |= (((uint64_t)(bus & 0xff)) << 48) #define FC_TAG_INSERT_INST(tid, inst) \ - tid &= ~0xffff; \ - tid |= (inst << 16) + tid &= ~0xffff00000000ull; \ + tid |= (((uint64_t)inst) << 32) /* * 24XX ATIO Definition ==== //depot/projects/mjexp/sys/dev/isp/isp_tpublic.h#3 (text+ko) ==== @@ -53,6 +53,8 @@ */ typedef enum { QIN_HBA_REG=99, /* the argument is a pointer to a hba_register_t */ + QIN_GETINFO, /* the argument is a pointer to a info_t */ + QIN_SETINFO, /* the argument is a pointer to a info_t */ QIN_ENABLE, /* the argument is a pointer to a enadis_t */ QIN_DISABLE, /* the argument is a pointer to a enadis_t */ QIN_TMD_CONT, /* the argument is a pointer to a tmd_cmd_t */ @@ -71,32 +73,43 @@ * in, and the external module to call back with a QIN_HBA_REG that * passes back the corresponding information. */ -#define QR_VERSION 13 +#define QR_VERSION 15 typedef struct { + /* NB: tags from here to r_version must never change */ void * r_identity; void (*r_action)(qact_e, void *); char r_name[8]; int r_inst; int r_version; - struct { - enum { - R_FC, - R_SCSI - } r_type; - union { - struct { - uint64_t r_wwnn; - uint64_t r_wwpn; - } fc; - struct { - int r_iid; - } scsi; - } r_id; - } r_info; + uint32_t r_locator; + uint32_t r_nchannels; + enum { R_FC, R_SPI } r_type; void * r_private; } hba_register_t; /* + * An information structure that is used to get or set per-channel + * transport layer parameters. + */ +typedef struct { + void * i_identity; + enum { I_FC, I_SPI } i_type; + int i_channel; + int i_error; + union { + struct { + uint64_t wwnn_nvram; + uint64_t wwpn_nvram; + uint64_t wwnn; + uint64_t wwpn; + } fc; + struct { + int iid; + } spi; + } i_id; +} info_t; + +/* * Notify structure */ typedef enum { @@ -121,7 +134,8 @@ uint16_t nt_lun; /* logical unit */ uint16_t : 15, nt_need_ack : 1; /* this notify needs an ACK */ - uint32_t nt_tagval; /* tag value */ + uint64_t nt_tagval; /* tag value */ + uint32_t nt_channel; /* channel id */ tmd_ncode_t nt_ncode; /* action */ void * nt_lreserved; void * nt_hreserved; @@ -129,7 +143,7 @@ #define LUN_ANY 0xffff #define TGT_ANY ((uint64_t) -1) #define INI_ANY ((uint64_t) -1) -#define TAG_ANY 0 +#define TAG_ANY ((uint64_t) 0) #define MATCH_TMD(tmd, iid, lun, tag) \ ( \ (tmd) && \ @@ -276,16 +290,16 @@ void * cd_data; /* 'pointer' to data */ uint64_t cd_iid; /* initiator ID */ uint64_t cd_tgt; /* target id */ - uint64_t cd_lun; /* logical unit */ - uint32_t cd_tagval; /* tag value */ + uint8_t cd_lun[8]; /* logical unit */ + uint64_t cd_tagval; /* tag value */ + uint32_t cd_channel; /* channel index */ uint32_t cd_lflags; /* flags lower level sets */ uint32_t cd_hflags; /* flags higher level sets */ uint32_t cd_totlen; /* total data load */ uint32_t cd_resid; /* total data residual */ uint32_t cd_xfrlen; /* current data load */ int32_t cd_error; /* current error */ - uint8_t cd_tagtype : 4, - cd_port : 4; /* port number on HBA */ + uint8_t cd_tagtype; /* tag type */ uint8_t cd_scsi_status; uint8_t cd_sense[TMD_SENSELEN]; uint8_t cd_cdb[TMD_CDBLEN]; @@ -309,6 +323,21 @@ #define TMD_SIZE (sizeof (tmd_cmd_t)) #endif +#define L0LUN_TO_FLATLUN(lptr) ((((lptr)[0] & 0x3f) << 8) | ((lptr)[1])) +#define FLATLUN_TO_L0LUN(lptr, lun) \ + (lptr)[1] = lun; \ + if (sizeof (lun) == 1) { \ + (lptr)[0] = 0; \ + } else { \ + int nl = (lun); \ + if (nl < 256) { \ + (lptr)[0] = 0; \ + } else { \ + (lptr)[0] = 0x40 | ((nl >> 8) & 0x3f); \ + } \ + } \ + memset(&(lptr)[2], 0, 6) + /* * Note that NODISC (obviously) doesn't apply to non-SPI transport. * ==== //depot/projects/mjexp/sys/dev/isp/ispvar.h#4 (text+ko) ==== @@ -380,8 +380,8 @@ uint8_t isp_reserved; uint16_t isp_maxalloc; uint16_t isp_maxfrmlen; - uint64_t isp_nodewwn; - uint64_t isp_portwwn; + uint64_t isp_wwnn_nvram; + uint64_t isp_wwpn_nvram; /* * Our Port Data Base @@ -980,25 +980,25 @@ * * * DEFAULT_IID(ispsoftc_t *) Default SCSI initiator ID - * DEFAULT_LOOPID(ispsoftc_t *) Default FC Loop ID - * DEFAULT_NODEWWN(ispsoftc_t *) Default Node WWN - * DEFAULT_PORTWWN(ispsoftc_t *) Default Port WWN - * DEFAULT_FRAMESIZE(ispsoftc_t *) Default Frame Size + * DEFAULT_LOOPID(ispsoftc_t *) Default FC Loop ID + * DEFAULT_NODEWWN(ispsoftc_t *) Default Node WWN + * DEFAULT_PORTWWN(ispsoftc_t *) Default Port WWN + * DEFAULT_FRAMESIZE(ispsoftc_t *) Default Frame Size * DEFAULT_EXEC_THROTTLE(ispsoftc_t *) Default Execution Throttle * These establish reasonable defaults for each platform. * These must be available independent of card NVRAM and are * to be used should NVRAM not be readable. * - * ISP_NODEWWN(ispsoftc_t *) FC Node WWN to use - * ISP_PORTWWN(ispsoftc_t *) FC Port WWN to use + * ISP_NODEWWN(ispsoftc_t *) FC Node WWN to use + * ISP_PORTWWN(ispsoftc_t *) FC Port WWN to use * * These are to be used after NVRAM is read. The tags - * in fcparam.isp_{node,port}wwn reflect the values + * in fcparam.isp_ww{n,p}n_nvram reflect the values * read from NVRAM (possibly corrected for card botches). * Each platform can take that information and override * it or ignore and return the Node and Port WWNs to be - * used when sending the Qlogic f/w the Initialization Control - * Block. + * used when sending the Qlogic f/w the Initialization + * Control Block. * * (XXX these do endian specific transformations- in transition XXX) * From owner-p4-projects@FreeBSD.ORG Thu Jan 18 18:23:44 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 8191316A4B3; Thu, 18 Jan 2007 18:23:44 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 53BFE16A49E for ; Thu, 18 Jan 2007 18:23:44 +0000 (UTC) (envelope-from scottl@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 41F4813C4B8 for ; Thu, 18 Jan 2007 18:23:44 +0000 (UTC) (envelope-from scottl@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0IINi4X086720 for ; Thu, 18 Jan 2007 18:23:44 GMT (envelope-from scottl@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0IIMrSG086496 for perforce@freebsd.org; Thu, 18 Jan 2007 18:22:53 GMT (envelope-from scottl@freebsd.org) Date: Thu, 18 Jan 2007 18:22:53 GMT Message-Id: <200701181822.l0IIMrSG086496@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to scottl@freebsd.org using -f From: Scott Long To: Perforce Change Reviews Cc: Subject: PERFORCE change 113127 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 18 Jan 2007 18:23:44 -0000 http://perforce.freebsd.org/chv.cgi?CH=113127 Change 113127 by scottl@scottl-x64 on 2007/01/18 18:22:25 IFC. This also brings in the CAM_NEW_TRAN changes Affected files ... .. //depot/projects/scottl-camlock/src/sbin/camcontrol/camcontrol.c#4 integrate .. //depot/projects/scottl-camlock/src/sys/amd64/amd64/apic_vector.S#8 integrate .. //depot/projects/scottl-camlock/src/sys/amd64/amd64/cpu_switch.S#5 integrate .. //depot/projects/scottl-camlock/src/sys/amd64/amd64/exception.S#6 integrate .. //depot/projects/scottl-camlock/src/sys/amd64/amd64/genassym.c#6 integrate .. //depot/projects/scottl-camlock/src/sys/amd64/amd64/identcpu.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/amd64/amd64/intr_machdep.c#11 integrate .. //depot/projects/scottl-camlock/src/sys/amd64/amd64/local_apic.c#11 integrate .. //depot/projects/scottl-camlock/src/sys/amd64/amd64/machdep.c#13 integrate .. //depot/projects/scottl-camlock/src/sys/amd64/amd64/minidump_machdep.c#2 integrate .. //depot/projects/scottl-camlock/src/sys/amd64/amd64/mp_machdep.c#10 integrate .. //depot/projects/scottl-camlock/src/sys/amd64/amd64/mptable_pci.c#5 integrate .. //depot/projects/scottl-camlock/src/sys/amd64/amd64/nexus.c#10 integrate .. //depot/projects/scottl-camlock/src/sys/amd64/amd64/pmap.c#16 integrate .. //depot/projects/scottl-camlock/src/sys/amd64/amd64/trap.c#12 integrate .. //depot/projects/scottl-camlock/src/sys/amd64/conf/GENERIC#14 integrate .. //depot/projects/scottl-camlock/src/sys/amd64/ia32/ia32_exception.S#3 integrate .. //depot/projects/scottl-camlock/src/sys/amd64/ia32/ia32_syscall.c#6 integrate .. //depot/projects/scottl-camlock/src/sys/amd64/include/apicvar.h#11 integrate .. //depot/projects/scottl-camlock/src/sys/amd64/include/atomic.h#4 integrate .. //depot/projects/scottl-camlock/src/sys/amd64/include/intr_machdep.h#8 integrate .. //depot/projects/scottl-camlock/src/sys/amd64/include/md_var.h#6 integrate .. //depot/projects/scottl-camlock/src/sys/amd64/include/pmap.h#11 integrate .. //depot/projects/scottl-camlock/src/sys/amd64/include/setjmp.h#2 integrate .. //depot/projects/scottl-camlock/src/sys/amd64/include/specialreg.h#6 integrate .. //depot/projects/scottl-camlock/src/sys/amd64/isa/atpic.c#7 integrate .. //depot/projects/scottl-camlock/src/sys/amd64/isa/atpic_vector.S#5 integrate .. //depot/projects/scottl-camlock/src/sys/amd64/isa/clock.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/amd64/isa/icu.h#4 integrate .. //depot/projects/scottl-camlock/src/sys/amd64/linux32/linux.h#6 integrate .. //depot/projects/scottl-camlock/src/sys/amd64/linux32/linux32_dummy.c#6 integrate .. //depot/projects/scottl-camlock/src/sys/amd64/linux32/linux32_machdep.c#7 integrate .. //depot/projects/scottl-camlock/src/sys/amd64/linux32/linux32_proto.h#11 integrate .. //depot/projects/scottl-camlock/src/sys/amd64/linux32/linux32_syscall.h#11 integrate .. //depot/projects/scottl-camlock/src/sys/amd64/linux32/linux32_sysent.c#11 integrate .. //depot/projects/scottl-camlock/src/sys/amd64/linux32/linux32_sysvec.c#9 integrate .. //depot/projects/scottl-camlock/src/sys/amd64/linux32/syscalls.master#11 integrate .. //depot/projects/scottl-camlock/src/sys/amd64/pci/pci_bus.c#7 integrate .. //depot/projects/scottl-camlock/src/sys/arm/arm/busdma_machdep.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/arm/arm/cpufunc.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/arm/arm/genassym.c#6 integrate .. //depot/projects/scottl-camlock/src/sys/arm/arm/pmap.c#13 integrate .. //depot/projects/scottl-camlock/src/sys/arm/arm/vm_machdep.c#11 integrate .. //depot/projects/scottl-camlock/src/sys/arm/at91/at91_mci.c#2 integrate .. //depot/projects/scottl-camlock/src/sys/arm/at91/at91_pioreg.h#2 integrate .. //depot/projects/scottl-camlock/src/sys/arm/at91/at91_pmc.c#4 integrate .. //depot/projects/scottl-camlock/src/sys/arm/at91/at91_spireg.h#3 integrate .. //depot/projects/scottl-camlock/src/sys/arm/at91/at91_st.c#5 integrate .. //depot/projects/scottl-camlock/src/sys/arm/at91/files.at91#5 integrate .. //depot/projects/scottl-camlock/src/sys/arm/at91/if_ate.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/arm/at91/kb920x_machdep.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/arm/at91/uart_dev_at91usart.c#7 integrate .. //depot/projects/scottl-camlock/src/sys/arm/conf/BWCT#1 branch .. //depot/projects/scottl-camlock/src/sys/arm/conf/BWCT.hints#1 branch .. //depot/projects/scottl-camlock/src/sys/arm/include/atomic.h#8 integrate .. //depot/projects/scottl-camlock/src/sys/arm/include/bus_dma.h#2 integrate .. //depot/projects/scottl-camlock/src/sys/arm/include/cpuconf.h#7 integrate .. //depot/projects/scottl-camlock/src/sys/arm/include/md_var.h#4 integrate .. //depot/projects/scottl-camlock/src/sys/arm/include/pmap.h#13 integrate .. //depot/projects/scottl-camlock/src/sys/arm/sa11x0/assabet_machdep.c#10 integrate .. //depot/projects/scottl-camlock/src/sys/arm/xscale/i80321/ep80219_machdep.c#4 integrate .. //depot/projects/scottl-camlock/src/sys/arm/xscale/i80321/i80321_space.c#5 integrate .. //depot/projects/scottl-camlock/src/sys/arm/xscale/i80321/i80321_wdog.c#2 integrate .. //depot/projects/scottl-camlock/src/sys/arm/xscale/i80321/iq31244_machdep.c#9 integrate .. //depot/projects/scottl-camlock/src/sys/arm/xscale/ixp425/avila_machdep.c#2 integrate .. //depot/projects/scottl-camlock/src/sys/arm/xscale/ixp425/files.ixp425#2 integrate .. //depot/projects/scottl-camlock/src/sys/arm/xscale/ixp425/if_npe.c#2 integrate .. //depot/projects/scottl-camlock/src/sys/arm/xscale/ixp425/ixdp425reg.h#2 integrate .. //depot/projects/scottl-camlock/src/sys/arm/xscale/ixp425/ixp425.c#2 integrate .. //depot/projects/scottl-camlock/src/sys/arm/xscale/ixp425/ixp425_pci.c#2 integrate .. //depot/projects/scottl-camlock/src/sys/arm/xscale/ixp425/ixp425var.h#2 integrate .. //depot/projects/scottl-camlock/src/sys/boot/arm/at91/Makefile.inc#5 integrate .. //depot/projects/scottl-camlock/src/sys/boot/arm/at91/boot0spi/main.c#5 integrate .. //depot/projects/scottl-camlock/src/sys/boot/arm/at91/libat91/arm_init.S#2 integrate .. //depot/projects/scottl-camlock/src/sys/boot/arm/at91/libat91/at91rm9200_lowlevel.h#4 integrate .. //depot/projects/scottl-camlock/src/sys/boot/arm/at91/libat91/eeprom.c#3 integrate .. //depot/projects/scottl-camlock/src/sys/boot/arm/at91/libat91/emac.c#5 integrate .. //depot/projects/scottl-camlock/src/sys/boot/arm/at91/libat91/emac_init.c#4 integrate .. //depot/projects/scottl-camlock/src/sys/boot/arm/at91/libat91/lib.h#4 integrate .. //depot/projects/scottl-camlock/src/sys/boot/arm/at91/libat91/spi_flash.c#3 integrate .. //depot/projects/scottl-camlock/src/sys/boot/arm/at91/libat91/spi_flash.h#2 integrate .. //depot/projects/scottl-camlock/src/sys/boot/common/bootstrap.h#5 integrate .. //depot/projects/scottl-camlock/src/sys/boot/common/pnp.c#2 integrate .. //depot/projects/scottl-camlock/src/sys/boot/common/pnpdata#2 delete .. //depot/projects/scottl-camlock/src/sys/boot/forth/loader.conf#10 integrate .. //depot/projects/scottl-camlock/src/sys/boot/i386/btx/btx/btx.S#5 integrate .. //depot/projects/scottl-camlock/src/sys/boot/sparc64/loader/main.c#5 integrate .. //depot/projects/scottl-camlock/src/sys/bsm/audit.h#7 integrate .. //depot/projects/scottl-camlock/src/sys/bsm/audit_internal.h#5 integrate .. //depot/projects/scottl-camlock/src/sys/bsm/audit_kevents.h#7 integrate .. //depot/projects/scottl-camlock/src/sys/bsm/audit_record.h#6 integrate .. //depot/projects/scottl-camlock/src/sys/cam/cam_ccb.h#12 integrate .. //depot/projects/scottl-camlock/src/sys/cam/cam_periph.c#15 integrate .. //depot/projects/scottl-camlock/src/sys/cam/cam_xpt.c#48 integrate .. //depot/projects/scottl-camlock/src/sys/cam/cam_xpt.h#5 integrate .. //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_all.h#7 integrate .. //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_cd.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_ch.c#6 integrate .. //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_da.c#20 integrate .. //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_pass.c#16 integrate .. //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_pt.c#5 integrate .. //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_sa.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_ses.c#9 integrate .. //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_targ_bh.c#6 integrate .. //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_target.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/compat/freebsd32/freebsd32_misc.c#11 integrate .. //depot/projects/scottl-camlock/src/sys/compat/freebsd32/freebsd32_proto.h#13 integrate .. //depot/projects/scottl-camlock/src/sys/compat/freebsd32/freebsd32_syscall.h#13 integrate .. //depot/projects/scottl-camlock/src/sys/compat/freebsd32/freebsd32_syscalls.c#13 integrate .. //depot/projects/scottl-camlock/src/sys/compat/freebsd32/freebsd32_sysent.c#13 integrate .. //depot/projects/scottl-camlock/src/sys/compat/freebsd32/syscalls.master#13 integrate .. //depot/projects/scottl-camlock/src/sys/compat/linsysfs/linsysfs.c#2 integrate .. //depot/projects/scottl-camlock/src/sys/compat/linux/linux_emul.c#4 integrate .. //depot/projects/scottl-camlock/src/sys/compat/linux/linux_emul.h#3 integrate .. //depot/projects/scottl-camlock/src/sys/compat/linux/linux_file.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/compat/linux/linux_ipc.c#7 integrate .. //depot/projects/scottl-camlock/src/sys/compat/linux/linux_ipc.h#3 integrate .. //depot/projects/scottl-camlock/src/sys/compat/linux/linux_mib.c#5 integrate .. //depot/projects/scottl-camlock/src/sys/compat/linux/linux_mib.h#3 integrate .. //depot/projects/scottl-camlock/src/sys/compat/linux/linux_misc.c#12 integrate .. //depot/projects/scottl-camlock/src/sys/compat/linux/linux_misc.h#2 integrate .. //depot/projects/scottl-camlock/src/sys/compat/linux/linux_signal.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/compat/linux/linux_stats.c#10 integrate .. //depot/projects/scottl-camlock/src/sys/compat/linux/linux_time.c#2 integrate .. //depot/projects/scottl-camlock/src/sys/compat/ndis/subr_ntoskrnl.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/conf/NOTES#17 integrate .. //depot/projects/scottl-camlock/src/sys/conf/files#16 integrate .. //depot/projects/scottl-camlock/src/sys/conf/files.amd64#13 integrate .. //depot/projects/scottl-camlock/src/sys/conf/files.arm#8 integrate .. //depot/projects/scottl-camlock/src/sys/conf/files.i386#13 integrate .. //depot/projects/scottl-camlock/src/sys/conf/files.pc98#12 integrate .. //depot/projects/scottl-camlock/src/sys/conf/files.powerpc#10 integrate .. //depot/projects/scottl-camlock/src/sys/conf/files.sparc64#10 integrate .. //depot/projects/scottl-camlock/src/sys/conf/files.sun4v#3 integrate .. //depot/projects/scottl-camlock/src/sys/conf/kern.post.mk#11 integrate .. //depot/projects/scottl-camlock/src/sys/conf/options#15 integrate .. //depot/projects/scottl-camlock/src/sys/conf/options.arm#11 integrate .. //depot/projects/scottl-camlock/src/sys/contrib/dev/ath/ah.h#5 integrate .. //depot/projects/scottl-camlock/src/sys/contrib/dev/ath/ah_desc.h#5 integrate .. //depot/projects/scottl-camlock/src/sys/contrib/dev/ath/ah_devid.h#5 integrate .. //depot/projects/scottl-camlock/src/sys/contrib/dev/ath/public/alpha-elf.hal.o.uu#3 integrate .. //depot/projects/scottl-camlock/src/sys/contrib/dev/ath/public/alpha-elf.inc#2 integrate .. //depot/projects/scottl-camlock/src/sys/contrib/dev/ath/public/ap30.hal.o.uu#2 integrate .. //depot/projects/scottl-camlock/src/sys/contrib/dev/ath/public/ap43.hal.o.uu#2 integrate .. //depot/projects/scottl-camlock/src/sys/contrib/dev/ath/public/ap51.hal.o.uu#2 integrate .. //depot/projects/scottl-camlock/src/sys/contrib/dev/ath/public/ap61.hal.o.uu#2 integrate .. //depot/projects/scottl-camlock/src/sys/contrib/dev/ath/public/arm9-le-thumb-elf.hal.o.uu#4 integrate .. //depot/projects/scottl-camlock/src/sys/contrib/dev/ath/public/arm9-le-thumb-elf.inc#4 integrate .. //depot/projects/scottl-camlock/src/sys/contrib/dev/ath/public/armv4-be-elf.hal.o.uu#4 integrate .. //depot/projects/scottl-camlock/src/sys/contrib/dev/ath/public/armv4-be-elf.inc#4 integrate .. //depot/projects/scottl-camlock/src/sys/contrib/dev/ath/public/armv4-le-elf.hal.o.uu#4 integrate .. //depot/projects/scottl-camlock/src/sys/contrib/dev/ath/public/armv4-le-elf.inc#4 integrate .. //depot/projects/scottl-camlock/src/sys/contrib/dev/ath/public/i386-elf.hal.o.uu#4 integrate .. //depot/projects/scottl-camlock/src/sys/contrib/dev/ath/public/mips-be-elf.hal.o.uu#4 integrate .. //depot/projects/scottl-camlock/src/sys/contrib/dev/ath/public/mips-le-elf.hal.o.uu#4 integrate .. //depot/projects/scottl-camlock/src/sys/contrib/dev/ath/public/mips1-be-elf.hal.o.uu#4 integrate .. //depot/projects/scottl-camlock/src/sys/contrib/dev/ath/public/mips1-le-elf.hal.o.uu#4 integrate .. //depot/projects/scottl-camlock/src/sys/contrib/dev/ath/public/mipsisa32-be-elf.hal.o.uu#4 integrate .. //depot/projects/scottl-camlock/src/sys/contrib/dev/ath/public/mipsisa32-le-elf.hal.o.uu#4 integrate .. //depot/projects/scottl-camlock/src/sys/contrib/dev/ath/public/powerpc-be-eabi.hal.o.uu#4 integrate .. //depot/projects/scottl-camlock/src/sys/contrib/dev/ath/public/powerpc-be-elf.hal.o.uu#3 integrate .. //depot/projects/scottl-camlock/src/sys/contrib/dev/ath/public/powerpc-le-eabi.hal.o.uu#4 integrate .. //depot/projects/scottl-camlock/src/sys/contrib/dev/ath/public/sh4-le-elf.hal.o.uu#4 integrate .. //depot/projects/scottl-camlock/src/sys/contrib/dev/ath/public/sparc-be-elf.hal.o.uu#2 integrate .. //depot/projects/scottl-camlock/src/sys/contrib/dev/ath/public/sparc64-be-elf.hal.o.uu#3 integrate .. //depot/projects/scottl-camlock/src/sys/contrib/dev/ath/public/wackelf.c#1 branch .. //depot/projects/scottl-camlock/src/sys/contrib/dev/ath/public/x86_64-elf.hal.o.uu#4 integrate .. //depot/projects/scottl-camlock/src/sys/contrib/dev/ath/public/xscale-be-elf.hal.o.uu#4 integrate .. //depot/projects/scottl-camlock/src/sys/contrib/dev/ath/public/xscale-be-elf.inc#4 integrate .. //depot/projects/scottl-camlock/src/sys/contrib/dev/ath/public/xscale-le-elf.hal.o.uu#4 integrate .. //depot/projects/scottl-camlock/src/sys/contrib/dev/ath/public/xscale-le-elf.inc#4 integrate .. //depot/projects/scottl-camlock/src/sys/contrib/dev/ath/version.h#5 integrate .. //depot/projects/scottl-camlock/src/sys/contrib/ipfilter/netinet/ip_state.c#7 integrate .. //depot/projects/scottl-camlock/src/sys/contrib/pf/net/if_pfsync.c#10 integrate .. //depot/projects/scottl-camlock/src/sys/contrib/pf/net/pf.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/contrib/pf/net/pf_ioctl.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/ddb/db_command.c#10 integrate .. //depot/projects/scottl-camlock/src/sys/ddb/db_ps.c#9 integrate .. //depot/projects/scottl-camlock/src/sys/ddb/db_thread.c#5 integrate .. //depot/projects/scottl-camlock/src/sys/dev/aac/aac_cam.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/dev/aac/aac_linux.c#3 integrate .. //depot/projects/scottl-camlock/src/sys/dev/aac/aac_pci.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/dev/acpica/acpi.c#12 integrate .. //depot/projects/scottl-camlock/src/sys/dev/acpica/acpi_battery.c#7 integrate .. //depot/projects/scottl-camlock/src/sys/dev/acpica/acpi_cpu.c#6 integrate .. //depot/projects/scottl-camlock/src/sys/dev/acpica/acpi_package.c#6 integrate .. //depot/projects/scottl-camlock/src/sys/dev/acpica/acpi_pcib_acpi.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/dev/acpica/acpi_perf.c#5 integrate .. //depot/projects/scottl-camlock/src/sys/dev/acpica/acpi_throttle.c#5 integrate .. //depot/projects/scottl-camlock/src/sys/dev/acpica/acpivar.h#9 integrate .. //depot/projects/scottl-camlock/src/sys/dev/advansys/adv_eisa.c#5 integrate .. //depot/projects/scottl-camlock/src/sys/dev/advansys/adv_isa.c#5 integrate .. //depot/projects/scottl-camlock/src/sys/dev/advansys/adv_pci.c#6 integrate .. //depot/projects/scottl-camlock/src/sys/dev/advansys/advansys.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/dev/advansys/adw_pci.c#5 integrate .. //depot/projects/scottl-camlock/src/sys/dev/advansys/adwcam.c#7 integrate .. //depot/projects/scottl-camlock/src/sys/dev/aha/aha.c#6 integrate .. //depot/projects/scottl-camlock/src/sys/dev/aha/aha_isa.c#5 integrate .. //depot/projects/scottl-camlock/src/sys/dev/aha/aha_mca.c#4 integrate .. //depot/projects/scottl-camlock/src/sys/dev/ahb/ahb.c#7 integrate .. //depot/projects/scottl-camlock/src/sys/dev/aic7xxx/aic7xxx.seq#4 integrate .. //depot/projects/scottl-camlock/src/sys/dev/aic7xxx/aicasm/aicasm_gram.y#4 integrate .. //depot/projects/scottl-camlock/src/sys/dev/aic7xxx/aicasm/aicasm_macro_gram.y#4 integrate .. //depot/projects/scottl-camlock/src/sys/dev/amd/amd.c#7 integrate .. //depot/projects/scottl-camlock/src/sys/dev/amr/amr_pci.c#7 integrate .. //depot/projects/scottl-camlock/src/sys/dev/arcmsr/arcmsr.c#7 integrate .. //depot/projects/scottl-camlock/src/sys/dev/arcmsr/arcmsr.h#2 integrate .. //depot/projects/scottl-camlock/src/sys/dev/arl/if_arl.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/dev/asr/asr.c#9 integrate .. //depot/projects/scottl-camlock/src/sys/dev/ata/ata-all.c#12 integrate .. //depot/projects/scottl-camlock/src/sys/dev/ata/ata-chipset.c#14 integrate .. //depot/projects/scottl-camlock/src/sys/dev/ata/ata-pci.h#10 integrate .. //depot/projects/scottl-camlock/src/sys/dev/ata/ata-queue.c#9 integrate .. //depot/projects/scottl-camlock/src/sys/dev/ath/ath_rate/amrr/amrr.c#4 integrate .. //depot/projects/scottl-camlock/src/sys/dev/ath/ath_rate/onoe/onoe.c#4 integrate .. //depot/projects/scottl-camlock/src/sys/dev/ath/ath_rate/sample/sample.c#4 integrate .. //depot/projects/scottl-camlock/src/sys/dev/ath/ath_rate/sample/sample.h#4 integrate .. //depot/projects/scottl-camlock/src/sys/dev/ath/if_ath.c#14 integrate .. //depot/projects/scottl-camlock/src/sys/dev/ath/if_ath_pci.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/dev/ath/if_athrate.h#3 integrate .. //depot/projects/scottl-camlock/src/sys/dev/ath/if_athvar.h#12 integrate .. //depot/projects/scottl-camlock/src/sys/dev/atkbdc/psm.c#4 integrate .. //depot/projects/scottl-camlock/src/sys/dev/awi/awivar.h#4 integrate .. //depot/projects/scottl-camlock/src/sys/dev/bce/if_bce.c#6 integrate .. //depot/projects/scottl-camlock/src/sys/dev/bce/if_bcereg.h#5 integrate .. //depot/projects/scottl-camlock/src/sys/dev/bge/if_bge.c#13 integrate .. //depot/projects/scottl-camlock/src/sys/dev/bge/if_bgereg.h#12 integrate .. //depot/projects/scottl-camlock/src/sys/dev/bktr/bktr_i2c.c#5 integrate .. //depot/projects/scottl-camlock/src/sys/dev/buslogic/bt.c#6 integrate .. //depot/projects/scottl-camlock/src/sys/dev/buslogic/bt_eisa.c#4 integrate .. //depot/projects/scottl-camlock/src/sys/dev/buslogic/bt_isa.c#4 integrate .. //depot/projects/scottl-camlock/src/sys/dev/buslogic/bt_mca.c#3 integrate .. //depot/projects/scottl-camlock/src/sys/dev/buslogic/bt_pci.c#4 integrate .. //depot/projects/scottl-camlock/src/sys/dev/ce/if_ce.c#3 integrate .. //depot/projects/scottl-camlock/src/sys/dev/ciss/ciss.c#11 integrate .. //depot/projects/scottl-camlock/src/sys/dev/cp/if_cp.c#6 integrate .. //depot/projects/scottl-camlock/src/sys/dev/ctau/if_ct.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/dev/cx/if_cx.c#9 integrate .. //depot/projects/scottl-camlock/src/sys/dev/cy/cy_isa.c#2 integrate .. //depot/projects/scottl-camlock/src/sys/dev/dc/if_dc.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/dev/dc/if_dcreg.h#6 integrate .. //depot/projects/scottl-camlock/src/sys/dev/dpt/dpt.h#3 integrate .. //depot/projects/scottl-camlock/src/sys/dev/dpt/dpt_eisa.c#3 integrate .. //depot/projects/scottl-camlock/src/sys/dev/dpt/dpt_isa.c#3 integrate .. //depot/projects/scottl-camlock/src/sys/dev/dpt/dpt_pci.c#3 integrate .. //depot/projects/scottl-camlock/src/sys/dev/dpt/dpt_scsi.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/dev/drm/drm_agpsupport.c#4 integrate .. //depot/projects/scottl-camlock/src/sys/dev/en/midway.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/dev/ep/if_ep.c#6 integrate .. //depot/projects/scottl-camlock/src/sys/dev/esp/esp_sbus.c#4 integrate .. //depot/projects/scottl-camlock/src/sys/dev/fb/boot_font.c#5 integrate .. //depot/projects/scottl-camlock/src/sys/dev/fb/creator.c#7 integrate .. //depot/projects/scottl-camlock/src/sys/dev/fb/creatorreg.h#1 branch .. //depot/projects/scottl-camlock/src/sys/dev/fb/fbreg.h#3 integrate .. //depot/projects/scottl-camlock/src/sys/dev/fb/gallant12x22.c#1 branch .. //depot/projects/scottl-camlock/src/sys/dev/fb/gfb.c#5 delete .. //depot/projects/scottl-camlock/src/sys/dev/fb/gfb.h#4 integrate .. //depot/projects/scottl-camlock/src/sys/dev/firewire/fwdev.c#5 integrate .. //depot/projects/scottl-camlock/src/sys/dev/firewire/if_fwip.c#5 integrate .. //depot/projects/scottl-camlock/src/sys/dev/fxp/if_fxp.c#11 integrate .. //depot/projects/scottl-camlock/src/sys/dev/fxp/if_fxpvar.h#6 integrate .. //depot/projects/scottl-camlock/src/sys/dev/gem/if_gem.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/dev/gem/if_gemvar.h#4 integrate .. //depot/projects/scottl-camlock/src/sys/dev/gfb/gfb_pci.c#7 delete .. //depot/projects/scottl-camlock/src/sys/dev/gfb/gfb_pci.h#3 delete .. //depot/projects/scottl-camlock/src/sys/dev/hme/if_hme.c#9 integrate .. //depot/projects/scottl-camlock/src/sys/dev/hme/if_hmevar.h#5 integrate .. //depot/projects/scottl-camlock/src/sys/dev/hptmv/entry.c#6 integrate .. //depot/projects/scottl-camlock/src/sys/dev/ichsmb/ichsmb.c#6 integrate .. //depot/projects/scottl-camlock/src/sys/dev/ichsmb/ichsmb_pci.c#4 integrate .. //depot/projects/scottl-camlock/src/sys/dev/ichwd/ichwd.c#4 integrate .. //depot/projects/scottl-camlock/src/sys/dev/idt/idtreg.h#3 integrate .. //depot/projects/scottl-camlock/src/sys/dev/if_ndis/if_ndis.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/dev/iicbus/iicbb.c#5 integrate .. //depot/projects/scottl-camlock/src/sys/dev/iicbus/iicbus_if.m#4 integrate .. //depot/projects/scottl-camlock/src/sys/dev/iicbus/iiconf.c#3 integrate .. //depot/projects/scottl-camlock/src/sys/dev/iicbus/iiconf.h#4 integrate .. //depot/projects/scottl-camlock/src/sys/dev/iir/iir_pci.c#5 integrate .. //depot/projects/scottl-camlock/src/sys/dev/ipmi/ipmi.c#4 integrate .. //depot/projects/scottl-camlock/src/sys/dev/isp/isp.c#9 integrate .. //depot/projects/scottl-camlock/src/sys/dev/isp/isp_freebsd.c#15 integrate .. //depot/projects/scottl-camlock/src/sys/dev/isp/isp_freebsd.h#12 integrate .. //depot/projects/scottl-camlock/src/sys/dev/isp/isp_pci.c#11 integrate .. //depot/projects/scottl-camlock/src/sys/dev/isp/isp_sbus.c#9 integrate .. //depot/projects/scottl-camlock/src/sys/dev/isp/isp_target.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/dev/isp/ispmbox.h#7 integrate .. //depot/projects/scottl-camlock/src/sys/dev/isp/ispvar.h#10 integrate .. //depot/projects/scottl-camlock/src/sys/dev/ispfw/ispfw.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/dev/iwi/if_iwi.c#10 integrate .. //depot/projects/scottl-camlock/src/sys/dev/le/am7990.c#4 integrate .. //depot/projects/scottl-camlock/src/sys/dev/le/am79900.c#4 integrate .. //depot/projects/scottl-camlock/src/sys/dev/le/lance.c#3 integrate .. //depot/projects/scottl-camlock/src/sys/dev/le/lancevar.h#3 integrate .. //depot/projects/scottl-camlock/src/sys/dev/md/md.c#9 integrate .. //depot/projects/scottl-camlock/src/sys/dev/mfi/mfi.c#9 integrate .. //depot/projects/scottl-camlock/src/sys/dev/mfi/mfi_ioctl.h#4 integrate .. //depot/projects/scottl-camlock/src/sys/dev/mfi/mfi_pci.c#4 integrate .. //depot/projects/scottl-camlock/src/sys/dev/mfi/mfireg.h#6 integrate .. //depot/projects/scottl-camlock/src/sys/dev/mii/acphy.c#6 integrate .. //depot/projects/scottl-camlock/src/sys/dev/mii/acphyreg.h#2 integrate .. //depot/projects/scottl-camlock/src/sys/dev/mii/amphy.c#6 integrate .. //depot/projects/scottl-camlock/src/sys/dev/mii/bmtphy.c#6 integrate .. //depot/projects/scottl-camlock/src/sys/dev/mii/brgphy.c#10 integrate .. //depot/projects/scottl-camlock/src/sys/dev/mii/ciphy.c#6 integrate .. //depot/projects/scottl-camlock/src/sys/dev/mii/e1000phy.c#6 integrate .. //depot/projects/scottl-camlock/src/sys/dev/mii/e1000phyreg.h#3 integrate .. //depot/projects/scottl-camlock/src/sys/dev/mii/exphy.c#6 integrate .. //depot/projects/scottl-camlock/src/sys/dev/mii/inphy.c#4 integrate .. //depot/projects/scottl-camlock/src/sys/dev/mii/ip1000phy.c#2 integrate .. //depot/projects/scottl-camlock/src/sys/dev/mii/lxtphy.c#7 integrate .. //depot/projects/scottl-camlock/src/sys/dev/mii/mii_physubr.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/dev/mii/miidevs#6 integrate .. //depot/projects/scottl-camlock/src/sys/dev/mii/miivar.h#5 integrate .. //depot/projects/scottl-camlock/src/sys/dev/mii/mlphy.c#5 integrate .. //depot/projects/scottl-camlock/src/sys/dev/mii/nsgphy.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/dev/mii/nsphy.c#7 integrate .. //depot/projects/scottl-camlock/src/sys/dev/mii/pnaphy.c#6 integrate .. //depot/projects/scottl-camlock/src/sys/dev/mii/qsphy.c#7 integrate .. //depot/projects/scottl-camlock/src/sys/dev/mii/rgephy.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/dev/mii/rlphy.c#7 integrate .. //depot/projects/scottl-camlock/src/sys/dev/mii/rlswitch.c#1 branch .. //depot/projects/scottl-camlock/src/sys/dev/mii/ruephy.c#4 integrate .. //depot/projects/scottl-camlock/src/sys/dev/mii/tdkphy.c#7 integrate .. //depot/projects/scottl-camlock/src/sys/dev/mii/tlphy.c#6 integrate .. //depot/projects/scottl-camlock/src/sys/dev/mii/xmphy.c#6 integrate .. //depot/projects/scottl-camlock/src/sys/dev/mk48txx/mk48txx.c#5 integrate .. //depot/projects/scottl-camlock/src/sys/dev/mly/mly.c#6 integrate .. //depot/projects/scottl-camlock/src/sys/dev/mpt/mpt.c#16 integrate .. //depot/projects/scottl-camlock/src/sys/dev/mpt/mpt.h#16 integrate .. //depot/projects/scottl-camlock/src/sys/dev/mpt/mpt_cam.c#17 integrate .. //depot/projects/scottl-camlock/src/sys/dev/mpt/mpt_debug.c#12 integrate .. //depot/projects/scottl-camlock/src/sys/dev/mpt/mpt_pci.c#18 integrate .. //depot/projects/scottl-camlock/src/sys/dev/mpt/mpt_raid.c#11 integrate .. //depot/projects/scottl-camlock/src/sys/dev/msk/if_msk.c#1 branch .. //depot/projects/scottl-camlock/src/sys/dev/msk/if_mskreg.h#1 branch .. //depot/projects/scottl-camlock/src/sys/dev/mxge/if_mxge.c#6 integrate .. //depot/projects/scottl-camlock/src/sys/dev/my/if_my.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/dev/nve/if_nvereg.h#3 integrate .. //depot/projects/scottl-camlock/src/sys/dev/pci/pci.c#12 integrate .. //depot/projects/scottl-camlock/src/sys/dev/pci/pci_pci.c#10 integrate .. //depot/projects/scottl-camlock/src/sys/dev/pci/pci_private.h#8 integrate .. //depot/projects/scottl-camlock/src/sys/dev/pci/pcib_private.h#4 integrate .. //depot/projects/scottl-camlock/src/sys/dev/pci/pcireg.h#7 integrate .. //depot/projects/scottl-camlock/src/sys/dev/pci/pcivar.h#9 integrate .. //depot/projects/scottl-camlock/src/sys/dev/ppbus/if_plip.c#7 integrate .. //depot/projects/scottl-camlock/src/sys/dev/ppbus/vpo.c#4 integrate .. //depot/projects/scottl-camlock/src/sys/dev/ral/rt2560.c#5 integrate .. //depot/projects/scottl-camlock/src/sys/dev/ral/rt2560var.h#2 integrate .. //depot/projects/scottl-camlock/src/sys/dev/ral/rt2661.c#4 integrate .. //depot/projects/scottl-camlock/src/sys/dev/ral/rt2661var.h#2 integrate .. //depot/projects/scottl-camlock/src/sys/dev/re/if_re.c#14 integrate .. //depot/projects/scottl-camlock/src/sys/dev/si/si.c#7 integrate .. //depot/projects/scottl-camlock/src/sys/dev/sk/if_sk.c#7 integrate .. //depot/projects/scottl-camlock/src/sys/dev/sk/if_skreg.h#5 integrate .. //depot/projects/scottl-camlock/src/sys/dev/sound/pci/emu10kx-pcm.c#2 integrate .. //depot/projects/scottl-camlock/src/sys/dev/sound/pci/emu10kx.c#2 integrate .. //depot/projects/scottl-camlock/src/sys/dev/sound/pci/emu10kx.h#2 integrate .. //depot/projects/scottl-camlock/src/sys/dev/sound/pci/envy24.c#4 integrate .. //depot/projects/scottl-camlock/src/sys/dev/sound/pci/envy24ht.c#2 integrate .. //depot/projects/scottl-camlock/src/sys/dev/sound/pci/envy24ht.h#2 integrate .. //depot/projects/scottl-camlock/src/sys/dev/sound/pci/hda/hdac.c#3 integrate .. //depot/projects/scottl-camlock/src/sys/dev/sound/pci/hda/hdac_private.h#3 integrate .. //depot/projects/scottl-camlock/src/sys/dev/sound/pci/ich.c#13 integrate .. //depot/projects/scottl-camlock/src/sys/dev/sound/pcm/channel.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/dev/sound/pcm/dsp.c#10 integrate .. //depot/projects/scottl-camlock/src/sys/dev/sound/pcm/feeder.c#6 integrate .. //depot/projects/scottl-camlock/src/sys/dev/sound/usb/uaudio.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/dev/syscons/scvesactl.c#6 integrate .. //depot/projects/scottl-camlock/src/sys/dev/trm/trm.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/dev/twa/tw_osl_freebsd.c#3 integrate .. //depot/projects/scottl-camlock/src/sys/dev/usb/if_aue.c#10 integrate .. //depot/projects/scottl-camlock/src/sys/dev/usb/if_auereg.h#6 integrate .. //depot/projects/scottl-camlock/src/sys/dev/usb/ums.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/dev/usb/uplcom.c#11 integrate .. //depot/projects/scottl-camlock/src/sys/dev/usb/usb_ethersubr.c#6 integrate .. //depot/projects/scottl-camlock/src/sys/dev/usb/usb_ethersubr.h#5 integrate .. //depot/projects/scottl-camlock/src/sys/dev/usb/usbdi_util.h#7 integrate .. //depot/projects/scottl-camlock/src/sys/dev/vge/if_vge.c#6 integrate .. //depot/projects/scottl-camlock/src/sys/dev/watchdog/watchdog.c#4 integrate .. //depot/projects/scottl-camlock/src/sys/dev/wds/wd7000.c#5 integrate .. //depot/projects/scottl-camlock/src/sys/dev/wi/if_wi.c#10 integrate .. //depot/projects/scottl-camlock/src/sys/dev/wi/if_wivar.h#6 integrate .. //depot/projects/scottl-camlock/src/sys/fs/msdosfs/bpb.h#3 integrate .. //depot/projects/scottl-camlock/src/sys/fs/msdosfs/denode.h#6 integrate .. //depot/projects/scottl-camlock/src/sys/fs/msdosfs/msdosfs_fat.c#3 integrate .. //depot/projects/scottl-camlock/src/sys/fs/msdosfs/msdosfs_vfsops.c#12 integrate .. //depot/projects/scottl-camlock/src/sys/fs/msdosfs/msdosfs_vnops.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/fs/procfs/procfs_status.c#7 integrate .. //depot/projects/scottl-camlock/src/sys/fs/pseudofs/pseudofs_vncache.c#4 integrate .. //depot/projects/scottl-camlock/src/sys/fs/udf/udf_vfsops.c#12 integrate .. //depot/projects/scottl-camlock/src/sys/fs/udf/udf_vnops.c#6 integrate .. //depot/projects/scottl-camlock/src/sys/fs/unionfs/union.h#5 integrate .. //depot/projects/scottl-camlock/src/sys/fs/unionfs/union_subr.c#6 integrate .. //depot/projects/scottl-camlock/src/sys/fs/unionfs/union_vfsops.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/fs/unionfs/union_vnops.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/geom/journal/g_journal.c#2 integrate .. //depot/projects/scottl-camlock/src/sys/i386/conf/GENERIC#14 integrate .. //depot/projects/scottl-camlock/src/sys/i386/i386/apic_vector.s#6 integrate .. //depot/projects/scottl-camlock/src/sys/i386/i386/elan-mmcr.c#6 integrate .. //depot/projects/scottl-camlock/src/sys/i386/i386/exception.s#7 integrate .. //depot/projects/scottl-camlock/src/sys/i386/i386/genassym.c#7 integrate .. //depot/projects/scottl-camlock/src/sys/i386/i386/identcpu.c#11 integrate .. //depot/projects/scottl-camlock/src/sys/i386/i386/intr_machdep.c#11 integrate .. //depot/projects/scottl-camlock/src/sys/i386/i386/local_apic.c#12 integrate .. //depot/projects/scottl-camlock/src/sys/i386/i386/machdep.c#13 integrate .. //depot/projects/scottl-camlock/src/sys/i386/i386/mp_machdep.c#10 integrate .. //depot/projects/scottl-camlock/src/sys/i386/i386/mptable_pci.c#5 integrate .. //depot/projects/scottl-camlock/src/sys/i386/i386/nexus.c#9 integrate .. //depot/projects/scottl-camlock/src/sys/i386/i386/pmap.c#16 integrate .. //depot/projects/scottl-camlock/src/sys/i386/i386/swtch.s#6 integrate .. //depot/projects/scottl-camlock/src/sys/i386/i386/trap.c#10 integrate .. //depot/projects/scottl-camlock/src/sys/i386/i386/vm86.c#5 integrate .. //depot/projects/scottl-camlock/src/sys/i386/i386/vm86bios.s#3 integrate .. //depot/projects/scottl-camlock/src/sys/i386/ibcs2/ibcs2_sysvec.c#5 integrate .. //depot/projects/scottl-camlock/src/sys/i386/include/apicvar.h#10 integrate .. //depot/projects/scottl-camlock/src/sys/i386/include/atomic.h#6 integrate .. //depot/projects/scottl-camlock/src/sys/i386/include/intr_machdep.h#8 integrate .. //depot/projects/scottl-camlock/src/sys/i386/include/setjmp.h#2 integrate .. //depot/projects/scottl-camlock/src/sys/i386/include/specialreg.h#7 integrate .. //depot/projects/scottl-camlock/src/sys/i386/isa/atpic.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/i386/isa/atpic_vector.s#5 integrate .. //depot/projects/scottl-camlock/src/sys/i386/isa/clock.c#9 integrate .. //depot/projects/scottl-camlock/src/sys/i386/isa/icu.h#4 integrate .. //depot/projects/scottl-camlock/src/sys/i386/linux/linux.h#8 integrate .. //depot/projects/scottl-camlock/src/sys/i386/linux/linux_dummy.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/i386/linux/linux_machdep.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/i386/linux/linux_proto.h#14 integrate .. //depot/projects/scottl-camlock/src/sys/i386/linux/linux_syscall.h#14 integrate .. //depot/projects/scottl-camlock/src/sys/i386/linux/linux_sysent.c#14 integrate .. //depot/projects/scottl-camlock/src/sys/i386/linux/syscalls.master#14 integrate .. //depot/projects/scottl-camlock/src/sys/i386/pci/pci_bus.c#7 integrate .. //depot/projects/scottl-camlock/src/sys/i386/pci/pci_cfgreg.c#5 integrate .. //depot/projects/scottl-camlock/src/sys/i4b/driver/i4b_ipr.c#6 integrate .. //depot/projects/scottl-camlock/src/sys/ia64/ia64/machdep.c#11 integrate .. //depot/projects/scottl-camlock/src/sys/ia64/include/exec.h#4 integrate .. //depot/projects/scottl-camlock/src/sys/ia64/include/floatingpoint.h#3 integrate .. //depot/projects/scottl-camlock/src/sys/ia64/include/reloc.h#3 integrate .. //depot/projects/scottl-camlock/src/sys/isa/pnpparse.c#2 integrate .. //depot/projects/scottl-camlock/src/sys/isofs/cd9660/cd9660_node.h#5 integrate .. //depot/projects/scottl-camlock/src/sys/kern/imgact_elf.c#7 integrate .. //depot/projects/scottl-camlock/src/sys/kern/init_main.c#11 integrate .. //depot/projects/scottl-camlock/src/sys/kern/kern_acct.c#10 integrate .. //depot/projects/scottl-camlock/src/sys/kern/kern_acl.c#6 integrate .. //depot/projects/scottl-camlock/src/sys/kern/kern_clock.c#10 integrate .. //depot/projects/scottl-camlock/src/sys/kern/kern_condvar.c#7 integrate .. //depot/projects/scottl-camlock/src/sys/kern/kern_descrip.c#12 integrate .. //depot/projects/scottl-camlock/src/sys/kern/kern_fork.c#12 integrate .. //depot/projects/scottl-camlock/src/sys/kern/kern_idle.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/kern/kern_intr.c#10 integrate .. //depot/projects/scottl-camlock/src/sys/kern/kern_kse.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/kern/kern_ktrace.c#12 integrate .. //depot/projects/scottl-camlock/src/sys/kern/kern_mac.c#10 delete .. //depot/projects/scottl-camlock/src/sys/kern/kern_mutex.c#12 integrate .. //depot/projects/scottl-camlock/src/sys/kern/kern_ntptime.c#5 integrate .. //depot/projects/scottl-camlock/src/sys/kern/kern_poll.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/kern/kern_proc.c#7 integrate .. //depot/projects/scottl-camlock/src/sys/kern/kern_prot.c#10 integrate .. //depot/projects/scottl-camlock/src/sys/kern/kern_resource.c#11 integrate .. //depot/projects/scottl-camlock/src/sys/kern/kern_sig.c#12 integrate .. //depot/projects/scottl-camlock/src/sys/kern/kern_subr.c#7 integrate .. //depot/projects/scottl-camlock/src/sys/kern/kern_switch.c#9 integrate .. //depot/projects/scottl-camlock/src/sys/kern/kern_synch.c#13 integrate .. //depot/projects/scottl-camlock/src/sys/kern/kern_thr.c#11 integrate .. //depot/projects/scottl-camlock/src/sys/kern/kern_thread.c#11 integrate .. //depot/projects/scottl-camlock/src/sys/kern/kern_umtx.c#12 integrate .. //depot/projects/scottl-camlock/src/sys/kern/ksched.c#2 integrate .. //depot/projects/scottl-camlock/src/sys/kern/link_elf_obj.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/kern/sched_4bsd.c#13 integrate .. //depot/projects/scottl-camlock/src/sys/kern/sched_core.c#5 integrate .. //depot/projects/scottl-camlock/src/sys/kern/sched_ule.c#12 integrate .. //depot/projects/scottl-camlock/src/sys/kern/subr_lock.c#3 integrate .. //depot/projects/scottl-camlock/src/sys/kern/subr_prf.c#11 integrate .. //depot/projects/scottl-camlock/src/sys/kern/subr_rman.c#11 integrate .. //depot/projects/scottl-camlock/src/sys/kern/subr_sleepqueue.c#10 integrate .. //depot/projects/scottl-camlock/src/sys/kern/subr_trap.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/kern/subr_turnstile.c#9 integrate .. //depot/projects/scottl-camlock/src/sys/kern/subr_witness.c#11 integrate .. //depot/projects/scottl-camlock/src/sys/kern/sys_pipe.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/kern/sysv_ipc.c#4 integrate .. //depot/projects/scottl-camlock/src/sys/kern/sysv_msg.c#7 integrate .. //depot/projects/scottl-camlock/src/sys/kern/tty.c#9 integrate .. //depot/projects/scottl-camlock/src/sys/kern/tty_pts.c#5 integrate .. //depot/projects/scottl-camlock/src/sys/kern/uipc_mbuf.c#10 integrate .. //depot/projects/scottl-camlock/src/sys/kern/uipc_socket.c#13 integrate .. //depot/projects/scottl-camlock/src/sys/kern/uipc_usrreq.c#13 integrate .. //depot/projects/scottl-camlock/src/sys/kern/vfs_bio.c#10 integrate .. //depot/projects/scottl-camlock/src/sys/kern/vfs_export.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/kern/vfs_extattr.c#1 branch .. //depot/projects/scottl-camlock/src/sys/kern/vfs_mount.c#15 integrate .. //depot/projects/scottl-camlock/src/sys/kern/vfs_syscalls.c#14 integrate .. //depot/projects/scottl-camlock/src/sys/modules/Makefile#16 integrate .. //depot/projects/scottl-camlock/src/sys/modules/acpi/Makefile#7 integrate .. //depot/projects/scottl-camlock/src/sys/modules/acpi/acpi/Makefile#7 integrate .. //depot/projects/scottl-camlock/src/sys/modules/isp/Makefile#3 integrate .. //depot/projects/scottl-camlock/src/sys/modules/msk/Makefile#1 branch .. //depot/projects/scottl-camlock/src/sys/modules/netgraph/Makefile#8 integrate .. //depot/projects/scottl-camlock/src/sys/modules/netgraph/deflate/Makefile#1 branch .. //depot/projects/scottl-camlock/src/sys/modules/netgraph/pred1/Makefile#1 branch .. //depot/projects/scottl-camlock/src/sys/modules/sound/driver/emu10kx/Makefile#2 integrate .. //depot/projects/scottl-camlock/src/sys/modules/ufs/Makefile#4 integrate .. //depot/projects/scottl-camlock/src/sys/net/bridgestp.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/net/bridgestp.h#3 integrate .. //depot/projects/scottl-camlock/src/sys/net/ethernet.h#5 integrate .. //depot/projects/scottl-camlock/src/sys/net/if.c#14 integrate .. //depot/projects/scottl-camlock/src/sys/net/if_atmsubr.c#7 integrate .. //depot/projects/scottl-camlock/src/sys/net/if_bridge.c#12 integrate .. //depot/projects/scottl-camlock/src/sys/net/if_bridgevar.h#6 integrate .. //depot/projects/scottl-camlock/src/sys/net/if_enc.c#3 integrate .. //depot/projects/scottl-camlock/src/sys/net/if_ethersubr.c#11 integrate .. //depot/projects/scottl-camlock/src/sys/net/if_llc.h#5 integrate .. //depot/projects/scottl-camlock/src/sys/net/if_media.h#8 integrate .. //depot/projects/scottl-camlock/src/sys/net/if_ppp.c#11 integrate .. //depot/projects/scottl-camlock/src/sys/net/if_pppvar.h#5 integrate .. //depot/projects/scottl-camlock/src/sys/net/if_spppsubr.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/net/if_vlan.c#13 integrate .. //depot/projects/scottl-camlock/src/sys/net/ppp_tty.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/net80211/_ieee80211.h#4 integrate .. //depot/projects/scottl-camlock/src/sys/net80211/ieee80211.c#9 integrate .. //depot/projects/scottl-camlock/src/sys/net80211/ieee80211.h#6 integrate .. //depot/projects/scottl-camlock/src/sys/net80211/ieee80211_freebsd.c#6 integrate .. //depot/projects/scottl-camlock/src/sys/net80211/ieee80211_freebsd.h#4 integrate .. //depot/projects/scottl-camlock/src/sys/net80211/ieee80211_input.c#10 integrate .. //depot/projects/scottl-camlock/src/sys/net80211/ieee80211_node.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/net80211/ieee80211_output.c#10 integrate .. //depot/projects/scottl-camlock/src/sys/net80211/ieee80211_proto.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/net80211/ieee80211_proto.h#6 integrate .. //depot/projects/scottl-camlock/src/sys/net80211/ieee80211_var.h#9 integrate .. //depot/projects/scottl-camlock/src/sys/netatalk/COPYRIGHT#4 integrate .. //depot/projects/scottl-camlock/src/sys/netatalk/aarp.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/netatalk/aarp.h#3 integrate .. //depot/projects/scottl-camlock/src/sys/netatalk/at.h#3 integrate .. //depot/projects/scottl-camlock/src/sys/netatalk/at_extern.h#5 integrate .. //depot/projects/scottl-camlock/src/sys/netatalk/at_proto.c#4 integrate .. //depot/projects/scottl-camlock/src/sys/netatalk/at_rmx.c#4 integrate .. //depot/projects/scottl-camlock/src/sys/netatalk/at_var.h#4 integrate .. //depot/projects/scottl-camlock/src/sys/netatalk/ddp.h#3 integrate .. //depot/projects/scottl-camlock/src/sys/netatalk/ddp_input.c#6 integrate .. //depot/projects/scottl-camlock/src/sys/netatalk/ddp_output.c#7 integrate .. //depot/projects/scottl-camlock/src/sys/netatalk/ddp_pcb.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/netatalk/ddp_pcb.h#4 integrate .. //depot/projects/scottl-camlock/src/sys/netatalk/ddp_usrreq.c#7 integrate .. //depot/projects/scottl-camlock/src/sys/netatalk/ddp_var.h#4 integrate .. //depot/projects/scottl-camlock/src/sys/netgraph/ng_deflate.c#1 branch .. //depot/projects/scottl-camlock/src/sys/netgraph/ng_deflate.h#1 branch .. //depot/projects/scottl-camlock/src/sys/netgraph/ng_nat.c#3 integrate .. //depot/projects/scottl-camlock/src/sys/netgraph/ng_ppp.c#6 integrate .. //depot/projects/scottl-camlock/src/sys/netgraph/ng_ppp.h#3 integrate .. //depot/projects/scottl-camlock/src/sys/netgraph/ng_pred1.c#1 branch .. //depot/projects/scottl-camlock/src/sys/netgraph/ng_pred1.h#1 branch .. //depot/projects/scottl-camlock/src/sys/netgraph/ng_sppp.c#7 integrate .. //depot/projects/scottl-camlock/src/sys/netgraph/ng_tcpmss.c#3 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/if_ether.c#10 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/igmp.c#7 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/in.h#7 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/in_pcb.c#12 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/ip.h#4 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/ip_carp.h#3 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/ip_divert.c#11 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/ip_fw.h#8 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/ip_fw2.c#15 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/ip_fw_pfil.c#6 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/ip_output.c#11 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/libalias/alias.c#3 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/libalias/alias.h#3 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/libalias/alias_db.c#4 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/libalias/alias_local.h#3 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/libalias/alias_mod.c#2 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/libalias/alias_proxy.c#3 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/libalias/alias_util.c#3 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/raw_ip.c#11 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/sctp_asconf.c#2 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/sctp_asconf.h#2 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/sctp_auth.c#2 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/sctp_bsd_addr.c#2 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/sctp_bsd_addr.h#2 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/sctp_constants.h#2 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/sctp_crc32.c#2 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/sctp_crc32.h#2 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/sctp_indata.c#2 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/sctp_indata.h#2 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/sctp_input.c#2 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/sctp_input.h#2 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/sctp_lock_bsd.h#2 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/sctp_os.h#2 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/sctp_os_bsd.h#2 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/sctp_output.c#2 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/sctp_output.h#2 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/sctp_pcb.c#2 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/sctp_pcb.h#2 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/sctp_peeloff.c#2 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/sctp_peeloff.h#2 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/sctp_structs.h#2 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/sctp_timer.c#2 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/sctp_timer.h#2 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/sctp_uio.h#2 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/sctp_usrreq.c#2 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/sctp_var.h#2 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/sctputil.c#2 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/sctputil.h#2 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/tcp_hostcache.c#4 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/tcp_input.c#13 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/tcp_subr.c#10 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/tcp_syncache.c#12 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/udp_usrreq.c#12 integrate .. //depot/projects/scottl-camlock/src/sys/netinet6/esp_aesctr.c#5 integrate .. //depot/projects/scottl-camlock/src/sys/netinet6/frag6.c#6 integrate .. //depot/projects/scottl-camlock/src/sys/netinet6/icmp6.c#7 integrate .. //depot/projects/scottl-camlock/src/sys/netinet6/in6.c#11 integrate .. //depot/projects/scottl-camlock/src/sys/netinet6/in6_cksum.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/netinet6/in6_gif.c#6 integrate .. //depot/projects/scottl-camlock/src/sys/netinet6/in6_src.c#10 integrate .. //depot/projects/scottl-camlock/src/sys/netinet6/in6_var.h#7 integrate .. //depot/projects/scottl-camlock/src/sys/netinet6/ip6_forward.c#7 integrate .. //depot/projects/scottl-camlock/src/sys/netinet6/ip6_input.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/netinet6/ip6_mroute.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/netinet6/ipsec.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/netinet6/mld6.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/netinet6/nd6.c#11 integrate .. //depot/projects/scottl-camlock/src/sys/netinet6/nd6_nbr.c#7 integrate .. //depot/projects/scottl-camlock/src/sys/netinet6/nd6_rtr.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/netinet6/scope6.c#4 integrate .. //depot/projects/scottl-camlock/src/sys/netinet6/sctp6_usrreq.c#2 integrate .. //depot/projects/scottl-camlock/src/sys/netinet6/sctp6_var.h#2 integrate .. //depot/projects/scottl-camlock/src/sys/netinet6/udp6_usrreq.c#10 integrate .. //depot/projects/scottl-camlock/src/sys/netipsec/ipsec.c#7 integrate .. //depot/projects/scottl-camlock/src/sys/netipsec/ipsec_input.c#5 integrate .. //depot/projects/scottl-camlock/src/sys/netipx/ipx.c#3 integrate .. //depot/projects/scottl-camlock/src/sys/netipx/ipx.h#5 integrate .. //depot/projects/scottl-camlock/src/sys/netipx/ipx_cksum.c#3 integrate .. //depot/projects/scottl-camlock/src/sys/netipx/ipx_if.h#3 integrate .. //depot/projects/scottl-camlock/src/sys/netipx/ipx_input.c#6 integrate .. //depot/projects/scottl-camlock/src/sys/netipx/ipx_ip.c#6 integrate .. //depot/projects/scottl-camlock/src/sys/netipx/ipx_ip.h#4 integrate .. //depot/projects/scottl-camlock/src/sys/netipx/ipx_outputfl.c#3 integrate .. //depot/projects/scottl-camlock/src/sys/netipx/ipx_pcb.c#6 integrate .. //depot/projects/scottl-camlock/src/sys/netipx/ipx_pcb.h#4 integrate .. //depot/projects/scottl-camlock/src/sys/netipx/ipx_proto.c#4 integrate .. //depot/projects/scottl-camlock/src/sys/netipx/ipx_usrreq.c#7 integrate .. //depot/projects/scottl-camlock/src/sys/netipx/ipx_var.h#3 integrate .. //depot/projects/scottl-camlock/src/sys/netipx/spx.h#3 integrate .. //depot/projects/scottl-camlock/src/sys/netipx/spx_debug.c#3 integrate .. //depot/projects/scottl-camlock/src/sys/netipx/spx_debug.h#3 integrate .. //depot/projects/scottl-camlock/src/sys/netipx/spx_timer.h#3 integrate .. //depot/projects/scottl-camlock/src/sys/netipx/spx_usrreq.c#9 integrate .. //depot/projects/scottl-camlock/src/sys/netipx/spx_var.h#3 integrate .. //depot/projects/scottl-camlock/src/sys/netnatm/natm.c#7 integrate .. //depot/projects/scottl-camlock/src/sys/netnatm/natm.h#4 integrate .. //depot/projects/scottl-camlock/src/sys/netnatm/natm_pcb.c#5 integrate .. //depot/projects/scottl-camlock/src/sys/netnatm/natm_proto.c#5 integrate .. //depot/projects/scottl-camlock/src/sys/nfsclient/bootp_subr.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/nfsclient/nfs_diskless.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/nfsclient/nfs_socket.c#12 integrate .. //depot/projects/scottl-camlock/src/sys/nfsclient/nfs_vfsops.c#12 integrate .. //depot/projects/scottl-camlock/src/sys/nfsclient/nfsdiskless.h#4 integrate .. //depot/projects/scottl-camlock/src/sys/nfsserver/nfs_srvsubs.c#11 integrate .. //depot/projects/scottl-camlock/src/sys/nfsserver/nfs_syscalls.c#9 integrate .. //depot/projects/scottl-camlock/src/sys/nfsserver/nfsm_subs.h#4 integrate .. //depot/projects/scottl-camlock/src/sys/pc98/pc98/machdep.c#9 integrate .. //depot/projects/scottl-camlock/src/sys/pci/agp_intel.c#6 integrate .. //depot/projects/scottl-camlock/src/sys/pci/agpreg.h#5 integrate .. //depot/projects/scottl-camlock/src/sys/pci/alpm.c#4 integrate .. //depot/projects/scottl-camlock/src/sys/pci/amdpm.c#7 integrate .. //depot/projects/scottl-camlock/src/sys/pci/amdsmb.c#4 integrate .. //depot/projects/scottl-camlock/src/sys/pci/if_pcn.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/pci/if_rl.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/pci/if_rlreg.h#12 integrate .. //depot/projects/scottl-camlock/src/sys/pci/if_xl.c#9 integrate .. //depot/projects/scottl-camlock/src/sys/pci/if_xlreg.h#6 integrate .. //depot/projects/scottl-camlock/src/sys/pci/intpm.c#4 integrate .. //depot/projects/scottl-camlock/src/sys/pci/intpmreg.h#3 integrate .. //depot/projects/scottl-camlock/src/sys/pci/nfsmb.c#5 integrate .. //depot/projects/scottl-camlock/src/sys/pci/viapm.c#7 integrate .. //depot/projects/scottl-camlock/src/sys/powerpc/conf/NOTES#4 integrate .. //depot/projects/scottl-camlock/src/sys/powerpc/include/bus.h#5 integrate .. //depot/projects/scottl-camlock/src/sys/powerpc/include/pmap.h#5 integrate .. //depot/projects/scottl-camlock/src/sys/powerpc/include/reloc.h#3 integrate .. //depot/projects/scottl-camlock/src/sys/powerpc/powerpc/cpu.c#3 integrate .. //depot/projects/scottl-camlock/src/sys/powerpc/powerpc/genassym.c#7 integrate .. //depot/projects/scottl-camlock/src/sys/powerpc/powerpc/intr_machdep.c#6 integrate .. //depot/projects/scottl-camlock/src/sys/powerpc/powerpc/machdep.c#9 integrate .. //depot/projects/scottl-camlock/src/sys/powerpc/powerpc/mmu_if.m#6 integrate .. //depot/projects/scottl-camlock/src/sys/powerpc/powerpc/mmu_oea.c#7 integrate .. //depot/projects/scottl-camlock/src/sys/powerpc/powerpc/ofw_machdep.c#5 integrate .. //depot/projects/scottl-camlock/src/sys/powerpc/powerpc/pmap_dispatch.c#7 integrate .. //depot/projects/scottl-camlock/src/sys/powerpc/powerpc/uio_machdep.c#4 integrate .. //depot/projects/scottl-camlock/src/sys/powerpc/powerpc/vm_machdep.c#7 integrate .. //depot/projects/scottl-camlock/src/sys/security/audit/audit.c#9 integrate .. //depot/projects/scottl-camlock/src/sys/security/audit/audit_arg.c#7 integrate .. //depot/projects/scottl-camlock/src/sys/security/audit/audit_bsm_klib.c#4 integrate .. //depot/projects/scottl-camlock/src/sys/security/audit/audit_bsm_token.c#7 integrate .. //depot/projects/scottl-camlock/src/sys/security/audit/audit_syscalls.c#7 integrate .. //depot/projects/scottl-camlock/src/sys/security/audit/audit_trigger.c#4 integrate .. //depot/projects/scottl-camlock/src/sys/security/audit/audit_worker.c#5 integrate .. //depot/projects/scottl-camlock/src/sys/security/mac/mac_framework.c#1 branch .. //depot/projects/scottl-camlock/src/sys/security/mac/mac_framework.h#3 integrate .. //depot/projects/scottl-camlock/src/sys/security/mac/mac_inet.c#3 integrate .. //depot/projects/scottl-camlock/src/sys/security/mac/mac_internal.h#5 integrate .. //depot/projects/scottl-camlock/src/sys/security/mac/mac_label.c#4 integrate .. //depot/projects/scottl-camlock/src/sys/security/mac/mac_net.c#6 integrate .. //depot/projects/scottl-camlock/src/sys/security/mac/mac_pipe.c#4 integrate .. //depot/projects/scottl-camlock/src/sys/security/mac/mac_policy.h#1 branch .. //depot/projects/scottl-camlock/src/sys/security/mac/mac_posix_sem.c#4 integrate .. //depot/projects/scottl-camlock/src/sys/security/mac/mac_priv.c#2 integrate .. //depot/projects/scottl-camlock/src/sys/security/mac/mac_process.c#6 integrate .. //depot/projects/scottl-camlock/src/sys/security/mac/mac_socket.c#5 integrate .. //depot/projects/scottl-camlock/src/sys/security/mac/mac_syscalls.c#1 branch .. //depot/projects/scottl-camlock/src/sys/security/mac/mac_system.c#6 integrate .. //depot/projects/scottl-camlock/src/sys/security/mac/mac_sysv_msg.c#4 integrate .. //depot/projects/scottl-camlock/src/sys/security/mac/mac_sysv_sem.c#4 integrate .. //depot/projects/scottl-camlock/src/sys/security/mac/mac_sysv_shm.c#3 integrate .. //depot/projects/scottl-camlock/src/sys/security/mac/mac_vfs.c#9 integrate .. //depot/projects/scottl-camlock/src/sys/security/mac_biba/mac_biba.c#10 integrate .. //depot/projects/scottl-camlock/src/sys/security/mac_bsdextended/mac_bsdextended.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/security/mac_ifoff/mac_ifoff.c#2 integrate .. //depot/projects/scottl-camlock/src/sys/security/mac_lomac/mac_lomac.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/security/mac_mls/mac_mls.c#10 integrate .. //depot/projects/scottl-camlock/src/sys/security/mac_none/mac_none.c#3 integrate .. //depot/projects/scottl-camlock/src/sys/security/mac_partition/mac_partition.c#4 integrate .. //depot/projects/scottl-camlock/src/sys/security/mac_portacl/mac_portacl.c#7 integrate .. //depot/projects/scottl-camlock/src/sys/security/mac_seeotheruids/mac_seeotheruids.c#5 integrate .. //depot/projects/scottl-camlock/src/sys/security/mac_stub/mac_stub.c#7 integrate .. //depot/projects/scottl-camlock/src/sys/security/mac_test/mac_test.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/sparc64/creator/creator.h#4 delete .. //depot/projects/scottl-camlock/src/sys/sparc64/creator/creator_upa.c#5 delete .. //depot/projects/scottl-camlock/src/sys/sparc64/include/bus.h#7 integrate .. //depot/projects/scottl-camlock/src/sys/sparc64/include/ofw_nexus.h#1 branch .. //depot/projects/scottl-camlock/src/sys/sparc64/include/param.h#4 integrate .. //depot/projects/scottl-camlock/src/sys/sparc64/include/reloc.h#3 integrate .. //depot/projects/scottl-camlock/src/sys/sparc64/include/setjmp.h#2 integrate .. //depot/projects/scottl-camlock/src/sys/sparc64/isa/isa.c#6 integrate .. //depot/projects/scottl-camlock/src/sys/sparc64/pci/ofw_pci_if.m#4 integrate .. //depot/projects/scottl-camlock/src/sys/sparc64/pci/ofw_pcibus.c#6 integrate .. //depot/projects/scottl-camlock/src/sys/sparc64/pci/psycho.c#7 integrate .. //depot/projects/scottl-camlock/src/sys/sparc64/pci/psychoreg.h#5 integrate .. //depot/projects/scottl-camlock/src/sys/sparc64/sbus/sbus.c#9 integrate .. //depot/projects/scottl-camlock/src/sys/sparc64/sparc64/elf_machdep.c#5 integrate .. //depot/projects/scottl-camlock/src/sys/sparc64/sparc64/genassym.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/sparc64/sparc64/machdep.c#10 integrate .. //depot/projects/scottl-camlock/src/sys/sparc64/sparc64/ofw_machdep.c#5 integrate .. //depot/projects/scottl-camlock/src/sys/sparc64/sparc64/upa.c#1 branch .. //depot/projects/scottl-camlock/src/sys/sun4v/conf/GENERIC#3 integrate .. //depot/projects/scottl-camlock/src/sys/sun4v/include/bus.h#2 integrate .. //depot/projects/scottl-camlock/src/sys/sun4v/include/cddl/mdesc.h#2 integrate .. //depot/projects/scottl-camlock/src/sys/sun4v/include/pcpu.h#3 integrate .. //depot/projects/scottl-camlock/src/sys/sun4v/include/reloc.h#2 integrate .. //depot/projects/scottl-camlock/src/sys/sun4v/include/setjmp.h#2 integrate .. //depot/projects/scottl-camlock/src/sys/sun4v/include/smp.h#3 integrate .. //depot/projects/scottl-camlock/src/sys/sun4v/include/trap.h#3 integrate .. //depot/projects/scottl-camlock/src/sys/sun4v/include/tsb.h#3 integrate .. //depot/projects/scottl-camlock/src/sys/sun4v/mdesc/mdesc_init.c#3 integrate .. //depot/projects/scottl-camlock/src/sys/sun4v/mdesc/mdesc_vdevfindnode.c#1 branch .. //depot/projects/scottl-camlock/src/sys/sun4v/mdesc/mdesc_vdevfindval.c#2 integrate .. //depot/projects/scottl-camlock/src/sys/sun4v/sun4v/exception.S#3 integrate .. //depot/projects/scottl-camlock/src/sys/sun4v/sun4v/hcall.S#3 integrate .. //depot/projects/scottl-camlock/src/sys/sun4v/sun4v/hv_pci.c#3 integrate .. //depot/projects/scottl-camlock/src/sys/sun4v/sun4v/interrupt.S#3 integrate .. //depot/projects/scottl-camlock/src/sys/sun4v/sun4v/machdep.c#3 integrate .. //depot/projects/scottl-camlock/src/sys/sun4v/sun4v/mp_machdep.c#3 integrate .. //depot/projects/scottl-camlock/src/sys/sun4v/sun4v/pmap.c#3 integrate .. //depot/projects/scottl-camlock/src/sys/sun4v/sun4v/tick.c#2 integrate .. //depot/projects/scottl-camlock/src/sys/sun4v/sun4v/trap.c#3 integrate .. //depot/projects/scottl-camlock/src/sys/sun4v/sun4v/tsb.c#3 integrate .. //depot/projects/scottl-camlock/src/sys/sun4v/sun4v/tte.c#3 integrate .. //depot/projects/scottl-camlock/src/sys/sun4v/sun4v/tte_hash.c#3 integrate .. //depot/projects/scottl-camlock/src/sys/sun4v/sun4v/uio_machdep.c#2 integrate .. //depot/projects/scottl-camlock/src/sys/sun4v/sun4v/vm_machdep.c#3 integrate .. //depot/projects/scottl-camlock/src/sys/sun4v/sun4v/vnex.c#3 integrate .. //depot/projects/scottl-camlock/src/sys/sun4v/sun4v/wbuf.S#3 integrate .. //depot/projects/scottl-camlock/src/sys/sys/copyright.h#5 integrate .. //depot/projects/scottl-camlock/src/sys/sys/file.h#6 integrate .. //depot/projects/scottl-camlock/src/sys/sys/interrupt.h#7 integrate .. //depot/projects/scottl-camlock/src/sys/sys/lock_profile.h#2 integrate .. //depot/projects/scottl-camlock/src/sys/sys/mac_policy.h#10 delete .. //depot/projects/scottl-camlock/src/sys/sys/mount.h#12 integrate .. //depot/projects/scottl-camlock/src/sys/sys/mouse.h#5 integrate .. //depot/projects/scottl-camlock/src/sys/sys/mutex.h#9 integrate .. //depot/projects/scottl-camlock/src/sys/sys/param.h#12 integrate .. //depot/projects/scottl-camlock/src/sys/sys/pcpu.h#7 integrate .. //depot/projects/scottl-camlock/src/sys/sys/priority.h#3 integrate .. //depot/projects/scottl-camlock/src/sys/sys/proc.h#13 integrate .. //depot/projects/scottl-camlock/src/sys/sys/rtprio.h#4 integrate .. //depot/projects/scottl-camlock/src/sys/sys/runq.h#3 integrate .. //depot/projects/scottl-camlock/src/sys/sys/sched.h#11 integrate .. //depot/projects/scottl-camlock/src/sys/sys/sleepqueue.h#6 integrate .. //depot/projects/scottl-camlock/src/sys/sys/syscallsubr.h#10 integrate .. //depot/projects/scottl-camlock/src/sys/sys/sysent.h#6 integrate .. //depot/projects/scottl-camlock/src/sys/sys/systm.h#12 integrate .. //depot/projects/scottl-camlock/src/sys/sys/uio.h#6 integrate .. //depot/projects/scottl-camlock/src/sys/sys/umtx.h#10 integrate .. //depot/projects/scottl-camlock/src/sys/sys/unpcb.h#6 integrate .. //depot/projects/scottl-camlock/src/sys/sys/vnode.h#10 integrate .. //depot/projects/scottl-camlock/src/sys/sys/watchdog.h#2 integrate .. //depot/projects/scottl-camlock/src/sys/ufs/ffs/ffs_alloc.c#9 integrate .. //depot/projects/scottl-camlock/src/sys/ufs/ufs/ufs_acl.c#3 integrate .. //depot/projects/scottl-camlock/src/sys/ufs/ufs/ufs_vnops.c#11 integrate .. //depot/projects/scottl-camlock/src/sys/vm/swap_pager.c#12 integrate .. //depot/projects/scottl-camlock/src/sys/vm/uma.h#6 integrate .. //depot/projects/scottl-camlock/src/sys/vm/uma_core.c#10 integrate .. //depot/projects/scottl-camlock/src/sys/vm/vm_glue.c#9 integrate .. //depot/projects/scottl-camlock/src/sys/vm/vm_kern.c#6 integrate .. //depot/projects/scottl-camlock/src/sys/vm/vm_object.c#9 integrate .. //depot/projects/scottl-camlock/src/sys/vm/vm_page.c#13 integrate .. //depot/projects/scottl-camlock/src/sys/vm/vm_pageout.c#9 integrate .. //depot/projects/scottl-camlock/src/sys/vm/vm_zeroidle.c#8 integrate Differences ... ==== //depot/projects/scottl-camlock/src/sbin/camcontrol/camcontrol.c#4 (text+ko) ==== @@ -27,7 +27,7 @@ */ #include -__FBSDID("$FreeBSD: src/sbin/camcontrol/camcontrol.c,v 1.55 2006/11/02 00:54:32 mjacob Exp $"); +__FBSDID("$FreeBSD: src/sbin/camcontrol/camcontrol.c,v 1.56 2006/12/03 07:11:55 mjacob Exp $"); #include #include @@ -955,10 +955,9 @@ struct ccb_trans_settings_scsi *scsi = &ccb->cts.proto_specific.scsi; if (scsi->valid & CTS_SCSI_VALID_TQ) { - if (scsi->flags & CTS_SCSI_FLAGS_TAG_ENB) + if (scsi->flags & CTS_SCSI_FLAGS_TAG_ENB) { fprintf(stdout, ", Command Queueing Enabled"); - else - fprintf(stdout, ", Command Queueing Supported"); + } } } ==== //depot/projects/scottl-camlock/src/sys/amd64/amd64/apic_vector.S#8 (text+ko) ==== @@ -28,7 +28,7 @@ * SUCH DAMAGE. * * from: vector.s, 386BSD 0.1 unknown origin - * $FreeBSD: src/sys/amd64/amd64/apic_vector.S,v 1.109 2006/05/01 21:36:46 jhb Exp $ + * $FreeBSD: src/sys/amd64/amd64/apic_vector.S,v 1.110 2006/12/17 06:48:39 kmacy Exp $ */ /* @@ -60,6 +60,7 @@ jz 2f ; \ addl $(32 * index),%eax ; \ 1: ; \ + movq %rsp, %rsi ; \ movl %eax, %edi ; /* pass the IRQ */ \ call lapic_handle_intr ; \ MEXITCOUNT ; \ @@ -98,7 +99,7 @@ IDTVEC(timerint) PUSH_FRAME FAKE_MCOUNT(TF_RIP(%rsp)) - + movq %rsp, %rdi call lapic_handle_timer MEXITCOUNT jmp doreti ==== //depot/projects/scottl-camlock/src/sys/amd64/amd64/cpu_switch.S#5 (text+ko) ==== @@ -30,7 +30,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/amd64/amd64/cpu_switch.S,v 1.154 2005/10/17 23:10:31 davidxu Exp $ + * $FreeBSD: src/sys/amd64/amd64/cpu_switch.S,v 1.155 2006/12/20 04:40:38 davidxu Exp $ */ #include @@ -206,6 +206,11 @@ movq %rbx, (%rax) movq %rbx, PCPU(RSP0) + movl TD_TID(%rsi), %eax + movq %r8, PCPU(CURPCB) + movl %eax, PCPU(CURTID) + movq %rsi, PCPU(CURTHREAD) /* into next thread */ + /* Restore context. */ movq PCB_RBX(%r8),%rbx movq PCB_RSP(%r8),%rsp @@ -217,9 +222,6 @@ movq PCB_RIP(%r8),%rax movq %rax,(%rsp) - movq %r8, PCPU(CURPCB) - movq %rsi, PCPU(CURTHREAD) /* into next thread */ - /* Test if debug registers should be restored. */ testl $PCB_DBREGS,PCB_FLAGS(%r8) jz 1f ==== //depot/projects/scottl-camlock/src/sys/amd64/amd64/exception.S#6 (text+ko) ==== @@ -27,7 +27,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/amd64/amd64/exception.S,v 1.127 2005/08/27 16:03:40 jkoshy Exp $ + * $FreeBSD: src/sys/amd64/amd64/exception.S,v 1.129 2006/12/23 03:30:50 davidxu Exp $ */ #include "opt_atpic.h" @@ -165,6 +165,7 @@ .globl calltrap .type calltrap,@function calltrap: + movq %rsp, %rdi call trap MEXITCOUNT jmp doreti /* Handle any pending ASTs */ @@ -267,6 +268,7 @@ movq %r14,TF_R14(%rsp) /* C preserved */ movq %r15,TF_R15(%rsp) /* C preserved */ FAKE_MCOUNT(TF_RIP(%rsp)) + movq %rsp, %rdi call syscall movq PCPU(CURPCB),%rax testq $PCB_FULLCTX,PCB_FLAGS(%rax) @@ -363,6 +365,7 @@ /* Note: this label is also used by ddb and gdb: */ nmi_calltrap: FAKE_MCOUNT(TF_RIP(%rsp)) + movq %rsp, %rdi call trap MEXITCOUNT testl %ebx,%ebx ==== //depot/projects/scottl-camlock/src/sys/amd64/amd64/genassym.c#6 (text+ko) ==== @@ -33,7 +33,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/genassym.c,v 1.158 2006/11/01 04:54:49 jb Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/genassym.c,v 1.160 2006/12/20 04:40:38 davidxu Exp $"); #include "opt_compat.h" #include "opt_kstack_pages.h" @@ -79,6 +79,7 @@ ASSYM(TD_FLAGS, offsetof(struct thread, td_flags)); ASSYM(TD_PCB, offsetof(struct thread, td_pcb)); ASSYM(TD_PROC, offsetof(struct thread, td_proc)); +ASSYM(TD_TID, offsetof(struct thread, td_tid)); ASSYM(TDF_ASTPENDING, TDF_ASTPENDING); ASSYM(TDF_NEEDRESCHED, TDF_NEEDRESCHED); @@ -185,12 +186,12 @@ ASSYM(PC_FPCURTHREAD, offsetof(struct pcpu, pc_fpcurthread)); ASSYM(PC_IDLETHREAD, offsetof(struct pcpu, pc_idlethread)); ASSYM(PC_CURPCB, offsetof(struct pcpu, pc_curpcb)); -ASSYM(PC_CONS_BUFR, offsetof(struct pcpu, pc_cons_bufr)); ASSYM(PC_CPUID, offsetof(struct pcpu, pc_cpuid)); ASSYM(PC_SCRATCH_RSP, offsetof(struct pcpu, pc_scratch_rsp)); ASSYM(PC_CURPMAP, offsetof(struct pcpu, pc_curpmap)); ASSYM(PC_TSSP, offsetof(struct pcpu, pc_tssp)); ASSYM(PC_RSP0, offsetof(struct pcpu, pc_rsp0)); +ASSYM(PC_CURTID, offsetof(struct pcpu, pc_curtid)); ASSYM(LA_VER, offsetof(struct LAPIC, version)); ASSYM(LA_TPR, offsetof(struct LAPIC, tpr)); ==== //depot/projects/scottl-camlock/src/sys/amd64/amd64/identcpu.c#8 (text+ko) ==== @@ -39,7 +39,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/identcpu.c,v 1.148 2006/08/01 01:23:39 obrien Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/identcpu.c,v 1.149 2007/01/09 19:23:21 jkim Exp $"); #include "opt_cpu.h" @@ -228,8 +228,8 @@ "\007" "\010EST" /* Enhanced SpeedStep */ "\011TM2" /* Thermal Monitor 2 */ - "\012" - "\013CNTX-ID" /* L1 context ID available */ + "\012SSSE3" /* SSSE3 */ + "\013CNXT-ID" /* L1 context ID available */ "\014" "\015" "\016CX16" /* CMPXCHG16B Instruction */ ==== //depot/projects/scottl-camlock/src/sys/amd64/amd64/intr_machdep.c#11 (text+ko) ==== @@ -26,7 +26,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Thu Jan 18 19:03:35 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id CC51B16A4CA; Thu, 18 Jan 2007 19:03:35 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id A3D6016A4A0 for ; Thu, 18 Jan 2007 19:03:35 +0000 (UTC) (envelope-from jkim@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 7A67913C4BD for ; Thu, 18 Jan 2007 19:03:35 +0000 (UTC) (envelope-from jkim@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0IJ3ZSR094387 for ; Thu, 18 Jan 2007 19:03:35 GMT (envelope-from jkim@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0IJ3ZSu094383 for perforce@freebsd.org; Thu, 18 Jan 2007 19:03:35 GMT (envelope-from jkim@freebsd.org) Date: Thu, 18 Jan 2007 19:03:35 GMT Message-Id: <200701181903.l0IJ3ZSu094383@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to jkim@freebsd.org using -f From: Jung-uk Kim To: Perforce Change Reviews Cc: Subject: PERFORCE change 113130 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 18 Jan 2007 19:03:36 -0000 http://perforce.freebsd.org/chv.cgi?CH=113130 Change 113130 by jkim@jkim_hammer on 2007/01/18 19:02:51 - Use global 'version' instead of sysctl mib to construct build date. - Construct builder string from 'version' instead of fake one. Affected files ... .. //depot/projects/linuxolator/src/sys/compat/linprocfs/linprocfs.c#9 edit Differences ... ==== //depot/projects/linuxolator/src/sys/compat/linprocfs/linprocfs.c#9 (text+ko) ==== @@ -422,28 +422,44 @@ linprocfs_osbuild(struct thread *td, struct sbuf *sb) { char osbuild[256]; - int kern_ver[2]; - size_t size; char *cp1, *cp2; - cp1 = NULL; - kern_ver[0] = CTL_KERN; - kern_ver[1] = KERN_VERSION; - osbuild[0] = '\0'; - size = sizeof(osbuild); - if (kernel_sysctl(td, kern_ver, 2, &osbuild, &size, 0, 0, 0, 0) == 0) { - cp1 = strstr(osbuild, "\n"); - cp2 = strstr(osbuild, ":"); - if (cp1 && cp2) { - *cp1 = *cp2 = '\0'; - cp1 = strstr(osbuild, "#"); - } else - cp1 = NULL; - } + strncpy(osbuild, version, 256); + osbuild[255] = '\0'; + cp1 = strstr(osbuild, "\n"); + cp2 = strstr(osbuild, ":"); + if (cp1 && cp2) { + *cp1 = *cp2 = '\0'; + cp1 = strstr(osbuild, "#"); + } else + cp1 = NULL; if (cp1) sbuf_printf(sb, "%s%s", cp1, cp2 + 1); else - sbuf_printf(sb, "#4 Sun Dec 18 04:30:00 CET 1977"); + sbuf_cat(sb, "#4 Sun Dec 18 04:30:00 CET 1977"); +} + +/* + * Get OS builder + */ +static void +linprocfs_osbuilder(struct thread *td, struct sbuf *sb) +{ + char builder[256]; + char *cp; + + cp = strstr(version, "\n "); + if (cp) { + strncpy(builder, cp + 5, 256); + builder[255] = '\0'; + cp = strstr(builder, ":"); + if (cp) + *cp = '\0'; + } + if (cp) + sbuf_cat(sb, builder); + else + sbuf_cat(sb, "des@freebsd.org"); } /* @@ -457,8 +473,9 @@ linux_get_osname(td, osname); linux_get_osrelease(td, osrelease); - sbuf_printf(sb, "%s version %s (des@freebsd.org) (gcc version " - __VERSION__ ") ", osname, osrelease); + sbuf_printf(sb, "%s version %s (", osname, osrelease); + linprocfs_osbuilder(td, sb); + sbuf_cat(sb, ") (gcc version " __VERSION__ ") "); linprocfs_osbuild(td, sb); sbuf_cat(sb, "\n"); From owner-p4-projects@FreeBSD.ORG Thu Jan 18 19:10:45 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id C6D5D16A415; Thu, 18 Jan 2007 19:10:45 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 87F8516A407 for ; Thu, 18 Jan 2007 19:10:45 +0000 (UTC) (envelope-from jkim@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 6047513C44B for ; Thu, 18 Jan 2007 19:10:45 +0000 (UTC) (envelope-from jkim@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0IJAjjF095018 for ; Thu, 18 Jan 2007 19:10:45 GMT (envelope-from jkim@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0IJAjoQ095015 for perforce@freebsd.org; Thu, 18 Jan 2007 19:10:45 GMT (envelope-from jkim@freebsd.org) Date: Thu, 18 Jan 2007 19:10:45 GMT Message-Id: <200701181910.l0IJAjoQ095015@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to jkim@freebsd.org using -f From: Jung-uk Kim To: Perforce Change Reviews Cc: Subject: PERFORCE change 113132 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 18 Jan 2007 19:10:46 -0000 http://perforce.freebsd.org/chv.cgi?CH=113132 Change 113132 by jkim@jkim_hammer on 2007/01/18 19:10:07 Disable build date construction per des's request. Affected files ... .. //depot/projects/linuxolator/src/sys/compat/linprocfs/linprocfs.c#10 edit Differences ... ==== //depot/projects/linuxolator/src/sys/compat/linprocfs/linprocfs.c#10 (text+ko) ==== @@ -421,6 +421,7 @@ static void linprocfs_osbuild(struct thread *td, struct sbuf *sb) { +#if 0 char osbuild[256]; char *cp1, *cp2; @@ -436,6 +437,7 @@ if (cp1) sbuf_printf(sb, "%s%s", cp1, cp2 + 1); else +#endif sbuf_cat(sb, "#4 Sun Dec 18 04:30:00 CET 1977"); } From owner-p4-projects@FreeBSD.ORG Thu Jan 18 21:46:54 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 92F1216A417; Thu, 18 Jan 2007 21:46:54 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 6517D16A412 for ; Thu, 18 Jan 2007 21:46:54 +0000 (UTC) (envelope-from mjacob@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 5621C13C45A for ; Thu, 18 Jan 2007 21:46:54 +0000 (UTC) (envelope-from mjacob@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0ILksuu068962 for ; Thu, 18 Jan 2007 21:46:54 GMT (envelope-from mjacob@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0ILksCP068959 for perforce@freebsd.org; Thu, 18 Jan 2007 21:46:54 GMT (envelope-from mjacob@freebsd.org) Date: Thu, 18 Jan 2007 21:46:54 GMT Message-Id: <200701182146.l0ILksCP068959@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to mjacob@freebsd.org using -f From: Matt Jacob To: Perforce Change Reviews Cc: Subject: PERFORCE change 113140 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 18 Jan 2007 21:46:54 -0000 http://perforce.freebsd.org/chv.cgi?CH=113140 Change 113140 by mjacob@mjexp on 2007/01/18 21:45:59 Fix macro. Affected files ... .. //depot/projects/mjexp/sys/dev/isp/isp_freebsd.c#9 edit Differences ... ==== //depot/projects/mjexp/sys/dev/isp/isp_freebsd.c#9 (text+ko) ==== @@ -1671,7 +1671,7 @@ * Construct a tag 'id' based upon tag value (which may be 0..255) * and the handle (which we have to preserve). */ - AT_MAKE_TAGID(atiop->tag_id, device_get_unit(isp->isp_dev), aep); + AT_MAKE_TAGID(atiop->tag_id, bus, device_get_unit(isp->isp_dev), aep); if (aep->at_flags & AT_TQAE) { atiop->tag_action = aep->at_tag_type; atiop->ccb_h.status |= CAM_TAG_ACTION_VALID; From owner-p4-projects@FreeBSD.ORG Thu Jan 18 22:14:57 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 6FF4416A47E; Thu, 18 Jan 2007 22:14:57 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id E4BE416A416 for ; Thu, 18 Jan 2007 22:14:56 +0000 (UTC) (envelope-from mjacob@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id D33CC13C44C for ; Thu, 18 Jan 2007 22:14:56 +0000 (UTC) (envelope-from mjacob@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0IMEuYF076419 for ; Thu, 18 Jan 2007 22:14:56 GMT (envelope-from mjacob@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0IMEVcV076407 for perforce@freebsd.org; Thu, 18 Jan 2007 22:14:31 GMT (envelope-from mjacob@freebsd.org) Date: Thu, 18 Jan 2007 22:14:31 GMT Message-Id: <200701182214.l0IMEVcV076407@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to mjacob@freebsd.org using -f From: Matt Jacob To: Perforce Change Reviews Cc: Subject: PERFORCE change 113144 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 18 Jan 2007 22:14:57 -0000 http://perforce.freebsd.org/chv.cgi?CH=113144 Change 113144 by mjacob@mjexp on 2007/01/18 22:14:12 IFC Affected files ... .. //depot/projects/mjexp/bin/sh/exec.c#2 integrate .. //depot/projects/mjexp/etc/rc.d/jail#3 integrate .. //depot/projects/mjexp/etc/rc.d/power_profile#2 integrate .. //depot/projects/mjexp/games/fortune/datfiles/fortunes#9 integrate .. //depot/projects/mjexp/lib/libarchive/COPYING#2 integrate .. //depot/projects/mjexp/lib/libarchive/archive.h.in#5 integrate .. //depot/projects/mjexp/lib/libarchive/archive_check_magic.c#3 integrate .. //depot/projects/mjexp/lib/libarchive/archive_entry.3#2 integrate .. //depot/projects/mjexp/lib/libarchive/archive_entry.c#3 integrate .. //depot/projects/mjexp/lib/libarchive/archive_entry.h#2 integrate .. //depot/projects/mjexp/lib/libarchive/archive_platform.h#4 integrate .. //depot/projects/mjexp/lib/libarchive/archive_private.h#5 integrate .. //depot/projects/mjexp/lib/libarchive/archive_read.3#4 integrate .. //depot/projects/mjexp/lib/libarchive/archive_read.c#5 integrate .. //depot/projects/mjexp/lib/libarchive/archive_read_data_into_buffer.c#3 integrate .. //depot/projects/mjexp/lib/libarchive/archive_read_data_into_fd.c#3 integrate .. //depot/projects/mjexp/lib/libarchive/archive_read_extract.c#4 integrate .. //depot/projects/mjexp/lib/libarchive/archive_read_open_fd.c#4 integrate .. //depot/projects/mjexp/lib/libarchive/archive_read_open_file.c#4 integrate .. //depot/projects/mjexp/lib/libarchive/archive_read_open_filename.c#3 integrate .. //depot/projects/mjexp/lib/libarchive/archive_read_open_memory.c#3 integrate .. //depot/projects/mjexp/lib/libarchive/archive_read_support_compression_all.c#2 integrate .. //depot/projects/mjexp/lib/libarchive/archive_read_support_compression_bzip2.c#4 integrate .. //depot/projects/mjexp/lib/libarchive/archive_read_support_compression_compress.c#3 integrate .. //depot/projects/mjexp/lib/libarchive/archive_read_support_compression_gzip.c#3 integrate .. //depot/projects/mjexp/lib/libarchive/archive_read_support_compression_none.c#5 integrate .. //depot/projects/mjexp/lib/libarchive/archive_read_support_format_all.c#2 integrate .. //depot/projects/mjexp/lib/libarchive/archive_read_support_format_cpio.c#4 integrate .. //depot/projects/mjexp/lib/libarchive/archive_read_support_format_iso9660.c#4 integrate .. //depot/projects/mjexp/lib/libarchive/archive_read_support_format_tar.c#4 integrate .. //depot/projects/mjexp/lib/libarchive/archive_read_support_format_zip.c#3 integrate .. //depot/projects/mjexp/lib/libarchive/archive_string.c#3 integrate .. //depot/projects/mjexp/lib/libarchive/archive_string.h#3 integrate .. //depot/projects/mjexp/lib/libarchive/archive_string_sprintf.c#2 integrate .. //depot/projects/mjexp/lib/libarchive/archive_util.3#2 integrate .. //depot/projects/mjexp/lib/libarchive/archive_util.c#3 integrate .. //depot/projects/mjexp/lib/libarchive/archive_write.3#4 integrate .. //depot/projects/mjexp/lib/libarchive/archive_write.c#3 integrate .. //depot/projects/mjexp/lib/libarchive/archive_write_open_fd.c#3 integrate .. //depot/projects/mjexp/lib/libarchive/archive_write_open_file.c#3 integrate .. //depot/projects/mjexp/lib/libarchive/archive_write_open_filename.c#3 integrate .. //depot/projects/mjexp/lib/libarchive/archive_write_open_memory.c#2 integrate .. //depot/projects/mjexp/lib/libarchive/archive_write_set_compression_bzip2.c#3 integrate .. //depot/projects/mjexp/lib/libarchive/archive_write_set_compression_gzip.c#3 integrate .. //depot/projects/mjexp/lib/libarchive/archive_write_set_compression_none.c#3 integrate .. //depot/projects/mjexp/lib/libarchive/archive_write_set_format.c#3 integrate .. //depot/projects/mjexp/lib/libarchive/archive_write_set_format_by_name.c#3 integrate .. //depot/projects/mjexp/lib/libarchive/archive_write_set_format_cpio.c#3 integrate .. //depot/projects/mjexp/lib/libarchive/archive_write_set_format_pax.c#3 integrate .. //depot/projects/mjexp/lib/libarchive/archive_write_set_format_shar.c#3 integrate .. //depot/projects/mjexp/lib/libarchive/archive_write_set_format_ustar.c#3 integrate .. //depot/projects/mjexp/lib/libarchive/config_freebsd.h#2 integrate .. //depot/projects/mjexp/lib/libarchive/libarchive-formats.5#2 integrate .. //depot/projects/mjexp/lib/libarchive/libarchive.3#4 integrate .. //depot/projects/mjexp/lib/libarchive/tar.5#2 integrate .. //depot/projects/mjexp/lib/libc/amd64/SYS.h#2 integrate .. //depot/projects/mjexp/lib/libc/amd64/gen/_setjmp.S#2 integrate .. //depot/projects/mjexp/lib/libc/amd64/gen/ldexp.c#2 integrate .. //depot/projects/mjexp/lib/libc/amd64/gen/modf.S#2 integrate .. //depot/projects/mjexp/lib/libc/amd64/gen/setjmp.S#2 integrate .. //depot/projects/mjexp/lib/libc/amd64/gen/sigsetjmp.S#2 integrate .. //depot/projects/mjexp/lib/libc/amd64/sys/brk.S#2 integrate .. //depot/projects/mjexp/lib/libc/amd64/sys/cerror.S#2 integrate .. //depot/projects/mjexp/lib/libc/amd64/sys/exect.S#2 integrate .. //depot/projects/mjexp/lib/libc/amd64/sys/pipe.S#2 integrate .. //depot/projects/mjexp/lib/libc/amd64/sys/ptrace.S#2 integrate .. //depot/projects/mjexp/lib/libc/amd64/sys/reboot.S#2 integrate .. //depot/projects/mjexp/lib/libc/amd64/sys/sbrk.S#2 integrate .. //depot/projects/mjexp/lib/libc/amd64/sys/setlogin.S#2 integrate .. //depot/projects/mjexp/lib/libc/amd64/sys/sigreturn.S#2 integrate .. //depot/projects/mjexp/lib/libc/amd64/sys/vfork.S#2 integrate .. //depot/projects/mjexp/lib/libc/compat-43/creat.2#2 integrate .. //depot/projects/mjexp/lib/libc/compat-43/creat.c#2 integrate .. //depot/projects/mjexp/lib/libc/compat-43/gethostid.3#2 integrate .. //depot/projects/mjexp/lib/libc/compat-43/gethostid.c#2 integrate .. //depot/projects/mjexp/lib/libc/compat-43/getwd.c#2 integrate .. //depot/projects/mjexp/lib/libc/compat-43/killpg.2#3 integrate .. //depot/projects/mjexp/lib/libc/compat-43/killpg.c#2 integrate .. //depot/projects/mjexp/lib/libc/compat-43/sethostid.c#2 integrate .. //depot/projects/mjexp/lib/libc/compat-43/setpgrp.c#2 integrate .. //depot/projects/mjexp/lib/libc/compat-43/setrgid.c#2 integrate .. //depot/projects/mjexp/lib/libc/compat-43/setruid.3#2 integrate .. //depot/projects/mjexp/lib/libc/compat-43/setruid.c#2 integrate .. //depot/projects/mjexp/lib/libc/compat-43/sigcompat.c#2 integrate .. //depot/projects/mjexp/lib/libc/compat-43/sigpause.2#2 integrate .. //depot/projects/mjexp/lib/libc/compat-43/sigsetmask.2#2 integrate .. //depot/projects/mjexp/lib/libc/compat-43/sigvec.2#2 integrate .. //depot/projects/mjexp/lib/libc/db/btree/bt_close.c#2 integrate .. //depot/projects/mjexp/lib/libc/db/btree/bt_conv.c#2 integrate .. //depot/projects/mjexp/lib/libc/db/btree/bt_debug.c#2 integrate .. //depot/projects/mjexp/lib/libc/db/btree/bt_delete.c#2 integrate .. //depot/projects/mjexp/lib/libc/db/btree/bt_get.c#2 integrate .. //depot/projects/mjexp/lib/libc/db/btree/bt_open.c#2 integrate .. //depot/projects/mjexp/lib/libc/db/btree/bt_overflow.c#2 integrate .. //depot/projects/mjexp/lib/libc/db/btree/bt_page.c#2 integrate .. //depot/projects/mjexp/lib/libc/db/btree/bt_put.c#2 integrate .. //depot/projects/mjexp/lib/libc/db/btree/bt_search.c#2 integrate .. //depot/projects/mjexp/lib/libc/db/btree/bt_seq.c#2 integrate .. //depot/projects/mjexp/lib/libc/db/btree/bt_split.c#2 integrate .. //depot/projects/mjexp/lib/libc/db/btree/bt_utils.c#2 integrate .. //depot/projects/mjexp/lib/libc/db/btree/btree.h#2 integrate .. //depot/projects/mjexp/lib/libc/db/btree/extern.h#2 integrate .. //depot/projects/mjexp/lib/libc/db/db/db.c#2 integrate .. //depot/projects/mjexp/lib/libc/db/hash/extern.h#2 integrate .. //depot/projects/mjexp/lib/libc/db/hash/hash.c#2 integrate .. //depot/projects/mjexp/lib/libc/db/hash/hash.h#2 integrate .. //depot/projects/mjexp/lib/libc/db/hash/hash_bigkey.c#2 integrate .. //depot/projects/mjexp/lib/libc/db/hash/hash_buf.c#2 integrate .. //depot/projects/mjexp/lib/libc/db/hash/hash_func.c#2 integrate .. //depot/projects/mjexp/lib/libc/db/hash/hash_log2.c#2 integrate .. //depot/projects/mjexp/lib/libc/db/hash/hash_page.c#2 integrate .. //depot/projects/mjexp/lib/libc/db/hash/ndbm.c#2 integrate .. //depot/projects/mjexp/lib/libc/db/hash/page.h#2 integrate .. //depot/projects/mjexp/lib/libc/db/man/btree.3#2 integrate .. //depot/projects/mjexp/lib/libc/db/man/dbopen.3#2 integrate .. //depot/projects/mjexp/lib/libc/db/man/hash.3#2 integrate .. //depot/projects/mjexp/lib/libc/db/man/mpool.3#2 integrate .. //depot/projects/mjexp/lib/libc/db/man/recno.3#2 integrate .. //depot/projects/mjexp/lib/libc/db/mpool/mpool.c#2 integrate .. //depot/projects/mjexp/lib/libc/db/recno/extern.h#2 integrate .. //depot/projects/mjexp/lib/libc/db/recno/rec_close.c#2 integrate .. //depot/projects/mjexp/lib/libc/db/recno/rec_delete.c#2 integrate .. //depot/projects/mjexp/lib/libc/db/recno/rec_get.c#2 integrate .. //depot/projects/mjexp/lib/libc/db/recno/rec_open.c#2 integrate .. //depot/projects/mjexp/lib/libc/db/recno/rec_put.c#2 integrate .. //depot/projects/mjexp/lib/libc/db/recno/rec_search.c#2 integrate .. //depot/projects/mjexp/lib/libc/db/recno/rec_seq.c#2 integrate .. //depot/projects/mjexp/lib/libc/db/recno/rec_utils.c#2 integrate .. //depot/projects/mjexp/lib/libc/db/recno/recno.h#2 integrate .. //depot/projects/mjexp/lib/libc/db/test/btree.tests/main.c#2 integrate .. //depot/projects/mjexp/lib/libc/db/test/dbtest.c#2 integrate .. //depot/projects/mjexp/lib/libc/db/test/hash.tests/driver2.c#2 integrate .. //depot/projects/mjexp/lib/libc/db/test/hash.tests/tcreat3.c#2 integrate .. //depot/projects/mjexp/lib/libc/db/test/hash.tests/tdel.c#2 integrate .. //depot/projects/mjexp/lib/libc/db/test/hash.tests/thash4.c#2 integrate .. //depot/projects/mjexp/lib/libc/db/test/hash.tests/tread2.c#2 integrate .. //depot/projects/mjexp/lib/libc/db/test/hash.tests/tseq.c#2 integrate .. //depot/projects/mjexp/lib/libc/db/test/hash.tests/tverify.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/__xuname.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/_spinlock_stub.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/alarm.3#2 integrate .. //depot/projects/mjexp/lib/libc/gen/alarm.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/assert.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/clock.3#2 integrate .. //depot/projects/mjexp/lib/libc/gen/clock.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/closedir.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/confstr.3#3 integrate .. //depot/projects/mjexp/lib/libc/gen/confstr.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/crypt.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/ctermid.3#2 integrate .. //depot/projects/mjexp/lib/libc/gen/ctermid.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/daemon.3#2 integrate .. //depot/projects/mjexp/lib/libc/gen/daemon.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/devname.3#2 integrate .. //depot/projects/mjexp/lib/libc/gen/devname.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/directory.3#2 integrate .. //depot/projects/mjexp/lib/libc/gen/disklabel.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/err.3#3 integrate .. //depot/projects/mjexp/lib/libc/gen/err.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/errlst.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/exec.3#2 integrate .. //depot/projects/mjexp/lib/libc/gen/exec.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/fnmatch.3#2 integrate .. //depot/projects/mjexp/lib/libc/gen/fnmatch.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/frexp.3#2 integrate .. //depot/projects/mjexp/lib/libc/gen/fstab.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/fts.3#2 integrate .. //depot/projects/mjexp/lib/libc/gen/fts.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/getbootfile.3#2 integrate .. //depot/projects/mjexp/lib/libc/gen/getbootfile.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/getbsize.3#2 integrate .. //depot/projects/mjexp/lib/libc/gen/getbsize.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/getcap.3#2 integrate .. //depot/projects/mjexp/lib/libc/gen/getcap.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/getcwd.3#2 integrate .. //depot/projects/mjexp/lib/libc/gen/getcwd.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/getdiskbyname.3#2 integrate .. //depot/projects/mjexp/lib/libc/gen/getdomainname.3#2 integrate .. //depot/projects/mjexp/lib/libc/gen/getdomainname.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/getfsent.3#2 integrate .. //depot/projects/mjexp/lib/libc/gen/getgrent.3#2 integrate .. //depot/projects/mjexp/lib/libc/gen/getgrouplist.3#2 integrate .. //depot/projects/mjexp/lib/libc/gen/getgrouplist.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/gethostname.3#2 integrate .. //depot/projects/mjexp/lib/libc/gen/gethostname.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/getloadavg.3#2 integrate .. //depot/projects/mjexp/lib/libc/gen/getloadavg.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/getlogin.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/getmntinfo.3#2 integrate .. //depot/projects/mjexp/lib/libc/gen/getmntinfo.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/getnetgrent.3#2 integrate .. //depot/projects/mjexp/lib/libc/gen/getnetgrent.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/getosreldate.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/getpagesize.3#2 integrate .. //depot/projects/mjexp/lib/libc/gen/getpagesize.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/getpass.3#2 integrate .. //depot/projects/mjexp/lib/libc/gen/getpwent.3#2 integrate .. //depot/projects/mjexp/lib/libc/gen/getttyent.3#2 integrate .. //depot/projects/mjexp/lib/libc/gen/getttyent.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/getusershell.3#2 integrate .. //depot/projects/mjexp/lib/libc/gen/getusershell.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/getvfsbyname.3#2 integrate .. //depot/projects/mjexp/lib/libc/gen/getvfsbyname.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/glob.3#2 integrate .. //depot/projects/mjexp/lib/libc/gen/glob.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/initgroups.3#2 integrate .. //depot/projects/mjexp/lib/libc/gen/initgroups.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/isatty.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/ldexp.3#2 integrate .. //depot/projects/mjexp/lib/libc/gen/modf.3#2 integrate .. //depot/projects/mjexp/lib/libc/gen/nice.3#2 integrate .. //depot/projects/mjexp/lib/libc/gen/nice.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/nlist.3#2 integrate .. //depot/projects/mjexp/lib/libc/gen/nlist.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/opendir.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/pause.3#2 integrate .. //depot/projects/mjexp/lib/libc/gen/pause.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/popen.3#2 integrate .. //depot/projects/mjexp/lib/libc/gen/popen.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/psignal.3#2 integrate .. //depot/projects/mjexp/lib/libc/gen/psignal.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/pw_scan.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/pw_scan.h#2 integrate .. //depot/projects/mjexp/lib/libc/gen/pwcache.3#2 integrate .. //depot/projects/mjexp/lib/libc/gen/pwcache.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/raise.3#2 integrate .. //depot/projects/mjexp/lib/libc/gen/raise.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/readdir.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/rewinddir.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/scandir.3#2 integrate .. //depot/projects/mjexp/lib/libc/gen/scandir.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/seekdir.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/setdomainname.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/sethostname.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/setjmp.3#2 integrate .. //depot/projects/mjexp/lib/libc/gen/setjmperr.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/setmode.3#2 integrate .. //depot/projects/mjexp/lib/libc/gen/setmode.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/siginterrupt.3#2 integrate .. //depot/projects/mjexp/lib/libc/gen/siginterrupt.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/siglist.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/signal.3#2 integrate .. //depot/projects/mjexp/lib/libc/gen/signal.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/sigsetops.3#2 integrate .. //depot/projects/mjexp/lib/libc/gen/sigsetops.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/sleep.3#2 integrate .. //depot/projects/mjexp/lib/libc/gen/sleep.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/stringlist.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/strtofflags.3#2 integrate .. //depot/projects/mjexp/lib/libc/gen/strtofflags.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/sysconf.3#3 integrate .. //depot/projects/mjexp/lib/libc/gen/sysconf.c#3 integrate .. //depot/projects/mjexp/lib/libc/gen/sysctl.3#2 integrate .. //depot/projects/mjexp/lib/libc/gen/sysctl.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/syslog.3#2 integrate .. //depot/projects/mjexp/lib/libc/gen/syslog.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/tcgetpgrp.3#2 integrate .. //depot/projects/mjexp/lib/libc/gen/tcsendbreak.3#2 integrate .. //depot/projects/mjexp/lib/libc/gen/tcsetattr.3#2 integrate .. //depot/projects/mjexp/lib/libc/gen/tcsetpgrp.3#2 integrate .. //depot/projects/mjexp/lib/libc/gen/telldir.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/termios.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/time.3#2 integrate .. //depot/projects/mjexp/lib/libc/gen/time.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/times.3#2 integrate .. //depot/projects/mjexp/lib/libc/gen/times.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/timezone.3#2 integrate .. //depot/projects/mjexp/lib/libc/gen/timezone.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/ttyname.3#2 integrate .. //depot/projects/mjexp/lib/libc/gen/ttyname.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/ttyslot.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/tzset.3#2 integrate .. //depot/projects/mjexp/lib/libc/gen/ualarm.3#2 integrate .. //depot/projects/mjexp/lib/libc/gen/ualarm.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/uname.3#2 integrate .. //depot/projects/mjexp/lib/libc/gen/uname.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/unvis.3#2 integrate .. //depot/projects/mjexp/lib/libc/gen/unvis.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/usleep.3#2 integrate .. //depot/projects/mjexp/lib/libc/gen/usleep.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/utime.3#2 integrate .. //depot/projects/mjexp/lib/libc/gen/utime.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/valloc.3#2 integrate .. //depot/projects/mjexp/lib/libc/gen/valloc.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/vis.3#2 integrate .. //depot/projects/mjexp/lib/libc/gen/vis.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/wait.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/wait3.c#2 integrate .. //depot/projects/mjexp/lib/libc/gen/waitpid.c#2 integrate .. //depot/projects/mjexp/lib/libc/gmon/gmon.c#2 integrate .. //depot/projects/mjexp/lib/libc/gmon/mcount.c#2 integrate .. //depot/projects/mjexp/lib/libc/gmon/moncontrol.3#2 integrate .. //depot/projects/mjexp/lib/libc/i386/SYS.h#2 integrate .. //depot/projects/mjexp/lib/libc/i386/gen/_setjmp.S#2 integrate .. //depot/projects/mjexp/lib/libc/i386/gen/fabs.S#2 integrate .. //depot/projects/mjexp/lib/libc/i386/gen/ldexp.c#2 integrate .. //depot/projects/mjexp/lib/libc/i386/gen/modf.S#3 integrate .. //depot/projects/mjexp/lib/libc/i386/gen/setjmp.S#2 integrate .. //depot/projects/mjexp/lib/libc/i386/gen/sigsetjmp.S#2 integrate .. //depot/projects/mjexp/lib/libc/i386/stdlib/abs.S#2 integrate .. //depot/projects/mjexp/lib/libc/i386/stdlib/div.S#2 integrate .. //depot/projects/mjexp/lib/libc/i386/stdlib/labs.S#2 integrate .. //depot/projects/mjexp/lib/libc/i386/string/bcopy.S#2 integrate .. //depot/projects/mjexp/lib/libc/i386/sys/Ovfork.S#2 integrate .. //depot/projects/mjexp/lib/libc/i386/sys/brk.S#2 integrate .. //depot/projects/mjexp/lib/libc/i386/sys/cerror.S#2 integrate .. //depot/projects/mjexp/lib/libc/i386/sys/exect.S#2 integrate .. //depot/projects/mjexp/lib/libc/i386/sys/i386_get_ldt.2#3 integrate .. //depot/projects/mjexp/lib/libc/i386/sys/pipe.S#2 integrate .. //depot/projects/mjexp/lib/libc/i386/sys/ptrace.S#2 integrate .. //depot/projects/mjexp/lib/libc/i386/sys/reboot.S#2 integrate .. //depot/projects/mjexp/lib/libc/i386/sys/sbrk.S#2 integrate .. //depot/projects/mjexp/lib/libc/i386/sys/setlogin.S#2 integrate .. //depot/projects/mjexp/lib/libc/i386/sys/sigreturn.S#2 integrate .. //depot/projects/mjexp/lib/libc/i386/sys/syscall.S#2 integrate .. //depot/projects/mjexp/lib/libc/include/libc_private.h#2 integrate .. //depot/projects/mjexp/lib/libc/include/spinlock.h#2 integrate .. //depot/projects/mjexp/lib/libc/inet/inet_addr.c#2 integrate .. //depot/projects/mjexp/lib/libc/inet/inet_lnaof.c#2 integrate .. //depot/projects/mjexp/lib/libc/inet/inet_makeaddr.c#2 integrate .. //depot/projects/mjexp/lib/libc/inet/inet_netof.c#2 integrate .. //depot/projects/mjexp/lib/libc/inet/inet_network.c#2 integrate .. //depot/projects/mjexp/lib/libc/inet/inet_ntoa.c#2 integrate .. //depot/projects/mjexp/lib/libc/locale/ctype.3#2 integrate .. //depot/projects/mjexp/lib/libc/locale/digittoint.3#2 integrate .. //depot/projects/mjexp/lib/libc/locale/euc.5#2 integrate .. //depot/projects/mjexp/lib/libc/locale/gbk.c#2 integrate .. //depot/projects/mjexp/lib/libc/locale/isalnum.3#2 integrate .. //depot/projects/mjexp/lib/libc/locale/isalpha.3#2 integrate .. //depot/projects/mjexp/lib/libc/locale/isascii.3#2 integrate .. //depot/projects/mjexp/lib/libc/locale/isblank.3#2 integrate .. //depot/projects/mjexp/lib/libc/locale/iscntrl.3#2 integrate .. //depot/projects/mjexp/lib/libc/locale/isctype.c#2 integrate .. //depot/projects/mjexp/lib/libc/locale/isdigit.3#2 integrate .. //depot/projects/mjexp/lib/libc/locale/isgraph.3#2 integrate .. //depot/projects/mjexp/lib/libc/locale/islower.3#2 integrate .. //depot/projects/mjexp/lib/libc/locale/isprint.3#2 integrate .. //depot/projects/mjexp/lib/libc/locale/ispunct.3#2 integrate .. //depot/projects/mjexp/lib/libc/locale/isspace.3#2 integrate .. //depot/projects/mjexp/lib/libc/locale/isupper.3#2 integrate .. //depot/projects/mjexp/lib/libc/locale/iswalnum.3#2 integrate .. //depot/projects/mjexp/lib/libc/locale/iswctype.c#2 integrate .. //depot/projects/mjexp/lib/libc/locale/isxdigit.3#2 integrate .. //depot/projects/mjexp/lib/libc/locale/localeconv.3#2 integrate .. //depot/projects/mjexp/lib/libc/locale/mblen.3#2 integrate .. //depot/projects/mjexp/lib/libc/locale/mbstowcs.3#2 integrate .. //depot/projects/mjexp/lib/libc/locale/mbtowc.3#2 integrate .. //depot/projects/mjexp/lib/libc/locale/multibyte.3#2 integrate .. //depot/projects/mjexp/lib/libc/locale/none.c#2 integrate .. //depot/projects/mjexp/lib/libc/locale/rune.c#2 integrate .. //depot/projects/mjexp/lib/libc/locale/runetype.c#2 integrate .. //depot/projects/mjexp/lib/libc/locale/setlocale.3#2 integrate .. //depot/projects/mjexp/lib/libc/locale/setlocale.c#2 integrate .. //depot/projects/mjexp/lib/libc/locale/setrunelocale.c#2 integrate .. //depot/projects/mjexp/lib/libc/locale/table.c#2 integrate .. //depot/projects/mjexp/lib/libc/locale/toascii.3#2 integrate .. //depot/projects/mjexp/lib/libc/locale/tolower.3#2 integrate .. //depot/projects/mjexp/lib/libc/locale/tolower.c#2 integrate .. //depot/projects/mjexp/lib/libc/locale/toupper.3#2 integrate .. //depot/projects/mjexp/lib/libc/locale/toupper.c#2 integrate .. //depot/projects/mjexp/lib/libc/locale/towlower.3#2 integrate .. //depot/projects/mjexp/lib/libc/locale/towupper.3#2 integrate .. //depot/projects/mjexp/lib/libc/locale/utf8.5#2 integrate .. //depot/projects/mjexp/lib/libc/locale/wcstoimax.c#2 integrate .. //depot/projects/mjexp/lib/libc/locale/wcstol.c#2 integrate .. //depot/projects/mjexp/lib/libc/locale/wcstoll.c#2 integrate .. //depot/projects/mjexp/lib/libc/locale/wcstombs.3#2 integrate .. //depot/projects/mjexp/lib/libc/locale/wcstoul.c#2 integrate .. //depot/projects/mjexp/lib/libc/locale/wcstoull.c#2 integrate .. //depot/projects/mjexp/lib/libc/locale/wcstoumax.c#2 integrate .. //depot/projects/mjexp/lib/libc/locale/wctomb.3#2 integrate .. //depot/projects/mjexp/lib/libc/locale/wcwidth.c#2 integrate .. //depot/projects/mjexp/lib/libc/net/byteorder.3#2 integrate .. //depot/projects/mjexp/lib/libc/net/gethostbydns.c#2 integrate .. //depot/projects/mjexp/lib/libc/net/gethostbyht.c#2 integrate .. //depot/projects/mjexp/lib/libc/net/gethostbyname.3#3 integrate .. //depot/projects/mjexp/lib/libc/net/getipnodebyname.3#2 integrate .. //depot/projects/mjexp/lib/libc/net/getnetbydns.c#2 integrate .. //depot/projects/mjexp/lib/libc/net/getnetbyht.c#2 integrate .. //depot/projects/mjexp/lib/libc/net/getnetent.3#2 integrate .. //depot/projects/mjexp/lib/libc/net/getproto.c#2 integrate .. //depot/projects/mjexp/lib/libc/net/getprotoent.3#2 integrate .. //depot/projects/mjexp/lib/libc/net/getprotoent.c#2 integrate .. //depot/projects/mjexp/lib/libc/net/getprotoname.c#2 integrate .. //depot/projects/mjexp/lib/libc/net/getservent.3#2 integrate .. //depot/projects/mjexp/lib/libc/net/getservent.c#2 integrate .. //depot/projects/mjexp/lib/libc/net/inet.3#3 integrate .. //depot/projects/mjexp/lib/libc/net/inet_net.3#2 integrate .. //depot/projects/mjexp/lib/libc/net/linkaddr.3#2 integrate .. //depot/projects/mjexp/lib/libc/net/linkaddr.c#2 integrate .. //depot/projects/mjexp/lib/libc/net/map_v4v6.c#2 integrate .. //depot/projects/mjexp/lib/libc/net/nsdispatch.3#2 integrate .. //depot/projects/mjexp/lib/libc/net/rcmd.3#2 integrate .. //depot/projects/mjexp/lib/libc/net/rcmd.c#2 integrate .. //depot/projects/mjexp/lib/libc/net/rcmdsh.3#2 integrate .. //depot/projects/mjexp/lib/libc/net/recv.c#2 integrate .. //depot/projects/mjexp/lib/libc/net/resolver.3#3 integrate .. //depot/projects/mjexp/lib/libc/net/send.c#2 integrate .. //depot/projects/mjexp/lib/libc/quad/TESTS/divrem.c#2 integrate .. //depot/projects/mjexp/lib/libc/quad/TESTS/mul.c#2 integrate .. //depot/projects/mjexp/lib/libc/quad/adddi3.c#2 integrate .. //depot/projects/mjexp/lib/libc/quad/anddi3.c#2 integrate .. //depot/projects/mjexp/lib/libc/quad/ashldi3.c#2 integrate .. //depot/projects/mjexp/lib/libc/quad/ashrdi3.c#2 integrate .. //depot/projects/mjexp/lib/libc/quad/cmpdi2.c#2 integrate .. //depot/projects/mjexp/lib/libc/quad/divdi3.c#2 integrate .. //depot/projects/mjexp/lib/libc/quad/fixdfdi.c#2 integrate .. //depot/projects/mjexp/lib/libc/quad/fixsfdi.c#2 integrate .. //depot/projects/mjexp/lib/libc/quad/fixunsdfdi.c#2 integrate .. //depot/projects/mjexp/lib/libc/quad/fixunssfdi.c#2 integrate .. //depot/projects/mjexp/lib/libc/quad/floatdidf.c#2 integrate .. //depot/projects/mjexp/lib/libc/quad/floatdisf.c#2 integrate .. //depot/projects/mjexp/lib/libc/quad/floatunsdidf.c#2 integrate .. //depot/projects/mjexp/lib/libc/quad/iordi3.c#2 integrate .. //depot/projects/mjexp/lib/libc/quad/lshldi3.c#2 integrate .. //depot/projects/mjexp/lib/libc/quad/lshrdi3.c#2 integrate .. //depot/projects/mjexp/lib/libc/quad/moddi3.c#2 integrate .. //depot/projects/mjexp/lib/libc/quad/muldi3.c#2 integrate .. //depot/projects/mjexp/lib/libc/quad/negdi2.c#2 integrate .. //depot/projects/mjexp/lib/libc/quad/notdi2.c#2 integrate .. //depot/projects/mjexp/lib/libc/quad/qdivrem.c#2 integrate .. //depot/projects/mjexp/lib/libc/quad/quad.h#2 integrate .. //depot/projects/mjexp/lib/libc/quad/subdi3.c#2 integrate .. //depot/projects/mjexp/lib/libc/quad/ucmpdi2.c#2 integrate .. //depot/projects/mjexp/lib/libc/quad/udivdi3.c#2 integrate .. //depot/projects/mjexp/lib/libc/quad/umoddi3.c#2 integrate .. //depot/projects/mjexp/lib/libc/quad/xordi3.c#2 integrate .. //depot/projects/mjexp/lib/libc/regex/cname.h#2 integrate .. //depot/projects/mjexp/lib/libc/regex/engine.c#2 integrate .. //depot/projects/mjexp/lib/libc/regex/regcomp.c#2 integrate .. //depot/projects/mjexp/lib/libc/regex/regerror.c#2 integrate .. //depot/projects/mjexp/lib/libc/regex/regex.3#2 integrate .. //depot/projects/mjexp/lib/libc/regex/regex2.h#2 integrate .. //depot/projects/mjexp/lib/libc/regex/regexec.c#2 integrate .. //depot/projects/mjexp/lib/libc/regex/regfree.c#2 integrate .. //depot/projects/mjexp/lib/libc/regex/utils.h#2 integrate .. //depot/projects/mjexp/lib/libc/resolv/herror.c#2 integrate .. //depot/projects/mjexp/lib/libc/resolv/res_comp.c#2 integrate .. //depot/projects/mjexp/lib/libc/resolv/res_debug.c#2 integrate .. //depot/projects/mjexp/lib/libc/resolv/res_init.c#3 integrate .. //depot/projects/mjexp/lib/libc/resolv/res_mkquery.c#2 integrate .. //depot/projects/mjexp/lib/libc/resolv/res_query.c#2 integrate .. //depot/projects/mjexp/lib/libc/resolv/res_send.c#4 integrate .. //depot/projects/mjexp/lib/libc/sparc64/SYS.h#2 integrate .. //depot/projects/mjexp/lib/libc/sparc64/fpu/fpu.c#2 integrate .. //depot/projects/mjexp/lib/libc/sparc64/fpu/fpu_add.c#2 integrate .. //depot/projects/mjexp/lib/libc/sparc64/fpu/fpu_arith.h#2 integrate .. //depot/projects/mjexp/lib/libc/sparc64/fpu/fpu_compare.c#2 integrate .. //depot/projects/mjexp/lib/libc/sparc64/fpu/fpu_div.c#2 integrate .. //depot/projects/mjexp/lib/libc/sparc64/fpu/fpu_emu.h#3 integrate .. //depot/projects/mjexp/lib/libc/sparc64/fpu/fpu_explode.c#2 integrate .. //depot/projects/mjexp/lib/libc/sparc64/fpu/fpu_implode.c#3 integrate .. //depot/projects/mjexp/lib/libc/sparc64/fpu/fpu_mul.c#2 integrate .. //depot/projects/mjexp/lib/libc/sparc64/fpu/fpu_sqrt.c#2 integrate .. //depot/projects/mjexp/lib/libc/sparc64/fpu/fpu_subr.c#2 integrate .. //depot/projects/mjexp/lib/libc/sparc64/gen/_setjmp.S#2 integrate .. //depot/projects/mjexp/lib/libc/sparc64/gen/fixunsdfsi.S#2 integrate .. //depot/projects/mjexp/lib/libc/sparc64/gen/modf.S#2 integrate .. //depot/projects/mjexp/lib/libc/sparc64/gen/setjmp.S#2 integrate .. //depot/projects/mjexp/lib/libc/sparc64/sys/brk.S#2 integrate .. //depot/projects/mjexp/lib/libc/sparc64/sys/cerror.S#2 integrate .. //depot/projects/mjexp/lib/libc/sparc64/sys/exect.S#2 integrate .. //depot/projects/mjexp/lib/libc/sparc64/sys/pipe.S#2 integrate .. //depot/projects/mjexp/lib/libc/sparc64/sys/ptrace.S#2 integrate .. //depot/projects/mjexp/lib/libc/sparc64/sys/sbrk.S#2 integrate .. //depot/projects/mjexp/lib/libc/sparc64/sys/setlogin.S#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/_flock_stub.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/clrerr.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/fclose.3#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/fclose.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/fdopen.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/feof.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/ferror.3#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/ferror.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/fflush.3#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/fflush.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/fgetc.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/fgetln.3#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/fgetln.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/fgetpos.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/fgets.3#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/fgets.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/fgetwln.3#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/fgetws.3#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/fileno.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/findfp.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/flags.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/floatio.h#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/fopen.3#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/fopen.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/fprintf.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/fpurge.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/fputc.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/fputs.3#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/fputs.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/fputws.3#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/fread.3#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/fread.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/freopen.c#3 integrate .. //depot/projects/mjexp/lib/libc/stdio/fscanf.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/fseek.3#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/fseek.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/fsetpos.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/ftell.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/funopen.3#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/funopen.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/fvwrite.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/fvwrite.h#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/fwalk.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/fwrite.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/getc.3#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/getc.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/getchar.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/gets.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/getw.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/getwc.3#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/glue.h#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/local.h#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/makebuf.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/mktemp.3#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/mktemp.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/perror.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/printf.3#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/printf.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/putc.3#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/putc.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/putchar.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/puts.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/putw.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/putwc.3#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/refill.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/remove.3#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/remove.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/rewind.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/rget.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/scanf.3#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/scanf.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/setbuf.3#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/setbuf.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/setbuffer.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/setvbuf.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/snprintf.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/sprintf.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/sscanf.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/stdio.3#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/stdio.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/tempnam.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/tmpfile.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/tmpnam.3#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/tmpnam.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/ungetc.3#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/ungetc.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/ungetwc.3#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/vfprintf.c#3 integrate .. //depot/projects/mjexp/lib/libc/stdio/vfscanf.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/vfwprintf.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/vfwscanf.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/vprintf.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/vscanf.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/vsnprintf.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/vsprintf.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/vsscanf.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/vswscanf.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/wbuf.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/wprintf.3#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/wscanf.3#2 integrate .. //depot/projects/mjexp/lib/libc/stdio/wsetup.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdlib/abort.3#2 integrate .. //depot/projects/mjexp/lib/libc/stdlib/abort.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdlib/abs.3#2 integrate .. //depot/projects/mjexp/lib/libc/stdlib/abs.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdlib/alloca.3#2 integrate .. //depot/projects/mjexp/lib/libc/stdlib/atexit.3#2 integrate .. //depot/projects/mjexp/lib/libc/stdlib/atexit.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdlib/atexit.h#2 integrate .. //depot/projects/mjexp/lib/libc/stdlib/atof.3#2 integrate .. //depot/projects/mjexp/lib/libc/stdlib/atof.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdlib/atoi.3#2 integrate .. //depot/projects/mjexp/lib/libc/stdlib/atoi.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdlib/atol.3#2 integrate .. //depot/projects/mjexp/lib/libc/stdlib/atol.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdlib/atoll.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdlib/bsearch.3#2 integrate .. //depot/projects/mjexp/lib/libc/stdlib/bsearch.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdlib/div.3#2 integrate .. //depot/projects/mjexp/lib/libc/stdlib/div.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdlib/exit.3#2 integrate .. //depot/projects/mjexp/lib/libc/stdlib/exit.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdlib/getenv.3#3 integrate .. //depot/projects/mjexp/lib/libc/stdlib/getenv.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdlib/getopt.3#2 integrate .. //depot/projects/mjexp/lib/libc/stdlib/getopt.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdlib/getsubopt.3#2 integrate .. //depot/projects/mjexp/lib/libc/stdlib/getsubopt.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdlib/heapsort.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdlib/labs.3#2 integrate .. //depot/projects/mjexp/lib/libc/stdlib/labs.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdlib/ldiv.3#2 integrate .. //depot/projects/mjexp/lib/libc/stdlib/ldiv.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdlib/memory.3#2 integrate .. //depot/projects/mjexp/lib/libc/stdlib/merge.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdlib/putenv.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdlib/qsort.3#2 integrate .. //depot/projects/mjexp/lib/libc/stdlib/qsort.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdlib/radixsort.3#2 integrate .. //depot/projects/mjexp/lib/libc/stdlib/radixsort.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdlib/rand.3#2 integrate .. //depot/projects/mjexp/lib/libc/stdlib/rand.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdlib/random.3#2 integrate .. //depot/projects/mjexp/lib/libc/stdlib/random.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdlib/realpath.3#2 integrate .. //depot/projects/mjexp/lib/libc/stdlib/setenv.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdlib/strtod.3#2 integrate .. //depot/projects/mjexp/lib/libc/stdlib/strtoimax.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdlib/strtol.3#2 integrate .. //depot/projects/mjexp/lib/libc/stdlib/strtol.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdlib/strtoll.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdlib/strtoq.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdlib/strtoul.3#2 integrate .. //depot/projects/mjexp/lib/libc/stdlib/strtoul.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdlib/strtoull.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdlib/strtoumax.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdlib/strtouq.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdlib/system.3#2 integrate .. //depot/projects/mjexp/lib/libc/stdlib/system.c#2 integrate .. //depot/projects/mjexp/lib/libc/stdtime/ctime.3#2 integrate .. //depot/projects/mjexp/lib/libc/stdtime/strftime.3#3 integrate .. //depot/projects/mjexp/lib/libc/string/bcmp.3#2 integrate .. //depot/projects/mjexp/lib/libc/string/bcmp.c#2 integrate .. //depot/projects/mjexp/lib/libc/string/bcopy.3#2 integrate .. //depot/projects/mjexp/lib/libc/string/bcopy.c#2 integrate .. //depot/projects/mjexp/lib/libc/string/bstring.3#2 integrate .. //depot/projects/mjexp/lib/libc/string/bzero.3#2 integrate .. //depot/projects/mjexp/lib/libc/string/ffs.3#3 integrate .. //depot/projects/mjexp/lib/libc/string/ffs.c#2 integrate .. //depot/projects/mjexp/lib/libc/string/ffsl.c#2 integrate .. //depot/projects/mjexp/lib/libc/string/fls.c#2 integrate .. //depot/projects/mjexp/lib/libc/string/flsl.c#2 integrate .. //depot/projects/mjexp/lib/libc/string/index.3#2 integrate .. //depot/projects/mjexp/lib/libc/string/index.c#2 integrate .. //depot/projects/mjexp/lib/libc/string/memccpy.3#2 integrate .. //depot/projects/mjexp/lib/libc/string/memccpy.c#2 integrate .. //depot/projects/mjexp/lib/libc/string/memchr.3#2 integrate .. //depot/projects/mjexp/lib/libc/string/memchr.c#2 integrate .. //depot/projects/mjexp/lib/libc/string/memcmp.3#2 integrate .. //depot/projects/mjexp/lib/libc/string/memcmp.c#2 integrate .. //depot/projects/mjexp/lib/libc/string/memcpy.3#2 integrate .. //depot/projects/mjexp/lib/libc/string/memmove.3#2 integrate .. //depot/projects/mjexp/lib/libc/string/memset.3#2 integrate .. //depot/projects/mjexp/lib/libc/string/memset.c#2 integrate .. //depot/projects/mjexp/lib/libc/string/rindex.c#2 integrate .. //depot/projects/mjexp/lib/libc/string/strcasecmp.3#2 integrate .. //depot/projects/mjexp/lib/libc/string/strcasecmp.c#2 integrate .. //depot/projects/mjexp/lib/libc/string/strcasestr.c#2 integrate .. //depot/projects/mjexp/lib/libc/string/strcat.3#2 integrate .. //depot/projects/mjexp/lib/libc/string/strcat.c#2 integrate .. //depot/projects/mjexp/lib/libc/string/strchr.3#2 integrate .. //depot/projects/mjexp/lib/libc/string/strcmp.3#2 integrate .. //depot/projects/mjexp/lib/libc/string/strcmp.c#2 integrate .. //depot/projects/mjexp/lib/libc/string/strcoll.3#2 integrate .. //depot/projects/mjexp/lib/libc/string/strcpy.3#2 integrate .. //depot/projects/mjexp/lib/libc/string/strcpy.c#2 integrate .. //depot/projects/mjexp/lib/libc/string/strcspn.3#2 integrate .. //depot/projects/mjexp/lib/libc/string/strdup.3#2 integrate .. //depot/projects/mjexp/lib/libc/string/strdup.c#2 integrate .. //depot/projects/mjexp/lib/libc/string/strerror.3#2 integrate .. //depot/projects/mjexp/lib/libc/string/strerror.c#2 integrate .. //depot/projects/mjexp/lib/libc/string/string.3#2 integrate .. //depot/projects/mjexp/lib/libc/string/strlen.3#2 integrate .. //depot/projects/mjexp/lib/libc/string/strlen.c#2 integrate .. //depot/projects/mjexp/lib/libc/string/strmode.3#2 integrate .. //depot/projects/mjexp/lib/libc/string/strmode.c#2 integrate .. //depot/projects/mjexp/lib/libc/string/strncat.c#2 integrate .. //depot/projects/mjexp/lib/libc/string/strncmp.c#2 integrate .. //depot/projects/mjexp/lib/libc/string/strncpy.c#2 integrate .. //depot/projects/mjexp/lib/libc/string/strnstr.c#2 integrate .. //depot/projects/mjexp/lib/libc/string/strpbrk.3#2 integrate .. //depot/projects/mjexp/lib/libc/string/strpbrk.c#2 integrate .. //depot/projects/mjexp/lib/libc/string/strsep.3#2 integrate .. //depot/projects/mjexp/lib/libc/string/strsep.c#2 integrate .. //depot/projects/mjexp/lib/libc/string/strsignal.c#2 integrate .. //depot/projects/mjexp/lib/libc/string/strspn.3#2 integrate .. //depot/projects/mjexp/lib/libc/string/strstr.3#2 integrate .. //depot/projects/mjexp/lib/libc/string/strstr.c#2 integrate .. //depot/projects/mjexp/lib/libc/string/strxfrm.3#2 integrate .. //depot/projects/mjexp/lib/libc/string/swab.3#2 integrate .. //depot/projects/mjexp/lib/libc/string/swab.c#2 integrate .. //depot/projects/mjexp/lib/libc/string/wcscmp.c#2 integrate .. //depot/projects/mjexp/lib/libc/string/wcscoll.3#2 integrate .. //depot/projects/mjexp/lib/libc/string/wcsncmp.c#2 integrate .. //depot/projects/mjexp/lib/libc/string/wcsncpy.c#2 integrate .. //depot/projects/mjexp/lib/libc/string/wcsstr.c#2 integrate .. //depot/projects/mjexp/lib/libc/string/wcswidth.c#2 integrate .. //depot/projects/mjexp/lib/libc/string/wcsxfrm.3#2 integrate .. //depot/projects/mjexp/lib/libc/string/wmemchr.3#2 integrate .. //depot/projects/mjexp/lib/libc/sys/__error.c#2 integrate .. //depot/projects/mjexp/lib/libc/sys/_exit.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/accept.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/access.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/acct.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/adjtime.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/bind.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/brk.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/chdir.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/chflags.2#3 integrate .. //depot/projects/mjexp/lib/libc/sys/chmod.2#4 integrate .. //depot/projects/mjexp/lib/libc/sys/chown.2#4 integrate .. //depot/projects/mjexp/lib/libc/sys/chroot.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/clock_gettime.2#3 integrate .. //depot/projects/mjexp/lib/libc/sys/close.2#3 integrate .. //depot/projects/mjexp/lib/libc/sys/connect.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/dup.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/execve.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/fcntl.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/flock.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/fork.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/fsync.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/ftruncate.c#2 integrate .. //depot/projects/mjexp/lib/libc/sys/getdirentries.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/getdtablesize.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/getfh.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/getfsstat.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/getgid.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/getgroups.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/getitimer.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/getlogin.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/getpeername.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/getpgrp.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/getpid.2#3 integrate .. //depot/projects/mjexp/lib/libc/sys/getpriority.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/getrlimit.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/getrusage.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/getsockname.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/getsockopt.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/gettimeofday.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/getuid.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/intro.2#3 integrate .. //depot/projects/mjexp/lib/libc/sys/ioctl.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/issetugid.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/kill.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/ktrace.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/link.2#3 integrate .. //depot/projects/mjexp/lib/libc/sys/listen.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/lseek.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/lseek.c#2 integrate .. //depot/projects/mjexp/lib/libc/sys/madvise.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/mincore.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/minherit.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/mkdir.2#4 integrate .. //depot/projects/mjexp/lib/libc/sys/mkfifo.2#4 integrate .. //depot/projects/mjexp/lib/libc/sys/mknod.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/mlock.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/mmap.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/mmap.c#2 integrate .. //depot/projects/mjexp/lib/libc/sys/mount.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/mprotect.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/msync.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/munmap.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/nanosleep.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/nfssvc.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/open.2#3 integrate .. //depot/projects/mjexp/lib/libc/sys/pathconf.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/pipe.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/pread.c#2 integrate .. //depot/projects/mjexp/lib/libc/sys/profil.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/pwrite.c#2 integrate .. //depot/projects/mjexp/lib/libc/sys/quotactl.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/read.2#4 integrate .. //depot/projects/mjexp/lib/libc/sys/readlink.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/reboot.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/recv.2#3 integrate .. //depot/projects/mjexp/lib/libc/sys/rename.2#3 integrate .. //depot/projects/mjexp/lib/libc/sys/revoke.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/rmdir.2#3 integrate .. //depot/projects/mjexp/lib/libc/sys/select.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/send.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/setgroups.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/setpgid.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/setregid.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/setreuid.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/setsid.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/setuid.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/shutdown.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/sigaction.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/sigaltstack.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/sigpending.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/sigprocmask.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/sigreturn.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/sigstack.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/sigsuspend.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/socket.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/socketpair.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/stat.2#3 integrate .. //depot/projects/mjexp/lib/libc/sys/statfs.2#3 integrate .. //depot/projects/mjexp/lib/libc/sys/swapon.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/symlink.2#4 integrate .. //depot/projects/mjexp/lib/libc/sys/sync.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/sysarch.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/syscall.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/truncate.2#4 integrate .. //depot/projects/mjexp/lib/libc/sys/truncate.c#2 integrate .. //depot/projects/mjexp/lib/libc/sys/umask.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/undelete.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/unlink.2#4 integrate .. //depot/projects/mjexp/lib/libc/sys/utimes.2#3 integrate .. //depot/projects/mjexp/lib/libc/sys/vfork.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/wait.2#2 integrate .. //depot/projects/mjexp/lib/libc/sys/write.2#3 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/pthread_private.h#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_accept.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_attr_destroy.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_attr_getdetachstate.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_attr_getstackaddr.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_attr_getstacksize.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_attr_init.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_attr_setcreatesuspend_np.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_attr_setdetachstate.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_attr_setstackaddr.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_attr_setstacksize.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_bind.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_clean.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_close.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_cond.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_condattr_destroy.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_condattr_init.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_connect.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_create.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_detach.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_dup.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_dup2.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_equal.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_execve.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_exit.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_fchmod.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_fchown.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_fcntl.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_fd.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_find_thread.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_flock.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_fork.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_fstat.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_fstatfs.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_fsync.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_gc.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_getdirentries.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_getpeername.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_getprio.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_getsockname.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_getsockopt.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_info.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_init.c#3 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_ioctl.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_join.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_kern.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_kill.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_listen.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_multi_np.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_mutex.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_mutexattr_destroy.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_nanosleep.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_once.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_open.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_pipe.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_read.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_readv.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_recvfrom.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_recvmsg.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_resume_np.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_select.c#3 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_self.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_sendmsg.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_sendto.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_seterrno.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_setprio.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_setsockopt.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_shutdown.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_sig.c#3 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_sigaction.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_sigmask.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_sigpending.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_sigprocmask.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_sigsuspend.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_sigwait.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_single_np.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_socket.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_socketpair.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_spec.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_spinlock.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_suspend_np.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_wait4.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_write.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_writev.c#2 integrate .. //depot/projects/mjexp/lib/libc_r/uthread/uthread_yield.c#2 integrate .. //depot/projects/mjexp/lib/libcompat/4.1/ftime.3#2 integrate .. //depot/projects/mjexp/lib/libcompat/4.1/getpw.3#2 integrate .. //depot/projects/mjexp/lib/libcompat/4.1/stty.3#2 integrate .. //depot/projects/mjexp/lib/libcompat/4.3/cfree.c#2 integrate .. //depot/projects/mjexp/lib/libcompat/4.3/re_comp.3#2 integrate .. //depot/projects/mjexp/lib/libcompat/4.3/regex.c#2 integrate .. //depot/projects/mjexp/lib/libcompat/4.3/rexec.3#2 integrate .. //depot/projects/mjexp/lib/libcompat/4.3/rexec.c#2 integrate .. //depot/projects/mjexp/lib/libcompat/4.4/cuserid.c#2 integrate .. //depot/projects/mjexp/lib/libcompat/regexp/regexp.3#2 integrate .. //depot/projects/mjexp/lib/libipx/ipx.3#2 integrate .. //depot/projects/mjexp/lib/libipx/ipx_addr.c#2 integrate .. //depot/projects/mjexp/lib/libipx/ipx_ntoa.c#2 integrate .. //depot/projects/mjexp/lib/libkvm/kvm.3#2 integrate .. //depot/projects/mjexp/lib/libkvm/kvm.c#2 integrate .. //depot/projects/mjexp/lib/libkvm/kvm.h#2 integrate .. //depot/projects/mjexp/lib/libkvm/kvm_amd64.c#2 integrate .. //depot/projects/mjexp/lib/libkvm/kvm_arm.c#2 integrate .. //depot/projects/mjexp/lib/libkvm/kvm_file.c#2 integrate .. //depot/projects/mjexp/lib/libkvm/kvm_geterr.3#2 integrate .. //depot/projects/mjexp/lib/libkvm/kvm_getfiles.3#2 integrate .. //depot/projects/mjexp/lib/libkvm/kvm_getloadavg.3#2 integrate .. //depot/projects/mjexp/lib/libkvm/kvm_getloadavg.c#2 integrate .. //depot/projects/mjexp/lib/libkvm/kvm_getprocs.3#2 integrate .. //depot/projects/mjexp/lib/libkvm/kvm_i386.c#2 integrate .. //depot/projects/mjexp/lib/libkvm/kvm_nlist.3#2 integrate .. //depot/projects/mjexp/lib/libkvm/kvm_open.3#2 integrate .. //depot/projects/mjexp/lib/libkvm/kvm_private.h#2 integrate .. //depot/projects/mjexp/lib/libkvm/kvm_proc.c#4 integrate .. //depot/projects/mjexp/lib/libkvm/kvm_read.3#2 integrate .. //depot/projects/mjexp/lib/libkvm/kvm_sparc.c#2 integrate .. //depot/projects/mjexp/lib/libkvm/kvm_sparc64.c#3 integrate .. //depot/projects/mjexp/lib/libncp/ipx.c#2 integrate .. //depot/projects/mjexp/lib/libncp/ipxsap.h#2 integrate .. //depot/projects/mjexp/lib/libncp/ncpl_bind.c#2 integrate .. //depot/projects/mjexp/lib/libncp/ncpl_conn.c#2 integrate .. //depot/projects/mjexp/lib/libncp/ncpl_file.c#2 integrate .. //depot/projects/mjexp/lib/libncp/ncpl_misc.c#2 integrate .. //depot/projects/mjexp/lib/libncp/ncpl_msg.c#2 integrate .. //depot/projects/mjexp/lib/libncp/ncpl_net.c#2 integrate .. //depot/projects/mjexp/lib/libncp/ncpl_nls.c#2 integrate .. //depot/projects/mjexp/lib/libncp/ncpl_queue.c#2 integrate .. //depot/projects/mjexp/lib/libncp/ncpl_rcfile.c#2 integrate .. //depot/projects/mjexp/lib/libncp/ncpl_rpc.c#2 integrate .. //depot/projects/mjexp/lib/libncp/ncpl_subr.c#2 integrate .. //depot/projects/mjexp/lib/libncp/sap.c#2 integrate .. //depot/projects/mjexp/lib/libncurses/pathnames.h#2 integrate .. //depot/projects/mjexp/lib/libncurses/termcap.c#2 integrate .. //depot/projects/mjexp/lib/libpthread/thread/thr_attr_destroy.c#2 integrate .. //depot/projects/mjexp/lib/libpthread/thread/thr_attr_getdetachstate.c#2 integrate .. //depot/projects/mjexp/lib/libpthread/thread/thr_attr_getstackaddr.c#2 integrate .. //depot/projects/mjexp/lib/libpthread/thread/thr_attr_getstacksize.c#2 integrate .. //depot/projects/mjexp/lib/libpthread/thread/thr_attr_init.c#2 integrate .. //depot/projects/mjexp/lib/libpthread/thread/thr_attr_setcreatesuspend_np.c#2 integrate .. //depot/projects/mjexp/lib/libpthread/thread/thr_attr_setdetachstate.c#2 integrate .. //depot/projects/mjexp/lib/libpthread/thread/thr_attr_setstackaddr.c#2 integrate .. //depot/projects/mjexp/lib/libpthread/thread/thr_attr_setstacksize.c#2 integrate .. //depot/projects/mjexp/lib/libpthread/thread/thr_clean.c#2 integrate .. //depot/projects/mjexp/lib/libpthread/thread/thr_close.c#2 integrate .. //depot/projects/mjexp/lib/libpthread/thread/thr_cond.c#2 integrate .. //depot/projects/mjexp/lib/libpthread/thread/thr_condattr_destroy.c#2 integrate .. //depot/projects/mjexp/lib/libpthread/thread/thr_condattr_init.c#2 integrate .. //depot/projects/mjexp/lib/libpthread/thread/thr_create.c#2 integrate .. //depot/projects/mjexp/lib/libpthread/thread/thr_detach.c#2 integrate .. //depot/projects/mjexp/lib/libpthread/thread/thr_equal.c#2 integrate .. //depot/projects/mjexp/lib/libpthread/thread/thr_exit.c#2 integrate .. //depot/projects/mjexp/lib/libpthread/thread/thr_fcntl.c#2 integrate .. //depot/projects/mjexp/lib/libpthread/thread/thr_find_thread.c#2 integrate .. //depot/projects/mjexp/lib/libpthread/thread/thr_fork.c#2 integrate .. //depot/projects/mjexp/lib/libpthread/thread/thr_fsync.c#2 integrate .. //depot/projects/mjexp/lib/libpthread/thread/thr_getprio.c#2 integrate .. //depot/projects/mjexp/lib/libpthread/thread/thr_info.c#2 integrate .. //depot/projects/mjexp/lib/libpthread/thread/thr_init.c#2 integrate .. //depot/projects/mjexp/lib/libpthread/thread/thr_join.c#3 integrate .. //depot/projects/mjexp/lib/libpthread/thread/thr_kill.c#2 integrate .. //depot/projects/mjexp/lib/libpthread/thread/thr_mattr_kind_np.c#2 integrate .. //depot/projects/mjexp/lib/libpthread/thread/thr_multi_np.c#2 integrate .. //depot/projects/mjexp/lib/libpthread/thread/thr_mutex.c#2 integrate .. //depot/projects/mjexp/lib/libpthread/thread/thr_mutexattr_destroy.c#2 integrate .. //depot/projects/mjexp/lib/libpthread/thread/thr_nanosleep.c#2 integrate .. //depot/projects/mjexp/lib/libpthread/thread/thr_once.c#2 integrate .. //depot/projects/mjexp/lib/libpthread/thread/thr_open.c#2 integrate .. //depot/projects/mjexp/lib/libpthread/thread/thr_private.h#2 integrate .. //depot/projects/mjexp/lib/libpthread/thread/thr_read.c#2 integrate .. //depot/projects/mjexp/lib/libpthread/thread/thr_readv.c#2 integrate .. //depot/projects/mjexp/lib/libpthread/thread/thr_resume_np.c#2 integrate .. //depot/projects/mjexp/lib/libpthread/thread/thr_select.c#2 integrate .. //depot/projects/mjexp/lib/libpthread/thread/thr_self.c#2 integrate .. //depot/projects/mjexp/lib/libpthread/thread/thr_seterrno.c#2 integrate .. //depot/projects/mjexp/lib/libpthread/thread/thr_setprio.c#2 integrate .. //depot/projects/mjexp/lib/libpthread/thread/thr_sig.c#2 integrate .. //depot/projects/mjexp/lib/libpthread/thread/thr_sigaction.c#2 integrate .. //depot/projects/mjexp/lib/libpthread/thread/thr_sigmask.c#2 integrate .. //depot/projects/mjexp/lib/libpthread/thread/thr_sigprocmask.c#2 integrate .. //depot/projects/mjexp/lib/libpthread/thread/thr_sigsuspend.c#2 integrate .. //depot/projects/mjexp/lib/libpthread/thread/thr_sigwait.c#2 integrate .. //depot/projects/mjexp/lib/libpthread/thread/thr_single_np.c#2 integrate .. //depot/projects/mjexp/lib/libpthread/thread/thr_spec.c#2 integrate .. //depot/projects/mjexp/lib/libpthread/thread/thr_spinlock.c#2 integrate .. //depot/projects/mjexp/lib/libpthread/thread/thr_suspend_np.c#2 integrate .. //depot/projects/mjexp/lib/libpthread/thread/thr_symbols.c#2 integrate >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Thu Jan 18 22:58:54 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 5D26416A415; Thu, 18 Jan 2007 22:58:54 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 17D9016A40F for ; Thu, 18 Jan 2007 22:58:54 +0000 (UTC) (envelope-from jkim@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id F0FE413C44B for ; Thu, 18 Jan 2007 22:58:53 +0000 (UTC) (envelope-from jkim@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0IMwrEl088355 for ; Thu, 18 Jan 2007 22:58:53 GMT (envelope-from jkim@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0IMwrOJ088352 for perforce@freebsd.org; Thu, 18 Jan 2007 22:58:53 GMT (envelope-from jkim@freebsd.org) Date: Thu, 18 Jan 2007 22:58:53 GMT Message-Id: <200701182258.l0IMwrOJ088352@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to jkim@freebsd.org using -f From: Jung-uk Kim To: Perforce Change Reviews Cc: Subject: PERFORCE change 113146 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 18 Jan 2007 22:58:54 -0000 http://perforce.freebsd.org/chv.cgi?CH=113146 Change 113146 by jkim@jkim_hammer on 2007/01/18 22:58:37 Clean up mmap and sync amd64 with i386. Now they are almost identical. Affected files ... .. //depot/projects/linuxolator/src/sys/amd64/linux32/linux.h#13 edit .. //depot/projects/linuxolator/src/sys/amd64/linux32/linux32_machdep.c#25 edit .. //depot/projects/linuxolator/src/sys/i386/linux/linux.h#11 edit .. //depot/projects/linuxolator/src/sys/i386/linux/linux_machdep.c#18 edit Differences ... ==== //depot/projects/linuxolator/src/sys/amd64/linux32/linux.h#13 (text+ko) ==== @@ -167,6 +167,15 @@ #define LINUX_MAP_ANON 0x0020 #define LINUX_MAP_GROWSDOWN 0x0100 +struct l_mmap_argv { + l_uintptr_t addr; + l_size_t len; + l_int prot; + l_int flags; + l_int fd; + l_off_t pgoff; +} __packed; + /* * stat family of syscalls */ ==== //depot/projects/linuxolator/src/sys/amd64/linux32/linux32_machdep.c#25 (text+ko) ==== @@ -739,16 +739,6 @@ return (0); } -/* XXX move */ -struct l_mmap_argv { - l_ulong addr; - l_ulong len; - l_ulong prot; - l_ulong flags; - l_ulong fd; - l_ulong pgoff; -}; - #define STACK_SIZE (2 * 1024 * 1024) #define GUARD_SIZE (4 * PAGE_SIZE) @@ -834,10 +824,13 @@ bsd_args.flags |= MAP_PRIVATE; if (linux_args->flags & LINUX_MAP_FIXED) bsd_args.flags |= MAP_FIXED; - if (linux_args->flags & LINUX_MAP_ANON) + if (linux_args->flags & LINUX_MAP_ANON) { bsd_args.flags |= MAP_ANON; - else + bsd_args.fd = -1; + } else { bsd_args.flags |= MAP_NOSYNC; + bsd_args.fd = linux_args->fd; + } if (linux_args->flags & LINUX_MAP_GROWSDOWN) { bsd_args.flags |= MAP_STACK; @@ -863,11 +856,7 @@ * fixed size of (STACK_SIZE - GUARD_SIZE). */ - /* This gives us TOS */ - bsd_args.addr = (caddr_t)PTRIN(linux_args->addr) + - linux_args->len; - - if ((caddr_t)PTRIN(bsd_args.addr) > + if ((caddr_t)PTRIN(linux_args->addr) + linux_args->len > p->p_vmspace->vm_maxsaddr) { /* * Some linux apps will attempt to mmap @@ -905,7 +894,8 @@ * not using VM_STACK we map the full stack, since we * don't have a way to autogrow it. */ - bsd_args.addr -= bsd_args.len; + bsd_args.addr = (caddr_t)PTRIN(linux_args->addr) - + bsd_args.len; } else { bsd_args.addr = (caddr_t)PTRIN(linux_args->addr); bsd_args.len = linux_args->len; @@ -918,9 +908,7 @@ if (linux_args->prot & PROT_READ) bsd_args.prot = linux_args->prot | PROT_EXEC; - if (linux_args->flags & LINUX_MAP_ANON) - bsd_args.fd = -1; - else { + if (bsd_args.fd != -1) { /* * Linux follows Solaris mmap(2) description: * The file descriptor fildes is opened with @@ -933,7 +921,7 @@ * argument as described below. */ - if ((error = fget(td, linux_args->fd, &fp)) != 0) + if ((error = fget(td, bsd_args.fd, &fp)) != 0) return (error); if (fp->f_type != DTYPE_VNODE) { fdrop(fp, td); @@ -946,7 +934,6 @@ return (EACCES); } - bsd_args.fd = linux_args->fd; fdrop(fp, td); } bsd_args.pos = (off_t)linux_args->pgoff * PAGE_SIZE; ==== //depot/projects/linuxolator/src/sys/i386/linux/linux.h#11 (text+ko) ==== @@ -142,6 +142,15 @@ #define LINUX_MAP_ANON 0x0020 #define LINUX_MAP_GROWSDOWN 0x0100 +struct l_mmap_argv { + l_uintptr_t addr; + l_size_t len; + l_int prot; + l_int flags; + l_int fd; + l_off_t pgoff; +} __packed; + /* * stat family of syscalls */ ==== //depot/projects/linuxolator/src/sys/i386/linux/linux_machdep.c#18 (text+ko) ==== @@ -576,16 +576,6 @@ return (0); } -/* XXX move */ -struct l_mmap_argv { - l_caddr_t addr; - l_int len; - l_int prot; - l_int flags; - l_int fd; - l_int pos; -}; - #define STACK_SIZE (2 * 1024 * 1024) #define GUARD_SIZE (4 * PAGE_SIZE) @@ -667,10 +657,13 @@ bsd_args.flags |= MAP_PRIVATE; if (linux_args->flags & LINUX_MAP_FIXED) bsd_args.flags |= MAP_FIXED; - if (linux_args->flags & LINUX_MAP_ANON) + if (linux_args->flags & LINUX_MAP_ANON) { bsd_args.flags |= MAP_ANON; - else + bsd_args.fd = -1; + } else { bsd_args.flags |= MAP_NOSYNC; + bsd_args.fd = linux_args->fd; + } if (linux_args->flags & LINUX_MAP_GROWSDOWN) { bsd_args.flags |= MAP_STACK; @@ -696,10 +689,8 @@ * fixed size of (STACK_SIZE - GUARD_SIZE). */ - /* This gives us TOS */ - bsd_args.addr = linux_args->addr + linux_args->len; - - if (bsd_args.addr > p->p_vmspace->vm_maxsaddr) { + if ((caddr_t)PTRIN(linux_args->addr) + linux_args->len > + p->p_vmspace->vm_maxsaddr) { /* * Some linux apps will attempt to mmap * thread stacks near the top of their @@ -735,16 +726,15 @@ * not using VM_STACK we map the full stack, since we * don't have a way to autogrow it. */ - bsd_args.addr -= bsd_args.len; + bsd_args.addr = (caddr_t)PTRIN(linux_args->addr) - + bsd_args.len; } else { - bsd_args.addr = linux_args->addr; + bsd_args.addr = (caddr_t)PTRIN(linux_args->addr); bsd_args.len = linux_args->len; } bsd_args.prot = linux_args->prot; - if (linux_args->flags & LINUX_MAP_ANON) - bsd_args.fd = -1; - else { + if (bsd_args.fd != -1) { /* * Linux follows Solaris mmap(2) description: * The file descriptor fildes is opened with @@ -757,7 +747,7 @@ * argument as described below. */ - if ((error = fget(td, linux_args->fd, &fp)) != 0) + if ((error = fget(td, bsd_args.fd, &fp)) != 0) return (error); if (fp->f_type != DTYPE_VNODE) { fdrop(fp, td); @@ -770,7 +760,6 @@ return (EACCES); } - bsd_args.fd = linux_args->fd; fdrop(fp, td); } bsd_args.pos = linux_args->pos; From owner-p4-projects@FreeBSD.ORG Thu Jan 18 23:43:52 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 3FA8616A416; Thu, 18 Jan 2007 23:43:52 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 13C0916A40F for ; Thu, 18 Jan 2007 23:43:52 +0000 (UTC) (envelope-from scottl@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id E0C5413C457 for ; Thu, 18 Jan 2007 23:43:51 +0000 (UTC) (envelope-from scottl@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0INhp2K097013 for ; Thu, 18 Jan 2007 23:43:51 GMT (envelope-from scottl@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0INhp8m097006 for perforce@freebsd.org; Thu, 18 Jan 2007 23:43:51 GMT (envelope-from scottl@freebsd.org) Date: Thu, 18 Jan 2007 23:43:51 GMT Message-Id: <200701182343.l0INhp8m097006@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to scottl@freebsd.org using -f From: Scott Long To: Perforce Change Reviews Cc: Subject: PERFORCE change 113148 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 18 Jan 2007 23:43:52 -0000 http://perforce.freebsd.org/chv.cgi?CH=113148 Change 113148 by scottl@scottl-x64 on 2007/01/18 23:43:07 Fix a mismerge Affected files ... .. //depot/projects/scottl-camlock/src/sys/dev/mpt/mpt.c#17 edit Differences ... ==== //depot/projects/scottl-camlock/src/sys/dev/mpt/mpt.c#17 (text+ko) ==== @@ -2109,7 +2109,7 @@ int mpt_core_attach(struct mpt_softc *mpt) { - int val; + int val, error; LIST_INIT(&mpt->ack_frames); /* Put all request buffers on the free list */ From owner-p4-projects@FreeBSD.ORG Fri Jan 19 08:51:32 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id EB51316A417; Fri, 19 Jan 2007 08:51:31 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id C695C16A40F; Fri, 19 Jan 2007 08:51:31 +0000 (UTC) (envelope-from imp@bsdimp.com) Received: from harmony.bsdimp.com (vc4-2-0-87.dsl.netrack.net [199.45.160.85]) by mx1.freebsd.org (Postfix) with ESMTP id 88CE613C471; Fri, 19 Jan 2007 08:51:31 +0000 (UTC) (envelope-from imp@bsdimp.com) Received: from localhost (localhost [127.0.0.1]) by harmony.bsdimp.com (8.13.4/8.13.4) with ESMTP id l0J8p1w6006209; Fri, 19 Jan 2007 01:51:02 -0700 (MST) (envelope-from imp@bsdimp.com) Date: Fri, 19 Jan 2007 01:51:22 -0700 (MST) Message-Id: <20070119.015122.514366110.imp@bsdimp.com> To: hselasky@freebsd.org From: "M. Warner Losh" In-Reply-To: <200701152255.l0FMtKId033379@repoman.freebsd.org> References: <200701152255.l0FMtKId033379@repoman.freebsd.org> X-Mailer: Mew version 4.2 on Emacs 21.3 / Mule 5.0 (SAKAKI) Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-2.0 (harmony.bsdimp.com [127.0.0.1]); Fri, 19 Jan 2007 01:51:02 -0700 (MST) Cc: perforce@freebsd.org Subject: Re: PERFORCE change 112957 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 19 Jan 2007 08:51:32 -0000 In message: <200701152255.l0FMtKId033379@repoman.freebsd.org> Hans Petter Selasky writes: : ==== //depot/projects/usb/src/sys/dev/pccbb/pccbb.c#3 (text+ko) ==== : : @@ -302,10 +302,11 @@ : * for the kldload/unload case to work. If we failed to do that, then : * we'd get duplicate devices when cbb.ko was reloaded. : */ : - device_get_children(brdev, &devlist, &numdevs); : - for (tmp = 0; tmp < numdevs; tmp++) : - device_delete_child(brdev, devlist[tmp]); : - free(devlist, M_TEMP); : + if (!device_get_children(brdev, &devlist, &numdevs)) { : + for (tmp = 0; tmp < numdevs; tmp++) Actually this is a problem. While the old code ignores errors, I don't think that's really the right thing to do here. It is critical that the children be deleted. Warner From owner-p4-projects@FreeBSD.ORG Fri Jan 19 12:03:11 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 9AEE916A49E; Fri, 19 Jan 2007 12:03:11 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 4382316A4AB for ; Fri, 19 Jan 2007 12:03:11 +0000 (UTC) (envelope-from rdivacky@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 3264E13C45E for ; Fri, 19 Jan 2007 12:03:11 +0000 (UTC) (envelope-from rdivacky@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0JC3BCZ052391 for ; Fri, 19 Jan 2007 12:03:11 GMT (envelope-from rdivacky@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0JC39ce052382 for perforce@freebsd.org; Fri, 19 Jan 2007 12:03:09 GMT (envelope-from rdivacky@FreeBSD.org) Date: Fri, 19 Jan 2007 12:03:09 GMT Message-Id: <200701191203.l0JC39ce052382@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to rdivacky@FreeBSD.org using -f From: Roman Divacky To: Perforce Change Reviews Cc: Subject: PERFORCE change 113156 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 19 Jan 2007 12:03:11 -0000 http://perforce.freebsd.org/chv.cgi?CH=113156 Change 113156 by rdivacky@rdivacky_witten on 2007/01/19 12:02:23 IFC Affected files ... .. //depot/projects/linuxolator/src/sys/arm/at91/uart_dev_at91usart.c#3 integrate .. //depot/projects/linuxolator/src/sys/arm/sa11x0/uart_dev_sa1110.c#2 integrate .. //depot/projects/linuxolator/src/sys/compat/linux/linux_file.c#13 integrate .. //depot/projects/linuxolator/src/sys/conf/options#14 integrate .. //depot/projects/linuxolator/src/sys/dev/cardbus/cardbus.c#2 integrate .. //depot/projects/linuxolator/src/sys/dev/dpt/dpt.h#2 integrate .. //depot/projects/linuxolator/src/sys/dev/dpt/dpt_eisa.c#3 integrate .. //depot/projects/linuxolator/src/sys/dev/dpt/dpt_scsi.c#3 integrate .. //depot/projects/linuxolator/src/sys/dev/fb/fbreg.h#2 integrate .. //depot/projects/linuxolator/src/sys/dev/si/si.c#3 integrate .. //depot/projects/linuxolator/src/sys/dev/sound/sbus/cs4231.c#2 integrate .. //depot/projects/linuxolator/src/sys/dev/uart/uart_cpu.h#2 integrate .. //depot/projects/linuxolator/src/sys/dev/uart/uart_dev_ns8250.c#2 integrate .. //depot/projects/linuxolator/src/sys/dev/uart/uart_dev_sab82532.c#2 integrate .. //depot/projects/linuxolator/src/sys/dev/uart/uart_dev_z8530.c#2 integrate .. //depot/projects/linuxolator/src/sys/dev/uart/uart_kbd_sun.c#5 integrate .. //depot/projects/linuxolator/src/sys/netgraph/ng_ppp.c#3 integrate .. //depot/projects/linuxolator/src/sys/netinet/sctp_asconf.c#6 integrate .. //depot/projects/linuxolator/src/sys/netinet/sctp_asconf.h#3 integrate .. //depot/projects/linuxolator/src/sys/netinet/sctp_auth.c#3 integrate .. //depot/projects/linuxolator/src/sys/netinet/sctp_bsd_addr.c#3 integrate .. //depot/projects/linuxolator/src/sys/netinet/sctp_bsd_addr.h#2 integrate .. //depot/projects/linuxolator/src/sys/netinet/sctp_constants.h#5 integrate .. //depot/projects/linuxolator/src/sys/netinet/sctp_crc32.h#2 integrate .. //depot/projects/linuxolator/src/sys/netinet/sctp_indata.c#6 integrate .. //depot/projects/linuxolator/src/sys/netinet/sctp_indata.h#3 integrate .. //depot/projects/linuxolator/src/sys/netinet/sctp_input.c#6 integrate .. //depot/projects/linuxolator/src/sys/netinet/sctp_input.h#2 integrate .. //depot/projects/linuxolator/src/sys/netinet/sctp_os.h#3 integrate .. //depot/projects/linuxolator/src/sys/netinet/sctp_os_bsd.h#5 integrate .. //depot/projects/linuxolator/src/sys/netinet/sctp_output.c#6 integrate .. //depot/projects/linuxolator/src/sys/netinet/sctp_output.h#2 integrate .. //depot/projects/linuxolator/src/sys/netinet/sctp_pcb.c#6 integrate .. //depot/projects/linuxolator/src/sys/netinet/sctp_pcb.h#5 integrate .. //depot/projects/linuxolator/src/sys/netinet/sctp_peeloff.c#3 integrate .. //depot/projects/linuxolator/src/sys/netinet/sctp_peeloff.h#2 integrate .. //depot/projects/linuxolator/src/sys/netinet/sctp_structs.h#6 integrate .. //depot/projects/linuxolator/src/sys/netinet/sctp_timer.c#4 integrate .. //depot/projects/linuxolator/src/sys/netinet/sctp_timer.h#2 integrate .. //depot/projects/linuxolator/src/sys/netinet/sctp_usrreq.c#6 integrate .. //depot/projects/linuxolator/src/sys/netinet/sctp_var.h#4 integrate .. //depot/projects/linuxolator/src/sys/netinet/sctputil.c#6 integrate .. //depot/projects/linuxolator/src/sys/netinet/sctputil.h#5 integrate .. //depot/projects/linuxolator/src/sys/netinet6/sctp6_usrreq.c#6 integrate .. //depot/projects/linuxolator/src/sys/netinet6/sctp6_var.h#2 integrate .. //depot/projects/linuxolator/src/sys/sparc64/include/bus.h#2 integrate .. //depot/projects/linuxolator/src/sys/sparc64/include/cache.h#2 integrate .. //depot/projects/linuxolator/src/sys/sparc64/include/frame.h#2 integrate .. //depot/projects/linuxolator/src/sys/sparc64/include/fsr.h#2 integrate .. //depot/projects/linuxolator/src/sys/sparc64/include/intr_machdep.h#2 integrate .. //depot/projects/linuxolator/src/sys/sparc64/include/pcb.h#2 integrate .. //depot/projects/linuxolator/src/sys/sparc64/include/tsb.h#2 integrate .. //depot/projects/linuxolator/src/sys/sparc64/isa/isa.c#2 integrate .. //depot/projects/linuxolator/src/sys/sparc64/pci/ofw_pci_if.m#2 integrate .. //depot/projects/linuxolator/src/sys/sparc64/pci/psycho.c#3 integrate .. //depot/projects/linuxolator/src/sys/sparc64/sparc64/bus_machdep.c#2 integrate .. //depot/projects/linuxolator/src/sys/sparc64/sparc64/exception.S#2 integrate .. //depot/projects/linuxolator/src/sys/sparc64/sparc64/genassym.c#7 integrate .. //depot/projects/linuxolator/src/sys/sparc64/sparc64/interrupt.S#2 integrate .. //depot/projects/linuxolator/src/sys/sparc64/sparc64/mp_exception.S#2 integrate .. //depot/projects/linuxolator/src/sys/sparc64/sparc64/mp_locore.S#2 integrate .. //depot/projects/linuxolator/src/sys/sparc64/sparc64/ofw_machdep.c#3 integrate .. //depot/projects/linuxolator/src/sys/sparc64/sparc64/support.S#3 integrate .. //depot/projects/linuxolator/src/sys/sparc64/sparc64/swtch.S#2 integrate .. //depot/projects/linuxolator/src/sys/sun4v/include/bus.h#2 integrate .. //depot/projects/linuxolator/src/sys/sun4v/include/frame.h#2 integrate .. //depot/projects/linuxolator/src/sys/sun4v/include/fsr.h#2 integrate .. //depot/projects/linuxolator/src/sys/sun4v/include/intr_machdep.h#2 integrate .. //depot/projects/linuxolator/src/sys/sun4v/include/pcb.h#3 integrate .. //depot/projects/linuxolator/src/sys/sun4v/include/utrap.h#3 integrate .. //depot/projects/linuxolator/src/sys/sun4v/sun4v/bus_machdep.c#2 integrate .. //depot/projects/linuxolator/src/sys/sun4v/sun4v/exception.S#7 integrate .. //depot/projects/linuxolator/src/sys/sun4v/sun4v/hv_pci.c#3 integrate .. //depot/projects/linuxolator/src/sys/sun4v/sun4v/interrupt.S#7 integrate .. //depot/projects/linuxolator/src/sys/sun4v/sun4v/mp_locore.S#3 integrate .. //depot/projects/linuxolator/src/sys/sun4v/sun4v/support.S#5 integrate .. //depot/projects/linuxolator/src/sys/sun4v/sun4v/swtch.S#2 integrate .. //depot/projects/linuxolator/src/sys/sun4v/sun4v/wbuf.S#4 integrate Differences ... ==== //depot/projects/linuxolator/src/sys/arm/at91/uart_dev_at91usart.c#3 (text) ==== @@ -26,7 +26,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/arm/at91/uart_dev_at91usart.c,v 1.10 2006/12/07 00:24:15 cognet Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/at91/uart_dev_at91usart.c,v 1.11 2007/01/18 22:01:19 marius Exp $"); #include "opt_comconsole.h" @@ -94,7 +94,7 @@ static void at91_usart_init(struct uart_bas *bas, int, int, int, int); static void at91_usart_term(struct uart_bas *bas); static void at91_usart_putc(struct uart_bas *bas, int); -static int at91_usart_poll(struct uart_bas *bas); +static int at91_usart_rxready(struct uart_bas *bas); static int at91_usart_getc(struct uart_bas *bas, struct mtx *mtx); extern SLIST_HEAD(uart_devinfo_list, uart_devinfo) uart_sysdevs; @@ -201,7 +201,7 @@ .init = at91_usart_init, .term = at91_usart_term, .putc = at91_usart_putc, - .poll = at91_usart_poll, + .rxready = at91_usart_rxready, .getc = at91_usart_getc, }; @@ -252,15 +252,13 @@ } /* - * Poll for a character available + * Check for a character available. */ static int -at91_usart_poll(struct uart_bas *bas) +at91_usart_rxready(struct uart_bas *bas) { - if (!(RD4(bas, USART_CSR) & USART_CSR_RXRDY)) - return (-1); - return (RD4(bas, USART_RHR) & 0xff); + return ((RD4(bas, USART_CSR) & USART_CSR_RXRDY) != 0 ? 1 : 0); } /* ==== //depot/projects/linuxolator/src/sys/arm/sa11x0/uart_dev_sa1110.c#2 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/arm/sa11x0/uart_dev_sa1110.c,v 1.6 2006/06/07 11:28:17 cognet Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/sa11x0/uart_dev_sa1110.c,v 1.7 2007/01/18 22:01:19 marius Exp $"); #include #include @@ -52,7 +52,7 @@ static void sa1110_init(struct uart_bas *bas, int, int, int, int); static void sa1110_term(struct uart_bas *bas); static void sa1110_putc(struct uart_bas *bas, int); -static int sa1110_poll(struct uart_bas *bas); +static int sa1110_rxready(struct uart_bas *bas); static int sa1110_getc(struct uart_bas *bas, struct mtx *mtx); extern SLIST_HEAD(uart_devinfo_list, uart_devinfo) uart_sysdevs; @@ -62,7 +62,7 @@ .init = sa1110_init, .term = sa1110_term, .putc = sa1110_putc, - .poll = sa1110_poll, + .rxready = sa1110_rxready, .getc = sa1110_getc, }; @@ -102,11 +102,10 @@ } static int -sa1110_poll(struct uart_bas *bas) +sa1110_rxready(struct uart_bas *bas) { - if (!(uart_getreg(bas, SACOM_SR1) & SR1_RNE)) - return (-1); - return (uart_getreg(bas, SACOM_DR) & 0xff); + + return ((uart_getreg(bas, SACOM_SR1) & SR1_RNE) != 0 ? 1 : 0); } static int ==== //depot/projects/linuxolator/src/sys/compat/linux/linux_file.c#13 (text+ko) ==== @@ -27,7 +27,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/compat/linux/linux_file.c,v 1.100 2007/01/18 09:32:08 kib Exp $"); +__FBSDID("$FreeBSD: src/sys/compat/linux/linux_file.c,v 1.101 2007/01/18 10:42:10 kib Exp $"); #include "opt_compat.h" #include "opt_mac.h" ==== //depot/projects/linuxolator/src/sys/conf/options#14 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/options,v 1.572 2007/01/10 18:45:17 marius Exp $ +# $FreeBSD: src/sys/conf/options,v 1.573 2007/01/18 13:33:36 marius Exp $ # # On the handling of kernel options # @@ -662,6 +662,8 @@ DEV_CARP opt_carp.h DEV_SPLASH opt_splash.h +# EISA support +DEV_EISA opt_eisa.h EISA_SLOTS opt_eisa.h # ed driver ==== //depot/projects/linuxolator/src/sys/dev/cardbus/cardbus.c#2 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/cardbus/cardbus.c,v 1.62 2006/06/12 03:17:24 imp Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/cardbus/cardbus.c,v 1.63 2007/01/19 08:49:28 imp Exp $"); #include #include @@ -217,7 +217,8 @@ int tmp; int err = 0; - device_get_children(cbdev, &devlist, &numdevs); + if (device_get_children(cbdev, &devlist, &numdevs) != 0) + return (ENOENT); if (numdevs == 0) { free(devlist, M_TEMP); @@ -251,7 +252,9 @@ struct cardbus_devinfo *dinfo; DEVICE_IDENTIFY(driver, cbdev); - device_get_children(cbdev, &devlist, &numdevs); + if (device_get_children(cbdev, &devlist, &numdevs) != 0) + return; + /* * If there are no drivers attached, but there are children, * then power the card up. ==== //depot/projects/linuxolator/src/sys/dev/dpt/dpt.h#2 (text+ko) ==== @@ -40,7 +40,7 @@ */ -#ident "$FreeBSD: src/sys/dev/dpt/dpt.h,v 1.16 2005/01/06 01:42:35 imp Exp $" +#ident "$FreeBSD: src/sys/dev/dpt/dpt.h,v 1.17 2007/01/18 13:33:36 marius Exp $" #ifndef _DPT_H #define _DPT_H @@ -1292,7 +1292,9 @@ int dpt_attach(dpt_softc_t * dpt); void dpt_intr(void *arg); +#ifdef DEV_EISA dpt_conf_t * dpt_pio_get_conf(u_int32_t); +#endif #if 0 extern void hex_dump(u_char * data, int length, ==== //depot/projects/linuxolator/src/sys/dev/dpt/dpt_eisa.c#3 (text+ko) ==== @@ -26,7 +26,9 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/dpt/dpt_eisa.c,v 1.21 2006/12/11 18:28:30 mjacob Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/dpt/dpt_eisa.c,v 1.22 2007/01/18 13:33:36 marius Exp $"); + +#include "opt_eisa.h" #include #include ==== //depot/projects/linuxolator/src/sys/dev/dpt/dpt_scsi.c#3 (text+ko) ==== @@ -27,9 +27,9 @@ * SUCH DAMAGE. */ -#ident "$FreeBSD: src/sys/dev/dpt/dpt_scsi.c,v 1.54 2006/11/02 00:54:36 mjacob Exp $" +#ident "$FreeBSD: src/sys/dev/dpt/dpt_scsi.c,v 1.55 2007/01/18 13:33:36 marius Exp $" #include -__FBSDID("$FreeBSD: src/sys/dev/dpt/dpt_scsi.c,v 1.54 2006/11/02 00:54:36 mjacob Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/dpt/dpt_scsi.c,v 1.55 2007/01/18 13:33:36 marius Exp $"); /* * dpt_scsi.c: SCSI dependant code for the DPT driver @@ -50,6 +50,8 @@ #define _DPT_C_ #include "opt_dpt.h" +#include "opt_eisa.h" + #include #include #include @@ -106,7 +108,9 @@ /* ================= Private Inline Function declarations ===================*/ static __inline int dpt_just_reset(dpt_softc_t * dpt); static __inline int dpt_raid_busy(dpt_softc_t * dpt); +#ifdef DEV_EISA static __inline int dpt_pio_wait (u_int32_t, u_int, u_int, u_int); +#endif static __inline int dpt_wait(dpt_softc_t *dpt, u_int bits, u_int state); static __inline struct dpt_ccb* dptgetccb(struct dpt_softc *dpt); @@ -181,6 +185,7 @@ return (0); } +#ifdef DEV_EISA static __inline int dpt_pio_wait (u_int32_t base, u_int reg, u_int bits, u_int state) { @@ -196,6 +201,7 @@ } return (-1); } +#endif static __inline int dpt_wait(dpt_softc_t *dpt, u_int bits, u_int state) @@ -386,6 +392,7 @@ return (i); } +#ifdef DEV_EISA dpt_conf_t * dpt_pio_get_conf (u_int32_t base) { @@ -478,6 +485,7 @@ } return (NULL); } +#endif /* * Read a configuration page into the supplied dpt_cont_t buffer. ==== //depot/projects/linuxolator/src/sys/dev/fb/fbreg.h#2 (text+ko) ==== @@ -23,7 +23,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $FreeBSD: src/sys/dev/fb/fbreg.h,v 1.20 2005/12/06 11:19:36 ru Exp $ + * $FreeBSD: src/sys/dev/fb/fbreg.h,v 1.21 2007/01/18 13:08:08 marius Exp $ */ #ifndef _DEV_FB_FBREG_H_ @@ -50,7 +50,8 @@ #define bzero_io(d, c) bzero((void *)(d), (c)) #define fill_io(p, d, c) fill((p), (void *)(d), (c)) #define fillw_io(p, d, c) fillw((p), (void *)(d), (c)) -#elif defined(__ia64__) +#elif defined(__ia64__) || defined(__sparc64__) +#if defined(__ia64__) #include #define bcopy_fromio(s, d, c) \ bus_space_read_region_1(IA64_BUS_SPACE_MEM, s, 0, (void*)(d), c) @@ -69,6 +70,7 @@ #define writeb(a, v) bus_space_write_1(IA64_BUS_SPACE_MEM, a, 0, v) #define writew(a, v) bus_space_write_2(IA64_BUS_SPACE_MEM, a, 0, v) #define writel(a, v) bus_space_write_4(IA64_BUS_SPACE_MEM, a, 0, v) +#endif /* __ia64__ */ static __inline void fillw(int val, uint16_t *buf, size_t size) { @@ -91,7 +93,7 @@ u_int16_t ofwfb_readw(u_int16_t *addr); void ofwfb_writew(u_int16_t *addr, u_int16_t val); -#else /* !__i386__ && !__ia64__ && !__amd64__ && !__powerpc__ */ +#else /* !__i386__ && !__amd64__ && !__ia64__ && !__sparc64__ && !__powerpc__ */ #define bcopy_io(s, d, c) memcpy_io((d), (s), (c)) #define bcopy_toio(s, d, c) memcpy_toio((d), (void *)(s), (c)) #define bcopy_fromio(s, d, c) memcpy_fromio((void *)(d), (s), (c)) ==== //depot/projects/linuxolator/src/sys/dev/si/si.c#3 (text+ko) ==== @@ -33,7 +33,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/si/si.c,v 1.138 2006/11/06 13:41:55 rwatson Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/si/si.c,v 1.139 2007/01/18 13:33:36 marius Exp $"); #ifndef lint static const char si_copyright1[] = "@(#) Copyright (C) Specialix International, 1990,1992,1998", @@ -43,6 +43,7 @@ #include "opt_compat.h" #include "opt_debug_si.h" +#include "opt_eisa.h" #include "opt_tty.h" #include @@ -277,8 +278,10 @@ /* Stop the CPU first so it won't stomp around while we load */ switch (sc->sc_type) { +#ifdef DEV_EISA case SIEISA: outb(sc->sc_iobase + 2, sc->sc_irq << 4); +#endif break; case SIPCI: *(maddr+SIPCIRESET) = 0; @@ -321,12 +324,14 @@ /* Now start the CPU */ switch (sc->sc_type) { +#ifdef DEV_EISA case SIEISA: /* modify the download code to tell it that it's on an EISA */ *(maddr + 0x42) = 1; outb(sc->sc_iobase + 2, (sc->sc_irq << 4) | 4); (void)inb(sc->sc_iobase + 3); /* reset interrupt */ break; +#endif case SIPCI: /* modify the download code to tell it that it's on a PCI */ *(maddr+0x42) = 1; @@ -1132,11 +1137,13 @@ ((volatile struct si_reg *)maddr)->int_pending = 0; *(maddr+SIJETINTCL) = 0x0; break; +#ifdef DEV_EISA case SIEISA: maddr = sc->sc_maddr; ((volatile struct si_reg *)maddr)->int_pending = 0; (void)inb(sc->sc_iobase + 3); break; +#endif case SIEMPTY: default: continue; @@ -1622,7 +1629,9 @@ { switch (host_type) { /* Z280 based cards */ +#ifdef DEV_EISA case SIEISA: +#endif case SIHOST2: case SIHOST: case SIPCI: ==== //depot/projects/linuxolator/src/sys/dev/sound/sbus/cs4231.c#2 (text+ko) ==== @@ -37,7 +37,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/sound/sbus/cs4231.c,v 1.4 2005/05/19 18:13:49 marius Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/sound/sbus/cs4231.c,v 1.5 2007/01/18 19:19:19 marius Exp $"); #include #include @@ -306,10 +306,12 @@ static int cs4231_bus_probe(device_t dev) { - const char *name; + const char *compat, *name; + compat = ofw_bus_get_compat(dev); name = ofw_bus_get_name(dev); - if (strcmp("SUNW,CS4231", name) == 0) { + if (strcmp("SUNW,CS4231", name) == 0 || + (compat != NULL && strcmp("SUNW,CS4231", compat) == 0)) { device_set_desc(dev, "Sun Audiocs"); return (BUS_PROBE_DEFAULT); } @@ -319,11 +321,9 @@ static int cs4231_sbus_attach(device_t dev) { - struct snddev_info *d; struct cs4231_softc *sc; int burst; - d = device_get_softc(dev); sc = malloc(sizeof(struct cs4231_softc), M_DEVBUF, M_NOWAIT | M_ZERO); if (sc == NULL) { device_printf(dev, "cannot allocate softc\n"); @@ -352,10 +352,8 @@ static int cs4231_ebus_attach(device_t dev) { - struct snddev_info *d; struct cs4231_softc *sc; - d = device_get_softc(dev); sc = malloc(sizeof(struct cs4231_softc), M_DEVBUF, M_NOWAIT | M_ZERO); if (sc == NULL) { device_printf(dev, "cannot allocate softc\n"); ==== //depot/projects/linuxolator/src/sys/dev/uart/uart_cpu.h#2 (text+ko) ==== @@ -23,7 +23,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $FreeBSD: src/sys/dev/uart/uart_cpu.h,v 1.10 2006/04/01 19:04:54 marcel Exp $ + * $FreeBSD: src/sys/dev/uart/uart_cpu.h,v 1.11 2007/01/18 22:01:19 marius Exp $ */ #ifndef _DEV_UART_CPU_H_ @@ -41,7 +41,7 @@ void (*init)(struct uart_bas *, int, int, int, int); void (*term)(struct uart_bas *); void (*putc)(struct uart_bas *, int); - int (*poll)(struct uart_bas *); + int (*rxready)(struct uart_bas *); int (*getc)(struct uart_bas *, struct mtx *); }; @@ -137,12 +137,26 @@ } static __inline int +uart_rxready(struct uart_devinfo *di) +{ + int res; + + uart_lock(di->hwmtx); + res = di->ops.rxready(&di->bas); + uart_unlock(di->hwmtx); + return (res); +} + +static __inline int uart_poll(struct uart_devinfo *di) { int res; uart_lock(di->hwmtx); - res = di->ops.poll(&di->bas); + if (di->ops.rxready(&di->bas)) + res = di->ops.getc(&di->bas, NULL); + else + res = -1; uart_unlock(di->hwmtx); return (res); } ==== //depot/projects/linuxolator/src/sys/dev/uart/uart_dev_ns8250.c#2 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/uart/uart_dev_ns8250.c,v 1.23 2006/05/23 06:04:45 benno Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/uart/uart_dev_ns8250.c,v 1.24 2007/01/18 22:01:19 marius Exp $"); #include #include @@ -217,7 +217,7 @@ static void ns8250_init(struct uart_bas *bas, int, int, int, int); static void ns8250_term(struct uart_bas *bas); static void ns8250_putc(struct uart_bas *bas, int); -static int ns8250_poll(struct uart_bas *bas); +static int ns8250_rxready(struct uart_bas *bas); static int ns8250_getc(struct uart_bas *bas, struct mtx *); struct uart_ops uart_ns8250_ops = { @@ -225,7 +225,7 @@ .init = ns8250_init, .term = ns8250_term, .putc = ns8250_putc, - .poll = ns8250_poll, + .rxready = ns8250_rxready, .getc = ns8250_getc, }; @@ -299,12 +299,10 @@ } static int -ns8250_poll(struct uart_bas *bas) +ns8250_rxready(struct uart_bas *bas) { - if (uart_getreg(bas, REG_LSR) & LSR_RXRDY) - return (uart_getreg(bas, REG_DATA)); - return (-1); + return ((uart_getreg(bas, REG_LSR) & LSR_RXRDY) != 0 ? 1 : 0); } static int ==== //depot/projects/linuxolator/src/sys/dev/uart/uart_dev_sab82532.c#2 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/uart/uart_dev_sab82532.c,v 1.14 2006/04/01 19:04:54 marcel Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/uart/uart_dev_sab82532.c,v 1.15 2007/01/18 22:01:19 marius Exp $"); #include #include @@ -173,7 +173,7 @@ static void sab82532_init(struct uart_bas *bas, int, int, int, int); static void sab82532_term(struct uart_bas *bas); static void sab82532_putc(struct uart_bas *bas, int); -static int sab82532_poll(struct uart_bas *bas); +static int sab82532_rxready(struct uart_bas *bas); static int sab82532_getc(struct uart_bas *bas, struct mtx *); struct uart_ops uart_sab82532_ops = { @@ -181,7 +181,7 @@ .init = sab82532_init, .term = sab82532_term, .putc = sab82532_putc, - .poll = sab82532_poll, + .rxready = sab82532_rxready, .getc = sab82532_getc, }; @@ -303,12 +303,10 @@ } static int -sab82532_poll(struct uart_bas *bas) +sab82532_rxready(struct uart_bas *bas) { - if (uart_getreg(bas, SAB_STAR) & SAB_STAR_RFNE) - return (sab82532_getc(bas, NULL)); - return (-1); + return ((uart_getreg(bas, SAB_STAR) & SAB_STAR_RFNE) != 0 ? 1 : 0); } static int ==== //depot/projects/linuxolator/src/sys/dev/uart/uart_dev_z8530.c#2 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/uart/uart_dev_z8530.c,v 1.20 2006/07/26 17:29:37 marcel Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/uart/uart_dev_z8530.c,v 1.21 2007/01/18 22:01:19 marius Exp $"); #include #include @@ -192,7 +192,7 @@ static void z8530_init(struct uart_bas *bas, int, int, int, int); static void z8530_term(struct uart_bas *bas); static void z8530_putc(struct uart_bas *bas, int); -static int z8530_poll(struct uart_bas *bas); +static int z8530_rxready(struct uart_bas *bas); static int z8530_getc(struct uart_bas *bas, struct mtx *); struct uart_ops uart_z8530_ops = { @@ -200,7 +200,7 @@ .init = z8530_init, .term = z8530_term, .putc = z8530_putc, - .poll = z8530_poll, + .rxready = z8530_rxready, .getc = z8530_getc, }; @@ -235,12 +235,10 @@ } static int -z8530_poll(struct uart_bas *bas) +z8530_rxready(struct uart_bas *bas) { - if (!(uart_getreg(bas, REG_CTRL) & BES_RXA)) - return (-1); - return (uart_getreg(bas, REG_DATA)); + return ((uart_getreg(bas, REG_CTRL) & BES_RXA) != 0 ? 1 : 0); } static int ==== //depot/projects/linuxolator/src/sys/dev/uart/uart_kbd_sun.c#5 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/uart/uart_kbd_sun.c,v 1.10 2006/11/02 00:01:15 marius Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/uart/uart_kbd_sun.c,v 1.11 2007/01/18 22:01:19 marius Exp $"); #include "opt_compat.h" #include "opt_kbd.h" @@ -72,8 +72,6 @@ struct uart_softc *sc_uart; struct uart_devinfo *sc_sysdev; - int sc_checked_key; - struct callout sc_repeat_callout; int sc_repeat_key; @@ -403,7 +401,7 @@ return (TRUE); if (sc->sc_polling != 0 && sc->sc_sysdev != NULL && - (sc->sc_checked_key = uart_poll(sc->sc_sysdev)) != -1) + uart_rxready(sc->sc_sysdev)) return (TRUE); return (FALSE); @@ -441,12 +439,6 @@ goto process_code; } - if (sc->sc_checked_key != -1) { - suncode = sc->sc_checked_key; - sc->sc_checked_key = -1; - goto process_code; - } - for (;;) { next_code: if (!(sc->sc_flags & KPCOMPOSE) && (sc->sc_composed_char > 0)) { @@ -472,7 +464,6 @@ case SKBD_RSP_IDLE: break; default: - process_code: ++kbd->kb_count; key = SKBD_KEY_CHAR(suncode); @@ -565,10 +556,12 @@ if (key == 0x13) { /* left alt (KP compose key) */ #endif if (release != 0) { - if (sc->sc_flags & KPCOMPOSE) { - sc->sc_flags &= ~KPCOMPOSE; - if (sc->sc_composed_char > UCHAR_MAX) - sc->sc_composed_char = 0; + if (sc->sc_flags & KPCOMPOSE) { + sc->sc_flags &= ~KPCOMPOSE; + if (sc->sc_composed_char > + UCHAR_MAX) + sc->sc_composed_char = + 0; } } else { if (!(sc->sc_flags & KPCOMPOSE)) { @@ -768,7 +761,6 @@ struct sunkbd_softc *sc; sc = (struct sunkbd_softc *)kbd; - sc->sc_checked_key = -1; sc->sc_repeat_key = -1; sc->sc_accents = 0; sc->sc_composed_char = 0; ==== //depot/projects/linuxolator/src/sys/netgraph/ng_ppp.c#3 (text+ko) ==== @@ -1,11 +1,7 @@ -/* - * ng_ppp.c - */ - /*- * Copyright (c) 1996-2000 Whistle Communications, Inc. * All rights reserved. - * + * * Subject to the following obligations and disclaimer of warranty, use and * redistribution of this software, in source or object code forms, with or * without modifications are expressly permitted by Whistle Communications; @@ -16,7 +12,7 @@ * Communications, Inc. trademarks, including the mark "WHISTLE * COMMUNICATIONS" on advertising, endorsements, or otherwise except as * such appears in the above copyright notice or in the software. - * + * * THIS SOFTWARE IS BEING PROVIDED BY WHISTLE COMMUNICATIONS "AS IS", AND * TO THE MAXIMUM EXTENT PERMITTED BY LAW, WHISTLE COMMUNICATIONS MAKES NO * REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, REGARDING THIS SOFTWARE, @@ -35,14 +31,63 @@ * THIS SOFTWARE, EVEN IF WHISTLE COMMUNICATIONS IS ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. * - * Author: Archie Cobbs + * Copyright (c) 2007 Alexander Motin + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice unmodified, this list of conditions, and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * Authors: Archie Cobbs , Alexander Motin * - * $FreeBSD: src/sys/netgraph/ng_ppp.c,v 1.58 2006/12/28 13:21:54 glebius Exp $ + * $FreeBSD: src/sys/netgraph/ng_ppp.c,v 1.61 2007/01/18 19:41:39 mjacob Exp $ * $Whistle: ng_ppp.c,v 1.24 1999/11/01 09:24:52 julian Exp $ */ /* - * PPP node type. + * PPP node type data-flow. + * + * hook xmit layer recv hook + * ------------------------------------ + * inet -> -> inet + * ipv6 -> -> ipv6 + * ipx -> proto -> ipx + * atalk -> -> atalk + * bypass -> -> bypass + * -hcomp_xmit()----------proto_recv()- + * vjc_ip <- <- vjc_ip + * vjc_comp -> header compression -> vjc_comp + * vjc_uncomp -> -> vjc_uncomp + * vjc_vjip -> -> vjc_vjip + * -comp_xmit()-----------hcomp_recv()- + * compress <- compression <- decompress + * compress -> -> decompress + * -crypt_xmit()-----------comp_recv()- + * encrypt <- encryption <- decrypt + * encrypt -> -> decrypt + * -ml_xmit()-------------crypt_recv()- + * multilink + * -link_xmit()--------------ml_recv()- + * linkX <- link <- linkX + * */ #include @@ -71,7 +116,7 @@ #define PROT_COMPRESSABLE(p) (((p) & 0xff00) == 0x0000) /* Some PPP protocol numbers we're interested in */ -#define PROT_APPLETALK 0x0029 +#define PROT_ATALK 0x0029 #define PROT_COMPD 0x00fd #define PROT_CRYPTD 0x0053 #define PROT_IP 0x0021 @@ -123,8 +168,8 @@ MP_SHORT_EXTEND((seq) + 1) : \ MP_LONG_EXTEND((seq) + 1)) -/* Don't fragment transmitted packets smaller than this */ -#define MP_MIN_FRAG_LEN 6 +/* Don't fragment transmitted packets to parts smaller than this */ +#define MP_MIN_FRAG_LEN 32 /* Maximum fragment reasssembly queue length */ #define MP_MAX_QUEUE_LEN 128 @@ -132,64 +177,28 @@ /* Fragment queue scanner period */ #define MP_FRAGTIMER_INTERVAL (hz/2) +/* Keep this equal to ng_ppp_hook_names lower! */ +#define HOOK_INDEX_MAX 13 + /* We store incoming fragments this way */ struct ng_ppp_frag { int seq; /* fragment seq# */ - u_char first; /* First in packet? */ - u_char last; /* Last in packet? */ + uint8_t first; /* First in packet? */ + uint8_t last; /* Last in packet? */ struct timeval timestamp; /* time of reception */ struct mbuf *data; /* Fragment data */ TAILQ_ENTRY(ng_ppp_frag) f_qent; /* Fragment queue */ }; -/* We use integer indicies to refer to the non-link hooks */ -static const char *const ng_ppp_hook_names[] = { - NG_PPP_HOOK_ATALK, -#define HOOK_INDEX_ATALK 0 - NG_PPP_HOOK_BYPASS, -#define HOOK_INDEX_BYPASS 1 - NG_PPP_HOOK_COMPRESS, -#define HOOK_INDEX_COMPRESS 2 - NG_PPP_HOOK_ENCRYPT, -#define HOOK_INDEX_ENCRYPT 3 - NG_PPP_HOOK_DECOMPRESS, -#define HOOK_INDEX_DECOMPRESS 4 - NG_PPP_HOOK_DECRYPT, -#define HOOK_INDEX_DECRYPT 5 - NG_PPP_HOOK_INET, -#define HOOK_INDEX_INET 6 - NG_PPP_HOOK_IPX, -#define HOOK_INDEX_IPX 7 - NG_PPP_HOOK_VJC_COMP, -#define HOOK_INDEX_VJC_COMP 8 - NG_PPP_HOOK_VJC_IP, -#define HOOK_INDEX_VJC_IP 9 - NG_PPP_HOOK_VJC_UNCOMP, -#define HOOK_INDEX_VJC_UNCOMP 10 - NG_PPP_HOOK_VJC_VJIP, -#define HOOK_INDEX_VJC_VJIP 11 - NG_PPP_HOOK_IPV6, -#define HOOK_INDEX_IPV6 12 - NULL -#define HOOK_INDEX_MAX 13 -}; - -/* We store index numbers in the hook private pointer. The HOOK_INDEX() - for a hook is either the index (above) for normal hooks, or the ones - complement of the link number for link hooks. -XXX Not any more.. (what a hack) -#define HOOK_INDEX(hook) (*((int16_t *) &(hook)->private)) -*/ - /* Per-link private information */ struct ng_ppp_link { struct ng_ppp_link_conf conf; /* link configuration */ + struct ng_ppp_link_stat stats; /* link stats */ hook_p hook; /* connection to link data */ int32_t seq; /* highest rec'd seq# - MSEQ */ - u_int32_t latency; /* calculated link latency */ - struct timeval lastWrite; /* time of last write */ - int bytesInQueue; /* bytes in the output queue */ - struct ng_ppp_link_stat stats; /* Link stats */ + uint32_t latency; /* calculated link latency */ + struct timeval lastWrite; /* time of last write for MP */ + int bytesInQueue; /* bytes in the output queue for MP */ }; /* Total per-node private information */ @@ -199,11 +208,11 @@ struct ng_ppp_link links[NG_PPP_MAX_LINKS];/* per-link info */ int32_t xseq; /* next out MP seq # */ int32_t mseq; /* min links[i].seq */ - u_char vjCompHooked; /* VJ comp hooked up? */ - u_char allLinksEqual; /* all xmit the same? */ - u_int numActiveLinks; /* how many links up */ - int activeLinks[NG_PPP_MAX_LINKS]; /* indicies */ - u_int lastLink; /* for round robin */ + uint16_t activeLinks[NG_PPP_MAX_LINKS]; /* indicies */ + uint16_t numActiveLinks; /* how many links up */ + uint16_t lastLink; /* for round robin */ + uint8_t vjCompHooked; /* VJ comp hooked up? */ + uint8_t allLinksEqual; /* all xmit the same? */ hook_p hooks[HOOK_INDEX_MAX]; /* non-link hooks */ TAILQ_HEAD(ng_ppp_fraglist, ng_ppp_frag) /* fragment queue */ frags; @@ -220,27 +229,90 @@ static ng_rcvdata_t ng_ppp_rcvdata; static ng_disconnect_t ng_ppp_disconnect; +static ng_rcvdata_t ng_ppp_rcvdata_inet; +static ng_rcvdata_t ng_ppp_rcvdata_ipv6; +static ng_rcvdata_t ng_ppp_rcvdata_ipx; +static ng_rcvdata_t ng_ppp_rcvdata_atalk; +static ng_rcvdata_t ng_ppp_rcvdata_bypass; + +static ng_rcvdata_t ng_ppp_rcvdata_vjc_ip; +static ng_rcvdata_t ng_ppp_rcvdata_vjc_comp; +static ng_rcvdata_t ng_ppp_rcvdata_vjc_uncomp; +static ng_rcvdata_t ng_ppp_rcvdata_vjc_vjip; + +static ng_rcvdata_t ng_ppp_rcvdata_compress; +static ng_rcvdata_t ng_ppp_rcvdata_decompress; + +static ng_rcvdata_t ng_ppp_rcvdata_encrypt; +static ng_rcvdata_t ng_ppp_rcvdata_decrypt; + +/* We use integer indicies to refer to the non-link hooks. */ +static const struct { + char *const name; + ng_rcvdata_t *fn; +} ng_ppp_hook_names[] = { +#define HOOK_INDEX_ATALK 0 + { NG_PPP_HOOK_ATALK, ng_ppp_rcvdata_atalk }, +#define HOOK_INDEX_BYPASS 1 + { NG_PPP_HOOK_BYPASS, ng_ppp_rcvdata_bypass }, +#define HOOK_INDEX_COMPRESS 2 + { NG_PPP_HOOK_COMPRESS, ng_ppp_rcvdata_compress }, +#define HOOK_INDEX_ENCRYPT 3 >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Fri Jan 19 13:29:00 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id D637916A405; Fri, 19 Jan 2007 13:28:59 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 98AAC16A400 for ; Fri, 19 Jan 2007 13:28:59 +0000 (UTC) (envelope-from zec@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 8845013C46A for ; Fri, 19 Jan 2007 13:28:59 +0000 (UTC) (envelope-from zec@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0JDSxIa080324 for ; Fri, 19 Jan 2007 13:28:59 GMT (envelope-from zec@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0JDSwY6080321 for perforce@freebsd.org; Fri, 19 Jan 2007 13:28:58 GMT (envelope-from zec@FreeBSD.org) Date: Fri, 19 Jan 2007 13:28:58 GMT Message-Id: <200701191328.l0JDSwY6080321@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to zec@FreeBSD.org using -f From: Marko Zec To: Perforce Change Reviews Cc: Subject: PERFORCE change 113159 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 19 Jan 2007 13:29:00 -0000 http://perforce.freebsd.org/chv.cgi?CH=113159 Change 113159 by zec@zec_tpx32 on 2007/01/19 13:28:56 First more or less systematic attempt on virtualizing the INET6 code and structs, modulo simple tunable knobs. Affected files ... .. //depot/projects/vimage/src/sys/netinet/ip6.h#2 edit .. //depot/projects/vimage/src/sys/netinet/tcp_input.c#5 edit .. //depot/projects/vimage/src/sys/netinet6/dest6.c#2 edit .. //depot/projects/vimage/src/sys/netinet6/frag6.c#3 edit .. //depot/projects/vimage/src/sys/netinet6/icmp6.c#4 edit .. //depot/projects/vimage/src/sys/netinet6/in6.c#4 edit .. //depot/projects/vimage/src/sys/netinet6/in6_ifattach.c#5 edit .. //depot/projects/vimage/src/sys/netinet6/in6_pcb.c#5 edit .. //depot/projects/vimage/src/sys/netinet6/in6_proto.c#2 edit .. //depot/projects/vimage/src/sys/netinet6/in6_rmx.c#3 edit .. //depot/projects/vimage/src/sys/netinet6/in6_src.c#4 edit .. //depot/projects/vimage/src/sys/netinet6/in6_var.h#3 edit .. //depot/projects/vimage/src/sys/netinet6/ip6_forward.c#3 edit .. //depot/projects/vimage/src/sys/netinet6/ip6_input.c#6 edit .. //depot/projects/vimage/src/sys/netinet6/ip6_mroute.c#4 edit .. //depot/projects/vimage/src/sys/netinet6/ip6_output.c#4 edit .. //depot/projects/vimage/src/sys/netinet6/ip6_var.h#2 edit .. //depot/projects/vimage/src/sys/netinet6/mld6.c#4 edit .. //depot/projects/vimage/src/sys/netinet6/nd6.c#7 edit .. //depot/projects/vimage/src/sys/netinet6/nd6.h#2 edit .. //depot/projects/vimage/src/sys/netinet6/nd6_nbr.c#4 edit .. //depot/projects/vimage/src/sys/netinet6/nd6_rtr.c#4 edit .. //depot/projects/vimage/src/sys/netinet6/raw_ip6.c#5 edit .. //depot/projects/vimage/src/sys/netinet6/route6.c#2 edit .. //depot/projects/vimage/src/sys/netinet6/scope6.c#6 edit .. //depot/projects/vimage/src/sys/netinet6/udp6_usrreq.c#6 edit .. //depot/projects/vimage/src/sys/netinet6/vinet6.h#4 edit .. //depot/projects/vimage/src/sys/sys/vimage.h#11 edit Differences ... ==== //depot/projects/vimage/src/sys/netinet/ip6.h#2 (text+ko) ==== @@ -275,24 +275,24 @@ if (((m)->m_flags & M_LOOP) && \ ((m)->m_len < (off) + (hlen)) && \ (((m) = m_pullup((m), (off) + (hlen))) == NULL)) { \ - ip6stat.ip6s_exthdrtoolong++; \ + V_ip6stat.ip6s_exthdrtoolong++; \ return ret; \ } else if ((m)->m_flags & M_EXT) { \ if ((m)->m_len < (off) + (hlen)) { \ - ip6stat.ip6s_exthdrtoolong++; \ + V_ip6stat.ip6s_exthdrtoolong++; \ m_freem(m); \ return ret; \ } \ } else { \ if ((m)->m_len < (off) + (hlen)) { \ - ip6stat.ip6s_exthdrtoolong++; \ + V_ip6stat.ip6s_exthdrtoolong++; \ m_freem(m); \ return ret; \ } \ } \ } else { \ if ((m)->m_len < (off) + (hlen)) { \ - ip6stat.ip6s_tooshort++; \ + V_ip6stat.ip6s_tooshort++; \ in6_ifstat_inc(m->m_pkthdr.rcvif, ifs6_in_truncated); \ m_freem(m); \ return ret; \ ==== //depot/projects/vimage/src/sys/netinet/tcp_input.c#5 (text+ko) ==== @@ -74,6 +74,7 @@ #include #include #include +#include #include #include #include @@ -411,6 +412,7 @@ struct mbuf **mp; int *offp, proto; { + INIT_VNET_INET6(curvnetb); register struct mbuf *m = *mp; struct in6_ifaddr *ia6; @@ -441,6 +443,7 @@ int off0; { INIT_VNET_INET(curvnetb); + INIT_VNET_INET6(curvnetb); register struct tcphdr *th; register struct ip *ip = NULL; register struct ipovly *ipov; ==== //depot/projects/vimage/src/sys/netinet6/dest6.c#2 (text+ko) ==== @@ -32,6 +32,7 @@ #include "opt_inet.h" #include "opt_inet6.h" +#include "opt_vimage.h" #include #include @@ -43,6 +44,8 @@ #include #include #include +#include +#include #include #include @@ -50,6 +53,7 @@ #include #include #include +#include #include #include @@ -61,6 +65,7 @@ struct mbuf **mp; int *offp, proto; { + INIT_VNET_INET6(curvnetb); struct mbuf *m = *mp; int off = *offp, dstoptlen, optlen; struct ip6_dest *dstopts; @@ -93,7 +98,7 @@ for (optlen = 0; dstoptlen > 0; dstoptlen -= optlen, opt += optlen) { if (*opt != IP6OPT_PAD1 && (dstoptlen < IP6OPT_MINLEN || *(opt + 1) + 2 > dstoptlen)) { - ip6stat.ip6s_toosmall++; + V_ip6stat.ip6s_toosmall++; goto bad; } ==== //depot/projects/vimage/src/sys/netinet6/frag6.c#3 (text+ko) ==== @@ -30,6 +30,8 @@ * SUCH DAMAGE. */ +#include "opt_vimage.h" + #include #include #include @@ -41,6 +43,8 @@ #include #include #include +#include +#include #include #include @@ -48,6 +52,7 @@ #include #include #include +#include #include #include #include /* for ECN definitions */ @@ -70,9 +75,11 @@ /* * These fields all protected by ip6qlock. */ +#ifndef VIMAGE static u_int frag6_nfragpackets; static u_int frag6_nfrags; static struct ip6q ip6q; /* ip6 reassemble queue */ +#endif #define IP6Q_LOCK_INIT() mtx_init(&ip6qlock, "ip6qlock", NULL, MTX_DEF); #define IP6Q_LOCK() mtx_lock(&ip6qlock) @@ -96,15 +103,20 @@ void frag6_init() { + INIT_VNET_INET6(curvnetb); + V_ip6q.ip6q_next = V_ip6q.ip6q_prev = &V_ip6q; + +#ifdef VIMAGE + if (curvnetb != &vnetb_0) + return; +#endif ip6_maxfragpackets = nmbclusters / 4; ip6_maxfrags = nmbclusters / 4; EVENTHANDLER_REGISTER(nmbclusters_change, frag6_change, NULL, EVENTHANDLER_PRI_ANY); IP6Q_LOCK_INIT(); - - ip6q.ip6q_next = ip6q.ip6q_prev = &ip6q; } /* @@ -144,6 +156,7 @@ struct mbuf **mp; int *offp, proto; { + INIT_VNET_INET6(curvnetb); struct mbuf *m = *mp, *t; struct ip6_hdr *ip6; struct ip6_frag *ip6f; @@ -203,7 +216,7 @@ return IPPROTO_DONE; } - ip6stat.ip6s_fragments++; + V_ip6stat.ip6s_fragments++; in6_ifstat_inc(dstifp, ifs6_reass_reqd); /* offset now points to data portion */ @@ -218,16 +231,16 @@ */ if (ip6_maxfrags < 0) ; - else if (frag6_nfrags >= (u_int)ip6_maxfrags) + else if (V_frag6_nfrags >= (u_int)ip6_maxfrags) goto dropfrag; - for (q6 = ip6q.ip6q_next; q6 != &ip6q; q6 = q6->ip6q_next) + for (q6 = V_ip6q.ip6q_next; q6 != &V_ip6q; q6 = q6->ip6q_next) if (ip6f->ip6f_ident == q6->ip6q_ident && IN6_ARE_ADDR_EQUAL(&ip6->ip6_src, &q6->ip6q_src) && IN6_ARE_ADDR_EQUAL(&ip6->ip6_dst, &q6->ip6q_dst)) break; - if (q6 == &ip6q) { + if (q6 == &V_ip6q) { /* * the first fragment to arrive, create a reassembly queue. */ @@ -242,16 +255,16 @@ */ if (ip6_maxfragpackets < 0) ; - else if (frag6_nfragpackets >= (u_int)ip6_maxfragpackets) + else if (V_frag6_nfragpackets >= (u_int)ip6_maxfragpackets) goto dropfrag; - frag6_nfragpackets++; + V_frag6_nfragpackets++; q6 = (struct ip6q *)malloc(sizeof(struct ip6q), M_FTABLE, M_NOWAIT); if (q6 == NULL) goto dropfrag; bzero(q6, sizeof(*q6)); - frag6_insque(q6, &ip6q); + frag6_insque(q6, &V_ip6q); /* ip6q_nxt will be filled afterwards, from 1st fragment */ q6->ip6q_down = q6->ip6q_up = (struct ip6asfrag *)q6; @@ -465,12 +478,12 @@ * the most recently active fragmented packet. */ frag6_enq(ip6af, af6->ip6af_up); - frag6_nfrags++; + V_frag6_nfrags++; q6->ip6q_nfrag++; #if 0 /* xxx */ - if (q6 != ip6q.ip6q_next) { + if (q6 != V_ip6q.ip6q_next) { frag6_remque(q6); - frag6_insque(q6, &ip6q); + frag6_insque(q6, &V_ip6q); } #endif next = 0; @@ -529,9 +542,9 @@ /* this comes with no copy if the boundary is on cluster */ if ((t = m_split(m, offset, M_DONTWAIT)) == NULL) { frag6_remque(q6); - frag6_nfrags -= q6->ip6q_nfrag; + V_frag6_nfrags -= q6->ip6q_nfrag; free(q6, M_FTABLE); - frag6_nfragpackets--; + V_frag6_nfragpackets--; goto dropfrag; } m_adj(t, sizeof(struct ip6_frag)); @@ -547,9 +560,9 @@ } frag6_remque(q6); - frag6_nfrags -= q6->ip6q_nfrag; + V_frag6_nfrags -= q6->ip6q_nfrag; free(q6, M_FTABLE); - frag6_nfragpackets--; + V_frag6_nfragpackets--; if (m->m_flags & M_PKTHDR) { /* Isn't it always true? */ int plen = 0; @@ -558,7 +571,7 @@ m->m_pkthdr.len = plen; } - ip6stat.ip6s_reassembled++; + V_ip6stat.ip6s_reassembled++; in6_ifstat_inc(dstifp, ifs6_reass_ok); /* @@ -574,7 +587,7 @@ dropfrag: IP6Q_UNLOCK(); in6_ifstat_inc(dstifp, ifs6_reass_fail); - ip6stat.ip6s_fragdropped++; + V_ip6stat.ip6s_fragdropped++; m_freem(m); return IPPROTO_DONE; } @@ -587,6 +600,7 @@ frag6_freef(q6) struct ip6q *q6; { + INIT_VNET_INET6(curvnetb); struct ip6asfrag *af6, *down6; IP6Q_LOCK_ASSERT(); @@ -619,9 +633,9 @@ free(af6, M_FTABLE); } frag6_remque(q6); - frag6_nfrags -= q6->ip6q_nfrag; + V_frag6_nfrags -= q6->ip6q_nfrag; free(q6, M_FTABLE); - frag6_nfragpackets--; + V_frag6_nfragpackets--; } /* @@ -694,13 +708,15 @@ #endif IP6Q_LOCK(); - q6 = ip6q.ip6q_next; + VNETB_ITERLOOP_BEGIN() + INIT_VNET_INET6(curvnetb); + q6 = V_ip6q.ip6q_next; if (q6) - while (q6 != &ip6q) { + while (q6 != &V_ip6q) { --q6->ip6q_ttl; q6 = q6->ip6q_next; if (q6->ip6q_prev->ip6q_ttl == 0) { - ip6stat.ip6s_fragtimeout++; + V_ip6stat.ip6s_fragtimeout++; /* XXX in6_ifstat_inc(ifp, ifs6_reass_fail) */ frag6_freef(q6->ip6q_prev); } @@ -710,12 +726,13 @@ * (due to the limit being lowered), drain off * enough to get down to the new limit. */ - while (frag6_nfragpackets > (u_int)ip6_maxfragpackets && - ip6q.ip6q_prev) { - ip6stat.ip6s_fragoverflow++; + while (V_frag6_nfragpackets > (u_int)ip6_maxfragpackets && + V_ip6q.ip6q_prev) { + V_ip6stat.ip6s_fragoverflow++; /* XXX in6_ifstat_inc(ifp, ifs6_reass_fail) */ - frag6_freef(ip6q.ip6q_prev); + frag6_freef(V_ip6q.ip6q_prev); } + VNETB_ITERLOOP_END() IP6Q_UNLOCK(); #if 0 @@ -724,9 +741,9 @@ * make sure we notice eventually, even if forwarding only for one * destination and the cache is never replaced. */ - if (ip6_forward_rt.ro_rt) { - RTFREE(ip6_forward_rt.ro_rt); - ip6_forward_rt.ro_rt = 0; + if (V_ip6_forward_rt.ro_rt) { + RTFREE(V_ip6_forward_rt.ro_rt); + V_ip6_forward_rt.ro_rt = 0; } if (ipsrcchk_rt.ro_rt) { RTFREE(ipsrcchk_rt.ro_rt); @@ -744,10 +761,13 @@ if (IP6Q_TRYLOCK() == 0) return; - while (ip6q.ip6q_next != &ip6q) { - ip6stat.ip6s_fragdropped++; + VNETB_ITERLOOP_BEGIN() + INIT_VNET_INET6(curvnetb); + while (V_ip6q.ip6q_next != &V_ip6q) { + V_ip6stat.ip6s_fragdropped++; /* XXX in6_ifstat_inc(ifp, ifs6_reass_fail) */ - frag6_freef(ip6q.ip6q_next); + frag6_freef(V_ip6q.ip6q_next); } + VNETB_ITERLOOP_END() IP6Q_UNLOCK(); } ==== //depot/projects/vimage/src/sys/netinet6/icmp6.c#4 (text+ko) ==== @@ -95,6 +95,7 @@ #include #include #include +#include #include #include #include @@ -115,9 +116,9 @@ extern struct domain inet6domain; +#ifndef VIMAGE struct icmp6stat icmp6stat; -#ifndef VIMAGE extern struct inpcbinfo ripcbinfo; extern struct inpcbhead ripcb; #endif @@ -215,6 +216,7 @@ int type, code, param; struct ifnet *ifp; { + INIT_VNET_INET6(curvnetb); struct ip6_hdr *ip6; if (ifp == NULL) @@ -248,20 +250,21 @@ struct mbuf *m; int type, code, param; { + INIT_VNET_INET6(curvnetb); struct ip6_hdr *oip6, *nip6; struct icmp6_hdr *icmp6; u_int preplen; int off; int nxt; - icmp6stat.icp6s_error++; + V_icmp6stat.icp6s_error++; /* count per-type-code statistics */ - icmp6_errcount(&icmp6stat.icp6s_outerrhist, type, code); + icmp6_errcount(&V_icmp6stat.icp6s_outerrhist, type, code); #ifdef M_DECRYPTED /*not openbsd*/ if (m->m_flags & M_DECRYPTED) { - icmp6stat.icp6s_canterror++; + V_icmp6stat.icp6s_canterror++; goto freeit; } #endif @@ -319,7 +322,7 @@ IP6_EXTHDR_GET(icp, struct icmp6_hdr *, m, off, sizeof(*icp)); if (icp == NULL) { - icmp6stat.icp6s_tooshort++; + V_icmp6stat.icp6s_tooshort++; return; } #endif @@ -330,7 +333,7 @@ * Special case: for redirect (which is * informational) we must not send icmp6 error. */ - icmp6stat.icp6s_canterror++; + V_icmp6stat.icp6s_canterror++; goto freeit; } else { /* ICMPv6 informational - send the error */ @@ -343,7 +346,7 @@ /* Finally, do rate limitation check. */ if (icmp6_ratelimit(&oip6->ip6_src, type, code)) { - icmp6stat.icp6s_toofreq++; + V_icmp6stat.icp6s_toofreq++; goto freeit; } @@ -384,7 +387,7 @@ */ m->m_pkthdr.rcvif = NULL; - icmp6stat.icp6s_outhist[type]++; + V_icmp6stat.icp6s_outhist[type]++; icmp6_reflect(m, sizeof(struct ip6_hdr)); /* header order: IPv6 - ICMPv6 */ return; @@ -404,6 +407,7 @@ struct mbuf **mp; int *offp, proto; { + INIT_VNET_INET6(curvnetb); struct mbuf *m = *mp, *n; struct ip6_hdr *ip6, *nip6; struct icmp6_hdr *icmp6, *nicmp6; @@ -424,7 +428,7 @@ ip6 = mtod(m, struct ip6_hdr *); if (icmp6len < sizeof(struct icmp6_hdr)) { - icmp6stat.icp6s_tooshort++; + V_icmp6stat.icp6s_tooshort++; goto freeit; } @@ -436,7 +440,7 @@ #else IP6_EXTHDR_GET(icmp6, struct icmp6_hdr *, m, off, sizeof(*icmp6)); if (icmp6 == NULL) { - icmp6stat.icp6s_tooshort++; + V_icmp6stat.icp6s_tooshort++; return IPPROTO_DONE; } #endif @@ -447,7 +451,7 @@ "ICMP6 checksum error(%d|%x) %s\n", icmp6->icmp6_type, sum, ip6_sprintf(ip6bufs, &ip6->ip6_src))); - icmp6stat.icp6s_checksum++; + V_icmp6stat.icp6s_checksum++; goto freeit; } @@ -467,7 +471,7 @@ } } - icmp6stat.icp6s_inhist[icmp6->icmp6_type]++; + V_icmp6stat.icp6s_inhist[icmp6->icmp6_type]++; icmp6_ifstat_inc(m->m_pkthdr.rcvif, ifs6_in_msg); if (icmp6->icmp6_type < ICMP6_INFOMSG_MASK) icmp6_ifstat_inc(m->m_pkthdr.rcvif, ifs6_in_error); @@ -600,8 +604,8 @@ nicmp6->icmp6_type = ICMP6_ECHO_REPLY; nicmp6->icmp6_code = 0; if (n) { - icmp6stat.icp6s_reflect++; - icmp6stat.icp6s_outhist[ICMP6_ECHO_REPLY]++; + V_icmp6stat.icp6s_reflect++; + V_icmp6stat.icp6s_outhist[ICMP6_ECHO_REPLY]++; icmp6_reflect(n, noff); } break; @@ -727,8 +731,8 @@ } #undef hostnamelen if (n) { - icmp6stat.icp6s_reflect++; - icmp6stat.icp6s_outhist[ICMP6_WRUREPLY]++; + V_icmp6stat.icp6s_reflect++; + V_icmp6stat.icp6s_outhist[ICMP6_WRUREPLY]++; icmp6_reflect(n, noff); } break; @@ -849,11 +853,11 @@ break; badcode: - icmp6stat.icp6s_badcode++; + V_icmp6stat.icp6s_badcode++; break; badlen: - icmp6stat.icp6s_badlen++; + V_icmp6stat.icp6s_badlen++; break; } @@ -872,6 +876,7 @@ struct mbuf **mp; int off, icmp6len, code; { + INIT_VNET_INET6(curvnetb); struct mbuf *m = *mp; struct icmp6_hdr *icmp6; struct ip6_hdr *eip6; @@ -879,7 +884,7 @@ struct sockaddr_in6 icmp6src, icmp6dst; if (icmp6len < sizeof(struct icmp6_hdr) + sizeof(struct ip6_hdr)) { - icmp6stat.icp6s_tooshort++; + V_icmp6stat.icp6s_tooshort++; goto freeit; } #ifndef PULLDOWN_TEST @@ -890,7 +895,7 @@ IP6_EXTHDR_GET(icmp6, struct icmp6_hdr *, m, off, sizeof(*icmp6) + sizeof(struct ip6_hdr)); if (icmp6 == NULL) { - icmp6stat.icp6s_tooshort++; + V_icmp6stat.icp6s_tooshort++; return (-1); } #endif @@ -925,7 +930,7 @@ IP6_EXTHDR_GET(eh, struct ip6_ext *, m, eoff, sizeof(*eh)); if (eh == NULL) { - icmp6stat.icp6s_tooshort++; + V_icmp6stat.icp6s_tooshort++; return (-1); } #endif @@ -953,7 +958,7 @@ IP6_EXTHDR_GET(rth, struct ip6_rthdr *, m, eoff, sizeof(*rth)); if (rth == NULL) { - icmp6stat.icp6s_tooshort++; + V_icmp6stat.icp6s_tooshort++; return (-1); } #endif @@ -979,7 +984,7 @@ struct ip6_rthdr0 *, m, eoff, rthlen); if (rth0 == NULL) { - icmp6stat.icp6s_tooshort++; + V_icmp6stat.icp6s_tooshort++; return (-1); } #endif @@ -1001,7 +1006,7 @@ IP6_EXTHDR_GET(fh, struct ip6_frag *, m, eoff, sizeof(*fh)); if (fh == NULL) { - icmp6stat.icp6s_tooshort++; + V_icmp6stat.icp6s_tooshort++; return (-1); } #endif @@ -1036,7 +1041,7 @@ IP6_EXTHDR_GET(icmp6, struct icmp6_hdr *, m, off, sizeof(*icmp6) + sizeof(struct ip6_hdr)); if (icmp6 == NULL) { - icmp6stat.icp6s_tooshort++; + V_icmp6stat.icp6s_tooshort++; return (-1); } #endif @@ -1105,6 +1110,7 @@ struct ip6ctlparam *ip6cp; int validated; { + INIT_VNET_INET6(curvnetb); struct in6_addr *dst = ip6cp->ip6c_finaldst; struct icmp6_hdr *icmp6 = ip6cp->ip6c_icmp6; struct mbuf *m = ip6cp->ip6c_m; /* will be necessary for scope issue */ @@ -1142,7 +1148,7 @@ if (mtu < tcp_maxmtu6(&inc, NULL)) { tcp_hc_updatemtu(&inc, mtu); - icmp6stat.icp6s_pmtuchg++; + V_icmp6stat.icp6s_pmtuchg++; } } @@ -1871,6 +1877,7 @@ int off; { INIT_VNET_INET(curvnetb); + INIT_VNET_INET6(curvnetb); struct mbuf *m = *mp; struct ip6_hdr *ip6 = mtod(m, struct ip6_hdr *); struct in6pcb *in6p; @@ -2020,7 +2027,7 @@ INP_UNLOCK(last); } else { m_freem(m); - ip6stat.ip6s_delivered--; + V_ip6stat.ip6s_delivered--; } INP_INFO_RUNLOCK(&V_ripcbinfo); return IPPROTO_DONE; @@ -2218,6 +2225,7 @@ struct mbuf *m; int off; { + INIT_VNET_INET6(curvnetb); struct ifnet *ifp = m->m_pkthdr.rcvif; struct ip6_hdr *ip6 = mtod(m, struct ip6_hdr *); struct nd_redirect *nd_rd; @@ -2250,7 +2258,7 @@ #else IP6_EXTHDR_GET(nd_rd, struct nd_redirect *, m, off, icmp6len); if (nd_rd == NULL) { - icmp6stat.icp6s_tooshort++; + V_icmp6stat.icp6s_tooshort++; return; } #endif @@ -2413,7 +2421,7 @@ return; bad: - icmp6stat.icp6s_badredirect++; + V_icmp6stat.icp6s_badredirect++; m_freem(m); } @@ -2422,6 +2430,7 @@ struct mbuf *m0; struct rtentry *rt; { + INIT_VNET_INET6(curvnetb); struct ifnet *ifp; /* my outgoing interface */ struct in6_addr *ifp_ll6; struct in6_addr *router_ll6; @@ -2434,7 +2443,7 @@ struct ifnet *outif = NULL; struct sockaddr_in6 src_sa; - icmp6_errcount(&icmp6stat.icp6s_outerrhist, ND_REDIRECT, 0); + icmp6_errcount(&V_icmp6stat.icp6s_outerrhist, ND_REDIRECT, 0); /* if we are not router, we don't send icmp6 redirect */ if (!ip6_forwarding) @@ -2689,7 +2698,7 @@ icmp6_ifstat_inc(outif, ifs6_out_msg); icmp6_ifstat_inc(outif, ifs6_out_redirect); } - icmp6stat.icp6s_outhist[ND_REDIRECT]++; + V_icmp6stat.icp6s_outhist[ND_REDIRECT]++; return; ==== //depot/projects/vimage/src/sys/netinet6/in6.c#4 (text+ko) ==== @@ -93,6 +93,7 @@ #include #include +#include #include #include #include @@ -231,6 +232,7 @@ void in6_ifremloop(struct ifaddr *ifa) { + INIT_VNET_INET6(curvnetb); struct in6_ifaddr *ia; struct rtentry *rt; int ia_count = 0; @@ -250,7 +252,7 @@ * (probably p2p) interfaces. * XXX: we should avoid such a configuration in IPv6... */ - for (ia = in6_ifaddr; ia; ia = ia->ia_next) { + for (ia = V_in6_ifaddr; ia; ia = ia->ia_next) { if (IN6_ARE_ADDR_EQUAL(IFA_IN6(ifa), &ia->ia_addr.sin6_addr)) { ia_count++; if (ia_count > 1) @@ -804,6 +806,7 @@ struct in6_ifaddr *ia; int flags; { + INIT_VNET_INET6(ifp->if_vnetb); int error = 0, hostIsNew = 0, plen = -1; struct in6_ifaddr *oia; struct sockaddr_in6 dst6; @@ -948,12 +951,12 @@ ia->ia_ifa.ifa_netmask = (struct sockaddr *)&ia->ia_prefixmask; ia->ia_ifp = ifp; - if ((oia = in6_ifaddr) != NULL) { + if ((oia = V_in6_ifaddr) != NULL) { for ( ; oia->ia_next; oia = oia->ia_next) continue; oia->ia_next = ia; } else - in6_ifaddr = ia; + V_in6_ifaddr = ia; ia->ia_ifa.ifa_refcnt = 1; TAILQ_INSERT_TAIL(&ifp->if_addrlist, &ia->ia_ifa, ifa_list); @@ -1381,14 +1384,15 @@ struct in6_ifaddr *ia; struct ifnet *ifp; { + INIT_VNET_INET6(ifp->if_vnetb); struct in6_ifaddr *oia; int s = splnet(); TAILQ_REMOVE(&ifp->if_addrlist, &ia->ia_ifa, ifa_list); oia = ia; - if (oia == (ia = in6_ifaddr)) - in6_ifaddr = ia->ia_next; + if (oia == (ia = V_in6_ifaddr)) + V_in6_ifaddr = ia->ia_next; else { while (ia->ia_next && (ia->ia_next != oia)) ia = ia->ia_next; @@ -1964,12 +1968,13 @@ in6_localaddr(in6) struct in6_addr *in6; { + INIT_VNET_INET6(curvnetb); struct in6_ifaddr *ia; if (IN6_IS_ADDR_LOOPBACK(in6) || IN6_IS_ADDR_LINKLOCAL(in6)) return 1; - for (ia = in6_ifaddr; ia; ia = ia->ia_next) { + for (ia = V_in6_ifaddr; ia; ia = ia->ia_next) { if (IN6_ARE_MASKED_ADDR_EQUAL(in6, &ia->ia_addr.sin6_addr, &ia->ia_prefixmask.sin6_addr)) { return 1; @@ -1983,9 +1988,10 @@ in6_is_addr_deprecated(sa6) struct sockaddr_in6 *sa6; { + INIT_VNET_INET6(curvnetb); struct in6_ifaddr *ia; - for (ia = in6_ifaddr; ia; ia = ia->ia_next) { + for (ia = V_in6_ifaddr; ia; ia = ia->ia_next) { if (IN6_ARE_ADDR_EQUAL(&ia->ia_addr.sin6_addr, &sa6->sin6_addr) && (ia->ia6_flags & IN6_IFF_DEPRECATED) != 0) ==== //depot/projects/vimage/src/sys/netinet6/in6_ifattach.c#5 (text+ko) ==== @@ -55,6 +55,7 @@ #include #include +#include #include #include #include @@ -736,6 +737,7 @@ { INIT_VNET_NET(ifp->if_vnetb); INIT_VNET_INET(ifp->if_vnetb); + INIT_VNET_INET6(ifp->if_vnetb); struct in6_ifaddr *ia, *oia; struct ifaddr *ifa, *next; struct rtentry *rt; @@ -783,8 +785,8 @@ /* also remove from the IPv6 address chain(itojun&jinmei) */ oia = ia; - if (oia == (ia = in6_ifaddr)) - in6_ifaddr = ia->ia_next; + if (oia == (ia = V_in6_ifaddr)) + V_in6_ifaddr = ia->ia_next; else { while (ia->ia_next && (ia->ia_next != oia)) ia = ia->ia_next; @@ -873,8 +875,8 @@ } void -in6_tmpaddrtimer(ignored_arg) - void *ignored_arg; +in6_tmpaddrtimer(arg) + void *arg; { struct nd_ifinfo *ndi; u_int8_t nullbuf[8]; ==== //depot/projects/vimage/src/sys/netinet6/in6_pcb.c#5 (text+ko) ==== @@ -97,6 +97,8 @@ #include #include #include + +#include #include #include #include @@ -129,6 +131,7 @@ struct sockaddr *nam; struct ucred *cred; { + INIT_VNET_INET6(inp->inp_vnetb); struct socket *so = inp->inp_socket; struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *)NULL; struct inpcbinfo *pcbinfo = inp->inp_pcbinfo; @@ -138,7 +141,7 @@ INP_INFO_WLOCK_ASSERT(pcbinfo); INP_LOCK_ASSERT(inp); - if (!in6_ifaddr) /* XXX broken! */ + if (!V_in6_ifaddr) /* XXX broken! */ return (EADDRNOTAVAIL); if (inp->inp_lport || !IN6_IS_ADDR_UNSPECIFIED(&inp->in6p_laddr)) return (EINVAL); @@ -301,6 +304,7 @@ struct sockaddr *nam; struct in6_addr **plocal_addr6; { + INIT_VNET_INET6(inp->inp_vnetb); register struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *)nam; int error = 0; struct ifnet *ifp = NULL; @@ -321,7 +325,7 @@ if ((error = sa6_embedscope(sin6, ip6_use_defzone)) != 0) return(error); - if (in6_ifaddr) { + if (V_in6_ifaddr) { /* * If the destination address is UNSPECIFIED addr, * use the loopback addr, e.g ::1. ==== //depot/projects/vimage/src/sys/netinet6/in6_proto.c#2 (text+ko) ==== @@ -67,6 +67,7 @@ #include "opt_ipstealth.h" #include "opt_carp.h" #include "opt_sctp.h" +#include "opt_vimage.h" #include #include @@ -77,6 +78,7 @@ #include #include #include +#include #include #include @@ -89,6 +91,7 @@ #include #include #include +#include #include #include @@ -512,8 +515,8 @@ redirect, CTLFLAG_RW, &ip6_sendredirects, 0, ""); SYSCTL_INT(_net_inet6_ip6, IPV6CTL_DEFHLIM, hlim, CTLFLAG_RW, &ip6_defhlim, 0, ""); -SYSCTL_STRUCT(_net_inet6_ip6, IPV6CTL_STATS, stats, CTLFLAG_RD, - &ip6stat, ip6stat, ""); +SYSCTL_V_STRUCT(V_NET, vnet_inet6, _net_inet6_ip6, IPV6CTL_STATS, stats, + CTLFLAG_RD, ip6stat, ip6stat, ""); SYSCTL_INT(_net_inet6_ip6, IPV6CTL_MAXFRAGPACKETS, maxfragpackets, CTLFLAG_RW, &ip6_maxfragpackets, 0, ""); SYSCTL_INT(_net_inet6_ip6, IPV6CTL_ACCEPT_RTADV, @@ -551,8 +554,8 @@ TUNABLE_INT("net.inet6.ip6.auto_linklocal", &ip6_auto_linklocal); SYSCTL_INT(_net_inet6_ip6, IPV6CTL_AUTO_LINKLOCAL, auto_linklocal, CTLFLAG_RW, &ip6_auto_linklocal, 0, ""); -SYSCTL_STRUCT(_net_inet6_ip6, IPV6CTL_RIP6STATS, rip6stats, CTLFLAG_RD, - &rip6stat, rip6stat, ""); +SYSCTL_V_STRUCT(V_NET, vnet_inet6, _net_inet6_ip6, IPV6CTL_RIP6STATS, + rip6stats, CTLFLAG_RD, rip6stat, rip6stat, ""); SYSCTL_INT(_net_inet6_ip6, IPV6CTL_PREFER_TEMPADDR, prefer_tempaddr, CTLFLAG_RW, &ip6_prefer_tempaddr, 0, ""); SYSCTL_INT(_net_inet6_ip6, IPV6CTL_USE_DEFAULTZONE, @@ -571,8 +574,8 @@ rediraccept, CTLFLAG_RW, &icmp6_rediraccept, 0, ""); SYSCTL_INT(_net_inet6_icmp6, ICMPV6CTL_REDIRTIMEOUT, redirtimeout, CTLFLAG_RW, &icmp6_redirtimeout, 0, ""); -SYSCTL_STRUCT(_net_inet6_icmp6, ICMPV6CTL_STATS, stats, CTLFLAG_RD, - &icmp6stat, icmp6stat, ""); +SYSCTL_V_STRUCT(V_NET, vnet_inet6, _net_inet6_icmp6, ICMPV6CTL_STATS, + stats, CTLFLAG_RD, icmp6stat, icmp6stat, ""); SYSCTL_INT(_net_inet6_icmp6, ICMPV6CTL_ND6_PRUNE, nd6_prune, CTLFLAG_RW, &nd6_prune, 0, ""); SYSCTL_INT(_net_inet6_icmp6, ICMPV6CTL_ND6_DELAY, ==== //depot/projects/vimage/src/sys/netinet6/in6_rmx.c#3 (text+ko) ==== @@ -94,6 +94,8 @@ #include #include +#include + #include #include @@ -323,20 +325,29 @@ } #define RTQ_TIMEOUT 60*10 /* run no less than once every ten minutes */ -static int rtq_timeout = RTQ_TIMEOUT; -static struct callout rtq_timer; +#ifndef VIMAGE +static int rtq_timeout6; +static struct callout rtq_timer6; +#endif >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Fri Jan 19 16:56:26 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 9C51616A404; Fri, 19 Jan 2007 16:56:26 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 5599816A401 for ; Fri, 19 Jan 2007 16:56:26 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 2E24013C455 for ; Fri, 19 Jan 2007 16:56:26 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0JGuQmh025324 for ; Fri, 19 Jan 2007 16:56:26 GMT (envelope-from hselasky@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0JGuPu7025321 for perforce@freebsd.org; Fri, 19 Jan 2007 16:56:25 GMT (envelope-from hselasky@FreeBSD.org) Date: Fri, 19 Jan 2007 16:56:25 GMT Message-Id: <200701191656.l0JGuPu7025321@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to hselasky@FreeBSD.org using -f From: Hans Petter Selasky To: Perforce Change Reviews Cc: Subject: PERFORCE change 113164 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 19 Jan 2007 16:56:26 -0000 http://perforce.freebsd.org/chv.cgi?CH=113164 Change 113164 by hselasky@hselasky_mini_itx on 2007/01/19 16:56:15 The sound mutex needs to allow recursion, else the new "uaudio" will not work. Affected files ... .. //depot/projects/usb/src/sys/dev/sound/pcm/sound.c#3 edit Differences ... ==== //depot/projects/usb/src/sys/dev/sound/pcm/sound.c#3 (text+ko) ==== @@ -78,7 +78,7 @@ m = malloc(sizeof(*m), M_DEVBUF, M_WAITOK | M_ZERO); if (m == NULL) return NULL; - mtx_init(m, desc, type, MTX_DEF); + mtx_init(m, desc, type, MTX_DEF|MTX_RECURSE); return m; #else return (void *)0xcafebabe; From owner-p4-projects@FreeBSD.ORG Fri Jan 19 16:58:16 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 4F70516A406; Fri, 19 Jan 2007 16:58:16 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 1F9E316A402 for ; Fri, 19 Jan 2007 16:58:16 +0000 (UTC) (envelope-from asmrookie@gmail.com) Received: from nf-out-0910.google.com (nf-out-0910.google.com [64.233.182.190]) by mx1.freebsd.org (Postfix) with ESMTP id AD96313C46A for ; Fri, 19 Jan 2007 16:58:15 +0000 (UTC) (envelope-from asmrookie@gmail.com) Received: by nf-out-0910.google.com with SMTP id k27so521995nfc for ; Fri, 19 Jan 2007 08:58:14 -0800 (PST) DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=beta; h=received:message-id:date:from:sender:to:subject:cc:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references:x-google-sender-auth; b=gNgqirHGt0hvdVI5ffBv1FKqQ3keRM+QYIj6YpWtrtRbtgd45HbqwBwiRFTry0GrrDRlqkai+ivmNZX7vQ0P6NmcWqqxtQP5/Td6Ip6xdr/2VE/q82L6aJSH34gyMpwU72xgPdrEiX7PykMRSbfxYD/udIo46ASZHudsTOtAUMw= Received: by 10.49.8.16 with SMTP id l16mr2348807nfi.1169225893639; Fri, 19 Jan 2007 08:58:13 -0800 (PST) Received: by 10.48.238.14 with HTTP; Fri, 19 Jan 2007 08:58:13 -0800 (PST) Message-ID: <3bbf2fe10701190858v4fbdf5ct5fd39c6e16f2a10d@mail.gmail.com> Date: Fri, 19 Jan 2007 17:58:13 +0100 From: "Attilio Rao" Sender: asmrookie@gmail.com To: "Hans Petter Selasky" In-Reply-To: <200701191656.l0JGuPu7025321@repoman.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline References: <200701191656.l0JGuPu7025321@repoman.freebsd.org> X-Google-Sender-Auth: 31ac43d4c607d25c Cc: perforce@freebsd.org Subject: Re: PERFORCE change 113164 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 19 Jan 2007 16:58:16 -0000 2007/1/19, Hans Petter Selasky : > http://perforce.freebsd.org/chv.cgi?CH=113164 > > Change 113164 by hselasky@hselasky_mini_itx on 2007/01/19 16:56:15 > > The sound mutex needs to allow recursion, else the > new "uaudio" will not work. > > Affected files ... > > .. //depot/projects/usb/src/sys/dev/sound/pcm/sound.c#3 edit > > Differences ... > > ==== //depot/projects/usb/src/sys/dev/sound/pcm/sound.c#3 (text+ko) ==== > > @@ -78,7 +78,7 @@ > m = malloc(sizeof(*m), M_DEVBUF, M_WAITOK | M_ZERO); > if (m == NULL) > return NULL; > - mtx_init(m, desc, type, MTX_DEF); > + mtx_init(m, desc, type, MTX_DEF|MTX_RECURSE); > return m; > #else > return (void *)0xcafebabe; > Recursed mutexes very often are symptomatic of some some bug... it is the case? why the mutex is recursed? Attilio -- Peace can only be achieved by understanding - A. Einstein From owner-p4-projects@FreeBSD.ORG Fri Jan 19 17:14:30 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id B172716A40B; Fri, 19 Jan 2007 17:14:30 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 7E43316A406; Fri, 19 Jan 2007 17:14:30 +0000 (UTC) (envelope-from hselasky@c2i.net) Received: from swip.net (mailfe01.swip.net [212.247.154.1]) by mx1.freebsd.org (Postfix) with ESMTP id DE08113C441; Fri, 19 Jan 2007 17:14:29 +0000 (UTC) (envelope-from hselasky@c2i.net) X-Cloudmark-Score: 0.000000 [] Received: from [193.217.102.48] (account mc467741@c2i.net HELO [10.0.0.249]) by mailfe01.swip.net (CommuniGate Pro SMTP 5.0.12) with ESMTPA id 368855214; Fri, 19 Jan 2007 18:14:28 +0100 From: Hans Petter Selasky To: "Attilio Rao" Date: Fri, 19 Jan 2007 18:14:03 +0100 User-Agent: KMail/1.7 References: <200701191656.l0JGuPu7025321@repoman.freebsd.org> <3bbf2fe10701190858v4fbdf5ct5fd39c6e16f2a10d@mail.gmail.com> In-Reply-To: <3bbf2fe10701190858v4fbdf5ct5fd39c6e16f2a10d@mail.gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200701191814.04201.hselasky@c2i.net> Cc: perforce@freebsd.org Subject: Re: PERFORCE change 113164 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 19 Jan 2007 17:14:31 -0000 On Friday 19 January 2007 17:58, Attilio Rao wrote: > 2007/1/19, Hans Petter Selasky : > > http://perforce.freebsd.org/chv.cgi?CH=113164 > > > > Change 113164 by hselasky@hselasky_mini_itx on 2007/01/19 16:56:15 > > > > The sound mutex needs to allow recursion, else the > > new "uaudio" will not work. > > > > Affected files ... > > > > .. //depot/projects/usb/src/sys/dev/sound/pcm/sound.c#3 edit > > > > Differences ... > > > > ==== //depot/projects/usb/src/sys/dev/sound/pcm/sound.c#3 (text+ko) ==== > > > > @@ -78,7 +78,7 @@ > > m = malloc(sizeof(*m), M_DEVBUF, M_WAITOK | M_ZERO); > > if (m == NULL) > > return NULL; > > - mtx_init(m, desc, type, MTX_DEF); > > + mtx_init(m, desc, type, MTX_DEF|MTX_RECURSE); > > return m; > > #else > > return (void *)0xcafebabe; > > Recursed mutexes very often are symptomatic of some some bug... > it is the case? why the mutex is recursed? > Because my system shares the lock with the "pcm channel" of the sound system. That means it uses "c->lock" (see below) to protect the isochronous USB transfers. The problem is that my USB callback calls "chn_intr()" which also locks the same lock. Maybe this should be addressed by Ariff A. ? void chn_intr(struct pcm_channel *c) { CHN_LOCK(c); c->interrupts++; if (c->direction == PCMDIR_PLAY) chn_wrintr(c); else chn_rdintr(c); CHN_UNLOCK(c); } --HPS From owner-p4-projects@FreeBSD.ORG Fri Jan 19 18:42:20 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 5066E16A401; Fri, 19 Jan 2007 18:42:20 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id DA29616A404 for ; Fri, 19 Jan 2007 18:42:19 +0000 (UTC) (envelope-from asmrookie@gmail.com) Received: from nf-out-0910.google.com (nf-out-0910.google.com [64.233.182.190]) by mx1.freebsd.org (Postfix) with ESMTP id 7328713C43E for ; Fri, 19 Jan 2007 18:42:19 +0000 (UTC) (envelope-from asmrookie@gmail.com) Received: by nf-out-0910.google.com with SMTP id k27so545695nfc for ; Fri, 19 Jan 2007 10:42:18 -0800 (PST) DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=beta; h=received:message-id:date:from:sender:to:subject:cc:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references:x-google-sender-auth; b=JA0JZMS2rvKTHVwyxHIoZ+4VK4FHxmpBAhcXzBYyNn0bPO31/x2T5tuLi6MUCQRNrne2e9rUvUnb0ow5ph/dQpy4++9hwL2145VdeDJt1MvsZENfEeoqmkKEpeWBzoPB3obPVSMBCOd++VfyQ2UpxGUbj48d1z9A3qAUzENvsTM= Received: by 10.49.36.6 with SMTP id o6mr2600091nfj.1169232134902; Fri, 19 Jan 2007 10:42:14 -0800 (PST) Received: by 10.48.238.14 with HTTP; Fri, 19 Jan 2007 10:42:14 -0800 (PST) Message-ID: <3bbf2fe10701191042i2833731an96c286c40877353@mail.gmail.com> Date: Fri, 19 Jan 2007 19:42:14 +0100 From: "Attilio Rao" Sender: asmrookie@gmail.com To: "Hans Petter Selasky" In-Reply-To: <200701191814.04201.hselasky@c2i.net> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline References: <200701191656.l0JGuPu7025321@repoman.freebsd.org> <3bbf2fe10701190858v4fbdf5ct5fd39c6e16f2a10d@mail.gmail.com> <200701191814.04201.hselasky@c2i.net> X-Google-Sender-Auth: f06d7ce540acef9d Cc: perforce@freebsd.org Subject: Re: PERFORCE change 113164 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 19 Jan 2007 18:42:20 -0000 2007/1/19, Hans Petter Selasky : > On Friday 19 January 2007 17:58, Attilio Rao wrote: > > 2007/1/19, Hans Petter Selasky : > > > http://perforce.freebsd.org/chv.cgi?CH=113164 > > > > > > Change 113164 by hselasky@hselasky_mini_itx on 2007/01/19 16:56:15 > > > > > > The sound mutex needs to allow recursion, else the > > > new "uaudio" will not work. > > > > > > Affected files ... > > > > > > .. //depot/projects/usb/src/sys/dev/sound/pcm/sound.c#3 edit > > > > > > Differences ... > > > > > > ==== //depot/projects/usb/src/sys/dev/sound/pcm/sound.c#3 (text+ko) ==== > > > > > > @@ -78,7 +78,7 @@ > > > m = malloc(sizeof(*m), M_DEVBUF, M_WAITOK | M_ZERO); > > > if (m == NULL) > > > return NULL; > > > - mtx_init(m, desc, type, MTX_DEF); > > > + mtx_init(m, desc, type, MTX_DEF|MTX_RECURSE); > > > return m; > > > #else > > > return (void *)0xcafebabe; > > > > Recursed mutexes very often are symptomatic of some some bug... > > it is the case? why the mutex is recursed? > > > > Because my system shares the lock with the "pcm channel" of the sound system. > That means it uses "c->lock" (see below) to protect the isochronous USB > transfers. The problem is that my USB callback calls "chn_intr()" which also > locks the same lock. > > Maybe this should be addressed by Ariff A. ? > > void > chn_intr(struct pcm_channel *c) > { > CHN_LOCK(c); > c->interrupts++; > if (c->direction == PCMDIR_PLAY) > chn_wrintr(c); > else > chn_rdintr(c); > CHN_UNLOCK(c); > } One solution can be taking off the calls CHN_LOCK/CHN_UNLOCK from the "internal" functions and checking with mtx_assert inside them. Attilio -- Peace can only be achieved by understanding - A. Einstein From owner-p4-projects@FreeBSD.ORG Fri Jan 19 21:15:59 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id D4A8116A406; Fri, 19 Jan 2007 21:15:58 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 9947A16A402 for ; Fri, 19 Jan 2007 21:15:58 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 8748713C45A for ; Fri, 19 Jan 2007 21:15:58 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0JLFwdx088827 for ; Fri, 19 Jan 2007 21:15:58 GMT (envelope-from hselasky@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0JLFwFI088824 for perforce@freebsd.org; Fri, 19 Jan 2007 21:15:58 GMT (envelope-from hselasky@FreeBSD.org) Date: Fri, 19 Jan 2007 21:15:58 GMT Message-Id: <200701192115.l0JLFwFI088824@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to hselasky@FreeBSD.org using -f From: Hans Petter Selasky To: Perforce Change Reviews Cc: Subject: PERFORCE change 113175 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 19 Jan 2007 21:15:59 -0000 http://perforce.freebsd.org/chv.cgi?CH=113175 Change 113175 by hselasky@hselasky_mini_itx on 2007/01/19 21:15:07 Add missing "bus_dmamap_sync()" calls to the USB host controller drivers. Optimize the USB code with regard to "bus_dmamap_sync()". calls. Affected files ... .. //depot/projects/usb/src/sys/dev/usb/ehci.c#16 edit .. //depot/projects/usb/src/sys/dev/usb/ehci.h#7 edit .. //depot/projects/usb/src/sys/dev/usb/ehci_pci.c#12 edit .. //depot/projects/usb/src/sys/dev/usb/ohci.c#14 edit .. //depot/projects/usb/src/sys/dev/usb/ohci.h#6 edit .. //depot/projects/usb/src/sys/dev/usb/ohci_pci.c#12 edit .. //depot/projects/usb/src/sys/dev/usb/uhci.c#15 edit .. //depot/projects/usb/src/sys/dev/usb/uhci.h#6 edit .. //depot/projects/usb/src/sys/dev/usb/uhci_pci.c#11 edit .. //depot/projects/usb/src/sys/dev/usb/usb_subr.c#25 edit .. //depot/projects/usb/src/sys/dev/usb/usb_subr.h#28 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb/ehci.c#16 (text+ko) ==== @@ -101,12 +101,14 @@ extern struct usbd_pipe_methods ehci_root_ctrl_methods; extern struct usbd_pipe_methods ehci_root_intr_methods; -#define PHYSADDR(sc,what) \ - ((sc)->sc_physaddr + POINTER_TO_UNSIGNED(&(((struct ehci_softc *)0)->what))) +#define SC_HW_PHYSADDR(sc,what) \ + ((sc)->sc_hw_page.physaddr + \ + POINTER_TO_UNSIGNED(&(((struct ehci_hw_softc *)0)->what))) usbd_status ehci_init(ehci_softc_t *sc) { + struct ehci_hw_softc *hw_ptr; u_int32_t version, sparams, cparams, hcr; u_int i; u_int16_t x; @@ -116,6 +118,8 @@ mtx_lock(&sc->sc_bus.mtx); + hw_ptr = sc->sc_hw_ptr; + DPRINTF(("start\n")); LIST_INIT(&sc->sc_interrupt_list_head); @@ -193,26 +197,31 @@ sc->sc_eintrs = EHCI_NORMAL_INTRS; + usbd_page_sync(&(sc->sc_hw_page), BUS_DMASYNC_PREWRITE); + for(i = 0; i < EHCI_VIRTUAL_FRAMELIST_COUNT; i++) { - sc->sc_hw.intr_start[i].qh_self = - htole32(PHYSADDR(sc,sc_hw.intr_start[i])|EHCI_LINK_QH); + hw_ptr->intr_start[i].qh_self = + htole32(SC_HW_PHYSADDR(sc,intr_start[i])|EHCI_LINK_QH); - sc->sc_hw.intr_start[i].qh_endp = + hw_ptr->intr_start[i].qh_endp = htole32(EHCI_QH_SET_EPS(EHCI_QH_SPEED_HIGH)); - sc->sc_hw.intr_start[i].qh_endphub = + hw_ptr->intr_start[i].qh_endphub = htole32(EHCI_QH_SET_MULT(1)); - sc->sc_hw.intr_start[i].qh_curqtd = 0; + hw_ptr->intr_start[i].qh_curqtd = 0; - sc->sc_hw.intr_start[i].qh_qtd.qtd_next = + hw_ptr->intr_start[i].qh_qtd.qtd_next = htole32(EHCI_LINK_TERMINATE); - sc->sc_hw.intr_start[i].qh_qtd.qtd_altnext = + hw_ptr->intr_start[i].qh_qtd.qtd_altnext = htole32(EHCI_LINK_TERMINATE); - sc->sc_hw.intr_start[i].qh_qtd.qtd_status = + hw_ptr->intr_start[i].qh_qtd.qtd_status = htole32(EHCI_QTD_HALTED); + hw_ptr->intr_start[i].page = + &(sc->sc_hw_page); + sc->sc_intr_p_last[i] = - &sc->sc_hw.intr_start[i]; + &(hw_ptr->intr_start[i]); } /* @@ -230,43 +239,49 @@ /* the next QH has half the * poll interval */ - sc->sc_hw.intr_start[x].qh_link = - sc->sc_hw.intr_start[y].qh_self; + hw_ptr->intr_start[x].qh_link = + hw_ptr->intr_start[y].qh_self; x++; } bit >>= 1; } /* the last (1ms) QH terminates */ - sc->sc_hw.intr_start[0].qh_link = htole32(EHCI_LINK_TERMINATE); + hw_ptr->intr_start[0].qh_link = htole32(EHCI_LINK_TERMINATE); for(i = 0; i < EHCI_VIRTUAL_FRAMELIST_COUNT; i++) { /* initialize full speed isochronous */ - sc->sc_hw.isoc_fs_start[i].sitd_self = - htole32(PHYSADDR(sc,sc_hw.isoc_fs_start[i])|EHCI_LINK_SITD); + hw_ptr->isoc_fs_start[i].sitd_self = + htole32(SC_HW_PHYSADDR(sc,isoc_fs_start[i])|EHCI_LINK_SITD); - sc->sc_hw.isoc_fs_start[i].sitd_back = + hw_ptr->isoc_fs_start[i].sitd_back = htole32(EHCI_LINK_TERMINATE); - sc->sc_hw.isoc_fs_start[i].sitd_next = - sc->sc_hw.intr_start[i|(EHCI_VIRTUAL_FRAMELIST_COUNT/2)].qh_self; + hw_ptr->isoc_fs_start[i].sitd_next = + hw_ptr->intr_start[i|(EHCI_VIRTUAL_FRAMELIST_COUNT/2)].qh_self; + + hw_ptr->isoc_fs_start[i].page = + &(sc->sc_hw_page); sc->sc_isoc_fs_p_last[i] = - &sc->sc_hw.isoc_fs_start[i]; + &(hw_ptr->isoc_fs_start[i]); /* initialize high speed isochronous */ - sc->sc_hw.isoc_hs_start[i].itd_self = - htole32(PHYSADDR(sc,sc_hw.isoc_hs_start[i])|EHCI_LINK_ITD); + hw_ptr->isoc_hs_start[i].itd_self = + htole32(SC_HW_PHYSADDR(sc,isoc_hs_start[i])|EHCI_LINK_ITD); + + hw_ptr->isoc_hs_start[i].itd_next = + hw_ptr->isoc_fs_start[i].sitd_self; - sc->sc_hw.isoc_hs_start[i].itd_next = - sc->sc_hw.isoc_fs_start[i].sitd_self; + hw_ptr->isoc_hs_start[i].page = + &(sc->sc_hw_page); sc->sc_isoc_hs_p_last[i] = - &sc->sc_hw.isoc_hs_start[i]; + &(hw_ptr->isoc_hs_start[i]); } /* @@ -276,43 +291,49 @@ */ for(i = 0; i < EHCI_FRAMELIST_COUNT; i++) { - sc->sc_hw.pframes[i] = sc->sc_hw.isoc_hs_start + hw_ptr->pframes[i] = hw_ptr->isoc_hs_start [i & (EHCI_VIRTUAL_FRAMELIST_COUNT-1)].itd_self; } /* setup sync list pointer */ - EOWRITE4(sc, EHCI_PERIODICLISTBASE, PHYSADDR(sc,sc_hw.pframes[0])); + EOWRITE4(sc, EHCI_PERIODICLISTBASE, SC_HW_PHYSADDR(sc,pframes[0])); /* init dummy QH that starts the async list */ - sc->sc_hw.async_start.qh_self = - htole32(PHYSADDR(sc,sc_hw.async_start)|EHCI_LINK_QH); + hw_ptr->async_start.qh_self = + htole32(SC_HW_PHYSADDR(sc,async_start)|EHCI_LINK_QH); /* fill the QH */ - sc->sc_hw.async_start.qh_endp = + hw_ptr->async_start.qh_endp = htole32(EHCI_QH_SET_EPS(EHCI_QH_SPEED_HIGH) | EHCI_QH_HRECL); - sc->sc_hw.async_start.qh_endphub = htole32(EHCI_QH_SET_MULT(1)); - sc->sc_hw.async_start.qh_link = sc->sc_hw.async_start.qh_self; - sc->sc_hw.async_start.qh_curqtd = 0; + hw_ptr->async_start.qh_endphub = htole32(EHCI_QH_SET_MULT(1)); + hw_ptr->async_start.qh_link = hw_ptr->async_start.qh_self; + hw_ptr->async_start.qh_curqtd = 0; /* fill the overlay qTD */ - sc->sc_hw.async_start.qh_qtd.qtd_next = htole32(EHCI_LINK_TERMINATE); - sc->sc_hw.async_start.qh_qtd.qtd_altnext = htole32(EHCI_LINK_TERMINATE); - sc->sc_hw.async_start.qh_qtd.qtd_status = htole32(EHCI_QTD_HALTED); + hw_ptr->async_start.qh_qtd.qtd_next = htole32(EHCI_LINK_TERMINATE); + hw_ptr->async_start.qh_qtd.qtd_altnext = htole32(EHCI_LINK_TERMINATE); + hw_ptr->async_start.qh_qtd.qtd_status = htole32(EHCI_QTD_HALTED); + + /* fill the page pointer */ + hw_ptr->async_start.page = + &(sc->sc_hw_page); sc->sc_async_p_last = - &sc->sc_hw.async_start; + &(hw_ptr->async_start); + + usbd_page_sync(&(sc->sc_hw_page), BUS_DMASYNC_POSTWRITE); #ifdef USB_DEBUG if(ehcidebug) { - ehci_dump_sqh(&sc->sc_hw.async_start); + ehci_dump_sqh(&(hw_ptr->async_start)); } #endif /* setup async list pointer */ - EOWRITE4(sc, EHCI_ASYNCLISTADDR, PHYSADDR(sc,sc_hw.async_start)|EHCI_LINK_QH); + EOWRITE4(sc, EHCI_ASYNCLISTADDR, SC_HW_PHYSADDR(sc,async_start)|EHCI_LINK_QH); /* enable interrupts */ @@ -451,8 +472,8 @@ /* restore things in case the bios doesn't */ EOWRITE4(sc, EHCI_CTRLDSSEGMENT, 0); - EOWRITE4(sc, EHCI_PERIODICLISTBASE, PHYSADDR(sc,sc_hw.pframes[0])); - EOWRITE4(sc, EHCI_ASYNCLISTADDR, PHYSADDR(sc,sc_hw.async_start)|EHCI_LINK_QH); + EOWRITE4(sc, EHCI_PERIODICLISTBASE, SC_HW_PHYSADDR(sc,pframes[0])); + EOWRITE4(sc, EHCI_ASYNCLISTADDR, SC_HW_PHYSADDR(sc,async_start)|EHCI_LINK_QH); EOWRITE4(sc, EHCI_USBINTR, sc->sc_eintrs); @@ -661,25 +682,28 @@ return; } -static void +static uint8_t ehci_dump_sqtd(ehci_qtd_t *sqtd) { + uint8_t temp; + usbd_page_sync(sqtd->page, BUS_DMASYNC_PREREAD); printf("QTD(%p) at 0x%08x:\n", sqtd, le32toh(sqtd->qtd_self)); ehci_dump_qtd(sqtd); - return; + temp = (sqtd->qtd_next & htole32(EHCI_LINK_TERMINATE)) ? 1 : 0; + usbd_page_sync(sqtd->page, BUS_DMASYNC_POSTREAD); + return temp; } static void ehci_dump_sqtds(ehci_qtd_t *sqtd) { u_int16_t i; - u_int32_t stop; + uint8_t stop; stop = 0; for(i = 0; sqtd && (i < 20) && !stop; sqtd = sqtd->obj_next, i++) { - ehci_dump_sqtd(sqtd); - stop = sqtd->qtd_next & htole32(EHCI_LINK_TERMINATE); + stop = ehci_dump_sqtd(sqtd); } if(sqtd) { @@ -693,6 +717,7 @@ { u_int32_t endp, endphub; + usbd_page_sync(qh->page, BUS_DMASYNC_PREREAD); printf("QH(%p) at 0x%08x:\n", qh, le32toh(qh->qh_self) & ~0x1F); printf(" link="); ehci_dump_link(qh->qh_link, 1); printf("\n"); endp = le32toh(qh->qh_endp); @@ -713,12 +738,14 @@ printf(" curqtd="); ehci_dump_link(qh->qh_curqtd, 0); printf("\n"); printf("Overlay qTD:\n"); ehci_dump_qtd((void *)&qh->qh_qtd); + usbd_page_sync(qh->page, BUS_DMASYNC_POSTREAD); return; } static void ehci_dump_sitd(ehci_sitd_t *sitd) { + usbd_page_sync(sitd->page, BUS_DMASYNC_PREREAD); printf("SITD(%p) at 0x%08x\n", sitd, le32toh(sitd->sitd_self) & ~0x1F); printf(" next=0x%08x\n", le32toh(sitd->sitd_next)); printf(" portaddr=0x%08x dir=%s addr=%d endpt=0x%x port=0x%x huba=0x%x\n", @@ -739,12 +766,14 @@ le32toh(sitd->sitd_bp[1]), le32toh(sitd->sitd_bp_hi[0]), le32toh(sitd->sitd_bp_hi[1])); + usbd_page_sync(sitd->page, BUS_DMASYNC_POSTREAD); return; } static void ehci_dump_itd(ehci_itd_t *itd) { + usbd_page_sync(itd->page, BUS_DMASYNC_PREREAD); printf("ITD(%p) at 0x%08x\n", itd, le32toh(itd->itd_self) & ~0x1F); printf(" next=0x%08x\n", le32toh(itd->itd_next)); printf(" status[0]=0x%08x; <%s>\n", le32toh(itd->itd_status[0]), @@ -786,6 +815,7 @@ le32toh(itd->itd_bp_hi[4]), le32toh(itd->itd_bp_hi[5]), le32toh(itd->itd_bp_hi[6])); + usbd_page_sync(itd->page, BUS_DMASYNC_POSTREAD); return; } @@ -829,17 +859,24 @@ /* (sc->sc_bus.mtx) must be locked */ + usbd_page_sync(std->page, BUS_DMASYNC_PREWRITE); + std->next = last->next; std->sitd_next = last->sitd_next; std->prev = last; + usbd_page_sync(std->page, BUS_DMASYNC_POSTWRITE); + usbd_page_sync(last->page, BUS_DMASYNC_PREWRITE); + /* the last->next->prev is never followed: * std->next->prev = std; */ last->next = std; last->sitd_next = std->sitd_self; + usbd_page_sync(last->page, BUS_DMASYNC_POSTWRITE); + return(std); } @@ -851,16 +888,24 @@ /* (sc->sc_bus.mtx) must be locked */ + usbd_page_sync(std->page, BUS_DMASYNC_PREWRITE); + std->next = last->next; std->itd_next = last->itd_next; std->prev = last; + usbd_page_sync(std->page, BUS_DMASYNC_POSTWRITE); + usbd_page_sync(last->page, BUS_DMASYNC_PREWRITE); + /* the last->next->prev is never followed: * std->next->prev = std; */ last->next = std; last->itd_next = std->itd_self; + + usbd_page_sync(last->page, BUS_DMASYNC_POSTWRITE); + return(std); } @@ -872,11 +917,16 @@ /* (sc->sc_bus.mtx) must be locked */ + usbd_page_sync(sqh->page, BUS_DMASYNC_PREWRITE); + sqh->next = last->next; sqh->qh_link = last->qh_link; sqh->prev = last; - + + usbd_page_sync(sqh->page, BUS_DMASYNC_POSTWRITE); + usbd_page_sync(last->page, BUS_DMASYNC_PREWRITE); + /* the last->next->prev is never followed: * sqh->next->prev = sqh; */ @@ -884,6 +934,8 @@ last->next = sqh; last->qh_link = sqh->qh_self; + usbd_page_sync(last->page, BUS_DMASYNC_POSTWRITE); + #ifdef USB_DEBUG if(ehcidebug > 5) { @@ -902,9 +954,13 @@ /* (sc->sc_bus.mtx) must be locked */ + usbd_page_sync(std->prev->page, BUS_DMASYNC_PREWRITE); + std->prev->next = std->next; std->prev->sitd_next = std->sitd_next; + usbd_page_sync(std->prev->page, BUS_DMASYNC_POSTWRITE); + if(std->next) { std->next->prev = std->prev; @@ -920,9 +976,13 @@ /* (sc->sc_bus.mtx) must be locked */ + usbd_page_sync(std->prev->page, BUS_DMASYNC_PREWRITE); + std->prev->next = std->next; std->prev->itd_next = std->itd_next; + usbd_page_sync(std->prev->page, BUS_DMASYNC_POSTWRITE); + if(std->next) { std->next->prev = std->prev; @@ -941,14 +1001,20 @@ /* only remove if not removed from a queue */ if(sqh->prev) { + usbd_page_sync(sqh->prev->page, BUS_DMASYNC_PREWRITE); + sqh->prev->next = sqh->next; sqh->prev->qh_link = sqh->qh_link; + usbd_page_sync(sqh->prev->page, BUS_DMASYNC_POSTWRITE); + if(sqh->next) { sqh->next->prev = sqh->prev; } + usbd_page_sync(sqh->page, BUS_DMASYNC_PREWRITE); + /* set the Terminate-bit in the e_next of the QH, * in case the transferred packet was short so * that the QH still points at the last used TD @@ -956,6 +1022,8 @@ sqh->qh_qtd.qtd_next = htole32(EHCI_LINK_TERMINATE); + usbd_page_sync(sqh->page, BUS_DMASYNC_POSTWRITE); + last = ((last == sqh) ? sqh->prev : last); sqh->prev = 0; @@ -971,6 +1039,7 @@ { u_int32_t status = 0; u_int32_t actlen = 0; + uint32_t qtd_next; u_int16_t len; ehci_qtd_t *td = xfer->td_transfer_first; @@ -987,17 +1056,21 @@ /* the transfer is done, compute actual length and status */ for (; td != NULL; - td = ((td == xfer->td_transfer_last) ? NULL : td->obj_next)) + td = td->obj_next) { - if(td->qtd_status & htole32(EHCI_QTD_ACTIVE)) - { + usbd_page_sync(td->page, BUS_DMASYNC_PREREAD); + + status = le32toh(td->qtd_status); + qtd_next = le32toh(td->qtd_next); + + usbd_page_sync(td->page, BUS_DMASYNC_POSTREAD); + + if (status & EHCI_QTD_ACTIVE) { break; } - status = le32toh(td->qtd_status); - /* halt is ok if descriptor is last, and complete */ - if((td->qtd_next == htole32(EHCI_LINK_TERMINATE)) && + if((qtd_next == EHCI_LINK_TERMINATE) && (EHCI_QTD_GET_BYTES(status) == 0)) { status &= ~EHCI_QTD_HALTED; @@ -1009,6 +1082,11 @@ { actlen += td->len - len; } + + if (((void *)td) == xfer->td_transfer_last) { + td = NULL; + break; + } } /* if there are left over TDs @@ -1030,11 +1108,8 @@ xfer->actlen = actlen; - status &= EHCI_QTD_STATERRS; - #ifdef USB_DEBUG - if(status == EHCI_QTD_HALTED) - { + if (status & EHCI_QTD_STATERRS) { DPRINTFN(10, ("error, addr=%d, endpt=0x%02x, " "status=%s%s%s%s%s%s%s%s\n", @@ -1050,10 +1125,9 @@ (status & EHCI_QTD_PINGSTATE) ? "-PING" : "")); } #endif - - ehci_device_done(xfer, - (status == 0) ? USBD_NORMAL_COMPLETION : - (status == EHCI_QTD_HALTED) ? USBD_STALLED : USBD_IOERROR); + ehci_device_done(xfer, (status & EHCI_QTD_HALTED) ? + USBD_STALLED : + USBD_NORMAL_COMPLETION); return; } @@ -1063,7 +1137,7 @@ static u_int8_t ehci_check_transfer(struct usbd_xfer *xfer, struct thread *ctd) { - DPRINTFN(15, ("xfer=%p\n", xfer)); + uint32_t status; if(xfer->usb_thread != ctd) { @@ -1073,13 +1147,21 @@ goto done; } + DPRINTFN(12, ("xfer=%p checking transfer\n", xfer)); + if(xfer->pipe->methods == &ehci_device_isoc_fs_methods) { ehci_sitd_t *td = xfer->td_transfer_last; /* isochronous full speed transfer */ - if(!(td->sitd_status & htole32(EHCI_SITD_ACTIVE))) - { + + usbd_page_sync(td->page, BUS_DMASYNC_PREREAD); + + status = le32toh(td->sitd_status); + + usbd_page_sync(td->page, BUS_DMASYNC_POSTREAD); + + if (!(status & EHCI_SITD_ACTIVE)) { ehci_device_done(xfer, USBD_NORMAL_COMPLETION); goto transferred; } @@ -1089,70 +1171,71 @@ ehci_itd_t *td = xfer->td_transfer_last; /* isochronous high speed transfer */ - if((!(td->itd_status[0] & htole32(EHCI_ITD_ACTIVE))) && - (!(td->itd_status[1] & htole32(EHCI_ITD_ACTIVE))) && - (!(td->itd_status[2] & htole32(EHCI_ITD_ACTIVE))) && - (!(td->itd_status[3] & htole32(EHCI_ITD_ACTIVE))) && - (!(td->itd_status[4] & htole32(EHCI_ITD_ACTIVE))) && - (!(td->itd_status[5] & htole32(EHCI_ITD_ACTIVE))) && - (!(td->itd_status[6] & htole32(EHCI_ITD_ACTIVE))) && - (!(td->itd_status[7] & htole32(EHCI_ITD_ACTIVE)))) - { + + usbd_page_sync(td->page, BUS_DMASYNC_PREREAD); + + status = ((!(td->itd_status[0] & htole32(EHCI_ITD_ACTIVE))) && + (!(td->itd_status[1] & htole32(EHCI_ITD_ACTIVE))) && + (!(td->itd_status[2] & htole32(EHCI_ITD_ACTIVE))) && + (!(td->itd_status[3] & htole32(EHCI_ITD_ACTIVE))) && + (!(td->itd_status[4] & htole32(EHCI_ITD_ACTIVE))) && + (!(td->itd_status[5] & htole32(EHCI_ITD_ACTIVE))) && + (!(td->itd_status[6] & htole32(EHCI_ITD_ACTIVE))) && + (!(td->itd_status[7] & htole32(EHCI_ITD_ACTIVE)))); + + usbd_page_sync(td->page, BUS_DMASYNC_POSTREAD); + + if (status) { ehci_device_done(xfer, USBD_NORMAL_COMPLETION); goto transferred; } } else { - ehci_qtd_t *td = xfer->td_transfer_last; + ehci_qtd_t *td; /* non-isochronous transfer */ - if(td->qtd_status & htole32(EHCI_QTD_ACTIVE)) + + /* check whether there is an error somewhere + * in the middle, or whether there was a short + * packet (SPD and not ACTIVE) + */ + for (td = xfer->td_transfer_cache; + td != NULL; + td = td->obj_next) { - /* - * if the last TD is still active we need to - * check whether there is an error somewhere - * in the middle, or whether there was a short - * packet (SPD and not ACTIVE) - */ + usbd_page_sync(td->page, BUS_DMASYNC_PREREAD); - DPRINTFN(12, ("xfer=%p active\n", xfer)); + status = le32toh(td->qtd_status); - for(td = xfer->td_transfer_cache; - td != NULL; - td = ((td == xfer->td_transfer_last) ? NULL : td->obj_next)) - { - u_int32_t status; + usbd_page_sync(td->page, BUS_DMASYNC_POSTREAD); - status = le32toh(td->qtd_status); + /* if there is an active TD + * the transfer isn't done + */ + if (status & EHCI_QTD_ACTIVE) { + /* update cache */ + xfer->td_transfer_cache = td; + goto done; + } - /* if there's an active TD - * the transfer isn't done - */ - if(status & EHCI_QTD_ACTIVE) - { - DPRINTFN(12, ("xfer=%p is still " - "active\n", xfer)); - /* update cache */ - xfer->td_transfer_cache = td; - goto done; - } + /* any kind of error makes + * the transfer done + */ + if (status & EHCI_QTD_HALTED) { + break; + } - /* any kind of error makes - * the transfer done - */ - if(status & EHCI_QTD_HALTED) - { - break; - } + /* a short packet also makes + * the transfer done + */ + if (EHCI_QTD_GET_BYTES(status)) { + break; + } - /* we want short packets, - * and if it is short: it's done - */ - if(EHCI_QTD_GET_BYTES(status) != 0) - { - break; - } + if (((void *)td) == xfer->td_transfer_last) { + td = NULL; + break; } } ehci_non_isoc_done(xfer); @@ -1160,6 +1243,7 @@ } done: + DPRINTFN(12, ("xfer=%p is still active\n", xfer)); return 0; transferred: @@ -1431,6 +1515,8 @@ u_int32_t average = (EHCI_PAGE_SIZE - (EHCI_PAGE_SIZE % xfer->max_packet_size)); u_int32_t qtd_status; + uint32_t qh_endp; + uint32_t qh_endphub; u_int32_t buf_offset; u_int32_t len = xfer->length; u_int32_t c_error = @@ -1464,6 +1550,8 @@ */ xfer->pipe->toggle_next = 1; + usbd_page_sync(td->page, BUS_DMASYNC_PREWRITE); + /* SETUP message */ td->qtd_status = c_error | htole32 @@ -1486,6 +1574,15 @@ len -= sizeof(usb_device_request_t); td_last = td; td = td->obj_next; + + if (td) { + /* link the last TD with the next one */ + td_last->qtd_next = td->qtd_self; + /* short transfers should terminate the transfer: */ + td_last->qtd_altnext = htole32(EHCI_LINK_TERMINATE); + } + + usbd_page_sync(td_last->page, BUS_DMASYNC_POSTWRITE); } else { @@ -1549,14 +1646,8 @@ "than there is in the buffer!", __FUNCTION__); } - /* link in last TD */ + usbd_page_sync(td->page, BUS_DMASYNC_PREWRITE); - if (td_last) { - td_last->qtd_next = td->qtd_self; - /* short transfers should terminate the transfer: */ - td_last->qtd_altnext = htole32(EHCI_LINK_TERMINATE); - } - /* fill out current TD */ td->qtd_status = @@ -1590,15 +1681,20 @@ len -= average; td_last = td; td = td->obj_next; + + if (td) { + /* link the last TD with the next one */ + td_last->qtd_next = td->qtd_self; + /* short transfers should terminate the transfer: */ + td_last->qtd_altnext = htole32(EHCI_LINK_TERMINATE); + } + + usbd_page_sync(td_last->page, BUS_DMASYNC_POSTWRITE); } if(xfer->pipe->methods == &ehci_device_ctrl_methods) { - /* link in last TD */ - - td_last->qtd_next = td->qtd_self; - /* short transfers should terminate the transfer: */ - td_last->qtd_altnext = htole32(EHCI_LINK_TERMINATE); + usbd_page_sync(td->page, BUS_DMASYNC_PREWRITE); /* STATUS message */ @@ -1619,12 +1715,19 @@ td->len = 0; td_last = td; + + usbd_page_sync(td_last->page, BUS_DMASYNC_POSTWRITE); } + usbd_page_sync(td_last->page, BUS_DMASYNC_PREWRITE|BUS_DMASYNC_PREREAD); + + /* the last TD terminates the transfer: */ td_last->qtd_next = htole32(EHCI_LINK_TERMINATE); td_last->qtd_altnext = htole32(EHCI_LINK_TERMINATE); td_last->qtd_status |= htole32(EHCI_QTD_IOC); + usbd_page_sync(td_last->page, BUS_DMASYNC_POSTWRITE|BUS_DMASYNC_POSTREAD); + /* must have at least one frame! */ xfer->td_transfer_last = td_last; @@ -1640,9 +1743,11 @@ qh = xfer->qh_start; + usbd_page_sync(qh->page, BUS_DMASYNC_PREWRITE); + /* the "qh_link" field is filled when the QH is added */ - qh->qh_endp = htole32 + qh_endp = (EHCI_QH_SET_ADDR(xfer->address) | EHCI_QH_SET_ENDPT(UE_GET_ADDR(xfer->endpoint)) | EHCI_QH_DTC | @@ -1652,14 +1757,15 @@ switch (xfer->udev->speed) { case USB_SPEED_LOW: - qh->qh_endp |= htole32(EHCI_QH_SET_EPS(EHCI_QH_SPEED_LOW)| - EHCI_QH_CTL); + qh_endp |= (EHCI_QH_SET_EPS(EHCI_QH_SPEED_LOW)| + EHCI_QH_CTL); break; case USB_SPEED_FULL: - qh->qh_endp |= htole32(EHCI_QH_SET_EPS(EHCI_QH_SPEED_FULL)| - EHCI_QH_CTL); break; + qh_endp |= (EHCI_QH_SET_EPS(EHCI_QH_SPEED_FULL)| + EHCI_QH_CTL); + break; case USB_SPEED_HIGH: - qh->qh_endp |= htole32(EHCI_QH_SET_EPS(EHCI_QH_SPEED_HIGH)); + qh_endp |= (EHCI_QH_SET_EPS(EHCI_QH_SPEED_HIGH)); break; default: panic("%s: bad device speed %d!", __FUNCTION__, xfer->udev->speed); @@ -1668,16 +1774,18 @@ if(xfer->pipe->methods != &ehci_device_ctrl_methods) { - qh->qh_endp &= htole32(~EHCI_QH_CTL); + qh_endp &= ~EHCI_QH_CTL; } - qh->qh_endphub = htole32 + qh->qh_endp = htole32(qh_endp); + + qh_endphub = (EHCI_QH_SET_MULT(xfer->max_packet_count & 3)| EHCI_QH_SET_CMASK(0xf0)); if(xfer->udev->myhsport) { - qh->qh_endphub |= htole32 + qh_endphub |= (EHCI_QH_SET_HUBA(xfer->udev->myhsport->parent->address)| EHCI_QH_SET_PORT(xfer->udev->myhsport->portno)); } @@ -1685,9 +1793,10 @@ if(xfer->pipe->methods == &ehci_device_intr_methods) { /* execute the transfer one time per 1ms */ - qh->qh_endphub |= htole32(EHCI_QH_SET_SMASK(0x04)); + qh_endphub |= EHCI_QH_SET_SMASK(0x04); } + qh->qh_endphub = htole32(qh_endphub); qh->qh_curqtd = htole32(0); /* fill the overlay qTD */ @@ -1698,6 +1807,8 @@ qh->qh_qtd.qtd_next = td->qtd_self; qh->qh_qtd.qtd_altnext = htole32(EHCI_LINK_TERMINATE); + usbd_page_sync(qh->page, BUS_DMASYNC_POSTWRITE); + EHCI_APPEND_QH(qh, *qh_last); return; } @@ -1744,6 +1855,7 @@ { u_int32_t nframes = xfer->nframes; u_int32_t actlen = 0; + uint32_t status; u_int16_t *plen = xfer->frlengths; u_int16_t len = 0; u_int8_t need_delay = 0; @@ -1773,13 +1885,16 @@ ehci_dump_sitd(td); } #endif + usbd_page_sync(td->page, BUS_DMASYNC_PREREAD); + status = le32toh(td->sitd_status); + usbd_page_sync(td->page, BUS_DMASYNC_POSTREAD); + /* check for active transfers */ - if(td->sitd_status & htole32(EHCI_SITD_ACTIVE)) - { + if (status & EHCI_SITD_ACTIVE) { need_delay = 1; } - len = EHCI_SITD_GET_LEN(le32toh(td->sitd_status)); + len = EHCI_SITD_GET_LEN(status); if(*plen >= len) { @@ -1810,6 +1925,7 @@ { u_int32_t nframes = xfer->nframes; u_int32_t actlen = 0; + uint32_t status; u_int16_t *plen = xfer->frlengths; u_int16_t len = 0; u_int8_t td_no = 0; @@ -1840,12 +1956,16 @@ ehci_dump_itd(td); } #endif - if(td->itd_status[td_no] & htole32(EHCI_ITD_ACTIVE)) - { + + usbd_page_sync(td->page, BUS_DMASYNC_PREREAD); + status = le32toh(td->itd_status[td_no]); + usbd_page_sync(td->page, BUS_DMASYNC_POSTREAD); + + if (status & EHCI_ITD_ACTIVE) { need_delay = 1; } - len = EHCI_ITD_GET_LEN(le32toh(td->itd_status[td_no])); + len = EHCI_ITD_GET_LEN(status); if(*plen >= len) { @@ -2277,6 +2397,8 @@ for(td = xfer->td_start; td; td = td->obj_next) { + usbd_page_sync(td->page, BUS_DMASYNC_PREWRITE); + td->sitd_portaddr = sitd_portaddr; /* TODO: make some kind of automatic SMASK/CMASK selection @@ -2303,6 +2425,8 @@ EHCI_SITD_SET_CMASK(0xF8)); } td->sitd_back = htole32(EHCI_LINK_TERMINATE); + + usbd_page_sync(td->page, BUS_DMASYNC_POSTWRITE); } return; } @@ -2321,6 +2445,7 @@ ehci_softc_t *sc = xfer->usb_sc; u_int32_t buf_offset; u_int32_t nframes; + uint32_t temp; u_int16_t *plen; #ifdef USB_DEBUG u_int8_t once = 1; @@ -2401,18 +2526,22 @@ *plen = xfer->max_frame_size; } + usbd_page_sync(td->page, BUS_DMASYNC_PREWRITE); + td->sitd_bp[0] = htole32(buf_res.physaddr); buf_offset += *plen; usbd_get_page(&(xfer->buf_data), buf_offset, &buf_res); - td->sitd_bp[1] = htole32(buf_res.physaddr & (~0xFFF)); + temp = buf_res.physaddr & (~0xFFF); if(UE_GET_DIR(xfer->endpoint) == UE_DIR_OUT) { - td->sitd_bp[1] |= htole32(1); /* T-count == 1 */ + temp |= 1; /* T-count == 1*/ } + td->sitd_bp[1] = htole32(temp); + if(nframes == 0) { td->sitd_status = htole32 @@ -2426,6 +2555,8 @@ (EHCI_SITD_ACTIVE| EHCI_SITD_SET_LEN(*plen)); } + usbd_page_sync(td->page, BUS_DMASYNC_POSTWRITE); + #ifdef USB_DEBUG if(ehcidebug > 15) { @@ -2488,11 +2619,14 @@ ehci_device_isoc_hs_open(struct usbd_xfer *xfer) { ehci_itd_t *td; + uint32_t temp; /* initialize all TD's */ for(td = xfer->td_start; td; td = td->obj_next) { + usbd_page_sync(td->page, BUS_DMASYNC_PREWRITE); + /* set TD inactive */ td->itd_status[0] = 0; td->itd_status[1] = 0; @@ -2508,18 +2642,21 @@ (EHCI_ITD_SET_ADDR(xfer->address)| EHCI_ITD_SET_ENDPT(UE_GET_ADDR(xfer->endpoint))); - /* set maximum packet size */ - td->itd_bp[1] = htole32 - (EHCI_ITD_SET_MPL(xfer->max_packet_size & 0x7FF)); + temp = EHCI_ITD_SET_MPL(xfer->max_packet_size & 0x7FF); /* set direction */ if(UE_GET_DIR(xfer->endpoint) == UE_DIR_IN) { - td->itd_bp[1] |= htole32(EHCI_ITD_SET_DIR_IN); + temp |= EHCI_ITD_SET_DIR_IN; >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Fri Jan 19 21:47:38 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 05CDD16A406; Fri, 19 Jan 2007 21:47:38 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id B852916A404 for ; Fri, 19 Jan 2007 21:47:37 +0000 (UTC) (envelope-from jkim@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id A74D113C45B for ; Fri, 19 Jan 2007 21:47:37 +0000 (UTC) (envelope-from jkim@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0JLlb8Z096274 for ; Fri, 19 Jan 2007 21:47:37 GMT (envelope-from jkim@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0JLlbYa096265 for perforce@freebsd.org; Fri, 19 Jan 2007 21:47:37 GMT (envelope-from jkim@freebsd.org) Date: Fri, 19 Jan 2007 21:47:37 GMT Message-Id: <200701192147.l0JLlbYa096265@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to jkim@freebsd.org using -f From: Jung-uk Kim To: Perforce Change Reviews Cc: Subject: PERFORCE change 113177 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 19 Jan 2007 21:47:38 -0000 http://perforce.freebsd.org/chv.cgi?CH=113177 Change 113177 by jkim@jkim_hammer on 2007/01/19 21:47:34 - Move vm_maxsaddr adjustment after file descriptor check. - Add linux_mprotect() for i386 and synchronize with amd64. Supposedly NX/XD bit should affect this arch as well. - Fix broken prot on amd64 from the previous commit. mmap finger print is now identical to Linux's one. MFP4 after: 1 week Affected files ... .. //depot/projects/linuxolator/src/sys/amd64/linux32/linux32_machdep.c#26 edit .. //depot/projects/linuxolator/src/sys/i386/linux/linux_machdep.c#19 edit .. //depot/projects/linuxolator/src/sys/i386/linux/linux_proto.h#18 edit .. //depot/projects/linuxolator/src/sys/i386/linux/linux_syscall.h#17 edit .. //depot/projects/linuxolator/src/sys/i386/linux/linux_sysent.c#17 edit .. //depot/projects/linuxolator/src/sys/i386/linux/syscalls.master#16 edit Differences ... ==== //depot/projects/linuxolator/src/sys/amd64/linux32/linux32_machdep.c#26 (text+ko) ==== @@ -824,16 +824,47 @@ bsd_args.flags |= MAP_PRIVATE; if (linux_args->flags & LINUX_MAP_FIXED) bsd_args.flags |= MAP_FIXED; - if (linux_args->flags & LINUX_MAP_ANON) { + if (linux_args->flags & LINUX_MAP_ANON) bsd_args.flags |= MAP_ANON; - bsd_args.fd = -1; - } else { + else bsd_args.flags |= MAP_NOSYNC; - bsd_args.fd = linux_args->fd; + if (linux_args->flags & LINUX_MAP_GROWSDOWN) + bsd_args.flags |= MAP_STACK; + + /* + * Linux has added READ_IMPLIES_EXEC personality but we do not support + * the feature yet. We just assume READ_IMPLIES_EXEC is always on. + */ + bsd_args.prot = linux_args->prot; + if (bsd_args.prot & PROT_READ) + bsd_args.prot |= PROT_EXEC; + + if (linux_args->fd != -1) { + /* + * Linux follows Solaris mmap(2) description: + * The file descriptor fildes is opened with + * read permission, regardless of the + * protection options specified. + */ + + if ((error = fget(td, linux_args->fd, &fp)) != 0) + return (error); + if (fp->f_type != DTYPE_VNODE) { + fdrop(fp, td); + return (EINVAL); + } + + /* Linux mmap() just fails for O_WRONLY files */ + if (!(fp->f_flag & FREAD)) { + fdrop(fp, td); + return (EACCES); + } + + fdrop(fp, td); } + bsd_args.fd = linux_args->fd; + if (linux_args->flags & LINUX_MAP_GROWSDOWN) { - bsd_args.flags |= MAP_STACK; - /* * The linux MAP_GROWSDOWN option does not limit auto * growth of the region. Linux mmap with this option @@ -875,8 +906,7 @@ * mmap's return value. */ PROC_LOCK(p); - p->p_vmspace->vm_maxsaddr = - (char *)LINUX32_USRSTACK - + p->p_vmspace->vm_maxsaddr = (char *)LINUX32_USRSTACK - lim_cur(p, RLIMIT_STACK); PROC_UNLOCK(p); } @@ -900,42 +930,6 @@ bsd_args.addr = (caddr_t)PTRIN(linux_args->addr); bsd_args.len = linux_args->len; } - - /* - * Linux has added READ_IMPLIES_EXEC personality but we do not support - * the feature yet. We just assume READ_IMPLIES_EXEC is always on. - */ - if (linux_args->prot & PROT_READ) - bsd_args.prot = linux_args->prot | PROT_EXEC; - - if (bsd_args.fd != -1) { - /* - * Linux follows Solaris mmap(2) description: - * The file descriptor fildes is opened with - * read permission, regardless of the - * protection options specified. - * If PROT_WRITE is specified, the application - * must have opened the file descriptor - * fildes with write permission unless - * MAP_PRIVATE is specified in the flag - * argument as described below. - */ - - if ((error = fget(td, bsd_args.fd, &fp)) != 0) - return (error); - if (fp->f_type != DTYPE_VNODE) { - fdrop(fp, td); - return (EINVAL); - } - - /* Linux mmap() just fails for O_WRONLY files */ - if (! (fp->f_flag & FREAD)) { - fdrop(fp, td); - return (EACCES); - } - - fdrop(fp, td); - } bsd_args.pos = (off_t)linux_args->pgoff * PAGE_SIZE; bsd_args.pad = 0; @@ -956,6 +950,20 @@ } int +linux_mprotect(struct thread *td, struct linux_mprotect_args *uap) +{ + struct mprotect_args bsd_args; + + bsd_args.addr = uap->addr; + bsd_args.len = uap->len; + bsd_args.prot = uap->prot; + /* XXX PROT_READ implies PROT_EXEC; see linux_mmap_common(). */ + if (bsd_args.prot & PROT_READ) + bsd_args.prot |= PROT_EXEC; + return (mprotect(td, &bsd_args)); +} + +int linux_iopl(struct thread *td, struct linux_iopl_args *args) { int error; @@ -1228,20 +1236,6 @@ } int -linux_mprotect(struct thread *td, struct linux_mprotect_args *uap) -{ - struct mprotect_args bsd_args; - - bsd_args.addr = uap->addr; - bsd_args.len = uap->len; - bsd_args.prot = uap->prot; - /* XXX PROT_READ implies PROT_EXEC; see linux_mmap_common(). */ - if ((bsd_args.prot & PROT_READ) != 0) - bsd_args.prot |= PROT_EXEC; - return (mprotect(td, &bsd_args)); -} - -int linux_set_thread_area(struct thread *td, struct linux_set_thread_area_args *args) { struct l_user_desc info; ==== //depot/projects/linuxolator/src/sys/i386/linux/linux_machdep.c#19 (text+ko) ==== @@ -657,16 +657,47 @@ bsd_args.flags |= MAP_PRIVATE; if (linux_args->flags & LINUX_MAP_FIXED) bsd_args.flags |= MAP_FIXED; - if (linux_args->flags & LINUX_MAP_ANON) { + if (linux_args->flags & LINUX_MAP_ANON) bsd_args.flags |= MAP_ANON; - bsd_args.fd = -1; - } else { + else bsd_args.flags |= MAP_NOSYNC; - bsd_args.fd = linux_args->fd; + if (linux_args->flags & LINUX_MAP_GROWSDOWN) + bsd_args.flags |= MAP_STACK; + + /* + * Linux has added READ_IMPLIES_EXEC personality but we do not support + * the feature yet. We just assume READ_IMPLIES_EXEC is always on. + */ + bsd_args.prot = linux_args->prot; + if (bsd_args.prot & PROT_READ) + bsd_args.prot |= PROT_EXEC; + + if (linux_args->fd != -1) { + /* + * Linux follows Solaris mmap(2) description: + * The file descriptor fildes is opened with + * read permission, regardless of the + * protection options specified. + */ + + if ((error = fget(td, linux_args->fd, &fp)) != 0) + return (error); + if (fp->f_type != DTYPE_VNODE) { + fdrop(fp, td); + return (EINVAL); + } + + /* Linux mmap() just fails for O_WRONLY files */ + if (!(fp->f_flag & FREAD)) { + fdrop(fp, td); + return (EACCES); + } + + fdrop(fp, td); } + bsd_args.fd = linux_args->fd; + if (linux_args->flags & LINUX_MAP_GROWSDOWN) { - bsd_args.flags |= MAP_STACK; - /* * The linux MAP_GROWSDOWN option does not limit auto * growth of the region. Linux mmap with this option @@ -732,36 +763,6 @@ bsd_args.addr = (caddr_t)PTRIN(linux_args->addr); bsd_args.len = linux_args->len; } - - bsd_args.prot = linux_args->prot; - if (bsd_args.fd != -1) { - /* - * Linux follows Solaris mmap(2) description: - * The file descriptor fildes is opened with - * read permission, regardless of the - * protection options specified. - * If PROT_WRITE is specified, the application - * must have opened the file descriptor - * fildes with write permission unless - * MAP_PRIVATE is specified in the flag - * argument as described below. - */ - - if ((error = fget(td, bsd_args.fd, &fp)) != 0) - return (error); - if (fp->f_type != DTYPE_VNODE) { - fdrop(fp, td); - return (EINVAL); - } - - /* Linux mmap() just fails for O_WRONLY files */ - if (! (fp->f_flag & FREAD)) { - fdrop(fp, td); - return (EACCES); - } - - fdrop(fp, td); - } bsd_args.pos = linux_args->pos; bsd_args.pad = 0; @@ -782,6 +783,20 @@ } int +linux_mprotect(struct thread *td, struct linux_mprotect_args *uap) +{ + struct mprotect_args bsd_args; + + bsd_args.addr = uap->addr; + bsd_args.len = uap->len; + bsd_args.prot = uap->prot; + /* XXX PROT_READ implies PROT_EXEC; see linux_mmap_common(). */ + if (bsd_args.prot & PROT_READ) + bsd_args.prot |= PROT_EXEC; + return (mprotect(td, &bsd_args)); +} + +int linux_pipe(struct thread *td, struct linux_pipe_args *args) { int error; ==== //depot/projects/linuxolator/src/sys/i386/linux/linux_proto.h#18 (text+ko) ==== @@ -394,6 +394,11 @@ struct linux_adjtimex_args { register_t dummy; }; +struct linux_mprotect_args { + char addr_l_[PADL_(caddr_t)]; caddr_t addr; char addr_r_[PADR_(caddr_t)]; + char len_l_[PADL_(int)]; int len; char len_r_[PADR_(int)]; + char prot_l_[PADL_(int)]; int prot; char prot_r_[PADR_(int)]; +}; struct linux_sigprocmask_args { char how_l_[PADL_(l_int)]; l_int how; char how_r_[PADR_(l_int)]; char mask_l_[PADL_(l_osigset_t *)]; l_osigset_t * mask; char mask_r_[PADR_(l_osigset_t *)]; @@ -1061,6 +1066,7 @@ int linux_newuname(struct thread *, struct linux_newuname_args *); int linux_modify_ldt(struct thread *, struct linux_modify_ldt_args *); int linux_adjtimex(struct thread *, struct linux_adjtimex_args *); +int linux_mprotect(struct thread *, struct linux_mprotect_args *); int linux_sigprocmask(struct thread *, struct linux_sigprocmask_args *); int linux_create_module(struct thread *, struct linux_create_module_args *); int linux_init_module(struct thread *, struct linux_init_module_args *); @@ -1314,6 +1320,7 @@ #define LINUX_SYS_AUE_linux_newuname AUE_NULL #define LINUX_SYS_AUE_linux_modify_ldt AUE_NULL #define LINUX_SYS_AUE_linux_adjtimex AUE_ADJTIME +#define LINUX_SYS_AUE_linux_mprotect AUE_MPROTECT #define LINUX_SYS_AUE_linux_sigprocmask AUE_SIGPROCMASK #define LINUX_SYS_AUE_linux_create_module AUE_NULL #define LINUX_SYS_AUE_linux_init_module AUE_NULL ==== //depot/projects/linuxolator/src/sys/i386/linux/linux_syscall.h#17 (text+ko) ==== @@ -120,7 +120,7 @@ #define LINUX_SYS_linux_newuname 122 #define LINUX_SYS_linux_modify_ldt 123 #define LINUX_SYS_linux_adjtimex 124 -#define LINUX_SYS_mprotect 125 +#define LINUX_SYS_linux_mprotect 125 #define LINUX_SYS_linux_sigprocmask 126 #define LINUX_SYS_linux_create_module 127 #define LINUX_SYS_linux_init_module 128 ==== //depot/projects/linuxolator/src/sys/i386/linux/linux_sysent.c#17 (text+ko) ==== @@ -144,7 +144,7 @@ { AS(linux_newuname_args), (sy_call_t *)linux_newuname, AUE_NULL, NULL, 0, 0 }, /* 122 = linux_newuname */ { AS(linux_modify_ldt_args), (sy_call_t *)linux_modify_ldt, AUE_NULL, NULL, 0, 0 }, /* 123 = linux_modify_ldt */ { 0, (sy_call_t *)linux_adjtimex, AUE_ADJTIME, NULL, 0, 0 }, /* 124 = linux_adjtimex */ - { AS(mprotect_args), (sy_call_t *)mprotect, AUE_MPROTECT, NULL, 0, 0 }, /* 125 = mprotect */ + { AS(linux_mprotect_args), (sy_call_t *)linux_mprotect, AUE_MPROTECT, NULL, 0, 0 }, /* 125 = linux_mprotect */ { AS(linux_sigprocmask_args), (sy_call_t *)linux_sigprocmask, AUE_SIGPROCMASK, NULL, 0, 0 }, /* 126 = linux_sigprocmask */ { 0, (sy_call_t *)linux_create_module, AUE_NULL, NULL, 0, 0 }, /* 127 = linux_create_module */ { 0, (sy_call_t *)linux_init_module, AUE_NULL, NULL, 0, 0 }, /* 128 = linux_init_module */ ==== //depot/projects/linuxolator/src/sys/i386/linux/syscalls.master#16 (text+ko) ==== @@ -224,7 +224,7 @@ 123 AUE_NULL STD { int linux_modify_ldt(l_int func, \ void *ptr, l_ulong bytecount); } 124 AUE_ADJTIME STD { int linux_adjtimex(void); } -125 AUE_MPROTECT NOPROTO { int mprotect(caddr_t addr, int len, \ +125 AUE_MPROTECT STD { int linux_mprotect(caddr_t addr, int len, \ int prot); } 126 AUE_SIGPROCMASK STD { int linux_sigprocmask(l_int how, \ l_osigset_t *mask, l_osigset_t *omask); } From owner-p4-projects@FreeBSD.ORG Fri Jan 19 22:26:29 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id A33F616A40A; Fri, 19 Jan 2007 22:26:29 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 772A616A408 for ; Fri, 19 Jan 2007 22:26:29 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 2691913C46A for ; Fri, 19 Jan 2007 22:26:28 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0JMQS8K004168 for ; Fri, 19 Jan 2007 22:26:28 GMT (envelope-from hselasky@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0JMQSqM004165 for perforce@freebsd.org; Fri, 19 Jan 2007 22:26:28 GMT (envelope-from hselasky@FreeBSD.org) Date: Fri, 19 Jan 2007 22:26:28 GMT Message-Id: <200701192226.l0JMQSqM004165@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to hselasky@FreeBSD.org using -f From: Hans Petter Selasky To: Perforce Change Reviews Cc: Subject: PERFORCE change 113182 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 19 Jan 2007 22:26:30 -0000 http://perforce.freebsd.org/chv.cgi?CH=113182 Change 113182 by hselasky@hselasky_mini_itx on 2007/01/19 22:25:45 Fix a data-toggle error that was introduced by change 113175. Affected files ... .. //depot/projects/usb/src/sys/dev/usb/ehci.c#17 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb/ehci.c#17 (text+ko) ==== @@ -1039,8 +1039,7 @@ { u_int32_t status = 0; u_int32_t actlen = 0; - uint32_t qtd_next; - u_int16_t len; + u_int16_t len = 0; ehci_qtd_t *td = xfer->td_transfer_first; DPRINTFN(12, ("xfer=%p pipe=%p transfer done\n", @@ -1059,51 +1058,44 @@ td = td->obj_next) { usbd_page_sync(td->page, BUS_DMASYNC_PREREAD); - status = le32toh(td->qtd_status); - qtd_next = le32toh(td->qtd_next); - usbd_page_sync(td->page, BUS_DMASYNC_POSTREAD); if (status & EHCI_QTD_ACTIVE) { + + /* if there are left over TDs + * the toggle needs to be updated + */ + xfer->pipe->toggle_next = + (status & EHCI_QTD_SET_TOGGLE(1)) ? 1 : 0; break; } - /* halt is ok if descriptor is last, and complete */ - if((qtd_next == EHCI_LINK_TERMINATE) && - (EHCI_QTD_GET_BYTES(status) == 0)) - { - status &= ~EHCI_QTD_HALTED; - } - len = EHCI_QTD_GET_BYTES(status); - if(len <= td->len) - { + if (len <= td->len) { actlen += td->len - len; } if (((void *)td) == xfer->td_transfer_last) { + if (len == 0) { + /* halt is ok if descriptor is last, + * and complete: + */ + status &= ~EHCI_QTD_HALTED; + } td = NULL; break; } } - /* if there are left over TDs - * the toggle needs to be updated - */ - if(td != NULL) - { - xfer->pipe->toggle_next = - (td->qtd_status & htole32(EHCI_QTD_SET_TOGGLE(1))) ? 1 : 0; + if (len) { + /* update toggle in case of + * a short transfer + */ + xfer->pipe->toggle_next ^= (len / xfer->max_packet_size) & 1; } - /* update toggle in case of - * a short transfer - */ - xfer->pipe->toggle_next ^= (EHCI_QTD_GET_BYTES(status) / - xfer->max_packet_size) & 1; - DPRINTFN(10, ("actlen=%d\n", actlen)); xfer->actlen = actlen; From owner-p4-projects@FreeBSD.ORG Fri Jan 19 22:57:09 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 1B46B16A407; Fri, 19 Jan 2007 22:57:09 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id DA9AD16A405 for ; Fri, 19 Jan 2007 22:57:08 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id BBB9713C441 for ; Fri, 19 Jan 2007 22:57:08 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0JMv8VI012287 for ; Fri, 19 Jan 2007 22:57:08 GMT (envelope-from hselasky@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0JMv8aM012284 for perforce@freebsd.org; Fri, 19 Jan 2007 22:57:08 GMT (envelope-from hselasky@FreeBSD.org) Date: Fri, 19 Jan 2007 22:57:08 GMT Message-Id: <200701192257.l0JMv8aM012284@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to hselasky@FreeBSD.org using -f From: Hans Petter Selasky To: Perforce Change Reviews Cc: Subject: PERFORCE change 113184 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 19 Jan 2007 22:57:09 -0000 http://perforce.freebsd.org/chv.cgi?CH=113184 Change 113184 by hselasky@hselasky_mini_itx on 2007/01/19 22:56:34 Fix another bug introduced by change 113175. If the transfer descriptor is active, return the previous "status" value when when for loop exits in "ehci_non_isoc_done()". Affected files ... .. //depot/projects/usb/src/sys/dev/usb/ehci.c#18 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb/ehci.c#18 (text+ko) ==== @@ -1037,6 +1037,7 @@ static void ehci_non_isoc_done(struct usbd_xfer *xfer) { + uint32_t temp; u_int32_t status = 0; u_int32_t actlen = 0; u_int16_t len = 0; @@ -1058,19 +1059,21 @@ td = td->obj_next) { usbd_page_sync(td->page, BUS_DMASYNC_PREREAD); - status = le32toh(td->qtd_status); + temp = le32toh(td->qtd_status); usbd_page_sync(td->page, BUS_DMASYNC_POSTREAD); - if (status & EHCI_QTD_ACTIVE) { + if (temp & EHCI_QTD_ACTIVE) { /* if there are left over TDs * the toggle needs to be updated */ xfer->pipe->toggle_next = - (status & EHCI_QTD_SET_TOGGLE(1)) ? 1 : 0; + (temp & EHCI_QTD_SET_TOGGLE(1)) ? 1 : 0; break; } + status = temp; + len = EHCI_QTD_GET_BYTES(status); if (len <= td->len) { From owner-p4-projects@FreeBSD.ORG Sat Jan 20 02:14:24 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 5084616A46D; Sat, 20 Jan 2007 02:14:24 +0000 (UTC) X-Original-To: Perforce@freebsd.org Delivered-To: Perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 1066316A41B; Sat, 20 Jan 2007 02:14:24 +0000 (UTC) (envelope-from Danovitsch@vitsch.net) Received: from amsfep20-int.chello.nl (amsfep20-int.chello.nl [62.179.120.15]) by mx1.freebsd.org (Postfix) with ESMTP id 23BFD13C455; Sat, 20 Jan 2007 02:14:22 +0000 (UTC) (envelope-from Danovitsch@vitsch.net) Received: from Tuinhuisje.Vitsch.net ([62.195.87.223]) by amsfep19-int.chello.nl (InterMail vM.6.01.04.04 201-2131-118-104-20050224) with ESMTP id <20070120001148.SJQ19932.amsfep19-int.chello.nl@Tuinhuisje.Vitsch.net>; Sat, 20 Jan 2007 01:11:48 +0100 Received: from self (f187184.upc-f.chello.nl [80.56.187.184]) (authenticated bits=0) by Tuinhuisje.Vitsch.net (8.13.1/8.13.1) with ESMTP id l0K0BXrO020086; Sat, 20 Jan 2007 01:11:38 +0100 (CET) (envelope-from Danovitsch@vitsch.net) From: "Daan Vreeken [PA4DAN]" Organization: Vitsch Electronics To: Hans Petter Selasky Date: Sat, 20 Jan 2007 01:11:40 +0100 User-Agent: KMail/1.9.1 References: <200701192115.l0JLFwFI088824@repoman.freebsd.org> In-Reply-To: <200701192115.l0JLFwFI088824@repoman.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-6" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200701200111.40339.Danovitsch@vitsch.net> Cc: Perforce@freebsd.org Subject: Re: PERFORCE change 113175 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Jan 2007 02:14:24 -0000 Hi Hans, On Friday 19 January 2007 22:15, Hans Petter Selasky wrote: > http://perforce.freebsd.org/chv.cgi?CH=113175 > > Change 113175 by hselasky@hselasky_mini_itx on 2007/01/19 21:15:07 > > Add missing "bus_dmamap_sync()" calls to the USB host controller > drivers. Optimize the USB code with regard to "bus_dmamap_sync()". > calls. Please correct me if I'm wrong, but I think you've swapped the meaning of the pre & post read & write sync calls in this commit. For example : > +static uint8_t > ehci_dump_sqtd(ehci_qtd_t *sqtd) > { > + uint8_t temp; > + usbd_page_sync(sqtd->page, BUS_DMASYNC_PREREAD); > printf("QTD(%p) at 0x%08x:\n", sqtd, le32toh(sqtd->qtd_self)); > ehci_dump_qtd(sqtd); > - return; > + temp = (sqtd->qtd_next & htole32(EHCI_LINK_TERMINATE)) ? 1 : 0; > + usbd_page_sync(sqtd->page, BUS_DMASYNC_POSTREAD); > + return temp; > } Here you do a sync_preread, then you read the sqtd page and then you do a sync_postread. I think this is wrong. As far as I understand it, bus_dmamap_sync() should be used in either of the following two ways : 1) Processor wants to "read" from a device. (device is going to alter our memory (eg. read from a harddisk) ) : o The page of memory is owned by the CPU. o CPU does sync(BUS_DMASYNC_PREREAD). o Page is handed over to the device (CPU shouldn't touch the page after this moment) o Device writes data into page. o Device signals CPU it's done writing... o Page is handed over back to the CPU. o CPU does sync(BUS_DMASYNC_POSTREAD) o CPU may now use data in the page. 2) Processor wants to "write" to a device. (device is going to use the data in our memory (eg. write it to a harddisk) ) o The page of memory is owned by the CPU. o CPU writes the data it wants to transfer into the page o CPU does sync(BUS_DMASYNC_PREWRITE). o Page is handed over to the device (CPU shouldn't touch the page after this moment) o Device uses data in the page. o Device signals CPU it's done with the data... o Page is handed over back to the CPU. o CPU does sync(BUS_DMASYNC_POSTREAD) See "man bus_dmamap_sync". I think the sync calls should only be placed at places where pages (transfer descriptors or data pages) are handed to or from the USB domain. ehci_dump_sqtd() shouldn't have sync call's in it and it should only ever be used on descriptors that are "owned" by the processor (eg: descriptors that re not on an active queue). ehci_dump_sqtd() can never be used on active descriptors as they might be changing while we read them (between the sync call and the printf). By the way, I think what you're doing is great. Adding these sync call's to your USB stack would make the stack useable on the ARM platform. Before christmas came along I have spent quite some time trying to get USB to function on the ARM platform, but I haven't had time to look at it since. I think it's time for me to boot up my ARM board again... ;-) I am willing to volunteering to help out with getting this code to work there, although I'm limited in available time. Grtz, -- Daan From owner-p4-projects@FreeBSD.ORG Sat Jan 20 03:55:30 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 069CF16A408; Sat, 20 Jan 2007 03:55:30 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id D53A016A402 for ; Sat, 20 Jan 2007 03:55:29 +0000 (UTC) (envelope-from mjacob@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id C5EB013C45A for ; Sat, 20 Jan 2007 03:55:29 +0000 (UTC) (envelope-from mjacob@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0K3tT4T081064 for ; Sat, 20 Jan 2007 03:55:29 GMT (envelope-from mjacob@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0K3tT3h081061 for perforce@freebsd.org; Sat, 20 Jan 2007 03:55:29 GMT (envelope-from mjacob@freebsd.org) Date: Sat, 20 Jan 2007 03:55:29 GMT Message-Id: <200701200355.l0K3tT3h081061@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to mjacob@freebsd.org using -f From: Matt Jacob To: Perforce Change Reviews Cc: Subject: PERFORCE change 113190 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Jan 2007 03:55:30 -0000 http://perforce.freebsd.org/chv.cgi?CH=113190 Change 113190 by mjacob@mjexp on 2007/01/20 03:55:24 Ah, fixed a stupidville bug: when we're looking for a new handle to allocate for an arriving device, don't pick one that's already in use (pending valid) as the firmware will be quite content to let you remap that handle to the new device. Then you trip over a bunch of other code which ends up nuking one device and putting the new device in *two* different positions in the virtual map. Gawd. Affected files ... .. //depot/projects/mjexp/sys/dev/isp/isp.c#9 edit Differences ... ==== //depot/projects/mjexp/sys/dev/isp/isp.c#9 (text+ko) ==== @@ -3956,6 +3956,7 @@ static uint16_t isp_nxt_handle(ispsoftc_t *isp, uint16_t handle) { + int i; if (handle == NIL_HANDLE) { if (FCPARAM(isp)->isp_topo == TOPO_F_PORT) { handle = 0; @@ -3982,9 +3983,16 @@ } if (handle == FCPARAM(isp)->isp_loopid) { return (isp_nxt_handle(isp, handle)); - } else { - return (handle); + } + for (i = 0; i < MAX_FC_TARG; i++) { + if (FCPARAM(isp)->portdb[i].state == FC_PORTDB_STATE_NIL) { + continue; + } + if (FCPARAM(isp)->portdb[i].handle == handle) { + return (isp_nxt_handle(isp, handle)); + } } + return (handle); } /* From owner-p4-projects@FreeBSD.ORG Sat Jan 20 04:12:53 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 126B116A408; Sat, 20 Jan 2007 04:12:53 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id C822116A402 for ; Sat, 20 Jan 2007 04:12:52 +0000 (UTC) (envelope-from mjacob@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id B77C413C459 for ; Sat, 20 Jan 2007 04:12:52 +0000 (UTC) (envelope-from mjacob@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0K4CqvI084983 for ; Sat, 20 Jan 2007 04:12:52 GMT (envelope-from mjacob@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0K4CqJX084980 for perforce@freebsd.org; Sat, 20 Jan 2007 04:12:52 GMT (envelope-from mjacob@freebsd.org) Date: Sat, 20 Jan 2007 04:12:52 GMT Message-Id: <200701200412.l0K4CqJX084980@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to mjacob@freebsd.org using -f From: Matt Jacob To: Perforce Change Reviews Cc: Subject: PERFORCE change 113192 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Jan 2007 04:12:53 -0000 http://perforce.freebsd.org/chv.cgi?CH=113192 Change 113192 by mjacob@mjexp_6 on 2007/01/20 04:12:02 Integrate isp changes from -current p4. Affected files ... .. //depot/projects/mjexp_6/sys/dev/isp/isp.c#4 edit .. //depot/projects/mjexp_6/sys/dev/isp/isp_freebsd.c#4 edit .. //depot/projects/mjexp_6/sys/dev/isp/isp_freebsd.h#4 edit .. //depot/projects/mjexp_6/sys/dev/isp/isp_target.c#3 edit .. //depot/projects/mjexp_6/sys/dev/isp/isp_target.h#3 edit .. //depot/projects/mjexp_6/sys/dev/isp/isp_tpublic.h#3 edit .. //depot/projects/mjexp_6/sys/dev/isp/ispvar.h#3 edit Differences ... ==== //depot/projects/mjexp_6/sys/dev/isp/isp.c#4 (text+ko) ==== @@ -1170,6 +1170,14 @@ isp->isp_maxluns = 16; } } + /* + * Must do this first to get defaults established. + */ + isp_setdfltparm(isp, 0); + if (IS_DUALBUS(isp)) { + isp_setdfltparm(isp, 1); + } + } /* @@ -1181,14 +1189,6 @@ void isp_init(ispsoftc_t *isp) { - /* - * Must do this first to get defaults established. - */ - isp_setdfltparm(isp, 0); - if (IS_DUALBUS(isp)) { - isp_setdfltparm(isp, 1); - } - if (IS_FC(isp)) { /* * Do this *before* initializing the firmware. @@ -3956,6 +3956,7 @@ static uint16_t isp_nxt_handle(ispsoftc_t *isp, uint16_t handle) { + int i; if (handle == NIL_HANDLE) { if (FCPARAM(isp)->isp_topo == TOPO_F_PORT) { handle = 0; @@ -3982,9 +3983,16 @@ } if (handle == FCPARAM(isp)->isp_loopid) { return (isp_nxt_handle(isp, handle)); - } else { - return (handle); + } + for (i = 0; i < MAX_FC_TARG; i++) { + if (FCPARAM(isp)->portdb[i].state == FC_PORTDB_STATE_NIL) { + continue; + } + if (FCPARAM(isp)->portdb[i].handle == handle) { + return (isp_nxt_handle(isp, handle)); + } } + return (handle); } /* @@ -7034,15 +7042,16 @@ fcp->isp_retry_count = ICB_DFLT_RCOUNT; /* Platform specific.... */ fcp->isp_loopid = DEFAULT_LOOPID(isp); - fcp->isp_nodewwn = DEFAULT_NODEWWN(isp); - fcp->isp_portwwn = DEFAULT_PORTWWN(isp); + fcp->isp_wwnn_nvram = DEFAULT_NODEWWN(isp); + fcp->isp_wwpn_nvram = DEFAULT_PORTWWN(isp); fcp->isp_fwoptions = 0; fcp->isp_fwoptions |= ICBOPT_FAIRNESS; fcp->isp_fwoptions |= ICBOPT_PDBCHANGE_AE; fcp->isp_fwoptions |= ICBOPT_HARD_ADDRESS; fcp->isp_fwoptions |= ICBOPT_FAST_POST; - if (isp->isp_confopts & ISP_CFG_FULL_DUPLEX) + if (isp->isp_confopts & ISP_CFG_FULL_DUPLEX) { fcp->isp_fwoptions |= ICBOPT_FULL_DUPLEX; + } /* * Make sure this is turned off now until we get @@ -7052,7 +7061,7 @@ /* * Now try and read NVRAM unless told to not do so. - * This will set fcparam's isp_nodewwn && isp_portwwn. + * This will set fcparam's isp_wwnn_nvram && isp_wwpn_nvram. */ if ((isp->isp_confopts & ISP_CFG_NONVRAM) == 0) { nvfail = isp_read_nvram(isp); @@ -7081,8 +7090,8 @@ * We always start out with values derived * from NVRAM or our platform default. */ - ISP_NODEWWN(isp) = fcp->isp_nodewwn; - if (fcp->isp_nodewwn == 0) { + ISP_NODEWWN(isp) = fcp->isp_wwnn_nvram; + if (fcp->isp_wwnn_nvram == 0) { isp_prt(isp, ISP_LOGCONFIG, "bad WWNN- using default"); ISP_NODEWWN(isp) = DEFAULT_NODEWWN(isp); @@ -7098,8 +7107,8 @@ * We always start out with values derived * from NVRAM or our platform default. */ - ISP_PORTWWN(isp) = fcp->isp_portwwn; - if (fcp->isp_portwwn == 0) { + ISP_PORTWWN(isp) = fcp->isp_wwpn_nvram; + if (fcp->isp_wwpn_nvram == 0) { isp_prt(isp, ISP_LOGCONFIG, "bad WWPN- using default"); ISP_PORTWWN(isp) = DEFAULT_PORTWWN(isp); @@ -7841,10 +7850,10 @@ /* * Make sure we have both Node and Port as non-zero values. */ - if (fcp->isp_nodewwn != 0 && fcp->isp_portwwn == 0) { - fcp->isp_portwwn = fcp->isp_nodewwn; - } else if (fcp->isp_nodewwn == 0 && fcp->isp_portwwn != 0) { - fcp->isp_nodewwn = fcp->isp_portwwn; + if (fcp->isp_wwnn_nvram != 0 && fcp->isp_wwpn_nvram == 0) { + fcp->isp_wwpn_nvram = fcp->isp_wwnn_nvram; + } else if (fcp->isp_wwnn_nvram == 0 && fcp->isp_wwpn_nvram != 0) { + fcp->isp_wwnn_nvram = fcp->isp_wwpn_nvram; } /* @@ -7853,14 +7862,14 @@ * make sure that there's some non-zero value in 48..56 * for the Port WWN. */ - if (fcp->isp_nodewwn && fcp->isp_portwwn) { - if ((fcp->isp_nodewwn & (((uint64_t) 0xfff) << 48)) != 0 && - (fcp->isp_nodewwn >> 60) == 2) { - fcp->isp_nodewwn &= ~((uint64_t) 0xfff << 48); + if (fcp->isp_wwnn_nvram && fcp->isp_wwpn_nvram) { + if ((fcp->isp_wwnn_nvram & (((uint64_t) 0xfff) << 48)) != 0 && + (fcp->isp_wwnn_nvram >> 60) == 2) { + fcp->isp_wwnn_nvram &= ~((uint64_t) 0xfff << 48); } - if ((fcp->isp_portwwn & (((uint64_t) 0xfff) << 48)) == 0 && - (fcp->isp_portwwn >> 60) == 2) { - fcp->isp_portwwn |= ((uint64_t) 1 << 56); + if ((fcp->isp_wwpn_nvram & (((uint64_t) 0xfff) << 48)) == 0 && + (fcp->isp_wwpn_nvram >> 60) == 2) { + fcp->isp_wwpn_nvram |= ((uint64_t) 1 << 56); } } } @@ -7890,7 +7899,7 @@ wwn |= (((uint64_t) 2)<< 60); } } - fcp->isp_portwwn = wwn; + fcp->isp_wwpn_nvram = wwn; if (IS_2200(isp) || IS_23XX(isp)) { wwn = ISP2100_NVRAM_NODE_NAME(nvram_data); if (wwn) { @@ -7904,7 +7913,7 @@ } else { wwn &= ~((uint64_t) 0xfff << 48); } - fcp->isp_nodewwn = wwn; + fcp->isp_wwnn_nvram = wwn; isp_fix_nvram_wwns(isp); @@ -7924,8 +7933,8 @@ fcp->isp_fwoptions = ISP2100_NVRAM_OPTIONS(nvram_data); isp_prt(isp, ISP_LOGDEBUG0, "NVRAM 0x%08x%08x 0x%08x%08x maxalloc %d maxframelen %d", - (uint32_t) (fcp->isp_nodewwn >> 32), (uint32_t) fcp->isp_nodewwn, - (uint32_t) (fcp->isp_portwwn >> 32), (uint32_t) fcp->isp_portwwn, + (uint32_t) (fcp->isp_wwnn_nvram >> 32), (uint32_t) fcp->isp_wwnn_nvram, + (uint32_t) (fcp->isp_wwpn_nvram >> 32), (uint32_t) fcp->isp_wwpn_nvram, ISP2100_NVRAM_MAXIOCBALLOCATION(nvram_data), ISP2100_NVRAM_MAXFRAMELENGTH(nvram_data)); isp_prt(isp, ISP_LOGDEBUG0, @@ -7969,7 +7978,7 @@ wwn = 0; } } - fcp->isp_portwwn = wwn; + fcp->isp_wwpn_nvram = wwn; wwn = ISP2400_NVRAM_NODE_NAME(nvram_data); if (wwn) { @@ -7977,7 +7986,7 @@ wwn = 0; } } - fcp->isp_nodewwn = wwn; + fcp->isp_wwnn_nvram = wwn; isp_fix_nvram_wwns(isp); ==== //depot/projects/mjexp_6/sys/dev/isp/isp_freebsd.c#4 (text+ko) ==== @@ -486,8 +486,8 @@ hba->fc_scsi_supported = 1; hba->fc_topology = FCPARAM(isp)->isp_topo + 1; hba->fc_loopid = FCPARAM(isp)->isp_loopid; - hba->nvram_node_wwn = FCPARAM(isp)->isp_nodewwn; - hba->nvram_port_wwn = FCPARAM(isp)->isp_portwwn; + hba->nvram_node_wwn = FCPARAM(isp)->isp_wwnn_nvram; + hba->nvram_port_wwn = FCPARAM(isp)->isp_wwpn_nvram; hba->active_node_wwn = ISP_NODEWWN(isp); hba->active_port_wwn = ISP_PORTWWN(isp); } @@ -1671,7 +1671,7 @@ * Construct a tag 'id' based upon tag value (which may be 0..255) * and the handle (which we have to preserve). */ - AT_MAKE_TAGID(atiop->tag_id, device_get_unit(isp->isp_dev), aep); + AT_MAKE_TAGID(atiop->tag_id, bus, device_get_unit(isp->isp_dev), aep); if (aep->at_flags & AT_TQAE) { atiop->tag_action = aep->at_tag_type; atiop->ccb_h.status |= CAM_TAG_ACTION_VALID; @@ -3674,9 +3674,9 @@ } if (isp->isp_osinfo.mboxcmd_done == 0) { isp_prt(isp, ISP_LOGWARN, - "%s Mailbox Command (0x%x) Timeout", + "%s Mailbox Command (0x%x) Timeout (%uus)", isp->isp_osinfo.mbox_sleep_ok? "Interrupting" : "Polled", - isp->isp_lastmbxcmd); + isp->isp_lastmbxcmd, usecs); mbp->param[0] = MBOX_TIMEOUT; isp->isp_osinfo.mboxcmd_done = 1; } ==== //depot/projects/mjexp_6/sys/dev/isp/isp_freebsd.h#4 (text+ko) ==== @@ -346,8 +346,8 @@ #define DEFAULT_LOOPID(x) (isp)->isp_osinfo.default_id #define DEFAULT_NODEWWN(isp) (isp)->isp_osinfo.default_node_wwn #define DEFAULT_PORTWWN(isp) (isp)->isp_osinfo.default_port_wwn -#define ISP_NODEWWN(isp) FCPARAM(isp)->isp_nodewwn -#define ISP_PORTWWN(isp) FCPARAM(isp)->isp_portwwn +#define ISP_NODEWWN(isp) FCPARAM(isp)->isp_wwnn_nvram +#define ISP_PORTWWN(isp) FCPARAM(isp)->isp_wwpn_nvram #if BYTE_ORDER == BIG_ENDIAN #ifdef ISP_SBUS_SUPPORTED ==== //depot/projects/mjexp_6/sys/dev/isp/isp_target.c#3 (text+ko) ==== @@ -827,7 +827,7 @@ nt.nt_iid = GET_IID_VAL(inp->in_iid); nt.nt_tgt = inp->in_tgt; nt.nt_lun = inp->in_lun; - IN_MAKE_TAGID(nt.nt_tagval, 0, inp); + IN_MAKE_TAGID(nt.nt_tagval, GET_BUS_VAL(inp->in_iid), 0, inp); nt.nt_lreserved = inp; if (status == IN_IDE_RECEIVED || status == IN_MSG_RECEIVED) { @@ -875,8 +875,7 @@ { tmd_notify_t nt; static const char f1[] = "%s from N-port handle 0x%x lun %d seq 0x%x"; - static const char f2[] = - "unknown %s 0x%x lun %d N-Port handle 0x%x task flags 0x%x seq 0x%x\n"; + static const char f2[] = "unknown %s 0x%x lun %d N-Port handle 0x%x task flags 0x%x seq 0x%x\n"; uint16_t seqid, loopid; MEMZERO(&nt, sizeof (tmd_notify_t)); @@ -896,7 +895,7 @@ } else { nt.nt_lun = inp->in_lun; } - IN_FC_MAKE_TAGID(nt.nt_tagval, 0, seqid); + IN_FC_MAKE_TAGID(nt.nt_tagval, 0, 0, seqid); nt.nt_need_ack = 1; nt.nt_lreserved = inp; @@ -941,9 +940,9 @@ isp_got_tmf_24xx(ispsoftc_t *isp, at7_entry_t *aep) { tmd_notify_t nt; - static const char f1[] = "%s from PortID 0x%06x lun %d seq 0x%x"; + static const char f1[] = "%s from PortID 0x%06x lun %d seq 0x%llx"; static const char f2[] = - "unknown Task Flag 0x%x lun %d PortID 0x%x tag 0x%x\n"; + "unknown Task Flag 0x%x lun %d PortID 0x%x tag 0x%llx\n"; uint32_t sid; MEMZERO(&nt, sizeof (tmd_notify_t)); @@ -952,6 +951,9 @@ nt.nt_lun = (aep->at_cmnd.fcp_cmnd_lun[0] << 8) | (aep->at_cmnd.fcp_cmnd_lun[1]); + /* + * XXX: VPIDX HAS TO BE DERIVED FROM DESTINATION PORT + */ nt.nt_tagval = aep->at_rxid; nt.nt_lreserved = aep; sid = ==== //depot/projects/mjexp_6/sys/dev/isp/isp_target.h#3 (text+ko) ==== @@ -325,13 +325,13 @@ * Macros to create and fetch and test concatenated handle and tag value macros */ -#define AT_MAKE_TAGID(tid, inst, aep) \ +#define AT_MAKE_TAGID(tid, bus, inst, aep) \ tid = aep->at_handle; \ if (aep->at_flags & AT_TQAE) { \ tid |= (aep->at_tag_val << 16); \ tid |= (1 << 24); \ } \ - tid |= (GET_BUS_VAL(aep->at_iid) << 25); \ + tid |= (bus << 25); \ tid |= (inst << 26) #define CT_MAKE_TAGID(tid, bus, inst, ct) \ @@ -349,11 +349,11 @@ #define AT_GET_BUS(val) (((val) >> 25) & 0x1) #define AT_GET_HANDLE(val) ((val) & 0xffff) -#define IN_MAKE_TAGID(tid, inst, inp) \ +#define IN_MAKE_TAGID(tid, bus, inst, inp) \ tid = inp->in_seqid; \ tid |= (inp->in_tag_val << 16); \ tid |= (1 << 24); \ - tid |= (GET_BUS_VAL(inp->in_iid) << 25); \ + tid |= (bus << 25); \ tid |= (inst << 26) #define TAG_INSERT_INST(tid, inst) \ @@ -423,31 +423,35 @@ /* * Macros to create and fetch and test concatenated handle and tag value macros */ -#define AT2_MAKE_TAGID(tid, inst, aep) \ +#define AT2_MAKE_TAGID(tid, bus, inst, aep) \ tid = aep->at_rxid; \ - tid |= (inst << 16) + tid |= (((uint64_t)inst) << 32); \ + tid |= (((uint64_t)bus) << 48) -#define CT2_MAKE_TAGID(tid, inst, ct) \ +#define CT2_MAKE_TAGID(tid, bus, inst, ct) \ tid = ct->ct_rxid; \ - tid |= (inst << 16) + tid |= (((uint64_t)inst) << 32); \ + tid |= (((uint64_t)(bus & 0xff)) << 48) #define AT2_HAS_TAG(val) 1 -#define AT2_GET_TAG(val) ((val) & 0xffff) -#define AT2_GET_INST(val) ((val) >> 16) +#define AT2_GET_TAG(val) ((val) & 0xffffffff) +#define AT2_GET_INST(val) ((val) >> 32) #define AT2_GET_HANDLE AT2_GET_TAG +#define AT2_GET_BUS(val) (((val) >> 48) & 0xff) #define FC_HAS_TAG AT2_HAS_TAG #define FC_GET_TAG AT2_GET_TAG #define FC_GET_INST AT2_GET_INST #define FC_GET_HANDLE AT2_GET_HANDLE -#define IN_FC_MAKE_TAGID(tid, inst, seqid) \ +#define IN_FC_MAKE_TAGID(tid, bus, inst, seqid) \ tid = seqid; \ - tid |= (inst << 16) + tid |= (((uint64_t)inst) << 32); \ + tid |= (((uint64_t)(bus & 0xff)) << 48) #define FC_TAG_INSERT_INST(tid, inst) \ - tid &= ~0xffff; \ - tid |= (inst << 16) + tid &= ~0xffff00000000ull; \ + tid |= (((uint64_t)inst) << 32) /* * 24XX ATIO Definition ==== //depot/projects/mjexp_6/sys/dev/isp/isp_tpublic.h#3 (text+ko) ==== @@ -53,6 +53,8 @@ */ typedef enum { QIN_HBA_REG=99, /* the argument is a pointer to a hba_register_t */ + QIN_GETINFO, /* the argument is a pointer to a info_t */ + QIN_SETINFO, /* the argument is a pointer to a info_t */ QIN_ENABLE, /* the argument is a pointer to a enadis_t */ QIN_DISABLE, /* the argument is a pointer to a enadis_t */ QIN_TMD_CONT, /* the argument is a pointer to a tmd_cmd_t */ @@ -71,32 +73,43 @@ * in, and the external module to call back with a QIN_HBA_REG that * passes back the corresponding information. */ -#define QR_VERSION 13 +#define QR_VERSION 15 typedef struct { + /* NB: tags from here to r_version must never change */ void * r_identity; void (*r_action)(qact_e, void *); char r_name[8]; int r_inst; int r_version; - struct { - enum { - R_FC, - R_SCSI - } r_type; - union { - struct { - uint64_t r_wwnn; - uint64_t r_wwpn; - } fc; - struct { - int r_iid; - } scsi; - } r_id; - } r_info; + uint32_t r_locator; + uint32_t r_nchannels; + enum { R_FC, R_SPI } r_type; void * r_private; } hba_register_t; /* + * An information structure that is used to get or set per-channel + * transport layer parameters. + */ +typedef struct { + void * i_identity; + enum { I_FC, I_SPI } i_type; + int i_channel; + int i_error; + union { + struct { + uint64_t wwnn_nvram; + uint64_t wwpn_nvram; + uint64_t wwnn; + uint64_t wwpn; + } fc; + struct { + int iid; + } spi; + } i_id; +} info_t; + +/* * Notify structure */ typedef enum { @@ -121,7 +134,8 @@ uint16_t nt_lun; /* logical unit */ uint16_t : 15, nt_need_ack : 1; /* this notify needs an ACK */ - uint32_t nt_tagval; /* tag value */ + uint64_t nt_tagval; /* tag value */ + uint32_t nt_channel; /* channel id */ tmd_ncode_t nt_ncode; /* action */ void * nt_lreserved; void * nt_hreserved; @@ -129,7 +143,7 @@ #define LUN_ANY 0xffff #define TGT_ANY ((uint64_t) -1) #define INI_ANY ((uint64_t) -1) -#define TAG_ANY 0 +#define TAG_ANY ((uint64_t) 0) #define MATCH_TMD(tmd, iid, lun, tag) \ ( \ (tmd) && \ @@ -276,16 +290,16 @@ void * cd_data; /* 'pointer' to data */ uint64_t cd_iid; /* initiator ID */ uint64_t cd_tgt; /* target id */ - uint64_t cd_lun; /* logical unit */ - uint32_t cd_tagval; /* tag value */ + uint8_t cd_lun[8]; /* logical unit */ + uint64_t cd_tagval; /* tag value */ + uint32_t cd_channel; /* channel index */ uint32_t cd_lflags; /* flags lower level sets */ uint32_t cd_hflags; /* flags higher level sets */ uint32_t cd_totlen; /* total data load */ uint32_t cd_resid; /* total data residual */ uint32_t cd_xfrlen; /* current data load */ int32_t cd_error; /* current error */ - uint8_t cd_tagtype : 4, - cd_port : 4; /* port number on HBA */ + uint8_t cd_tagtype; /* tag type */ uint8_t cd_scsi_status; uint8_t cd_sense[TMD_SENSELEN]; uint8_t cd_cdb[TMD_CDBLEN]; @@ -309,6 +323,21 @@ #define TMD_SIZE (sizeof (tmd_cmd_t)) #endif +#define L0LUN_TO_FLATLUN(lptr) ((((lptr)[0] & 0x3f) << 8) | ((lptr)[1])) +#define FLATLUN_TO_L0LUN(lptr, lun) \ + (lptr)[1] = lun; \ + if (sizeof (lun) == 1) { \ + (lptr)[0] = 0; \ + } else { \ + int nl = (lun); \ + if (nl < 256) { \ + (lptr)[0] = 0; \ + } else { \ + (lptr)[0] = 0x40 | ((nl >> 8) & 0x3f); \ + } \ + } \ + memset(&(lptr)[2], 0, 6) + /* * Note that NODISC (obviously) doesn't apply to non-SPI transport. * ==== //depot/projects/mjexp_6/sys/dev/isp/ispvar.h#3 (text+ko) ==== @@ -380,8 +380,8 @@ uint8_t isp_reserved; uint16_t isp_maxalloc; uint16_t isp_maxfrmlen; - uint64_t isp_nodewwn; - uint64_t isp_portwwn; + uint64_t isp_wwnn_nvram; + uint64_t isp_wwpn_nvram; /* * Our Port Data Base @@ -980,25 +980,25 @@ * * * DEFAULT_IID(ispsoftc_t *) Default SCSI initiator ID - * DEFAULT_LOOPID(ispsoftc_t *) Default FC Loop ID - * DEFAULT_NODEWWN(ispsoftc_t *) Default Node WWN - * DEFAULT_PORTWWN(ispsoftc_t *) Default Port WWN - * DEFAULT_FRAMESIZE(ispsoftc_t *) Default Frame Size + * DEFAULT_LOOPID(ispsoftc_t *) Default FC Loop ID + * DEFAULT_NODEWWN(ispsoftc_t *) Default Node WWN + * DEFAULT_PORTWWN(ispsoftc_t *) Default Port WWN + * DEFAULT_FRAMESIZE(ispsoftc_t *) Default Frame Size * DEFAULT_EXEC_THROTTLE(ispsoftc_t *) Default Execution Throttle * These establish reasonable defaults for each platform. * These must be available independent of card NVRAM and are * to be used should NVRAM not be readable. * - * ISP_NODEWWN(ispsoftc_t *) FC Node WWN to use - * ISP_PORTWWN(ispsoftc_t *) FC Port WWN to use + * ISP_NODEWWN(ispsoftc_t *) FC Node WWN to use + * ISP_PORTWWN(ispsoftc_t *) FC Port WWN to use * * These are to be used after NVRAM is read. The tags - * in fcparam.isp_{node,port}wwn reflect the values + * in fcparam.isp_ww{n,p}n_nvram reflect the values * read from NVRAM (possibly corrected for card botches). * Each platform can take that information and override * it or ignore and return the Node and Port WWNs to be - * used when sending the Qlogic f/w the Initialization Control - * Block. + * used when sending the Qlogic f/w the Initialization + * Control Block. * * (XXX these do endian specific transformations- in transition XXX) * From owner-p4-projects@FreeBSD.ORG Sat Jan 20 04:27:13 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 5F55B16A405; Sat, 20 Jan 2007 04:27:13 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 202C916A402 for ; Sat, 20 Jan 2007 04:27:13 +0000 (UTC) (envelope-from mjacob@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 0E8D213C44C for ; Sat, 20 Jan 2007 04:27:13 +0000 (UTC) (envelope-from mjacob@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0K4RCOI087106 for ; Sat, 20 Jan 2007 04:27:12 GMT (envelope-from mjacob@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0K4RBSK087103 for perforce@freebsd.org; Sat, 20 Jan 2007 04:27:11 GMT (envelope-from mjacob@freebsd.org) Date: Sat, 20 Jan 2007 04:27:11 GMT Message-Id: <200701200427.l0K4RBSK087103@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to mjacob@freebsd.org using -f From: Matt Jacob To: Perforce Change Reviews Cc: Subject: PERFORCE change 113193 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Jan 2007 04:27:13 -0000 http://perforce.freebsd.org/chv.cgi?CH=113193 Change 113193 by mjacob@mjexp_6 on 2007/01/20 04:26:58 Integrate from RELENG_6. Affected files ... .. //depot/projects/mjexp_6/sys/boot/forth/loader.conf#2 integrate .. //depot/projects/mjexp_6/sys/conf/newvers.sh#2 integrate .. //depot/projects/mjexp_6/sys/contrib/pf/net/if_pfsync.c#2 integrate .. //depot/projects/mjexp_6/sys/dev/arl/if_arl.c#2 integrate .. //depot/projects/mjexp_6/sys/dev/ath/if_ath.c#2 integrate .. //depot/projects/mjexp_6/sys/dev/awi/awi.c#2 integrate .. //depot/projects/mjexp_6/sys/dev/bce/if_bce.c#2 integrate .. //depot/projects/mjexp_6/sys/dev/bce/if_bcereg.h#2 integrate .. //depot/projects/mjexp_6/sys/dev/ce/if_ce.c#2 integrate .. //depot/projects/mjexp_6/sys/dev/cp/if_cp.c#2 integrate .. //depot/projects/mjexp_6/sys/dev/ctau/if_ct.c#2 integrate .. //depot/projects/mjexp_6/sys/dev/cx/if_cx.c#2 integrate .. //depot/projects/mjexp_6/sys/dev/en/midway.c#2 integrate .. //depot/projects/mjexp_6/sys/dev/firewire/if_fwip.c#2 integrate .. //depot/projects/mjexp_6/sys/dev/gem/if_gem.c#2 integrate .. //depot/projects/mjexp_6/sys/dev/hptmv/entry.c#2 integrate .. //depot/projects/mjexp_6/sys/dev/hwpmc/hwpmc_x86.c#2 integrate .. //depot/projects/mjexp_6/sys/dev/ipw/if_ipw.c#2 integrate .. //depot/projects/mjexp_6/sys/dev/isp/isp_target.c#4 integrate .. //depot/projects/mjexp_6/sys/dev/iwi/if_iwi.c#2 integrate .. //depot/projects/mjexp_6/sys/dev/mfi/mfi.c#2 integrate .. //depot/projects/mjexp_6/sys/dev/my/if_my.c#2 integrate .. //depot/projects/mjexp_6/sys/dev/ppbus/if_plip.c#2 integrate .. //depot/projects/mjexp_6/sys/dev/ral/rt2560.c#2 integrate .. //depot/projects/mjexp_6/sys/dev/ral/rt2661.c#2 integrate .. //depot/projects/mjexp_6/sys/dev/usb/if_ural.c#2 integrate .. //depot/projects/mjexp_6/sys/dev/wi/if_wi.c#2 integrate .. //depot/projects/mjexp_6/sys/fs/msdosfs/msdosfs_vfsops.c#2 integrate .. //depot/projects/mjexp_6/sys/fs/pseudofs/pseudofs_vncache.c#2 integrate .. //depot/projects/mjexp_6/sys/fs/udf/udf_vfsops.c#2 integrate .. //depot/projects/mjexp_6/sys/i4b/driver/i4b_ipr.c#2 integrate .. //depot/projects/mjexp_6/sys/kern/kern_descrip.c#2 integrate .. //depot/projects/mjexp_6/sys/kern/uipc_usrreq.c#2 integrate .. //depot/projects/mjexp_6/sys/net/bpf.c#2 integrate .. //depot/projects/mjexp_6/sys/net/bpf.h#2 integrate .. //depot/projects/mjexp_6/sys/net/bpfdesc.h#2 integrate .. //depot/projects/mjexp_6/sys/net/if_bridge.c#2 integrate .. //depot/projects/mjexp_6/sys/net/if_bridgevar.h#2 integrate .. //depot/projects/mjexp_6/sys/net/if_disc.c#2 integrate .. //depot/projects/mjexp_6/sys/net/if_enc.c#2 integrate .. //depot/projects/mjexp_6/sys/net/if_faith.c#2 integrate .. //depot/projects/mjexp_6/sys/net/if_fwsubr.c#2 integrate .. //depot/projects/mjexp_6/sys/net/if_gif.c#2 integrate .. //depot/projects/mjexp_6/sys/net/if_gre.c#2 integrate .. //depot/projects/mjexp_6/sys/net/if_loop.c#2 integrate .. //depot/projects/mjexp_6/sys/net/if_sl.c#2 integrate .. //depot/projects/mjexp_6/sys/net/if_stf.c#2 integrate .. //depot/projects/mjexp_6/sys/net/if_tap.c#2 integrate .. //depot/projects/mjexp_6/sys/net/if_tun.c#2 integrate .. //depot/projects/mjexp_6/sys/net80211/ieee80211_input.c#2 integrate .. //depot/projects/mjexp_6/sys/netgraph/ng_iface.c#2 integrate .. //depot/projects/mjexp_6/sys/netgraph/ng_sppp.c#2 integrate .. //depot/projects/mjexp_6/sys/netinet/ip_carp.c#2 integrate .. //depot/projects/mjexp_6/sys/netinet/ip_gre.c#2 integrate .. //depot/projects/mjexp_6/sys/netinet/tcp_usrreq.c#3 integrate .. //depot/projects/mjexp_6/sys/nfsserver/nfs_srvsubs.c#2 integrate .. //depot/projects/mjexp_6/sys/nfsserver/nfsm_subs.h#2 integrate .. //depot/projects/mjexp_6/sys/powerpc/psim/ata_iobus.c#2 integrate .. //depot/projects/mjexp_6/sys/security/audit/audit_arg.c#2 integrate .. //depot/projects/mjexp_6/sys/security/audit/audit_private.h#2 integrate .. //depot/projects/mjexp_6/sys/sparc64/pci/ofw_pcibus.c#3 integrate .. //depot/projects/mjexp_6/sys/sys/copyright.h#3 integrate .. //depot/projects/mjexp_6/sys/sys/file.h#2 integrate .. //depot/projects/mjexp_6/sys/sys/param.h#3 integrate .. //depot/projects/mjexp_6/sys/vm/swap_pager.c#2 integrate .. //depot/projects/mjexp_6/sys/vm/uma.h#2 integrate .. //depot/projects/mjexp_6/sys/vm/uma_core.c#2 integrate Differences ... ==== //depot/projects/mjexp_6/sys/boot/forth/loader.conf#2 (text+ko) ==== @@ -6,7 +6,7 @@ # # All arguments must be in double quotes. # -# $FreeBSD: src/sys/boot/forth/loader.conf,v 1.95.2.10 2006/11/05 08:50:38 hrs Exp $ +# $FreeBSD: src/sys/boot/forth/loader.conf,v 1.95.2.11 2007/01/17 02:45:35 maxim Exp $ ############################################################## ### Basic configuration options ############################ @@ -146,13 +146,13 @@ # ggatec(8), ggated(8), ggatel(8)) geom_label_load="NO" # File system labels (see glabel(8)) geom_md_load="NO" # Memory disk driver (vnode/swap/malloc) (see + # md(4), mdconfig(8)) geom_mirror_load="NO" # RAID1 disk driver (see gmirror(8)) geom_nop_load="NO" # Transparent disk driver (see gnop(8)) geom_raid3_load="NO" # RAID3 disk driver (see graid3(8)) geom_shsec_load="NO" # Shared secret disk driver (see gshsec(8)) geom_stripe_load="NO" # RAID0 disk driver (see gstripe(8)) geom_uzip_load="NO" # Compressed disk images driver (see mkuzip(8)) - # md(4), mdconfig(8)) geom_vinum_load="NO" # Concatenated/mirror/raid driver (see vinum(4)) @@ -182,7 +182,8 @@ ############################################################## if_disc_load="NO" # Discard device -if_ef_load="NO" # pseudo-device providing support for multiple ethernet frame types +if_ef_load="NO" # pseudo-device providing support for multiple + # ethernet frame types if_faith_load="NO" # IPv6-to-IPv4 TCP relay capturing interface if_gif_load="NO" # generic tunnel interface if_gre_load="NO" # encapsulating network device @@ -216,22 +217,26 @@ if_cue_load="NO" # CATC USB-EL1210A USB Ethernet if_dc_load="NO" # DEC/Intel 21143 and various workalikes if_de_load="NO" # DEC DC21x4x Ethernet -if_ed_load="NO" # National Semiconductor DS8390/WD83C690 Ethernet +if_ed_load="NO" # National Semiconductor DS8390/WD83C690 + # Ethernet if_el_load="NO" # 3Com Etherlink 3C501 if_em_load="NO" # Intel(R) PRO/1000 Gigabit Ethernet if_en_load="NO" # Midway-based ATM interfaces if_ep_load="NO" # 3Com Etherlink III (3c5x9) if_ex_load="NO" # Intel EtherExpress Pro/10 Ethernet -if_fe_load="NO" # Fujitsu MB86960A/MB86965A based Ethernet adapters +if_fe_load="NO" # Fujitsu MB86960A/MB86965A based Ethernet + # adapters if_fxp_load="NO" # Intel EtherExpress PRO/100B (82557, 82558) if_gem_load="NO" # Sun GEM/Sun ERI/Apple GMAC if_hme_load="NO" # Sun Microelectronics STP2002-STQ Ethernet if_ie_load="NO" # Intel 82586 if_ipw_load="NO" # Intel PRO/Wireless 2100 wireless -if_iwi_load="NO" # Intel PRO/Wireless 2200BG/2225BG/2915ABG wireless +if_iwi_load="NO" # Intel PRO/Wireless 2200BG/2225BG/2915ABG + # wireless if_ixgb_load="NO" # Intel PRO/10Gb Ethernet if_le_load="NO" # AMD Am7900 LANCE and Am79C9xx PCnet -if_lge_load="NO" # Level 1 LXT1001 NetCellerator PCI Gigabit Ethernet +if_lge_load="NO" # Level 1 LXT1001 NetCellerator PCI Gigabit + # Ethernet if_lnc_load="NO" # AMD Lance/PCnet Ethernet if_my_load="NO" # Myson PCI Fast Ethernet if_nge_load="NO" # National Semiconductor PCI Gigabit Ethernet @@ -287,18 +292,21 @@ ng_ksocket_load="NO" # kernel socket netgraph node type ng_l2tp_load="NO" # L2TP protocol netgraph node type ng_lmi_load="NO" # frame relay LMI protocol netgraph node type -ng_mppc_load="NO" # Microsoft MPPC/MPPE compression and encryption netgraph node type -ng_netflow_load="NO" # Cisco's NetFlow netgraph note type +ng_mppc_load="NO" # Microsoft MPPC/MPPE compression and + # encryption netgraph node type +ng_netflow_load="NO" # Cisco's NetFlow netgraph node type ng_one2many_load="NO" # packet multiplexing netgraph node type ng_ppp_load="NO" # PPP protocol netgraph node type ng_pppoe_load="NO" # RFC 2516 PPPOE protocol netgraph node type ng_pptpgre_load="NO" # PPTP GRE protocol netgraph node type ng_rfc1490_load="NO" # RFC 1490 netgraph node type ng_socket_load="NO" # Netgraph socket node type -ng_split_load="NO" # netgraph node to separate incoming and outgoing flows +ng_split_load="NO" # netgraph node to separate incoming and + # outgoing flows ng_sppp_load="NO" # sppp netgraph node type ng_tee_load="NO" # Netgraph ``tee'' node type -ng_tty_load="NO" # Netgraph node type that is also a line discipline +ng_tty_load="NO" # Netgraph node type that is also a line + # discipline ng_vjc_load="NO" # Van Jacobsen compression netgraph node type ng_vlan_load="NO" # IEEE 802.1Q VLAN tagging netgraph node type ==== //depot/projects/mjexp_6/sys/conf/newvers.sh#2 (text+ko) ==== @@ -28,11 +28,11 @@ # SUCH DAMAGE. # # @(#)newvers.sh 8.1 (Berkeley) 4/20/94 -# $FreeBSD: src/sys/conf/newvers.sh,v 1.69.2.13 2006/09/10 03:06:53 kensmith Exp $ +# $FreeBSD: src/sys/conf/newvers.sh,v 1.69.2.14 2007/01/15 06:16:29 kensmith Exp $ TYPE="FreeBSD" REVISION="6.2" -BRANCH="PRERELEASE" +BRANCH="STABLE" if [ "X${BRANCH_OVERRIDE}" != "X" ]; then BRANCH=${BRANCH_OVERRIDE} fi ==== //depot/projects/mjexp_6/sys/contrib/pf/net/if_pfsync.c#2 (text+ko) ==== @@ -1,4 +1,4 @@ -/* $FreeBSD: src/sys/contrib/pf/net/if_pfsync.c,v 1.19.2.4 2006/08/10 13:45:59 glebius Exp $ */ +/* $FreeBSD: src/sys/contrib/pf/net/if_pfsync.c,v 1.19.2.5 2007/01/19 23:01:26 jhb Exp $ */ /* $OpenBSD: if_pfsync.c,v 1.46 2005/02/20 15:58:38 mcbride Exp $ */ /* @@ -1761,9 +1761,13 @@ KASSERT(m != NULL, ("pfsync_sendout: null mbuf")); #endif #if NBPFILTER > 0 +#ifdef __FreeBSD__ + BPF_MTAP(ifp, m); +#else if (ifp->if_bpf) bpf_mtap(ifp->if_bpf, m); #endif +#endif if (sc->sc_mbuf_net) { m_freem(m); ==== //depot/projects/mjexp_6/sys/dev/arl/if_arl.c#2 (text+ko) ==== @@ -28,7 +28,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/arl/if_arl.c,v 1.10.2.1 2005/08/25 05:01:04 rwatson Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/arl/if_arl.c,v 1.10.2.2 2007/01/19 23:01:27 jhb Exp $"); #include "opt_inet.h" @@ -980,7 +980,7 @@ * Check if there's a bpf filter listening on this interface. * If so, hand off the raw packet to bpf. */ - if (ifp->if_bpf) { + if (bpf_peers_present(ifp->if_bpf)) { /* * Note that the interface cannot be in promiscuous mode if * there are no bpf listeners. And if el are in promiscuous ==== //depot/projects/mjexp_6/sys/dev/ath/if_ath.c#2 (text+ko) ==== @@ -35,7 +35,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/ath/if_ath.c,v 1.94.2.28 2006/10/16 01:01:41 sam Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/ath/if_ath.c,v 1.94.2.29 2007/01/19 23:01:27 jhb Exp $"); /* * Driver for the Atheros Wireless LAN controller. @@ -3019,7 +3019,7 @@ * pass decrypt+mic errors but others may be * interesting (e.g. crc). */ - if (sc->sc_drvbpf != NULL && + if (bpf_peers_present(sc->sc_drvbpf) && (ds->ds_rxstat.rs_status & sc->sc_monpass)) { bus_dmamap_sync(sc->sc_dmat, bf->bf_dmamap, BUS_DMASYNC_POSTREAD); @@ -3050,7 +3050,8 @@ sc->sc_stats.ast_ant_rx[ds->ds_rxstat.rs_antenna]++; - if (sc->sc_drvbpf != NULL && !ath_rx_tap(sc, m, ds, tsf, nf)) { + if (bpf_peers_present(sc->sc_drvbpf) && + !ath_rx_tap(sc, m, ds, tsf, nf)) { m_freem(m); /* XXX reclaim */ goto rx_next; } @@ -3752,9 +3753,9 @@ ieee80211_dump_pkt(mtod(m0, caddr_t), m0->m_len, sc->sc_hwmap[txrate].ieeerate, -1); - if (ic->ic_rawbpf) + if (bpf_peers_present(ic->ic_rawbpf)) bpf_mtap(ic->ic_rawbpf, m0); - if (sc->sc_drvbpf) { + if (bpf_peers_present(sc->sc_drvbpf)) { u_int64_t tsf = ath_hal_gettsf64(ah); sc->sc_tx_th.wt_tsf = htole64(tsf); ==== //depot/projects/mjexp_6/sys/dev/awi/awi.c#2 (text+ko) ==== @@ -89,7 +89,7 @@ __KERNEL_RCSID(0, "$NetBSD: awi.c,v 1.62 2004/01/16 14:13:15 onoe Exp $"); #endif #ifdef __FreeBSD__ -__FBSDID("$FreeBSD: src/sys/dev/awi/awi.c,v 1.37.2.4 2005/09/03 22:46:42 sam Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/awi/awi.c,v 1.37.2.5 2007/01/19 23:01:27 jhb Exp $"); #endif #include "opt_inet.h" @@ -796,7 +796,7 @@ } IFQ_DEQUEUE(&ifp->if_snd, m0); #if NBPFILTER > 0 - if (ifp->if_bpf) + if (bpf_peers_present(ifp->if_bpf)) bpf_mtap(ifp->if_bpf, m0); #endif if ((ifp->if_flags & IFF_LINK0) || sc->sc_adhoc_ap) @@ -839,7 +839,7 @@ ifp->if_opackets++; } #if NBPFILTER > 0 - if (ic->ic_rawbpf) + if (bpf_peers_present(ic->ic_rawbpf)) bpf_mtap(ic->ic_rawbpf, m0); #endif if (dowep) { ==== //depot/projects/mjexp_6/sys/dev/bce/if_bce.c#2 (text) ==== @@ -29,7 +29,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/bce/if_bce.c,v 1.2.2.7 2006/11/28 17:05:36 scottl Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/bce/if_bce.c,v 1.2.2.8 2007/01/18 16:14:19 delphij Exp $"); /* * The following controllers are supported by this driver: @@ -303,7 +303,7 @@ static void bce_start_locked (struct ifnet *); static void bce_start (struct ifnet *); static int bce_ioctl (struct ifnet *, u_long, caddr_t); -static void bce_watchdog (struct ifnet *); +static void bce_watchdog (struct bce_softc *); static int bce_ifmedia_upd (struct ifnet *); static void bce_ifmedia_sts (struct ifnet *, struct ifmediareq *); static void bce_init_locked (struct bce_softc *); @@ -326,7 +326,6 @@ static void bce_intr (void *); static void bce_set_rx_mode (struct bce_softc *); static void bce_stats_update (struct bce_softc *); -static void bce_tick_locked (struct bce_softc *); static void bce_tick (void *); static void bce_add_sysctls (struct bce_softc *); @@ -716,8 +715,6 @@ ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST; ifp->if_ioctl = bce_ioctl; ifp->if_start = bce_start; - ifp->if_timer = 0; - ifp->if_watchdog = bce_watchdog; ifp->if_init = bce_init; ifp->if_mtu = ETHERMTU; ifp->if_hwassist = BCE_IF_HWASSIST; @@ -761,7 +758,7 @@ #if __FreeBSD_version < 500000 callout_init(&sc->bce_stat_ch); #else - callout_init(&sc->bce_stat_ch, CALLOUT_MPSAFE); + callout_init_mtx(&sc->bce_stat_ch, &sc->bce_mtx, 0); #endif /* Hookup IRQ last. */ @@ -3115,7 +3112,7 @@ } ifp->if_flags = itmp; - ifp->if_timer = 0; + sc->watchdog_timer = 0; sc->bce_link = 0; @@ -3881,7 +3878,7 @@ sc->bce_link = 0; callout_stop(&sc->bce_stat_ch); - bce_tick_locked(sc); + bce_tick(sc); /* Update the status_attn_bits_ack field in the status block. */ if (new_link_state) { @@ -4289,7 +4286,7 @@ } /* Clear the TX timeout timer. */ - ifp->if_timer = 0; + sc->watchdog_timer = 0; /* Clear the tx hardware queue full flag. */ if ((sc->used_tx_bd + BCE_TX_SLACK_SPACE) < USABLE_TX_BD) { @@ -4757,7 +4754,7 @@ REG_WR(sc, MB_TX_CID_ADDR + BCE_L2CTX_TX_HOST_BSEQ, sc->tx_prod_bseq); /* Set the tx timeout. */ - ifp->if_timer = BCE_TX_TIMEOUT; + sc->watchdog_timer = BCE_TX_TIMEOUT; bce_start_locked_exit: return; @@ -4990,25 +4987,34 @@ /* Nothing. */ /****************************************************************************/ static void -bce_watchdog(struct ifnet *ifp) +bce_watchdog(struct bce_softc *sc) { - struct bce_softc *sc = ifp->if_softc; DBRUN(BCE_WARN_SEND, bce_dump_driver_state(sc); bce_dump_status_block(sc)); + BCE_LOCK_ASSERT(sc); + + if (sc->watchdog_timer == 0 || --sc->watchdog_timer) + return; + + /* + * If we are in this routine because of pause frames, then + * don't reset the hardware. + */ + if (REG_RD(sc, BCE_EMAC_TX_STATUS) & BCE_EMAC_TX_STATUS_XOFFED) + return; + BCE_PRINTF(sc, "%s(%d): Watchdog timeout occurred, resetting!\n", __FILE__, __LINE__); /* DBRUN(BCE_FATAL, bce_breakpoint(sc)); */ - BCE_LOCK(sc); - ifp->if_drv_flags &= ~IFF_DRV_RUNNING; + sc->bce_ifp->if_drv_flags &= ~IFF_DRV_RUNNING; bce_init_locked(sc); - ifp->if_oerrors++; - BCE_UNLOCK(sc); + sc->bce_ifp->if_oerrors++; } @@ -5509,8 +5515,9 @@ static void -bce_tick_locked(struct bce_softc *sc) +bce_tick(void *xsc) { + struct bce_softc *sc = xsc; struct mii_data *mii = NULL; struct ifnet *ifp; u32 msg; @@ -5530,9 +5537,12 @@ /* Update the statistics from the hardware statistics block. */ bce_stats_update(sc); + /* Check that chip hasn't hang. */ + bce_watchdog(sc); + /* Schedule the next tick. */ callout_reset( - &sc->bce_stat_ch, /* callout */ + &sc->bce_stat_ch, /* callout */ hz, /* ticks */ bce_tick, /* function */ sc); /* function argument */ @@ -5564,19 +5574,6 @@ } -static void -bce_tick(void *xsc) -{ - struct bce_softc *sc; - - sc = xsc; - - BCE_LOCK(sc); - bce_tick_locked(sc); - BCE_UNLOCK(sc); -} - - #ifdef BCE_DEBUG /****************************************************************************/ /* Allows the driver state to be dumped through the sysctl interface. */ ==== //depot/projects/mjexp_6/sys/dev/bce/if_bcereg.h#2 (text) ==== @@ -26,7 +26,7 @@ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF * THE POSSIBILITY OF SUCH DAMAGE. * - * $FreeBSD: src/sys/dev/bce/if_bcereg.h,v 1.1.2.4 2006/11/28 17:05:36 scottl Exp $ + * $FreeBSD: src/sys/dev/bce/if_bcereg.h,v 1.1.2.5 2007/01/18 16:14:19 delphij Exp $ */ #ifndef _BCE_H_DEFINED @@ -4755,6 +4755,8 @@ int bce_link; struct callout bce_stat_ch; + int watchdog_timer; /* ticks until chip reset */ + /* Frame size and mbuf allocation size for RX frames. */ u32 max_frame_size; int mbuf_alloc_size; ==== //depot/projects/mjexp_6/sys/dev/ce/if_ce.c#2 (text) ==== @@ -16,7 +16,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/ce/if_ce.c,v 1.3.6.1 2006/03/10 22:57:36 rik Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/ce/if_ce.c,v 1.3.6.2 2007/01/19 23:01:28 jhb Exp $"); #include @@ -1069,10 +1069,10 @@ if (! m) return; #ifndef NETGRAPH - if (d->ifp->if_bpf) #if __FreeBSD_version >= 500000 - BPF_MTAP (d->ifp, m); + BPF_MTAP (d->ifp, m); #else + if (d->ifp->if_bpf) bpf_mtap (d->ifp, m); #endif #endif @@ -1191,10 +1191,10 @@ m->m_pkthdr.rcvif = d->ifp; /* Check if there's a BPF listener on this interface. * If so, hand off the raw packet to bpf. */ - if (d->ifp->if_bpf) #if __FreeBSD_version >= 500000 - BPF_TAP (d->ifp, data, len); + BPF_TAP (d->ifp, data, len); #else + if (d->ifp->if_bpf) bpf_tap (d->ifp, data, len); #endif IF_ENQUEUE(&d->rqueue, m); ==== //depot/projects/mjexp_6/sys/dev/cp/if_cp.c#2 (text+ko) ==== @@ -22,7 +22,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/cp/if_cp.c,v 1.24.2.1 2005/08/25 05:01:06 rwatson Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/cp/if_cp.c,v 1.24.2.2 2007/01/19 23:01:28 jhb Exp $"); #include #include @@ -821,8 +821,7 @@ if (! m) return; #ifndef NETGRAPH - if (d->ifp->if_bpf) - BPF_MTAP (d->ifp, m); + BPF_MTAP (d->ifp, m); #endif len = m_length (m, NULL); if (len >= BUFSZ) @@ -931,8 +930,7 @@ m->m_pkthdr.rcvif = d->ifp; /* Check if there's a BPF listener on this interface. * If so, hand off the raw packet to bpf. */ - if (d->ifp->if_bpf) - BPF_TAP (d->ifp, data, len); + BPF_TAP (d->ifp, data, len); IF_ENQUEUE (&d->queue, m); #endif } ==== //depot/projects/mjexp_6/sys/dev/ctau/if_ct.c#2 (text+ko) ==== @@ -22,7 +22,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/ctau/if_ct.c,v 1.25.2.1 2005/08/25 05:01:06 rwatson Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/ctau/if_ct.c,v 1.25.2.2 2007/01/19 23:01:28 jhb Exp $"); #include #include @@ -1030,8 +1030,7 @@ if (! m) return; #ifndef NETGRAPH - if (d->ifp->if_bpf) - BPF_MTAP (d->ifp, m); + BPF_MTAP (d->ifp, m); #endif len = m_length (m, NULL); if (! m->m_next) @@ -1151,8 +1150,7 @@ m->m_pkthdr.rcvif = d->ifp; /* Check if there's a BPF listener on this interface. * If so, hand off the raw packet to bpf. */ - if (d->ifp->if_bpf) - BPF_TAP (d->ifp, data, len); + BPF_TAP (d->ifp, data, len); IF_ENQUEUE (&d->queue, m); #endif } ==== //depot/projects/mjexp_6/sys/dev/cx/if_cx.c#2 (text+ko) ==== @@ -23,7 +23,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/cx/if_cx.c,v 1.45.2.2 2006/03/10 19:37:31 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/cx/if_cx.c,v 1.45.2.3 2007/01/19 23:01:28 jhb Exp $"); #include @@ -1185,8 +1185,7 @@ if (! m) return; #ifndef NETGRAPH - if (d->ifp->if_bpf) - BPF_MTAP (d->ifp, m); + BPF_MTAP (d->ifp, m); #endif len = m_length (m, NULL); if (! m->m_next) @@ -1342,8 +1341,7 @@ m->m_pkthdr.rcvif = d->ifp; /* Check if there's a BPF listener on this interface. * If so, hand off the raw packet to bpf. */ - if (d->ifp->if_bpf) - BPF_TAP (d->ifp, data, len); + BPF_TAP (d->ifp, data, len); IF_ENQUEUE (&d->queue, m); #endif } ==== //depot/projects/mjexp_6/sys/dev/en/midway.c#2 (text+ko) ==== @@ -32,7 +32,7 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include -__FBSDID("$FreeBSD: src/sys/dev/en/midway.c,v 1.65.2.1 2005/08/25 05:01:07 rwatson Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/en/midway.c,v 1.65.2.2 2007/01/19 23:01:28 jhb Exp $"); /* * @@ -776,7 +776,7 @@ sc->vccs[tx.vci]->obytes += tx.datalen; #ifdef ENABLE_BPF - if (sc->ifp->if_bpf != NULL) { + if (bpf_peers_present(sc->ifp->if_bpf)) { /* * adjust the top of the mbuf to skip the TBD if present * before passing the packet to bpf. @@ -794,7 +794,7 @@ tx.m->m_pkthdr.len = tx.datalen; } - BPF_MTAP(sc->ifp, tx.m); + bpf_mtap(sc->ifp->if_bpf, tx.m); } #endif ==== //depot/projects/mjexp_6/sys/dev/firewire/if_fwip.c#2 (text+ko) ==== @@ -33,7 +33,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/dev/firewire/if_fwip.c,v 1.7.2.3 2005/10/07 14:00:03 glebius Exp $ + * $FreeBSD: src/sys/dev/firewire/if_fwip.c,v 1.7.2.4 2007/01/19 23:01:29 jhb Exp $ */ #ifdef HAVE_KERNEL_OPTION_HEADERS @@ -838,7 +838,7 @@ * Record the sender ID for possible BPF usage. */ src = ntohl(p[1]) >> 16; - if (ifp->if_bpf) { + if (bpf_peers_present(ifp->if_bpf)) { mtag = m_tag_alloc(MTAG_FIREWIRE, MTAG_FIREWIRE_SENDER_EUID, 2*sizeof(uint32_t), M_NOWAIT); @@ -939,7 +939,7 @@ return; } - if (ifp->if_bpf) { + if (bpf_peers_present(ifp->if_bpf)) { /* * Record the sender ID for possible BPF usage. */ ==== //depot/projects/mjexp_6/sys/dev/gem/if_gem.c#2 (text+ko) ==== @@ -28,7 +28,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/gem/if_gem.c,v 1.29.2.5 2005/10/05 22:08:17 marius Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/gem/if_gem.c,v 1.29.2.6 2007/01/19 23:01:29 jhb Exp $"); /* * Driver for Sun GEM ethernet controllers. @@ -1205,8 +1205,7 @@ bus_space_write_4(sc->sc_bustag, sc->sc_h, GEM_TX_KICK, sc->sc_txnext); - if (ifp->if_bpf != NULL) - bpf_mtap(ifp->if_bpf, m0); + BPF_MTAP(ifp, m0); } while (1); if (txmfail == -1 || sc->sc_txfree == 0) { ==== //depot/projects/mjexp_6/sys/dev/hptmv/entry.c#2 (text+ko) ==== @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/dev/hptmv/entry.c,v 1.8.2.1 2005/10/06 18:47:57 delphij Exp $ + * $FreeBSD: src/sys/dev/hptmv/entry.c,v 1.8.2.2 2007/01/11 16:31:47 jhb Exp $ */ #include @@ -167,12 +167,12 @@ { intrmask_t spl = 0; - mtx_lock_spin(&driver_lock); + mtx_lock(&driver_lock); return spl; } void unlock_driver(intrmask_t spl) { - mtx_unlock_spin(&driver_lock); + mtx_unlock(&driver_lock); } #else static int driver_locked = 0; @@ -1169,7 +1169,7 @@ #if __FreeBSD_version >= 500000 static void hpt_init(void *dummy) { - mtx_init(&driver_lock, "hptlock", NULL, MTX_SPIN); + mtx_init(&driver_lock, "hptlock", NULL, MTX_DEF); } SYSINIT(hptinit, SI_SUB_CONFIGURE, SI_ORDER_FIRST, hpt_init, NULL); #endif @@ -1184,8 +1184,6 @@ PVDevice pVDev; - intrmask_t oldspl = lock_driver(); - pAdapter->next = 0; if(gIal_Adapter == 0){ @@ -1226,7 +1224,6 @@ if (hptmv_allocate_edma_queues(pAdapter)) { MV_ERROR("RR182x: Failed to allocate memory for EDMA queues\n"); - unlock_driver(oldspl); return ENOMEM; } @@ -1239,7 +1236,6 @@ { MV_ERROR("RR182x: Failed to remap memory space\n"); hptmv_free_edma_queues(pAdapter); - unlock_driver(oldspl); return ENXIO; } else @@ -1269,7 +1265,6 @@ unregister: bus_release_resource(pAdapter->hpt_dev, SYS_RES_MEMORY, rid, pAdapter->mem_res); hptmv_free_edma_queues(pAdapter); - unlock_driver(oldspl); return ENXIO; } pAdapter->ver_601 = pMvSataAdapter->pcbVersion; @@ -1412,7 +1407,6 @@ #endif mvSataUnmaskAdapterInterrupt(pMvSataAdapter); - unlock_driver(oldspl); return 0; } ==== //depot/projects/mjexp_6/sys/dev/hwpmc/hwpmc_x86.c#2 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/hwpmc/hwpmc_x86.c,v 1.2.2.1 2005/08/26 19:49:32 jkoshy Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/hwpmc/hwpmc_x86.c,v 1.2.2.2 2007/01/15 04:58:49 emaste Exp $"); #include #include @@ -82,7 +82,7 @@ case 0x7: case 0x8: case 0xA: case 0xB: cputype = PMC_CPU_INTEL_PIII; break; - case 0x9: case 0xD: + case 0x9: case 0xD: case 0xE: cputype = PMC_CPU_INTEL_PM; break; } @@ -91,7 +91,7 @@ #if defined(__i386__) || defined(__amd64__) case 0xF00: /* P4 */ model = ((cpu_id & 0xF0000) >> 12) | ((cpu_id & 0xF0) >> 4); - if (model >= 0 && model <= 4) /* known models */ + if (model >= 0 && model <= 6) /* known models */ cputype = PMC_CPU_INTEL_PIV; break; } ==== //depot/projects/mjexp_6/sys/dev/ipw/if_ipw.c#2 (text+ko) ==== @@ -1,4 +1,4 @@ -/* $FreeBSD: src/sys/dev/ipw/if_ipw.c,v 1.7.2.5 2006/04/10 18:27:00 mlaier Exp $ */ +/* $FreeBSD: src/sys/dev/ipw/if_ipw.c,v 1.7.2.6 2007/01/19 23:01:29 jhb Exp $ */ /*- * Copyright (c) 2004-2006 @@ -28,7 +28,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/ipw/if_ipw.c,v 1.7.2.5 2006/04/10 18:27:00 mlaier Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/ipw/if_ipw.c,v 1.7.2.6 2007/01/19 23:01:29 jhb Exp $"); /*- * Intel(R) PRO/Wireless 2100 MiniPCI driver @@ -1071,7 +1071,7 @@ m->m_pkthdr.rcvif = ifp; m->m_pkthdr.len = m->m_len = le32toh(status->len); - if (sc->sc_drvbpf != NULL) { + if (bpf_peers_present(sc->sc_drvbpf)) { struct ipw_rx_radiotap_header *tap = &sc->sc_rxtap; tap->wr_flags = 0; @@ -1348,7 +1348,7 @@ wh = mtod(m0, struct ieee80211_frame *); } - if (sc->sc_drvbpf != NULL) { + if (bpf_peers_present(sc->sc_drvbpf)) { struct ipw_tx_radiotap_header *tap = &sc->sc_txtap; tap->wt_flags = 0; @@ -1516,7 +1516,7 @@ continue; } - if (ic->ic_rawbpf != NULL) + if (bpf_peers_present(ic->ic_rawbpf)) bpf_mtap(ic->ic_rawbpf, m0); if (ipw_tx_start(ifp, m0, ni) != 0) { ==== //depot/projects/mjexp_6/sys/dev/isp/isp_target.c#4 (text+ko) ==== @@ -38,7 +38,7 @@ #endif #ifdef __FreeBSD__ #include -__FBSDID("$FreeBSD: src/sys/dev/isp/isp_target.c,v 1.32.2.3 2006/09/01 05:55:14 mjacob Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/isp/isp_target.c,v 1.32.2.4 2007/01/06 04:20:29 mjacob Exp $"); #include #endif #ifdef __OpenBSD__ ==== //depot/projects/mjexp_6/sys/dev/iwi/if_iwi.c#2 (text+ko) ==== @@ -27,7 +27,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/iwi/if_iwi.c,v 1.8.2.10 2006/10/29 08:29:31 mlaier Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/iwi/if_iwi.c,v 1.8.2.11 2007/01/19 23:01:29 jhb Exp $"); /*- * Intel(R) PRO/Wireless 2200BG/2225BG/2915ABG driver @@ -1302,7 +1302,7 @@ m_adj(m, sizeof (struct iwi_hdr) + sizeof (struct iwi_frame)); - if (sc->sc_drvbpf != NULL) { + if (bpf_peers_present(sc->sc_drvbpf)) { struct iwi_rx_radiotap_header *tap = &sc->sc_rxtap; tap->wr_flags = 0; @@ -1831,7 +1831,7 @@ wh = mtod(m0, struct ieee80211_frame *); } - if (sc->sc_drvbpf != NULL) { + if (bpf_peers_present(sc->sc_drvbpf)) { struct iwi_tx_radiotap_header *tap = &sc->sc_txtap; tap->wt_flags = 0; @@ -1986,7 +1986,7 @@ continue; } - if (ic->ic_rawbpf != NULL) + if (bpf_peers_present(ic->ic_rawbpf)) bpf_mtap(ic->ic_rawbpf, m0); if (iwi_tx_start(ifp, m0, ni, ac) != 0) { ==== //depot/projects/mjexp_6/sys/dev/mfi/mfi.c#2 (text) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/mfi/mfi.c,v 1.3.2.4 2006/10/21 05:28:50 scottl Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/mfi/mfi.c,v 1.3.2.5 2007/01/07 06:44:37 scottl Exp $"); #include "opt_mfi.h" @@ -91,7 +91,7 @@ SYSCTL_INT(_hw_mfi, OID_AUTO, event_locale, CTLFLAG_RW, &mfi_event_locale, 0, "event message locale"); -static int mfi_event_class = MFI_EVT_CLASS_DEBUG; +static int mfi_event_class = MFI_EVT_CLASS_INFO; TUNABLE_INT("hw.mfi.event_class", &mfi_event_class); SYSCTL_INT(_hw_mfi, OID_AUTO, event_class, CTLFLAG_RW, &mfi_event_class, 0, "event message class"); ==== //depot/projects/mjexp_6/sys/dev/my/if_my.c#2 (text+ko) ==== @@ -28,7 +28,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/my/if_my.c,v 1.29.2.4 2006/06/19 19:40:59 brueffer Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/my/if_my.c,v 1.29.2.5 2007/01/19 23:01:29 jhb Exp $"); #include #include @@ -1153,8 +1153,8 @@ * broadcast packet, multicast packet, matches our ethernet * address or the interface is in promiscuous mode. */ - if (ifp->if_bpf) { - BPF_MTAP(ifp, m); + if (bpf_peers_present(ifp->if_bpf)) { + bpf_mtap(ifp->if_bpf, m); if (ifp->if_flags & IFF_PROMISC && (bcmp(eh->ether_dhost, IFP2ENADDR(sc->my_ifp), ETHER_ADDR_LEN) && ==== //depot/projects/mjexp_6/sys/dev/ppbus/if_plip.c#2 (text+ko) ==== @@ -27,7 +27,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/ppbus/if_plip.c,v 1.37.2.2 2006/07/19 16:31:12 kib Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/ppbus/if_plip.c,v 1.37.2.3 2007/01/19 23:01:30 jhb Exp $"); /* * Parallel port TCP/IP interfaces added. I looked at the driver from @@ -455,7 +455,7 @@ lptap(struct ifnet *ifp, struct mbuf *m) { u_int32_t af = AF_INET; - BPF_MTAP2(ifp, &af, sizeof(af), m); + bpf_mtap2(ifp->if_bpf, &af, sizeof(af), m); } static void @@ -514,7 +514,7 @@ sc->sc_ifp->if_ibytes += len; top = m_devget(sc->sc_ifbuf + CLPIPHDRLEN, len, 0, sc->sc_ifp, 0); if (top) { - if (sc->sc_ifp->if_bpf) + if (bpf_peers_present(sc->sc_ifp->if_bpf)) lptap(sc->sc_ifp, top); netisr_queue(NETISR_IP, top); /* mbuf is free'd on failure. */ } @@ -559,7 +559,7 @@ sc->sc_ifp->if_ibytes += len; top = m_devget(sc->sc_ifbuf + LPIPHDRLEN, len, 0, sc->sc_ifp, 0); if (top) { - if (sc->sc_ifp->if_bpf) + if (bpf_peers_present(sc->sc_ifp->if_bpf)) lptap(sc->sc_ifp, top); netisr_queue(NETISR_IP, top); /* mbuf is free'd on failure. */ } @@ -694,7 +694,7 @@ } else { ifp->if_opackets++; ifp->if_obytes += m->m_pkthdr.len; - if (ifp->if_bpf) >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Sat Jan 20 04:48:41 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 95AF116A405; Sat, 20 Jan 2007 04:48:41 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 7028C16A400 for ; Sat, 20 Jan 2007 04:48:41 +0000 (UTC) (envelope-from csjp@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 557F913C455 for ; Sat, 20 Jan 2007 04:48:41 +0000 (UTC) (envelope-from csjp@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0K4mfg1099470 for ; Sat, 20 Jan 2007 04:48:41 GMT (envelope-from csjp@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0K4mfAw099467 for perforce@freebsd.org; Sat, 20 Jan 2007 04:48:41 GMT (envelope-from csjp@freebsd.org) Date: Sat, 20 Jan 2007 04:48:41 GMT Message-Id: <200701200448.l0K4mfAw099467@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to csjp@freebsd.org using -f From: "Christian S.J. Peron" To: Perforce Change Reviews Cc: Subject: PERFORCE change 113194 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Jan 2007 04:48:41 -0000 http://perforce.freebsd.org/chv.cgi?CH=113194 Change 113194 by csjp@csjp_xor on 2007/01/20 04:48:29 Fix handling of IPv6 address for extended subject tokens. Affected files ... .. //depot/projects/trustedbsd/openbsm/libbsm/bsm_token.c#60 edit Differences ... ==== //depot/projects/trustedbsd/openbsm/libbsm/bsm_token.c#60 (text+ko) ==== @@ -30,7 +30,7 @@ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * - * $P4: //depot/projects/trustedbsd/openbsm/libbsm/bsm_token.c#59 $ + * $P4: //depot/projects/trustedbsd/openbsm/libbsm/bsm_token.c#60 $ */ #include @@ -1143,12 +1143,10 @@ ADD_U_INT32(dptr, sid); ADD_U_INT64(dptr, tid->at_port); ADD_U_INT32(dptr, tid->at_type); - ADD_U_INT32(dptr, tid->at_addr[0]); - if (tid->at_type == AU_IPv6) { - ADD_U_INT32(dptr, tid->at_addr[1]); - ADD_U_INT32(dptr, tid->at_addr[2]); - ADD_U_INT32(dptr, tid->at_addr[3]); - } + if (tid->at_type == AU_IPv6) + ADD_MEM(dptr, &tid->at_addr[0], 4 * sizeof(u_int32_t)); + else + ADD_MEM(dptr, &tid->at_addr[0], sizeof(u_int32_t)); return (t); } From owner-p4-projects@FreeBSD.ORG Sat Jan 20 07:40:17 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id BAAB116A405; Sat, 20 Jan 2007 07:40:17 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 8D87016A402 for ; Sat, 20 Jan 2007 07:40:17 +0000 (UTC) (envelope-from mjacob@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 655AE13C441 for ; Sat, 20 Jan 2007 07:40:17 +0000 (UTC) (envelope-from mjacob@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0K7eHQd033951 for ; Sat, 20 Jan 2007 07:40:17 GMT (envelope-from mjacob@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0K7eHi1033939 for perforce@freebsd.org; Sat, 20 Jan 2007 07:40:17 GMT (envelope-from mjacob@freebsd.org) Date: Sat, 20 Jan 2007 07:40:17 GMT Message-Id: <200701200740.l0K7eHi1033939@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to mjacob@freebsd.org using -f From: Matt Jacob To: Perforce Change Reviews Cc: Subject: PERFORCE change 113196 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Jan 2007 07:40:18 -0000 http://perforce.freebsd.org/chv.cgi?CH=113196 Change 113196 by mjacob@mjexp on 2007/01/20 07:39:31 Grumble- let a linux-ism slip in and had an llx which then choked on a 64 bit platforms. Oops. Affected files ... .. //depot/projects/mjexp/sys/dev/isp/isp_target.c#5 edit Differences ... ==== //depot/projects/mjexp/sys/dev/isp/isp_target.c#5 (text+ko) ==== @@ -875,7 +875,8 @@ { tmd_notify_t nt; static const char f1[] = "%s from N-port handle 0x%x lun %d seq 0x%x"; - static const char f2[] = "unknown %s 0x%x lun %d N-Port handle 0x%x task flags 0x%x seq 0x%x\n"; + static const char f2[] = "unknown %s 0x%x lun %d N-Port handle 0x%x " + "task flags 0x%x seq 0x%x\n"; uint16_t seqid, loopid; MEMZERO(&nt, sizeof (tmd_notify_t)); @@ -936,13 +937,15 @@ (void) isp_async(isp, ISPASYNC_TARGET_NOTIFY, &nt); } +#define HILO(x) (uint32_t) (x >> 32), (uint32_t) x static void isp_got_tmf_24xx(ispsoftc_t *isp, at7_entry_t *aep) { tmd_notify_t nt; - static const char f1[] = "%s from PortID 0x%06x lun %d seq 0x%llx"; + static const char f1[] = + "%s from PortID 0x%06x lun %d seq 0x%08x%08x"; static const char f2[] = - "unknown Task Flag 0x%x lun %d PortID 0x%x tag 0x%llx\n"; + "unknown Task Flag 0x%x lun %d PortID 0x%x tag 0x%08x%08x"; uint32_t sid; MEMZERO(&nt, sizeof (tmd_notify_t)); @@ -964,33 +967,33 @@ if (aep->at_cmnd.fcp_cmnd_task_management & FCP_CMND_TMF_ABORT_TASK_SET) { isp_prt(isp, ISP_LOGINFO, f1, "ABORT TASK SET", - sid, nt.nt_lun, nt.nt_tagval); + sid, nt.nt_lun, HILO(nt.nt_tagval)); nt.nt_ncode = NT_ABORT_TASK_SET; } else if (aep->at_cmnd.fcp_cmnd_task_management & FCP_CMND_TMF_CLEAR_TASK_SET) { isp_prt(isp, ISP_LOGINFO, f1, "CLEAR TASK SET", - sid, nt.nt_lun, nt.nt_tagval); + sid, nt.nt_lun, HILO(nt.nt_tagval)); nt.nt_ncode = NT_CLEAR_TASK_SET; } else if (aep->at_cmnd.fcp_cmnd_task_management & FCP_CMND_TMF_LUN_RESET) { isp_prt(isp, ISP_LOGINFO, f1, "LUN RESET", - sid, nt.nt_lun, nt.nt_tagval); + sid, nt.nt_lun, HILO(nt.nt_tagval)); nt.nt_ncode = NT_LUN_RESET; } else if (aep->at_cmnd.fcp_cmnd_task_management & FCP_CMND_TMF_TGT_RESET) { isp_prt(isp, ISP_LOGINFO, f1, "TARGET RESET", - sid, nt.nt_lun, nt.nt_tagval); + sid, nt.nt_lun, HILO(nt.nt_tagval)); nt.nt_ncode = NT_TARGET_RESET; nt.nt_lun = LUN_ANY; } else if (aep->at_cmnd.fcp_cmnd_task_management & FCP_CMND_TMF_CLEAR_ACA) { isp_prt(isp, ISP_LOGINFO, f1, "CLEAR ACA", - sid, nt.nt_lun, nt.nt_tagval); + sid, nt.nt_lun, HILO(nt.nt_tagval)); nt.nt_ncode = NT_CLEAR_ACA; } else { isp_prt(isp, ISP_LOGWARN, f2, aep->at_cmnd.fcp_cmnd_task_management, - nt.nt_lun, sid, nt.nt_tagval); + nt.nt_lun, sid, HILO(nt.nt_tagval)); isp_endcmd(isp, aep, 0, 0); return; } From owner-p4-projects@FreeBSD.ORG Sat Jan 20 10:11:51 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 7F2F616A405; Sat, 20 Jan 2007 10:11:51 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 455D116A400 for ; Sat, 20 Jan 2007 10:11:51 +0000 (UTC) (envelope-from rdivacky@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 35FCE13C465 for ; Sat, 20 Jan 2007 10:11:51 +0000 (UTC) (envelope-from rdivacky@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0KABjSr071334 for ; Sat, 20 Jan 2007 10:11:46 GMT (envelope-from rdivacky@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0KABjdk071331 for perforce@freebsd.org; Sat, 20 Jan 2007 10:11:45 GMT (envelope-from rdivacky@FreeBSD.org) Date: Sat, 20 Jan 2007 10:11:45 GMT Message-Id: <200701201011.l0KABjdk071331@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to rdivacky@FreeBSD.org using -f From: Roman Divacky To: Perforce Change Reviews Cc: Subject: PERFORCE change 113203 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Jan 2007 10:11:51 -0000 http://perforce.freebsd.org/chv.cgi?CH=113203 Change 113203 by rdivacky@rdivacky_witten on 2007/01/20 10:10:52 Make mmap code compilable after recent jkim's changes. Affected files ... .. //depot/projects/linuxolator/src/sys/i386/linux/linux_machdep.c#20 edit Differences ... ==== //depot/projects/linuxolator/src/sys/i386/linux/linux_machdep.c#20 (text+ko) ==== @@ -593,12 +593,12 @@ args->flags, args->fd, args->pgoff); #endif - linux_args.addr = (l_caddr_t)args->addr; + linux_args.addr = args->addr; linux_args.len = args->len; linux_args.prot = args->prot; linux_args.flags = args->flags; linux_args.fd = args->fd; - linux_args.pos = args->pgoff * PAGE_SIZE; + linux_args.pgoff = args->pgoff * PAGE_SIZE; return (linux_mmap_common(td, &linux_args)); } @@ -763,7 +763,7 @@ bsd_args.addr = (caddr_t)PTRIN(linux_args->addr); bsd_args.len = linux_args->len; } - bsd_args.pos = linux_args->pos; + bsd_args.pos = linux_args->pgoff; bsd_args.pad = 0; #ifdef DEBUG From owner-p4-projects@FreeBSD.ORG Sat Jan 20 10:13:50 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id E68BB16A405; Sat, 20 Jan 2007 10:13:49 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id B4A5B16A402 for ; Sat, 20 Jan 2007 10:13:49 +0000 (UTC) (envelope-from rdivacky@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id A513913C45E for ; Sat, 20 Jan 2007 10:13:49 +0000 (UTC) (envelope-from rdivacky@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0KADnoQ071835 for ; Sat, 20 Jan 2007 10:13:49 GMT (envelope-from rdivacky@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0KADnfa071828 for perforce@freebsd.org; Sat, 20 Jan 2007 10:13:49 GMT (envelope-from rdivacky@FreeBSD.org) Date: Sat, 20 Jan 2007 10:13:49 GMT Message-Id: <200701201013.l0KADnfa071828@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to rdivacky@FreeBSD.org using -f From: Roman Divacky To: Perforce Change Reviews Cc: Subject: PERFORCE change 113204 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Jan 2007 10:13:50 -0000 http://perforce.freebsd.org/chv.cgi?CH=113204 Change 113204 by rdivacky@rdivacky_witten on 2007/01/20 10:13:11 No need to synchronize linux_schedtail with linux_proc_init. We know that p->p_emuldata is properly initialized in the time when the children can run. Affected files ... .. //depot/projects/linuxolator/src/sys/compat/linux/linux_emul.c#25 edit Differences ... ==== //depot/projects/linuxolator/src/sys/compat/linux/linux_emul.c#25 (text+ko) ==== @@ -136,8 +136,6 @@ p = pfind(child); KASSERT(p != NULL, ("process not found in proc_init\n")); p->p_emuldata = em; - /* we might have a sleeping linux_schedtail */ - wakeup(&p->p_emuldata); PROC_UNLOCK(p); } else EMUL_UNLOCK(&emul_lock); @@ -277,22 +275,10 @@ if (__predict_true(p->p_sysent != &elf_linux_sysvec)) return; -retry: /* find the emuldata */ em = em_find(p, EMUL_DOLOCK); - if (em == NULL) { - /* - * We might have been called before proc_init for this - * process so tsleep and be woken up by it. We use - * p->p_emuldata for this - */ - - error = tsleep(&p->p_emuldata, PLOCK, "linux_schedtail", hz); - if (error == 0) - goto retry; - panic("no emuldata found for userreting process.\n"); - } + KASSERT(em != NULL, ("linux_schedtail: emuldata not found.\n")); child_set_tid = em->child_set_tid; EMUL_UNLOCK(&emul_lock); From owner-p4-projects@FreeBSD.ORG Sat Jan 20 14:03:53 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 3B65D16A406; Sat, 20 Jan 2007 14:03:53 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id E9D8C16A400 for ; Sat, 20 Jan 2007 14:03:52 +0000 (UTC) (envelope-from hselasky@freebsd.org) Received: from swip.net (mailfe04.swip.net [212.247.154.97]) by mx1.freebsd.org (Postfix) with ESMTP id 617DD13C457 for ; Sat, 20 Jan 2007 14:03:52 +0000 (UTC) (envelope-from hselasky@freebsd.org) X-Cloudmark-Score: 0.000000 [] Received: from [193.217.102.48] (account mc467741@c2i.net HELO [10.0.0.249]) by mailfe04.swip.net (CommuniGate Pro SMTP 5.0.12) with ESMTPA id 388047650; Sat, 20 Jan 2007 14:03:47 +0100 From: Hans Petter Selasky To: "Daan Vreeken [PA4DAN]" Date: Sat, 20 Jan 2007 14:03:20 +0100 User-Agent: KMail/1.7 References: <200701192115.l0JLFwFI088824@repoman.freebsd.org> <200701200111.40339.Danovitsch@vitsch.net> In-Reply-To: <200701200111.40339.Danovitsch@vitsch.net> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-6" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200701201403.21642.hselasky@freebsd.org> Cc: perforce@freebsd.org Subject: Re: PERFORCE change 113175 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Jan 2007 14:03:53 -0000 On Saturday 20 January 2007 01:11, Daan Vreeken [PA4DAN] wrote: > Hi Hans, > > On Friday 19 January 2007 22:15, Hans Petter Selasky wrote: > > http://perforce.freebsd.org/chv.cgi?CH=113175 > > > > Change 113175 by hselasky@hselasky_mini_itx on 2007/01/19 21:15:07 > > > > Add missing "bus_dmamap_sync()" calls to the USB host controller > > drivers. Optimize the USB code with regard to "bus_dmamap_sync()". > > calls. > > Please correct me if I'm wrong, but I think you've swapped the meaning of > the pre & post read & write sync calls in this commit. > > For example : > > +static uint8_t > > ehci_dump_sqtd(ehci_qtd_t *sqtd) > > { > > + uint8_t temp; > > + usbd_page_sync(sqtd->page, BUS_DMASYNC_PREREAD); > > printf("QTD(%p) at 0x%08x:\n", sqtd, le32toh(sqtd->qtd_self)); > > ehci_dump_qtd(sqtd); > > - return; > > + temp = (sqtd->qtd_next & htole32(EHCI_LINK_TERMINATE)) ? 1 : 0; > > + usbd_page_sync(sqtd->page, BUS_DMASYNC_POSTREAD); > > + return temp; > > } > > Here you do a sync_preread, then you read the sqtd page and then you do a > sync_postread. > I think this is wrong. As far as I understand it, bus_dmamap_sync() should > be used in either of the following two ways : > > 1) Processor wants to "read" from a device. (device is going to alter our > memory (eg. read from a harddisk) ) : > o The page of memory is owned by the CPU. > o CPU does sync(BUS_DMASYNC_PREREAD). > o Page is handed over to the device (CPU shouldn't touch the page after > this moment) > o Device writes data into page. > o Device signals CPU it's done writing... > o Page is handed over back to the CPU. > o CPU does sync(BUS_DMASYNC_POSTREAD) > o CPU may now use data in the page. > > 2) Processor wants to "write" to a device. (device is going to use the data > in our memory (eg. write it to a harddisk) ) > o The page of memory is owned by the CPU. > o CPU writes the data it wants to transfer into the page > o CPU does sync(BUS_DMASYNC_PREWRITE). > o Page is handed over to the device (CPU shouldn't touch the page after > this moment) > o Device uses data in the page. > o Device signals CPU it's done with the data... > o Page is handed over back to the CPU. > o CPU does sync(BUS_DMASYNC_POSTREAD) > > See "man bus_dmamap_sync". I think the sync calls should only be placed at > places where pages (transfer descriptors or data pages) are handed to or > from the USB domain. ehci_dump_sqtd() shouldn't have sync call's in it and > it should only ever be used on descriptors that are "owned" by the > processor (eg: descriptors that re not on an active queue). > ehci_dump_sqtd() can never be used on active descriptors as they might be > changing while we read them (between the sync call and the printf). Yes, I see that I have mixed around the meaning. I think I looked at a bad example. But can anyone explain if the following will work. When I want to read USB descriptor status, then I need to make sure that all PCI writes are flushed. If I do like this: bus_dmamap_sync(BUS_DMASYNC_POSTREAD|BUS_DMASYNC_POSTWRITE); read status from dma-able memory bus_dmamap_sync(BUS_DMASYNC_PREREAD|BUS_DMASYNC_PREWRITE); Will writes that happen between these sync calls be written afterwards to the DMA-able memory. What happens on the PCI bus if the USB host controller tries to write something when I am reading the status? > > By the way, I think what you're doing is great. Adding these sync call's to > your USB stack would make the stack useable on the ARM platform. Before > christmas came along I have spent quite some time trying to get USB to > function on the ARM platform, but I haven't had time to look at it since. I > think it's time for me to boot up my ARM board again... ;-) > I am willing to volunteering to help out with getting this code to work > there, although I'm limited in available time. Thanks for pointing this out in detail. --HPS From owner-p4-projects@FreeBSD.ORG Sat Jan 20 22:02:40 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 5344616A407; Sat, 20 Jan 2007 22:02:40 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id C9A8016A406 for ; Sat, 20 Jan 2007 22:02:39 +0000 (UTC) (envelope-from kmacy@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id B9E5513C448 for ; Sat, 20 Jan 2007 22:02:39 +0000 (UTC) (envelope-from kmacy@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0KM2dBL028006 for ; Sat, 20 Jan 2007 22:02:39 GMT (envelope-from kmacy@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0KM2d75028002 for perforce@freebsd.org; Sat, 20 Jan 2007 22:02:39 GMT (envelope-from kmacy@freebsd.org) Date: Sat, 20 Jan 2007 22:02:39 GMT Message-Id: <200701202202.l0KM2d75028002@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to kmacy@freebsd.org using -f From: Kip Macy To: Perforce Change Reviews Cc: Subject: PERFORCE change 113226 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Jan 2007 22:02:40 -0000 http://perforce.freebsd.org/chv.cgi?CH=113226 Change 113226 by kmacy@kmacy_serendipity:sam_wifi on 2007/01/20 22:02:25 fix panic in rt2661 caused by fallthrough from INIT to run in newstate add sc_invalid flag for better handling of card removal - add checks for it in rt2661 Affected files ... .. //depot/projects/wifi/sys/dev/ral/if_ral_pci.c#5 edit .. //depot/projects/wifi/sys/dev/ral/rt2560var.h#6 edit .. //depot/projects/wifi/sys/dev/ral/rt2661.c#5 edit .. //depot/projects/wifi/sys/dev/ral/rt2661var.h#5 edit Differences ... ==== //depot/projects/wifi/sys/dev/ral/if_ral_pci.c#5 (text+ko) ==== @@ -192,7 +192,8 @@ sc->sc_st = rman_get_bustag(psc->mem); sc->sc_sh = rman_get_bushandle(psc->mem); - + sc->sc_invalid = 1; + psc->irq_rid = 0; psc->irq = bus_alloc_resource_any(dev, SYS_RES_IRQ, &psc->irq_rid, RF_ACTIVE | RF_SHAREABLE); @@ -214,7 +215,8 @@ device_printf(dev, "could not set up interrupt\n"); return error; } - + sc->sc_invalid = 0; + return 0; } @@ -222,7 +224,11 @@ ral_pci_detach(device_t dev) { struct ral_pci_softc *psc = device_get_softc(dev); - + struct rt2560_softc *sc = &psc->u.sc_rt2560; + + /* check if device was removed */ + sc->sc_invalid = !bus_child_present(dev); + (*psc->sc_opns->detach)(psc); bus_generic_detach(dev); ==== //depot/projects/wifi/sys/dev/ral/rt2560var.h#6 (text) ==== @@ -112,7 +112,11 @@ struct callout rssadapt_ch; int sc_tx_timer; - + int sc_invalid; +/* + * The same in both up to here + * ------------------------------------------------ + */ uint32_t asic_rev; uint32_t eeprom_rev; uint8_t rf_rev; ==== //depot/projects/wifi/sys/dev/ral/rt2661.c#5 (text) ==== @@ -353,6 +353,7 @@ sc->sc_txtap.wt_ihdr.it_len = htole16(sc->sc_txtap_len); sc->sc_txtap.wt_ihdr.it_present = htole32(RT2661_TX_RADIOTAP_PRESENT); + /* * Add a few sysctl knobs. */ @@ -373,7 +374,6 @@ fail2: while (--ac >= 0) rt2661_free_tx_ring(sc, &sc->txq[ac]); fail1: mtx_destroy(&sc->sc_mtx); - return error; } @@ -383,7 +383,7 @@ struct rt2661_softc *sc = xsc; struct ieee80211com *ic = &sc->sc_ic; struct ifnet *ifp = ic->ic_ifp; - + rt2661_stop(sc); callout_stop(&sc->watchdog_ch); callout_stop(&sc->rssadapt_ch); @@ -803,6 +803,7 @@ tmp = RAL_READ(sc, RT2661_TXRX_CSR9); RAL_WRITE(sc, RT2661_TXRX_CSR9, tmp & ~0x00ffffff); } + break; case IEEE80211_S_RUN: ni = ic->ic_bss; @@ -1726,7 +1727,7 @@ RAL_LOCK(sc); /* prevent management frames from being sent if we're not ready */ - if (!(ifp->if_drv_flags & IFF_DRV_RUNNING)) { + if (!(ifp->if_drv_flags & IFF_DRV_RUNNING) || sc->sc_invalid) { RAL_UNLOCK(sc); return; } @@ -1819,7 +1820,7 @@ { struct rt2661_softc *sc = (struct rt2661_softc *)arg; - if (sc->sc_tx_timer > 0) { + if (sc->sc_tx_timer > 0 && !sc->sc_invalid) { if (--sc->sc_tx_timer == 0) { device_printf(sc->sc_dev, "device timeout\n"); rt2661_init(sc); ==== //depot/projects/wifi/sys/dev/ral/rt2661var.h#5 (text) ==== @@ -105,7 +105,12 @@ struct callout rssadapt_ch; int sc_tx_timer; - + int sc_invalid; +/* + * The same in both up to here + * ------------------------------------------------ + */ + struct ieee80211_channel *sc_curchan; uint8_t rf_rev; From owner-p4-projects@FreeBSD.ORG Sat Jan 20 22:34:20 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 42EAD16A405; Sat, 20 Jan 2007 22:34:20 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 20DAD16A400 for ; Sat, 20 Jan 2007 22:34:20 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 1079513C442 for ; Sat, 20 Jan 2007 22:34:20 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l0KMYKHH034449 for ; Sat, 20 Jan 2007 22:34:20 GMT (envelope-from hselasky@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l0KMYJOv034446 for perforce@freebsd.org; Sat, 20 Jan 2007 22:34:19 GMT (envelope-from hselasky@FreeBSD.org) Date: Sat, 20 Jan 2007 22:34:19 GMT Message-Id: <200701202234.l0KMYJOv034446@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to hselasky@FreeBSD.org using -f From: Hans Petter Selasky To: Perforce Change Reviews Cc: Subject: PERFORCE change 113228 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Jan 2007 22:34:20 -0000 http://perforce.freebsd.org/chv.cgi?CH=113228 Change 113228 by hselasky@hselasky_mini_itx on 2007/01/20 22:34:11 Remove some unused functions. Reverse the order of BUS_DMASYNC_PREXXX and BUS_DMASYNC_POSTXXX which was introduced by change 113175. Two new functions, usbd_page_dma_exit and usbd_page_dma_enter, handle the exiting and entering from the context where the USB host controller can read/write to the DMA-able memory. By default memory allocated by usbd_mem_alloc_sub is entered into the DMA-read/write context. usbd_mem_free_sub will by default exit the memory from the DMA-read/write context. Affected files ... .. //depot/projects/usb/src/sys/dev/usb/ehci.c#19 edit .. //depot/projects/usb/src/sys/dev/usb/ohci.c#15 edit .. //depot/projects/usb/src/sys/dev/usb/uhci.c#16 edit .. //depot/projects/usb/src/sys/dev/usb/usb_subr.c#26 edit .. //depot/projects/usb/src/sys/dev/usb/usb_subr.h#29 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb/ehci.c#19 (text+ko) ==== @@ -197,7 +197,7 @@ sc->sc_eintrs = EHCI_NORMAL_INTRS; - usbd_page_sync(&(sc->sc_hw_page), BUS_DMASYNC_PREWRITE); + usbd_page_dma_exit(&(sc->sc_hw_page)); for(i = 0; i < EHCI_VIRTUAL_FRAMELIST_COUNT; i++) { @@ -323,7 +323,7 @@ sc->sc_async_p_last = &(hw_ptr->async_start); - usbd_page_sync(&(sc->sc_hw_page), BUS_DMASYNC_POSTWRITE); + usbd_page_dma_enter(&(sc->sc_hw_page)); #ifdef USB_DEBUG if(ehcidebug) @@ -686,11 +686,11 @@ ehci_dump_sqtd(ehci_qtd_t *sqtd) { uint8_t temp; - usbd_page_sync(sqtd->page, BUS_DMASYNC_PREREAD); + usbd_page_dma_exit(sqtd->page); printf("QTD(%p) at 0x%08x:\n", sqtd, le32toh(sqtd->qtd_self)); ehci_dump_qtd(sqtd); temp = (sqtd->qtd_next & htole32(EHCI_LINK_TERMINATE)) ? 1 : 0; - usbd_page_sync(sqtd->page, BUS_DMASYNC_POSTREAD); + usbd_page_dma_enter(sqtd->page); return temp; } @@ -717,7 +717,7 @@ { u_int32_t endp, endphub; - usbd_page_sync(qh->page, BUS_DMASYNC_PREREAD); + usbd_page_dma_exit(qh->page); printf("QH(%p) at 0x%08x:\n", qh, le32toh(qh->qh_self) & ~0x1F); printf(" link="); ehci_dump_link(qh->qh_link, 1); printf("\n"); endp = le32toh(qh->qh_endp); @@ -738,14 +738,14 @@ printf(" curqtd="); ehci_dump_link(qh->qh_curqtd, 0); printf("\n"); printf("Overlay qTD:\n"); ehci_dump_qtd((void *)&qh->qh_qtd); - usbd_page_sync(qh->page, BUS_DMASYNC_POSTREAD); + usbd_page_dma_enter(qh->page); return; } static void ehci_dump_sitd(ehci_sitd_t *sitd) { - usbd_page_sync(sitd->page, BUS_DMASYNC_PREREAD); + usbd_page_dma_exit(sitd->page); printf("SITD(%p) at 0x%08x\n", sitd, le32toh(sitd->sitd_self) & ~0x1F); printf(" next=0x%08x\n", le32toh(sitd->sitd_next)); printf(" portaddr=0x%08x dir=%s addr=%d endpt=0x%x port=0x%x huba=0x%x\n", @@ -766,14 +766,14 @@ le32toh(sitd->sitd_bp[1]), le32toh(sitd->sitd_bp_hi[0]), le32toh(sitd->sitd_bp_hi[1])); - usbd_page_sync(sitd->page, BUS_DMASYNC_POSTREAD); + usbd_page_dma_enter(sitd->page); return; } static void ehci_dump_itd(ehci_itd_t *itd) { - usbd_page_sync(itd->page, BUS_DMASYNC_PREREAD); + usbd_page_dma_exit(itd->page); printf("ITD(%p) at 0x%08x\n", itd, le32toh(itd->itd_self) & ~0x1F); printf(" next=0x%08x\n", le32toh(itd->itd_next)); printf(" status[0]=0x%08x; <%s>\n", le32toh(itd->itd_status[0]), @@ -815,7 +815,7 @@ le32toh(itd->itd_bp_hi[4]), le32toh(itd->itd_bp_hi[5]), le32toh(itd->itd_bp_hi[6])); - usbd_page_sync(itd->page, BUS_DMASYNC_POSTREAD); + usbd_page_dma_enter(itd->page); return; } @@ -859,15 +859,15 @@ /* (sc->sc_bus.mtx) must be locked */ - usbd_page_sync(std->page, BUS_DMASYNC_PREWRITE); + usbd_page_dma_exit(std->page); std->next = last->next; std->sitd_next = last->sitd_next; std->prev = last; - usbd_page_sync(std->page, BUS_DMASYNC_POSTWRITE); - usbd_page_sync(last->page, BUS_DMASYNC_PREWRITE); + usbd_page_dma_enter(std->page); + usbd_page_dma_exit(last->page); /* the last->next->prev is never followed: * std->next->prev = std; @@ -875,7 +875,7 @@ last->next = std; last->sitd_next = std->sitd_self; - usbd_page_sync(last->page, BUS_DMASYNC_POSTWRITE); + usbd_page_dma_enter(last->page); return(std); } @@ -888,15 +888,15 @@ /* (sc->sc_bus.mtx) must be locked */ - usbd_page_sync(std->page, BUS_DMASYNC_PREWRITE); + usbd_page_dma_exit(std->page); std->next = last->next; std->itd_next = last->itd_next; std->prev = last; - usbd_page_sync(std->page, BUS_DMASYNC_POSTWRITE); - usbd_page_sync(last->page, BUS_DMASYNC_PREWRITE); + usbd_page_dma_enter(std->page); + usbd_page_dma_exit(last->page); /* the last->next->prev is never followed: * std->next->prev = std; @@ -904,7 +904,7 @@ last->next = std; last->itd_next = std->itd_self; - usbd_page_sync(last->page, BUS_DMASYNC_POSTWRITE); + usbd_page_dma_enter(last->page); return(std); } @@ -917,15 +917,15 @@ /* (sc->sc_bus.mtx) must be locked */ - usbd_page_sync(sqh->page, BUS_DMASYNC_PREWRITE); + usbd_page_dma_exit(sqh->page); sqh->next = last->next; sqh->qh_link = last->qh_link; sqh->prev = last; - usbd_page_sync(sqh->page, BUS_DMASYNC_POSTWRITE); - usbd_page_sync(last->page, BUS_DMASYNC_PREWRITE); + usbd_page_dma_enter(sqh->page); + usbd_page_dma_exit(last->page); /* the last->next->prev is never followed: * sqh->next->prev = sqh; @@ -934,7 +934,7 @@ last->next = sqh; last->qh_link = sqh->qh_self; - usbd_page_sync(last->page, BUS_DMASYNC_POSTWRITE); + usbd_page_dma_enter(last->page); #ifdef USB_DEBUG if(ehcidebug > 5) @@ -954,16 +954,18 @@ /* (sc->sc_bus.mtx) must be locked */ - usbd_page_sync(std->prev->page, BUS_DMASYNC_PREWRITE); + usbd_page_dma_exit(std->prev->page); std->prev->next = std->next; std->prev->sitd_next = std->sitd_next; - usbd_page_sync(std->prev->page, BUS_DMASYNC_POSTWRITE); + usbd_page_dma_enter(std->prev->page); if(std->next) { + usbd_page_dma_exit(std->next->page); std->next->prev = std->prev; + usbd_page_dma_enter(std->next->page); } return((last == std) ? std->prev : last); } @@ -976,16 +978,18 @@ /* (sc->sc_bus.mtx) must be locked */ - usbd_page_sync(std->prev->page, BUS_DMASYNC_PREWRITE); + usbd_page_dma_exit(std->prev->page); std->prev->next = std->next; std->prev->itd_next = std->itd_next; - usbd_page_sync(std->prev->page, BUS_DMASYNC_POSTWRITE); + usbd_page_dma_enter(std->prev->page); if(std->next) { + usbd_page_dma_exit(std->next->page); std->next->prev = std->prev; + usbd_page_dma_enter(std->next->page); } return((last == std) ? std->prev : last); } @@ -1001,19 +1005,21 @@ /* only remove if not removed from a queue */ if(sqh->prev) { - usbd_page_sync(sqh->prev->page, BUS_DMASYNC_PREWRITE); + usbd_page_dma_exit(sqh->prev->page); sqh->prev->next = sqh->next; sqh->prev->qh_link = sqh->qh_link; - usbd_page_sync(sqh->prev->page, BUS_DMASYNC_POSTWRITE); + usbd_page_dma_enter(sqh->prev->page); if(sqh->next) { + usbd_page_dma_exit(sqh->next->page); sqh->next->prev = sqh->prev; + usbd_page_dma_enter(sqh->next->page); } - usbd_page_sync(sqh->page, BUS_DMASYNC_PREWRITE); + usbd_page_dma_exit(sqh->page); /* set the Terminate-bit in the e_next of the QH, * in case the transferred packet was short so @@ -1022,7 +1028,7 @@ sqh->qh_qtd.qtd_next = htole32(EHCI_LINK_TERMINATE); - usbd_page_sync(sqh->page, BUS_DMASYNC_POSTWRITE); + usbd_page_dma_enter(sqh->page); last = ((last == sqh) ? sqh->prev : last); @@ -1058,9 +1064,9 @@ td != NULL; td = td->obj_next) { - usbd_page_sync(td->page, BUS_DMASYNC_PREREAD); + usbd_page_dma_exit(td->page); temp = le32toh(td->qtd_status); - usbd_page_sync(td->page, BUS_DMASYNC_POSTREAD); + usbd_page_dma_enter(td->page); if (temp & EHCI_QTD_ACTIVE) { @@ -1150,11 +1156,11 @@ /* isochronous full speed transfer */ - usbd_page_sync(td->page, BUS_DMASYNC_PREREAD); + usbd_page_dma_exit(td->page); status = le32toh(td->sitd_status); - usbd_page_sync(td->page, BUS_DMASYNC_POSTREAD); + usbd_page_dma_enter(td->page); if (!(status & EHCI_SITD_ACTIVE)) { ehci_device_done(xfer, USBD_NORMAL_COMPLETION); @@ -1167,7 +1173,7 @@ /* isochronous high speed transfer */ - usbd_page_sync(td->page, BUS_DMASYNC_PREREAD); + usbd_page_dma_exit(td->page); status = ((!(td->itd_status[0] & htole32(EHCI_ITD_ACTIVE))) && (!(td->itd_status[1] & htole32(EHCI_ITD_ACTIVE))) && @@ -1178,7 +1184,7 @@ (!(td->itd_status[6] & htole32(EHCI_ITD_ACTIVE))) && (!(td->itd_status[7] & htole32(EHCI_ITD_ACTIVE)))); - usbd_page_sync(td->page, BUS_DMASYNC_POSTREAD); + usbd_page_dma_enter(td->page); if (status) { ehci_device_done(xfer, USBD_NORMAL_COMPLETION); @@ -1199,11 +1205,11 @@ td != NULL; td = td->obj_next) { - usbd_page_sync(td->page, BUS_DMASYNC_PREREAD); + usbd_page_dma_exit(td->page); status = le32toh(td->qtd_status); - usbd_page_sync(td->page, BUS_DMASYNC_POSTREAD); + usbd_page_dma_enter(td->page); /* if there is an active TD * the transfer isn't done @@ -1545,7 +1551,7 @@ */ xfer->pipe->toggle_next = 1; - usbd_page_sync(td->page, BUS_DMASYNC_PREWRITE); + usbd_page_dma_exit(td->page); /* SETUP message */ @@ -1577,7 +1583,7 @@ td_last->qtd_altnext = htole32(EHCI_LINK_TERMINATE); } - usbd_page_sync(td_last->page, BUS_DMASYNC_POSTWRITE); + usbd_page_dma_enter(td_last->page); } else { @@ -1641,7 +1647,7 @@ "than there is in the buffer!", __FUNCTION__); } - usbd_page_sync(td->page, BUS_DMASYNC_PREWRITE); + usbd_page_dma_exit(td->page); /* fill out current TD */ @@ -1684,12 +1690,12 @@ td_last->qtd_altnext = htole32(EHCI_LINK_TERMINATE); } - usbd_page_sync(td_last->page, BUS_DMASYNC_POSTWRITE); + usbd_page_dma_enter(td_last->page); } if(xfer->pipe->methods == &ehci_device_ctrl_methods) { - usbd_page_sync(td->page, BUS_DMASYNC_PREWRITE); + usbd_page_dma_exit(td->page); /* STATUS message */ @@ -1711,17 +1717,17 @@ td->len = 0; td_last = td; - usbd_page_sync(td_last->page, BUS_DMASYNC_POSTWRITE); + usbd_page_dma_enter(td_last->page); } - usbd_page_sync(td_last->page, BUS_DMASYNC_PREWRITE|BUS_DMASYNC_PREREAD); + usbd_page_dma_exit(td_last->page); /* the last TD terminates the transfer: */ td_last->qtd_next = htole32(EHCI_LINK_TERMINATE); td_last->qtd_altnext = htole32(EHCI_LINK_TERMINATE); td_last->qtd_status |= htole32(EHCI_QTD_IOC); - usbd_page_sync(td_last->page, BUS_DMASYNC_POSTWRITE|BUS_DMASYNC_POSTREAD); + usbd_page_dma_enter(td_last->page); /* must have at least one frame! */ @@ -1738,7 +1744,7 @@ qh = xfer->qh_start; - usbd_page_sync(qh->page, BUS_DMASYNC_PREWRITE); + usbd_page_dma_exit(qh->page); /* the "qh_link" field is filled when the QH is added */ @@ -1802,7 +1808,7 @@ qh->qh_qtd.qtd_next = td->qtd_self; qh->qh_qtd.qtd_altnext = htole32(EHCI_LINK_TERMINATE); - usbd_page_sync(qh->page, BUS_DMASYNC_POSTWRITE); + usbd_page_dma_enter(qh->page); EHCI_APPEND_QH(qh, *qh_last); return; @@ -1880,9 +1886,9 @@ ehci_dump_sitd(td); } #endif - usbd_page_sync(td->page, BUS_DMASYNC_PREREAD); + usbd_page_dma_exit(td->page); status = le32toh(td->sitd_status); - usbd_page_sync(td->page, BUS_DMASYNC_POSTREAD); + usbd_page_dma_enter(td->page); /* check for active transfers */ if (status & EHCI_SITD_ACTIVE) { @@ -1952,9 +1958,9 @@ } #endif - usbd_page_sync(td->page, BUS_DMASYNC_PREREAD); + usbd_page_dma_exit(td->page); status = le32toh(td->itd_status[td_no]); - usbd_page_sync(td->page, BUS_DMASYNC_POSTREAD); + usbd_page_dma_enter(td->page); if (status & EHCI_ITD_ACTIVE) { need_delay = 1; @@ -2392,7 +2398,7 @@ for(td = xfer->td_start; td; td = td->obj_next) { - usbd_page_sync(td->page, BUS_DMASYNC_PREWRITE); + usbd_page_dma_exit(td->page); td->sitd_portaddr = sitd_portaddr; @@ -2421,7 +2427,7 @@ } td->sitd_back = htole32(EHCI_LINK_TERMINATE); - usbd_page_sync(td->page, BUS_DMASYNC_POSTWRITE); + usbd_page_dma_enter(td->page); } return; } @@ -2521,7 +2527,7 @@ *plen = xfer->max_frame_size; } - usbd_page_sync(td->page, BUS_DMASYNC_PREWRITE); + usbd_page_dma_exit(td->page); td->sitd_bp[0] = htole32(buf_res.physaddr); @@ -2550,7 +2556,7 @@ (EHCI_SITD_ACTIVE| EHCI_SITD_SET_LEN(*plen)); } - usbd_page_sync(td->page, BUS_DMASYNC_POSTWRITE); + usbd_page_dma_enter(td->page); #ifdef USB_DEBUG if(ehcidebug > 15) @@ -2620,7 +2626,7 @@ for(td = xfer->td_start; td; td = td->obj_next) { - usbd_page_sync(td->page, BUS_DMASYNC_PREWRITE); + usbd_page_dma_exit(td->page); /* set TD inactive */ td->itd_status[0] = 0; @@ -2651,7 +2657,7 @@ /* set transfer multiplier */ td->itd_bp[2] = htole32(xfer->max_packet_count & 3); - usbd_page_sync(td->page, BUS_DMASYNC_POSTWRITE); + usbd_page_dma_enter(td->page); } return; } @@ -2757,7 +2763,7 @@ if(td_no == 0) { - usbd_page_sync(td->page, BUS_DMASYNC_PREWRITE|BUS_DMASYNC_PREREAD); + usbd_page_dma_exit(td->page); /* update page address */ td->itd_bp[page_no] &= htole32(0xFFF); @@ -2841,7 +2847,7 @@ if((td_no == 8) || (nframes == 0)) { - usbd_page_sync(td->page, BUS_DMASYNC_POSTWRITE|BUS_DMASYNC_POSTREAD); + usbd_page_dma_enter(td->page); #ifdef USB_DEBUG if(ehcidebug > 15) { @@ -3816,7 +3822,7 @@ usbd_page_get_info(page_ptr, size[1], &page_info); - usbd_page_sync(page_info.page, BUS_DMASYNC_PREWRITE); + usbd_page_dma_exit(page_info.page); td = page_info.buffer; @@ -3827,7 +3833,7 @@ last_obj = td; - usbd_page_sync(page_info.page, BUS_DMASYNC_POSTWRITE); + usbd_page_dma_enter(page_info.page); } size[1] += sizeof(ehci_itd_t); } @@ -3844,7 +3850,7 @@ usbd_page_get_info(page_ptr, size[1], &page_info); - usbd_page_sync(page_info.page, BUS_DMASYNC_PREWRITE); + usbd_page_dma_exit(page_info.page); td = page_info.buffer; @@ -3855,7 +3861,7 @@ last_obj = td; - usbd_page_sync(page_info.page, BUS_DMASYNC_POSTWRITE); + usbd_page_dma_enter(page_info.page); } size[1] += sizeof(ehci_sitd_t); } @@ -3872,7 +3878,7 @@ usbd_page_get_info(page_ptr, size[1], &page_info); - usbd_page_sync(page_info.page, BUS_DMASYNC_PREWRITE); + usbd_page_dma_exit(page_info.page); qtd = page_info.buffer; @@ -3883,7 +3889,7 @@ last_obj = qtd; - usbd_page_sync(page_info.page, BUS_DMASYNC_POSTWRITE); + usbd_page_dma_enter(page_info.page); } size[1] += sizeof(ehci_qtd_t); } @@ -3910,7 +3916,7 @@ usbd_page_get_info(page_ptr, size[1], &page_info); - usbd_page_sync(page_info.page, BUS_DMASYNC_PREWRITE); + usbd_page_dma_exit(page_info.page); qh = page_info.buffer; @@ -3921,7 +3927,7 @@ last_obj = qh; - usbd_page_sync(page_info.page, BUS_DMASYNC_POSTWRITE); + usbd_page_dma_enter(page_info.page); } size[1] += sizeof(ehci_qh_t); } ==== //depot/projects/usb/src/sys/dev/usb/ohci.c#15 (text+ko) ==== @@ -269,7 +269,7 @@ sc->sc_eintrs = OHCI_NORMAL_INTRS; - usbd_page_sync(&(sc->sc_hw_page), BUS_DMASYNC_PREWRITE); + usbd_page_dma_exit(&(sc->sc_hw_page)); /* * setup self pointers @@ -337,7 +337,7 @@ hw_ptr->intr_start[i|(OHCI_NO_EDS/2)].ed_self; } - usbd_page_sync(&(sc->sc_hw_page), BUS_DMASYNC_POSTWRITE); + usbd_page_dma_enter(&(sc->sc_hw_page)); LIST_INIT(&sc->sc_interrupt_list_head); @@ -515,11 +515,11 @@ hw_ptr = sc->sc_hw_ptr; - usbd_page_sync(&(sc->sc_hw_page), BUS_DMASYNC_PREREAD); + usbd_page_dma_exit(&(sc->sc_hw_page)); DPRINTF((" HCCA: frame_number=0x%04x done_head=0x%08x\n", le32toh(hw_ptr->hcca.hcca_frame_number), le32toh(hw_ptr->hcca.hcca_done_head))); - usbd_page_sync(&(sc->sc_hw_page), BUS_DMASYNC_POSTREAD); + usbd_page_dma_enter(&(sc->sc_hw_page)); return; } static void @@ -540,7 +540,7 @@ uint32_t td_flags; uint8_t temp; - usbd_page_sync(std->page, BUS_DMASYNC_PREREAD); + usbd_page_dma_exit(std->page); td_flags = le32toh(std->td_flags); temp = (std->td_next == 0); @@ -560,7 +560,7 @@ le32toh(std->td_next), le32toh(std->td_be)); - usbd_page_sync(std->page, BUS_DMASYNC_POSTREAD); + usbd_page_dma_enter(std->page); return temp; } @@ -571,7 +571,7 @@ uint16_t i; uint8_t temp; - usbd_page_sync(sitd->page, BUS_DMASYNC_PREREAD); + usbd_page_dma_exit(sitd->page); itd_flags = le32toh(sitd->itd_flags); temp = (sitd->itd_next == 0); @@ -593,7 +593,7 @@ } printf("\n"); - usbd_page_sync(sitd->page, BUS_DMASYNC_POSTREAD); + usbd_page_dma_enter(sitd->page); return temp; } @@ -615,7 +615,7 @@ uint32_t ed_flags; u_int32_t ed_headp; - usbd_page_sync(sed->page, BUS_DMASYNC_PREREAD); + usbd_page_dma_exit(sed->page); ed_flags = le32toh(sed->ed_flags); ed_headp = le32toh(sed->ed_headp); @@ -637,7 +637,7 @@ le32toh(sed->ed_headp), le32toh(sed->ed_next)); - usbd_page_sync(sed->page, BUS_DMASYNC_POSTREAD); + usbd_page_dma_enter(sed->page); return; } #endif @@ -651,7 +651,7 @@ /* (sc->sc_bus.mtx) must be locked */ - usbd_page_sync(sed->page, BUS_DMASYNC_PREWRITE); + usbd_page_dma_exit(sed->page); sed->next = last->next; sed->ed_next = last->ed_next; @@ -660,8 +660,8 @@ sed->prev = last; - usbd_page_sync(sed->page, BUS_DMASYNC_POSTWRITE); - usbd_page_sync(last->page, BUS_DMASYNC_PREWRITE); + usbd_page_dma_enter(sed->page); + usbd_page_dma_exit(last->page); /* the last->next->prev is never followed: * sed->next->prev = sed; @@ -670,7 +670,7 @@ last->next = sed; last->ed_next = sed->ed_self; - usbd_page_sync(last->page, BUS_DMASYNC_POSTWRITE); + usbd_page_dma_enter(last->page); return(sed); } @@ -686,19 +686,21 @@ /* only remove if not removed from a queue */ if(sed->prev) { - usbd_page_sync(sed->prev->page, BUS_DMASYNC_PREWRITE); + usbd_page_dma_exit(sed->prev->page); sed->prev->next = sed->next; sed->prev->ed_next = sed->ed_next; - usbd_page_sync(sed->prev->page, BUS_DMASYNC_POSTWRITE); + usbd_page_dma_enter(sed->prev->page); if(sed->next) { + usbd_page_dma_exit(sed->next->page); sed->next->prev = sed->prev; + usbd_page_dma_enter(sed->next->page); } - usbd_page_sync(sed->page, BUS_DMASYNC_PREWRITE|BUS_DMASYNC_PREREAD); + usbd_page_dma_exit(sed->page); /* terminate transfer in case the * transferred packet was short so @@ -708,7 +710,7 @@ sed->ed_flags |= htole32(OHCI_ED_SKIP); sed->ed_headp = sed->ed_tailp; - usbd_page_sync(sed->page, BUS_DMASYNC_POSTWRITE|BUS_DMASYNC_POSTREAD); + usbd_page_dma_enter(sed->page); last = ((last == sed) ? sed->prev : last); @@ -745,7 +747,7 @@ ohci_dump_itd(td); } #endif - usbd_page_sync(td->page, BUS_DMASYNC_PREREAD); + usbd_page_dma_exit(td->page); nframes = td->frames; olen = &td->itd_offset[0]; @@ -777,7 +779,7 @@ olen++; } - usbd_page_sync(td->page, BUS_DMASYNC_POSTREAD); + usbd_page_dma_enter(td->page); if(((void *)td) == xfer->td_transfer_last) { @@ -847,7 +849,7 @@ __FUNCTION__, __LINE__); } - usbd_page_sync(td->page, BUS_DMASYNC_PREREAD); + usbd_page_dma_exit(td->page); phy_start = le32toh(td->td_cbp); td_flags = le32toh(td->td_flags); @@ -871,7 +873,7 @@ } } - usbd_page_sync(td->page, BUS_DMASYNC_POSTREAD); + usbd_page_dma_enter(td->page); DPRINTFN(10, ("len=%d\n", len)); @@ -927,11 +929,11 @@ DPRINTFN(12, ("xfer=%p checking transfer\n", xfer)); - usbd_page_sync(ed->page, BUS_DMASYNC_PREREAD); + usbd_page_dma_exit(ed->page); ed_flags = le32toh(ed->ed_flags); ed_headp = le32toh(ed->ed_headp); ed_tailp = le32toh(ed->ed_tailp); - usbd_page_sync(ed->page, BUS_DMASYNC_POSTREAD); + usbd_page_dma_enter(ed->page); if ((ed_flags & OHCI_ED_SKIP) || (ed_headp & OHCI_HALTED) || @@ -1047,7 +1049,7 @@ status = 0; - usbd_page_sync(&(sc->sc_hw_page), BUS_DMASYNC_PREREAD|BUS_DMASYNC_PREWRITE); + usbd_page_dma_exit(&(sc->sc_hw_page)); done = le32toh(hw_ptr->hcca.hcca_done_head); /* The LSb of done is used to inform the HC Driver that an interrupt @@ -1079,7 +1081,7 @@ status = OREAD4(sc, OHCI_INTERRUPT_STATUS) & ~OHCI_WDH; } - usbd_page_sync(&(sc->sc_hw_page), BUS_DMASYNC_POSTREAD|BUS_DMASYNC_POSTWRITE); + usbd_page_dma_enter(&(sc->sc_hw_page)); if(status == 0) /* nothing to be done (PCI shared interrupt) */ { @@ -1290,7 +1292,7 @@ */ xfer->pipe->toggle_next = 1; - usbd_page_sync(td->page, BUS_DMASYNC_PREWRITE); + usbd_page_dma_exit(td->page); /* SETUP message */ @@ -1317,7 +1319,7 @@ td_last->td_next = td->td_self; } - usbd_page_sync(td_last->page, BUS_DMASYNC_POSTWRITE); + usbd_page_dma_enter(td_last->page); } else { @@ -1391,7 +1393,7 @@ "than there is in the buffer!", __FUNCTION__); } - usbd_page_sync(td->page, BUS_DMASYNC_PREWRITE); + usbd_page_dma_exit(td->page); /* fill out TD */ @@ -1428,12 +1430,12 @@ td_last->td_next = td->td_self; } - usbd_page_sync(td_last->page, BUS_DMASYNC_POSTWRITE); + usbd_page_dma_enter(td_last->page); } if(xfer->pipe->methods == &ohci_device_ctrl_methods) { - usbd_page_sync(td->page, BUS_DMASYNC_PREWRITE); + usbd_page_dma_exit(td->page); /* STATUS message */ @@ -1453,16 +1455,16 @@ td_last = td; - usbd_page_sync(td_last->page, BUS_DMASYNC_POSTWRITE); + usbd_page_dma_enter(td_last->page); } - usbd_page_sync(td_last->page, BUS_DMASYNC_PREWRITE|BUS_DMASYNC_PREREAD); + usbd_page_dma_exit(td_last->page); td_last->td_next = 0; td_last->td_flags &= htole32(~OHCI_TD_INTR_MASK); td_last->td_flags |= htole32(OHCI_TD_SET_DI(1)); - usbd_page_sync(td_last->page, BUS_DMASYNC_POSTWRITE|BUS_DMASYNC_POSTREAD); + usbd_page_dma_enter(td_last->page); /* must have at least one frame! */ @@ -1479,7 +1481,7 @@ ed = xfer->qh_start; - usbd_page_sync(ed->page, BUS_DMASYNC_PREWRITE); + usbd_page_dma_exit(ed->page); ed_flags = (OHCI_ED_SET_FA(xfer->address)| OHCI_ED_SET_EN(UE_GET_ADDR(xfer->endpoint))| @@ -1493,7 +1495,7 @@ ed->ed_flags = htole32(ed_flags); - usbd_page_sync(ed->page, BUS_DMASYNC_POSTWRITE); + usbd_page_dma_enter(ed->page); td = xfer->td_transfer_first; @@ -1574,7 +1576,7 @@ for(ed = xfer->qh_start; ed; ed = ed->obj_next) { - usbd_page_sync(ed->page, BUS_DMASYNC_PREREAD); + usbd_page_dma_exit(ed->page); if((!(ed->ed_flags & htole32(OHCI_ED_SKIP))) && (!(ed->ed_headp & htole32(OHCI_HALTED))) && @@ -1583,7 +1585,7 @@ need_delay = 1; } - usbd_page_sync(ed->page, BUS_DMASYNC_POSTREAD); + usbd_page_dma_enter(ed->page); } if(xfer->pipe->methods == &ohci_device_bulk_methods) @@ -1890,9 +1892,9 @@ DPRINTFN(5,("xfer=%p next=%d nframes=%d\n", xfer, xfer->pipe->isoc_next, xfer->nframes)); - usbd_page_sync(&(sc->sc_hw_page), BUS_DMASYNC_PREREAD); + usbd_page_dma_exit(&(sc->sc_hw_page)); nframes = le32toh(hw_ptr->hcca.hcca_frame_number); - usbd_page_sync(&(sc->sc_hw_page), BUS_DMASYNC_POSTREAD); + usbd_page_dma_enter(&(sc->sc_hw_page)); if((((nframes - xfer->pipe->isoc_next) & ((1<<16)-1)) < xfer->nframes) || (((xfer->pipe->isoc_next - nframes) & ((1<<16)-1)) >= 256)) @@ -1958,7 +1960,7 @@ (OHCI_PAGE(buf_res.physaddr) != bp0) || (nframes == 0)) { - usbd_page_sync(td->page, BUS_DMASYNC_PREWRITE); + usbd_page_dma_exit(td->page); /* fill current ITD */ td->itd_flags = htole32( @@ -1991,18 +1993,18 @@ td_last->itd_next = td->itd_self; } - usbd_page_sync(td_last->page, BUS_DMASYNC_POSTWRITE); + usbd_page_dma_enter(td_last->page); } } - usbd_page_sync(td_last->page, BUS_DMASYNC_PREWRITE|BUS_DMASYNC_PREREAD); + usbd_page_dma_exit(td_last->page); /* update the last TD */ td_last->itd_flags &= htole32(~OHCI_ITD_NOINTR); td_last->itd_flags |= htole32(OHCI_ITD_SET_DI(0)); td_last->itd_next = 0; - usbd_page_sync(td_last->page, BUS_DMASYNC_POSTWRITE|BUS_DMASYNC_POSTREAD); + usbd_page_dma_enter(td_last->page); xfer->td_transfer_last = td_last; @@ -2015,7 +2017,7 @@ #endif ed = xfer->qh_start; - usbd_page_sync(ed->page, BUS_DMASYNC_PREWRITE); + usbd_page_dma_exit(ed->page); if(UE_GET_DIR(xfer->endpoint) == UE_DIR_IN) ed_flags = (OHCI_ED_DIR_IN|OHCI_ED_FORMAT_ISO); @@ -2033,7 +2035,7 @@ ed->ed_flags = htole32(ed_flags); - usbd_page_sync(ed->page, BUS_DMASYNC_POSTWRITE); + usbd_page_dma_enter(ed->page); td = xfer->td_transfer_first; @@ -2849,7 +2851,7 @@ usbd_page_get_info(page_ptr, size[1], &page_info); - usbd_page_sync(page_info.page, BUS_DMASYNC_PREWRITE); + usbd_page_dma_exit(page_info.page); td = page_info.buffer; @@ -2860,7 +2862,7 @@ last_obj = td; - usbd_page_sync(page_info.page, BUS_DMASYNC_POSTWRITE); + usbd_page_dma_enter(page_info.page); } size[1] += sizeof(ohci_td_t); } @@ -2877,7 +2879,7 @@ usbd_page_get_info(page_ptr, size[1], &page_info); - usbd_page_sync(page_info.page, BUS_DMASYNC_PREWRITE); + usbd_page_dma_exit(page_info.page); itd = page_info.buffer; @@ -2888,7 +2890,7 @@ last_obj = itd; - usbd_page_sync(page_info.page, BUS_DMASYNC_POSTWRITE); + usbd_page_dma_enter(page_info.page); } size[1] += sizeof(ohci_itd_t); } @@ -2912,7 +2914,7 @@ usbd_page_get_info(page_ptr, size[1], &page_info); - usbd_page_sync(page_info.page, BUS_DMASYNC_PREWRITE); + usbd_page_dma_exit(page_info.page); ed = page_info.buffer; >>> TRUNCATED FOR MAIL (1000 lines) <<<