PERFORCE change 128904 for review

Robert Watson rwatson at FreeBSD.org
Sat Nov 10 08:33:59 PST 2007


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

Change 128904 by rwatson at rwatson_noisy on 2007/11/10 16:33:04

	Integrate zcopybpf branch.

Affected files ...

.. //depot/projects/zcopybpf/src/sys/amd64/amd64/machdep.c#6 integrate
.. //depot/projects/zcopybpf/src/sys/amd64/amd64/pmap.c#9 integrate
.. //depot/projects/zcopybpf/src/sys/amd64/conf/NOTES#7 integrate
.. //depot/projects/zcopybpf/src/sys/arm/arm/cpufunc.c#5 integrate
.. //depot/projects/zcopybpf/src/sys/arm/arm/pmap.c#7 integrate
.. //depot/projects/zcopybpf/src/sys/arm/at91/kb920x_machdep.c#6 integrate
.. //depot/projects/zcopybpf/src/sys/arm/sa11x0/assabet_machdep.c#2 integrate
.. //depot/projects/zcopybpf/src/sys/arm/xscale/i80321/ep80219_machdep.c#4 integrate
.. //depot/projects/zcopybpf/src/sys/arm/xscale/i80321/iq31244_machdep.c#4 integrate
.. //depot/projects/zcopybpf/src/sys/arm/xscale/i8134x/crb_machdep.c#3 integrate
.. //depot/projects/zcopybpf/src/sys/arm/xscale/ixp425/avila_machdep.c#5 integrate
.. //depot/projects/zcopybpf/src/sys/arm/xscale/ixp425/if_npe.c#4 integrate
.. //depot/projects/zcopybpf/src/sys/boot/common/loader.8#4 integrate
.. //depot/projects/zcopybpf/src/sys/compat/linux/linux_ioctl.c#3 integrate
.. //depot/projects/zcopybpf/src/sys/compat/linux/linux_ioctl.h#3 integrate
.. //depot/projects/zcopybpf/src/sys/compat/opensolaris/sys/kcondvar.h#2 integrate
.. //depot/projects/zcopybpf/src/sys/compat/opensolaris/sys/mutex.h#4 integrate
.. //depot/projects/zcopybpf/src/sys/compat/opensolaris/sys/rwlock.h#4 integrate
.. //depot/projects/zcopybpf/src/sys/compat/pecoff/imgact_pecoff.c#3 integrate
.. //depot/projects/zcopybpf/src/sys/compat/svr4/imgact_svr4.c#2 integrate
.. //depot/projects/zcopybpf/src/sys/conf/NOTES#11 integrate
.. //depot/projects/zcopybpf/src/sys/conf/files#13 integrate
.. //depot/projects/zcopybpf/src/sys/conf/files.amd64#6 integrate
.. //depot/projects/zcopybpf/src/sys/conf/files.i386#6 integrate
.. //depot/projects/zcopybpf/src/sys/contrib/dev/wpi/LICENSE#1 branch
.. //depot/projects/zcopybpf/src/sys/contrib/dev/wpi/iwlwifi-3945-2.14.4.fw.uu#1 branch
.. //depot/projects/zcopybpf/src/sys/contrib/opensolaris/uts/common/fs/zfs/arc.c#5 integrate
.. //depot/projects/zcopybpf/src/sys/contrib/opensolaris/uts/common/fs/zfs/vdev.c#3 integrate
.. //depot/projects/zcopybpf/src/sys/contrib/opensolaris/uts/common/sys/vfs.h#2 delete
.. //depot/projects/zcopybpf/src/sys/dev/acpica/acpi_ec.c#7 integrate
.. //depot/projects/zcopybpf/src/sys/dev/asmc/asmc.c#1 branch
.. //depot/projects/zcopybpf/src/sys/dev/asmc/asmcvar.h#1 branch
.. //depot/projects/zcopybpf/src/sys/dev/ciss/ciss.c#7 integrate
.. //depot/projects/zcopybpf/src/sys/dev/isp/isp_sbus.c#5 integrate
.. //depot/projects/zcopybpf/src/sys/dev/md/md.c#4 integrate
.. //depot/projects/zcopybpf/src/sys/dev/mpt/mpt.c#6 integrate
.. //depot/projects/zcopybpf/src/sys/dev/nfe/if_nfe.c#7 integrate
.. //depot/projects/zcopybpf/src/sys/dev/ral/rt2560.c#7 integrate
.. //depot/projects/zcopybpf/src/sys/dev/ral/rt2661.c#6 integrate
.. //depot/projects/zcopybpf/src/sys/dev/safe/safe.c#4 integrate
.. //depot/projects/zcopybpf/src/sys/dev/sound/pci/atiixp.c#8 integrate
.. //depot/projects/zcopybpf/src/sys/dev/sound/pci/atiixp.h#2 integrate
.. //depot/projects/zcopybpf/src/sys/dev/sound/pci/t4dwave.c#6 integrate
.. //depot/projects/zcopybpf/src/sys/dev/usb/if_axe.c#7 integrate
.. //depot/projects/zcopybpf/src/sys/dev/usb/if_axereg.h#6 integrate
.. //depot/projects/zcopybpf/src/sys/dev/usb/if_rum.c#4 integrate
.. //depot/projects/zcopybpf/src/sys/dev/usb/if_ural.c#8 integrate
.. //depot/projects/zcopybpf/src/sys/dev/usb/if_zyd.c#3 integrate
.. //depot/projects/zcopybpf/src/sys/dev/usb/if_zydfw.h#2 integrate
.. //depot/projects/zcopybpf/src/sys/dev/usb/if_zydreg.h#3 integrate
.. //depot/projects/zcopybpf/src/sys/dev/usb/ukbd.c#6 integrate
.. //depot/projects/zcopybpf/src/sys/dev/usb/usbdevs#11 integrate
.. //depot/projects/zcopybpf/src/sys/dev/wpi/if_wpi.c#1 branch
.. //depot/projects/zcopybpf/src/sys/dev/wpi/if_wpireg.h#1 branch
.. //depot/projects/zcopybpf/src/sys/dev/wpi/if_wpivar.h#1 branch
.. //depot/projects/zcopybpf/src/sys/i386/conf/NOTES#7 integrate
.. //depot/projects/zcopybpf/src/sys/i386/conf/PAE#6 integrate
.. //depot/projects/zcopybpf/src/sys/i386/i386/machdep.c#6 integrate
.. //depot/projects/zcopybpf/src/sys/i386/i386/pmap.c#9 integrate
.. //depot/projects/zcopybpf/src/sys/i386/ibcs2/imgact_coff.c#3 integrate
.. //depot/projects/zcopybpf/src/sys/i386/linux/imgact_linux.c#3 integrate
.. //depot/projects/zcopybpf/src/sys/ia64/ia64/machdep.c#5 integrate
.. //depot/projects/zcopybpf/src/sys/ia64/ia64/pmap.c#5 integrate
.. //depot/projects/zcopybpf/src/sys/kern/imgact_aout.c#2 integrate
.. //depot/projects/zcopybpf/src/sys/kern/imgact_elf.c#3 integrate
.. //depot/projects/zcopybpf/src/sys/kern/imgact_gzip.c#2 integrate
.. //depot/projects/zcopybpf/src/sys/kern/kern_exec.c#7 integrate
.. //depot/projects/zcopybpf/src/sys/kern/kern_fork.c#8 integrate
.. //depot/projects/zcopybpf/src/sys/kern/kern_kse.c#6 integrate
.. //depot/projects/zcopybpf/src/sys/kern/kern_proc.c#5 integrate
.. //depot/projects/zcopybpf/src/sys/kern/kern_rmlock.c#1 branch
.. //depot/projects/zcopybpf/src/sys/kern/kern_sig.c#7 integrate
.. //depot/projects/zcopybpf/src/sys/kern/kern_thr.c#4 integrate
.. //depot/projects/zcopybpf/src/sys/kern/kern_thread.c#7 integrate
.. //depot/projects/zcopybpf/src/sys/kern/sched_4bsd.c#7 integrate
.. //depot/projects/zcopybpf/src/sys/kern/subr_lock.c#6 integrate
.. //depot/projects/zcopybpf/src/sys/kern/subr_pcpu.c#2 integrate
.. //depot/projects/zcopybpf/src/sys/kern/subr_smp.c#5 integrate
.. //depot/projects/zcopybpf/src/sys/kern/sys_process.c#5 integrate
.. //depot/projects/zcopybpf/src/sys/kern/tty_pty.c#3 integrate
.. //depot/projects/zcopybpf/src/sys/modules/Makefile#11 integrate
.. //depot/projects/zcopybpf/src/sys/modules/asmc/Makefile#1 branch
.. //depot/projects/zcopybpf/src/sys/modules/wpi/Makefile#1 branch
.. //depot/projects/zcopybpf/src/sys/modules/wpifw/Makefile#1 branch
.. //depot/projects/zcopybpf/src/sys/net/if_bridge.c#8 integrate
.. //depot/projects/zcopybpf/src/sys/net/if_bridgevar.h#4 integrate
.. //depot/projects/zcopybpf/src/sys/net/if_ethersubr.c#10 integrate
.. //depot/projects/zcopybpf/src/sys/net80211/ieee80211_ht.c#4 integrate
.. //depot/projects/zcopybpf/src/sys/net80211/ieee80211_scan_sta.c#4 integrate
.. //depot/projects/zcopybpf/src/sys/netinet/ip_dummynet.c#6 integrate
.. //depot/projects/zcopybpf/src/sys/netinet/ip_dummynet.h#3 integrate
.. //depot/projects/zcopybpf/src/sys/netinet/ip_fw_pfil.c#3 integrate
.. //depot/projects/zcopybpf/src/sys/netinet/sctp_indata.c#11 integrate
.. //depot/projects/zcopybpf/src/sys/netinet/sctputil.c#11 integrate
.. //depot/projects/zcopybpf/src/sys/nfsserver/nfs.h#3 integrate
.. //depot/projects/zcopybpf/src/sys/nfsserver/nfs_srvsubs.c#4 integrate
.. //depot/projects/zcopybpf/src/sys/pc98/pc98/machdep.c#5 integrate
.. //depot/projects/zcopybpf/src/sys/powerpc/powerpc/machdep.c#4 integrate
.. //depot/projects/zcopybpf/src/sys/powerpc/powerpc/pmap_dispatch.c#2 integrate
.. //depot/projects/zcopybpf/src/sys/sparc64/sparc64/machdep.c#5 integrate
.. //depot/projects/zcopybpf/src/sys/sparc64/sparc64/pmap.c#5 integrate
.. //depot/projects/zcopybpf/src/sys/sun4v/sun4v/machdep.c#3 integrate
.. //depot/projects/zcopybpf/src/sys/sun4v/sun4v/pmap.c#3 integrate
.. //depot/projects/zcopybpf/src/sys/sys/_rmlock.h#1 branch
.. //depot/projects/zcopybpf/src/sys/sys/lock.h#4 integrate
.. //depot/projects/zcopybpf/src/sys/sys/pcpu.h#4 integrate
.. //depot/projects/zcopybpf/src/sys/sys/proc.h#9 integrate
.. //depot/projects/zcopybpf/src/sys/sys/rmlock.h#1 branch
.. //depot/projects/zcopybpf/src/sys/sys/signalvar.h#2 integrate
.. //depot/projects/zcopybpf/src/sys/sys/smp.h#2 integrate
.. //depot/projects/zcopybpf/src/sys/ufs/ffs/ffs_alloc.c#5 integrate
.. //depot/projects/zcopybpf/src/sys/ufs/ffs/ffs_balloc.c#2 integrate
.. //depot/projects/zcopybpf/src/sys/ufs/ffs/ffs_inode.c#3 integrate
.. //depot/projects/zcopybpf/src/sys/ufs/ffs/ffs_snapshot.c#5 integrate
.. //depot/projects/zcopybpf/src/sys/ufs/ffs/ffs_softdep.c#8 integrate
.. //depot/projects/zcopybpf/src/sys/ufs/ffs/ffs_vnops.c#6 integrate
.. //depot/projects/zcopybpf/src/sys/ufs/ufs/ufs_bmap.c#3 integrate
.. //depot/projects/zcopybpf/src/sys/ufs/ufs/ufs_lookup.c#3 integrate
.. //depot/projects/zcopybpf/src/sys/ufs/ufs/ufs_vnops.c#6 integrate
.. //depot/projects/zcopybpf/src/sys/vm/pmap.h#2 integrate
.. //depot/projects/zcopybpf/src/sys/vm/vm_extern.h#2 integrate
.. //depot/projects/zcopybpf/src/sys/vm/vm_glue.c#4 integrate
.. //depot/projects/zcopybpf/src/sys/vm/vm_kern.c#4 integrate
.. //depot/projects/zcopybpf/src/sys/vm/vm_map.c#8 integrate
.. //depot/projects/zcopybpf/src/sys/vm/vm_map.h#3 integrate
.. //depot/projects/zcopybpf/src/sys/vm/vm_page.c#8 integrate

