PERFORCE change 120926 for review

Matt Jacob mjacob at FreeBSD.org
Mon Jun 4 19:06:12 UTC 2007


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

Change 120926 by mjacob at mjexp on 2007/06/04 19:05:38

	IFC

Affected files ...

.. //depot/projects/mjexp/share/mk/Makefile#3 integrate
.. //depot/projects/mjexp/share/mk/bsd.port.options.mk#1 branch
.. //depot/projects/mjexp/sys/amd64/amd64/machdep.c#12 integrate
.. //depot/projects/mjexp/sys/amd64/amd64/tsc.c#3 integrate
.. //depot/projects/mjexp/sys/amd64/include/vmparam.h#4 integrate
.. //depot/projects/mjexp/sys/amd64/isa/clock.c#6 integrate
.. //depot/projects/mjexp/sys/arm/at91/uart_cpu_at91rm9200usart.c#3 integrate
.. //depot/projects/mjexp/sys/arm/include/vmparam.h#4 integrate
.. //depot/projects/mjexp/sys/cam/cam_xpt.c#13 integrate
.. //depot/projects/mjexp/sys/cam/scsi/scsi_all.c#3 integrate
.. //depot/projects/mjexp/sys/compat/opensolaris/kern/opensolaris_kstat.c#2 integrate
.. //depot/projects/mjexp/sys/compat/opensolaris/kern/opensolaris_vfs.c#5 integrate
.. //depot/projects/mjexp/sys/compat/opensolaris/sys/vfs.h#2 integrate
.. //depot/projects/mjexp/sys/conf/Makefile.ia64#4 integrate
.. //depot/projects/mjexp/sys/contrib/ipfilter/netinet/fil.c#2 integrate
.. //depot/projects/mjexp/sys/contrib/ipfilter/netinet/ip_auth.c#2 integrate
.. //depot/projects/mjexp/sys/contrib/ipfilter/netinet/ip_auth.h#2 integrate
.. //depot/projects/mjexp/sys/contrib/ipfilter/netinet/ip_compat.h#2 integrate
.. //depot/projects/mjexp/sys/contrib/ipfilter/netinet/ip_fil.h#2 integrate
.. //depot/projects/mjexp/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c#3 integrate
.. //depot/projects/mjexp/sys/contrib/ipfilter/netinet/ip_frag.c#2 integrate
.. //depot/projects/mjexp/sys/contrib/ipfilter/netinet/ip_frag.h#2 integrate
.. //depot/projects/mjexp/sys/contrib/ipfilter/netinet/ip_ftp_pxy.c#2 integrate
.. //depot/projects/mjexp/sys/contrib/ipfilter/netinet/ip_htable.c#2 integrate
.. //depot/projects/mjexp/sys/contrib/ipfilter/netinet/ip_htable.h#2 integrate
.. //depot/projects/mjexp/sys/contrib/ipfilter/netinet/ip_ipsec_pxy.c#2 integrate
.. //depot/projects/mjexp/sys/contrib/ipfilter/netinet/ip_irc_pxy.c#2 integrate
.. //depot/projects/mjexp/sys/contrib/ipfilter/netinet/ip_log.c#2 integrate
.. //depot/projects/mjexp/sys/contrib/ipfilter/netinet/ip_lookup.c#2 integrate
.. //depot/projects/mjexp/sys/contrib/ipfilter/netinet/ip_lookup.h#2 integrate
.. //depot/projects/mjexp/sys/contrib/ipfilter/netinet/ip_nat.c#2 integrate
.. //depot/projects/mjexp/sys/contrib/ipfilter/netinet/ip_nat.h#2 integrate
.. //depot/projects/mjexp/sys/contrib/ipfilter/netinet/ip_pool.c#2 integrate
.. //depot/projects/mjexp/sys/contrib/ipfilter/netinet/ip_pool.h#2 integrate
.. //depot/projects/mjexp/sys/contrib/ipfilter/netinet/ip_pptp_pxy.c#2 integrate
.. //depot/projects/mjexp/sys/contrib/ipfilter/netinet/ip_proxy.c#2 integrate
.. //depot/projects/mjexp/sys/contrib/ipfilter/netinet/ip_proxy.h#2 integrate
.. //depot/projects/mjexp/sys/contrib/ipfilter/netinet/ip_raudio_pxy.c#2 integrate
.. //depot/projects/mjexp/sys/contrib/ipfilter/netinet/ip_rcmd_pxy.c#2 integrate
.. //depot/projects/mjexp/sys/contrib/ipfilter/netinet/ip_rpcb_pxy.c#2 integrate
.. //depot/projects/mjexp/sys/contrib/ipfilter/netinet/ip_scan.c#2 integrate
.. //depot/projects/mjexp/sys/contrib/ipfilter/netinet/ip_scan.h#2 integrate
.. //depot/projects/mjexp/sys/contrib/ipfilter/netinet/ip_state.c#3 integrate
.. //depot/projects/mjexp/sys/contrib/ipfilter/netinet/ip_state.h#2 integrate
.. //depot/projects/mjexp/sys/contrib/ipfilter/netinet/ip_sync.c#2 integrate
.. //depot/projects/mjexp/sys/contrib/ipfilter/netinet/ip_sync.h#2 integrate
.. //depot/projects/mjexp/sys/contrib/ipfilter/netinet/ipl.h#2 integrate
.. //depot/projects/mjexp/sys/contrib/ipfilter/netinet/mlfk_ipl.c#2 integrate
.. //depot/projects/mjexp/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_ctldir.c#4 integrate
.. //depot/projects/mjexp/sys/dev/acpi_support/acpi_asus.c#3 integrate
.. //depot/projects/mjexp/sys/dev/acpi_support/acpi_panasonic.c#2 integrate
.. //depot/projects/mjexp/sys/dev/acpica/acpi_cpu.c#5 integrate
.. //depot/projects/mjexp/sys/dev/acpica/acpi_ec.c#5 integrate
.. //depot/projects/mjexp/sys/dev/acpica/acpi_timer.c#3 integrate
.. //depot/projects/mjexp/sys/dev/ath/if_ath.c#12 integrate
.. //depot/projects/mjexp/sys/dev/bge/if_bge.c#17 integrate
.. //depot/projects/mjexp/sys/dev/cxgb/cxgb_main.c#7 integrate
.. //depot/projects/mjexp/sys/dev/gem/if_gem.c#4 integrate
.. //depot/projects/mjexp/sys/dev/gem/if_gemreg.h#2 integrate
.. //depot/projects/mjexp/sys/dev/gem/if_gemvar.h#4 integrate
.. //depot/projects/mjexp/sys/dev/mfi/mfi.c#10 integrate
.. //depot/projects/mjexp/sys/dev/mfi/mfivar.h#5 integrate
.. //depot/projects/mjexp/sys/dev/mpt/mpilib/mpi.h#2 integrate
.. //depot/projects/mjexp/sys/dev/mpt/mpilib/mpi_cnfg.h#2 integrate
.. //depot/projects/mjexp/sys/dev/mpt/mpilib/mpi_init.h#2 integrate
.. //depot/projects/mjexp/sys/dev/mpt/mpilib/mpi_ioc.h#2 integrate
.. //depot/projects/mjexp/sys/dev/mpt/mpilib/mpi_log_fc.h#2 delete
.. //depot/projects/mjexp/sys/dev/mpt/mpilib/mpi_log_sas.h#2 delete
.. //depot/projects/mjexp/sys/dev/mpt/mpilib/mpi_raid.h#2 integrate
.. //depot/projects/mjexp/sys/dev/mpt/mpilib/mpi_sas.h#2 integrate
.. //depot/projects/mjexp/sys/dev/mpt/mpilib/mpi_targ.h#2 integrate
.. //depot/projects/mjexp/sys/dev/mpt/mpt.c#10 integrate
.. //depot/projects/mjexp/sys/dev/mpt/mpt.h#14 integrate
.. //depot/projects/mjexp/sys/dev/mpt/mpt_cam.c#23 integrate
.. //depot/projects/mjexp/sys/dev/pccbb/pccbb.c#9 integrate
.. //depot/projects/mjexp/sys/dev/pccbb/pccbb_pci.c#4 integrate
.. //depot/projects/mjexp/sys/dev/pccbb/pccbbvar.h#4 integrate
.. //depot/projects/mjexp/sys/dev/sound/clone.c#2 integrate
.. //depot/projects/mjexp/sys/dev/sound/pci/atiixp.c#7 integrate
.. //depot/projects/mjexp/sys/dev/sound/pci/emu10kx.c#5 integrate
.. //depot/projects/mjexp/sys/dev/sound/pci/envy24ht.c#9 integrate
.. //depot/projects/mjexp/sys/dev/sound/pci/es137x.c#6 integrate
.. //depot/projects/mjexp/sys/dev/sound/pci/hda/hdac.c#13 integrate
.. //depot/projects/mjexp/sys/dev/sound/pci/via8233.c#8 integrate
.. //depot/projects/mjexp/sys/dev/sound/pcm/ac97.c#8 integrate
.. //depot/projects/mjexp/sys/dev/sound/pcm/channel.c#7 integrate
.. //depot/projects/mjexp/sys/dev/sound/pcm/dsp.c#8 integrate
.. //depot/projects/mjexp/sys/dev/sound/pcm/feeder.c#6 integrate
.. //depot/projects/mjexp/sys/dev/sound/pcm/feeder_fmt.c#4 integrate
.. //depot/projects/mjexp/sys/dev/sound/pcm/feeder_rate.c#4 integrate
.. //depot/projects/mjexp/sys/dev/sound/pcm/feeder_volume.c#4 integrate
.. //depot/projects/mjexp/sys/dev/sound/pcm/mixer.c#5 integrate
.. //depot/projects/mjexp/sys/dev/sound/pcm/sndstat.c#5 integrate
.. //depot/projects/mjexp/sys/dev/sound/pcm/sound.c#7 integrate
.. //depot/projects/mjexp/sys/dev/sound/pcm/vchan.c#6 integrate
.. //depot/projects/mjexp/sys/dev/sound/usb/uaudio_pcm.c#4 integrate
.. //depot/projects/mjexp/sys/dev/speaker/spkr.c#2 integrate
.. //depot/projects/mjexp/sys/dev/usb/uplcom.c#4 integrate
.. //depot/projects/mjexp/sys/dev/usb/uvscom.c#3 integrate
.. //depot/projects/mjexp/sys/geom/cache/g_cache.c#2 integrate
.. //depot/projects/mjexp/sys/geom/journal/g_journal.c#5 integrate
.. //depot/projects/mjexp/sys/geom/stripe/g_stripe.c#3 integrate
.. //depot/projects/mjexp/sys/i386/i386/elan-mmcr.c#4 integrate
.. //depot/projects/mjexp/sys/i386/i386/mp_clock.c#2 integrate
.. //depot/projects/mjexp/sys/i386/i386/tsc.c#3 integrate
.. //depot/projects/mjexp/sys/i386/isa/clock.c#8 integrate
.. //depot/projects/mjexp/sys/kern/kern_mbuf.c#5 integrate
.. //depot/projects/mjexp/sys/kern/kern_poll.c#4 integrate
.. //depot/projects/mjexp/sys/kern/kern_sysctl.c#6 integrate
.. //depot/projects/mjexp/sys/kern/kern_tc.c#2 integrate
.. //depot/projects/mjexp/sys/kern/subr_lock.c#7 integrate
.. //depot/projects/mjexp/sys/kern/uipc_socket.c#14 integrate
.. //depot/projects/mjexp/sys/netgraph/bluetooth/common/ng_bluetooth.c#2 integrate
.. //depot/projects/mjexp/sys/netgraph/ng_base.c#7 integrate
.. //depot/projects/mjexp/sys/netgraph/ng_ppp.c#6 integrate
.. //depot/projects/mjexp/sys/netinet/sctp_indata.c#14 integrate
.. //depot/projects/mjexp/sys/netinet/sctp_os_bsd.h#10 integrate
.. //depot/projects/mjexp/sys/netinet/sctp_output.c#15 integrate
.. //depot/projects/mjexp/sys/netinet/sctp_pcb.c#14 integrate
.. //depot/projects/mjexp/sys/netinet/sctp_pcb.h#10 integrate
.. //depot/projects/mjexp/sys/netinet/sctp_usrreq.c#14 integrate
.. //depot/projects/mjexp/sys/netinet/tcp_timewait.c#3 integrate
.. //depot/projects/mjexp/sys/netinet6/frag6.c#3 integrate
.. //depot/projects/mjexp/sys/netinet6/in6.c#6 integrate
.. //depot/projects/mjexp/sys/netinet6/in6_ifattach.c#3 integrate
.. //depot/projects/mjexp/sys/netinet6/in6_var.h#3 integrate
.. //depot/projects/mjexp/sys/netinet6/ip6_var.h#3 integrate
.. //depot/projects/mjexp/sys/netinet6/sctp6_usrreq.c#12 integrate
.. //depot/projects/mjexp/sys/pc98/cbus/clock.c#7 integrate
.. //depot/projects/mjexp/sys/security/audit/audit.c#9 integrate
.. //depot/projects/mjexp/sys/security/audit/audit.h#4 integrate
.. //depot/projects/mjexp/sys/security/audit/audit_arg.c#7 integrate
.. //depot/projects/mjexp/sys/security/audit/audit_bsm.c#4 integrate
.. //depot/projects/mjexp/sys/security/audit/audit_bsm_klib.c#4 integrate
.. //depot/projects/mjexp/sys/security/audit/audit_pipe.c#3 integrate
.. //depot/projects/mjexp/sys/security/audit/audit_private.h#5 integrate
.. //depot/projects/mjexp/sys/security/audit/audit_worker.c#5 integrate
.. //depot/projects/mjexp/sys/sparc64/include/vmparam.h#4 integrate
.. //depot/projects/mjexp/sys/sparc64/sparc64/pmap.c#6 integrate
.. //depot/projects/mjexp/sys/sparc64/sparc64/tsb.c#2 integrate
.. //depot/projects/mjexp/sys/sun4v/include/vmparam.h#4 integrate
.. //depot/projects/mjexp/sys/sys/sysctl.h#4 integrate

