PERFORCE change 90890 for review

John Baldwin jhb at FreeBSD.org
Wed Feb 1 09:15:07 PST 2006


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

Change 90890 by jhb at jhb_slimer on 2006/02/01 17:14:07

	IFC @90881.

Affected files ...

.. //depot/projects/smpng/sys/cam/scsi/scsi_da.c#64 integrate
.. //depot/projects/smpng/sys/coda/coda_vnops.c#26 integrate
.. //depot/projects/smpng/sys/compat/linux/linux_getcwd.c#20 integrate
.. //depot/projects/smpng/sys/conf/Makefile.i386#26 integrate
.. //depot/projects/smpng/sys/conf/Makefile.pc98#25 integrate
.. //depot/projects/smpng/sys/conf/NOTES#113 integrate
.. //depot/projects/smpng/sys/conf/files#166 integrate
.. //depot/projects/smpng/sys/conf/files.i386#92 integrate
.. //depot/projects/smpng/sys/conf/files.sparc64#54 integrate
.. //depot/projects/smpng/sys/conf/kmod.mk#54 integrate
.. //depot/projects/smpng/sys/conf/options#114 integrate
.. //depot/projects/smpng/sys/dev/acpi_support/acpi_asus.c#7 integrate
.. //depot/projects/smpng/sys/dev/acpi_support/acpi_fujitsu.c#4 integrate
.. //depot/projects/smpng/sys/dev/bge/if_bge.c#70 integrate
.. //depot/projects/smpng/sys/dev/bge/if_bgereg.h#39 integrate
.. //depot/projects/smpng/sys/dev/ce/if_ce.c#2 integrate
.. //depot/projects/smpng/sys/dev/em/if_em.c#65 integrate
.. //depot/projects/smpng/sys/dev/iwi/if_iwi.c#13 integrate
.. //depot/projects/smpng/sys/dev/iwi/if_iwireg.h#6 integrate
.. //depot/projects/smpng/sys/dev/le/am7990.c#1 branch
.. //depot/projects/smpng/sys/dev/le/am79900.c#1 branch
.. //depot/projects/smpng/sys/dev/le/am79900reg.h#1 branch
.. //depot/projects/smpng/sys/dev/le/am79900var.h#1 branch
.. //depot/projects/smpng/sys/dev/le/am7990reg.h#1 branch
.. //depot/projects/smpng/sys/dev/le/am7990var.h#1 branch
.. //depot/projects/smpng/sys/dev/le/if_le_ledma.c#1 branch
.. //depot/projects/smpng/sys/dev/le/if_le_pci.c#1 branch
.. //depot/projects/smpng/sys/dev/le/lance.c#1 branch
.. //depot/projects/smpng/sys/dev/le/lancereg.h#1 branch
.. //depot/projects/smpng/sys/dev/le/lancevar.h#1 branch
.. //depot/projects/smpng/sys/dev/md/md.c#73 integrate
.. //depot/projects/smpng/sys/dev/pci/vga_pci.c#3 integrate
.. //depot/projects/smpng/sys/dev/ral/if_ral.c#13 integrate
.. //depot/projects/smpng/sys/dev/ral/if_ralreg.h#3 integrate
.. //depot/projects/smpng/sys/dev/ral/if_ralvar.h#3 integrate
.. //depot/projects/smpng/sys/dev/sound/pcm/dsp.c#35 integrate
.. //depot/projects/smpng/sys/dev/sound/pcm/feeder.c#14 integrate
.. //depot/projects/smpng/sys/dev/usb/umass.c#53 integrate
.. //depot/projects/smpng/sys/dev/usb/usbdevs#85 integrate
.. //depot/projects/smpng/sys/fs/devfs/devfs_vnops.c#54 integrate
.. //depot/projects/smpng/sys/fs/msdosfs/msdosfs_vnops.c#34 integrate
.. //depot/projects/smpng/sys/geom/concat/g_concat.c#15 integrate
.. //depot/projects/smpng/sys/geom/concat/g_concat.h#9 integrate
.. //depot/projects/smpng/sys/geom/eli/g_eli.c#7 integrate
.. //depot/projects/smpng/sys/geom/eli/g_eli.h#4 integrate
.. //depot/projects/smpng/sys/geom/eli/g_eli_crypto.c#2 integrate
.. //depot/projects/smpng/sys/geom/eli/g_eli_ctl.c#4 integrate
.. //depot/projects/smpng/sys/geom/eli/g_eli_key.c#2 integrate
.. //depot/projects/smpng/sys/geom/eli/pkcs5v2.c#2 integrate
.. //depot/projects/smpng/sys/geom/eli/pkcs5v2.h#2 integrate
.. //depot/projects/smpng/sys/geom/gate/g_gate.c#14 integrate
.. //depot/projects/smpng/sys/geom/gate/g_gate.h#5 integrate
.. //depot/projects/smpng/sys/geom/label/g_label.c#11 integrate
.. //depot/projects/smpng/sys/geom/label/g_label.h#7 integrate
.. //depot/projects/smpng/sys/geom/label/g_label_iso9660.c#4 integrate
.. //depot/projects/smpng/sys/geom/label/g_label_msdosfs.c#3 integrate
.. //depot/projects/smpng/sys/geom/label/g_label_ufs.c#5 integrate
.. //depot/projects/smpng/sys/geom/mirror/g_mirror.c#24 integrate
.. //depot/projects/smpng/sys/geom/mirror/g_mirror.h#9 integrate
.. //depot/projects/smpng/sys/geom/mirror/g_mirror_ctl.c#8 integrate
.. //depot/projects/smpng/sys/geom/nop/g_nop.c#9 integrate
.. //depot/projects/smpng/sys/geom/raid3/g_raid3.c#21 integrate
.. //depot/projects/smpng/sys/geom/raid3/g_raid3.h#9 integrate
.. //depot/projects/smpng/sys/geom/raid3/g_raid3_ctl.c#9 integrate
.. //depot/projects/smpng/sys/geom/shsec/g_shsec.c#4 integrate
.. //depot/projects/smpng/sys/geom/shsec/g_shsec.h#3 integrate
.. //depot/projects/smpng/sys/geom/stripe/g_stripe.c#15 integrate
.. //depot/projects/smpng/sys/geom/stripe/g_stripe.h#7 integrate
.. //depot/projects/smpng/sys/geom/zero/g_zero.c#4 integrate
.. //depot/projects/smpng/sys/i386/conf/NOTES#114 integrate
.. //depot/projects/smpng/sys/i386/include/cserial.h#3 integrate
.. //depot/projects/smpng/sys/ia64/include/elf.h#11 integrate
.. //depot/projects/smpng/sys/kern/kern_ktrace.c#49 integrate
.. //depot/projects/smpng/sys/kern/kern_malloc.c#43 integrate
.. //depot/projects/smpng/sys/kern/kern_mbuf.c#14 integrate
.. //depot/projects/smpng/sys/kern/kern_rwlock.c#2 integrate
.. //depot/projects/smpng/sys/kern/subr_firmware.c#1 branch
.. //depot/projects/smpng/sys/kern/sys_pipe.c#54 integrate
.. //depot/projects/smpng/sys/kern/tty_pts.c#2 integrate
.. //depot/projects/smpng/sys/kern/tty_pty.c#45 integrate
.. //depot/projects/smpng/sys/kern/uipc_usrreq.c#54 integrate
.. //depot/projects/smpng/sys/kern/vfs_default.c#45 integrate
.. //depot/projects/smpng/sys/kern/vfs_lookup.c#33 integrate
.. //depot/projects/smpng/sys/kern/vfs_mount.c#57 integrate
.. //depot/projects/smpng/sys/kern/vfs_subr.c#120 integrate
.. //depot/projects/smpng/sys/kern/vfs_syscalls.c#97 integrate
.. //depot/projects/smpng/sys/modules/Makefile#115 integrate
.. //depot/projects/smpng/sys/modules/ce/Makefile#1 branch
.. //depot/projects/smpng/sys/modules/firmware/Makefile#1 branch
.. //depot/projects/smpng/sys/modules/le/Makefile#1 branch
.. //depot/projects/smpng/sys/net/if.c#78 integrate
.. //depot/projects/smpng/sys/net/if.h#28 integrate
.. //depot/projects/smpng/sys/net/if_bridge.c#23 integrate
.. //depot/projects/smpng/sys/net/if_ethersubr.c#70 integrate
.. //depot/projects/smpng/sys/net/if_gif.c#32 integrate
.. //depot/projects/smpng/sys/net/if_gif.h#13 integrate
.. //depot/projects/smpng/sys/net/if_var.h#43 integrate
.. //depot/projects/smpng/sys/net/if_vlan.c#44 integrate
.. //depot/projects/smpng/sys/net/if_vlan_var.h#16 integrate
.. //depot/projects/smpng/sys/netgraph/ng_sppp.c#10 integrate
.. //depot/projects/smpng/sys/netinet/if_ether.c#46 integrate
.. //depot/projects/smpng/sys/netinet/in_gif.c#18 integrate
.. //depot/projects/smpng/sys/netinet/ip_input.c#75 integrate
.. //depot/projects/smpng/sys/netinet/ip_ipsec.c#1 branch
.. //depot/projects/smpng/sys/netinet/ip_ipsec.h#1 branch
.. //depot/projects/smpng/sys/netinet/ip_mroute.h#9 integrate
.. //depot/projects/smpng/sys/netinet/ip_output.c#82 integrate
.. //depot/projects/smpng/sys/netinet6/in6_gif.c#12 integrate
.. //depot/projects/smpng/sys/nfsserver/nfs.h#17 integrate
.. //depot/projects/smpng/sys/nfsserver/nfs_serv.c#44 integrate
.. //depot/projects/smpng/sys/nfsserver/nfs_srvsock.c#24 integrate
.. //depot/projects/smpng/sys/nfsserver/nfs_srvsubs.c#28 integrate
.. //depot/projects/smpng/sys/nfsserver/nfs_syscalls.c#27 integrate
.. //depot/projects/smpng/sys/pci/agp_i810.c#21 integrate
.. //depot/projects/smpng/sys/sparc64/conf/GENERIC#64 integrate
.. //depot/projects/smpng/sys/sparc64/sbus/dma_sbus.c#4 integrate
.. //depot/projects/smpng/sys/sparc64/sbus/lsi64854.c#4 integrate
.. //depot/projects/smpng/sys/sparc64/sbus/lsi64854var.h#3 integrate
.. //depot/projects/smpng/sys/sys/_rwlock.h#2 integrate
.. //depot/projects/smpng/sys/sys/firmware.h#1 branch
.. //depot/projects/smpng/sys/sys/mbuf.h#59 integrate
.. //depot/projects/smpng/sys/sys/rwlock.h#2 integrate
.. //depot/projects/smpng/sys/sys/vnode.h#70 integrate
.. //depot/projects/smpng/sys/tools/fw_stub.awk#1 branch
.. //depot/projects/smpng/sys/ufs/ufs/ufs_extattr.c#38 integrate
.. //depot/projects/smpng/sys/vm/redzone.c#1 branch
.. //depot/projects/smpng/sys/vm/redzone.h#1 branch
.. //depot/projects/smpng/sys/vm/vm_contig.c#35 integrate
.. //depot/projects/smpng/sys/vm/vm_object.c#76 integrate
.. //depot/projects/smpng/sys/vm/vm_page.c#71 integrate
.. //depot/projects/smpng/sys/vm/vnode_pager.c#56 integrate

