PERFORCE change 99150 for review

John Baldwin jhb at FreeBSD.org
Tue Jun 13 18:17:11 UTC 2006


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

Change 99150 by jhb at jhb_mutex on 2006/06/13 18:13:54

	IFC @99141.

Affected files ...

.. //depot/projects/smpng/sys/amd64/amd64/pmap.c#58 integrate
.. //depot/projects/smpng/sys/amd64/conf/GENERIC#46 integrate
.. //depot/projects/smpng/sys/amd64/conf/NOTES#32 integrate
.. //depot/projects/smpng/sys/arm/arm/elf_trampoline.c#6 integrate
.. //depot/projects/smpng/sys/arm/arm/inckern.S#3 integrate
.. //depot/projects/smpng/sys/arm/at91/kb920x_machdep.c#4 integrate
.. //depot/projects/smpng/sys/compat/ndis/winx32_wrap.S#5 integrate
.. //depot/projects/smpng/sys/conf/Makefile.arm#21 integrate
.. //depot/projects/smpng/sys/conf/NOTES#120 integrate
.. //depot/projects/smpng/sys/conf/files#176 integrate
.. //depot/projects/smpng/sys/conf/kern.post.mk#54 integrate
.. //depot/projects/smpng/sys/conf/options#121 integrate
.. //depot/projects/smpng/sys/dev/mfi/mfi.c#5 integrate
.. //depot/projects/smpng/sys/dev/mxge/eth_z8e.dat.gz.uu#1 branch
.. //depot/projects/smpng/sys/dev/mxge/ethp_z8e.dat.gz.uu#1 branch
.. //depot/projects/smpng/sys/dev/mxge/if_mxge.c#1 branch
.. //depot/projects/smpng/sys/dev/mxge/if_mxge_var.h#1 branch
.. //depot/projects/smpng/sys/dev/mxge/mcp_gen_header.h#1 branch
.. //depot/projects/smpng/sys/dev/mxge/mxge_mcp.h#1 branch
.. //depot/projects/smpng/sys/i386/conf/DEFAULTS#6 integrate
.. //depot/projects/smpng/sys/i386/conf/GENERIC#76 integrate
.. //depot/projects/smpng/sys/i386/conf/NOTES#121 integrate
.. //depot/projects/smpng/sys/i386/i386/pmap.c#97 integrate
.. //depot/projects/smpng/sys/isa/isa_common.c#19 integrate
.. //depot/projects/smpng/sys/kern/kern_clock.c#50 integrate
.. //depot/projects/smpng/sys/kern/kern_event.c#47 integrate
.. //depot/projects/smpng/sys/kern/kern_switch.c#64 integrate
.. //depot/projects/smpng/sys/kern/sched_4bsd.c#57 integrate
.. //depot/projects/smpng/sys/kern/sched_core.c#1 branch
.. //depot/projects/smpng/sys/kern/sched_ule.c#66 integrate
.. //depot/projects/smpng/sys/kern/uipc_usrreq.c#58 integrate
.. //depot/projects/smpng/sys/modules/Makefile#123 integrate
.. //depot/projects/smpng/sys/modules/mxge/Makefile#1 branch
.. //depot/projects/smpng/sys/modules/mxge/mxge/Makefile#1 branch
.. //depot/projects/smpng/sys/modules/mxge/mxge_eth_z8e/Makefile#1 branch
.. //depot/projects/smpng/sys/modules/mxge/mxge_ethp_z8e/Makefile#1 branch
.. //depot/projects/smpng/sys/net/if_bridge.c#29 integrate
.. //depot/projects/smpng/sys/pc98/conf/DEFAULTS#6 integrate
.. //depot/projects/smpng/sys/pc98/conf/NOTES#56 integrate
.. //depot/projects/smpng/sys/powerpc/conf/DEFAULTS#4 integrate
.. //depot/projects/smpng/sys/sys/sched.h#20 integrate

Differences ...

==== //depot/projects/smpng/sys/amd64/amd64/pmap.c#58 (text+ko) ====

@@ -77,7 +77,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.555 2006/06/05 20:35:25 alc Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.556 2006/06/12 20:05:27 alc Exp $");
 
 /*
  *	Manages physical address maps.
@@ -1006,17 +1006,22 @@
  * Note: SMP coherent.  Uses a ranged shootdown IPI.
  */
 void