Differences ...

==== //depot/projects/mjexp/share/mk/Makefile#3 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/share/mk/Makefile,v 1.49 2007/04/03 20:15:59 kan Exp $
+# $FreeBSD: src/share/mk/Makefile,v 1.51 2007/06/01 15:32:23 pav Exp $
 #	@(#)Makefile	8.1 (Berkeley) 6/8/93
 
 FILES=	bsd.README
@@ -7,8 +7,9 @@
 FILES+=	bsd.kmod.mk
 FILES+=	bsd.lib.mk bsd.libnames.mk bsd.links.mk bsd.man.mk bsd.nls.mk
 FILES+=	bsd.obj.mk bsd.own.mk
-FILES+=	bsd.port.mk bsd.port.post.mk  bsd.port.pre.mk bsd.port.subdir.mk
-FILES+=	bsd.prog.mk bsd.snmpmod.mk bsd.subdir.mk bsd.sys.mk bsd.symver.mk
+FILES+=	bsd.port.mk bsd.port.options.mk bsd.port.post.mk
+FILES+=	bsd.port.pre.mk bsd.port.subdir.mk bsd.prog.mk
+FILES+=	bsd.snmpmod.mk bsd.subdir.mk bsd.sys.mk bsd.symver.mk
 FILES+=	sys.mk version_gen.awk
 NO_OBJ=
 FILESDIR=	${BINDIR}/mk

