PERFORCE change 86564 for review

Peter Wemm peter at FreeBSD.org
Wed Nov 9 17:38:18 PST 2005


http://perforce.freebsd.org/chv.cgi?CH=86564

Change 86564 by peter at peter_daintree on 2005/11/10 01:37:55

	IFC @86561

Affected files ...

.. //depot/projects/hammer/bin/ls/ls.1#22 integrate
.. //depot/projects/hammer/bin/ls/ls.c#15 integrate
.. //depot/projects/hammer/release/doc/share/misc/dev.archlist.txt#33 integrate
.. //depot/projects/hammer/share/examples/cvsup/ports-supfile#9 integrate
.. //depot/projects/hammer/share/man/man4/twa.4#4 integrate
.. //depot/projects/hammer/sys/alpha/alpha/pmap.c#46 integrate
.. //depot/projects/hammer/sys/amd64/amd64/pmap.c#128 integrate
.. //depot/projects/hammer/sys/conf/files#130 integrate
.. //depot/projects/hammer/sys/conf/files.i386#65 integrate
.. //depot/projects/hammer/sys/conf/options.i386#41 integrate
.. //depot/projects/hammer/sys/dev/em/if_em.c#51 integrate
.. //depot/projects/hammer/sys/dev/em/if_em.h#25 integrate
.. //depot/projects/hammer/sys/dev/em/if_em_hw.h#15 integrate
.. //depot/projects/hammer/sys/dev/em/if_em_osdep.h#10 integrate
.. //depot/projects/hammer/sys/dev/joy/joy.c#7 integrate
.. //depot/projects/hammer/sys/dev/pci/pci.c#50 integrate
.. //depot/projects/hammer/sys/dev/twa/tw_cl.h#2 integrate
.. //depot/projects/hammer/sys/dev/twa/tw_cl_externs.h#2 integrate
.. //depot/projects/hammer/sys/dev/twa/tw_cl_fwif.h#2 integrate
.. //depot/projects/hammer/sys/dev/twa/tw_cl_fwimg.c#2 integrate
.. //depot/projects/hammer/sys/dev/twa/tw_cl_init.c#2 integrate
.. //depot/projects/hammer/sys/dev/twa/tw_cl_intr.c#2 integrate
.. //depot/projects/hammer/sys/dev/twa/tw_cl_io.c#2 integrate
.. //depot/projects/hammer/sys/dev/twa/tw_cl_ioctl.h#2 integrate
.. //depot/projects/hammer/sys/dev/twa/tw_cl_misc.c#2 integrate
.. //depot/projects/hammer/sys/dev/twa/tw_cl_share.h#2 integrate
.. //depot/projects/hammer/sys/dev/twa/tw_osl.h#2 integrate
.. //depot/projects/hammer/sys/dev/twa/tw_osl_cam.c#5 integrate
.. //depot/projects/hammer/sys/dev/twa/tw_osl_freebsd.c#4 integrate
.. //depot/projects/hammer/sys/dev/twa/tw_osl_includes.h#3 integrate
.. //depot/projects/hammer/sys/dev/twa/tw_osl_inline.h#1 branch
.. //depot/projects/hammer/sys/dev/twa/tw_osl_share.h#4 integrate
.. //depot/projects/hammer/sys/fs/devfs/devfs_vnops.c#41 integrate
.. //depot/projects/hammer/sys/i386/conf/NOTES#79 integrate
.. //depot/projects/hammer/sys/i386/conf/PAE#17 integrate
.. //depot/projects/hammer/sys/i386/conf/XBOX#1 branch
.. //depot/projects/hammer/sys/i386/i386/machdep.c#65 integrate
.. //depot/projects/hammer/sys/i386/i386/pmap.c#75 integrate
.. //depot/projects/hammer/sys/i386/i386/vm_machdep.c#50 integrate
.. //depot/projects/hammer/sys/i386/include/xbox.h#1 branch
.. //depot/projects/hammer/sys/i386/isa/clock.c#29 integrate
.. //depot/projects/hammer/sys/i386/pci/pci_cfgreg.c#24 integrate
.. //depot/projects/hammer/sys/i386/xbox/pic16l.s#1 branch
.. //depot/projects/hammer/sys/i386/xbox/xbox.c#1 branch
.. //depot/projects/hammer/sys/i386/xbox/xboxfb.c#1 branch
.. //depot/projects/hammer/sys/ia64/ia64/pmap.c#49 integrate
.. //depot/projects/hammer/sys/kern/kern_descrip.c#52 integrate
.. //depot/projects/hammer/sys/kern/kern_sig.c#64 integrate
.. //depot/projects/hammer/sys/kern/subr_power.c#4 integrate
.. //depot/projects/hammer/sys/kern/subr_sleepqueue.c#18 integrate
.. //depot/projects/hammer/sys/kern/sys_process.c#34 integrate
.. //depot/projects/hammer/sys/kern/uipc_proto.c#4 integrate
.. //depot/projects/hammer/sys/kern/vfs_aio.c#37 integrate
.. //depot/projects/hammer/sys/kern/vfs_mount.c#59 integrate
.. //depot/projects/hammer/sys/kern/vfs_subr.c#96 integrate
.. //depot/projects/hammer/sys/modules/Makefile#90 integrate
.. //depot/projects/hammer/sys/modules/twa/Makefile#5 integrate
.. //depot/projects/hammer/sys/net/if_gre.c#29 integrate
.. //depot/projects/hammer/sys/net/if_stf.c#24 integrate
.. //depot/projects/hammer/sys/net/rtsock.c#28 integrate
.. //depot/projects/hammer/sys/netatalk/at_proto.c#4 integrate
.. //depot/projects/hammer/sys/netatm/atm_proto.c#6 integrate
.. //depot/projects/hammer/sys/netgraph/bluetooth/socket/ng_btsocket.c#12 integrate
.. //depot/projects/hammer/sys/netgraph/ng_ether.c#25 integrate
.. //depot/projects/hammer/sys/netgraph/ng_fec.c#18 integrate
.. //depot/projects/hammer/sys/netgraph/ng_socket.c#21 integrate
.. //depot/projects/hammer/sys/netinet/in_gif.c#13 integrate
.. //depot/projects/hammer/sys/netinet/in_proto.c#18 integrate
.. //depot/projects/hammer/sys/netinet/ip_divert.c#31 integrate
.. //depot/projects/hammer/sys/netinet/ip_mroute.c#29 integrate
.. //depot/projects/hammer/sys/netinet6/in6_proto.c#13 integrate
.. //depot/projects/hammer/sys/netipsec/keysock.c#9 integrate
.. //depot/projects/hammer/sys/netipx/ipx_proto.c#6 integrate
.. //depot/projects/hammer/sys/netkey/keysock.c#13 integrate
.. //depot/projects/hammer/sys/netnatm/natm_proto.c#11 integrate
.. //depot/projects/hammer/sys/pc98/conf/NOTES#53 integrate
.. //depot/projects/hammer/sys/powerpc/powerpc/pmap.c#40 delete
.. //depot/projects/hammer/sys/powerpc/powerpc/pmap_dispatch.c#2 integrate
.. //depot/projects/hammer/sys/sparc64/conf/GENERIC#42 integrate
.. //depot/projects/hammer/sys/sparc64/sparc64/pmap.c#37 integrate
.. //depot/projects/hammer/sys/vm/pmap.h#22 integrate
.. //depot/projects/hammer/sys/vm/vm_pageout.c#35 integrate
.. //depot/projects/hammer/tools/regression/sockets/unix_passfd/Makefile#1 branch
.. //depot/projects/hammer/tools/regression/sockets/unix_passfd/unix_passfd.c#1 branch
.. //depot/projects/hammer/usr.bin/netstat/if.c#12 integrate