-pmap_qenter(vm_offset_t sva, vm_page_t *m, int count)
+pmap_qenter(vm_offset_t sva, vm_page_t *ma, int count)
 {
-	vm_offset_t va;
+	pt_entry_t *endpte, oldpte, *pte;
 
-	va = sva;
-	while (count-- > 0) {
-		pmap_kenter(va, VM_PAGE_TO_PHYS(*m));
-		va += PAGE_SIZE;
-		m++;
+	oldpte = 0;
+	pte = vtopte(sva);
+	endpte = pte + count;
+	while (pte < endpte) {
+		oldpte |= *pte;
+		pte_store(pte, VM_PAGE_TO_PHYS(*ma) | PG_G | PG_RW | PG_V);
+		pte++;
+		ma++;
 	}
-	pmap_invalidate_range(kernel_pmap, sva, va);
+	if ((oldpte & PG_V) != 0)
+		pmap_invalidate_range(kernel_pmap, sva, sva + count *
+		    PAGE_SIZE);
 }
 
 /*

==== //depot/projects/smpng/sys/amd64/conf/GENERIC#46 (text+ko) ====

@@ -16,7 +16,7 @@
 # If you are in doubt as to the purpose or necessity of a line, check first
 # in NOTES.
 #
-# $FreeBSD: src/sys/amd64/conf/GENERIC,v 1.458 2006/05/17 20:45:44 marius Exp $
+# $FreeBSD: src/sys/amd64/conf/GENERIC,v 1.459 2006/06/13 13:12:56 davidxu Exp $
 
 cpu		HAMMER
 ident		GENERIC
@@ -28,6 +28,7 @@
 
 #options 	SCHED_ULE		# ULE scheduler
 options 	SCHED_4BSD		# 4BSD scheduler
+#options 	SCHED_CORE		# CORE scheduler
 options 	PREEMPTION		# Enable kernel thread preemption
 options 	INET			# InterNETworking
 options 	INET6			# IPv6 communications protocols

==== //depot/projects/smpng/sys/amd64/conf/NOTES#32 (text+ko) ====

@@ -4,7 +4,7 @@
 # This file contains machine dependent kernel configuration notes.  For
 # machine independent notes, look in /sys/conf/NOTES.
 #
-# $FreeBSD: src/sys/amd64/conf/NOTES,v 1.55 2006/05/14 18:49:24 marius Exp $
+# $FreeBSD: src/sys/amd64/conf/NOTES,v 1.56 2006/06/12 20:38:17 jhb Exp $
 #
 
 #

==== //depot/projects/smpng/sys/arm/arm/elf_trampoline.c#6 (text+ko) ====

@@ -23,7 +23,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/arm/elf_trampoline.c,v 1.6 2006/05/30 21:13:47 cognet Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/arm/elf_trampoline.c,v 1.7 2006/06/12 22:58:50 cognet Exp $");
 #include <machine/asm.h>
 #include <sys/types.h>
 #include <sys/elf32.h>
@@ -32,6 +32,7 @@
 #include <machine/elf.h>
 #include <machine/pte.h>
 #include <machine/cpufunc.h>
+#include <machine/armreg.h>
 
 #include <stdlib.h>
 
@@ -41,6 +42,8 @@
 extern char kernel_start[];
 extern char kernel_end[];
 
+extern void *_end;
+
 void __start(void);
 
 #define GZ_HEAD	0xa
@@ -50,7 +53,7 @@
 #elif defined(CPU_ARM8)
 #define cpu_idcache_wbinv_all	arm8_cache_purgeID
 #elif defined(CPU_ARM9)
-#define cpu_idcache_wbinv_all	arm9_dcache_wbinv_all
+#define cpu_idcache_wbinv_all	arm9_idcache_wbinv_all
 #elif defined(CPU_ARM10)
 #define cpu_idcache_wbinv_all	arm10_idcache_wbinv_all
 #elif defined(CPU_SA110) || defined(CPU_SA1110) || defined(CPU_SA1100) || \
@@ -60,8 +63,35 @@
     defined(CPU_XSCALE_PXA2X0) || defined(CPU_XSCALE_IXP425)
 #define cpu_idcache_wbinv_all	xscale_cache_purgeID
 #endif
-int arm_pdcache_line_size = 32;
+
+#ifdef KZIP
+int     arm_picache_size;
+int     arm_picache_line_size;
+int     arm_picache_ways;
+
+int     arm_pdcache_size;       /* and unified */
+int     arm_pdcache_line_size = 32;
+int     arm_pdcache_ways;
+
+int     arm_pcache_type;
+int     arm_pcache_unified;
+
+int     arm_dcache_align;
+int     arm_dcache_align_mask;
+
+/* Additional cache information local to this file.  Log2 of some of the
+      above numbers.  */
+static int      arm_dcache_l2_nsets;
+static int      arm_dcache_l2_assoc;
+static int      arm_dcache_l2_linesize;
+
+
 int block_userspace_access = 0;
+extern int arm9_dcache_sets_inc;
+extern int arm9_dcache_sets_max;
+extern int arm9_dcache_index_max;
+extern int arm9_dcache_index_inc;
+#endif
 
 static __inline void *
 memcpy(void *dst, const void *src, int len)
@@ -107,13 +137,18 @@
 {
 	int physaddr = KERNPHYSADDR;
 	int tmp1;
+	unsigned int sp = (unsigned int)&_end;
+#ifdef KZIP
+	sp += KERNSIZE + 0x100;
+	sp &= ~(L1_TABLE_SIZE - 1);
+	sp += 2 * L1_TABLE_SIZE;
+#endif
+	sp += 1024 * 1024; /* Should be enough for a stack */
 	
 	__asm __volatile("adr %0, 2f\n"
 	    		 "bic %0, %0, #0xff000000\n"
-			 "bic sp, sp, #0xff000000\n"
 			 "and %1, %1, #0xff000000\n"
 			 "orr %0, %0, %1\n"
-			 "orr sp, sp, %1\n"
 			 "mrc p15, 0, %1, c1, c0, 0\n"
 			 "bic %1, %1, #1\n" /* Disable MMU */
 			 "orr %1, %1, #(4 | 8)\n" /* Add DC enable, 
@@ -127,11 +162,92 @@
 			 "nop\n"
 			 "mov pc, %0\n"
 			 "2: nop\n"
-			 : "=r" (tmp1), "+r" (physaddr));
+			 "mov sp, %2\n"
+			 : "=r" (tmp1), "+r" (physaddr), "+r" (sp));
 	__start();
 }
 
 #ifdef KZIP
+static void
+get_cachetype_cp15()
+{
+	u_int ctype, isize, dsize;
+	u_int multiplier;
+
+	__asm __volatile("mrc p15, 0, %0, c0, c0, 1"
+	    : "=r" (ctype));
+	
+	/*
+	 * ...and thus spake the ARM ARM:
+	 *
+ 	 * If an <opcode2> value corresponding to an unimplemented or
+	 * reserved ID register is encountered, the System Control
+	 * processor returns the value of the main ID register.
+	 */
+	if (ctype == cpufunc_id())
+		goto out;
+	
+	if ((ctype & CPU_CT_S) == 0)
+		arm_pcache_unified = 1;
+
+	/*
+	 * If you want to know how this code works, go read the ARM ARM.
+	 */
+	
+	arm_pcache_type = CPU_CT_CTYPE(ctype);
+        if (arm_pcache_unified == 0) {
+		isize = CPU_CT_ISIZE(ctype);
+	    	multiplier = (isize & CPU_CT_xSIZE_M) ? 3 : 2;
+		arm_picache_line_size = 1U << (CPU_CT_xSIZE_LEN(isize) + 3);
+		if (CPU_CT_xSIZE_ASSOC(isize) == 0) {
+			if (isize & CPU_CT_xSIZE_M)
+				arm_picache_line_size = 0; /* not present */
+			else
+				arm_picache_ways = 1;
+		} else {
+			arm_picache_ways = multiplier <<
+			    (CPU_CT_xSIZE_ASSOC(isize) - 1);
+		}
+		arm_picache_size = multiplier << (CPU_CT_xSIZE_SIZE(isize) + 8);
+	}
+	
+	dsize = CPU_CT_DSIZE(ctype);
+	multiplier = (dsize & CPU_CT_xSIZE_M) ? 3 : 2;
+	arm_pdcache_line_size = 1U << (CPU_CT_xSIZE_LEN(dsize) + 3);
+	if (CPU_CT_xSIZE_ASSOC(dsize) == 0) {
+		if (dsize & CPU_CT_xSIZE_M)
+			arm_pdcache_line_size = 0; /* not present */
+		else
+			arm_pdcache_ways = 1;
+	} else {
+		arm_pdcache_ways = multiplier <<
+		    (CPU_CT_xSIZE_ASSOC(dsize) - 1);
+	}
+	arm_pdcache_size = multiplier << (CPU_CT_xSIZE_SIZE(dsize) + 8);
+	
+	arm_dcache_align = arm_pdcache_line_size;
+	
+	arm_dcache_l2_assoc = CPU_CT_xSIZE_ASSOC(dsize) + multiplier - 2;
+	arm_dcache_l2_linesize = CPU_CT_xSIZE_LEN(dsize) + 3;
+	arm_dcache_l2_nsets = 6 + CPU_CT_xSIZE_SIZE(dsize) -
+	    CPU_CT_xSIZE_ASSOC(dsize) - CPU_CT_xSIZE_LEN(dsize);
+ out:
+	arm_dcache_align_mask = arm_dcache_align - 1;
+}
+
+static void
+arm9_setup(void)
+{
+	
+	get_cachetype_cp15();
+	arm9_dcache_sets_inc = 1U << arm_dcache_l2_linesize;
+	arm9_dcache_sets_max = (1U << (arm_dcache_l2_linesize +
+	    arm_dcache_l2_nsets)) - arm9_dcache_sets_inc;
+	arm9_dcache_index_inc = 1U << (32 - arm_dcache_l2_assoc);
+	arm9_dcache_index_max = 0U - arm9_dcache_index_inc;
+}
+
+
 static  unsigned char *orig_input, *i_input, *i_output;
 
 
@@ -354,7 +470,6 @@
 
 extern char func_end[];
 
-extern void *_end;
 
 #define PMAP_DOMAIN_KERNEL	15 /*
 				    * Just define it instead of including the
@@ -404,6 +519,7 @@
 	void *curaddr;
 	void *dst, *altdst;
 	char *kernel = (char *)&kernel_start;
+	int sp;
 
 	__asm __volatile("mov %0, pc"  :
 	    "=r" (curaddr));
@@ -413,6 +529,11 @@
 		int pt_addr = (((int)&_end + KERNSIZE + 0x100) & 
 		    ~(L1_TABLE_SIZE - 1)) + L1_TABLE_SIZE;
 		
+#ifdef CPU_ARM9
+		/* So that idcache_wbinv works; */
+		if ((cpufunc_id() & 0x0000f000) == 0x00009000)
+			arm9_setup();
+#endif
 		setup_pagetables(pt_addr, (vm_paddr_t)curaddr,
 		    (vm_paddr_t)curaddr + 0x10000000);
 		/* Gzipped kernel */
@@ -433,10 +554,10 @@
 		dst = 4 + load_kernel((unsigned int)&kernel_start, 
 	    (unsigned int)curaddr, 
 	    (unsigned int)&func_end, 0);
+	sp = (vm_offset_t)dst + 4096;
+	dst = (void *)sp;
 	memcpy((void *)dst, (void *)&load_kernel, (unsigned int)&func_end - 
 	    (unsigned int)&load_kernel);
-	((void (*)())dst)((unsigned int)kernel, 
-			  (unsigned int)curaddr,
-			  dst + (unsigned int)(&func_end) - 
-			  (unsigned int)(&load_kernel), 1);
+	do_call(dst, kernel, dst + (unsigned int)(&func_end) - 
+	    (unsigned int)(&load_kernel), sp);
 }

==== //depot/projects/smpng/sys/arm/arm/inckern.S#3 (text+ko) ====

@@ -25,7 +25,15 @@
 #include "opt_kernname.h"
 
 #include <machine/asm.h>
-__FBSDID("$FreeBSD: src/sys/arm/arm/inckern.S,v 1.2 2005/12/05 12:55:46 cognet Exp $")
+__FBSDID("$FreeBSD: src/sys/arm/arm/inckern.S,v 1.3 2006/06/12 22:58:50 cognet Exp $")
+ENTRY(do_call)
+	mov	r6, r0
+	mov	r0, r1
+	ldr	r1, =0xfff00000
+	and	r1, pc, r1
+	mov	sp, r3
+	mov	r3, #1
+	mov	pc, r6
 .section ".real_kernel","aw"
 .globl kernel_start;
 kernel_start:

==== //depot/projects/smpng/sys/arm/at91/kb920x_machdep.c#4 (text) ====

@@ -47,7 +47,7 @@
 #include "opt_ddb.h"
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/at91/kb920x_machdep.c,v 1.5 2006/06/07 05:36:10 imp Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/at91/kb920x_machdep.c,v 1.6 2006/06/12 22:57:24 cognet Exp $");
 
 #define _ARM32_BUS_DMA_PRIVATE
 #include <sys/param.h>
@@ -96,7 +96,7 @@
 
 #define KERNEL_PT_SYS		0	/* Page table for mapping proc0 zero page */
 #define KERNEL_PT_KERN		1	
-#define KERNEL_PT_KERN_NUM	8
+#define KERNEL_PT_KERN_NUM	22
 #define KERNEL_PT_AFKERNEL	KERNEL_PT_KERN + KERNEL_PT_KERN_NUM	/* L2 table for mapping after kernel */
 #define	KERNEL_PT_AFKERNEL_NUM	5
 

==== //depot/projects/smpng/sys/compat/ndis/winx32_wrap.S#5 (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/compat/ndis/winx32_wrap.S,v 1.4 2005/11/02 18:01:04 wpaul Exp $
+ * $FreeBSD: src/sys/compat/ndis/winx32_wrap.S,v 1.5 2006/06/12 20:35:59 jhb Exp $
  */
 
 /* The 'ret' macro doesn't work in this file if GPROF is enabled. */

==== //depot/projects/smpng/sys/conf/Makefile.arm#21 (text+ko) ====

@@ -1,7 +1,7 @@
 # Makefile.arm -- with config changes.
 # Copyright 1990 W. Jolitz
 #	from: @(#)Makefile.i386	7.1 5/10/91
-# $FreeBSD: src/sys/conf/Makefile.arm,v 1.27 2006/05/30 21:13:47 cognet Exp $
+# $FreeBSD: src/sys/conf/Makefile.arm,v 1.28 2006/06/12 22:58:50 cognet Exp $
 #
 # Makefile for FreeBSD
 #
@@ -62,7 +62,7 @@
 FILES_CPU_FUNC =	$S/$M/$M/cpufunc_asm_arm7tdmi.S \
 	$S/$M/$M/cpufunc_asm_arm8.S $S/$M/$M/cpufunc_asm_arm9.S \
 	$S/$M/$M/cpufunc_asm_sa1.S $S/$M/$M/cpufunc_asm_arm10.S \
-	$S/$M/$M/cpufunc_asm_xscale.S
+	$S/$M/$M/cpufunc_asm_xscale.S $S/$M/$M/cpufunc_asm.S
 trampoline: ${KERNEL_KO}.tramp
 ${KERNEL_KO}.tramp: ${KERNEL_KO}
 	echo "#define KERNNAME \"${KERNEL_KO}.tmp\"" >opt_kernname.h 
@@ -71,6 +71,8 @@
 	ldscript.$M.tramp.noheader
 	${OBJCOPY} --strip-symbol '$$d' --strip-symbol '$$a' \
 	-g --strip-symbol '$$t' ${FULLKERNEL} ${KERNEL_KO}.tmp
+	eval $$(stat -s ${KERNEL_KO}.tmp) && \
+	echo "#define KERNSIZE $$st_size" >>opt_kernname.h
 	${CC} -O -nostdlib -I. -Xlinker -T -Xlinker ldscript.$M.tramp \
 	$S/$M/$M/elf_trampoline.c $S/$M/$M/inckern.S -o ${KERNEL_KO}.tramp
 	${CC} -O -nostdlib -I. -Xlinker -T -Xlinker ldscript.$M.tramp.noheader \

==== //depot/projects/smpng/sys/conf/NOTES#120 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/NOTES,v 1.1365 2006/06/03 23:30:16 kris Exp $
+# $FreeBSD: src/sys/conf/NOTES,v 1.1366 2006/06/13 13:12:55 davidxu Exp $
 #
 # NOTES -- Lines that can be cut/pasted into kernel and hints configs.
 #
@@ -166,6 +166,7 @@
 # over time.
 #
 options 	SCHED_4BSD
+#options 	SCHED_CORE
 #options 	SCHED_ULE
 
 #####################################################################

==== //depot/projects/smpng/sys/conf/files#176 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/files,v 1.1122 2006/06/12 04:21:49 imp Exp $
+# $FreeBSD: src/sys/conf/files,v 1.1124 2006/06/13 13:12:55 davidxu Exp $
 #
 # The long compile-with and dependency lines are required because of
 # limitations in config: backslash-newline doesn't work in strings, and
@@ -1245,8 +1245,8 @@
 isa/isa_common.c		optional isa
 isa/isahint.c			optional isa
 isa/orm.c			optional isa
-isa/pnp.c			optional isa
-isa/pnpparse.c			optional isa
+isa/pnp.c			optional isa isapnp
+isa/pnpparse.c			optional isa isapnp
 isofs/cd9660/cd9660_bmap.c	optional cd9660
 isofs/cd9660/cd9660_lookup.c	optional cd9660
 isofs/cd9660/cd9660_node.c	optional cd9660
@@ -1324,6 +1324,7 @@
 kern/md4c.c			optional netsmb
 kern/md5c.c			standard
 kern/sched_4bsd.c		optional sched_4bsd
+kern/sched_core.c		optional sched_core
 kern/sched_ule.c		optional sched_ule
 kern/serdev_if.m		optional puc | scc
 kern/subr_autoconf.c		standard

==== //depot/projects/smpng/sys/conf/kern.post.mk#54 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/kern.post.mk,v 1.93 2006/05/12 02:45:12 jmg Exp $
+# $FreeBSD: src/sys/conf/kern.post.mk,v 1.94 2006/06/13 00:57:10 cognet Exp $
 
 # Part of a unified Makefile for building kernels.  This part includes all
 # the definitions that need to be after all the % directives except %RULES
@@ -68,15 +68,6 @@
 	    ${FULLKERNEL} ${.TARGET}
 ${KERNEL_KO}.symbols: ${FULLKERNEL}
 	${OBJCOPY} --only-keep-debug ${FULLKERNEL} ${.TARGET}
-.if defined(MFS_IMAGE)
-	@dd if="${MFS_IMAGE}" ibs=8192 of="${KERNEL_KO}"		\
-	   obs=`strings -at d "${KERNEL_KO}" |				\
-	         grep "MFS Filesystem goes here" | awk '{print $$1}'`	\
-	   oseek=1 conv=notrunc 2>/dev/null &&				\
-	 strings ${KERNEL_KO} |						\
-	 grep 'MFS Filesystem had better STOP here' > /dev/null ||	\
-	 (rm ${KERNEL_KO} && echo 'MFS image too large' && false)
-.endif
 install.debug reinstall.debug: gdbinit
 	cd ${.CURDIR}; ${MAKE} ${.TARGET:R}
 
@@ -99,6 +90,15 @@
 	${OBJCOPY} --strip-debug ${.TARGET}
 .endif
 	${SYSTEM_LD_TAIL}
+.if defined(MFS_IMAGE)
+	@dd if="${MFS_IMAGE}" ibs=8192 of="${KERNEL_KO}"		\
+	   obs=`strings -at d "${KERNEL_KO}" |				\
+	         grep "MFS Filesystem goes here" | awk '{print $$1}'`	\
+	   oseek=1 conv=notrunc 2>/dev/null &&				\
+	 strings ${KERNEL_KO} |						\
+	 grep 'MFS Filesystem had better STOP here' > /dev/null ||	\
+	 (rm ${KERNEL_KO} && echo 'MFS image too large' && false)
+.endif
 
 .if !exists(${.OBJDIR}/.depend)
 ${SYSTEM_OBJS}: assym.s vnode_if.h ${BEFORE_DEPEND:M*.h} ${MFILES:T:S/.m$/.h/}

==== //depot/projects/smpng/sys/conf/options#121 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/options,v 1.544 2006/06/07 17:53:15 sam Exp $
+# $FreeBSD: src/sys/conf/options,v 1.546 2006/06/13 13:12:55 davidxu Exp $
 #
 #        On the handling of kernel options
 #
@@ -128,6 +128,7 @@
 PREEMPTION	opt_sched.h
 QUOTA
 SCHED_4BSD	opt_sched.h
+SCHED_CORE	opt_sched.h
 SCHED_ULE	opt_sched.h
 SHOW_BUSYBUFS
 SLEEPQUEUE_PROFILING
@@ -615,13 +616,16 @@
 ACPI_NO_SEMAPHORES	opt_acpi.h
 ACPICA_PEDANTIC		opt_acpi.h
 
+# ISA support
+DEV_ISA			opt_isa.h
+ISAPNP			opt_isa.h
+
 # options for DEVFS, see sys/fs/devfs/devfs.h
 NDEVFSINO		opt_devfs.h
 NDEVFSOVERFLOW		opt_devfs.h
 
 # various 'device presence' options.
 DEV_BPF			opt_bpf.h
-DEV_ISA			opt_isa.h
 DEV_MCA			opt_mca.h
 DEV_CARP		opt_carp.h
 DEV_SPLASH		opt_splash.h

==== //depot/projects/smpng/sys/dev/mfi/mfi.c#5 (text) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/mfi/mfi.c,v 1.5 2006/05/18 23:30:47 ambrisko Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/mfi/mfi.c,v 1.6 2006/06/13 14:27:52 ambrisko Exp $");
 
 #include "opt_mfi.h"
 
@@ -59,7 +59,9 @@
 static int	mfi_get_controller_info(struct mfi_softc *);
 static int	mfi_get_log_state(struct mfi_softc *,
 		    struct mfi_evt_log_state *);
+#ifdef NOTYET
 static int	mfi_get_entry(struct mfi_softc *, int);
+#endif
 static void	mfi_data_cb(void *, bus_dma_segment_t *, int, int);
 static void	mfi_startup(void *arg);
 static void	mfi_intr(void *arg);
@@ -608,7 +610,7 @@
 		 * the AEN mechanism via setting it lower then
 		 * current.  The firmware will iterate through them.
 		 */
-#if 0
+#ifdef NOTYET
 		for (seq = log_state.shutdown_seq_num;
 		     seq <= log_state.newest_seq_num; seq++) {
 			mfi_get_entry(sc, seq);
@@ -930,7 +932,7 @@
 	mfi_ldprobe_capacity(sc, hdr->target_id);
 }
 
-#ifndef MFI_DECODE_LOG
+#ifdef NOTYET
 static void
 mfi_decode_log(struct mfi_softc *sc, struct mfi_log_detail *detail)
 {
@@ -943,9 +945,6 @@
 		break;
 	}
 }