Differences ...

==== //depot/projects/smpng/sys/cam/scsi/scsi_da.c#64 (text+ko) ====

@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/cam/scsi/scsi_da.c,v 1.185 2006/01/26 00:35:53 flz Exp $");
+__FBSDID("$FreeBSD: src/sys/cam/scsi/scsi_da.c,v 1.186 2006/01/30 20:27:44 flz Exp $");
 
 #include <sys/param.h>
 
@@ -427,6 +427,14 @@
 		{T_DIRECT, SIP_MEDIA_REMOVABLE, "*" , "USB DISK*",
 		"*"}, /*quirks*/ DA_Q_NO_SYNC_CACHE
 	},
+	{
+		/*
+		 * Genesys 6-in-1 Card Reader
+		 * No PR, reported by anders
+		 */
+		{T_DIRECT, SIP_MEDIA_REMOVABLE, "Generic*", "STORAGE DEVICE*",
+		"*"}, /*quirks*/ DA_Q_NO_SYNC_CACHE
+	},
 };
 
 static	disk_strategy_t	dastrategy;

==== //depot/projects/smpng/sys/coda/coda_vnops.c#26 (text+ko) ====

@@ -42,7 +42,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/coda/coda_vnops.c,v 1.67 2006/01/21 19:51:47 rwatson Exp $");
+__FBSDID("$FreeBSD: src/sys/coda/coda_vnops.c,v 1.68 2006/02/01 00:25:24 jeff Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -1289,21 +1289,18 @@
     /* XXX - do we need to call cache pureg on the moved vnode? */
     cache_purge(ap->a_fvp);
 
-    /* It seems to be incumbent on us to drop locks on all four vnodes */
-    /* From-vnodes are not locked, only ref'd.  To-vnodes are locked. */
-
-    vrele(ap->a_fvp);
+    /* Release parents first, then children. */
     vrele(odvp);
-
     if (ap->a_tvp) {
-	if (ap->a_tvp == ndvp) {
-	    vrele(ap->a_tvp);
-	} else {
-	    vput(ap->a_tvp);
-	}
-    }
+	if (ap->a_tvp == ndvp)
+	    vrele(ndvp);
+	else
+	    vput(ndvp);
+	vput(ap->a_tvp);
+    } else
+	vput(ndvp);
+    vrele(ap->a_fvp);
 