==== //depot/projects/mjexp/sys/amd64/amd64/machdep.c#12 (text+ko) ====

@@ -39,7 +39,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/machdep.c,v 1.672 2007/05/31 22:52:10 attilio Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/machdep.c,v 1.673 2007/06/03 23:18:29 alc Exp $");
 
 #include "opt_atalk.h"
 #include "opt_atpic.h"
@@ -163,7 +163,13 @@
 long Maxmem = 0;
 long realmem = 0;
 
-#define PHYSMAP_SIZE	(2 * 30)
+/*
+ * The number of PHYSMAP entries must be one less than the number of
+ * PHYSSEG entries because the PHYSMAP entry that spans the largest
+ * physical address that is accessible by ISA DMA is split into two
+ * PHYSSEG entries.
+ */
+#define	PHYSMAP_SIZE	(2 * (VM_PHYSSEG_MAX - 1))
 
 vm_paddr_t phys_avail[PHYSMAP_SIZE + 2];
 vm_paddr_t dump_avail[PHYSMAP_SIZE + 2];

==== //depot/projects/mjexp/sys/amd64/amd64/tsc.c#3 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/tsc.c,v 1.207 2007/03/26 18:03:29 njl Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/tsc.c,v 1.208 2007/06/04 18:25:01 dwmalone Exp $");
 
 #include "opt_clock.h"
 
@@ -204,7 +204,7 @@
 	if (tsc_timecounter.tc_frequency == 0)
 		return (EOPNOTSUPP);
 	freq = tsc_freq;
-	error = sysctl_handle_int(oidp, &freq, sizeof(freq), req);
+	error = sysctl_handle_quad(oidp, &freq, 0, req);
 	if (error == 0 && req->newptr != NULL) {
 		tsc_freq = freq;
 		tsc_timecounter.tc_frequency = tsc_freq;
@@ -212,8 +212,8 @@
 	return (error);
 }
 
-SYSCTL_PROC(_machdep, OID_AUTO, tsc_freq, CTLTYPE_LONG | CTLFLAG_RW,
-    0, sizeof(u_int), sysctl_machdep_tsc_freq, "IU", "");
+SYSCTL_PROC(_machdep, OID_AUTO, tsc_freq, CTLTYPE_QUAD | CTLFLAG_RW,
+    0, sizeof(u_int), sysctl_machdep_tsc_freq, "QU", "");
 
 static unsigned
 tsc_get_timecount(struct timecounter *tc)

