PERFORCE change 118434 for review

Scott Long scottl at FreeBSD.org
Thu Apr 19 21:54:51 UTC 2007


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

Change 118434 by scottl at scottl-x64 on 2007/04/19 21:54:24

	IFC

Affected files ...

.. //depot/projects/scottl-camlock/src/sys/amd64/amd64/busdma_machdep.c#10 integrate
.. //depot/projects/scottl-camlock/src/sys/amd64/linux32/linux32_dummy.c#8 integrate
.. //depot/projects/scottl-camlock/src/sys/amd64/linux32/linux32_machdep.c#11 integrate
.. //depot/projects/scottl-camlock/src/sys/bsm/audit.h#8 integrate
.. //depot/projects/scottl-camlock/src/sys/bsm/audit_internal.h#6 integrate
.. //depot/projects/scottl-camlock/src/sys/bsm/audit_kevents.h#8 integrate
.. //depot/projects/scottl-camlock/src/sys/bsm/audit_record.h#7 integrate
.. //depot/projects/scottl-camlock/src/sys/cam/cam_sim.c#11 integrate
.. //depot/projects/scottl-camlock/src/sys/cam/cam_sim.h#10 integrate
.. //depot/projects/scottl-camlock/src/sys/cam/cam_xpt.c#59 integrate
.. //depot/projects/scottl-camlock/src/sys/cam/cam_xpt_periph.h#10 integrate
.. //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_da.c#33 integrate
.. //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_low.c#13 integrate
.. //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_pass.c#24 integrate
.. //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_pt.c#9 integrate
.. //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_sa.c#14 integrate
.. //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_sg.c#9 integrate
.. //depot/projects/scottl-camlock/src/sys/compat/opensolaris/kern/opensolaris_vfs.c#2 integrate
.. //depot/projects/scottl-camlock/src/sys/contrib/opensolaris/uts/common/fs/dnlc.c#4 integrate
.. //depot/projects/scottl-camlock/src/sys/contrib/opensolaris/uts/common/fs/zfs/spa.c#3 integrate
.. //depot/projects/scottl-camlock/src/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c#3 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/aic7xxx/aic7770.c#6 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/aic7xxx/aic79xx.c#9 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/aic7xxx/aic79xx.h#8 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/aic7xxx/aic79xx_osm.c#18 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/aic7xxx/aic79xx_osm.h#12 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/aic7xxx/aic79xx_pci.c#8 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/aic7xxx/aic7xxx.c#9 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/aic7xxx/aic7xxx.h#6 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/aic7xxx/aic7xxx_inline.h#4 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/aic7xxx/aic7xxx_osm.c#16 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/aic7xxx/aic7xxx_osm.h#13 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/aic7xxx/aic7xxx_pci.c#6 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/aic7xxx/aic_osm_lib.c#8 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/aic7xxx/aic_osm_lib.h#8 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/ath/if_ath.c#17 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/hwpmc/hwpmc_logging.c#4 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/hwpmc/hwpmc_mod.c#7 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/hwpmc/hwpmc_piv.c#4 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/isp/isp_freebsd.c#21 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/mpt/mpt_cam.c#24 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/ral/rt2560.c#7 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/re/if_re.c#18 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/sound/isa/ad1816.c#9 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/sound/isa/ess.c#9 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/sound/isa/mss.c#9 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/sound/isa/sb16.c#8 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/sound/isa/sb8.c#8 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/sound/pci/als4000.c#7 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/sound/pci/atiixp.c#7 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/sound/pci/au88x0.c#6 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/sound/pci/aureal.c#6 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/sound/pci/cmi.c#13 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/sound/pci/cs4281.c#6 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/sound/pci/csapcm.c#8 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/sound/pci/ds1.c#8 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/sound/pci/emu10k1.c#10 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/sound/pci/emu10kx-pcm.c#4 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/sound/pci/es137x.c#10 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/sound/pci/fm801.c#7 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/sound/pci/hda/hdac.c#6 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/sound/pci/ich.c#15 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/sound/pci/maestro3.c#7 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/sound/pci/solo.c#8 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/sound/pci/t4dwave.c#7 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/sound/pci/via8233.c#12 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/sound/pci/via82c686.c#7 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/sound/pci/vibes.c#7 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/sound/pcm/ac97.c#9 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/sound/pcm/ac97.h#5 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/sound/pcm/ac97_patch.c#6 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/sound/pcm/ac97_patch.h#6 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/sound/pcm/buffer.c#10 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/sound/pcm/buffer.h#7 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/sound/pcm/sound.h#13 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/sound/sbus/cs4231.c#5 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/usb/if_ural.c#13 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/wi/if_wi.c#12 integrate
.. //depot/projects/scottl-camlock/src/sys/i386/i386/bios.c#5 integrate
.. //depot/projects/scottl-camlock/src/sys/i386/i386/busdma_machdep.c#10 integrate
.. //depot/projects/scottl-camlock/src/sys/i386/i386/identcpu.c#14 integrate
.. //depot/projects/scottl-camlock/src/sys/isa/isa_common.c#6 integrate
.. //depot/projects/scottl-camlock/src/sys/kern/kern_intr.c#13 integrate
.. //depot/projects/scottl-camlock/src/sys/kern/subr_witness.c#15 integrate
.. //depot/projects/scottl-camlock/src/sys/kern/uipc_syscalls.c#18 integrate
.. //depot/projects/scottl-camlock/src/sys/kern/vfs_mount.c#20 integrate
.. //depot/projects/scottl-camlock/src/sys/netinet/ip_fw2.c#18 integrate
.. //depot/projects/scottl-camlock/src/sys/netinet/sctp_indata.c#6 integrate
.. //depot/projects/scottl-camlock/src/sys/netinet/sctp_input.c#6 integrate
.. //depot/projects/scottl-camlock/src/sys/netinet/sctp_lock_bsd.h#4 integrate
.. //depot/projects/scottl-camlock/src/sys/netinet/sctp_output.c#7 integrate
.. //depot/projects/scottl-camlock/src/sys/netinet/sctp_pcb.c#6 integrate
.. //depot/projects/scottl-camlock/src/sys/netinet/sctp_structs.h#6 integrate
.. //depot/projects/scottl-camlock/src/sys/netinet/sctp_uio.h#7 integrate
.. //depot/projects/scottl-camlock/src/sys/netinet/sctp_usrreq.c#6 integrate
.. //depot/projects/scottl-camlock/src/sys/netinet/sctp_var.h#6 integrate
.. //depot/projects/scottl-camlock/src/sys/netinet/sctputil.c#6 integrate
.. //depot/projects/scottl-camlock/src/sys/netinet/sctputil.h#5 integrate
.. //depot/projects/scottl-camlock/src/sys/netinet/tcp_subr.c#14 integrate
.. //depot/projects/scottl-camlock/src/sys/netinet/tcp_syncache.c#17 integrate
.. //depot/projects/scottl-camlock/src/sys/pci/if_rlreg.h#13 integrate
.. //depot/projects/scottl-camlock/src/sys/pci/if_vr.c#9 integrate
.. //depot/projects/scottl-camlock/src/sys/pci/if_vrreg.h#9 integrate
.. //depot/projects/scottl-camlock/src/sys/pci/intpm.c#6 integrate
.. //depot/projects/scottl-camlock/src/sys/security/audit/audit_bsm_token.c#10 integrate
.. //depot/projects/scottl-camlock/src/sys/sys/interrupt.h#9 integrate
.. //depot/projects/scottl-camlock/src/sys/sys/mount.h#15 integrate
.. //depot/projects/scottl-camlock/src/sys/sys/socket.h#9 integrate
.. //depot/projects/scottl-camlock/src/sys/vm/vm_contig.c#12 integrate
.. //depot/projects/scottl-camlock/src/sys/vm/vm_param.h#4 integrate

