Date: Fri, 10 Aug 2007 21:15:43 GMT From: Kip Macy <kmacy@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 125024 for review Message-ID: <200708102115.l7ALFhwP037649@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=125024 Change 125024 by kmacy@kmacy_home:ethng on 2007/08/10 21:14:42 IFC Affected files ... .. //depot/projects/ethng/src/ObsoleteFiles.inc#2 integrate .. //depot/projects/ethng/src/contrib/opensolaris/cmd/zdb/zdb.c#2 integrate .. //depot/projects/ethng/src/etc/rc.d/nscd#2 integrate .. //depot/projects/ethng/src/lib/libthr/thread/thr_private.h#2 integrate .. //depot/projects/ethng/src/sbin/fsck_ffs/main.c#2 integrate .. //depot/projects/ethng/src/share/man/man4/ddb.4#2 integrate .. //depot/projects/ethng/src/share/man/man9/locking.9#2 integrate .. //depot/projects/ethng/src/share/misc/bsd-family-tree#2 integrate .. //depot/projects/ethng/src/sys/arm/arm/cpufunc.c#2 integrate .. //depot/projects/ethng/src/sys/arm/arm/genassym.c#2 integrate .. //depot/projects/ethng/src/sys/arm/arm/swtch.S#2 integrate .. //depot/projects/ethng/src/sys/boot/arm/at91/libat91/Makefile#2 integrate .. //depot/projects/ethng/src/sys/conf/files#2 integrate .. //depot/projects/ethng/src/sys/conf/kern.pre.mk#2 integrate .. //depot/projects/ethng/src/sys/dev/an/if_an.c#2 integrate .. //depot/projects/ethng/src/sys/dev/usb/if_axe.c#2 integrate .. //depot/projects/ethng/src/sys/dev/usb/if_axereg.h#2 integrate .. //depot/projects/ethng/src/sys/dev/wi/if_wi.c#2 integrate .. //depot/projects/ethng/src/sys/fs/msdosfs/denode.h#2 integrate .. //depot/projects/ethng/src/sys/fs/msdosfs/msdosfs_conv.c#2 integrate .. //depot/projects/ethng/src/sys/fs/msdosfs/msdosfs_denode.c#2 integrate .. //depot/projects/ethng/src/sys/fs/msdosfs/msdosfs_fat.c#2 integrate .. //depot/projects/ethng/src/sys/fs/msdosfs/msdosfs_fileno.c#2 integrate .. //depot/projects/ethng/src/sys/fs/msdosfs/msdosfs_iconv.c#2 integrate .. //depot/projects/ethng/src/sys/fs/msdosfs/msdosfs_lookup.c#2 integrate .. //depot/projects/ethng/src/sys/fs/msdosfs/msdosfs_vfsops.c#2 integrate .. //depot/projects/ethng/src/sys/fs/msdosfs/msdosfs_vnops.c#2 integrate .. //depot/projects/ethng/src/sys/fs/tmpfs/tmpfs.h#2 integrate .. //depot/projects/ethng/src/sys/fs/tmpfs/tmpfs_subr.c#2 integrate .. //depot/projects/ethng/src/sys/fs/tmpfs/tmpfs_vfsops.c#2 integrate .. //depot/projects/ethng/src/sys/fs/tmpfs/tmpfs_vnops.c#2 integrate .. //depot/projects/ethng/src/sys/i386/i386/machdep.c#2 integrate .. //depot/projects/ethng/src/sys/i386/include/cpufunc.h#2 integrate .. //depot/projects/ethng/src/sys/kern/kern_lockf.c#2 integrate .. //depot/projects/ethng/src/sys/netinet/in_mcast.c#2 integrate .. //depot/projects/ethng/src/sys/netinet/ip_divert.c#2 integrate .. //depot/projects/ethng/src/sys/powerpc/include/interruptvar.h#2 delete .. //depot/projects/ethng/src/sys/powerpc/include/intr_machdep.h#2 integrate .. //depot/projects/ethng/src/sys/powerpc/include/trap.h#2 integrate .. //depot/projects/ethng/src/sys/powerpc/powerpc/interrupt.c#2 integrate .. //depot/projects/ethng/src/sys/powerpc/powerpc/intr_machdep.c#2 integrate .. //depot/projects/ethng/src/sys/powerpc/powerpc/trap.c#2 integrate .. //depot/projects/ethng/src/sys/vm/device_pager.c#2 integrate .. //depot/projects/ethng/src/tools/regression/tmpfs/h_tools.c#2 integrate .. //depot/projects/ethng/src/tools/regression/tmpfs/t_mount#2 integrate .. //depot/projects/ethng/src/tools/regression/tmpfs/t_rename#2 integrate .. //depot/projects/ethng/src/usr.sbin/bsnmpd/modules/snmp_bridge/BEGEMOT-BRIDGE-MIB.txt#2 integrate .. //depot/projects/ethng/src/usr.sbin/bsnmpd/modules/snmp_bridge/bridge_port.c#2 integrate .. //depot/projects/ethng/src/usr.sbin/bsnmpd/modules/snmp_bridge/bridge_snmp.h#2 integrate .. //depot/projects/ethng/src/usr.sbin/bsnmpd/modules/snmp_bridge/bridge_sys.c#2 integrate .. //depot/projects/ethng/src/usr.sbin/bsnmpd/modules/snmp_bridge/bridge_tree.def#2 integrate .. //depot/projects/ethng/src/usr.sbin/bsnmpd/modules/snmp_bridge/snmp_bridge.3#2 integrate .. //depot/projects/ethng/src/usr.sbin/freebsd-update/freebsd-update.sh#2 integrate .. //depot/projects/ethng/src/usr.sbin/nscd/Makefile#2 integrate .. //depot/projects/ethng/src/usr.sbin/nscd/agent.h#2 integrate .. //depot/projects/ethng/src/usr.sbin/nscd/cachelib.h#2 integrate .. //depot/projects/ethng/src/usr.sbin/nscd/cacheplcs.h#2 integrate .. //depot/projects/ethng/src/usr.sbin/nscd/config.h#2 integrate .. //depot/projects/ethng/src/usr.sbin/nscd/debug.h#2 integrate .. //depot/projects/ethng/src/usr.sbin/nscd/log.c#2 integrate .. //depot/projects/ethng/src/usr.sbin/nscd/log.h#2 integrate .. //depot/projects/ethng/src/usr.sbin/nscd/mp_rs_query.c#2 integrate .. //depot/projects/ethng/src/usr.sbin/nscd/mp_rs_query.h#2 integrate .. //depot/projects/ethng/src/usr.sbin/nscd/mp_ws_query.c#2 integrate .. //depot/projects/ethng/src/usr.sbin/nscd/mp_ws_query.h#2 integrate .. //depot/projects/ethng/src/usr.sbin/nscd/nscd.8#2 integrate .. //depot/projects/ethng/src/usr.sbin/nscd/nscd.c#2 integrate .. //depot/projects/ethng/src/usr.sbin/nscd/nscd.conf.5#2 integrate .. //depot/projects/ethng/src/usr.sbin/nscd/nscdcli.c#2 integrate .. //depot/projects/ethng/src/usr.sbin/nscd/nscdcli.h#2 integrate .. //depot/projects/ethng/src/usr.sbin/nscd/parser.h#2 integrate .. //depot/projects/ethng/src/usr.sbin/nscd/protocol.h#2 integrate .. //depot/projects/ethng/src/usr.sbin/nscd/query.c#2 integrate .. //depot/projects/ethng/src/usr.sbin/nscd/query.h#2 integrate .. //depot/projects/ethng/src/usr.sbin/nscd/singletons.h#2 integrate Differences ... ==== //depot/projects/ethng/src/ObsoleteFiles.inc#2 (text+ko) ==== @@ -1,5 +1,5 @@ # -# $FreeBSD: src/ObsoleteFiles.inc,v 1.108 2007/08/02 08:04:47 bz Exp $ +# $FreeBSD: src/ObsoleteFiles.inc,v 1.109 2007/08/07 23:48:30 marcel Exp $ # # This file lists old files (OLD_FILES), libraries (OLD_LIBS) and # directories (OLD_DIRS) which should get removed at an update. Recently @@ -14,6 +14,10 @@ # The file is partitioned: OLD_FILES first, then OLD_LIBS and OLD_DIRS last. # +# 20070807: removal of PowerPC specific header file. +.if ${TARGET_ARCH} == "powerpc" +OLD_FILES+=usr/include/machine/interruptvar.h +.endif # 20070801: fast_ipsec.4 gone OLD_FILES+=usr/share/man/man4/fast_ipsec.4.gz # 20070715: netatm temporarily disconnected ==== //depot/projects/ethng/src/contrib/opensolaris/cmd/zdb/zdb.c#2 (text+ko) ==== @@ -1136,7 +1136,15 @@ exit(1); } - psize = statbuf.st_size; + if (S_ISCHR(statbuf.st_mode)) { + if (ioctl(fd, DIOCGMEDIASIZE, &psize) != 0) { + (void) printf("failed to get size '%s': %s\n", dev, + strerror(errno)); + exit(1); + } + } else + psize = statbuf.st_size; + psize = P2ALIGN(psize, (uint64_t)sizeof (vdev_label_t)); for (l = 0; l < VDEV_LABELS; l++) { ==== //depot/projects/ethng/src/etc/rc.d/nscd#2 (text+ko) ==== @@ -1,32 +1,32 @@ #!/bin/sh # -# $FreeBSD: src/etc/rc.d/nscd,v 1.3 2006/06/06 15:34:50 ume Exp $ +# $FreeBSD: src/etc/rc.d/nscd,v 1.4 2007/08/09 13:06:11 bushman Exp $ # -# PROVIDE: cached +# PROVIDE: nscd # REQUIRE: DAEMON # BEFORE: LOGIN # # Add the following lines to /etc/rc.conf to enable cached: # -# cached_enable="YES" +# nscd_enable="YES" # -# See cached(8) for flags +# See nscd(8) for flags # . /etc/rc.subr -name=cached +name=nscd rcvar=`set_rcvar` -command=/usr/sbin/cached +command=/usr/sbin/nscd extra_commands="flush" flush_cmd="${command} -I all" -cached_enable=${cached_enable:-"NO"} -cached_pidfile=${cached_pidfile:-"/var/run/cached.pid"} -cached_flags=${cached_flags:-""} +nscd_enable=${nscd_enable:-"NO"} +nscd_pidfile=${nscd_pidfile:-"/var/run/nscd.pid"} +nscd_flags=${nscd_flags:-""} load_rc_config $name run_rc_command "$1" ==== //depot/projects/ethng/src/lib/libthr/thread/thr_private.h#2 (text+ko) ==== @@ -26,7 +26,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/lib/libthr/thread/thr_private.h,v 1.77 2006/12/20 04:43:34 davidxu Exp $ + * $FreeBSD: src/lib/libthr/thread/thr_private.h,v 1.78 2007/08/07 04:50:14 davidxu Exp $ */ #ifndef _THR_PRIVATE_H @@ -72,7 +72,7 @@ /* Output debug messages like this: */ #define stdout_debug(args...) _thread_printf(STDOUT_FILENO, ##args) -#define stderr_debug(args...) _thread_printf(STDOUT_FILENO, ##args) +#define stderr_debug(args...) _thread_printf(STDERR_FILENO, ##args) #ifdef _PTHREADS_INVARIANTS #define THR_ASSERT(cond, msg) do { \ ==== //depot/projects/ethng/src/sbin/fsck_ffs/main.c#2 (text+ko) ==== @@ -39,7 +39,7 @@ #endif /* not lint */ #endif #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sbin/fsck_ffs/main.c,v 1.45 2006/10/31 22:06:56 pjd Exp $"); +__FBSDID("$FreeBSD: src/sbin/fsck_ffs/main.c,v 1.46 2007/08/10 06:29:54 pjd Exp $"); #include <sys/param.h> #include <sys/stat.h> @@ -67,6 +67,7 @@ static void usage(void) __dead2; static int argtoi(int flag, const char *req, const char *str, int base); static int checkfilesys(char *filesys); +static int chkdoreload(struct statfs *mntp); static struct statfs *getmntpt(const char *); int @@ -197,7 +198,7 @@ struct stat snapdir; struct group *grp; ufs2_daddr_t blks; - int cylno, ret; + int cylno; ino_t files; size_t size; @@ -253,7 +254,9 @@ } if ((sblock.fs_flags & (FS_UNCLEAN | FS_NEEDSFSCK)) == 0) { gjournal_check(filesys); - exit(0); + if (chkdoreload(mntp) == 0) + exit(0); + exit(4); } else { pfatal("UNEXPECTED INCONSISTENCY, %s\n", "CANNOT RUN FAST FSCK\n"); @@ -483,23 +486,7 @@ printf("\n***** FILE SYSTEM WAS MODIFIED *****\n"); if (rerun) printf("\n***** PLEASE RERUN FSCK *****\n"); - if (mntp != NULL) { - /* - * We modified a mounted file system. Do a mount update on - * it unless it is read-write, so we can continue using it - * as safely as possible. - */ - if (mntp->f_flags & MNT_RDONLY) { - args.fspec = 0; - args.export.ex_flags = 0; - args.export.ex_root = 0; - ret = mount("ufs", mntp->f_mntonname, - mntp->f_flags | MNT_UPDATE | MNT_RELOAD, &args); - if (ret == 0) - return (0); - pwarn("mount reload of '%s' failed: %s\n\n", - mntp->f_mntonname, strerror(errno)); - } + if (chkdoreload(mntp) != 0) { if (!fsmodified) return (0); if (!preen) @@ -510,6 +497,36 @@ return (0); } +static int +chkdoreload(struct statfs *mntp) +{ + struct ufs_args args; + + if (mntp == NULL) + return (0); + /* + * We modified a mounted file system. Do a mount update on + * it unless it is read-write, so we can continue using it + * as safely as possible. + */ + if (mntp->f_flags & MNT_RDONLY) { + memset(&args, 0, sizeof args); + /* + * args.fspec = 0; + * args.export.ex_flags = 0; + * args.export.ex_root = 0; + */ + if (mount("ufs", mntp->f_mntonname, + mntp->f_flags | MNT_UPDATE | MNT_RELOAD, &args) == 0) { + return (0); + } + pwarn("mount reload of '%s' failed: %s\n\n", + mntp->f_mntonname, strerror(errno)); + return (1); + } + return (0); +} + /* * Get the mount point information for name. */ ==== //depot/projects/ethng/src/share/man/man4/ddb.4#2 (text+ko) ==== @@ -57,9 +57,9 @@ .\" Created. .\" [90/08/30 dbg] .\" -.\" $FreeBSD: src/share/man/man4/ddb.4,v 1.41 2006/10/30 12:55:06 ru Exp $ +.\" $FreeBSD: src/share/man/man4/ddb.4,v 1.42 2007/08/09 20:14:35 njl Exp $ .\" -.Dd October 27, 2006 +.Dd August 6, 2007 .Dt DDB 4 .Os .Sh NAME @@ -522,6 +522,12 @@ modifier depends on the machine. If not supported, incorrect information will be displayed. .Pp +.It Ic show Cm sysregs +Show system registers (e.g., +.Li cr0-4 +on i386.) +Not present on some platforms. +.Pp .It Ic show Cm geom Op Ar addr If the .Ar addr ==== //depot/projects/ethng/src/share/man/man9/locking.9#2 (text+ko) ==== @@ -22,7 +22,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD: src/share/man/man9/locking.9,v 1.10 2007/06/21 16:39:25 brueffer Exp $ +.\" $FreeBSD: src/share/man/man9/locking.9,v 1.11 2007/08/09 21:09:56 julian Exp $ .\" .Dd March 14, 2007 .Dt LOCKING 9 @@ -67,7 +67,8 @@ .El .Pp The primitives interact and have a number of rules regarding how -they can and can not be combined. There are too many for the average +they can and can not be combined. +There are too many for the average human mind and they keep changing. (if you disagree, please write replacement text) :-) .Pp @@ -85,63 +86,70 @@ If you don't own it then you just spin, waiting for the holder (on another CPU) to release it. Hopefully they are doing something fast. -You can not do anything that deschedules the thread while you +You +.Em must not +do anything that deschedules the thread while you are holding a SPIN mutex. -.Ss Sleep Mutexes -Basically sleep (regular) mutexes will deschedule the thread if the +.Ss Mutexes +Basically (regular) mutexes will deschedule the thread if the mutex can not be acquired. +A non-spin mutex can be considered to be equivalent +to getting a write lock on an +.Em rw_lock +(see below), and in fact non-spin mutexes and rw_locks may soon become the same thing. As in spin mutexes, you either get it or you don't. -You may call the +You may only call the .Xr sleep 9 -call +call via .Fn msleep or the new .Fn mtx_sleep -variant. These will atomically drop the mutex and reacquire it +variant. +These will atomically drop the mutex and reacquire it as part of waking up. +This is often however a +.Em BAD +idea because it generally relies on you having +such a good knowledge of all the call graph above you +and what assumptions it is making that there are a lot +of ways to make hard-to-find mistakes. +For example you MUST re-test all the assumptions you made before, +all the way up the call graph to where you got the lock. +You can not just assume that mtx_sleep can be inserted anywhere. +If any caller above you has any mutex or +rwlock, your sleep, will cause a panic. +If the sleep only happens rarely it may be years before the +bad code path is found. .Ss Pool Mutexes -A variant of SLEEP mutexes where the allocation of the mutex is handled +A variant of regular mutexes where the allocation of the mutex is handled more by the system. -.Ss Sx_locks -Shared/exclusive locks are used to protect data that are read far more often -than they are written. -Mutexes are inherently more efficient than shared/exclusive locks, so -shared/exclusive locks should be used prudently. -A thread may hold a shared or exclusive lock on an -.Em sx_lock -lock while sleeping. -As a result, an -.Em sx_lock -lock may not be acquired while holding a mutex. -Otherwise, if one thread slept while holding an -.Em sx_lock -lock while another thread blocked on the same -.Em sx_lock -lock after acquiring a mutex, then the second thread would effectively -end up sleeping while holding a mutex, which is not allowed. .Ss Rw_locks Reader/writer locks allow shared access to protected data by multiple threads, or exclusive access by a single thread. The threads with shared access are known as .Em readers -since they only read the protected data. +since they should only read the protected data. A thread with exclusive access is known as a .Em writer -since it can modify protected data. +since it may modify protected data. .Pp Although reader/writer locks look very similar to .Xr sx 9 -locks, their usage pattern is different. -Reader/writer locks can be treated as mutexes (see +(see below) locks, their usage pattern is different. +Reader/writer locks can be treated as mutexes (see above and .Xr mutex 9 ) with shared/exclusive semantics. -Unlike -.Xr sx 9 , -an +More specifically, regular mutexes can be +considered to be equivalent to a write-lock on an +.Em rw_lock. +In the future this may in fact +become literally the fact. +An .Em rw_lock -can be locked while holding a non-spin mutex, and an -.Em rw_lock -cannot be held while sleeping. +can be locked while holding a regular mutex, but +can +.Em not +be held while sleeping. The .Em rw_lock locks have priority propagation like mutexes, but priority @@ -150,8 +158,36 @@ are anonymous. Another important property is that shared holders of .Em rw_lock -can recurse, -but exclusive locks are not allowed to recurse. +can recurse, but exclusive locks are not allowed to recurse. +This ability should not be used lightly and +.Em may go away. +Users of recursion in any locks should be prepared to +defend their decision against vigorous criticism. +.Ss Sx_locks +Shared/exclusive locks are used to protect data that are read far more often +than they are written. +Mutexes are inherently more efficient than shared/exclusive locks, so +shared/exclusive locks should be used prudently. +The main reason for using an +.Em sx_lock +is that a thread may hold a shared or exclusive lock on an +.Em sx_lock +lock while sleeping. +As a consequence of this however, an +.Em sx_lock +lock may not be acquired while holding a mutex. +The reason for this is that, if one thread slept while holding an +.Em sx_lock +lock while another thread blocked on the same +.Em sx_lock +lock after acquiring a mutex, then the second thread would effectively +end up sleeping while holding a mutex, which is not allowed. +The +.Em sx_lock +should be considered to be closely related to +.Xr sleep 9 . +In fact it could in some cases be +considered a conditional sleep. .Ss Turnstiles Turnstiles are used to hold a queue of threads blocked on non-sleepable locks. @@ -160,6 +196,7 @@ are assigned to a lock held by an owning thread. Thus, when one thread is enqueued onto a turnstile, it can lend its priority to the owning thread. +If this sounds confusing, we need to describe it better. .Ss Semaphores .Ss Condition variables Condition variables are used in conjunction with mutexes to wait for @@ -182,7 +219,7 @@ .It You can sleep while it has recursed, but other recursive locks cannot. .It -Giant must be locked first. +Giant must be locked first before other locks. .It There are places in the kernel that drop Giant and pick it back up again. @@ -249,7 +286,8 @@ mutex before the function returns. .Pp .Ss lockmanager locks -Largely deprecated. See the +Largely deprecated. +See the .Xr lock 9 page for more information. I don't know what the downsides are but I'm sure someone will fill in this part. @@ -269,10 +307,12 @@ .El .Pp .Em *1 -Recursion is defined per lock. Lock order is important. +Recursion is defined per lock. +Lock order is important. .Pp .Em *2 -readers can recurse though writers can not. Lock order is important. +readers can recurse though writers can not. +Lock order is important. .Pp .Em *3 There are calls atomically release this primitive when going to sleep @@ -302,6 +342,7 @@ .Xr condvar 9 , .Xr lock 9 , .Xr mtx_pool 9 , +.Xr mutex 9 , .Xr rwlock 9 , .Xr sema 9 , .Xr sleep 9 , ==== //depot/projects/ethng/src/share/misc/bsd-family-tree#2 (text+ko) ==== @@ -174,7 +174,7 @@ | | | | \ FreeBSD 5.0 | | | | | | | | | -FreeBSD 5.1 | | | DragonFly 1.0 +FreeBSD 5.1 | | | DragonFly 1.0 | \ | | | | | ----- Mac OS X | | | | 10.3 | | | @@ -185,7 +185,7 @@ *-------FreeBSD 5.3 | | | | | | | | OpenBSD 3.6 | | | | NetBSD 2.0 | | - | | | | | | | DragonFly 1.2.0 + | | | | | | | DragonFly 1.2.0 | | Mac OS X | | NetBSD 2.0.2 | | | | 10.4 | | | | | | FreeBSD 5.4 | | | | | | @@ -198,19 +198,20 @@ | | | | | NetBSD 2.1 | | | | | | | | | | | | | NetBSD 3.0 | | - | | | | | | | | DragonFly 1.4.0 + | | | | | | | | DragonFly 1.4.0 | | | | | | | OpenBSD 3.9 | | FreeBSD | | | | | | | | 6.1 | | | | | | | | | FreeBSD 5.5 | | | | | | - | | | | | NetBSD 3.0.1 | DragonFly 1.6.0 + | | | | | NetBSD 3.0.1 | DragonFly 1.6.0 | | | | | | | | | | | | | | OpenBSD 4.0 | | | | | | NetBSD 3.0.2 | | | | | | NetBSD 3.1 | | | FreeBSD 6.2 | | | | - | | | | | DragonFly 1.8.0 + | | | | | DragonFly 1.8.0 | | | | OpenBSD 4.1 | + | | | | | DragonFly 1.10.0 | V | | | | FreeBSD 7 -current | NetBSD -current OpenBSD -current | | | | | | @@ -466,6 +467,7 @@ FreeBSD 6.2 2007-01-15 [FBD] DragonFly 1.8.0 2007-01-30 [DFB] OpenBSD 4.1 2007-05-01 [OBD] +DragonFly 1.10.0 2007-08-06 [DFB] Bibliography ------------------------ @@ -526,4 +528,4 @@ Copyright (c) 1997-2007 Wolfram Schneider <wosch@FreeBSD.ORG> URL: http://cvsweb.freebsd.org/src/share/misc/bsd-family-tree -$FreeBSD: src/share/misc/bsd-family-tree,v 1.113 2007/05/31 03:40:29 imp Exp $ +$FreeBSD: src/share/misc/bsd-family-tree,v 1.115 2007/08/07 15:35:24 maxim Exp $ ==== //depot/projects/ethng/src/sys/arm/arm/cpufunc.c#2 (text+ko) ==== @@ -45,7 +45,7 @@ * Created : 30/01/97 */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/arm/arm/cpufunc.c,v 1.17 2007/07/27 14:39:41 cognet Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/cpufunc.c,v 1.18 2007/08/07 18:37:21 cognet Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -148,9 +148,9 @@ arm7tdmi_cache_flushID, /* idcache_wbinv_all */ (void *)arm7tdmi_cache_flushID, /* idcache_wbinv_range */ cpufunc_nullop, /* l2cache_wbinv_all */ - cpufunc_nullop, /* l2cache_wbinv_range */ - cpufunc_nullop, /* l2cache_inv_range */ - cpufunc_nullop, /* l2cache_wb_range */ + (void *)cpufunc_nullop, /* l2cache_wbinv_range */ + (void *)cpufunc_nullop, /* l2cache_inv_range */ + (void *)cpufunc_nullop, /* l2cache_wb_range */ /* Other functions */ @@ -210,9 +210,9 @@ arm8_cache_purgeID, /* idcache_wbinv_all */ (void *)arm8_cache_purgeID, /* idcache_wbinv_range */ cpufunc_nullop, /* l2cache_wbinv_all */ - cpufunc_nullop, /* l2cache_wbinv_range */ - cpufunc_nullop, /* l2cache_inv_range */ - cpufunc_nullop, /* l2cache_wb_range */ + (void *)cpufunc_nullop, /* l2cache_wbinv_range */ + (void *)cpufunc_nullop, /* l2cache_inv_range */ + (void *)cpufunc_nullop, /* l2cache_wb_range */ /* Other functions */ @@ -271,9 +271,9 @@ arm9_idcache_wbinv_all, /* idcache_wbinv_all */ arm9_idcache_wbinv_range, /* idcache_wbinv_range */ cpufunc_nullop, /* l2cache_wbinv_all */ - cpufunc_nullop, /* l2cache_wbinv_range */ - cpufunc_nullop, /* l2cache_inv_range */ - cpufunc_nullop, /* l2cache_wb_range */ + (void *)cpufunc_nullop, /* l2cache_wbinv_range */ + (void *)cpufunc_nullop, /* l2cache_inv_range */ + (void *)cpufunc_nullop, /* l2cache_wb_range */ /* Other functions */ @@ -333,9 +333,9 @@ arm10_idcache_wbinv_all, /* idcache_wbinv_all */ arm10_idcache_wbinv_range, /* idcache_wbinv_range */ cpufunc_nullop, /* l2cache_wbinv_all */ - cpufunc_nullop, /* l2cache_wbinv_range */ - cpufunc_nullop, /* l2cache_inv_range */ - cpufunc_nullop, /* l2cache_wb_range */ + (void *)cpufunc_nullop, /* l2cache_wbinv_range */ + (void *)cpufunc_nullop, /* l2cache_inv_range */ + (void *)cpufunc_nullop, /* l2cache_wb_range */ /* Other functions */ @@ -395,9 +395,9 @@ sa1_cache_purgeID, /* idcache_wbinv_all */ sa1_cache_purgeID_rng, /* idcache_wbinv_range */ cpufunc_nullop, /* l2cache_wbinv_all */ - cpufunc_nullop, /* l2cache_wbinv_range */ - cpufunc_nullop, /* l2cache_inv_range */ - cpufunc_nullop, /* l2cache_wb_range */ + (void *)cpufunc_nullop, /* l2cache_wbinv_range */ + (void *)cpufunc_nullop, /* l2cache_inv_range */ + (void *)cpufunc_nullop, /* l2cache_wb_range */ /* Other functions */ @@ -456,9 +456,9 @@ sa1_cache_purgeID, /* idcache_wbinv_all */ sa1_cache_purgeID_rng, /* idcache_wbinv_range */ cpufunc_nullop, /* l2cache_wbinv_all */ - cpufunc_nullop, /* l2cache_wbinv_range */ - cpufunc_nullop, /* l2cache_inv_range */ - cpufunc_nullop, /* l2cache_wb_range */ + (void *)cpufunc_nullop, /* l2cache_wbinv_range */ + (void *)cpufunc_nullop, /* l2cache_inv_range */ + (void *)cpufunc_nullop, /* l2cache_wb_range */ /* Other functions */ @@ -517,9 +517,9 @@ sa1_cache_purgeID, /* idcache_wbinv_all */ sa1_cache_purgeID_rng, /* idcache_wbinv_range */ cpufunc_nullop, /* l2cache_wbinv_all */ - cpufunc_nullop, /* l2cache_wbinv_range */ - cpufunc_nullop, /* l2cache_inv_range */ - cpufunc_nullop, /* l2cache_wb_range */ + (void *)cpufunc_nullop, /* l2cache_wbinv_range */ + (void *)cpufunc_nullop, /* l2cache_inv_range */ + (void *)cpufunc_nullop, /* l2cache_wb_range */ /* Other functions */ @@ -581,9 +581,9 @@ xscale_cache_purgeID, /* idcache_wbinv_all */ xscale_cache_purgeID_rng, /* idcache_wbinv_range */ cpufunc_nullop, /* l2cache_wbinv_all */ - cpufunc_nullop, /* l2cache_wbinv_range */ - cpufunc_nullop, /* l2cache_inv_range */ - cpufunc_nullop, /* l2cache_wb_range */ + (void *)cpufunc_nullop, /* l2cache_wbinv_range */ + (void *)cpufunc_nullop, /* l2cache_inv_range */ + (void *)cpufunc_nullop, /* l2cache_wb_range */ /* Other functions */ ==== //depot/projects/ethng/src/sys/arm/arm/genassym.c#2 (text+ko) ==== @@ -26,7 +26,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/arm/arm/genassym.c,v 1.9 2007/05/23 13:21:57 cognet Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/genassym.c,v 1.10 2007/08/08 09:27:52 cognet Exp $"); #include <sys/param.h> #include <sys/systm.h> #include <sys/assym.h> @@ -92,6 +92,7 @@ ASSYM(TD_PROC, offsetof(struct thread, td_proc)); ASSYM(TD_FRAME, offsetof(struct thread, td_frame)); ASSYM(TD_MD, offsetof(struct thread, td_md)); +ASSYM(TD_LOCK, offsetof(struct thread, td_lock)); ASSYM(MD_TP, offsetof(struct mdthread, md_tp)); ASSYM(TF_R0, offsetof(struct trapframe, tf_r0)); ==== //depot/projects/ethng/src/sys/arm/arm/swtch.S#2 (text+ko) ==== @@ -83,7 +83,7 @@ #include <machine/asm.h> #include <machine/asmacros.h> #include <machine/armreg.h> -__FBSDID("$FreeBSD: src/sys/arm/arm/swtch.S,v 1.19 2006/04/09 20:16:47 cognet Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/swtch.S,v 1.20 2007/08/07 18:20:55 cognet Exp $"); /* @@ -127,6 +127,8 @@ .word _C_LABEL(block_userspace_access) .Lcpu_do_powersave: .word _C_LABEL(cpu_do_powersave) +.Lblocked_lock: + .word _C_LABEL(blocked_lock) ENTRY(cpu_throw) mov r5, r1 @@ -214,6 +216,7 @@ ENTRY(cpu_switch) stmfd sp!, {r4-r7, lr} + mov r6, r2 /* Save the mutex */ .Lswitch_resume: /* rem: r0 = old lwp */ @@ -241,10 +244,11 @@ /* Stage two : Save old context */ - /* Get the user structure for the old lwp. */ + /* Get the user structure for the old thread. */ ldr r2, [r0, #(TD_PCB)] + mov r4, r0 /* Save the old thread. */ - /* Save all the registers in the old lwp's pcb */ + /* Save all the registers in the old thread's pcb */ #ifndef __XSCALE__ add r7, r2, #(PCB_R8) stmia r7, {r8-r13} @@ -324,8 +328,7 @@ mov lr, pc ldr pc, [r1, #CF_IDCACHE_WBINV_ALL] .Lcs_cache_purge_skipped: - /* rem: r4 = &block_userspace_access */ - /* rem: r6 = new lwp */ + /* rem: r6 = lock */ /* rem: r9 = new PCB */ /* rem: r10 = old L1 */ /* rem: r11 = new L1 */ @@ -389,6 +392,17 @@ .Lcs_context_switched: + /* Release the old thread */ + str r6, [r4, #TD_LOCK] + ldr r6, .Lblocked_lock + ldr r3, .Lcurthread + ldr r3, [r3] + +1: + ldr r4, [r3, #TD_LOCK] + cmp r4, r6 + beq 1b + /* XXXSCW: Safe to re-enable FIQs here */ /* rem: r9 = new PCB */ @@ -419,7 +433,7 @@ ldr r13, [r7, #(PCB_SP)] #endif - /* rem: r6 = new lwp */ + /* rem: r6 = lock */ /* rem: r7 = new pcb */ #ifdef ARMFPE @@ -429,7 +443,7 @@ #endif /* rem: r5 = new lwp's proc */ - /* rem: r6 = new lwp */ + /* rem: r6 = lock */ /* rem: r7 = new PCB */ .Lswitch_return: ==== //depot/projects/ethng/src/sys/boot/arm/at91/libat91/Makefile#2 (text) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/boot/arm/at91/libat91/Makefile,v 1.9 2007/07/13 14:27:04 imp Exp $ +# $FreeBSD: src/sys/boot/arm/at91/libat91/Makefile,v 1.10 2007/08/09 05:16:55 imp Exp $ .include "${.CURDIR}/../Makefile.inc" @@ -8,7 +8,7 @@ putchar.c printf.c reset.c spi_flash.c xmodem.c \ sd-card.c strcvt.c strlen.c strcmp.c memcpy.c strcpy.c \ memset.c memcmp.c -SRCS+=ashldi3.c divsi3.c +SRCS+=ashldi3.c divsi3.S NO_MAN= .if ${MK_TAG_LIST} != "no" ==== //depot/projects/ethng/src/sys/conf/files#2 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/files,v 1.1241 2007/07/24 15:35:01 scottl Exp $ +# $FreeBSD: src/sys/conf/files,v 1.1242 2007/08/09 01:11:21 marcel Exp $ # # The long compile-with and dependency lines are required because of # limitations in config: backslash-newline doesn't work in strings, and @@ -259,7 +259,7 @@ contrib/ipfilter/netinet/ip_state.c optional ipfilter inet \ compile-with "${NORMAL_C} -I$S/contrib/ipfilter" contrib/ipfilter/netinet/ip_lookup.c optional ipfilter inet \ - compile-with "${NORMAL_C} -I$S/contrib/ipfilter" + compile-with "${NORMAL_C} -Wno-error -I$S/contrib/ipfilter" contrib/ipfilter/netinet/ip_pool.c optional ipfilter inet \ compile-with "${NORMAL_C} -I$S/contrib/ipfilter" contrib/ipfilter/netinet/ip_htable.c optional ipfilter inet \ ==== //depot/projects/ethng/src/sys/conf/kern.pre.mk#2 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/kern.pre.mk,v 1.91 2007/07/31 03:15:32 marcel Exp $ +# $FreeBSD: src/sys/conf/kern.pre.mk,v 1.92 2007/08/08 19:12:06 marcel Exp $ # Part of a unified Makefile for building kernels. This part contains all # of the definitions that need to be before %BEFORE_DEPEND. @@ -88,7 +88,8 @@ CFLAGS+= --param inline-unit-growth=100 CFLAGS+= --param large-function-growth=1000 .if ${MACHINE_ARCH} == "amd64" || ${MACHINE} == "i386" || \ - ${MACHINE_ARCH} == "ia64" || ${MACHINE_ARCH} == "sparc64" + ${MACHINE_ARCH} == "ia64" || ${MACHINE_ARCH} == "powerpc" || \ + ${MACHINE_ARCH} == "sparc64" WERROR?= -Werror .endif .endif ==== //depot/projects/ethng/src/sys/dev/an/if_an.c#2 (text+ko) ==== @@ -38,7 +38,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/dev/an/if_an.c,v 1.82 2007/08/02 02:20:19 avatar Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/an/if_an.c,v 1.83 2007/08/07 12:26:19 avatar Exp $"); /* * The Aironet 4500/4800 series cards come in PCMCIA, ISA and PCI form. @@ -1065,8 +1065,10 @@ rx_frame.an_rsvd0); #endif #endif + AN_UNLOCK(sc); (*ifp->if_input)(ifp, m); - + AN_LOCK(sc); + an_rx_desc.an_valid = 1; an_rx_desc.an_len = AN_RX_BUFFER_SIZE; an_rx_desc.an_done = 0; ==== //depot/projects/ethng/src/sys/dev/usb/if_axe.c#2 (text+ko) ==== @@ -31,7 +31,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/dev/usb/if_axe.c,v 1.52 2007/06/30 20:08:08 imp Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/usb/if_axe.c,v 1.53 2007/08/09 04:40:07 imp Exp $"); /* * ASIX Electronics AX88172 USB 2.0 ethernet driver. Used in the @@ -468,7 +468,7 @@ /* * Get station address. */ - axe_cmd(sc, AXE_CMD_READ_NODEID, 0, 0, &eaddr); + axe_cmd(sc, AXE_172_CMD_READ_NODEID, 0, 0, &eaddr); /* * Load IPG values and PHY indexes. @@ -894,12 +894,12 @@ } /* Set transmitter IPG values */ - axe_cmd(sc, AXE_CMD_WRITE_IPG0, 0, sc->axe_ipgs[0], NULL); - axe_cmd(sc, AXE_CMD_WRITE_IPG1, 0, sc->axe_ipgs[1], NULL); - axe_cmd(sc, AXE_CMD_WRITE_IPG2, 0, sc->axe_ipgs[2], NULL); + axe_cmd(sc, AXE_172_CMD_WRITE_IPG0, 0, sc->axe_ipgs[0], NULL); + axe_cmd(sc, AXE_172_CMD_WRITE_IPG1, 0, sc->axe_ipgs[1], NULL); + axe_cmd(sc, AXE_172_CMD_WRITE_IPG2, 0, sc->axe_ipgs[2], NULL); /* Enable receiver, set RX mode */ - rxmode = AXE_RXCMD_UNICAST|AXE_RXCMD_MULTICAST|AXE_RXCMD_ENABLE; + rxmode = AXE_172_RXCMD_UNICAST|AXE_RXCMD_MULTICAST|AXE_RXCMD_ENABLE; /* If we want promiscuous mode, set the allframes bit. */ if (ifp->if_flags & IFF_PROMISC) ==== //depot/projects/ethng/src/sys/dev/usb/if_axereg.h#2 (text+ko) ==== @@ -29,7 +29,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/usb/if_axereg.h,v 1.13 2007/06/30 20:08:08 imp Exp $ + * $FreeBSD: src/sys/dev/usb/if_axereg.h,v 1.14 2007/08/09 04:40:07 imp Exp $ */ /* @@ -53,9 +53,11 @@ #define AXE_CMD_LEN(x) (((x) & 0xF000) >> 12) #define AXE_CMD_CMD(x) ((x) & 0x00FF) -#define AXE_CMD_READ_RXTX_SRAM 0x2002 -#define AXE_CMD_WRITE_RX_SRAM 0x0103 -#define AXE_CMD_WRITE_TX_SRAM 0x0104 +#define AXE_172_CMD_READ_RXTX_SRAM 0x2002 +#define AXE_182_CMD_READ_RXTX_SRAM 0x8002 +#define AXE_172_CMD_WRITE_RX_SRAM 0x0103 +#define AXE_172_CMD_WRITE_TX_SRAM 0x0104 +#define AXE_182_CMD_WRITE_RXTX_SRAM 0x8103 #define AXE_CMD_MII_OPMODE_SW 0x0106 #define AXE_CMD_MII_READ_REG 0x2007 #define AXE_CMD_MII_WRITE_REG 0x2108 @@ -68,35 +70,79 @@ #define AXE_CMD_RXCTL_READ 0x200F #define AXE_CMD_RXCTL_WRITE 0x0110 #define AXE_CMD_READ_IPG012 0x3011 -#define AXE_CMD_WRITE_IPG0 0x0112 -#define AXE_CMD_WRITE_IPG1 0x0113 -#define AXE_CMD_WRITE_IPG2 0x0114 +#define AXE_172_CMD_WRITE_IPG0 0x0112 +#define AXE_172_CMD_WRITE_IPG1 0x0113 +#define AXE_172_CMD_WRITE_IPG2 0x0114 +#define AXE_178_CMD_WRITE_IPG012 0x0112 #define AXE_CMD_READ_MCAST 0x8015 #define AXE_CMD_WRITE_MCAST 0x8116 -#define AXE_CMD_READ_NODEID 0x6017 -#define AXE_CMD_WRITE_NODEID 0x6118 +#define AXE_172_CMD_READ_NODEID 0x6017 +#define AXE_172_CMD_WRITE_NODEID 0x6118 +#define AXE_178_CMD_READ_NODEID 0x6013 +#define AXE_178_CMD_WRITE_NODEID 0x6114 #define AXE_CMD_READ_PHYID 0x2019 -#define AXE_CMD_READ_MEDIA 0x101A +#define AXE_172_CMD_READ_MEDIA 0x101A +#define AXE_178_CMD_READ_MEDIA 0x201A #define AXE_CMD_WRITE_MEDIA 0x011B #define AXE_CMD_READ_MONITOR_MODE 0x101C #define AXE_CMD_WRITE_MONITOR_MODE 0x011D #define AXE_CMD_READ_GPIO 0x101E #define AXE_CMD_WRITE_GPIO 0x011F +#define AXE_CMD_SW_RESET_REG 0x0120 +#define AXE_CMD_SW_PHY_STATUS 0x0021 +#define AXE_CMD_SW_PHY_SELECT 0x0122 + +#define AXE_SW_RESET_CLEAR 0x00 +#define AXE_SW_RESET_RR 0x01 +#define AXE_SW_RESET_RT 0x02 +#define AXE_SW_RESET_PRTE 0x04 >>> TRUNCATED FOR MAIL (1000 lines) <<<
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200708102115.l7ALFhwP037649>