PERFORCE change 134222 for review

Christian S.J. Peron csjp at FreeBSD.org
Sun Jan 27 10:22:42 PST 2008


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

Change 134222 by csjp at csjp_xor on 2008/01/27 18:22:31

	IFC

Affected files ...

.. //depot/projects/zcopybpf/src/sys/Makefile#6 integrate
.. //depot/projects/zcopybpf/src/sys/compat/freebsd32/freebsd32_proto.h#6 integrate
.. //depot/projects/zcopybpf/src/sys/compat/freebsd32/freebsd32_syscall.h#6 integrate
.. //depot/projects/zcopybpf/src/sys/compat/freebsd32/freebsd32_syscalls.c#6 integrate
.. //depot/projects/zcopybpf/src/sys/compat/freebsd32/freebsd32_sysent.c#6 integrate
.. //depot/projects/zcopybpf/src/sys/compat/freebsd32/syscalls.master#6 integrate
.. //depot/projects/zcopybpf/src/sys/compat/opensolaris/kern/opensolaris_kmem.c#3 integrate
.. //depot/projects/zcopybpf/src/sys/compat/opensolaris/sys/kmem.h#4 integrate
.. //depot/projects/zcopybpf/src/sys/conf/files#18 integrate
.. //depot/projects/zcopybpf/src/sys/conf/options#14 integrate
.. //depot/projects/zcopybpf/src/sys/contrib/opensolaris/uts/common/fs/zfs/arc.c#7 integrate
.. //depot/projects/zcopybpf/src/sys/ddb/db_capture.c#2 integrate
.. //depot/projects/zcopybpf/src/sys/dev/acpica/acpi.c#8 integrate
.. //depot/projects/zcopybpf/src/sys/dev/amr/amr.c#3 integrate
.. //depot/projects/zcopybpf/src/sys/dev/amr/amrreg.h#2 integrate
.. //depot/projects/zcopybpf/src/sys/dev/amr/amrvar.h#3 integrate
.. //depot/projects/zcopybpf/src/sys/dev/cxgb/cxgb_sge.c#9 integrate
.. //depot/projects/zcopybpf/src/sys/dev/cxgb/ulp/tom/cxgb_tcp.h#2 integrate
.. //depot/projects/zcopybpf/src/sys/dev/mii/amphy.c#3 integrate
.. //depot/projects/zcopybpf/src/sys/dev/mii/miidevs#7 integrate
.. //depot/projects/zcopybpf/src/sys/dev/mii/nsphy.c#3 integrate
.. //depot/projects/zcopybpf/src/sys/dev/mii/nsphyter.c#1 branch
.. //depot/projects/zcopybpf/src/sys/dev/mii/nsphyterreg.h#1 branch
.. //depot/projects/zcopybpf/src/sys/dev/mxge/if_mxge.c#10 integrate
.. //depot/projects/zcopybpf/src/sys/dev/mxge/if_mxge_var.h#7 integrate
.. //depot/projects/zcopybpf/src/sys/dev/sf/if_sf.c#2 integrate
.. //depot/projects/zcopybpf/src/sys/dev/sf/if_sfreg.h#2 integrate
.. //depot/projects/zcopybpf/src/sys/dev/sf/starfire_rx.h#1 branch
.. //depot/projects/zcopybpf/src/sys/dev/sf/starfire_tx.h#1 branch
.. //depot/projects/zcopybpf/src/sys/dev/syscons/syscons.c#5 integrate
.. //depot/projects/zcopybpf/src/sys/dev/usb/ehci.c#5 integrate
.. //depot/projects/zcopybpf/src/sys/dev/usb/if_udav.c#6 integrate
.. //depot/projects/zcopybpf/src/sys/dev/usb/uark.c#3 integrate
.. //depot/projects/zcopybpf/src/sys/dev/usb/uftdi.c#4 integrate
.. //depot/projects/zcopybpf/src/sys/dev/usb/uftdireg.h#2 integrate
.. //depot/projects/zcopybpf/src/sys/dev/wpi/if_wpi.c#4 integrate
.. //depot/projects/zcopybpf/src/sys/fs/cd9660/cd9660_vfsops.c#5 integrate
.. //depot/projects/zcopybpf/src/sys/fs/coda/coda_vnops.c#3 integrate
.. //depot/projects/zcopybpf/src/sys/fs/fifofs/fifo_vnops.c#9 integrate
.. //depot/projects/zcopybpf/src/sys/fs/hpfs/hpfs_subr.h#3 integrate
.. //depot/projects/zcopybpf/src/sys/fs/hpfs/hpfs_vfsops.c#7 integrate
.. //depot/projects/zcopybpf/src/sys/fs/msdosfs/msdosfs_denode.c#5 integrate
.. //depot/projects/zcopybpf/src/sys/fs/ntfs/ntfs_subr.c#3 integrate
.. //depot/projects/zcopybpf/src/sys/fs/nullfs/null_vnops.c#6 integrate
.. //depot/projects/zcopybpf/src/sys/fs/nwfs/nwfs_node.c#4 integrate
.. //depot/projects/zcopybpf/src/sys/fs/smbfs/smbfs_node.c#5 integrate
.. //depot/projects/zcopybpf/src/sys/fs/udf/udf_vfsops.c#7 integrate
.. //depot/projects/zcopybpf/src/sys/fs/unionfs/union_subr.c#7 integrate
.. //depot/projects/zcopybpf/src/sys/gnu/fs/ext2fs/ext2_vfsops.c#7 integrate
.. //depot/projects/zcopybpf/src/sys/gnu/fs/reiserfs/reiserfs_inode.c#4 integrate
.. //depot/projects/zcopybpf/src/sys/kern/init_sysent.c#5 integrate
.. //depot/projects/zcopybpf/src/sys/kern/kern_jail.c#7 integrate
.. //depot/projects/zcopybpf/src/sys/kern/kern_lock.c#8 integrate
.. //depot/projects/zcopybpf/src/sys/kern/sched_ule.c#14 integrate
.. //depot/projects/zcopybpf/src/sys/kern/subr_bus.c#7 integrate
.. //depot/projects/zcopybpf/src/sys/kern/subr_sleepqueue.c#5 integrate
.. //depot/projects/zcopybpf/src/sys/kern/syscalls.c#5 integrate
.. //depot/projects/zcopybpf/src/sys/kern/syscalls.master#6 integrate
.. //depot/projects/zcopybpf/src/sys/kern/systrace_args.c#5 integrate
.. //depot/projects/zcopybpf/src/sys/kern/tty_pty.c#6 integrate
.. //depot/projects/zcopybpf/src/sys/kern/vfs_aio.c#7 integrate
.. //depot/projects/zcopybpf/src/sys/kern/vfs_default.c#5 integrate
.. //depot/projects/zcopybpf/src/sys/kern/vfs_mount.c#13 integrate
.. //depot/projects/zcopybpf/src/sys/kern/vfs_subr.c#11 integrate
.. //depot/projects/zcopybpf/src/sys/modules/cxgb/cxgb/Makefile#3 integrate
.. //depot/projects/zcopybpf/src/sys/modules/mii/Makefile#3 integrate
.. //depot/projects/zcopybpf/src/sys/modules/sf/Makefile#2 integrate
.. //depot/projects/zcopybpf/src/sys/netgraph/netflow/netflow.c#3 integrate
.. //depot/projects/zcopybpf/src/sys/netgraph/netflow/ng_netflow.c#3 integrate
.. //depot/projects/zcopybpf/src/sys/netgraph/ng_ppp.c#7 integrate
.. //depot/projects/zcopybpf/src/sys/netgraph/ng_pred1.c#2 integrate
.. //depot/projects/zcopybpf/src/sys/netinet/in.c#7 integrate
.. //depot/projects/zcopybpf/src/sys/netinet/ip_fw.h#3 integrate
.. //depot/projects/zcopybpf/src/sys/netinet/ip_fw2.c#11 integrate
.. //depot/projects/zcopybpf/src/sys/netinet/ip_options.c#5 integrate
.. //depot/projects/zcopybpf/src/sys/netinet/tcp_usrreq.c#12 integrate
.. //depot/projects/zcopybpf/src/sys/netinet6/in6.c#6 integrate
.. //depot/projects/zcopybpf/src/sys/netinet6/ip6_output.c#5 integrate
.. //depot/projects/zcopybpf/src/sys/netinet6/ip6_var.h#5 integrate
.. //depot/projects/zcopybpf/src/sys/netinet6/raw_ip6.c#7 integrate
.. //depot/projects/zcopybpf/src/sys/netinet6/udp6_usrreq.c#9 integrate
.. //depot/projects/zcopybpf/src/sys/netncp/ncp_conn.c#3 integrate
.. //depot/projects/zcopybpf/src/sys/netsmb/smb_conn.c#2 integrate
.. //depot/projects/zcopybpf/src/sys/nfs4client/nfs4_idmap.c#2 integrate
.. //depot/projects/zcopybpf/src/sys/nfsclient/nfs_node.c#3 integrate
.. //depot/projects/zcopybpf/src/sys/pci/amdsmb.c#2 integrate
.. //depot/projects/zcopybpf/src/sys/pci/if_sf.c#4 delete
.. //depot/projects/zcopybpf/src/sys/pci/if_sfreg.h#2 delete
.. //depot/projects/zcopybpf/src/sys/pci/nfsmb.c#3 integrate
.. //depot/projects/zcopybpf/src/sys/powerpc/powermac/ata_kauai.c#2 integrate
.. //depot/projects/zcopybpf/src/sys/sparc64/conf/GENERIC#8 integrate
.. //depot/projects/zcopybpf/src/sys/sys/buf.h#4 integrate
.. //depot/projects/zcopybpf/src/sys/sys/bus.h#3 integrate
.. //depot/projects/zcopybpf/src/sys/sys/event.h#2 integrate
.. //depot/projects/zcopybpf/src/sys/sys/lockmgr.h#6 integrate
.. //depot/projects/zcopybpf/src/sys/sys/param.h#13 integrate
.. //depot/projects/zcopybpf/src/sys/sys/priv.h#9 integrate
.. //depot/projects/zcopybpf/src/sys/sys/syscall.h#5 integrate
.. //depot/projects/zcopybpf/src/sys/sys/syscall.mk#5 integrate
.. //depot/projects/zcopybpf/src/sys/sys/sysproto.h#5 integrate
.. //depot/projects/zcopybpf/src/sys/ufs/ffs/ffs_snapshot.c#7 integrate
.. //depot/projects/zcopybpf/src/sys/ufs/ffs/ffs_vfsops.c#6 integrate
.. //depot/projects/zcopybpf/src/sys/ufs/ffs/ffs_vnops.c#9 integrate
.. //depot/projects/zcopybpf/src/sys/ufs/ufs/ufs_extattr.c#4 integrate