-    vput(ndvp);
     return(error);
 }
 

==== //depot/projects/smpng/sys/compat/linux/linux_getcwd.c#20 (text+ko) ====

@@ -37,7 +37,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/compat/linux/linux_getcwd.c,v 1.20 2005/12/04 02:12:39 ru Exp $");
+__FBSDID("$FreeBSD: src/sys/compat/linux/linux_getcwd.c,v 1.21 2006/01/30 08:22:56 jeff Exp $");
 
 #include "opt_compat.h"
 #include "opt_mac.h"
@@ -327,11 +327,8 @@
 	 */
 
 	error = vn_lock(lvp, LK_EXCLUSIVE | LK_RETRY, td);
-	if (error) {
-		vrele(lvp);
-		lvp = NULL;
-		goto out;
-	}
+	if (error != 0)
+		panic("vn_lock LK_RETRY returned error %d", error);
 	if (bufp)
 		bp = *bpp;
 	/*
@@ -383,11 +380,8 @@
 			}
 			VREF(lvp);
 			error = vn_lock(lvp, LK_EXCLUSIVE | LK_RETRY, td);
-			if (error != 0) {
-				vrele(lvp);
-				lvp = NULL;
-				goto out;
-			}
+			if (error != 0)
+				panic("vn_lock LK_RETRY returned %d", error);
 		}
 		error = linux_getcwd_scandir(&lvp, &uvp, &bp, bufp, td);
 		if (error)

==== //depot/projects/smpng/sys/conf/Makefile.i386#26 (text+ko) ====

@@ -1,7 +1,7 @@
 # Makefile.i386 -- with config changes.
 # Copyright 1990 W. Jolitz
 #	from: @(#)Makefile.i386	7.1 5/10/91
-# $FreeBSD: src/sys/conf/Makefile.i386,v 1.270 2005/11/28 17:51:30 imp Exp $
+# $FreeBSD: src/sys/conf/Makefile.i386,v 1.271 2006/01/29 03:32:19 nyan Exp $
 #
 # Makefile for FreeBSD
 #
@@ -30,7 +30,9 @@
 .endif
 .include "$S/conf/kern.pre.mk"
 
-MKMODULESENV+= MACHINE=i386
+MACHINE=i386
+
+MKMODULESENV+=	MACHINE=${MACHINE}
 
 %BEFORE_DEPEND
 

==== //depot/projects/smpng/sys/conf/Makefile.pc98#25 (text+ko) ====

@@ -3,7 +3,7 @@
 # Makefile.i386 -- with config changes.
 # Copyright 1990 W. Jolitz
 #	from: @(#)Makefile.i386	7.1 5/10/91
-# $FreeBSD: src/sys/conf/Makefile.pc98,v 1.172 2005/11/28 17:51:31 imp Exp $
+# $FreeBSD: src/sys/conf/Makefile.pc98,v 1.173 2006/01/29 03:32:19 nyan Exp $
 #
 # Makefile for FreeBSD
 #
@@ -30,7 +30,9 @@
 .endif
 .include "$S/conf/kern.pre.mk"
 
-MKMODULESENV+=	MACHINE=pc98
+MACHINE=pc98
+
+MKMODULESENV+=	MACHINE=${MACHINE}
 
 %BEFORE_DEPEND
 

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

@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/NOTES,v 1.1346 2006/01/14 15:35:20 bz Exp $
+# $FreeBSD: src/sys/conf/NOTES,v 1.1350 2006/01/31 22:56:44 jhb Exp $
 #
 # NOTES -- Lines that can be cut/pasted into kernel and hints configs.
 #
@@ -191,7 +191,7 @@
 # MUTEX_NOINLINE forces mutex operations to call functions to perform each
 # operation rather than inlining the simple cases.  This can be used to
 # shrink the size of the kernel text segment.  Note that this behavior is
-# already implied by the INVARIANT_SUPPORT, INVARIANTS, MUTEX_PROFILING,
+# already implied by the INVARIANT_SUPPORT, INVARIANTS, KTR, MUTEX_PROFILING,
 # and WITNESS options.
 options 	MUTEX_NOINLINE
 
@@ -200,6 +200,13 @@
 # priority waiter.
 options 	MUTEX_WAKE_ALL
 
+# RWLOCK_NOINLINE forces rwlock operations to call functions to perform each
+# operation rather than inlining the simple cases.  This can be used to
+# shrink the size of the kernel text segment.  Note that this behavior is
+# already implied by the INVARIANT_SUPPORT, INVARIANTS, KTR, MUTEX_PROFILING,
+# and WITNESS options.
+options 	RWLOCK_NOINLINE
+
 # SMP Debugging Options:
 #
 # PREEMPTION allows the threads that are in the kernel to be preempted
@@ -327,6 +334,12 @@
 options 	DEBUG_MEMGUARD
 
 #
+# DEBUG_REDZONE enables buffer underflows and buffer overflows detection for
+# malloc(9).
+#
+options 	DEBUG_REDZONE
+
+#
 # KTRACE enables the system-call tracing facility ktrace(2).  To be more
 # SMP-friendly, KTRACE uses a worker thread to process most trace events
 # asynchronously to the thread generating the event.  This requires a
@@ -1187,6 +1200,7 @@
 device		md		#Memory/malloc disk
 device		snp		#Snoop device - to look at pty/vty/etc..
 device		ccd		#Concatenated disk driver
+device		firmware	#firmware(9) support
 
 # Kernel side iconv library
 options 	LIBICONV
@@ -1724,6 +1738,7 @@
 # fxp:  Intel EtherExpress Pro/100B
 #	(hint of prefer_iomap can be done to prefer I/O instead of Mem mapping)
 # hme:  Sun HME (Happy Meal Ethernet)
+# le:   AMD Am7900 LANCE and Am79C9xx PCnet
 # lge:	Support for PCI gigabit ethernet adapters based on the Level 1
 #	LXT1001 NetCellerator chipset. This includes the D-Link DGE-500SX,
 #	SMC TigerCard 1000 (SMC9462SX), and some Addtron cards.
@@ -1839,6 +1854,7 @@
 
 # PCI Ethernet NICs.
 device		de		# DEC/Intel DC21x4x (``Tulip'')
+device		le		# AMD Am7900 LANCE and Am79C9xx PCnet
 device		txp		# 3Com 3cR990 (``Typhoon'')
 device		vx		# 3Com 3c590, 3c595 (``Vortex'')
 

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

@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/files,v 1.1087 2006/01/27 23:13:24 jhb Exp $
+# $FreeBSD: src/sys/conf/files,v 1.1091 2006/02/01 13:55:02 andre Exp $
 #
 # The long compile-with and dependency lines are required because of
 # limitations in config: backslash-newline doesn't work in strings, and
@@ -679,6 +679,10 @@
 dev/joy/joy_isa.c		optional joy isa
 dev/joy/joy_pccard.c		optional joy pccard
 dev/kbdmux/kbdmux.c		optional kbdmux
+dev/le/am7990.c			optional le
+dev/le/am79900.c		optional le
+dev/le/if_le_pci.c		optional le pci
+dev/le/lance.c			optional le
 dev/led/led.c			standard
 dev/lge/if_lge.c		optional lge
 dev/lmc/if_lmc.c		optional lmc
@@ -1298,6 +1302,7 @@
 kern/subr_devstat.c		standard
 kern/subr_disk.c		standard
 kern/subr_eventhandler.c	standard
+kern/subr_firmware.c		optional firmware
 kern/subr_hints.c		standard
 kern/subr_kdb.c			standard
 kern/subr_kobj.c		standard
@@ -1649,6 +1654,8 @@
 netinet/ip_fw_pfil.c		optional ipfirewall
 netinet/ip_icmp.c		optional inet
 netinet/ip_input.c		optional inet
+netinet/ip_ipsec.c		optional ipsec
+netinet/ip_ipsec.c		optional fast_ipsec
 netinet/ip_mroute.c		optional mrouting
 netinet/ip_options.c		optional inet
 netinet/ip_output.c		optional inet
@@ -1866,6 +1873,7 @@
 vm/default_pager.c		standard
 vm/device_pager.c		standard
 vm/phys_pager.c			standard
+vm/redzone.c			optional DEBUG_REDZONE
 vm/swap_pager.c			standard
 vm/uma_core.c			standard
 vm/uma_dbg.c			standard

==== //depot/projects/smpng/sys/conf/files.i386#92 (text+ko) ====

@@ -1,7 +1,7 @@
 # This file tells config what files go into building a kernel,
 # files marked standard are always included.
 #
-# $FreeBSD: src/sys/conf/files.i386,v 1.550 2005/12/07 21:30:46 jkim Exp $
+# $FreeBSD: src/sys/conf/files.i386,v 1.551 2006/01/31 23:11:34 rik Exp $
 #
 # The long compile-with and dependency lines are required because of
 # limitations in config: backslash-newline doesn't work in strings, and
@@ -142,6 +142,9 @@
 dev/atkbdc/atkbdc_isa.c		optional atkbdc isa
 dev/atkbdc/atkbdc_subr.c	optional atkbdc
 dev/atkbdc/psm.c		optional psm atkbdc
+dev/ce/ceddk.c			optional ce
+dev/ce/if_ce.c			optional ce
+dev/ce/tau32-ddk.c		optional ce
 dev/cm/if_cm_isa.c		optional cm isa
 dev/cp/cpddk.c			optional cp
 dev/cp/if_cp.c			optional cp

==== //depot/projects/smpng/sys/conf/files.sparc64#54 (text+ko) ====

@@ -1,7 +1,7 @@
 # This file tells config what files go into building a kernel,
 # files marked standard are always included.
 #
-# $FreeBSD: src/sys/conf/files.sparc64,v 1.77 2005/11/27 21:41:58 ru Exp $
+# $FreeBSD: src/sys/conf/files.sparc64,v 1.78 2006/01/31 22:34:12 marius Exp $
 #
 # The long compile-with and dependency lines are required because of
 # limitations in config: backslash-newline doesn't work in strings, and
@@ -36,6 +36,7 @@
 dev/fb/splash.c			optional	splash
 dev/hwpmc/hwpmc_sparc64.c	optional	hwpmc
 dev/kbd/kbd.c			optional	atkbd | sc | ukbd
+dev/le/if_le_ledma.c		optional	le sbus
 dev/ofw/ofw_bus_if.m		standard
 dev/ofw/ofw_bus_subr.c		standard
 dev/ofw/ofw_console.c		optional	ofw_console

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

@@ -1,5 +1,5 @@
 #	From: @(#)bsd.prog.mk	5.26 (Berkeley) 6/25/91
-# $FreeBSD: src/sys/conf/kmod.mk,v 1.200 2005/11/29 09:37:42 ru Exp $
+# $FreeBSD: src/sys/conf/kmod.mk,v 1.201 2006/01/29 02:52:41 mlaier Exp $
 #
 # The include file <bsd.kmod.mk> handles building and installing loadable
 # kernel modules.
@@ -36,6 +36,8 @@
 #
 # SRCS		List of source files.
 #
+# FIRMWS	List of firmware images in format filename:shortname:version
+#
 # DESTDIR	The tree where the module gets installed. [not set]
 #
 # +++ targets +++
@@ -119,6 +121,32 @@
 CFLAGS+=	-mlongcall -fno-omit-frame-pointer
 .endif
 
+.if defined(FIRMWS)
+.if !exists(@)
+${KMOD:S/$/.c/}: @
+.else
+${KMOD:S/$/.c/}: @/tools/fw_stub.awk
+.endif
+	${AWK} -f @/tools/fw_stub.awk ${FIRMWS} -m${KMOD} -c${KMOD:S/$/.c/g}
+
+SRCS+=	${KMOD:S/$/.c/}
+CLEANFILES+=	${KMOD:S/$/.c/}
+
+.for _firmw in ${FIRMWS}
+${_firmw:C/\:.*$/.fwo/}:	${_firmw:C/\:.*$//}
+	@${ECHO} ${_firmw:C/\:.*$//} ${.ALLSRC:M*${_firmw:C/\:.*$//}}
+.if !exists(${.CURDIR}/${_firmw:C/\:.*$//})
+	ln -s ${.ALLSRC:M*${_firmw:C/\:.*$//}} ${_firmw:C/\:.*$//}
+	${LD} -b binary ${LDFLAGS} -r -d -o ${.TARGET} ${_firmw:C/\:.*$//}
+	rm -f ${_firmw:C/\:.*$//}
+.else
+	${LD} -b binary ${LDFLAGS} -r -d -o ${.TARGET} ${_firmw:C/\:.*$//}
+.endif
+
+OBJS+=	${_firmw:C/\:.*$/.fwo/}
+.endfor
+.endif
+
 OBJS+=	${SRCS:N*.h:R:S/$/.o/g}
 
 .if !defined(PROG)

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

@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/options,v 1.525 2006/01/27 23:13:25 jhb Exp $
+# $FreeBSD: src/sys/conf/options,v 1.527 2006/01/31 11:09:21 pjd Exp $
 #
 #        On the handling of kernel options
 #
@@ -385,6 +385,8 @@
 TCP_SIGNATURE		opt_inet.h
 TCP_SACK_DEBUG		opt_tcp_sack.h 
 TCP_DROP_SYNFIN		opt_tcp_input.h
+DEV_VLAN		opt_vlan.h
+VLAN_ARRAY		opt_vlan.h
 XBONEHACK
 
 # Netgraph(4). Use option NETGRAPH to enable the base netgraph code.
@@ -528,6 +530,9 @@
 # The MemGuard replacement allocator used for tamper-after-free detection
 DEBUG_MEMGUARD		opt_vm.h
 
+# The RedZone malloc(9) protection
+DEBUG_REDZONE		opt_vm.h
+
 # Standard SMP options
 SMP			opt_global.h
 

==== //depot/projects/smpng/sys/dev/acpi_support/acpi_asus.c#7 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/acpi_support/acpi_asus.c,v 1.25 2005/09/11 18:39:00 obrien Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/acpi_support/acpi_asus.c,v 1.27 2006/01/29 23:59:43 philip Exp $");
 
 /*
  * Driver for extra ACPI-controlled gadgets (hotkeys, leds, etc) found on
@@ -146,6 +146,30 @@
 		.disp_set	= "SDSP"
 	},
 	{
+		.name		= "A4D",
+		.mled_set	= "MLED",
+		.brn_up		= "\\_SB_.PCI0.SBRG.EC0._Q0E",
+		.brn_dn		= "\\_SB_.PCI0.SBRG.EC0._Q0F",
+		.brn_get	= "GPLV",
+		.brn_set	= "SPLV",
+#ifdef notyet
+		.disp_get	= "\\_SB_.PCI0.SBRG.EC0._Q10",
+		.disp_set	= "\\_SB_.PCI0.SBRG.EC0._Q11"
+#endif
+	},
+	{
+		.name		= "A6V",
+		.bled_set	= "BLED",
+		.mled_set	= "MLED",
+		.wled_set	= "WLED",
+		.lcd_get	= NULL,
+		.lcd_set	= "\\_SB.PCI0.SBRG.EC0._Q10",
+		.brn_get	= "GPLV",
+		.brn_set	= "SPLV",
+		.disp_get	= "\\_SB.PCI0.P0P3.VGA.GETD",
+		.disp_set	= "SDSP"
+	},
+	{
 		.name		= "D1x",
 		.mled_set	= "MLED",
 		.lcd_get	= "\\GP11",

==== //depot/projects/smpng/sys/dev/acpi_support/acpi_fujitsu.c#4 (text+ko) ====

@@ -1,6 +1,6 @@
 /*-
  * Copyright (c) 2002 Sean Bullington <seanATstalker.org>
- *               2003-2005 Anish Mistry <amistry at am-productions.biz>
+ *               2003-2006 Anish Mistry <amistry at am-productions.biz>
  *               2004 Mark Santcroos <marks at ripe.net>
  * All Rights Reserved.
  *
@@ -28,7 +28,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/acpi_support/acpi_fujitsu.c,v 1.3 2005/09/11 18:39:00 obrien Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/acpi_support/acpi_fujitsu.c,v 1.4 2006/01/29 23:52:02 philip Exp $");
 
 #include "opt_acpi.h"
 #include <sys/param.h>
@@ -44,11 +44,8 @@
 #define _COMPONENT	ACPI_OEM
 ACPI_MODULE_NAME("Fujitsu")
 
-/* Change and update bits for the buttons */
-#define MOUSE_UPDATED_BIT	0x80000000
+/* Change and update bits for the hotkeys */
 #define VOLUME_MUTE_BIT		0x40000000