Differences ...

==== //depot/projects/zcopybpf/src/sys/amd64/amd64/machdep.c#6 (text+ko) ====

@@ -39,7 +39,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/machdep.c,v 1.676 2007/10/28 21:23:48 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/machdep.c,v 1.677 2007/11/05 11:36:09 kib Exp $");
 
 #include "opt_atalk.h"
 #include "opt_atpic.h"
@@ -1137,7 +1137,7 @@
  	 * This may be done better later if it gets more high level
  	 * components in it. If so just link td->td_proc here.
 	 */
-	proc_linkup(&proc0, &thread0);
+	proc_linkup0(&proc0, &thread0);
 
 	preload_metadata = (caddr_t)(uintptr_t)(modulep + KERNBASE);
 	preload_bootstrap_relocate(KERNBASE);

==== //depot/projects/zcopybpf/src/sys/amd64/amd64/pmap.c#9 (text+ko) ====

@@ -77,7 +77,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.591 2007/11/03 05:15:25 alc Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.593 2007/11/05 18:13:33 alc Exp $");
 
 /*
  *	Manages physical address maps.
@@ -743,6 +743,22 @@
 #ifdef SMP
 /*
  * For SMP, these functions have to use the IPI mechanism for coherence.
+ *
+ * N.B.: Before calling any of the following TLB invalidation functions,
+ * the calling processor must ensure that all stores updating a non-
+ * kernel page table are globally performed.  Otherwise, another
+ * processor could cache an old, pre-update entry without being
+ * invalidated.  This can happen one of two ways: (1) The pmap becomes
+ * active on another processor after its pm_active field is checked by
+ * one of the following functions but before a store updating the page
+ * table is globally performed. (2) The pmap becomes active on another
+ * processor before its pm_active field is checked but due to
+ * speculative loads one of the following functions stills reads the
+ * pmap as inactive on the other processor.
+ * 
+ * The kernel page table is exempt because its pm_active field is
+ * immutable.  The kernel page table is always active on every
+ * processor.
  */
 void
 pmap_invalidate_page(pmap_t pmap, vm_offset_t va)