Differences ...

==== //depot/projects/zcopybpf/src/sys/Makefile#6 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/Makefile,v 1.45 2007/07/12 21:04:55 rwatson Exp $
+# $FreeBSD: src/sys/Makefile,v 1.46 2008/01/23 08:50:34 maxim Exp $
 
 .include <bsd.own.mk>
 
@@ -8,11 +8,11 @@
 .endif
 
 # Directories to include in cscope name file and TAGS.
-CSCOPEDIRS=	bsm cam compat conf contrib crypto ddb dev fs geom gnu \
+CSCOPEDIRS=	boot bsm cam compat conf contrib crypto ddb dev fs gdb geom gnu \
 		i4b isa kern libkern modules net net80211 netatalk netatm \
 		netgraph netinet netinet6 netipsec netipx netnatm netncp \
-		netsmb nfs nfsclient nfs4client rpc pccard pci security sys \
-		ufs vm ${ARCHDIR}
+		netsmb nfs nfs4client nfsclient nfsserver opencrypto pccard \
+		pci rpc security sys ufs vm ${ARCHDIR}
 
 ARCHDIR	?=	${MACHINE}
 

==== //depot/projects/zcopybpf/src/sys/compat/freebsd32/freebsd32_proto.h#6 (text+ko) ====

@@ -2,8 +2,8 @@
  * System call prototypes.
  *
  * DO NOT EDIT-- this file is automatically generated.