-#else
-#include <dev/mfi/mfilog.h>
-#include <dev/mfi/mfi_log.c>
 #endif
 
 static void
@@ -953,12 +952,14 @@
 {
 	switch (detail->arg_type) {
 	case MR_EVT_ARGS_NONE:
-		/* Try to get info from log entry */
-		mfi_get_entry(sc, detail->seq);
+		device_printf(sc->mfi_dev, "%d - %s\n",
+		    detail->seq,
+		    detail->description
+		    );
 		break;
 	case MR_EVT_ARGS_CDB_SENSE:
 		device_printf(sc->mfi_dev, "%d - PD %02d(e%d/s%d) CDB %*D"
-		    "Sense %*D\n: %s",
+		    "Sense %*D\n: %s\n",
 		    detail->seq,
 		    detail->args.cdb_sense.pd.device_id,
 		    detail->args.cdb_sense.pd.enclosure_index,
@@ -1284,6 +1285,7 @@
 	}
 }
 
+#ifdef NOTYET
 static int
 mfi_get_entry(struct mfi_softc *sc, int seq)
 {
@@ -1349,6 +1351,7 @@
 	mtx_unlock(&sc->mfi_io_lock);
 	return (0);
 }
+#endif
 
 static int
 mfi_ldprobe_capacity(struct mfi_softc *sc, int id)

==== //depot/projects/smpng/sys/i386/conf/DEFAULTS#6 (text+ko) ====

@@ -1,12 +1,13 @@
 #
 # DEFAULTS -- Default kernel configuration file for FreeBSD/i386
 #
-# $FreeBSD: src/sys/i386/conf/DEFAULTS,v 1.5 2006/06/12 04:21:50 imp Exp $
+# $FreeBSD: src/sys/i386/conf/DEFAULTS,v 1.6 2006/06/12 21:07:12 marius Exp $
 
 machine		i386
 
 # Bus support.
 device		isa
+options		ISAPNP
 
 # Floating point support.
 device		npx

==== //depot/projects/smpng/sys/i386/conf/GENERIC#76 (text+ko) ====

@@ -16,7 +16,7 @@
 # If you are in doubt as to the purpose or necessity of a line, check first
 # in NOTES.
 #
-# $FreeBSD: src/sys/i386/conf/GENERIC,v 1.448 2006/05/17 20:44:00 marius Exp $
+# $FreeBSD: src/sys/i386/conf/GENERIC,v 1.449 2006/06/13 13:12:56 davidxu Exp $
 
 cpu		I486_CPU
 cpu		I586_CPU
@@ -30,6 +30,7 @@
 
 #options 	SCHED_ULE		# ULE scheduler
 options 	SCHED_4BSD		# 4BSD scheduler
+#options 	SCHED_CORE		# CORE scheduler
 options 	PREEMPTION		# Enable kernel thread preemption
 options 	INET			# InterNETworking
 options 	INET6			# IPv6 communications protocols

==== //depot/projects/smpng/sys/i386/conf/NOTES#121 (text+ko) ====

@@ -4,7 +4,7 @@
 # This file contains machine dependent kernel configuration notes.  For
 # machine independent notes, look in /sys/conf/NOTES.
 #
-# $FreeBSD: src/sys/i386/conf/NOTES,v 1.1227 2006/05/17 21:25:23 marius Exp $
+# $FreeBSD: src/sys/i386/conf/NOTES,v 1.1228 2006/06/12 20:38:17 jhb Exp $
 #
 
 #

==== //depot/projects/smpng/sys/i386/i386/pmap.c#97 (text+ko) ====

@@ -75,7 +75,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/i386/i386/pmap.c,v 1.559 2006/06/05 20:35:26 alc Exp $");
+__FBSDID("$FreeBSD: src/sys/i386/i386/pmap.c,v 1.560 2006/06/12 20:05:27 alc Exp $");
 
 /*
  *	Manages physical address maps.
@@ -1057,17 +1057,22 @@
  * Note: SMP coherent.  Uses a ranged shootdown IPI.
  */
 void
-pmap_qenter(vm_offset_t sva, vm_page_t *m, int count)
+pmap_qenter(vm_offset_t sva, vm_page_t *ma, int count)
 {
-	vm_offset_t va;
+	pt_entry_t *endpte, oldpte, *pte;
 
-	va = sva;
-	while (count-- > 0) {
-		pmap_kenter(va, VM_PAGE_TO_PHYS(*m));
-		va += PAGE_SIZE;
-		m++;
+	oldpte = 0;
+	pte = vtopte(sva);
+	endpte = pte + count;
+	while (pte < endpte) {
+		oldpte |= *pte;
+		pte_store(pte, VM_PAGE_TO_PHYS(*ma) | pgeflag | PG_RW | PG_V);
+		pte++;
+		ma++;
 	}
-	pmap_invalidate_range(kernel_pmap, sva, va);
+	if ((oldpte & PG_V) != 0)
+		pmap_invalidate_range(kernel_pmap, sva, sva + count *
+		    PAGE_SIZE);
 }
 
 /*

==== //depot/projects/smpng/sys/isa/isa_common.c#19 (text+ko) ====

@@ -58,7 +58,9 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/isa/isa_common.c,v 1.44 2006/05/12 05:04:44 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/isa/isa_common.c,v 1.45 2006/06/12 21:07:12 marius Exp $");
+
+#include "opt_isa.h"
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -652,8 +654,10 @@
 	retval += resource_list_print_type(rl, "drq", SYS_RES_DRQ, "%ld");
 	if (device_get_flags(dev))
 		retval += printf(" flags %#x", device_get_flags(dev));
+#ifdef ISAPNP
 	if (idev->id_vendorid)
 		retval += printf(" pnpid %s", pnp_eisaformat(idev->id_vendorid));
+#endif
 
 	return (retval);
 }
@@ -1062,11 +1066,13 @@
 isa_child_pnpinfo_str(device_t bus, device_t child, char *buf,
     size_t buflen)
 {
+#ifdef ISAPNP
 	struct isa_device *idev = DEVTOISA(child);
 
 	if (idev->id_vendorid)
 		snprintf(buf, buflen, "pnpid=%s",
 		    pnp_eisaformat(idev->id_vendorid));
+#endif
 	return (0);
 }
 

==== //depot/projects/smpng/sys/kern/kern_clock.c#50 (text+ko) ====

@@ -35,7 +35,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/kern_clock.c,v 1.188 2006/04/17 20:14:51 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/kern_clock.c,v 1.189 2006/06/13 13:12:56 davidxu Exp $");
 
 #include "opt_device_polling.h"
 #include "opt_hwpmc_hooks.h"
@@ -201,6 +201,7 @@
 	 * Run current process's virtual and profile time, as needed.
 	 */
 	mtx_lock_spin_flags(&sched_lock, MTX_QUIET);
+	sched_tick();
 	if (p->p_flag & P_SA) {
 		/* XXXKSE What to do? */
 	} else {

==== //depot/projects/smpng/sys/kern/kern_event.c#47 (text+ko) ====

@@ -26,7 +26,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/kern_event.c,v 1.102 2006/06/02 13:23:39 pjd Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/kern_event.c,v 1.103 2006/06/12 21:46:23 jhb Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>

==== //depot/projects/smpng/sys/kern/kern_switch.c#64 (text+ko) ====

@@ -86,7 +86,7 @@
 ***/
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/kern_switch.c,v 1.121 2006/06/01 22:45:56 cognet Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/kern_switch.c,v 1.122 2006/06/13 13:12:56 davidxu Exp $");
 
 #include "opt_sched.h"
 
@@ -308,7 +308,12 @@
 	if ((td->td_proc->p_flag & P_HADTHREADS) == 0) {
 		/* We only care about the kse in the run queue. */
 		td->td_priority = newpri;
-		if (ke->ke_rqindex != (newpri / RQ_PPQ)) {
+#ifndef SCHED_CORE
+		if (ke->ke_rqindex != (newpri / RQ_PPQ))
+#else
+		if (ke->ke_rqindex != newpri)
+#endif
+		{
 			sched_rem(td);
 			sched_add(td, SRQ_BORING);
 		}

==== //depot/projects/smpng/sys/kern/sched_4bsd.c#57 (text+ko) ====

@@ -33,7 +33,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/sched_4bsd.c,v 1.81 2006/06/06 12:26:17 davidxu Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/sched_4bsd.c,v 1.82 2006/06/13 13:12:56 davidxu Exp $");
 
 #include "opt_hwpmc_hooks.h"
 
@@ -1386,5 +1386,10 @@
 
 	return (0);
 }
+
+void
+sched_tick(void)
+{
+}
 #define KERN_SWITCH_INCLUDE 1
 #include "kern/kern_switch.c"

==== //depot/projects/smpng/sys/kern/sched_ule.c#66 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/sched_ule.c,v 1.162 2006/06/06 12:26:17 davidxu Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/sched_ule.c,v 1.163 2006/06/13 13:12:56 davidxu Exp $");
 
 #include "opt_hwpmc_hooks.h"
 #include "opt_sched.h"
@@ -2007,5 +2007,10 @@
 {
 	return (sizeof(struct thread) + sizeof(struct td_sched));
 }
+
+void
+sched_tick(void)
+{
+}
 #define KERN_SWITCH_INCLUDE 1
 #include "kern/kern_switch.c"

==== //depot/projects/smpng/sys/kern/uipc_usrreq.c#58 (text+ko) ====

@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/uipc_usrreq.c,v 1.167 2006/04/24 19:09:33 maxim Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/uipc_usrreq.c,v 1.168 2006/06/13 14:33:35 maxim Exp $");
 
 #include "opt_mac.h"
 
@@ -1498,8 +1498,9 @@
 struct mbuf *
 unp_addsockcred(struct thread *td, struct mbuf *control)
 {
-	struct mbuf *m, *n;
+	struct mbuf *m, *n, *n_prev;
 	struct sockcred *sc;
+	const struct cmsghdr *cm;
 	int ngroups;
 	int i;
 
@@ -1508,7 +1509,6 @@
 	m = sbcreatecontrol(NULL, SOCKCREDSIZE(ngroups), SCM_CREDS, SOL_SOCKET);
 	if (m == NULL)
 		return (control);
-	m->m_next = NULL;
 
 	sc = (struct sockcred *) CMSG_DATA(mtod(m, struct cmsghdr *));
 	sc->sc_uid = td->td_ucred->cr_ruid;
@@ -1520,16 +1520,30 @@
 		sc->sc_groups[i] = td->td_ucred->cr_groups[i];
 
 	/*
-	 * If a control message already exists, append us to the end.
+	 * Unlink SCM_CREDS control messages (struct cmsgcred), since
+	 * just created SCM_CREDS control message (struct sockcred) has
+	 * another format.
 	 */
-	if (control != NULL) {
-		for (n = control; n->m_next != NULL; n = n->m_next)
-			;
-		n->m_next = m;
-	} else
-		control = m;
+	if (control != NULL)
+		for (n = control, n_prev = NULL; n != NULL;) {
+			cm = mtod(n, struct cmsghdr *);
+    			if (cm->cmsg_level == SOL_SOCKET &&
+			    cm->cmsg_type == SCM_CREDS) {
+    				if (n_prev == NULL)
+					control = n->m_next;
+				else
+					n_prev->m_next = n->m_next;
+				n = m_free(n);
+			} else {
+				n_prev = n;
+				n = n->m_next;
+			}
+		}
+
+	/* Prepend it to the head. */
+	m->m_next = control;
 
-	return (control);
+	return (m);
 }
 
 /*

==== //depot/projects/smpng/sys/modules/Makefile#123 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/modules/Makefile,v 1.497 2006/06/08 23:35:58 sam Exp $
+# $FreeBSD: src/sys/modules/Makefile,v 1.498 2006/06/13 13:53:52 gallatin Exp $
 
 .include <bsd.own.mk>
 
@@ -160,6 +160,7 @@
 	msdosfs \
 	msdosfs_iconv \
 	${_mse} \
+	${_mxge} \
 	my \
 	${_ncp} \
 	${_ncv} \
@@ -413,6 +414,7 @@
 _ipw=		ipw
 _iwi=		iwi
 _mly=		mly
+_mxge=		mxge
 _nve=		nve
 .if ${MK_CRYPT} != "no" || defined(ALL_MODULES)
 .if exists(${.CURDIR}/../crypto/via)
@@ -469,6 +471,7 @@
 _ipw=		ipw
 _iwi=		iwi
 _mly=		mly
+_mxge=		mxge
 _ndis=		ndis
 _nve=		nve
 _pccard=	pccard

==== //depot/projects/smpng/sys/net/if_bridge.c#29 (text+ko) ====

@@ -80,7 +80,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/net/if_bridge.c,v 1.62 2006/06/08 23:40:16 thompsa Exp $");
+__FBSDID("$FreeBSD: src/sys/net/if_bridge.c,v 1.63 2006/06/12 22:43:37 thompsa Exp $");
 
 #include "opt_inet.h"
 #include "opt_inet6.h"
@@ -501,8 +501,8 @@
 	ifp->if_hdrlen = ETHER_HDR_LEN;
 
 	/*

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


More information about the p4-projects mailing list