@@ -1139,6 +1155,13 @@
 	}
 
 	/*
+	 * This is a release store so that the ordinary store unmapping
+	 * the page table page is globally performed before TLB shoot-
+	 * down is begun.
+	 */
+	atomic_subtract_rel_int(&cnt.v_wire_count, 1);
+
+	/*
 	 * Do an invltlb to make the invalidated mapping
 	 * take effect immediately.
 	 */
@@ -1151,7 +1174,6 @@
 	m->right = *free;
 	*free = m;
 	
-	atomic_subtract_int(&cnt.v_wire_count, 1);
 	return 1;
 }
 
@@ -1186,7 +1208,7 @@
  * Initialize a preallocated and zeroed pmap structure,
  * such as one in a vmspace structure.
  */
-void
+int
 pmap_pinit(pmap_t pmap)
 {
 	vm_page_t pml4pg;
@@ -1216,6 +1238,8 @@
 	pmap->pm_active = 0;
 	TAILQ_INIT(&pmap->pm_pvchunk);
 	bzero(&pmap->pm_stats, sizeof pmap->pm_stats);
+
+	return (1);
 }
 
 /*

==== //depot/projects/zcopybpf/src/sys/amd64/conf/NOTES#7 (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.70 2007/10/29 22:19:08 peter Exp $
+# $FreeBSD: src/sys/amd64/conf/NOTES,v 1.71 2007/11/08 22:09:37 benjsc Exp $
 #
 
 #
@@ -315,6 +315,7 @@
 # nve:	nVidia nForce MCP on-board Ethernet Networking
 # ral:	Ralink Technology IEEE 802.11 wireless adapter
 # ural:	Ralink Technology RT2500USB IEEE 802.11 wireless adapter
+# wpi:	Intel 3945ABG Wireless LAN controller
 
 device		ed
 options 	ED_3C503
@@ -326,6 +327,7 @@
 device		nve		# nVidia nForce MCP on-board Ethernet Networking
 device		ral
 device		ural
+device		wpi
 
 device		ath
 device		ath_hal		# Atheros HAL (includes binary component)

==== //depot/projects/zcopybpf/src/sys/arm/arm/cpufunc.c#5 (text+ko) ====

@@ -45,7 +45,7 @@
  * Created      : 30/01/97
  */
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/arm/cpufunc.c,v 1.20 2007/10/31 07:27:31 kevlo Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/arm/cpufunc.c,v 1.21 2007/11/08 13:19:08 cognet Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -333,6 +333,11 @@
 	armv5_ec_idcache_wbinv_all,	/* idcache_wbinv_all	*/
 	armv5_ec_idcache_wbinv_range,	/* idcache_wbinv_range	*/
 