==== //depot/projects/mjexp/sys/amd64/include/vmparam.h#4 (text+ko) ====

@@ -38,7 +38,7 @@
  * SUCH DAMAGE.
  *
  *	from: @(#)vmparam.h	5.9 (Berkeley) 5/12/91
- * $FreeBSD: src/sys/amd64/include/vmparam.h,v 1.47 2007/05/05 19:50:26 alc Exp $
+ * $FreeBSD: src/sys/amd64/include/vmparam.h,v 1.48 2007/06/03 23:18:29 alc Exp $
  */
 
 
@@ -93,6 +93,44 @@
 #define	VM_PHYSSEG_DENSE
 
 /*
+ * The number of PHYSSEG entries must be one greater than the number
+ * of phys_avail entries because the phys_avail entry that spans the
+ * largest physical address that is accessible by ISA DMA is split
+ * into two PHYSSEG entries. 
+ */
+#define	VM_PHYSSEG_MAX		31
+
+/*
+ * Create two free page pools: VM_FREEPOOL_DEFAULT is the default pool
+ * from which physical pages are allocated and VM_FREEPOOL_DIRECT is
+ * the pool from which physical pages for page tables and small UMA
+ * objects are allocated.
+ */
+#define	VM_NFREEPOOL		2
+#define	VM_FREEPOOL_DEFAULT	0
+#define	VM_FREEPOOL_DIRECT	1
+
+/*
+ * Create two free page lists: VM_FREELIST_DEFAULT is for physical
+ * pages that are above the largest physical address that is
+ * accessible by ISA DMA and VM_FREELIST_ISADMA is for physical pages
+ * that are below that address.
+ */
+#define	VM_NFREELIST		2
+#define	VM_FREELIST_DEFAULT	0
+#define	VM_FREELIST_ISADMA	1
+
+/*
+ * An allocation size of 16MB is supported in order to optimize the
+ * use of the direct map by UMA.  Specifically, a cache line contains
+ * at most 8 PDEs, collectively mapping 16MB of physical memory.  By
+ * reducing the number of distinct 16MB "pages" that are used by UMA,
+ * the physical memory allocator reduces the likelihood of both 2MB
+ * page TLB misses and cache misses caused by 2MB page TLB misses.
+ */
+#define	VM_NFREEORDER		13
+
+/*
  * Virtual addresses of things.  Derived from the page directory and
  * page table indexes from pmap.h for precision.
  * Because of the page that is both a PD and PT, it looks a little

==== //depot/projects/mjexp/sys/amd64/isa/clock.c#6 (text+ko) ====

@@ -33,7 +33,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/isa/clock.c,v 1.230 2007/02/23 12:18:26 piso Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/isa/clock.c,v 1.231 2007/06/04 18:25:02 dwmalone Exp $");
 
 /*
  * Routines to handle clock hardware.
@@ -839,7 +839,7 @@
 	 * is is too generic.  Should use it everywhere.
 	 */
 	freq = timer_freq;
-	error = sysctl_handle_int(oidp, &freq, sizeof(freq), req);
+	error = sysctl_handle_int(oidp, &freq, 0, req);
 	if (error == 0 && req->newptr != NULL)
 		set_timer_freq(freq, hz);
 	return (error);

==== //depot/projects/mjexp/sys/arm/at91/uart_cpu_at91rm9200usart.c#3 (text) ====

@@ -27,7 +27,7 @@
 #include "opt_uart.h"
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/at91/uart_cpu_at91rm9200usart.c,v 1.3 2007/04/02 22:00:21 marcel Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/at91/uart_cpu_at91rm9200usart.c,v 1.4 2007/06/04 17:53:42 marcel Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -80,5 +80,6 @@
 	uart_bus_space_io = &at91_bs_tag;
 	uart_bus_space_mem = NULL;
 	/* Check the environment for overrides */
-	return (uart_getenv(devtype, di, class));
+	uart_getenv(devtype, di, class);
+	return (0);
 }

==== //depot/projects/mjexp/sys/arm/include/vmparam.h#4 (text+ko) ====

@@ -28,7 +28,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/arm/include/vmparam.h,v 1.9 2007/05/28 21:04:22 alc Exp $
+ * $FreeBSD: src/sys/arm/include/vmparam.h,v 1.10 2007/06/04 08:02:22 alc Exp $
  */
 
 #ifndef	_MACHINE_VMPARAM_H_
@@ -59,6 +59,16 @@
 #define	VM_PHYSSEG_DENSE
 
 /*
+ * Create two free page pools: VM_FREEPOOL_DEFAULT is the default pool
+ * from which physical pages are allocated and VM_FREEPOOL_DIRECT is
+ * the pool from which physical pages for small UMA objects are
+ * allocated.
+ */
+#define	VM_NFREEPOOL		2
+#define	VM_FREEPOOL_DEFAULT	0
+#define	VM_FREEPOOL_DIRECT	1
+
+/*
  * we support 2 free lists:
  *
  *	- DEFAULT for all systems
@@ -69,6 +79,11 @@
 #define	VM_FREELIST_DEFAULT	0
 #define	VM_FREELIST_ISADMA	1
 
+/*
+ * The largest allocation size is 1MB.
+ */
+#define	VM_NFREEORDER		9
+
 #define UPT_MAX_ADDRESS		VADDR(UPTPTDI + 3, 0)
 #define UPT_MIN_ADDRESS		VADDR(UPTPTDI, 0)
 

==== //depot/projects/mjexp/sys/cam/cam_xpt.c#13 (text+ko) ====

@@ -28,7 +28,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/cam/cam_xpt.c,v 1.187 2007/05/16 16:57:21 scottl Exp $");
+__FBSDID("$FreeBSD: src/sys/cam/cam_xpt.c,v 1.188 2007/06/04 18:25:02 dwmalone Exp $");
 
 #include <sys/param.h>
 #include <sys/bus.h>
@@ -6355,7 +6355,7 @@
 	int error, bool;
 
 	bool = cam_srch_hi;