- * $FreeBSD: src/sys/compat/freebsd32/freebsd32_proto.h,v 1.80 2008/01/08 22:01:25 jhb Exp $
- * created from FreeBSD: src/sys/compat/freebsd32/syscalls.master,v 1.94 2008/01/08 21:58:14 jhb Exp 
+ * $FreeBSD: src/sys/compat/freebsd32/freebsd32_proto.h,v 1.81 2008/01/20 23:44:24 rwatson Exp $
+ * created from FreeBSD: src/sys/compat/freebsd32/syscalls.master,v 1.95 2008/01/20 23:43:06 rwatson Exp 
  */
 
 #ifndef _FREEBSD32_SYSPROTO_H_

==== //depot/projects/zcopybpf/src/sys/compat/freebsd32/freebsd32_syscall.h#6 (text+ko) ====

@@ -2,8 +2,8 @@
  * System call numbers.
  *
  * DO NOT EDIT-- this file is automatically generated.
- * $FreeBSD: src/sys/compat/freebsd32/freebsd32_syscall.h,v 1.78 2008/01/08 22:01:25 jhb Exp $
- * created from FreeBSD: src/sys/compat/freebsd32/syscalls.master,v 1.94 2008/01/08 21:58:14 jhb Exp 
+ * $FreeBSD: src/sys/compat/freebsd32/freebsd32_syscall.h,v 1.79 2008/01/20 23:44:24 rwatson Exp $
+ * created from FreeBSD: src/sys/compat/freebsd32/syscalls.master,v 1.95 2008/01/20 23:43:06 rwatson Exp 
  */
 
 #define	FREEBSD32_SYS_syscall	0

==== //depot/projects/zcopybpf/src/sys/compat/freebsd32/freebsd32_syscalls.c#6 (text+ko) ====

@@ -2,8 +2,8 @@
  * System call names.
  *
  * DO NOT EDIT-- this file is automatically generated.
- * $FreeBSD: src/sys/compat/freebsd32/freebsd32_syscalls.c,v 1.69 2008/01/08 22:01:25 jhb Exp $
- * created from FreeBSD: src/sys/compat/freebsd32/syscalls.master,v 1.94 2008/01/08 21:58:14 jhb Exp 
+ * $FreeBSD: src/sys/compat/freebsd32/freebsd32_syscalls.c,v 1.70 2008/01/20 23:44:24 rwatson Exp $
+ * created from FreeBSD: src/sys/compat/freebsd32/syscalls.master,v 1.95 2008/01/20 23:43:06 rwatson Exp 
  */
 
 const char *freebsd32_syscallnames[] = {

==== //depot/projects/zcopybpf/src/sys/compat/freebsd32/freebsd32_sysent.c#6 (text+ko) ====

@@ -2,8 +2,8 @@
  * System call switch table.
  *
  * DO NOT EDIT-- this file is automatically generated.
- * $FreeBSD: src/sys/compat/freebsd32/freebsd32_sysent.c,v 1.79 2008/01/08 22:01:25 jhb Exp $
- * created from FreeBSD: src/sys/compat/freebsd32/syscalls.master,v 1.94 2008/01/08 21:58:14 jhb Exp 
+ * $FreeBSD: src/sys/compat/freebsd32/freebsd32_sysent.c,v 1.80 2008/01/20 23:44:24 rwatson Exp $
+ * created from FreeBSD: src/sys/compat/freebsd32/syscalls.master,v 1.95 2008/01/20 23:43:06 rwatson Exp 
  */
 
 #include "opt_compat.h"
@@ -521,6 +521,6 @@
 	{ AS(freebsd32_truncate_args), (sy_call_t *)freebsd32_truncate, AUE_TRUNCATE, NULL, 0, 0 },	/* 479 = freebsd32_truncate */
 	{ AS(freebsd32_ftruncate_args), (sy_call_t *)freebsd32_ftruncate, AUE_FTRUNCATE, NULL, 0, 0 },	/* 480 = freebsd32_ftruncate */
 	{ AS(thr_kill2_args), (sy_call_t *)thr_kill2, AUE_KILL, NULL, 0, 0 },	/* 481 = thr_kill2 */
-	{ AS(shm_open_args), (sy_call_t *)shm_open, AUE_NULL, NULL, 0, 0 },	/* 482 = shm_open */
-	{ AS(shm_unlink_args), (sy_call_t *)shm_unlink, AUE_NULL, NULL, 0, 0 },	/* 483 = shm_unlink */
+	{ AS(shm_open_args), (sy_call_t *)shm_open, AUE_SHMOPEN, NULL, 0, 0 },	/* 482 = shm_open */
+	{ AS(shm_unlink_args), (sy_call_t *)shm_unlink, AUE_SHMUNLINK, NULL, 0, 0 },	/* 483 = shm_unlink */
 };

==== //depot/projects/zcopybpf/src/sys/compat/freebsd32/syscalls.master#6 (text+ko) ====