+	cpufunc_nullop,                 /* l2cache_wbinv_all    */
+	(void *)cpufunc_nullop,         /* l2cache_wbinv_range  */
+      	(void *)cpufunc_nullop,         /* l2cache_inv_range    */
+	(void *)cpufunc_nullop,         /* l2cache_wb_range     */
+				 
 	/* Other functions */
 
 	cpufunc_nullop,			/* flush_prefetchbuf	*/

==== //depot/projects/zcopybpf/src/sys/arm/arm/pmap.c#7 (text+ko) ====

@@ -147,7 +147,7 @@
 #include "opt_vm.h"
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/arm/pmap.c,v 1.87 2007/10/16 20:40:04 cognet Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/arm/pmap.c,v 1.88 2007/11/05 11:36:10 kib Exp $");
 #include <sys/param.h>
 #include <sys/systm.h>
 #include <sys/kernel.h>
@@ -3813,7 +3813,7 @@
  * such as one in a vmspace structure.
  */
 
-void
+int
 pmap_pinit(pmap_t pmap)
 {
 	PDEBUG(1, printf("pmap_pinit: pmap = %08x\n", (uint32_t) pmap));
@@ -3832,6 +3832,7 @@
 		pmap_enter(pmap, vector_page, PHYS_TO_VM_PAGE(systempage.pv_pa),
 		    VM_PROT_READ, 1);
 	} 
+	return (1);
 }
 
 

==== //depot/projects/zcopybpf/src/sys/arm/at91/kb920x_machdep.c#6 (text) ====

@@ -48,7 +48,7 @@
 #include "opt_at91.h"
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/at91/kb920x_machdep.c,v 1.26 2007/10/25 22:43:17 cognet Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/at91/kb920x_machdep.c,v 1.27 2007/11/05 11:36:10 kib Exp $");
 
 #define _ARM32_BUS_DMA_PRIVATE
 #include <sys/param.h>
@@ -449,7 +449,7 @@
 	undefined_handler_address = (u_int)undefinedinstruction_bounce;
 	undefined_init();
 				
-	proc_linkup(&proc0, &thread0);
+	proc_linkup0(&proc0, &thread0);
 	thread0.td_kstack = kernelstack.pv_va;
 	thread0.td_pcb = (struct pcb *)
 		(thread0.td_kstack + KSTACK_PAGES * PAGE_SIZE) - 1;

==== //depot/projects/zcopybpf/src/sys/arm/sa11x0/assabet_machdep.c#2 (text+ko) ====

@@ -47,7 +47,7 @@
 
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/sa11x0/assabet_machdep.c,v 1.21 2006/12/06 06:34:54 julian Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/sa11x0/assabet_machdep.c,v 1.22 2007/11/05 11:36:10 kib Exp $");
 
 #include "opt_md.h"
 
@@ -422,7 +422,7 @@
 
 	/* Set stack for exception handlers */
 	
-	proc_linkup(&proc0, &thread0);
+	proc_linkup0(&proc0, &thread0);
 	thread0.td_kstack = kernelstack.pv_va;
 	thread0.td_pcb = (struct pcb *)
 		(thread0.td_kstack + KSTACK_PAGES * PAGE_SIZE) - 1;

==== //depot/projects/zcopybpf/src/sys/arm/xscale/i80321/ep80219_machdep.c#4 (text+ko) ====

@@ -49,7 +49,7 @@
 #include "opt_ddb.h"
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/xscale/i80321/ep80219_machdep.c,v 1.7 2007/05/23 13:20:50 cognet Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/xscale/i80321/ep80219_machdep.c,v 1.8 2007/11/05 11:36:10 kib Exp $");
 
 #define _ARM32_BUS_DMA_PRIVATE
 #include <sys/param.h>
@@ -426,7 +426,7 @@
 	undefined_handler_address = (u_int)undefinedinstruction_bounce;
 	undefined_init();
 				
-	proc_linkup(&proc0, &thread0);
+	proc_linkup0(&proc0, &thread0);
 	thread0.td_kstack = kernelstack.pv_va;
 	thread0.td_pcb = (struct pcb *)
 		(thread0.td_kstack + KSTACK_PAGES * PAGE_SIZE) - 1;

==== //depot/projects/zcopybpf/src/sys/arm/xscale/i80321/iq31244_machdep.c#4 (text+ko) ====

@@ -49,7 +49,7 @@
 #include "opt_ddb.h"
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/xscale/i80321/iq31244_machdep.c,v 1.28 2007/05/23 13:20:50 cognet Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/xscale/i80321/iq31244_machdep.c,v 1.29 2007/11/05 11:36:10 kib Exp $");
 
 #define _ARM32_BUS_DMA_PRIVATE
 #include <sys/param.h>
@@ -424,7 +424,7 @@
 	undefined_handler_address = (u_int)undefinedinstruction_bounce;
 	undefined_init();
 				
-	proc_linkup(&proc0, &thread0);
+	proc_linkup0(&proc0, &thread0);
 	thread0.td_kstack = kernelstack.pv_va;
 	thread0.td_pcb = (struct pcb *)
 		(thread0.td_kstack + KSTACK_PAGES * PAGE_SIZE) - 1;

==== //depot/projects/zcopybpf/src/sys/arm/xscale/i8134x/crb_machdep.c#3 (text+ko) ====

@@ -49,7 +49,7 @@
 #include "opt_ddb.h"
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/xscale/i8134x/crb_machdep.c,v 1.2 2007/09/22 16:25:43 cognet Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/xscale/i8134x/crb_machdep.c,v 1.3 2007/11/05 11:36:11 kib Exp $");
 
 #define _ARM32_BUS_DMA_PRIVATE
 #include <sys/param.h>
@@ -409,7 +409,7 @@
 #ifdef KSE
 	proc_linkup(&proc0, &ksegrp0, &thread0);
 #else
-	proc_linkup(&proc0, &thread0);
+	proc_linkup0(&proc0, &thread0);
 #endif
 	thread0.td_kstack = kernelstack.pv_va;
 	thread0.td_pcb = (struct pcb *)

==== //depot/projects/zcopybpf/src/sys/arm/xscale/ixp425/avila_machdep.c#5 (text+ko) ====