-#define VOLUME_CHANGE_BIT	0x80000000
-#define BRIGHTNESS_CHANGE_BIT	0x80000000
 
 /* Values of settings */
 #define GENERAL_SETTING_BITS	0x0fffffff
@@ -57,9 +54,20 @@
 #define BRIGHTNESS_SETTING_BITS	GENERAL_SETTING_BITS
 
 /* Possible state changes */
-#define VOLUME_CHANGED	1
-#define BRIGHT_CHANGED	2
-#define MOUSE_CHANGED	3
+/*
+ * These are NOT arbitrary values.  They are the
+ * GHKS return value from the device that says which
+ * hotkey is active.  They should match up with a bit
+ * from the GSIF bitmask.
+ */
+#define BRIGHT_CHANGED	0x01
+#define VOLUME_CHANGED	0x04
+#define MOUSE_CHANGED	0x08
+/*
+ * It is unknown which hotkey this bit is supposed to indicate, but
+ * according to values from GSIF this is a valid flag.
+ */
+#define UNKNOWN_CHANGED	0x10
 
 /* sysctl values */
 #define FN_MUTE			0
@@ -72,6 +80,10 @@
 #define METHOD_GMOU	2
 #define METHOD_GVOL	3
 #define METHOD_MUTE	4
+#define METHOD_RBLL	5
+#define METHOD_RVOL	6
+#define METHOD_GSIF	7
+#define METHOD_GHKS	8
 
 /* Notify event */
 #define	ACPI_NOTIFY_STATUS_CHANGED	0x80