@@ -1,4 +1,4 @@
- $FreeBSD: src/sys/compat/freebsd32/syscalls.master,v 1.94 2008/01/08 21:58:14 jhb Exp $
+ $FreeBSD: src/sys/compat/freebsd32/syscalls.master,v 1.95 2008/01/20 23:43:06 rwatson Exp $
 ;	from: @(#)syscalls.master	8.2 (Berkeley) 1/13/94
 ;	from: src/sys/kern/syscalls.master 1.107
 ;
@@ -796,6 +796,6 @@
 480	AUE_FTRUNCATE	STD	{ int freebsd32_ftruncate(int fd, \
 				    u_int32_t lengthlo, u_int32_t lengthhi); }
 481	AUE_KILL	NOPROTO	{ int thr_kill2(pid_t pid, long id, int sig); }
-482	AUE_NULL	NOPROTO	{ int shm_open(const char *path, int flags, \
+482	AUE_SHMOPEN	NOPROTO	{ int shm_open(const char *path, int flags, \
 				    mode_t mode); }
-483	AUE_NULL	NOPROTO	{ int shm_unlink(const char *path); }
+483	AUE_SHMUNLINK	NOPROTO	{ int shm_unlink(const char *path); }

==== //depot/projects/zcopybpf/src/sys/compat/opensolaris/kern/opensolaris_kmem.c#3 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/compat/opensolaris/kern/opensolaris_kmem.c,v 1.2 2007/04/10 02:35:56 pjd Exp $");
+__FBSDID("$FreeBSD: src/sys/compat/opensolaris/kern/opensolaris_kmem.c,v 1.3 2008/01/24 11:21:54 pjd Exp $");
 
 #include <sys/param.h>
 #include <sys/kernel.h>
@@ -108,18 +108,18 @@
 	free(buf, M_SOLARIS);
 }
 
-u_long
+uint64_t
 kmem_size(void)
 {
 
-	return ((u_long)vm_kmem_size);
+	return ((uint64_t)vm_kmem_size);
 }
 
-u_long
+uint64_t
 kmem_used(void)
 {
 
-	return ((u_long)kmem_map->size);
+	return ((uint64_t)kmem_map->size);
 }
 
 static int

==== //depot/projects/zcopybpf/src/sys/compat/opensolaris/sys/kmem.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/kmem.h,v 1.3 2007/11/28 21:48:25 jb Exp $
+ * $FreeBSD: src/sys/compat/opensolaris/sys/kmem.h,v 1.4 2008/01/24 11:21:54 pjd Exp $
  */
 
 #ifndef _OPENSOLARIS_SYS_KMEM_H_
@@ -56,8 +56,8 @@
 
 void *zfs_kmem_alloc(size_t size, int kmflags);
 void zfs_kmem_free(void *buf, size_t size);
-u_long kmem_size(void);
-u_long kmem_used(void);
+uint64_t kmem_size(void);
+uint64_t kmem_used(void);
 kmem_cache_t *kmem_cache_create(char *name, size_t bufsize, size_t align,
     int (*constructor)(void *, void *, int), void (*destructor)(void *, void *),
     void (*reclaim)(void *) __unused, void *private, vmem_t *vmp, int cflags);

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

@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/files,v 1.1264 2008/01/15 20:34:47 gallatin Exp $
+# $FreeBSD: src/sys/conf/files,v 1.1266 2008/01/27 01:10:41 marius Exp $
 #
 # The long compile-with and dependency lines are required because of
 # limitations in config: backslash-newline doesn't work in strings, and
@@ -798,6 +798,7 @@
 dev/mii/mlphy.c			optional miibus | mlphy
 dev/mii/nsgphy.c		optional miibus | nsgphy
 dev/mii/nsphy.c			optional miibus | nsphy
+dev/mii/nsphyter.c		optional miibus | nsphyter
 dev/mii/pnaphy.c		optional miibus | pnaphy
 dev/mii/qsphy.c			optional miibus | qsphy
 dev/mii/rgephy.c		optional miibus | rgephy
@@ -937,6 +938,7 @@
 dev/scc/scc_dev_z8530.c		optional scc
 dev/scd/scd.c			optional scd isa
 dev/scd/scd_isa.c		optional scd isa
+dev/sf/if_sf.c			optional sf pci
 dev/si/si.c			optional si
 dev/si/si2_z280.c		optional si
 dev/si/si3_t225.c		optional si
@@ -2022,7 +2024,6 @@
 pci/if_mn.c			optional mn pci
 pci/if_pcn.c			optional pcn pci
 pci/if_rl.c			optional rl pci
-pci/if_sf.c			optional sf pci
 pci/if_sis.c			optional sis pci
 pci/if_ste.c			optional ste pci
 pci/if_tl.c			optional tl pci

==== //depot/projects/zcopybpf/src/sys/conf/options#14 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/options,v 1.615 2008/01/07 21:40:09 jhb Exp $
+# $FreeBSD: src/sys/conf/options,v 1.616 2008/01/26 22:32:23 rwatson Exp $
 #
 #        On the handling of kernel options
 #
@@ -48,6 +48,8 @@
 
 # Debugging options.
 DDB
+DDB_CAPTURE_DEFAULTBUFSIZE	opt_ddb.h
+DDB_CAPTURE_MAXBUFSIZE	opt_ddb.h
 DDB_NUMSYM	opt_ddb.h
 GDB
 KDB		opt_global.h

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

@@ -1439,7 +1439,7 @@
 		return (1);
 #endif
 #else
-	if (kmem_used() > (kmem_size() * 4) / 5)
+	if (kmem_used() > (kmem_size() * 3) / 4)
 		return (1);
 #endif
 
@@ -2729,7 +2729,7 @@
 		arc_c_max = (arc_c * 8) - (1<<30);
 	else
 		arc_c_max = arc_c_min;
-	arc_c_max = MAX(arc_c * 6, arc_c_max);
+	arc_c_max = MAX(arc_c * 5, arc_c_max);
 #ifdef _KERNEL
 	/*
 	 * Allow the tunables to override our calculations if they are
@@ -2800,11 +2800,12 @@
 	arc_dead = FALSE;
 
 #ifdef _KERNEL
-	/* Warn about ZFS memory requirements. */
+	/* Warn about ZFS memory and address space requirements. */
 	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() < 512 * (1 << 20)) {
+	}
+	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 and "

==== //depot/projects/zcopybpf/src/sys/ddb/db_capture.c#2 (text+ko) ====

@@ -30,7 +30,9 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/ddb/db_capture.c,v 1.2 2007/12/26 11:32:32 rwatson Exp $");
+__FBSDID("$FreeBSD: src/sys/ddb/db_capture.c,v 1.5 2008/01/26 23:02:14 rwatson Exp $");
+
+#include "opt_ddb.h"
 
 #include <sys/param.h>
 #include <sys/conf.h>
@@ -52,16 +54,24 @@
  * kernel dumper routines without restarting the kernel, which is undesirable
  * in the midst of debugging.  Instead, we maintain a large static global
  * buffer that we fill from DDB's output routines.
+ *
+ * We enforce an invariant at runtime that buffer sizes are even multiples of
+ * the textdump block size, which is a design choice that we might want to
+ * reconsider.
  */
-static MALLOC_DEFINE(M_DB_CAPTURE, "db_capture", "DDB capture buffer");
+static MALLOC_DEFINE(M_DDB_CAPTURE, "ddb_capture", "DDB capture buffer");
 
-#define	DB_CAPTURE_DEFAULTBUFSIZE	48*1024
-#define	DB_CAPTURE_MAXBUFSIZE	512*1024
-#define	DB_CAPTURE_FILENAME	"ddb.txt"	/* Captured DDB output. */
+#ifndef DDB_CAPTURE_DEFAULTBUFSIZE
+#define	DDB_CAPTURE_DEFAULTBUFSIZE	48*1024
+#endif
+#ifndef DDB_CAPTURE_MAXBUFSIZE
+#define	DDB_CAPTURE_MAXBUFSIZE	5*1024*1024
+#endif
+#define	DDB_CAPTURE_FILENAME	"ddb.txt"	/* Captured DDB output. */
 
 static char *db_capture_buf;
-static u_int db_capture_bufsize = DB_CAPTURE_DEFAULTBUFSIZE;
-static u_int db_capture_maxbufsize = DB_CAPTURE_MAXBUFSIZE; /* Read-only. */
+static u_int db_capture_bufsize = DDB_CAPTURE_DEFAULTBUFSIZE;
+static u_int db_capture_maxbufsize = DDB_CAPTURE_MAXBUFSIZE; /* Read-only. */
 static u_int db_capture_bufoff;		/* Next location to write in buffer. */
 static u_int db_capture_bufpadding;	/* Amount of zero padding. */
 static int db_capture_inpager;		/* Suspend capture in pager. */
@@ -81,26 +91,21 @@
     "Maximum value for debug.ddb.capture.bufsize");
 
 /*
- * Various compile-time assertions: defaults must be even multiples of
- * textdump block size.  We also perform run-time checking of
- * user-configurable values.
+ * Boot-time allocation of the DDB capture buffer, if any.  Force all buffer
+ * sizes, including the maximum size, to be rounded to block sizes.
  */