@@ -49,7 +49,7 @@
 #include "opt_ddb.h"
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/xscale/ixp425/avila_machdep.c,v 1.5 2007/05/23 13:20:50 cognet Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/xscale/ixp425/avila_machdep.c,v 1.6 2007/11/05 11:36:11 kib Exp $");
 
 #define _ARM32_BUS_DMA_PRIVATE
 #include <sys/param.h>
@@ -490,7 +490,7 @@
 	undefined_handler_address = (u_int)undefinedinstruction_bounce;
 	undefined_init();
 				
-	proc_linkup(&proc0, &thread0);
+	proc_linkup0(&proc0, &thread0);
 	thread0.td_kstack = kernelstack.pv_va;
 	thread0.td_pcb = (struct pcb *)
 		(thread0.td_kstack + KSTACK_PAGES * PAGE_SIZE) - 1;

==== //depot/projects/zcopybpf/src/sys/arm/xscale/ixp425/if_npe.c#4 (text+ko) ====

@@ -23,7 +23,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/xscale/ixp425/if_npe.c,v 1.6 2007/05/24 16:31:22 sam Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/xscale/ixp425/if_npe.c,v 1.7 2007/11/04 21:54:52 cognet Exp $");
 
 /*
  * Intel XScale NPE Ethernet driver.
@@ -39,7 +39,6 @@
  * in the Intel Access Library (IAL) and the OS-specific driver.
  *
  * XXX add vlan support
- * XXX NPE-C port doesn't work yet
  */
 #ifdef HAVE_KERNEL_OPTION_HEADERS
 #include "opt_device_polling.h"

==== //depot/projects/zcopybpf/src/sys/boot/common/loader.8#4 (text+ko) ====

@@ -22,9 +22,9 @@
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
-.\" $FreeBSD: src/sys/boot/common/loader.8,v 1.93 2007/05/09 02:37:58 sepotvin Exp $
+.\" $FreeBSD: src/sys/boot/common/loader.8,v 1.94 2007/11/08 11:59:38 ru Exp $
 .\"
-.Dd May 8, 2007
+.Dd November 8, 2007
 .Dt LOADER 8
 .Os
 .Sh NAME
@@ -591,7 +591,8 @@
 .It Va kern.maxbcache
 Limits the amount of KVM reserved for use by the
 buffer cache, specified in bytes.
-The default maximum is 200MB.
+The default maximum is 200MB on i386,
+and 400MB on amd64, sparc64, and sun4v.
 This parameter is used to
 prevent the buffer cache from eating too much
 KVM in large-memory machine configurations.

==== //depot/projects/zcopybpf/src/sys/compat/linux/linux_ioctl.c#3 (text+ko) ====