-	error = sysctl_handle_int(oidp, &bool, sizeof(bool), req);
+	error = sysctl_handle_int(oidp, &bool, 0, req);
 	if (error != 0 || req->newptr == NULL)
 		return (error);
 	if (bool == 0 || bool == 1) {

==== //depot/projects/mjexp/sys/cam/scsi/scsi_all.c#3 (text+ko) ====

@@ -28,7 +28,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/cam/scsi/scsi_all.c,v 1.50 2007/05/23 13:27:37 cognet Exp $");
+__FBSDID("$FreeBSD: src/sys/cam/scsi/scsi_all.c,v 1.51 2007/06/04 18:25:03 dwmalone Exp $");
 
 #include <sys/param.h>
 
@@ -3023,7 +3023,7 @@
 	int error, delay;
 
 	delay = scsi_delay;
-	error = sysctl_handle_int(oidp, &delay, sizeof(delay), req);
+	error = sysctl_handle_int(oidp, &delay, 0, req);
 	if (error != 0 || req->newptr == NULL)
 		return (error);
 	return (set_scsi_delay(delay));

==== //depot/projects/mjexp/sys/compat/opensolaris/kern/opensolaris_kstat.c#2 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/compat/opensolaris/kern/opensolaris_kstat.c,v 1.1 2007/04/06 01:09:06 pjd Exp $");
+__FBSDID("$FreeBSD: src/sys/compat/opensolaris/kern/opensolaris_kstat.c,v 1.2 2007/06/04 18:25:03 dwmalone Exp $");
 
 #include <sys/param.h>
 #include <sys/kernel.h>
@@ -102,7 +102,7 @@
 	uint64_t val;
 
 	val = ksent->value.ui64;
-	return sysctl_handle_int(oidp, &val, sizeof(val), req);
+	return sysctl_handle_quad(oidp, &val, 0, req);
 }
 
 void
@@ -118,7 +118,7 @@
 		SYSCTL_ADD_PROC(&ksp->ks_sysctl_ctx,
 		    SYSCTL_CHILDREN(ksp->ks_sysctl_root), OID_AUTO, ksent->name,
 		    CTLTYPE_QUAD | CTLFLAG_RD, ksent, sizeof(*ksent),
-		    kstat_sysctl, "IU", "");
+		    kstat_sysctl, "QU", "");
 	}
 }
 

==== //depot/projects/mjexp/sys/compat/opensolaris/kern/opensolaris_vfs.c#5 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/compat/opensolaris/kern/opensolaris_vfs.c,v 1.5 2007/05/02 01:03:10 pjd Exp $");
+__FBSDID("$FreeBSD: src/sys/compat/opensolaris/kern/opensolaris_vfs.c,v 1.6 2007/06/04 11:31:45 pjd Exp $");
 
 #include <sys/param.h>
 #include <sys/kernel.h>
@@ -110,7 +110,7 @@
 }
 
 int
-traverse(vnode_t **cvpp)
+traverse(vnode_t **cvpp, int lktype)
 {
 	kthread_t *td = curthread;
 	vnode_t *cvp;
@@ -119,7 +119,7 @@
 	int error;
 
 	cvp = *cvpp;
-	error = 0;
+	tvp = NULL;
 
 	/*
 	 * If this vnode is mounted on, then we transparently indirect
@@ -135,22 +135,26 @@
 		vfsp = vn_mountedvfs(cvp);
 		if (vfsp == NULL)
 			break;
-		VN_RELE(cvp);
+		/*
+		 * tvp is NULL for *cvpp vnode, which we can't unlock.
+		 */
+		if (tvp != NULL)
+			vput(cvp);
+		else
+			vrele(cvp);
 
 		/*
 		 * The read lock must be held across the call to VFS_ROOT() to
 		 * prevent a concurrent unmount from destroying the vfs.
 		 */
-		error = VFS_ROOT(vfsp, 0, &tvp, td);
-		if (error)
-			break;
-		VOP_UNLOCK(tvp, 0, td);
-
+		error = VFS_ROOT(vfsp, lktype, &tvp, td);
+		if (error != 0)
+			return (error);
 		cvp = tvp;
 	}
 
 	*cvpp = cvp;
-	return (error);
+	return (0);
 }
 
 int

==== //depot/projects/mjexp/sys/compat/opensolaris/sys/vfs.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/vfs.h,v 1.1 2007/04/06 01:09:06 pjd Exp $
+ * $FreeBSD: src/sys/compat/opensolaris/sys/vfs.h,v 1.2 2007/06/04 11:31:45 pjd Exp $
  */
 
 #ifndef _OPENSOLARIS_SYS_VFS_H_
@@ -107,7 +107,7 @@
     int flags __unused);
 void vfs_clearmntopt(vfs_t *vfsp, const char *name);
 int vfs_optionisset(const vfs_t *vfsp, const char *opt, char **argp);
-int traverse(vnode_t **cvpp);
+int traverse(vnode_t **cvpp, int lktype);
 int domount(kthread_t *td, vnode_t *vp, const char *fstype, char *fspath,
     char *fspec, int fsflags);
 

==== //depot/projects/mjexp/sys/conf/Makefile.ia64#4 (text+ko) ====

@@ -1,7 +1,7 @@
 # Makefile.ia64 -- with config changes.
 # Copyright 1990 W. Jolitz
 #	from: src/sys/conf/Makefile.alpha,v 1.76
-# $FreeBSD: src/sys/conf/Makefile.ia64,v 1.69 2007/05/16 17:23:53 wkoszek Exp $
+# $FreeBSD: src/sys/conf/Makefile.ia64,v 1.70 2007/06/02 21:30:39 marcel Exp $
 #
 # Makefile for FreeBSD
 #
@@ -16,8 +16,6 @@
 # after which config should be rerun for all machines.
 #
 
-GCC3=	you bet
-
 # Which version of config(8) is required.
 %VERSREQ=	600004
 

==== //depot/projects/mjexp/sys/contrib/ipfilter/netinet/fil.c#2 (text+ko) ====