Differences ...

==== //depot/projects/scottl-camlock/src/sys/amd64/amd64/busdma_machdep.c#10 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/busdma_machdep.c,v 1.79 2007/03/06 18:28:42 scottl Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/busdma_machdep.c,v 1.80 2007/04/17 21:05:34 jhb Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -48,6 +48,7 @@
 #include <machine/atomic.h>
 #include <machine/bus.h>
 #include <machine/md_var.h>
+#include <machine/specialreg.h>
 
 #define MAX_BPAGES 8192
 
@@ -522,6 +523,9 @@
 	} else if ((uintptr_t)*vaddr & (dmat->alignment - 1)) {
 		printf("bus_dmamem_alloc failed to align memory properly.\n");
 	}
+	if (flags & BUS_DMA_NOCACHE)
+		pmap_change_attr((vm_offset_t)*vaddr, dmat->maxsize,
+		    PAT_UNCACHEABLE);
 	CTR4(KTR_BUSDMA, "%s: tag %p tag flags 0x%x error %d",
 	    __func__, dmat, dmat->flags, ENOMEM);
 	return (0);
@@ -540,6 +544,7 @@
 	 */
 	if (map != NULL)
 		panic("bus_dmamem_free: Invalid map freed\n");
+	pmap_change_attr((vm_offset_t)vaddr, dmat->maxsize, PAT_WRITE_BACK);
 	if ((dmat->maxsize <= PAGE_SIZE) &&
 	   (dmat->alignment < dmat->maxsize) &&
 	    dmat->lowaddr >= ptoa((vm_paddr_t)Maxmem))

==== //depot/projects/scottl-camlock/src/sys/amd64/linux32/linux32_dummy.c#8 (text+ko) ====

@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/linux32/linux32_dummy.c,v 1.8 2007/03/29 02:11:46 julian Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/linux32/linux32_dummy.c,v 1.9 2007/04/18 18:08:12 jkim Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -64,7 +64,6 @@
 DUMMY(mincore);
 DUMMY(fadvise64);
 DUMMY(ptrace);
-DUMMY(settimeofday);
 DUMMY(lookup_dcookie);
 DUMMY(epoll_create);
 DUMMY(epoll_ctl);

==== //depot/projects/scottl-camlock/src/sys/amd64/linux32/linux32_machdep.c#11 (text+ko) ====

@@ -29,7 +29,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/linux32/linux32_machdep.c,v 1.39 2007/03/30 17:27:13 jkim Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/linux32/linux32_machdep.c,v 1.42 2007/04/18 20:12:05 jkim Exp $");
 
 #include <sys/param.h>
 #include <sys/kernel.h>
@@ -252,7 +252,7 @@
 	if (iovcnt > UIO_MAXIOV)
 		return (EINVAL);
 	iovlen = iovcnt * sizeof(struct iovec);