@@ -83,6 +95,7 @@
 struct int_nameval {
 	char	*name;
 	int	value;
+	int	exists;
 };
 
 /*
@@ -95,12 +108,13 @@
 	/* Control methods */
 	struct int_nameval	_sta,	/* unused */
 				gbll,	/* brightness */
-				ghks,	/* unused */
+				ghks,	/* hotkey selector */
+				gbuf,	/* unused (buffer?) */
 				gmou,	/* mouse */
-				gsif,	/* unused */
+				gsif,	/* function key bitmask */
 				gvol,	/* volume */
-				rbll,	/* unused */
-				rvol;	/* unused */
+				rbll,	/* number of brightness levels (radix) */
+				rvol;	/* number of volume levels (radix) */
 
 	/* State variables */
 	uint8_t		bIsMuted;	/* Is volume muted */
@@ -126,6 +140,7 @@
 /* Utility function declarations */
 static uint8_t acpi_fujitsu_update(struct acpi_fujitsu_softc *sc);
 static uint8_t acpi_fujitsu_init(struct acpi_fujitsu_softc *sc);
+static uint8_t acpi_fujitsu_check_hardware(struct acpi_fujitsu_softc *sc);
 
 /* Driver/Module specific structure definitions. */
 static device_method_t acpi_fujitsu_methods[] = {
@@ -144,13 +159,13 @@
 	sizeof(struct acpi_fujitsu_softc),
 };
 