-CTASSERT(DB_CAPTURE_DEFAULTBUFSIZE % TEXTDUMP_BLOCKSIZE == 0);
-CTASSERT(DB_CAPTURE_MAXBUFSIZE % TEXTDUMP_BLOCKSIZE == 0);
-
-/*
- * Boot-time allocation of the DDB capture buffer, if any.
- */
 static void
 db_capture_sysinit(__unused void *dummy)
 {
 
 	TUNABLE_INT_FETCH("debug.ddb.capture.bufsize", &db_capture_bufsize);
+	db_capture_maxbufsize = roundup(db_capture_maxbufsize,
+	    TEXTDUMP_BLOCKSIZE);
 	db_capture_bufsize = roundup(db_capture_bufsize, TEXTDUMP_BLOCKSIZE);
-	if (db_capture_bufsize > DB_CAPTURE_MAXBUFSIZE)
-		db_capture_bufsize = DB_CAPTURE_MAXBUFSIZE;
+	if (db_capture_bufsize > db_capture_maxbufsize)
+		db_capture_bufsize = db_capture_maxbufsize;
 	if (db_capture_bufsize != 0)
-		db_capture_buf = malloc(db_capture_bufsize, M_DB_CAPTURE,
+		db_capture_buf = malloc(db_capture_bufsize, M_DDB_CAPTURE,
 		    M_WAITOK);
 }
 SYSINIT(db_capture, SI_SUB_DDB_SERVICES, SI_ORDER_ANY, db_capture_sysinit,
@@ -121,7 +126,7 @@
 	if (error || req->newptr == NULL)
 		return (error);
 	size = roundup(size, TEXTDUMP_BLOCKSIZE);
-	if (size > DB_CAPTURE_MAXBUFSIZE)
+	if (size > db_capture_maxbufsize)
 		return (EINVAL);
 	sx_xlock(&db_capture_sx);
 	if (size != 0) {
@@ -129,7 +134,7 @@
 		 * Potentially the buffer is quite large, so if we can't
 		 * allocate it, fail rather than waiting.
 		 */
-		buf = malloc(size, M_DB_CAPTURE, M_NOWAIT);
+		buf = malloc(size, M_DDB_CAPTURE, M_NOWAIT);
 		if (buf == NULL) {
 			sx_xunlock(&db_capture_sx);
 			return (ENOMEM);
@@ -142,7 +147,7 @@
 	if (db_capture_buf != NULL && buf != NULL)
 		bcopy(db_capture_buf, buf, len);
 	if (db_capture_buf != NULL)
-		free(db_capture_buf, M_DB_CAPTURE);
+		free(db_capture_buf, M_DDB_CAPTURE);
 	db_capture_bufoff = len;
 	db_capture_buf = buf;
 	db_capture_bufsize = size;
@@ -150,7 +155,7 @@
 
 	KASSERT(db_capture_bufoff <= db_capture_bufsize,
 	    ("sysctl_debug_ddb_capture_bufsize: bufoff > bufsize"));
-	KASSERT(db_capture_bufsize <= DB_CAPTURE_MAXBUFSIZE,
+	KASSERT(db_capture_bufsize <= db_capture_maxbufsize,
 	    ("sysctl_debug_ddb_capture_maxbufsize: bufsize > maxbufsize"));
 
 	return (0);
@@ -297,7 +302,7 @@
 		return;
 
 	db_capture_zeropad();
-	textdump_mkustar(textdump_block_buffer, DB_CAPTURE_FILENAME,
+	textdump_mkustar(textdump_block_buffer, DDB_CAPTURE_FILENAME,
 	    db_capture_bufoff);
 	(void)textdump_writenextblock(di, textdump_block_buffer);
 	for (offset = 0; offset < db_capture_bufoff + db_capture_bufpadding;

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

@@ -28,7 +28,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi.c,v 1.243 2007/10/09 07:48:07 njl Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi.c,v 1.244 2008/01/27 16:11:04 iwasaki Exp $");
 
 #include "opt_acpi.h"
 #include <sys/param.h>
@@ -2195,6 +2195,12 @@
 	}
     }
 
+    /* If devd(8) is not running, immediately enter the sleep state. */
+    if (devctl_process_running() == FALSE) {
+    	ACPI_UNLOCK(acpi);
+	return (ACPI_FAILURE(acpi_EnterSleepState(sc, sc->acpi_next_sstate)));
+    }
+
     /* Now notify devd(8) also. */
     acpi_UserNotify("Suspend", ACPI_ROOT_OBJECT, state);
 

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

@@ -56,7 +56,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/amr/amr.c,v 1.84 2007/12/12 05:55:03 scottl Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/amr/amr.c,v 1.85 2008/01/24 07:26:53 scottl Exp $");
 
 /*
  * Driver for the AMI MegaRaid family of controllers.
@@ -139,10 +139,11 @@
 static int	amr_mapcmd(struct amr_command *ac);
 static void	amr_unmapcmd(struct amr_command *ac);
 static int	amr_start(struct amr_command *ac);
-static void	amr_complete(void *context, int pending);
+static void	amr_complete(void *context, ac_qhead_t *head);
 static void	amr_setup_sg(void *arg, bus_dma_segment_t *segs, int nsegments, int error);
 static void	amr_setup_data(void *arg, bus_dma_segment_t *segs, int nsegments, int error);
 static void	amr_setup_ccb(void *arg, bus_dma_segment_t *segs, int nsegments, int error);
+static void	amr_abort_load(struct amr_command *ac);
 
 /*
  * Status monitoring
@@ -207,10 +208,9 @@
     /*
      * Initialise per-controller queues.
      */
-    TAILQ_INIT(&sc->amr_completed);
-    TAILQ_INIT(&sc->amr_freecmds);
+    amr_init_qhead(&sc->amr_freecmds);
+    amr_init_qhead(&sc->amr_ready);
     TAILQ_INIT(&sc->amr_cmd_clusters);
-    TAILQ_INIT(&sc->amr_ready);
     bioq_init(&sc->amr_bioq);
 
     debug(2, "queue init done");
@@ -236,6 +236,11 @@
 #endif
 
     /*
+     * Allocate initial commands.
+     */
+    amr_alloccmd_cluster(sc);
+
+    /*
      * Quiz controller for features and limits.
      */
     if (amr_query_controller(sc))
@@ -244,6 +249,12 @@
     debug(2, "controller query complete");
 
     /*
+     * preallocate the remaining commands.
+     */
+    while (sc->amr_nextslot < sc->amr_maxio)
+	amr_alloccmd_cluster(sc);
+
+    /*
      * Setup sysctls.
      */
     amr_init_sysctl(sc);
@@ -357,6 +368,18 @@
 	SYSCTL_CHILDREN(device_get_sysctl_tree(sc->amr_dev)),
 	OID_AUTO, "allow_volume_configure", CTLFLAG_RW, &sc->amr_allow_vol_config, 0,
 	"");
+    SYSCTL_ADD_INT(device_get_sysctl_ctx(sc->amr_dev),
+	SYSCTL_CHILDREN(device_get_sysctl_tree(sc->amr_dev)),
+	OID_AUTO, "nextslot", CTLFLAG_RD, &sc->amr_nextslot, 0,
+	"");
+    SYSCTL_ADD_INT(device_get_sysctl_ctx(sc->amr_dev),
+	SYSCTL_CHILDREN(device_get_sysctl_tree(sc->amr_dev)),
+	OID_AUTO, "busyslots", CTLFLAG_RD, &sc->amr_busyslots, 0,
+	"");
+    SYSCTL_ADD_INT(device_get_sysctl_ctx(sc->amr_dev),
+	SYSCTL_CHILDREN(device_get_sysctl_tree(sc->amr_dev)),
+	OID_AUTO, "maxio", CTLFLAG_RD, &sc->amr_maxio, 0,
+	"");
 }
 
 
@@ -646,8 +669,18 @@
 	    error = ENOIOCTL;
 	    break;
 	} else {
-	    if (len)
-		dp = malloc(len, M_AMR, M_WAITOK | M_ZERO);
+	    /*
+	     * Bug-for-bug compatibility with Linux!
+	     * Some apps will send commands with inlen and outlen set to 0,
+	     * even though they expect data to be transfered to them from the
+	     * card.  Linux accidentally allows this by allocating a 4KB
+	     * buffer for the transfer anyways, but it then throws it away
+	     * without copying it back to the app.
+	     */
+	    if (!len)
+		len = 4096;
+
+	    dp = malloc(len, M_AMR, M_WAITOK | M_ZERO);
 
 	    if (ali.inlen) {
 		error = copyin((void *)(uintptr_t)mb->mb_physaddr, dp, len);
@@ -793,8 +826,7 @@
 	    if (sc == NULL)
 		return (ENOENT);
 
-	return (amr_linux_ioctl_int(sc->amr_dev_t, cmd,
-	    addr, 0, td));
+	    return (amr_linux_ioctl_int(sc->amr_dev_t, cmd, addr, 0, td));
 	}
     default:
 	debug(1, "unknown ioctl 0x%lx", cmd);
@@ -956,13 +988,6 @@
     int			ldrv;
     int			status;
 
-    /* 
-     * If we haven't found the real limit yet, let us have a couple of commands in
-     * order to be able to probe.
-     */
-    if (sc->amr_maxio == 0)
-	sc->amr_maxio = 2;
-
     /*
      * Greater than 10 byte cdb support
      */
@@ -1278,7 +1303,7 @@
     int			driveno;
     int			cmd;
 
-    *acp = NULL;
+    ac = NULL;
     error = 0;
 
     /* get a command */
@@ -1340,6 +1365,7 @@
 
     /* we fill in the s/g related data when the command is mapped */
 
+
     *acp = ac;
     return(error);
 }
@@ -1411,6 +1437,12 @@
     struct amr_softc *sc = ac->ac_sc;
     int mb_channel;
 
+    if (err) {
+	device_printf(sc->amr_dev, "error %d in %s", err, __FUNCTION__);
+	ac->ac_status = AMR_STATUS_ABORTED;
+	return;
+    }
+
     amr_setup_sg(arg, segs, nsegs, err);
 
     /* for AMR_CMD_CONFIG Read/Write the s/g count goes elsewhere */
@@ -1565,9 +1597,6 @@
 
     debug_called(3);
 
-    if (error)
-	printf("amr_setup_sg: error %d\n", error);
-
     /* get base address of s/g table */
     sg = ac->ac_sg.sg32;
     sg64 = ac->ac_sg.sg64;
@@ -1610,6 +1639,12 @@
     struct amr_softc *sc = ac->ac_sc;
     int mb_channel;
 
+    if (err) {
+	device_printf(sc->amr_dev, "error %d in %s", err, __FUNCTION__);
+	amr_abort_load(ac);
+	return;
+    }
+
     amr_setup_sg(arg, segs, nsegs, err);
 
     /* for AMR_CMD_CONFIG Read/Write the s/g count goes elsewhere */
@@ -1640,6 +1675,12 @@
     struct amr_passthrough *ap = &ac->ac_ccb->ccb_pthru;
     struct amr_ext_passthrough *aep = &ac->ac_ccb->ccb_epthru;
 
+    if (err) {
+	device_printf(sc->amr_dev, "error %d in %s", err, __FUNCTION__);
+	amr_abort_load(ac);
+	return;
+    }
+
     /* Set up the mailbox portion of the command to point at the ccb */
     ac->ac_mailbox.mb_nsgelem = 0;
     ac->ac_mailbox.mb_physaddr = ac->ac_ccb_busaddr;
@@ -1729,6 +1770,23 @@
     }
 }
 