@@ -1,4 +1,4 @@
-/*	$FreeBSD: src/sys/contrib/ipfilter/netinet/fil.c,v 1.50 2006/08/16 12:06:35 guido Exp $	*/
+/*	$FreeBSD: src/sys/contrib/ipfilter/netinet/fil.c,v 1.51 2007/06/04 02:54:35 darrenr Exp $	*/
 
 /*
  * Copyright (C) 1993-2003 by Darren Reed.
@@ -17,7 +17,11 @@
 #include <sys/time.h>
 #if defined(__NetBSD__)
 # if (NetBSD >= 199905) && !defined(IPFILTER_LKM) && defined(_KERNEL)
-#  include "opt_ipfilter_log.h"
+#  if (__NetBSD_Version__ < 399001400)
+#   include "opt_ipfilter_log.h"
+#  else
+#   include "opt_ipfilter.h"
+#  endif
 # endif
 #endif
 #if defined(_KERNEL) && defined(__FreeBSD_version) && \
@@ -34,6 +38,9 @@
 #else
 # include <sys/ioctl.h>
 #endif
+#if (defined(__SVR4) || defined(__svr4__)) && defined(sun)
+# include <sys/filio.h>
+#endif
 #if !defined(_AIX51)
 # include <sys/fcntl.h>
 #endif
@@ -81,7 +88,11 @@
 # endif
 # include "radix_ipf.h"
 #endif
-#include <net/route.h>
+#ifdef __osf__
+# include "radix_ipf.h"
+#else
+# include <net/route.h>
+#endif
 #include <netinet/in.h>
 #include <netinet/in_systm.h>
 #include <netinet/ip.h>
@@ -100,6 +111,9 @@
 #ifdef __hpux
 # undef _NET_ROUTE_INCLUDED
 #endif
+#ifdef __osf__
+# undef _RADIX_H_
+#endif
 #include "netinet/ip_compat.h"
 #ifdef	USE_INET6
 # include <netinet/icmp6.h>
@@ -141,7 +155,7 @@
 
 #if !defined(lint)
 static const char sccsid[] = "@(#)fil.c	1.36 6/5/96 (C) 1993-2000 Darren Reed";
-static const char rcsid[] = "@(#)$FreeBSD: src/sys/contrib/ipfilter/netinet/fil.c,v 1.50 2006/08/16 12:06:35 guido Exp $";
+static const char rcsid[] = "@(#)$FreeBSD: src/sys/contrib/ipfilter/netinet/fil.c,v 1.51 2007/06/04 02:54:35 darrenr Exp $";
 /* static const char rcsid[] = "@(#)$Id: fil.c,v 2.243.2.78 2006/03/29 11:19:54 darrenr Exp $"; */
 #endif
 
@@ -154,7 +168,7 @@
 
 
 fr_info_t	frcache[2][8];
-struct	filterstats frstats[2] = { { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } };
+struct	filterstats frstats[2];
 struct	frentry	*ipfilter[2][2] = { { NULL, NULL }, { NULL, NULL } },
 		*ipfilter6[2][2] = { { NULL, NULL }, { NULL, NULL } },
 		*ipacct6[2][2] = { { NULL, NULL }, { NULL, NULL } },
@@ -235,11 +249,14 @@
 static	int		fr_updateipid __P((fr_info_t *));
 #ifdef	IPFILTER_LOOKUP
 static	int		fr_grpmapinit __P((frentry_t *fr));
-static	INLINE void	*fr_resolvelookup __P((u_int, u_int, lookupfunc_t *));
+static	INLINE void	*fr_resolvelookup __P((u_int, u_int, i6addr_t *, lookupfunc_t *));
 #endif
 static	void		frsynclist __P((frentry_t *, void *));
 static	ipftuneable_t	*fr_findtunebyname __P((const char *));
 static	ipftuneable_t	*fr_findtunebycookie __P((void *, void **));
+static	int		ipf_geniter __P((ipftoken_t *, ipfgeniter_t *));
+static	int		ipf_frruleiter __P((void *, int, void *));
+static	void		ipf_unlinktoken __P((ipftoken_t *));
 
 
 /*
@@ -319,7 +336,7 @@
 	{ "fr_srcgrpmap", fr_srcgrpmap, fr_grpmapinit },
 	{ "fr_dstgrpmap", fr_dstgrpmap, fr_grpmapinit },
 #endif
-	{ "", NULL }
+	{ "", NULL, NULL }
 };
 
 
@@ -532,7 +549,16 @@
 		return IPPROTO_NONE;
 
 	hdr = fin->fin_dp;
-	shift = 8 + (hdr->ip6e_len << 3);
+	switch (proto)
+	{
+	case IPPROTO_FRAGMENT :
+		shift = 8;
+		break;
+	default :
+		shift = 8 + (hdr->ip6e_len << 3);
+		break;
+	}
+
 	if (shift > fin->fin_dlen) {	/* Nasty extension header length? */
 		fin->fin_flx |= FI_BAD;
 		return IPPROTO_NONE;
@@ -551,6 +577,7 @@
 			break;
 		}
 
+	fin->fin_exthdr = fin->fin_dp;
 	fin->fin_dp = (char *)fin->fin_dp + shift;
 	fin->fin_dlen -= shift;
 