-/* Prototype for function buttons for getting/setting a value. */
+/* Prototype for function hotkeys for getting/setting a value. */
 static int acpi_fujitsu_method_get(struct acpi_fujitsu_softc *sc, int method);
 static int acpi_fujitsu_method_set(struct acpi_fujitsu_softc *sc, int method, int value);
 
 static char *fujitsu_ids[] = { "FUJ02B1", NULL };
 
-ACPI_SERIAL_DECL(fujitsu, "Fujitsu Function Buttons");
+ACPI_SERIAL_DECL(fujitsu, "Fujitsu Function Hotkeys");
 
 /* sysctl names and function calls */
 static struct {
@@ -178,6 +193,16 @@
 		.method		= METHOD_GVOL,
 		.description	= "Speakers/headphones volume level"
 	},
+	{
+		.name		= "volume_radix",
+		.method		= METHOD_RVOL,
+		.description	= "Number of volume level steps"
+	},
+	{
+		.name		= "lcd_brightness_radix",
+		.method		= METHOD_RBLL,
+		.description	= "Number of brightness level steps"
+	},
 
 	{ NULL, 0, NULL }
 };
@@ -191,13 +216,16 @@
 static int
 acpi_fujitsu_probe(device_t dev)
 {
+	char *name;
+	char buffer[64];
 
-	if (acpi_disabled("fujitsu") ||
-	    ACPI_ID_PROBE(device_get_parent(dev), dev, fujitsu_ids) == NULL ||
-	    device_get_unit(dev) != 0)
+	name = ACPI_ID_PROBE(device_get_parent(dev), dev, fujitsu_ids);
+	if (acpi_disabled("fujitsu") || name == NULL ||
+	    device_get_unit(dev) > 1)
 		return (ENXIO);
 
-	device_set_desc(dev, "Fujitsu Function Buttons");
+	sprintf(buffer, "Fujitsu Function Hotkeys %s", name);
+	device_set_desc_copy(dev, buffer);
 
 	return (0);
 }