+static void
+amr_abort_load(struct amr_command *ac)
+{
+    ac_qhead_t head;
+    struct amr_softc *sc = ac->ac_sc;
+
+    mtx_assert(&sc->amr_list_lock, MA_OWNED);
+
+    ac->ac_status = AMR_STATUS_ABORTED;
+    amr_init_qhead(&head);
+    amr_enqueue_completed(ac, &head);
+
+    mtx_unlock(&sc->amr_list_lock);
+    amr_complete(sc, &head);
+    mtx_lock(&sc->amr_list_lock);
+}
+
 /********************************************************************************
  * Take a command and give it to the controller, returns 0 if successful, or
  * EBUSY if the command should be retried later.
@@ -1774,6 +1832,7 @@
 int
 amr_done(struct amr_softc *sc)
 {
+    ac_qhead_t		head;
     struct amr_command	*ac;
     struct amr_mailbox	mbox;
     int			i, idx, result;
@@ -1782,6 +1841,7 @@
 
     /* See if there's anything for us to do */
     result = 0;
+    amr_init_qhead(&head);
 
     /* loop collecting completed commands */
     for (;;) {
@@ -1803,7 +1863,7 @@
 		
 		    /* save status for later use */
 		    ac->ac_status = mbox.mb_status;
-		    amr_enqueue_completed(ac);
+		    amr_enqueue_completed(ac, &head);
 		    debug(3, "completed command with status %x", mbox.mb_status);
 		} else {
 		    device_printf(sc->amr_dev, "bad slot %d completed\n", idx);
@@ -1814,7 +1874,7 @@
     }
 
     /* handle completion and timeouts */