Differences ...

==== //depot/projects/hammer/bin/ls/ls.1#22 (text+ko) ====

@@ -30,7 +30,7 @@
 .\" SUCH DAMAGE.
 .\"
 .\"     @(#)ls.1	8.7 (Berkeley) 7/29/94
-.\" $FreeBSD: src/bin/ls/ls.1,v 1.91 2005/09/06 20:14:39 rse Exp $
+.\" $FreeBSD: src/bin/ls/ls.1,v 1.92 2005/11/10 00:02:32 mux Exp $
 .\"
 .Dd September 6, 2005
 .Dt LS 1
@@ -40,7 +40,7 @@
 .Nd list directory contents
 .Sh SYNOPSIS
 .Nm
-.Op Fl ABCFGHLPRSTWZabcdfghiklmnopqrstuwx1
+.Op Fl ABCFGHILPRSTWZabcdfghiklmnopqrstuwx1
 .Op Ar
 .Sh DESCRIPTION
 For each operand that names a
@@ -73,6 +73,8 @@
 and
 .Pa .. .
 Always set for the super-user.
+.Fl I
+cancel this option.
 .It Fl B
 Force printing of non-printable characters (as defined by
 .Xr ctype 3
@@ -117,6 +119,12 @@
 or
 .Fl l
 options are specified.
+.It Fl I
+This option cancels the
+.Fl A
+option. Usually used by super-user when
+.Fl A
+is not necessary.
 .It Fl L
 If argument is a symbolic link, list the file or directory the link references
 rather than the link itself.

==== //depot/projects/hammer/bin/ls/ls.c#15 (text+ko) ====

@@ -42,7 +42,7 @@
 #endif /* not lint */
 #endif
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/bin/ls/ls.c,v 1.80 2005/06/03 11:05:58 dd Exp $");
+__FBSDID("$FreeBSD: src/bin/ls/ls.c,v 1.81 2005/11/10 00:02:32 mux Exp $");
 
 #include <sys/types.h>
 #include <sys/stat.h>
@@ -110,6 +110,8 @@
 static int f_kblocks;		/* print size in kilobytes */
 static int f_listdir;		/* list actual directory, not contents */
 static int f_listdot;		/* list files beginning with . */
+static int f_nolistdot;		/* don't list files beginning with . */
+static int f_forcelistdot;	/* force list files beginning with . */
        int f_longform;		/* long listing format */
        int f_nonprint;		/* show unprintables as ? */
 static int f_nosort;		/* don't sort output */
@@ -175,13 +177,9 @@
 			termwidth = atoi(p);
 	}
 