@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/compat/linux/linux_ioctl.c,v 1.138 2007/04/07 19:40:58 scottl Exp $");
+__FBSDID("$FreeBSD: src/sys/compat/linux/linux_ioctl.c,v 1.139 2007/11/07 16:42:52 kib Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -2323,6 +2323,7 @@
 	case LINUX_SIOCGIFCONF:
 	case LINUX_SIOCGPGRP:
 	case LINUX_SIOCSPGRP:
+	case LINUX_SIOCGIFCOUNT:
 		/* these ioctls don't take an interface name */
 #ifdef DEBUG
 		printf("%s(): ioctl %d\n", __func__,
@@ -2344,6 +2345,7 @@
 	case LINUX_SIOCSIFHWADDR:
 	case LINUX_SIOCDEVPRIVATE:
 	case LINUX_SIOCDEVPRIVATE+1:
+	case LINUX_SIOCGIFINDEX:
 		/* copy in the interface name and translate it. */
 		error = copyin((void *)args->arg, lifname, LINUX_IFNAMSIZ);
 		if (error != 0)
@@ -2478,6 +2480,15 @@
 		error = ioctl(td, (struct ioctl_args *)args);
 		break;
 
+	case LINUX_SIOCGIFINDEX:
+		args->cmd = SIOCGIFINDEX;
+		error = ioctl(td, (struct ioctl_args *)args);
+		break;
+
+	case LINUX_SIOCGIFCOUNT:
+		error = 0;
+		break;
+
 	/*
 	 * XXX This is slightly bogus, but these ioctls are currently
 	 * XXX only used by the aironet (if_an) network driver.

==== //depot/projects/zcopybpf/src/sys/compat/linux/linux_ioctl.h#3 (text+ko) ====

@@ -25,7 +25,7 @@
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/compat/linux/linux_ioctl.h,v 1.26 2007/04/10 21:37:37 scottl Exp $
+ * $FreeBSD: src/sys/compat/linux/linux_ioctl.h,v 1.27 2007/11/07 16:42:52 kib Exp $
  */
 
 #ifndef _LINUX_IOCTL_H_
@@ -230,9 +230,12 @@
 #define	LINUX_SIOCGIFHWADDR	0x8927
 #define	LINUX_SIOCADDMULTI	0x8931
 #define	LINUX_SIOCDELMULTI	0x8932
+#define	LINUX_SIOCGIFINDEX	0x8933
+#define	LINUX_SIOGIFINDEX	LINUX_SIOCGIFINDEX
+#define	LINUX_SIOCGIFCOUNT	0x8938
 
 #define	LINUX_IOCTL_SOCKET_MIN	LINUX_FIOSETOWN
-#define	LINUX_IOCTL_SOCKET_MAX	LINUX_SIOCDELMULTI
+#define	LINUX_IOCTL_SOCKET_MAX	LINUX_SIOCGIFCOUNT
 
 /*
  * Device private ioctl calls 

==== //depot/projects/zcopybpf/src/sys/compat/opensolaris/sys/kcondvar.h#2 (text+ko) ====

@@ -23,7 +23,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/compat/opensolaris/sys/kcondvar.h,v 1.1 2007/04/06 01:09:06 pjd Exp $
+ * $FreeBSD: src/sys/compat/opensolaris/sys/kcondvar.h,v 1.2 2007/11/05 18:40:55 pjd Exp $
  */
 
 #ifndef _OPENSOLARIS_SYS_CONDVAR_H_
@@ -45,8 +45,15 @@
 } kcv_type_t;
 
 #define	zfs_cv_init(cv, name, type, arg)	do {			\
+	const char *_name;						\
 	ASSERT((type) == CV_DEFAULT);					\
-	cv_init((cv), "zfs:" #cv);					\
+	for (_name = #cv; *_name != '\0'; _name++) {			\
+		if (*_name >= 'a' && *_name <= 'z')			\
+			break;						\
+	}								\
+	if (*_name == '\0')						\
+		_name = #cv;						\
+	cv_init((cv), _name);						\
 } while (0)
 #define	cv_init(cv, name, type, arg)	zfs_cv_init((cv), (name), (type), (arg))
 

==== //depot/projects/zcopybpf/src/sys/compat/opensolaris/sys/mutex.h#4 (text+ko) ====

@@ -23,7 +23,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/compat/opensolaris/sys/mutex.h,v 1.3 2007/05/26 21:37:14 pjd Exp $
+ * $FreeBSD: src/sys/compat/opensolaris/sys/mutex.h,v 1.4 2007/11/05 18:40:55 pjd Exp $
  */
 
 #ifndef _OPENSOLARIS_SYS_MUTEX_H_
@@ -53,11 +53,18 @@
 #endif
 
 #define	mutex_init(lock, desc, type, arg)	do {			\
+	const char *_name;						\
 	ASSERT((type) == MUTEX_DEFAULT);				\
 	KASSERT(((lock)->lock_object.lo_flags & LO_ALLMASK) !=		\
 	    LO_EXPECTED, ("lock %s already initialized", #lock));	\
 	bzero((lock), sizeof(struct sx));				\
-	sx_init_flags((lock), "zfs:" #lock, MUTEX_FLAGS);		\
+	for (_name = #lock; *_name != '\0'; _name++) {			\
+		if (*_name >= 'a' && *_name <= 'z')			\
+			break;						\
+	}								\
+	if (*_name == '\0')						\
+		_name = #lock;						\
+	sx_init_flags((lock), _name, MUTEX_FLAGS);			\
 } while (0)
 #define	mutex_destroy(lock)	sx_destroy(lock)
 #define	mutex_enter(lock)	sx_xlock(lock)

==== //depot/projects/zcopybpf/src/sys/compat/opensolaris/sys/rwlock.h#4 (text+ko) ====

@@ -23,7 +23,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/compat/opensolaris/sys/rwlock.h,v 1.3 2007/05/26 21:37:14 pjd Exp $
+ * $FreeBSD: src/sys/compat/opensolaris/sys/rwlock.h,v 1.4 2007/11/05 18:40:55 pjd Exp $
  */
 
 #ifndef _OPENSOLARIS_SYS_RWLOCK_H_
@@ -60,10 +60,17 @@
 #define	RW_ISWRITER(x)		(rw_iswriter(x))
 
 #define	rw_init(lock, desc, type, arg)	do {				\
+	const char *_name;						\
 	KASSERT(((lock)->lock_object.lo_flags & LO_ALLMASK) !=		\
 	    LO_EXPECTED, ("lock %s already initialized", #lock));	\
 	bzero((lock), sizeof(struct sx));				\
-	sx_init_flags((lock), "zfs:" #lock, RW_FLAGS);			\
+	for (_name = #lock; *_name != '\0'; _name++) {			\
+		if (*_name >= 'a' && *_name <= 'z')			\
+			break;						\
+	}								\
+	if (*_name == '\0')						\
+		_name = #lock;						\
+	sx_init_flags((lock), _name, RW_FLAGS);				\
 } while (0)
 #define	rw_destroy(lock)	sx_destroy(lock)
 #define	rw_enter(lock, how)	do {					\

==== //depot/projects/zcopybpf/src/sys/compat/pecoff/imgact_pecoff.c#3 (text+ko) ====

@@ -41,7 +41,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/compat/pecoff/imgact_pecoff.c,v 1.40 2007/07/05 07:38:17 peter Exp $");
+__FBSDID("$FreeBSD: src/sys/compat/pecoff/imgact_pecoff.c,v 1.41 2007/11/05 11:36:11 kib Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -416,7 +416,11 @@
 	wp = (void *) ((char *) ap + sizeof(struct coff_aouthdr));
 	error = pecoff_read_from(FIRST_THREAD_IN_PROC(imgp->proc), imgp->vp,
 	    peofs + PECOFF_HDR_SIZE, (caddr_t) sh, scnsiz);
-	exec_new_vmspace(imgp, &pecoff_sysvec);
+	if (error)
+		return (error);
+	error = exec_new_vmspace(imgp, &pecoff_sysvec);
+	if (error)
+		return (error);
 	vmspace = imgp->proc->p_vmspace;
 	for (i = 0; i < fp->f_nscns; i++) {
 		prot = VM_PROT_WRITE;	/* XXX for relocation? */

==== //depot/projects/zcopybpf/src/sys/compat/svr4/imgact_svr4.c#2 (text+ko) ====

@@ -31,7 +31,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/compat/svr4/imgact_svr4.c,v 1.25 2005/04/01 20:00:10 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/compat/svr4/imgact_svr4.c,v 1.26 2007/11/05 11:36:11 kib Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -120,7 +120,9 @@
     /*
      * Destroy old process VM and create a new one (with a new stack)
      */
-    exec_new_vmspace(imgp, &svr4_sysvec);
+    error = exec_new_vmspace(imgp, &svr4_sysvec);
+    if (error)
+	    goto fail;
     vmspace = imgp->proc->p_vmspace;
 
     /*

==== //depot/projects/zcopybpf/src/sys/conf/NOTES#11 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/NOTES,v 1.1454 2007/09/26 21:14:17 marius Exp $
+# $FreeBSD: src/sys/conf/NOTES,v 1.1455 2007/11/06 02:42:00 grog Exp $
 #
 # NOTES -- Lines that can be cut/pasted into kernel and hints configs.
 #
@@ -604,7 +604,7 @@
 # broken or changes with CPU throttling then you must also have the ALTQ_NOPCC
 # option.
 options 	ALTQ
-options 	ALTQ_CBQ	# Class Bases Queueing
+options 	ALTQ_CBQ	# Class Based Queueing
 options 	ALTQ_RED	# Random Early Detection
 options 	ALTQ_RIO	# RED In/Out
 options 	ALTQ_HFSC	# Hierarchical Packet Scheduler

==== //depot/projects/zcopybpf/src/sys/conf/files#13 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/files,v 1.1249 2007/10/28 15:55:20 rwatson Exp $
+# $FreeBSD: src/sys/conf/files,v 1.1250 2007/11/08 14:47:54 ups Exp $
 #
 # The long compile-with and dependency lines are required because of
 # limitations in config: backslash-newline doesn't work in strings, and
@@ -1445,6 +1445,7 @@
 kern/kern_proc.c		standard
 kern/kern_prot.c		standard
 kern/kern_resource.c		standard
+kern/kern_rmlock.c		standard
 kern/kern_rwlock.c		standard
 kern/kern_sema.c		standard
 kern/kern_shutdown.c		standard

==== //depot/projects/zcopybpf/src/sys/conf/files.amd64#6 (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.amd64,v 1.111 2007/10/26 03:23:52 peter Exp $
+# $FreeBSD: src/sys/conf/files.amd64,v 1.113 2007/11/08 22:09:36 benjsc Exp $
 #
 # The long compile-with and dependency lines are required because of
 # limitations in config: backslash-newline doesn't work in strings, and
@@ -139,6 +139,7 @@
 crypto/des/des_enc.c		optional	crypto | ipsec | netsmb
 dev/acpica/acpi_if.m		standard
 dev/arcmsr/arcmsr.c		optional	arcmsr pci
+dev/asmc/asmc.c			optional	asmc isa
 dev/atkbdc/atkbd.c		optional	atkbd atkbdc
 dev/atkbdc/atkbd_atkbdc.c	optional	atkbd atkbdc
 dev/atkbdc/atkbdc.c		optional	atkbdc
@@ -200,6 +201,7 @@
 dev/syscons/scvgarndr.c		optional	sc vga
 dev/syscons/scvtb.c		optional	sc
 dev/uart/uart_cpu_amd64.c	optional	uart
+dev/wpi/if_wpi.c		optional	wpi
 isa/syscons_isa.c		optional	sc
 isa/vga_isa.c			optional	vga
 kern/link_elf_obj.c		standard

==== //depot/projects/zcopybpf/src/sys/conf/files.i386#6 (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.584 2007/10/26 03:23:52 peter Exp $
+# $FreeBSD: src/sys/conf/files.i386,v 1.586 2007/11/08 22:09:36 benjsc Exp $
 #
 # The long compile-with and dependency lines are required because of
 # limitations in config: backslash-newline doesn't work in strings, and
@@ -148,6 +148,7 @@
 dev/ar/if_ar_pci.c		optional ar pci
 dev/arl/if_arl.c		optional arl
 dev/arl/if_arl_isa.c		optional arl isa
+dev/asmc/asmc.c			optional asmc isa
 dev/atkbdc/atkbd.c		optional atkbd atkbdc
 dev/atkbdc/atkbd_atkbdc.c	optional atkbd atkbdc
 dev/atkbdc/atkbdc.c		optional atkbdc
@@ -234,6 +235,7 @@
 dev/syscons/scvtb.c		optional sc
 dev/uart/uart_cpu_i386.c	optional uart
 dev/acpica/acpi_if.m		standard
+dev/wpi/if_wpi.c		optional wpi
 i386/acpica/OsdEnvironment.c	optional acpi
 i386/acpica/acpi_machdep.c	optional acpi
 i386/acpica/acpi_wakeup.c	optional acpi

==== //depot/projects/zcopybpf/src/sys/contrib/opensolaris/uts/common/fs/zfs/arc.c#5 (text+ko) ====

@@ -2804,12 +2804,12 @@
 	if (((uint64_t)physmem * PAGESIZE) < (256 + 128 + 64) * (1 << 20)) {
 		printf("ZFS WARNING: Recommended minimum RAM size is 512MB; "
 		    "expect unstable behavior.\n");
-	} else if (kmem_size() < 256 * (1 << 20)) {
-		printf("ZFS WARNING: Recommended minimum kmem_size is 256MB; "
+	} else if (kmem_size() < 512 * (1 << 20)) {
+		printf("ZFS WARNING: Recommended minimum kmem_size is 512MB; "
 		    "expect unstable behavior.\n");
-		printf("             Consider tuning vm.kmem_size or "
-		    "vm.kmem_size_min\n");
-		printf("             in /boot/loader.conf.\n");
+		printf("	     Consider tuning vm.kmem_size and "
+		    "vm.kmem_size_max\n");
+		printf("	     in /boot/loader.conf.\n");
 	}
 #endif
 }

==== //depot/projects/zcopybpf/src/sys/contrib/opensolaris/uts/common/fs/zfs/vdev.c#3 (text+ko) ====

@@ -1846,6 +1846,17 @@
 	vd->vdev_state = state;
 	vd->vdev_stat.vs_aux = aux;
 
+	/*
+	 * If we are setting the vdev state to anything but an open state, then
+	 * always close the underlying device.  Otherwise, we keep accessible
+	 * but invalid devices open forever.  We don't call vdev_close() itself,
+	 * because that implies some extra checks (offline, etc) that we don't
+	 * want here.  This is limited to leaf devices, because otherwise
+	 * closing the device will affect other children.
+	 */
+	if (vdev_is_dead(vd) && vd->vdev_ops->vdev_op_leaf)
+		vd->vdev_ops->vdev_op_close(vd);
+
 	if (state == VDEV_STATE_CANT_OPEN) {
 		/*
 		 * If we fail to open a vdev during an import, we mark it as

==== //depot/projects/zcopybpf/src/sys/dev/acpica/acpi_ec.c#7 (text+ko) ====

@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi_ec.c,v 1.79 2007/10/25 20:02:38 takawata Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi_ec.c,v 1.80 2007/11/08 21:20:34 njl Exp $");
 
 #include "opt_acpi.h"
 #include <sys/param.h>
@@ -556,7 +556,6 @@
     sc = device_get_softc(dev);
     sc->ec_suspending = TRUE;
     return (0);
-
 }
 
 static int
@@ -567,7 +566,6 @@
     sc = device_get_softc(dev);
     sc->ec_suspending = FALSE;
     return (0);
-
 }
 
 static int

==== //depot/projects/zcopybpf/src/sys/dev/ciss/ciss.c#7 (text+ko) ====

@@ -24,7 +24,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- *	$FreeBSD: src/sys/dev/ciss/ciss.c,v 1.84 2007/10/20 23:23:14 julian Exp $
+ *	$FreeBSD: src/sys/dev/ciss/ciss.c,v 1.85 2007/11/05 13:54:23 iwasaki Exp $
  */
 
 /*
@@ -183,6 +183,7 @@
 
 /* periodic status monitoring */
 static void	ciss_periodic(void *arg);
+static void	ciss_nop_complete(struct ciss_request *cr);
 static void	ciss_disable_adapter(struct ciss_softc *sc);
 static void	ciss_notify_event(struct ciss_softc *sc);
 static void	ciss_notify_complete(struct ciss_request *cr);
@@ -3100,6 +3101,7 @@
      */
     if ((error = ciss_get_request(sc, &cr)) == 0) {
 	cc = CISS_FIND_COMMAND(cr);
+	cr->cr_complete = ciss_nop_complete;
 	cc->cdb.cdb_length = 1;
 	cc->cdb.type = CISS_CDB_TYPE_MESSAGE;
 	cc->cdb.attribute = CISS_CDB_ATTRIBUTE_SIMPLE;
@@ -3107,11 +3109,9 @@
 	cc->cdb.timeout = 0;
 	cc->cdb.cdb[0] = CISS_OPCODE_MESSAGE_NOP;
 
-	if ((error = ciss_synch_request(cr, 10 * 1000)) != 0) {
+	if ((error = ciss_start(cr)) != 0) {
 	    ciss_printf(sc, "SENDING NOP MESSAGE FAILED\n");
 	}
-
-	ciss_release_request(cr);
     }
 
     /*
@@ -3129,6 +3129,19 @@
     callout_reset(&sc->ciss_periodic, CISS_HEARTBEAT_RATE * hz, ciss_periodic, sc);
 }
 
+static void
+ciss_nop_complete(struct ciss_request *cr)
+{
+    struct ciss_softc		*sc;
+
+    sc = cr->cr_sc;
+    if (ciss_report_request(cr, NULL, NULL) != 0) {
+	ciss_printf(sc, "SENDING NOP MESSAGE FAILED\n");
+    }
+
+    ciss_release_request(cr);
+}
+
 /************************************************************************
  * Disable the adapter.
  *

==== //depot/projects/zcopybpf/src/sys/dev/isp/isp_sbus.c#5 (text+ko) ====

@@ -29,7 +29,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/isp/isp_sbus.c,v 1.35 2007/05/11 13:47:28 mjacob Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/isp/isp_sbus.c,v 1.36 2007/11/05 11:22:18 scottl Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -327,21 +327,26 @@
 	/*
 	 * Make sure we're in reset state.
 	 */
+	ISP_LOCK(isp);
 	isp_reset(isp);
 	if (isp->isp_state != ISP_RESETSTATE) {
 		isp_uninit(isp);
+		ISP_UNLOCK(isp);
 		goto bad;
 	}
 	isp_init(isp);
 	if (isp->isp_role != ISP_ROLE_NONE && isp->isp_state != ISP_INITSTATE) {
 		isp_uninit(isp);
+		ISP_UNLOCK(isp);
 		goto bad;
 	}
 	isp_attach(isp);
 	if (isp->isp_role != ISP_ROLE_NONE && isp->isp_state != ISP_RUNSTATE) {
 		isp_uninit(isp);
+		ISP_UNLOCK(isp);
 		goto bad;
 	}
+	ISP_UNLOCK(isp);
 	return (0);
 
 bad:

==== //depot/projects/zcopybpf/src/sys/dev/md/md.c#4 (text+ko) ====

@@ -6,7 +6,7 @@
  * this stuff is worth it, you can buy me a beer in return.   Poul-Henning Kamp
  * ----------------------------------------------------------------------------
  *
- * $FreeBSD: src/sys/dev/md/md.c,v 1.170 2007/10/20 23:23:16 julian Exp $
+ * $FreeBSD: src/sys/dev/md/md.c,v 1.171 2007/11/07 22:47:41 sobomax Exp $
  *
  */
 
@@ -60,6 +60,7 @@
 #include <sys/systm.h>
 #include <sys/bio.h>
 #include <sys/conf.h>
+#include <sys/devicestat.h>
 #include <sys/fcntl.h>
 #include <sys/kernel.h>
 #include <sys/kthread.h>
@@ -181,6 +182,7 @@
 	struct g_geom *gp;
 	struct g_provider *pp;
 	int (*start)(struct md_s *sc, struct bio *bp);
+	struct devstat *devstat;
 
 	/* MD_MALLOC related fields */
 	struct indir *indir;
@@ -392,6 +394,8 @@
 	struct md_s *sc;
 
 	sc = bp->bio_to->geom->softc;
+	if ((bp->bio_cmd == BIO_READ) || (bp->bio_cmd == BIO_WRITE))
+		devstat_start_transaction_bio(sc->devstat, bp);
 	mtx_lock(&sc->queue_mtx);
 	bioq_disksort(&sc->bio_queue, bp);
 	mtx_unlock(&sc->queue_mtx);
@@ -725,6 +729,8 @@
 		if (error != -1) {
 			bp->bio_completed = bp->bio_length;
 			g_io_deliver(bp, error);
+			if ((bp->bio_cmd == BIO_READ) || (bp->bio_cmd == BIO_WRITE))
+				devstat_end_transaction_bio(sc->devstat, bp);
 		}
 	}
 }
@@ -792,6 +798,8 @@

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


More information about the p4-projects mailing list