@@ -217,10 +245,10 @@
 	AcpiInstallNotifyHandler(sc->handle, ACPI_DEVICE_NOTIFY,
 	    acpi_fujitsu_notify_handler, sc);
 
-	/* Snag our default values for the buttons / button states. */
+	/* Snag our default values for the hotkys / hotkey states. */
 	ACPI_SERIAL_BEGIN(fujitsu);
 	if (!acpi_fujitsu_init(sc))
-		device_printf(dev, "Couldn't initialize button states!\n");
+		device_printf(dev, "Couldn't initialize hotkey states!\n");
 	ACPI_SERIAL_END(fujitsu);
 
 	return (0);
@@ -251,10 +279,11 @@
 	 */
 	ACPI_SERIAL_BEGIN(fujitsu);
 
-	status = acpi_SetInteger(sc->handle, "SMOU", 1);
-	if (ACPI_FAILURE(status))
-		device_printf(sc->dev, "Couldn't enable pointer\n");
-
+	if(sc->gmou.exists) {
+		status = acpi_SetInteger(sc->handle, "SMOU", 1);
+		if (ACPI_FAILURE(status))
+			device_printf(sc->dev, "Couldn't enable pointer\n");
+	}
 	ACPI_SERIAL_END(fujitsu);
 
 	return (0);
@@ -316,13 +345,13 @@
 
 /*
  * Initializes the names of the ACPI control methods and grabs
- * the current state of all of the ACPI buttons into the softc.
+ * the current state of all of the ACPI hotkeys into the softc.
  */
 static uint8_t
 acpi_fujitsu_init(struct acpi_fujitsu_softc *sc)
 {
 	struct acpi_softc *acpi_sc;
-	int i;
+	int i, exists;
 
 	ACPI_SERIAL_ASSERT(fujitsu);
 
@@ -333,9 +362,14 @@
 	sc->gmou.name = "GMOU";
 	sc->gsif.name = "GSIF";
 	sc->gvol.name = "GVOL";
+	sc->ghks.name = "GHKS";
+	sc->gsif.name = "GSIF";
 	sc->rbll.name = "RBLL";
 	sc->rvol.name = "RVOL";
 
+	/* Determine what hardware functionality is available */
+	acpi_fujitsu_check_hardware(sc);
+
 	/* Build the sysctl tree */
 	acpi_sc = acpi_device_get_parent_softc(sc->dev);
 	sysctl_ctx_init(&sc->sysctl_ctx);
@@ -344,6 +378,31 @@
 	    OID_AUTO, "fujitsu", CTLFLAG_RD, 0, "");
 
 	for (i = 0; sysctl_table[i].name != NULL; i++) {
+		exists = 0;
+		switch(sysctl_table[i].method) {
+			case METHOD_GMOU:
+				exists = sc->gmou.exists;
+				break;
+			case METHOD_GBLL:
+				exists = sc->gbll.exists;
+				break;
+			case METHOD_GVOL:
+			case METHOD_MUTE:
+				exists = sc->gvol.exists;
+				break;
+			case METHOD_RVOL:
+				exists = sc->rvol.exists;
+				break;
+			case METHOD_RBLL:
+				exists = sc->rbll.exists;
+				break;
+			default:
+				/* Allow by default */
+				exists = 1;
+				break;
+		}
+		if(!exists)
+			continue;
 		SYSCTL_ADD_PROC(&sc->sysctl_ctx,
 		    SYSCTL_CHILDREN(sc->sysctl_tree), OID_AUTO,
 		    sysctl_table[i].name,
@@ -352,9 +411,10 @@
 		    sysctl_table[i].description);
 	}
 
-	/* Set the buttons to their initial states */
+
+	/* Set the hotkeys to their initial states */
 	if (!acpi_fujitsu_update(sc)) {
-		device_printf(sc->dev, "Couldn't init button states\n");
+		device_printf(sc->dev, "Couldn't init hotkey states\n");
 		return (FALSE);
 	}
 
@@ -409,13 +469,28 @@
 		case METHOD_MUTE:
 			nv = sc->gvol;
 			break;
+		case METHOD_GHKS:
+			nv = sc->ghks;
+			break;
+		case METHOD_GSIF:
+			nv = sc->gsif;
+			break;
+		case METHOD_RBLL:
+			nv = sc->rbll;
+			break;
+		case METHOD_RVOL:
+			nv = sc->rvol;
+			break;
 		default:
 			return (FALSE);
 	}
 