-	/* Root is -A automatically. */
-	if (!getuid())
-		f_listdot = 1;
-
 	fts_options = FTS_PHYSICAL;
  	while ((ch = getopt(argc, argv,
-	    "1ABCFGHLPRSTWZabcdfghiklmnopqrstuwx")) != -1) {
+	    "1ABCFGHILPRSTWZabcdfghiklmnopqrstuwx")) != -1) {
 		switch (ch) {
 		/*
 		 * The -1, -C, -x and -l options all override each other so
@@ -243,10 +241,14 @@
 			break;
 		case 'a':
 			fts_options |= FTS_SEEDOT;
-			/* FALLTHROUGH */
+			f_forcelistdot = 1;
+			break;
 		case 'A':
 			f_listdot = 1;
 			break;
+		case 'I':
+			f_nolistdot = 1;
+			break;
 		/* The -d option turns off the -R option. */
 		case 'd':
 			f_listdir = 1;
@@ -326,6 +328,10 @@
 	argc -= optind;
 	argv += optind;
 
+	/* Root is -A automatically. */
+	if (!getuid() && !f_nolistdot)
+		f_listdot = 1;
+
 	/* Enabling of colours is conditional on the environment. */
 	if (getenv("CLICOLOR") &&
 	    (isatty(STDOUT_FILENO) || getenv("CLICOLOR_FORCE")))
@@ -490,7 +496,8 @@
 			break;
 		case FTS_D:
 			if (p->fts_level != FTS_ROOTLEVEL &&
-			    p->fts_name[0] == '.' && !f_listdot)
+			    p->fts_name[0] == '.' && ((!f_listdot ||
+			    f_nolistdot) && !f_forcelistdot))
 				break;
 
 			/*
@@ -650,7 +657,8 @@
 			}
 		} else {
 			/* Only display dot file if -a/-A set. */
-			if (cur->fts_name[0] == '.' && !f_listdot) {
+			if (cur->fts_name[0] == '.' && ((!f_listdot ||
+			    f_nolistdot) && !f_forcelistdot)) {
 				cur->fts_number = NO_PRINT;
 				continue;
 			}

==== //depot/projects/hammer/release/doc/share/misc/dev.archlist.txt#33 (text+ko) ====

@@ -23,7 +23,7 @@
 # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 # SUCH DAMAGE.
 #
-# $FreeBSD: src/release/doc/share/misc/dev.archlist.txt,v 1.70 2005/10/25 04:32:42 brueffer Exp $
+# $FreeBSD: src/release/doc/share/misc/dev.archlist.txt,v 1.71 2005/11/09 22:05:41 brueffer Exp $
 #
 
 #
@@ -64,7 +64,6 @@
 de	i386,pc98,alpha,ia64,amd64
 dpt	i386,ia64,amd64
 ed	i386,pc98
-em	i386,pc98,alpha,ia64,amd64
 ep	i386,pc98,amd64
 esp	sparc64
 ex	i386,amd64

==== //depot/projects/hammer/share/examples/cvsup/ports-supfile#9 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/share/examples/cvsup/ports-supfile,v 1.33 2004/12/19 02:31:45 brueffer Exp $
+# $FreeBSD: src/share/examples/cvsup/ports-supfile,v 1.34 2005/11/09 10:14:07 pav Exp $
 #
 # This file contains all of the "CVSup collections" that make up the
 # FreeBSD-current ports collection.
@@ -110,6 +110,7 @@
 #ports-misc
 #ports-multimedia
 #ports-net
+#ports-net-im
 #ports-net-mgmt
 #ports-news
 #ports-palm

==== //depot/projects/hammer/share/man/man4/twa.4#4 (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/share/man/man4/twa.4,v 1.4 2005/02/27 13:14:28 brueffer Exp $
+.\" $FreeBSD: src/share/man/man4/twa.4,v 1.5 2005/11/09 00:23:54 vkashyap Exp $
 .\"
 .Dd August 15, 2004
 .Dt TWA 4
@@ -68,6 +68,16 @@
 AMCC's 3ware 9500S-12
 .It
 AMCC's 3ware 9500S-12MI
+.It
+AMCC's 3ware 9500SX-4LP
+.It
+AMCC's 3ware 9500SX-8LP
+.It
+AMCC's 3ware 9500SX-12
+.It
+AMCC's 3ware 9500SX-12MI
+.It
+AMCC's 3ware 9500SX-16ML
 .El
 .Sh DIAGNOSTICS
 Whenever the driver encounters a command failure, it prints out an error code in

==== //depot/projects/hammer/sys/alpha/alpha/pmap.c#46 (text+ko) ====

@@ -148,7 +148,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/alpha/alpha/pmap.c,v 1.183 2005/11/04 18:03:23 alc Exp $");
+__FBSDID("$FreeBSD: src/sys/alpha/alpha/pmap.c,v 1.184 2005/11/09 08:19:19 alc Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -317,11 +317,9 @@
  */
 static uma_zone_t pvzone;
 static int pv_entry_count = 0, pv_entry_max = 0, pv_entry_high_water = 0;
-int pmap_pagedaemon_waken;
 
 static PMAP_INLINE void	free_pv_entry(pv_entry_t pv);
-static pv_entry_t get_pv_entry(void);
-static pv_entry_t pv_entry_reclaim(pmap_t locked_pmap);
+static pv_entry_t get_pv_entry(pmap_t locked_pmap);
 static void	alpha_protection_init(void);
 static void	pmap_changebit(vm_page_t m, int bit, boolean_t setem);
 
@@ -1300,39 +1298,44 @@
 /*
  * get a new pv_entry, allocating a block from the system
  * when needed.
- * the memory allocation is performed bypassing the malloc code
- * because of the possibility of allocations at interrupt time.
  */
 static pv_entry_t
-get_pv_entry(void)
+get_pv_entry(pmap_t locked_pmap)
 {
-	pv_entry_count++;
-	if ((pv_entry_count > pv_entry_high_water) &&
-		(pmap_pagedaemon_waken == 0)) {
-		pmap_pagedaemon_waken = 1;
-		wakeup (&vm_pages_needed);
-	}
-	return uma_zalloc(pvzone, M_NOWAIT);
-}
-
-/*
- * Reclaim a pv entry by removing a mapping to an inactive page.
- */
-static pv_entry_t
-pv_entry_reclaim(pmap_t locked_pmap)
-{
+	static const struct timeval printinterval = { 60, 0 };
+	static struct timeval lastprint;
+	struct vpgqueues *vpq;
 	pmap_t pmap;
 	pt_entry_t *pte, tpte;
-	pv_entry_t pv;
+	pv_entry_t allocated_pv, next_pv, pv;
 	vm_offset_t va;
 	vm_page_t m;
 
 	PMAP_LOCK_ASSERT(locked_pmap, MA_OWNED);
 	mtx_assert(&vm_page_queue_mtx, MA_OWNED);
-	TAILQ_FOREACH(m, &vm_page_queues[PQ_INACTIVE].pl, pageq) {
+	allocated_pv = uma_zalloc(pvzone, M_NOWAIT);
+	if (allocated_pv != NULL) {
+		pv_entry_count++;
+		if (pv_entry_count > pv_entry_high_water)
+			pagedaemon_wakeup();
+		else
+			return (allocated_pv);
+	}
+
+	/*
+	 * Reclaim pv entries: At first, destroy mappings to inactive
+	 * pages.  After that, if a pv entry is still needed, destroy
+	 * mappings to active pages.
+	 */
+	if (ratecheck(&lastprint, &printinterval))
+		printf("Approaching the limit on PV entries, "
+		    "increase the vm.pmap.shpgperproc tunable.\n");
+	vpq = &vm_page_queues[PQ_INACTIVE];
+retry:
+	TAILQ_FOREACH(m, &vpq->pl, pageq) {
 		if (m->hold_count || m->busy || (m->flags & PG_BUSY))
 			continue;
-		TAILQ_FOREACH(pv, &m->md.pv_list, pv_list) {
+		TAILQ_FOREACH_SAFE(pv, &m->md.pv_list, pv_list, next_pv) {
 			va = pv->pv_va;
 			pmap = pv->pv_pmap;
 			if (pmap != locked_pmap && !PMAP_TRYLOCK(pmap))
@@ -1342,7 +1345,7 @@
 			tpte = *pte;
 			*pte = 0;
 			KASSERT((tpte & PG_W) == 0,
-			    ("pv_entry_reclaim: wired pte %#lx", tpte));
+			    ("get_pv_entry: wired pte %#lx", tpte));
 			if ((tpte & PG_FOR) == 0)
 				vm_page_flag_set(m, PG_REFERENCED);
 			if ((tpte & PG_FOW) == 0) {
@@ -1358,10 +1361,20 @@
 			pmap_unuse_pt(pmap, va, pv->pv_ptem);
 			if (pmap != locked_pmap)
 				PMAP_UNLOCK(pmap);
-			return (pv);
+			if (allocated_pv == NULL)
+				allocated_pv = pv;
+			else
+				free_pv_entry(pv);
+		}
+	}
+	if (allocated_pv == NULL) {
+		if (vpq == &vm_page_queues[PQ_INACTIVE]) {
+			vpq = &vm_page_queues[PQ_ACTIVE];
+			goto retry;
 		}
+		panic("get_pv_entry: increase the vm.pmap.shpgperproc tunable");
 	}
-	panic("pv_entry_reclaim: increase vm.pmap.shpgperproc");
+	return (allocated_pv);
 }
 
 static int
@@ -1408,9 +1421,7 @@
 {
 	pv_entry_t pv;
 
-	pv = get_pv_entry();
-	if (pv == NULL)
-		pv = pv_entry_reclaim(pmap);
+	pv = get_pv_entry(pmap);
 	pv->pv_va = va;
 	pv->pv_pmap = pmap;
 	pv->pv_ptem = mpte;

==== //depot/projects/hammer/sys/amd64/amd64/pmap.c#128 (text+ko) ====

@@ -77,7 +77,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.532 2005/11/04 18:03:23 alc Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.533 2005/11/09 08:19:19 alc Exp $");
 
 /*
  *	Manages physical address maps.
@@ -185,7 +185,6 @@
 static uma_zone_t pvzone;
 static struct vm_object pvzone_obj;
 static int pv_entry_count = 0, pv_entry_max = 0, pv_entry_high_water = 0;
-int pmap_pagedaemon_waken;
 
 /*
  * All those kernel PT submaps that BSD is so fond of
@@ -200,8 +199,7 @@
 static caddr_t crashdumpmap;
 
 static PMAP_INLINE void	free_pv_entry(pv_entry_t pv);
-static pv_entry_t get_pv_entry(void);
-static pv_entry_t pv_entry_reclaim(pmap_t locked_pmap);
+static pv_entry_t get_pv_entry(pmap_t locked_pmap);
 static void	pmap_clear_ptes(vm_page_t m, long bit);
 
 static int pmap_remove_pte(pmap_t pmap, pt_entry_t *ptq,
@@ -1428,40 +1426,45 @@
 /*
  * get a new pv_entry, allocating a block from the system
  * when needed.
- * the memory allocation is performed bypassing the malloc code
- * because of the possibility of allocations at interrupt time.
  */
 static pv_entry_t
-get_pv_entry(void)
+get_pv_entry(pmap_t locked_pmap)
 {
-	pv_entry_count++;
-	if ((pv_entry_count > pv_entry_high_water) &&
-		(pmap_pagedaemon_waken == 0)) {
-		pmap_pagedaemon_waken = 1;
-		wakeup (&vm_pages_needed);
-	}
-	return uma_zalloc(pvzone, M_NOWAIT);
-}
-
-/*
- * Reclaim a pv entry by removing a mapping to an inactive page.
- */
-static pv_entry_t
-pv_entry_reclaim(pmap_t locked_pmap)
-{
+	static const struct timeval printinterval = { 60, 0 };
+	static struct timeval lastprint;
+	struct vpgqueues *vpq;
 	pd_entry_t ptepde;
 	pmap_t pmap;
 	pt_entry_t *pte, tpte;
-	pv_entry_t pv;
+	pv_entry_t allocated_pv, next_pv, pv;
 	vm_offset_t va;
 	vm_page_t m;
 
 	PMAP_LOCK_ASSERT(locked_pmap, MA_OWNED);
 	mtx_assert(&vm_page_queue_mtx, MA_OWNED);
-	TAILQ_FOREACH(m, &vm_page_queues[PQ_INACTIVE].pl, pageq) {
+	allocated_pv = uma_zalloc(pvzone, M_NOWAIT);
+	if (allocated_pv != NULL) {
+		pv_entry_count++;
+		if (pv_entry_count > pv_entry_high_water)
+			pagedaemon_wakeup();
+		else
+			return (allocated_pv);
+	}
+
+	/*
+	 * Reclaim pv entries: At first, destroy mappings to inactive
+	 * pages.  After that, if a pv entry is still needed, destroy
+	 * mappings to active pages.
+	 */
+	if (ratecheck(&lastprint, &printinterval))
+		printf("Approaching the limit on PV entries, "
+		    "increase the vm.pmap.shpgperproc tunable.\n");
+	vpq = &vm_page_queues[PQ_INACTIVE];
+retry:
+	TAILQ_FOREACH(m, &vpq->pl, pageq) {
 		if (m->hold_count || m->busy || (m->flags & PG_BUSY))
 			continue;
-		TAILQ_FOREACH(pv, &m->md.pv_list, pv_list) {
+		TAILQ_FOREACH_SAFE(pv, &m->md.pv_list, pv_list, next_pv) {
 			va = pv->pv_va;
 			pmap = pv->pv_pmap;
 			if (pmap != locked_pmap && !PMAP_TRYLOCK(pmap))
@@ -1470,12 +1473,12 @@
 			pte = pmap_pte_pde(pmap, va, &ptepde);
 			tpte = pte_load_clear(pte);
 			KASSERT((tpte & PG_W) == 0,
-			    ("pv_entry_reclaim: wired pte %#lx", tpte));
+			    ("get_pv_entry: wired pte %#lx", tpte));
 			if (tpte & PG_A)
 				vm_page_flag_set(m, PG_REFERENCED);
 			if (tpte & PG_M) {
 				KASSERT((tpte & PG_RW),
-	("pv_entry_reclaim: modified page not writable: va: %#lx, pte: %#lx",
+	("get_pv_entry: modified page not writable: va: %#lx, pte: %#lx",
 				    va, tpte));
 				if (pmap_track_modified(va))
 					vm_page_dirty(m);
@@ -1489,10 +1492,20 @@
 			pmap_unuse_pt(pmap, va, ptepde);
 			if (pmap != locked_pmap)
 				PMAP_UNLOCK(pmap);
-			return (pv);
+			if (allocated_pv == NULL)
+				allocated_pv = pv;
+			else
+				free_pv_entry(pv);
 		}
 	}
-	panic("pv_entry_reclaim: increase vm.pmap.shpgperproc");
+	if (allocated_pv == NULL) {
+		if (vpq == &vm_page_queues[PQ_INACTIVE]) {
+			vpq = &vm_page_queues[PQ_ACTIVE];
+			goto retry;
+		}
+		panic("get_pv_entry: increase the vm.pmap.shpgperproc tunable");
+	}
+	return (allocated_pv);
 }
 
 static void
@@ -1531,11 +1544,7 @@
 {
 	pv_entry_t pv;
 
-	pv = get_pv_entry();
-	if (pv == NULL) {
-		pv_entry_count--;
-		pv = pv_entry_reclaim(pmap);
-	}
+	pv = get_pv_entry(pmap);
 	pv->pv_va = va;
 	pv->pv_pmap = pmap;
 

==== //depot/projects/hammer/sys/conf/files#130 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/files,v 1.1063 2005/11/01 22:44:07 jkim Exp $
+# $FreeBSD: src/sys/conf/files,v 1.1064 2005/11/08 22:51:42 vkashyap Exp $
 #
 # The long compile-with and dependency lines are required because of
 # limitations in config: backslash-newline doesn't work in strings, and
@@ -937,8 +937,10 @@
 	compile-with "${NORMAL_C} -I$S/dev/twa"
 dev/twa/tw_cl_misc.c		optional twa \
 	compile-with "${NORMAL_C} -I$S/dev/twa"
-dev/twa/tw_osl_cam.c		optional twa
-dev/twa/tw_osl_freebsd.c	optional twa
+dev/twa/tw_osl_cam.c		optional twa \
+	compile-with "${NORMAL_C} -I$S/dev/twa"
+dev/twa/tw_osl_freebsd.c	optional twa \
+	compile-with "${NORMAL_C} -I$S/dev/twa"
 dev/twe/twe.c			optional twe
 dev/twe/twe_freebsd.c		optional twe
 dev/tx/if_tx.c			optional tx

==== //depot/projects/hammer/sys/conf/files.i386#65 (text+ko) ====

@@ -1,7 +1,7 @@
 # This file tells config what files go into building a kernel,
 # files marked standard are always included.
 #
-# $FreeBSD: src/sys/conf/files.i386,v 1.542 2005/10/28 15:58:18 joerg Exp $
+# $FreeBSD: src/sys/conf/files.i386,v 1.543 2005/11/09 03:55:39 imp Exp $
 #
 # The long compile-with and dependency lines are required because of
 # limitations in config: backslash-newline doesn't work in strings, and
@@ -462,3 +462,7 @@
 pci/agp_nvidia.c		optional agp
 pci/agp_sis.c			optional agp
 pci/agp_via.c			optional agp
+i386/xbox/xbox.c		optional	xbox
+i386/xbox/xboxfb.c		optional	xboxfb
+dev/fb/boot_font.c		optional	xboxfb
+i386/xbox/pic16l.s		optional	xbox

==== //depot/projects/hammer/sys/conf/options.i386#41 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/options.i386,v 1.226 2005/10/24 21:04:18 jhb Exp $
+# $FreeBSD: src/sys/conf/options.i386,v 1.227 2005/11/09 03:55:39 imp Exp $
 # Options specific to the i386 platform kernels
 
 AUTO_EOI_1		opt_auto_eoi.h
@@ -163,3 +163,6 @@
 # Debugging
 STOP_NMI		opt_cpu.h
 NPX_DEBUG		opt_npx.h
+
+# XBOX support in the kernel
+XBOX			opt_xbox.h

==== //depot/projects/hammer/sys/dev/em/if_em.c#51 (text+ko) ====

@@ -31,7 +31,7 @@
 
 ***************************************************************************/
 
-/*$FreeBSD: src/sys/dev/em/if_em.c,v 1.82 2005/10/31 19:59:40 rwatson Exp $*/
+/*$FreeBSD: src/sys/dev/em/if_em.c,v 1.84 2005/11/09 15:23:54 glebius Exp $*/
 
 #ifdef HAVE_KERNEL_OPTION_HEADERS
 #include "opt_device_polling.h"
@@ -187,7 +187,7 @@
 static int  em_is_valid_ether_addr(u_int8_t *);
 static int  em_sysctl_stats(SYSCTL_HANDLER_ARGS);
 static int  em_sysctl_debug_info(SYSCTL_HANDLER_ARGS);
-static u_int32_t em_fill_descriptors (u_int64_t address, 
+static u_int32_t em_fill_descriptors (bus_addr_t address, 
 				      u_int32_t length, 
 				      PDESC_ARRAY desc_array);
 static int  em_sysctl_int_delay(SYSCTL_HANDLER_ARGS);
@@ -663,6 +663,17 @@
 		break;
 	case SIOCSIFMTU:
 		IOCTL_DEBUGOUT("ioctl rcv'd: SIOCSIFMTU (Set Interface MTU)");
+#ifndef __NO_STRICT_ALIGNMENT
+		if (ifr->ifr_mtu > ETHERMTU) {
+			/*
+			 * XXX
+			 * Due to the limitation of DMA engine, it needs fix-up
+			 * code for strict alignment architectures. Disable
+			 * jumbo frame until we have better solutions.
+			 */
+			error = EINVAL;
+		} else
+#endif
 		if (ifr->ifr_mtu > MAX_JUMBO_FRAME_SIZE - ETHER_HDR_LEN || \
 			/* 82573 does not support jumbo frames */
 			(adapter->hw.mac_type == em_82573 && ifr->ifr_mtu > ETHERMTU) ) {
@@ -785,7 +796,7 @@
 		printf("em%d: watchdog timeout -- resetting\n", adapter->unit);
 
 	ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
-	ifp->if_oerrors++;
+	adapter->watchdog_events++;
 
 	em_init_locked(adapter);
 	EM_UNLOCK(adapter);
@@ -1008,7 +1019,7 @@
 		}
 
 		if (reg_icr & E1000_ICR_RXO) {
-			log(LOG_WARNING, "%s: RX overrun\n", ifp->if_xname);
+			adapter->rx_overruns++;
 			wantinit = 1;
 		}
 	}
@@ -1158,7 +1169,6 @@
         u_int32_t       txd_upper;
         u_int32_t       txd_lower, txd_used = 0, txd_saved = 0;
         int             i, j, error;
-        u_int64_t       address;
 
 	struct mbuf	*m_head;
 
@@ -1268,15 +1278,12 @@
         for (j = 0; j < nsegs; j++) {
 		/* If adapter is 82544 and on PCIX bus */
 		if(adapter->pcix_82544) {
-			array_elements = 0;
-			address = htole64(segs[j].ds_addr);
 			/* 
 			 * Check the Address and Length combination and 
 			 * split the data accordingly 
 			 */
-                        array_elements = em_fill_descriptors(address,
-							     htole32(segs[j].ds_len),
-							     &desc_array);
+                        array_elements = em_fill_descriptors(segs[j].ds_addr,
+			    segs[j].ds_len, &desc_array);
 			for (counter = 0; counter < array_elements; counter++) {
                                 if (txd_used == adapter->num_tx_desc_avail) {
                                          adapter->next_avail_tx_desc = txd_saved;
@@ -1740,10 +1747,10 @@
 static int
 em_allocate_pci_resources(struct adapter * adapter)
 {
-	int             i, val, rid;
+	int             val, rid;
 	device_t        dev = adapter->dev;
 
-	rid = EM_MMBA;
+	rid = PCIR_BAR(0);
 	adapter->res_memory = bus_alloc_resource_any(dev, SYS_RES_MEMORY,
 						     &rid, RF_ACTIVE);
 	if (!(adapter->res_memory)) {
@@ -1760,16 +1767,21 @@
 
 	if (adapter->hw.mac_type > em_82543) {
 		/* Figure our where our IO BAR is ? */
-		rid = EM_MMBA;
-		for (i = 0; i < 5; i++) {
+		for (rid = PCIR_BAR(0); rid < PCIR_CIS;) {
 			val = pci_read_config(dev, rid, 4);
-			if (val & 0x00000001) {
+			if (E1000_BAR_TYPE(val) == E1000_BAR_TYPE_IO) {
 				adapter->io_rid = rid;
 				break;
 			}
 			rid += 4;
+			/* check for 64bit BAR */
+			if (E1000_BAR_MEM_TYPE(val) == E1000_BAR_MEM_TYPE_64BIT)
+				rid += 4;
 		}
-
+		if (rid >= PCIR_CIS) {
+			printf("em%d: Unable to locate IO BAR\n", adapter->unit);
+			return (ENXIO);
+		}
 		adapter->res_ioport = bus_alloc_resource_any(dev, 
 							     SYS_RES_IOPORT,
 							     &adapter->io_rid,
@@ -1779,9 +1791,11 @@
 			       adapter->unit);
 			return(ENXIO);  
 		}
-
-		adapter->hw.io_base =
-		rman_get_start(adapter->res_ioport);
+		adapter->hw.io_base = 0;
+		adapter->osdep.io_bus_space_tag =
+		    rman_get_bustag(adapter->res_ioport);
+		adapter->osdep.io_bus_space_handle =
+		    rman_get_bushandle(adapter->res_ioport);
 	}
 
 	rid = 0x0;
@@ -1819,7 +1833,7 @@
 				     adapter->res_interrupt);
 	}
 	if (adapter->res_memory != NULL) {
-		bus_release_resource(dev, SYS_RES_MEMORY, EM_MMBA, 
+		bus_release_resource(dev, SYS_RES_MEMORY, PCIR_BAR(0), 
 				     adapter->res_memory);
 	}
 
@@ -2068,12 +2082,13 @@
                 goto fail_2;
         }
 
+	dma->dma_paddr = 0;
         r = bus_dmamap_load(dma->dma_tag, dma->dma_map, dma->dma_vaddr,
                             size,
                             em_dmamap_cb,
                             &dma->dma_paddr,
                             mapflags | BUS_DMA_NOWAIT);
-        if (r != 0) {
+        if (r != 0 || dma->dma_paddr == 0) {
                 printf("em%d: em_dma_malloc: bus_dmamap_load failed; "
                         "error %u\n", adapter->unit, r);
                 goto fail_3;
@@ -2475,10 +2490,11 @@
          * Using memory from the mbuf cluster pool, invoke the
          * bus_dma machinery to arrange the memory mapping.
          */
+	paddr = 0;
         error = bus_dmamap_load(adapter->rxtag, rx_buffer->map,
                                 mtod(mp, void *), mp->m_len,
                                 em_dmamap_cb, &paddr, 0);
-        if (error) {
+        if (error || paddr == 0) {
                 m_free(mp);
                 return(error);
         }
@@ -2750,7 +2766,7 @@
 		    (count != 0) &&
 		    (ifp->if_drv_flags & IFF_DRV_RUNNING)) {
 		struct mbuf *m = NULL;
-		
+
 		mp = adapter->rx_buffer_area[i].m_head;
 		bus_dmamap_sync(adapter->rxtag, adapter->rx_buffer_area[i].map,
 				BUS_DMASYNC_POSTREAD);
@@ -2837,10 +2853,10 @@
                                 em_receive_checksum(adapter, current_desc,
                                                     adapter->fmp);
                                 if (current_desc->status & E1000_RXD_STAT_VP)
-                                        VLAN_INPUT_TAG(ifp, adapter->fmp,
-                                                       (current_desc->special &
-							E1000_RXD_SPC_VLAN_MASK),
-						       adapter->fmp = NULL);
+					VLAN_INPUT_TAG(ifp, adapter->fmp,
+					    (le16toh(current_desc->special) &
+					    E1000_RXD_SPC_VLAN_MASK),
+					    adapter->fmp = NULL);
 
 				m = adapter->fmp;
 				adapter->fmp = NULL;
@@ -3025,19 +3041,6 @@
         return;
 }
 
-uint32_t 
-em_io_read(struct em_hw *hw, unsigned long port)
-{
-	return(inl(port));
-}
-
-void 
-em_io_write(struct em_hw *hw, unsigned long port, uint32_t value)
-{
-	outl(port, value);
-	return;
-}
-
 /*********************************************************************
 * 82544 Coexistence issue workaround.
 *    There are 2 issues.
@@ -3057,7 +3060,7 @@
 *
 *** *********************************************************************/
 static u_int32_t
-em_fill_descriptors (u_int64_t address,
+em_fill_descriptors (bus_addr_t address,
                               u_int32_t length,
                               PDESC_ARRAY desc_array)
 {
@@ -3190,7 +3193,8 @@
 	adapter->stats.mpc + adapter->stats.cexterr;
 
 	/* Tx Errors */
-	ifp->if_oerrors = adapter->stats.ecol + adapter->stats.latecol;
+	ifp->if_oerrors = adapter->stats.ecol + adapter->stats.latecol +
+	    adapter->watchdog_events;
 
 }
 
@@ -3269,6 +3273,9 @@
                (long long)adapter->stats.algnerrc);
         printf("em%d: Carrier extension errors = %lld\n", unit,
                (long long)adapter->stats.cexterr);
+	printf("em%d: RX overruns = %ld\n", unit, adapter->rx_overruns);
+	printf("em%d: watchdog timeouts = %ld\n", unit,
+		adapter->watchdog_events);
 
         printf("em%d: XON Rcvd = %lld\n", unit,
                (long long)adapter->stats.xonrxc);

==== //depot/projects/hammer/sys/dev/em/if_em.h#25 (text+ko) ====

@@ -31,7 +31,7 @@
 
 ***************************************************************************/
 
-/*$FreeBSD: src/sys/dev/em/if_em.h,v 1.35 2005/10/20 09:55:49 glebius Exp $*/
+/*$FreeBSD: src/sys/dev/em/if_em.h,v 1.37 2005/11/09 15:23:54 glebius Exp $*/
 
 #ifndef _EM_H_DEFINED_
 #define _EM_H_DEFINED_
@@ -39,23 +39,27 @@
 
 #include <sys/param.h>
 #include <sys/systm.h>
+#include <sys/bus.h>
+#include <sys/endian.h>
+#include <sys/kernel.h>
 #include <sys/mbuf.h>
-#include <sys/protosw.h>
-#include <sys/socket.h>
 #include <sys/malloc.h>
-#include <sys/kernel.h>
 #include <sys/module.h>
+#include <sys/socket.h>
 #include <sys/sockio.h>
 #include <sys/sysctl.h>
-#include <sys/syslog.h>
+
+#include <machine/bus.h>
+#include <sys/rman.h>
+#include <machine/resource.h>
 
+#include <net/bpf.h>
+#include <net/ethernet.h>
 #include <net/if.h>
 #include <net/if_arp.h>
-#include <net/ethernet.h>
 #include <net/if_dl.h>
 #include <net/if_media.h>
 
-#include <net/bpf.h>
 #include <net/if_types.h>
 #include <net/if_vlan_var.h>
 
@@ -65,17 +69,8 @@
 #include <netinet/tcp.h>
 #include <netinet/udp.h>
 
-#include <sys/bus.h>
-#include <machine/bus.h>
-#include <sys/rman.h>
-#include <machine/resource.h>
-#include <vm/vm.h>
-#include <vm/pmap.h>
-#include <machine/clock.h>
 #include <dev/pci/pcivar.h>
 #include <dev/pci/pcireg.h>
-#include <sys/endian.h>
-#include <sys/proc.h>
 
 #include <dev/em/if_em_hw.h>
 
@@ -391,6 +386,8 @@
 	unsigned long   no_tx_desc_avail2;
 	unsigned long   no_tx_map_avail;
         unsigned long   no_tx_dma_setup;
+	unsigned long	watchdog_events;
+	unsigned long	rx_overruns;
 
 	/* Used in for 82547 10Mb Half workaround */
 	#define EM_PBA_BYTES_SHIFT	0xA

==== //depot/projects/hammer/sys/dev/em/if_em_hw.h#15 (text+ko) ====

@@ -31,7 +31,7 @@
 
 *******************************************************************************/
 
-/*$FreeBSD: src/sys/dev/em/if_em_hw.h,v 1.16 2005/10/20 08:46:43 glebius Exp $*/
+/*$FreeBSD: src/sys/dev/em/if_em_hw.h,v 1.17 2005/11/09 08:43:18 yongari Exp $*/
 /* if_em_hw.h
  * Structures, enums, and macros for the MAC
  */
@@ -425,9 +425,7 @@
 void em_read_pci_cfg(struct em_hw *hw, uint32_t reg, uint16_t * value);
 void em_write_pci_cfg(struct em_hw *hw, uint32_t reg, uint16_t * value);
 /* Port I/O is only supported on 82544 and newer */
-uint32_t em_io_read(struct em_hw *hw, unsigned long port);
 uint32_t em_read_reg_io(struct em_hw *hw, uint32_t offset);
-void em_io_write(struct em_hw *hw, unsigned long port, uint32_t value);
 void em_write_reg_io(struct em_hw *hw, uint32_t offset, uint32_t value);
 int32_t em_config_dsp_after_link_change(struct em_hw *hw, boolean_t link_up);
 int32_t em_set_d3_lplu_state(struct em_hw *hw, boolean_t active);
@@ -445,6 +443,15 @@
 int32_t em_commit_shadow_ram(struct em_hw *hw);
 uint8_t em_arc_subsystem_valid(struct em_hw *hw);
 
+#define E1000_BAR_TYPE(v)		((v) & E1000_BAR_TYPE_MASK)
+#define E1000_BAR_TYPE_MASK		0x00000001
+#define E1000_BAR_TYPE_MEM		0x00000000
+#define E1000_BAR_TYPE_IO		0x00000001
+#define E1000_BAR_MEM_TYPE(v)		((v) & E1000_BAR_MEM_TYPE_MASK)
+#define E1000_BAR_MEM_TYPE_MASK		0x00000006
+#define E1000_BAR_MEM_TYPE_32BIT	0x00000000
+#define E1000_BAR_MEM_TYPE_64BIT	0x00000004
+
 #define E1000_READ_REG_IO(a, reg) \
     em_read_reg_io((a), E1000_##reg)
 #define E1000_WRITE_REG_IO(a, reg, val) \

==== //depot/projects/hammer/sys/dev/em/if_em_osdep.h#10 (text+ko) ====

@@ -31,33 +31,25 @@
 
 ***************************************************************************/
 
-/*$FreeBSD: src/sys/dev/em/if_em_osdep.h,v 1.14 2005/05/26 23:32:02 tackerman Exp $*/
+/*$FreeBSD: src/sys/dev/em/if_em_osdep.h,v 1.15 2005/11/09 08:43:18 yongari Exp $*/
 
 #ifndef _FREEBSD_OS_H_
 #define _FREEBSD_OS_H_
 
 #include <sys/types.h>
-#include <sys/param.h>
 #include <sys/systm.h>
+#include <sys/bus.h>

>>> TRUNCATED FOR MAIL (1000 lines) <<<


More information about the p4-projects mailing list