-    amr_complete(sc, 0);
+    amr_complete(sc, &head);
 
     return(result);
 }
@@ -1824,7 +1884,7 @@
  */
 
 static void
-amr_complete(void *context, int pending)
+amr_complete(void *context, ac_qhead_t *head)
 {
     struct amr_softc	*sc = (struct amr_softc *)context;
     struct amr_command	*ac;
@@ -1833,7 +1893,7 @@
 
     /* pull completed commands off the queue */
     for (;;) {
-	ac = amr_dequeue_completed(sc);
+	ac = amr_dequeue_completed(sc, head);
 	if (ac == NULL)
 	    break;
 
@@ -1894,10 +1954,6 @@
 
     ac = amr_dequeue_free(sc);
     if (ac == NULL) {
-	amr_alloccmd_cluster(sc);
-	ac = amr_dequeue_free(sc);
-    }
-    if (ac == NULL) {
 	sc->amr_state |= AMR_STATE_QUEUE_FRZN;
 	return(NULL);
     }
@@ -1909,6 +1965,7 @@
     ac->ac_bio = NULL;
     ac->ac_data = NULL;
     ac->ac_complete = NULL;
+    ac->ac_retries = 0;
     ac->ac_tag = NULL;
     ac->ac_datamap = NULL;
     return(ac);
@@ -1935,12 +1992,21 @@
     struct amr_command		*ac;
     int				i, nextslot;
 
+    /* 
+     * If we haven't found the real limit yet, let us have a couple of
+     * commands in order to be able to probe.
+     */
+    if (sc->amr_maxio == 0)
+	sc->amr_maxio = 2;
+
     if (sc->amr_nextslot > sc->amr_maxio)
 	return;
     acc = malloc(AMR_CMD_CLUSTERSIZE, M_AMR, M_NOWAIT | M_ZERO);
     if (acc != NULL) {
 	nextslot = sc->amr_nextslot;
+	mtx_lock(&sc->amr_list_lock);
 	TAILQ_INSERT_TAIL(&sc->amr_cmd_clusters, acc, acc_link);
+	mtx_unlock(&sc->amr_list_lock);
 	for (i = 0; i < AMR_CMD_CLUSTERCOUNT; i++) {
 	    ac = &acc->acc_command[i];
 	    ac->ac_sc = sc;
@@ -1989,6 +2055,8 @@
     int			i;
 
     for (i = 0; i < AMR_CMD_CLUSTERCOUNT; i++) {
+	if (acc->acc_command[i].ac_sc == NULL)
+	    break;
 	bus_dmamap_destroy(sc->amr_buffer_dmat, acc->acc_command[i].ac_dmamap);
 	if (AMR_IS_SG64(sc))
 		bus_dmamap_destroy(sc->amr_buffer64_dmat, acc->acc_command[i].ac_dma64map);
@@ -2009,6 +2077,8 @@
 amr_quartz_submit_command(struct amr_command *ac)
 {
     struct amr_softc	*sc = ac->ac_sc;
+    static struct timeval lastfail;
+    static int		curfail;
     int			i = 0;
   
     mtx_lock(&sc->amr_hw_lock);
@@ -2016,6 +2086,12 @@
         DELAY(1);
     if (sc->amr_mailbox->mb_busy) {
 	mtx_unlock(&sc->amr_hw_lock);
+	if (ac->ac_retries++ > 1000) {
+	    if (ppsratecheck(&lastfail, &curfail, 1))
+		device_printf(sc->amr_dev, "Too many retries on command %p.  "
+			      "Controller is likely dead\n", ac);
+	    ac->ac_retries = 0;
+	}
 	return (EBUSY);
     }
 
@@ -2040,10 +2116,18 @@
 amr_std_submit_command(struct amr_command *ac)
 {
     struct amr_softc	*sc = ac->ac_sc;
+    static struct timeval lastfail;
+    static int		curfail;
   
     mtx_lock(&sc->amr_hw_lock);
     if (AMR_SGET_MBSTAT(sc) & AMR_SMBOX_BUSYFLAG) {
 	mtx_unlock(&sc->amr_hw_lock);
+	if (ac->ac_retries++ > 1000) {
+	    if (ppsratecheck(&lastfail, &curfail, 1))
+		device_printf(sc->amr_dev, "Too many retries on command %p.  "
+			      "Controller is likely dead\n", ac);
+	    ac->ac_retries = 0;
+	}
 	return (EBUSY);
     }
 

==== //depot/projects/zcopybpf/src/sys/dev/amr/amrreg.h#2 (text+ko) ====

@@ -53,7 +53,7 @@
  * SUCH DAMAGE.
  *
  *
- *      $FreeBSD: src/sys/dev/amr/amrreg.h,v 1.10 2006/01/13 23:50:21 jkim Exp $
+ *      $FreeBSD: src/sys/dev/amr/amrreg.h,v 1.11 2008/01/24 07:26:53 scottl Exp $
  */
 
 /********************************************************************************
@@ -126,6 +126,7 @@
 
 #define AMR_CONFIG_READ_NVRAM_CONFIG	0x04
 #define AMR_CONFIG_WRITE_NVRAM_CONFIG	0x0d
+#define AMR_CONFIG_ENQ3_SOLICITED_NOTIFY       0x01
 #define AMR_CONFIG_PRODUCT_INFO		0x0e
 #define AMR_CONFIG_ENQ3			0x0f
 #define AMR_CONFIG_ENQ3_SOLICITED_NOTIFY	0x01
@@ -141,6 +142,14 @@
 #define OP_DEL_LOGDRV		0x1C
 
 /*
+ * Command for random deletion of logical drives
+ */
+#define FC_DEL_LOGDRV		0xA4
+#define OP_SUP_DEL_LOGDRV	0x2A
+#define OP_GET_LDID_MAP		0x18
+#define OP_DEL_LOGDRV		0x1C
+
+/*
  * Command results
  */
 #define AMR_STATUS_SUCCESS	0x00

==== //depot/projects/zcopybpf/src/sys/dev/amr/amrvar.h#3 (text+ko) ====

@@ -53,7 +53,7 @@
  * SUCH DAMAGE.
  *
  *
- *      $FreeBSD: src/sys/dev/amr/amrvar.h,v 1.34 2007/12/12 05:55:03 scottl Exp $
+ *      $FreeBSD: src/sys/dev/amr/amrvar.h,v 1.35 2008/01/24 07:26:53 scottl Exp $
  */
 
 #include <geom/geom_disk.h>
@@ -100,6 +100,9 @@
 
 #define AMR_CMD_CLUSTERSIZE	(16 * 1024)
 
+typedef STAILQ_HEAD(, amr_command)	ac_qhead_t;
+typedef STAILQ_ENTRY(amr_command)	ac_link_t;
+
 union amr_ccb {
     struct amr_passthrough	ccb_pthru;
     struct amr_ext_passthrough	ccb_epthru;
@@ -111,7 +114,7 @@
  */
 struct amr_command
 {
-    TAILQ_ENTRY(amr_command)	ac_link;
+    ac_link_t			ac_link;
 
     struct amr_softc		*ac_sc;
     u_int8_t			ac_slot;
@@ -134,6 +137,7 @@
 #define AMR_CMD_BUSY		(1<<7)
 #define AMR_CMD_SG64		(1<<8)
 #define AC_IS_SG64(ac)		((ac)->ac_flags & AMR_CMD_SG64)
+    u_int			ac_retries;
 
     struct bio			*ac_bio;
     void			(* ac_complete)(struct amr_command *ac);
@@ -219,11 +223,10 @@
 
     /* per-controller queues */
     struct bio_queue_head 	amr_bioq;		/* pending I/O with no commands */
-    TAILQ_HEAD(,amr_command)	amr_ready;		/* commands ready to be submitted */
+    ac_qhead_t			amr_ready;		/* commands ready to be submitted */
     struct amr_command		*amr_busycmd[AMR_MAXCMD];
     int				amr_busyslots;
-    TAILQ_HEAD(,amr_command)	amr_completed;
-    TAILQ_HEAD(,amr_command)	amr_freecmds;
+    ac_qhead_t			amr_freecmds;
     TAILQ_HEAD(,amr_command_cluster)	amr_cmd_clusters;
 
     /* CAM attachments for passthrough */
@@ -320,17 +323,24 @@
 }
 
 static __inline void
+amr_init_qhead(ac_qhead_t *head)
+{
+
+	STAILQ_INIT(head);
+}
+
+static __inline void
 amr_enqueue_ready(struct amr_command *ac)
 {
 
-    TAILQ_INSERT_TAIL(&ac->ac_sc->amr_ready, ac, ac_link);
+    STAILQ_INSERT_TAIL(&ac->ac_sc->amr_ready, ac, ac_link);
 }
 
 static __inline void
 amr_requeue_ready(struct amr_command *ac)
 {
 
-    TAILQ_INSERT_HEAD(&ac->ac_sc->amr_ready, ac, ac_link);
+    STAILQ_INSERT_HEAD(&ac->ac_sc->amr_ready, ac, ac_link);
 }
 
 static __inline struct amr_command *
@@ -338,25 +348,25 @@
 {
     struct amr_command	*ac;
 
-    if ((ac = TAILQ_FIRST(&sc->amr_ready)) != NULL)
-	TAILQ_REMOVE(&sc->amr_ready, ac, ac_link);
+    if ((ac = STAILQ_FIRST(&sc->amr_ready)) != NULL)
+	STAILQ_REMOVE_HEAD(&sc->amr_ready, ac_link);
     return(ac);
 }
 
 static __inline void

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


More information about the p4-projects mailing list