@@ -600,24 +627,22 @@
 fr_info_t *fin;
 {
 	struct ip6_ext *hdr;
-	int shift;
 
 	if (frpr_ipv6exthdr(fin, 0, IPPROTO_ROUTING) == IPPROTO_NONE)
 		return IPPROTO_NONE;
+	hdr = fin->fin_exthdr;
 
-	hdr = fin->fin_dp;
-	shift = 8 + (hdr->ip6e_len << 3);
-	/*
-	 * Nasty extension header length?
-	 */
-	if ((shift < sizeof(struct ip6_hdr)) ||
-	    ((shift - sizeof(struct ip6_hdr)) & 15)) {
+	if ((hdr->ip6e_len & 1) != 0) {
+		/*
+		 * The routing header data is made up of 128 bit IPv6 addresses
+		 * which means it must be a multiple of 2 lots of 8 in length.
+		 */
 		fin->fin_flx |= FI_BAD;
 		/*
 		 * Compensate for the changes made in frpr_ipv6exthdr()
 		 */
-		fin->fin_dlen += shift;
-		fin->fin_dp = (char *)fin->fin_dp - shift;
+		fin->fin_dlen += 8 + (hdr->ip6e_len << 3);
+		fin->fin_dp = hdr;
 		return IPPROTO_NONE;
 	}
 
@@ -643,16 +668,20 @@
 fr_info_t *fin;
 {
 	struct ip6_frag *frag;
+	int extoff;
 
 	fin->fin_flx |= FI_FRAG;
 
 	if (frpr_ipv6exthdr(fin, 0, IPPROTO_FRAGMENT) == IPPROTO_NONE)
 		return;
 
+	extoff = (char *)fin->fin_exthdr - (char *)fin->fin_dp;
+
 	if (frpr_pullup(fin, sizeof(*frag)) == -1)
 		return;
 
-	frag = fin->fin_dp;
+	fin->fin_exthdr = (char *)fin->fin_dp + extoff;
+	frag = fin->fin_exthdr;
 	/*
 	 * Fragment but no fragmentation info set?  Bad packet...
 	 */
@@ -702,10 +731,12 @@
 	int minicmpsz = sizeof(struct icmp6_hdr);
 	struct icmp6_hdr *icmp6;
 
-	if (frpr_pullup(fin, ICMP6ERR_MINPKTLEN + 8 - sizeof(ip6_t)) == -1)
+	if (frpr_pullup(fin, ICMP6ERR_MINPKTLEN - sizeof(ip6_t)) == -1)
 		return;
 
 	if (fin->fin_dlen > 1) {
+		ip6_t *ip6;
+
 		icmp6 = fin->fin_dp;
 
 		fin->fin_data[0] = *(u_short *)icmp6;
@@ -720,12 +751,26 @@
 		case ICMP6_PACKET_TOO_BIG :
 		case ICMP6_TIME_EXCEEDED :
 		case ICMP6_PARAM_PROB :
+			fin->fin_flx |= FI_ICMPERR;
 			if ((fin->fin_m != NULL) &&
 			    (M_LEN(fin->fin_m) < fin->fin_plen)) {
 				if (fr_coalesce(fin) != 1)
 					return;
 			}
-			fin->fin_flx |= FI_ICMPERR;
+
+			if (frpr_pullup(fin, ICMP6ERR_MINPKTLEN) == -1)
+				return;
+
+			/*
+			 * If the destination of this packet doesn't match the
+			 * source of the original packet then this packet is
+			 * not correct.
+			 */
+			ip6 = (ip6_t *)((char *)icmp6 + ICMPERR_ICMPHLEN);
+			if (IP6_NEQ(&fin->fin_fi.fi_dst,
+				    (i6addr_t *)&ip6->ip6_src))
+				fin->fin_flx |= FI_BAD;
+
 			minicmpsz = ICMP6ERR_IPICMPHLEN - sizeof(ip6_t);
 			break;
 		default :
@@ -752,8 +797,13 @@
 
 	frpr_short6(fin, sizeof(struct udphdr));
 
-	if (frpr_udpcommon(fin) == 0)
+	if (frpr_udpcommon(fin) == 0) {
+		u_char p = fin->fin_p;
+
+		fin->fin_p = IPPROTO_UDP;
 		fr_checkv6sum(fin);
+		fin->fin_p = p;
+	}
 }
 
 
@@ -772,8 +822,13 @@
 
 	frpr_short6(fin, sizeof(struct tcphdr));
 
-	if (frpr_tcpcommon(fin) == 0)
+	if (frpr_tcpcommon(fin) == 0) {
+		u_char p = fin->fin_p;
+
+		fin->fin_p = IPPROTO_TCP;
 		fr_checkv6sum(fin);
+		fin->fin_p = p;
+	}
 }
 
 
@@ -862,18 +917,26 @@
 fr_info_t *fin;
 int plen;
 {
-#if defined(_KERNEL)
 	if (fin->fin_m != NULL) {
 		if (fin->fin_dp != NULL)
 			plen += (char *)fin->fin_dp -
 				((char *)fin->fin_ip + fin->fin_hlen);
 		plen += fin->fin_hlen;
 		if (M_LEN(fin->fin_m) < plen) {
+#if defined(_KERNEL)
 			if (fr_pullup(fin->fin_m, fin, plen) == NULL)
 				return -1;
+#else
+			/*
+			 * Fake fr_pullup failing
+			 */
+			*fin->fin_mp = NULL;
+			fin->fin_m = NULL;
+			fin->fin_ip = NULL;
+			return -1;
+#endif
 		}
 	}
-#endif
 	return 0;
 }
 
@@ -987,6 +1050,22 @@
 			oip = (ip_t *)((char *)fin->fin_dp + ICMPERR_ICMPHLEN);
 			if ((ntohs(oip->ip_off) & IP_OFFMASK) != 0)
 				fin->fin_flx |= FI_BAD;
+
+			/*
+			 * If the destination of this packet doesn't match the
+			 * source of the original packet then this packet is
+			 * not correct.
+			 */
+			if (oip->ip_src.s_addr != fin->fin_daddr)
+				fin->fin_flx |= FI_BAD;
+
+			/*
+			 * If the destination of this packet doesn't match the
+			 * source of the original packet then this packet is
+			 * not correct.
+			 */
+			if (oip->ip_src.s_addr != fin->fin_daddr)
+				fin->fin_flx |= FI_BAD;
 			break;
 		default :
 			break;
@@ -1054,14 +1133,27 @@
 	 */
 	if ((flags & TH_URG) != 0 && (tcp->th_urp == 0)) {
 		fin->fin_flx |= FI_BAD;
+#if 0
 	} else if ((flags & TH_URG) == 0 && (tcp->th_urp != 0)) {
-		/* Ignore this case, it shows up in "real" traffic with */
-		/* bogus values in the urgent pointer field. */
-		;
+		/*
+		 * Ignore this case (#if 0) as it shows up in "real"
+		 * traffic with bogus values in the urgent pointer field.
+		 */
+		fin->fin_flx |= FI_BAD;
+#endif
 	} else if (((flags & (TH_SYN|TH_FIN)) != 0) &&
 		   ((flags & (TH_RST|TH_ACK)) == TH_RST)) {
 		/* TH_FIN|TH_RST|TH_ACK seems to appear "naturally" */
 		fin->fin_flx |= FI_BAD;
+#if 1
+	} else if (((flags & TH_SYN) != 0) &&
+		   ((flags & (TH_URG|TH_PUSH)) != 0)) {
+		/*
+		 * SYN with URG and PUSH set is not for normal TCP but it is
+		 * possible(?) with T/TCP...but who uses T/TCP?
+		 */
+		fin->fin_flx |= FI_BAD;
+#endif
 	} else if (!(flags & TH_ACK)) {
 		/*
 		 * If the ack bit isn't set, then either the SYN or
@@ -1347,13 +1439,16 @@
 	 */
 	off &= IP_MF|IP_OFFMASK;
 	if (off != 0) {
+		int morefrag = off & IP_MF;
+
 		fi->fi_flx |= FI_FRAG;
 		off &= IP_OFFMASK;
 		if (off != 0) {
 			fin->fin_flx |= FI_FRAGBODY;
 			off <<= 3;
 			if ((off + fin->fin_dlen > 65535) || 
-			    (fin->fin_dlen == 0) || (fin->fin_dlen & 7)) {
+			    (fin->fin_dlen == 0) ||
+			    ((morefrag != 0) && ((fin->fin_dlen & 7) != 0))) {
 				/* 
 				 * The length of the packet, starting at its
 				 * offset cannot exceed 65535 (0xffff) as the 
@@ -1507,18 +1602,24 @@
 	fin->fin_rule = 0xffffffff;
 	fin->fin_group[0] = -1;
 	fin->fin_group[1] = '\0';
-	fin->fin_dlen = fin->fin_plen - hlen;
 	fin->fin_dp = (char *)ip + hlen;
 
 	v = fin->fin_v;
-	if (v == 4)
+	if (v == 4) {
+		fin->fin_plen = ip->ip_len;
+		fin->fin_dlen = fin->fin_plen - hlen;
+
 		frpr_ipv4hdr(fin);
 #ifdef	USE_INET6
-	else if (v == 6) {
+	} else if (v == 6) {
+		fin->fin_plen = ntohs(((ip6_t *)ip)->ip6_plen);
+		fin->fin_dlen = fin->fin_plen;
+		fin->fin_plen += hlen;
+
 		if (frpr_ipv6hdr(fin) == -1)
 			return -1;
+#endif
 	}
-#endif
 	if (fin->fin_ip == NULL)
 		return -1;
 	return 0;
@@ -1680,7 +1781,7 @@
 	 */
 	i = ((*lip & *lm) != *ld);
 	FR_DEBUG(("0. %#08x & %#08x != %#08x\n",
-		   *lip, *lm, *ld));
+		   ntohl(*lip), ntohl(*lm), ntohl(*ld)));
 	if (i)
 		return 1;
 
@@ -1691,7 +1792,7 @@
 	lip++, lm++, ld++;
 	i |= ((*lip & *lm) != *ld);
 	FR_DEBUG(("1. %#08x & %#08x != %#08x\n",
-		   *lip, *lm, *ld));
+		   ntohl(*lip), ntohl(*lm), ntohl(*ld)));
 	if (i)
 		return 1;
 
@@ -1714,20 +1815,20 @@
 #endif
 		i = ((*lip & *lm) != *ld);
 		FR_DEBUG(("2a. %#08x & %#08x != %#08x\n",
-			   *lip, *lm, *ld));
+			   ntohl(*lip), ntohl(*lm), ntohl(*ld)));
 		if (fi->fi_v == 6) {
 			lip++, lm++, ld++;
 			i |= ((*lip & *lm) != *ld);
 			FR_DEBUG(("2b. %#08x & %#08x != %#08x\n",
-				   *lip, *lm, *ld));
+				   ntohl(*lip), ntohl(*lm), ntohl(*ld)));
 			lip++, lm++, ld++;
 			i |= ((*lip & *lm) != *ld);
 			FR_DEBUG(("2c. %#08x & %#08x != %#08x\n",
-				   *lip, *lm, *ld));
+				   ntohl(*lip), ntohl(*lm), ntohl(*ld)));
 			lip++, lm++, ld++;
 			i |= ((*lip & *lm) != *ld);
 			FR_DEBUG(("2d. %#08x & %#08x != %#08x\n",
-				   *lip, *lm, *ld));
+				   ntohl(*lip), ntohl(*lm), ntohl(*ld)));
 		} else {
 			lip += 3;
 			lm += 3;
@@ -1756,20 +1857,20 @@
 #endif
 		i = ((*lip & *lm) != *ld);
 		FR_DEBUG(("3a. %#08x & %#08x != %#08x\n",
-			   *lip, *lm, *ld));
+			   ntohl(*lip), ntohl(*lm), ntohl(*ld)));
 		if (fi->fi_v == 6) {
 			lip++, lm++, ld++;
 			i |= ((*lip & *lm) != *ld);
 			FR_DEBUG(("3b. %#08x & %#08x != %#08x\n",
-				   *lip, *lm, *ld));
+				   ntohl(*lip), ntohl(*lm), ntohl(*ld)));
 			lip++, lm++, ld++;
 			i |= ((*lip & *lm) != *ld);
 			FR_DEBUG(("3c. %#08x & %#08x != %#08x\n",
-				   *lip, *lm, *ld));
+				   ntohl(*lip), ntohl(*lm), ntohl(*ld)));
 			lip++, lm++, ld++;
 			i |= ((*lip & *lm) != *ld);
 			FR_DEBUG(("3d. %#08x & %#08x != %#08x\n",
-				   *lip, *lm, *ld));
+				   ntohl(*lip), ntohl(*lm), ntohl(*ld)));
 		} else {
 			lip += 3;
 			lm += 3;
@@ -2297,9 +2398,6 @@
 	int v = IP_V(ip);
 	mb_t *mc = NULL;
 	mb_t *m;

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


More information about the p4-projects mailing list