+	if(!nv.exists)
+		return (EINVAL);
+
 	status = acpi_GetInteger(sc->handle, nv.name, &nv.value);
 	if (ACPI_FAILURE(status)) {
-		device_printf(sc->dev, "Couldn't query method\n");
+		device_printf(sc->dev, "Couldn't query method (%s)\n", nv.name);
 		return (FALSE);
 	}
 
@@ -459,6 +534,9 @@
 			return (EINVAL);
 	}
 
+	if(!nv.exists)
+		return (EINVAL);
+
 	if (method == METHOD_MUTE) {
 		if (value == 1)
 			value = nv.value | VOLUME_MUTE_BIT;
@@ -471,7 +549,7 @@
 	status = acpi_SetInteger(sc->handle, control, value);
 	if (ACPI_FAILURE(status)) {
 		device_printf(sc->dev, "Couldn't update %s\n", control);
-		return (EINVAL);
+		return (FALSE);
 	}
 
 	sc->lastValChanged = changed;
@@ -479,86 +557,160 @@
 }
 
 /*
- * Query each of the ACPI control methods that contain information we're
- * interested in. We check the return values from the control methods and
- * adjust any state variables if they should be adjusted.
+ * Query the get methods to determine what functionality is available
+ * from the hardware function hotkeys.
  */
 static uint8_t
-acpi_fujitsu_update(struct acpi_fujitsu_softc *sc)
+acpi_fujitsu_check_hardware(struct acpi_fujitsu_softc *sc)
 {
+	int val;
 	struct acpi_softc *acpi_sc;
 
 	acpi_sc = acpi_device_get_parent_softc(sc->dev);
 
 	ACPI_SERIAL_ASSERT(fujitsu);
+	/* save the hotkey bitmask */
+	if (ACPI_FAILURE(acpi_GetInteger(sc->handle,
+	sc->gsif.name, &(sc->gsif.value)))) {
+		sc->gsif.exists = 0;
+		device_printf(sc->dev, "Couldn't query bitmask value\n");
+	} else {
+		sc->gsif.exists = 1;
+	}
 
 	/* System Volume Level */
 	if (ACPI_FAILURE(acpi_GetInteger(sc->handle,
-	    sc->gvol.name, &(sc->gvol.value)))) {
-		device_printf(sc->dev, "Couldn't query volume level\n");
-		return (FALSE);
+	    sc->gvol.name, &val))) {
+		sc->gvol.exists = 0;
+	} else {
+		sc->gvol.exists = 1;
 	}
 
-	if (sc->gvol.value & VOLUME_CHANGE_BIT) {
-		sc->bIsMuted =
-		    (uint8_t)((sc->gvol.value & VOLUME_MUTE_BIT) != 0);
+	if (ACPI_FAILURE(acpi_GetInteger(sc->handle,
+	    sc->gbll.name, &val))) {
+		sc->gbll.exists = 0;
+	} else {
+		sc->gbll.exists = 1;
+	}
 
-		/* Clear the modification bit */
-		sc->gvol.value &= VOLUME_SETTING_BITS;
+	if (ACPI_FAILURE(acpi_GetInteger(sc->handle,
+	    sc->ghks.name, &val))) {
+		sc->ghks.exists = 0;
+	} else {
+		sc->ghks.exists = 1;
+	}
 
-		if (sc->bIsMuted) {
-			acpi_UserNotify("FUJITSU", sc->handle, FN_MUTE);
-			ACPI_VPRINT(sc->dev, acpi_sc, "Volume is now mute\n");
-		} else
-			ACPI_VPRINT(sc->dev, acpi_sc, "Volume is now %d\n",
-			    sc->gvol.value);
+	if (ACPI_FAILURE(acpi_GetInteger(sc->handle,
+	    sc->gmou.name, &val))) {
+		sc->gmou.exists = 0;
+	} else {
+		sc->gmou.exists = 1;
+	}
 
-		acpi_UserNotify("FUJITSU", sc->handle, FN_VOLUME);
-
-		sc->lastValChanged = VOLUME_CHANGED;
+	if (ACPI_FAILURE(acpi_GetInteger(sc->handle,
+	    sc->rbll.name, &val))) {
+		sc->rbll.exists = 0;
+	} else {
+		sc->rbll.exists = 1;
 	}
 
-	/* Internal mouse pointer (eraserhead) */
 	if (ACPI_FAILURE(acpi_GetInteger(sc->handle,
-	    sc->gmou.name, &(sc->gmou.value)))) {
-		device_printf(sc->dev, "Couldn't query pointer state\n");
-		return (FALSE);
+	    sc->rvol.name, &val))) {
+		sc->rvol.exists = 0;
+	} else {
+		sc->rvol.exists = 1;
 	}
 
-	if (sc->gmou.value & MOUSE_UPDATED_BIT) {
-		sc->bIntPtrEnabled = (uint8_t)(sc->gmou.value & 0x1);
+	return (TRUE);
+}
+
+/*
+ * Query each of the ACPI control methods that contain information we're
+ * interested in. We check the return values from the control methods and
+ * adjust any state variables if they should be adjusted.
+ */
+static uint8_t
+acpi_fujitsu_update(struct acpi_fujitsu_softc *sc)
+{
+	int changed;
+	struct acpi_softc *acpi_sc;
 
-		/* Clear the modification bit */
-		sc->gmou.value &= MOUSE_SETTING_BITS;
-		
-		acpi_UserNotify("FUJITSU", sc->handle, FN_POINTER_ENABLE);
+	acpi_sc = acpi_device_get_parent_softc(sc->dev);
 
-		ACPI_VPRINT(sc->dev, acpi_sc, "Internal pointer is now %s\n",

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


More information about the p4-projects mailing list