-	uio = malloc(iovlen + sizeof *uio, M_IOV, M_WAITOK);
+	uio = malloc(iovlen + sizeof(*uio), M_IOV, M_WAITOK);
 	iov = (struct iovec *)(uio + 1);
 	for (i = 0; i < iovcnt; i++) {
 		error = copyin(&iovp[i], &iov32, sizeof(struct iovec32));
@@ -526,7 +526,9 @@
 
 	td2 = FIRST_THREAD_IN_PROC(p2);
 
-	/* make it run */
+	/*
+	 * Make this runnable after we are finished with it.
+	 */
 	mtx_lock_spin(&sched_lock);
 	TD_SET_CAN_RUN(td2);
 	sched_add(td2, SRQ_BORING);
@@ -572,8 +574,8 @@
 	/*
 	 * XXX: In Linux, sharing of fs info (chroot/cwd/umask)
 	 * and open files is independant.  In FreeBSD, its in one
-	 * structure but in reality it does not make any problems
-	 * because both of these flags are set at once usually.
+	 * structure but in reality it does not cause any problems
+	 * because both of these flags are usually set together.
 	 */
 	if (!(args->flags & (LINUX_CLONE_FILES | LINUX_CLONE_FS)))
 		ff |= RFFDG;
@@ -660,15 +662,15 @@
 	if (args->flags & LINUX_CLONE_SETTLS) {
 		struct user_segment_descriptor sd;
 		struct l_user_desc info;
-	   	int a[2];
+		int a[2];
 
-	   	error = copyin((void *)td->td_frame->tf_rsi, &info,
+		error = copyin((void *)td->td_frame->tf_rsi, &info,
 		    sizeof(struct l_user_desc));
 		if (error) {
 			printf(LMSG("copyin failed!"));
 		} else {
 			/* We might copy out the entry_number as GUGS32_SEL. */
-		   	info.entry_number = GUGS32_SEL;
+			info.entry_number = GUGS32_SEL;
 			error = copyout(&info, (void *)td->td_frame->tf_rsi,
 			    sizeof(struct l_user_desc));
 			if (error)
@@ -871,7 +873,7 @@
 		 *
 		 * Our mmap with MAP_STACK takes addr as the maximum
 		 * downsize limit on BOS, and as len the max size of
-		 * the region.  It them maps the top SGROWSIZ bytes,
+		 * the region.  It then maps the top SGROWSIZ bytes,
 		 * and auto grows the region down, up to the limit
 		 * in addr.
 		 *
@@ -1167,17 +1169,44 @@
 		microtime(&atv);
 		atv32.tv_sec = atv.tv_sec;
 		atv32.tv_usec = atv.tv_usec;
-		error = copyout(&atv32, uap->tp, sizeof (atv32));
+		error = copyout(&atv32, uap->tp, sizeof(atv32));
 	}
 	if (error == 0 && uap->tzp != NULL) {
 		rtz.tz_minuteswest = tz_minuteswest;
 		rtz.tz_dsttime = tz_dsttime;
-		error = copyout(&rtz, uap->tzp, sizeof (rtz));
+		error = copyout(&rtz, uap->tzp, sizeof(rtz));
 	}
 	return (error);
 }
 
 int
+linux_settimeofday(struct thread *td, struct linux_settimeofday_args *uap)
+{
+	l_timeval atv32;
+	struct timeval atv, *tvp;
+	struct timezone atz, *tzp;
+	int error;
+
+	if (uap->tp) {
+		error = copyin(uap->tp, &atv32, sizeof(atv32));
+		if (error)
+			return (error);
+		atv.tv_sec = atv32.tv_sec;
+		atv.tv_usec = atv32.tv_usec;
+		tvp = &atv;
+	} else
+		tvp = NULL;
+	if (uap->tzp) {
+		error = copyin(uap->tzp, &atz, sizeof(atz));
+		if (error)
+			return (error);
+		tzp = &atz;
+	} else
+		tzp = NULL;
+	return (kern_settimeofday(td, tvp, tzp));
+}
+
+int
 linux_getrusage(struct thread *td, struct linux_getrusage_args *uap)
 {
 	struct l_rusage s32;
@@ -1242,7 +1271,7 @@
 
 #ifdef DEBUG
 	if (ldebug(set_thread_area))
-	   	printf(ARGS(set_thread_area, "%i, %x, %x, %i, %i, %i, "
+		printf(ARGS(set_thread_area, "%i, %x, %x, %i, %i, %i, "
 		    "%i, %i, %i"), info.entry_number, info.base_addr,
 		    info.limit, info.seg_32bit, info.contents,
 		    info.read_exec_only, info.limit_in_pages,
@@ -1261,9 +1290,10 @@
 	 * The tls_array[] is used only in [gs]et_thread_area() syscalls and
 	 * for loading the GDT descriptors. We use just one GDT descriptor
 	 * for TLS, so we will load just one.
-	 * XXX: This doesnt work when user-space process tries to use more
+	 *
+	 * XXX: This doesn't work when a user space process tries to use more
 	 * than one TLS segment. Comment in the Linux source says wine might
-	 * do that.
+	 * do this.
 	 */
 
 	/*
@@ -1284,8 +1314,9 @@
 
 	/*
 	 * We have to copy out the GDT entry we use.
-	 * XXX: What if userspace program does not check return value and
-	 * tries to use 6, 7 or 8?
+	 *
+	 * XXX: What if a user space program does not check the return value
+	 * and tries to use 6, 7 or 8?
 	 */
 	error = copyout(&info, args->desc, sizeof(struct l_user_desc));
 	if (error)

==== //depot/projects/scottl-camlock/src/sys/bsm/audit.h#8 (text+ko) ====

@@ -30,8 +30,8 @@
  *
  * @APPLE_BSD_LICENSE_HEADER_END@
  *
- * $P4: //depot/projects/scottl-camlock/src/sys/bsm/audit.h#7 $
- * $FreeBSD: src/sys/bsm/audit.h,v 1.6 2006/09/21 07:27:02 rwatson Exp $
+ * P4: //depot/projects/trustedbsd/audit3/sys/bsm/audit.h#36
+ * $FreeBSD: src/sys/bsm/audit.h,v 1.8 2007/04/17 12:27:08 rwatson Exp $
  */
 
 #ifndef _BSM_AUDIT_H

==== //depot/projects/scottl-camlock/src/sys/bsm/audit_internal.h#6 (text) ====

@@ -34,8 +34,8 @@
  *
  * @APPLE_BSD_LICENSE_HEADER_END@
  *
- * $P4: //depot/projects/trustedbsd/audit3/sys/bsm/audit_internal.h#14 $
- * $FreeBSD: src/sys/bsm/audit_internal.h,v 1.5 2006/09/21 07:27:02 rwatson Exp $
+ * P4: //depot/projects/trustedbsd/audit3/sys/bsm/audit_internal.h#16
+ * $FreeBSD: src/sys/bsm/audit_internal.h,v 1.7 2007/04/17 12:27:08 rwatson Exp $
  */
 
 #ifndef _AUDIT_INTERNAL_H

==== //depot/projects/scottl-camlock/src/sys/bsm/audit_kevents.h#8 (text+ko) ====

@@ -30,8 +30,8 @@
  *
  * @APPLE_BSD_LICENSE_HEADER_END@
  *
- * $P4: //depot/projects/scottl-camlock/src/sys/bsm/audit_kevents.h#7 $
- * $FreeBSD: src/sys/bsm/audit_kevents.h,v 1.9 2006/09/25 12:22:07 rwatson Exp $
+ * P4: //depot/projects/trustedbsd/audit3/sys/bsm/audit_kevents.h#32
+ * $FreeBSD: src/sys/bsm/audit_kevents.h,v 1.11 2007/04/17 12:27:08 rwatson Exp $
  */
 
 #ifndef _BSM_AUDIT_KEVENTS_H_
@@ -475,6 +475,28 @@
 #define	AUE_READDIR		43118	/* Linux. */
 #define	AUE_IOPL		43119	/* Linux. */
 #define	AUE_VM86		43120	/* Linux. */
+#define	AUE_MAC_GET_PROC	43121	/* FreeBSD. */
+#define	AUE_MAC_SET_PROC	43122	/* FreeBSD. */
+#define	AUE_MAC_GET_FD		43123	/* FreeBSD. */
+#define	AUE_MAC_GET_FILE	43124	/* FreeBSD. */
+#define	AUE_MAC_SET_FD		43125	/* FreeBSD. */
+#define	AUE_MAC_SET_FILE	43126	/* FreeBSD. */
+#define	AUE_MAC_SYSCALL		43127	/* FreeBSD. */
+#define	AUE_MAC_GET_PID		43128	/* FreeBSD. */
+#define	AUE_MAC_GET_LINK	43129	/* FreeBSD. */
+#define	AUE_MAC_SET_LINK	43130	/* FreeBSD. */
+#define	AUE_MAC_EXECVE		43131	/* FreeBSD. */
+#define	AUE_GETPATH_FROMFD	43132	/* FreeBSD. */
+#define	AUE_GETPATH_FROMADDR	43133	/* FreeBSD. */
+#define	AUE_MQ_OPEN		43134	/* FreeBSD. */
+#define	AUE_MQ_SETATTR		43135	/* FreeBSD. */
+#define	AUE_MQ_TIMEDRECEIVE	43136	/* FreeBSD. */
+#define	AUE_MQ_TIMEDSEND	43137	/* FreeBSD. */
+#define	AUE_MQ_NOTIFY		43138	/* FreeBSD. */
+#define	AUE_MQ_UNLINK		43139	/* FreeBSD. */
+#define	AUE_LISTEN		43140	/* FreeBSD/Darwin/Linux. */
+#define	AUE_MLOCKALL		43141	/* FreeBSD. */
+#define	AUE_MUNLOCKALL		43142	/* FreeBSD. */
 
 /*
  * Darwin BSM uses a number of AUE_O_* definitions, which are aliased to the
@@ -572,16 +594,13 @@
 #define	AUE_GETSOCKOPT		AUE_NULL
 #define	AUE_GTSOCKOPT		AUE_GETSOCKOPT	/* XXX: Typo in Darwin. */
 #define	AUE_ISSETUGID		AUE_NULL
-#define	AUE_LISTEN		AUE_NULL
 #define	AUE_LSTATV		AUE_NULL
 #define	AUE_MADVISE		AUE_NULL
 #define	AUE_MINCORE		AUE_NULL
 #define	AUE_MKCOMPLEX		AUE_NULL
-#define	AUE_MLOCKALL		AUE_NULL
 #define	AUE_MODWATCH		AUE_NULL
 #define	AUE_MSGCL		AUE_NULL
 #define	AUE_MSYNC		AUE_NULL
-#define	AUE_MUNLOCKALL		AUE_NULL
 #define	AUE_PREAD		AUE_NULL
 #define	AUE_PWRITE		AUE_NULL
 #define	AUE_PREADV		AUE_NULL

==== //depot/projects/scottl-camlock/src/sys/bsm/audit_record.h#7 (text) ====

@@ -30,8 +30,8 @@
  *
  * @APPLE_BSD_LICENSE_HEADER_END@
  *
- * $P4: //depot/projects/trustedbsd/audit3/sys/bsm/audit_record.h#21 $
- * $FreeBSD: src/sys/bsm/audit_record.h,v 1.6 2006/09/21 07:27:02 rwatson Exp $
+ * P4: //depot/projects/trustedbsd/audit3/sys/bsm/audit_record.h#24
+ * $FreeBSD: src/sys/bsm/audit_record.h,v 1.9 2007/04/17 12:27:08 rwatson Exp $
  */
 
 #ifndef _BSM_AUDIT_RECORD_H_
@@ -86,6 +86,7 @@
 /* XXXRW: Additional X11 tokens not defined? */
 #define	AUT_CMD			0x51
 #define	AUT_EXIT		0x52
+#define	AUT_ZONENAME		0x60
 /* XXXRW: OpenBSM AUT_HOST 0x70? */
 #define	AUT_ARG64		0x71
 #define	AUT_RETURN64		0x72
@@ -247,6 +248,8 @@
 
 token_t	*au_to_header32_tm(int rec_size, au_event_t e_type, au_emod_t e_mod,
 	    struct timeval tm);
+token_t	*au_to_header64_tm(int rec_size, au_event_t e_type, au_emod_t e_mod,
+	    struct timeval tm);
 #if !defined(KERNEL) && !defined(_KERNEL)
 token_t	*au_to_header(int rec_size, au_event_t e_type, au_emod_t e_mod);
 token_t	*au_to_header32(int rec_size, au_event_t e_type, au_emod_t e_mod);
@@ -329,6 +332,7 @@
 token_t	*au_to_text(char *text);
 token_t	*au_to_kevent(struct kevent *kev);
 token_t	*au_to_trailer(int rec_size);
+token_t	*au_to_zonename(char *zonename);
 
 __END_DECLS
 

==== //depot/projects/scottl-camlock/src/sys/cam/cam_sim.c#11 (text+ko) ====

@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/cam/cam_sim.c,v 1.10 2007/04/15 08:49:09 scottl Exp $");
+__FBSDID("$FreeBSD: src/sys/cam/cam_sim.c,v 1.11 2007/04/19 14:28:43 scottl Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -95,6 +95,7 @@
 	}
 
 	SLIST_INIT(&sim->ccb_freeq);
+	TAILQ_INIT(&sim->sim_doneq);
 
 	return (sim);
 }

==== //depot/projects/scottl-camlock/src/sys/cam/cam_sim.h#10 (text+ko) ====

@@ -25,7 +25,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/cam/cam_sim.h,v 1.7 2007/04/15 08:49:09 scottl Exp $
+ * $FreeBSD: src/sys/cam/cam_sim.h,v 1.8 2007/04/19 14:28:43 scottl Exp $
  */
 
 #ifndef _CAM_CAM_SIM_H
@@ -92,6 +92,8 @@
 	const char		*sim_name;
 	void			*softc;
 	struct mtx		*mtx;
+	TAILQ_HEAD(, ccb_hdr)	sim_doneq;
+	TAILQ_ENTRY(cam_sim)	links;
 	u_int32_t		path_id;/* The Boot device may set this to 0? */
 	u_int32_t		unit_number;
 	u_int32_t		bus_id;
@@ -100,6 +102,7 @@
 	u_int32_t		flags;
 #define	CAM_SIM_REL_TIMEOUT_PENDING	0x01
 #define	CAM_SIM_MPSAFE			0x02
+#define CAM_SIM_ON_DONEQ		0x04
 	struct callout		callout;
 	struct cam_devq 	*devq;	/* Device Queue to use for this SIM */
 

==== //depot/projects/scottl-camlock/src/sys/cam/cam_xpt.c#59 (text+ko) ====

@@ -28,7 +28,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/cam/cam_xpt.c,v 1.177 2007/04/16 19:55:36 scottl Exp $");
+__FBSDID("$FreeBSD: src/sys/cam/cam_xpt.c,v 1.180 2007/04/19 14:45:37 scottl Exp $");
 
 #include <sys/param.h>
 #include <sys/bus.h>
@@ -665,8 +665,9 @@
 
 /* Queues for our software interrupt handler */
 typedef TAILQ_HEAD(cam_isrq, ccb_hdr) cam_isrq_t;
-static cam_isrq_t cam_bioq;
-static struct mtx cam_bioq_lock;
+typedef TAILQ_HEAD(cam_simq, cam_sim) cam_simq_t;
+static cam_simq_t cam_simq;
+static struct mtx cam_simq_lock;
 
 /* Pointers to software interrupt handlers */
 static void *cambio_ih;
@@ -821,6 +822,7 @@
 static void	 xptaction(struct cam_sim *sim, union ccb *work_ccb);
 static void	 xptpoll(struct cam_sim *sim);
 static void	 camisr(void *);
+static void	 camisr_runqueue(void *);
 static dev_match_ret	xptbusmatch(struct dev_match_pattern *patterns,
 				    u_int num_patterns, struct cam_eb *bus);
 static dev_match_ret	xptdevicematch(struct dev_match_pattern *patterns,
@@ -1072,7 +1074,7 @@
 		case XPT_ENG_INQ:
 		case XPT_SCAN_LUN:
 
-			ccb = xpt_alloc_ccb(bus->sim);
+			ccb = xpt_alloc_ccb();
 
 			CAM_SIM_LOCK(bus->sim);
 
@@ -1472,12 +1474,12 @@
 	cam_status status;
 
 	TAILQ_INIT(&xsoftc.xpt_busses);
-	TAILQ_INIT(&cam_bioq);
+	TAILQ_INIT(&cam_simq);
 	TAILQ_INIT(&xsoftc.ccb_scanq);
 	STAILQ_INIT(&xsoftc.highpowerq);
 	xsoftc.num_highpower = CAM_MAX_HIGHPOWER;
 
-	mtx_init(&cam_bioq_lock, "CAM BIOQ lock", NULL, MTX_DEF);
+	mtx_init(&cam_simq_lock, "CAM SIMQ lock", NULL, MTX_DEF);
 	mtx_init(&xsoftc.xpt_lock, "XPT lock", NULL, MTX_DEF);
 	mtx_init(&xsoftc.xpt_topo_lock, "XPT topology lock", NULL, MTX_DEF);
 
@@ -1551,7 +1553,7 @@
 		printf("xpt_init: failed to create rescan thread\n");
 	}
 	/* Install our software interrupt handlers */
-	swi_add(NULL, "cambio", camisr, &cam_bioq, SWI_CAMBIO, INTR_MPSAFE, &cambio_ih);
+	swi_add(NULL, "cambio", camisr, NULL, SWI_CAMBIO, INTR_MPSAFE, &cambio_ih);
 
 	return (0);
 }
@@ -3639,7 +3641,7 @@
 	   dev->ccbq.dev_openings < 0) && (--timeout > 0)) {
 		DELAY(1000);
 		(*(sim->sim_poll))(sim);
-		camisr(&cam_bioq);
+		camisr_runqueue(&sim->sim_doneq);
 	}
 	
 	dev->ccbq.devq_openings++;
@@ -3649,7 +3651,7 @@
 		xpt_action(start_ccb);
 		while(--timeout > 0) {
 			(*(sim->sim_poll))(sim);
-			camisr(&cam_bioq);
+			camisr_runqueue(&sim->sim_doneq);
 			if ((start_ccb->ccb_h.status  & CAM_STATUS_MASK)
 			    != CAM_REQ_INPROG)
 				break;
@@ -4490,6 +4492,7 @@
 
 	/* The SIM may be gone, so use a dummy SIM for any stray operations. */
 	devq = bus_path.bus->sim->devq;
+	ccbsim = bus_path.bus->sim;
 	bus_path.bus->sim = &cam_dead_sim;
 
 	/* Execute any pending operations now. */
@@ -4504,7 +4507,6 @@
 				devq->active_dev = device;
 				cam_ccbq_remove_ccb(&device->ccbq, work_ccb);
 				cam_ccbq_send_ccb(&device->ccbq, work_ccb);
-				ccbsim = work_ccb->ccb_h.path->bus->sim;
 				(*(ccbsim->sim_action))(ccbsim, work_ccb);
 			}
 
@@ -4516,8 +4518,8 @@
 	}
 
 	/* Make sure all completed CCBs are processed. */
-	while (!TAILQ_EMPTY(&cam_bioq)) {
-		camisr(&cam_bioq);
+	while (!TAILQ_EMPTY(&ccbsim->sim_doneq)) {
+		camisr_runqueue(&ccbsim->sim_doneq);
 
 		/* Repeat the async's for the benefit of any new devices. */
 		xpt_async(AC_LOST_DEVICE, &bus_path, NULL);
@@ -4528,10 +4530,6 @@
 	xpt_release_bus(bus_path.bus);
 	xpt_release_path(&bus_path);
 
-	/* Recheck for more completed CCBs. */
-	while (!TAILQ_EMPTY(&cam_bioq))
-		camisr(&cam_bioq);
-
 	return (CAM_REQ_CMP);
 }
 
@@ -4949,6 +4947,7 @@
 void
 xpt_done(union ccb *done_ccb)
 {
+	struct cam_sim *sim;
 	int s;
 
 	s = splcam();
@@ -4959,13 +4958,19 @@
 		 * Queue up the request for handling by our SWI handler
 		 * any of the "non-immediate" type of ccbs.
 		 */
+		sim = done_ccb->ccb_h.path->bus->sim;
 		switch (done_ccb->ccb_h.path->periph->type) {
 		case CAM_PERIPH_BIO:
-			mtx_lock(&cam_bioq_lock);
-			TAILQ_INSERT_TAIL(&cam_bioq, &done_ccb->ccb_h,
+			TAILQ_INSERT_TAIL(&sim->sim_doneq, &done_ccb->ccb_h,
 					  sim_links.tqe);
 			done_ccb->ccb_h.pinfo.index = CAM_DONEQ_INDEX;
-			mtx_unlock(&cam_bioq_lock);
+			if ((sim->flags & CAM_SIM_ON_DONEQ) == 0) {
+				mtx_lock(&cam_simq_lock);
+				TAILQ_INSERT_TAIL(&cam_simq, sim,
+						  links);
+				sim->flags |= CAM_SIM_ON_DONEQ;
+				mtx_unlock(&cam_simq_lock);
+			}
 			if ((done_ccb->ccb_h.path->periph->flags &
 			    CAM_PERIPH_POLLED) == 0)
 				swi_sched(cambio_ih, 0);
@@ -4979,26 +4984,20 @@
 }
 
 union ccb *
-xpt_alloc_ccb(struct cam_sim *sim)
+xpt_alloc_ccb()
 {
 	union ccb *new_ccb;
 
-	new_ccb = malloc(sizeof(*new_ccb), M_CAMXPT, M_WAITOK);
-	if ((sim != NULL) && ((sim->flags & CAM_SIM_MPSAFE) == 0)) {
-		callout_handle_init(&new_ccb->ccb_h.timeout_ch);
-	}
+	new_ccb = malloc(sizeof(*new_ccb), M_CAMXPT, M_ZERO|M_WAITOK);
 	return (new_ccb);
 }
 
 union ccb *
-xpt_alloc_ccb_nowait(struct cam_sim *sim)
+xpt_alloc_ccb_nowait()
 {
 	union ccb *new_ccb;
 
-	new_ccb = malloc(sizeof(*new_ccb), M_CAMXPT, M_NOWAIT);
-	if ((sim != NULL) && ((sim->flags & CAM_SIM_MPSAFE) == 0)) {
-		callout_handle_init(&new_ccb->ccb_h.timeout_ch);
-	}
+	new_ccb = malloc(sizeof(*new_ccb), M_CAMXPT, M_ZERO|M_NOWAIT);
 	return (new_ccb);
 }
 
@@ -5029,11 +5028,13 @@
 	s = splsoftcam();
 	sim = device->sim;
 	if ((new_ccb = (union ccb *)SLIST_FIRST(&sim->ccb_freeq)) == NULL) {
-		new_ccb = xpt_alloc_ccb_nowait(sim);
+		new_ccb = xpt_alloc_ccb_nowait();
                 if (new_ccb == NULL) {
 			splx(s);
 			return (NULL);
 		}
+		if ((sim->flags & CAM_SIM_MPSAFE) == 0)
+			callout_handle_init(&new_ccb->ccb_h.timeout_ch);
 		SLIST_INSERT_HEAD(&sim->ccb_freeq, &new_ccb->ccb_h,
 				  xpt_links.sle);
 		sim->ccb_count++;
@@ -5353,7 +5354,12 @@
 		u_int	initiator_id;
 
 		/* Find out the characteristics of the bus */
-		work_ccb = xpt_alloc_ccb_nowait(periph->sim);
+		work_ccb = xpt_alloc_ccb_nowait();
+		if (work_ccb == NULL) {
+			request_ccb->ccb_h.status = CAM_RESRC_UNAVAIL;
+			xpt_done(request_ccb);
+			return;
+		}
 		xpt_setup_ccb(&work_ccb->ccb_h, request_ccb->ccb_h.path,
 			      request_ccb->ccb_h.pinfo.priority);
 		work_ccb->ccb_h.func_code = XPT_PATH_INQ;
@@ -5418,7 +5424,14 @@
 				xpt_done(request_ccb);
 				break;
 			}
-			work_ccb = xpt_alloc_ccb_nowait(periph->sim);
+			work_ccb = xpt_alloc_ccb_nowait();
+			if (work_ccb == NULL) {
+				free(scan_info, M_TEMP);
+				xpt_free_path(path);
+				request_ccb->ccb_h.status = CAM_RESRC_UNAVAIL;
+				xpt_done(request_ccb);
+				break;
+			}
 			xpt_setup_ccb(&work_ccb->ccb_h, path,
 				      request_ccb->ccb_h.pinfo.priority);
 			work_ccb->ccb_h.func_code = XPT_SCAN_LUN;
@@ -6970,7 +6983,12 @@
 		cam_status status;
 		int can_negotiate;
 
-		work_ccb = xpt_alloc_ccb_nowait(bus->sim);
+		work_ccb = xpt_alloc_ccb_nowait();
+		if (work_ccb == NULL) {
+			busses_to_config--;
+			xpt_finishconfig(xpt_periph, NULL);
+			return(0);
+		}
 		if ((status = xpt_create_path(&path, xpt_periph, bus->path_id,
 					      CAM_TARGET_WILDCARD,
 					      CAM_LUN_WILDCARD)) !=CAM_REQ_CMP){
@@ -7218,31 +7236,36 @@
 }
 
 static void
-camisr(void *V_queue)
+camisr(void *dummy)
 {
-	cam_isrq_t *oqueue = V_queue;
-	cam_isrq_t queue;
-	int	s;
-	struct	ccb_hdr *ccb_h;
-	struct	cam_sim	*sim;
+	cam_simq_t queue;
+	struct cam_sim *sim;
 
-	/*
-	 * Transfer the ccb_bioq list to a temporary list so we can operate
-	 * on it without needing to lock/unlock on every loop.  The concat
-	 * function with re-init the real list for us.
-	 */
-	s = splcam();
-	mtx_lock(&cam_bioq_lock);
+	mtx_lock(&cam_simq_lock);
 	TAILQ_INIT(&queue);
-	TAILQ_CONCAT(&queue, oqueue, sim_links.tqe);
-	mtx_unlock(&cam_bioq_lock);
+	TAILQ_CONCAT(&queue, &cam_simq, links);
+	mtx_unlock(&cam_simq_lock);
+
+	while ((sim = TAILQ_FIRST(&queue)) != NULL) {
+		TAILQ_REMOVE(&queue, sim, links);
+		mtx_lock(sim->mtx);
+		sim->flags &= ~CAM_SIM_ON_DONEQ;
+		camisr_runqueue(&sim->sim_doneq);
+		mtx_unlock(sim->mtx);
+	}
+}
+
+static void
+camisr_runqueue(void *V_queue)
+{
+	cam_isrq_t *queue = V_queue;
+	struct	ccb_hdr *ccb_h;
 
-	while ((ccb_h = TAILQ_FIRST(&queue)) != NULL) {
+	while ((ccb_h = TAILQ_FIRST(queue)) != NULL) {
 		int	runq;
 
-		TAILQ_REMOVE(&queue, ccb_h, sim_links.tqe);
+		TAILQ_REMOVE(queue, ccb_h, sim_links.tqe);
 		ccb_h->pinfo.index = CAM_UNQUEUED_INDEX;
-		splx(s);
 
 		CAM_DEBUG(ccb_h->path, CAM_DEBUG_TRACE,
 			  ("camisr\n"));
@@ -7277,22 +7300,17 @@
 				mtx_unlock(&xsoftc.xpt_lock);
 		}
 
-		sim = ccb_h->path->bus->sim;
-		mtx_lock(sim->mtx);
-
 		if ((ccb_h->func_code & XPT_FC_USER_CCB) == 0) {
 			struct cam_ed *dev;
 
 			dev = ccb_h->path->device;
 
-			s = splcam();
 			cam_ccbq_ccb_done(&dev->ccbq, (union ccb *)ccb_h);
 
 			if (!SIM_DEAD(ccb_h->path->bus->sim)) {
 				ccb_h->path->bus->sim->devq->send_active--;
 				ccb_h->path->bus->sim->devq->send_openings++;
 			}
-			splx(s);
 			
 			if (((dev->flags & CAM_DEV_REL_ON_COMPLETE) != 0
 			  && (ccb_h->status&CAM_STATUS_MASK) != CAM_REQUEUE_REQ)
@@ -7333,12 +7351,7 @@
 
 		/* Call the peripheral driver's callback */
 		(*ccb_h->cbfcnp)(ccb_h->path->periph, (union ccb *)ccb_h);
-
-		/* Raise IPL for while test */
-		mtx_unlock(sim->mtx);
-		s = splcam();
 	}
-	splx(s);
 }
 
 static void

==== //depot/projects/scottl-camlock/src/sys/cam/cam_xpt_periph.h#10 (text+ko) ====

@@ -27,7 +27,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/cam/cam_xpt_periph.h,v 1.6 2007/04/15 08:49:09 scottl Exp $
+ * $FreeBSD: src/sys/cam/cam_xpt_periph.h,v 1.7 2007/04/18 04:58:52 scottl Exp $
  */
 
 #ifndef _CAM_CAM_XPT_PERIPH_H
@@ -38,8 +38,8 @@
 /* Functions accessed by the peripheral drivers */
 #ifdef _KERNEL
 void		xpt_polled_action(union ccb *ccb);
-union ccb	*xpt_alloc_ccb(struct cam_sim *sim);
-union ccb	*xpt_alloc_ccb_nowait(struct cam_sim *sim);
+union ccb	*xpt_alloc_ccb(void);
+union ccb	*xpt_alloc_ccb_nowait(void);
 void		xpt_free_ccb(union ccb *free_ccb);
 void		xpt_release_ccb(union ccb *released_ccb);
 void		xpt_schedule(struct cam_periph *perph, u_int32_t new_priority);

==== //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_da.c#33 (text+ko) ====

@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/cam/scsi/scsi_da.c,v 1.205 2007/04/16 19:41:14 scottl Exp $");
+__FBSDID("$FreeBSD: src/sys/cam/scsi/scsi_da.c,v 1.206 2007/04/18 05:14:16 scottl Exp $");
 
 #include <sys/param.h>
 
@@ -775,10 +775,13 @@
 	if (periph == NULL)
 		return (ENXIO);
 	softc = (struct da_softc *)periph->softc;
+	cam_periph_lock(periph);
 	secsize = softc->params.secsize;
 	
-	if ((softc->flags & DA_FLAG_PACK_INVALID) != 0)
+	if ((softc->flags & DA_FLAG_PACK_INVALID) != 0) {
+		cam_periph_unlock(periph);
 		return (ENXIO);
+	}
 
 	if (length > 0) {
 		periph->flags |= CAM_PERIPH_POLLED;
@@ -810,6 +813,7 @@
 			periph->flags |= CAM_PERIPH_POLLED;
 			return(EIO);
 		}
+		cam_periph_unlock(periph);
 		return(0);
 	}
 		
@@ -851,6 +855,7 @@
 		}
 	}
 	periph->flags &= ~CAM_PERIPH_POLLED;
+	cam_periph_unlock(periph);
 	return (0);
 }
 
@@ -1977,6 +1982,8 @@
 
 	TAILQ_FOREACH(periph, &dadriver.units, unit_links) {
 		union ccb ccb;
+
+		cam_periph_lock(periph);
 		softc = (struct da_softc *)periph->softc;
 
 		/*
@@ -2027,7 +2034,7 @@
 					 /*reduction*/0,
 					 /*timeout*/0,
 					 /*getcount_only*/0);
-
+		cam_periph_unlock(periph);
 	}
 }
 

==== //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_low.c#13 (text+ko) ====

@@ -2,7 +2,7 @@
 /*	$NetBSD$	*/
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/cam/scsi/scsi_low.c,v 1.27 2007/04/15 08:49:10 scottl Exp $");
+__FBSDID("$FreeBSD: src/sys/cam/scsi/scsi_low.c,v 1.28 2007/04/18 04:58:52 scottl Exp $");
 
 #define	SCSI_LOW_STATICS
 #define	SCSI_LOW_DEBUG
@@ -966,7 +966,7 @@
 	struct scsi_low_softc *slp;
 {
   	struct cam_path *path;
-	union ccb *ccb = xpt_alloc_ccb(NULL);
+	union ccb *ccb = xpt_alloc_ccb();
 	cam_status status;
 
 	bzero(ccb, sizeof(union ccb));

==== //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_pass.c#24 (text+ko) ====

@@ -26,7 +26,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/cam/scsi/scsi_pass.c,v 1.46 2007/04/15 08:49:10 scottl Exp $");
+__FBSDID("$FreeBSD: src/sys/cam/scsi/scsi_pass.c,v 1.47 2007/04/18 04:58:52 scottl Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -490,7 +490,7 @@
 						inccb->ccb_h.pinfo.priority);
 			ccb_malloced = 0;
 		} else {
-			ccb = xpt_alloc_ccb_nowait(periph->sim);
+			ccb = xpt_alloc_ccb_nowait();
 
 			if (ccb != NULL)
 				xpt_setup_ccb(&ccb->ccb_h, periph->path,

==== //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_pt.c#9 (text+ko) ====

@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/cam/scsi/scsi_pt.c,v 1.45 2007/04/15 08:49:10 scottl Exp $");
+__FBSDID("$FreeBSD: src/sys/cam/scsi/scsi_pt.c,v 1.46 2007/04/19 18:14:33 scottl Exp $");
 
 #include <sys/param.h>
 #include <sys/queue.h>
@@ -303,9 +303,11 @@
 			  SID_TYPE(&cgd->inq_data) | DEVSTAT_TYPE_IF_SCSI,
 			  DEVSTAT_PRIORITY_OTHER);
 
+	cam_periph_unlock(periph);
 	softc->dev = make_dev(&pt_cdevsw, periph->unit_number, UID_ROOT,
 			      GID_OPERATOR, 0600, "%s%d", periph->periph_name,
 			      periph->unit_number);
+	cam_periph_lock(periph);
 	softc->dev->si_drv1 = periph;
 
 	/*

==== //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_sa.c#14 (text+ko) ====

@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/cam/scsi/scsi_sa.c,v 1.108 2007/04/15 08:49:10 scottl Exp $");
+__FBSDID("$FreeBSD: src/sys/cam/scsi/scsi_sa.c,v 1.109 2007/04/19 18:14:33 scottl Exp $");
 
 #include <sys/param.h>
 #include <sys/queue.h>
@@ -1521,6 +1521,7 @@

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


More information about the p4-projects mailing list