PERFORCE change 61308 for review

John Baldwin jhb at FreeBSD.org
Fri Sep 10 14:09:38 PDT 2004


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

Change 61308 by jhb at jhb_slimer on 2004/09/10 21:09:16

	IFC @61306.

Affected files ...

.. //depot/projects/smpng/sys/alpha/alpha/busdma_machdep.c#23 integrate
.. //depot/projects/smpng/sys/alpha/alpha/clock.c#13 integrate
.. //depot/projects/smpng/sys/alpha/alpha/machdep.c#70 integrate
.. //depot/projects/smpng/sys/alpha/conf/GENERIC#41 integrate
.. //depot/projects/smpng/sys/alpha/include/atomic.h#9 integrate
.. //depot/projects/smpng/sys/amd64/amd64/busdma_machdep.c#11 integrate
.. //depot/projects/smpng/sys/amd64/amd64/machdep.c#29 integrate
.. //depot/projects/smpng/sys/amd64/amd64/pmap.c#32 integrate
.. //depot/projects/smpng/sys/amd64/conf/GENERIC#23 integrate
.. //depot/projects/smpng/sys/arm/arm/busdma_machdep.c#3 integrate
.. //depot/projects/smpng/sys/arm/sa11x0/assabet_machdep.c#3 integrate
.. //depot/projects/smpng/sys/boot/sparc64/loader/main.c#18 integrate
.. //depot/projects/smpng/sys/cam/scsi/scsi_cd.c#23 integrate
.. //depot/projects/smpng/sys/conf/NOTES#79 integrate
.. //depot/projects/smpng/sys/conf/files#120 integrate
.. //depot/projects/smpng/sys/ddb/db_ps.c#27 integrate
.. //depot/projects/smpng/sys/dev/acpica/acpi_powerres.c#19 integrate
.. //depot/projects/smpng/sys/dev/acpica/acpi_thermal.c#29 integrate
.. //depot/projects/smpng/sys/dev/ata/ata-all.c#59 integrate
.. //depot/projects/smpng/sys/dev/ata/ata-chipset.c#43 integrate
.. //depot/projects/smpng/sys/dev/ata/ata-dma.c#40 integrate
.. //depot/projects/smpng/sys/dev/ed/if_ed.c#24 integrate
.. //depot/projects/smpng/sys/dev/firewire/sbp.c#35 integrate
.. //depot/projects/smpng/sys/dev/isp/isp_pci.c#25 integrate
.. //depot/projects/smpng/sys/dev/md/md.c#55 integrate
.. //depot/projects/smpng/sys/dev/mii/ciphy.c#1 branch
.. //depot/projects/smpng/sys/dev/mii/ciphyreg.h#1 branch
.. //depot/projects/smpng/sys/dev/mii/miidevs#13 integrate
.. //depot/projects/smpng/sys/dev/pccard/pccarddevs#39 integrate
.. //depot/projects/smpng/sys/dev/re/if_re.c#14 integrate
.. //depot/projects/smpng/sys/dev/sound/pcm/sndstat.c#14 integrate
.. //depot/projects/smpng/sys/dev/sym/sym_hipd.c#18 integrate
.. //depot/projects/smpng/sys/dev/usb/ucycom.c#1 branch
.. //depot/projects/smpng/sys/dev/usb/ugen.c#26 integrate
.. //depot/projects/smpng/sys/dev/usb/uhub.c#19 integrate
.. //depot/projects/smpng/sys/dev/usb/umass.c#41 integrate
.. //depot/projects/smpng/sys/dev/usb/uplcom.c#13 integrate
.. //depot/projects/smpng/sys/dev/usb/usb_quirks.c#11 integrate
.. //depot/projects/smpng/sys/dev/usb/usb_subr.c#25 integrate
.. //depot/projects/smpng/sys/dev/usb/usbdevs#61 integrate
.. //depot/projects/smpng/sys/dev/usb/uscanner.c#26 integrate
.. //depot/projects/smpng/sys/dev/vge/if_vge.c#1 branch
.. //depot/projects/smpng/sys/dev/vge/if_vgereg.h#1 branch
.. //depot/projects/smpng/sys/dev/vge/if_vgevar.h#1 branch
.. //depot/projects/smpng/sys/fs/autofs/autofs.h#2 integrate
.. //depot/projects/smpng/sys/fs/autofs/autofs_util.c#2 integrate
.. //depot/projects/smpng/sys/fs/autofs/autofs_vfsops.c#2 integrate
.. //depot/projects/smpng/sys/fs/autofs/autofs_vnops.c#2 integrate
.. //depot/projects/smpng/sys/fs/msdosfs/denode.h#7 integrate
.. //depot/projects/smpng/sys/fs/msdosfs/msdosfs_denode.c#16 integrate
.. //depot/projects/smpng/sys/fs/msdosfs/msdosfs_fat.c#8 integrate
.. //depot/projects/smpng/sys/fs/msdosfs/msdosfs_lookup.c#7 integrate
.. //depot/projects/smpng/sys/fs/nwfs/nwfs.h#3 integrate
.. //depot/projects/smpng/sys/fs/nwfs/nwfs_io.c#13 integrate
.. //depot/projects/smpng/sys/fs/nwfs/nwfs_vnops.c#9 integrate
.. //depot/projects/smpng/sys/fs/smbfs/smbfs.h#7 integrate
.. //depot/projects/smpng/sys/fs/smbfs/smbfs_io.c#17 integrate
.. //depot/projects/smpng/sys/fs/smbfs/smbfs_vnops.c#26 integrate
.. //depot/projects/smpng/sys/geom/geom_subr.c#43 integrate
.. //depot/projects/smpng/sys/geom/mirror/g_mirror.c#5 integrate
.. //depot/projects/smpng/sys/geom/notes#3 integrate
.. //depot/projects/smpng/sys/geom/uzip/g_uzip.c#2 integrate
.. //depot/projects/smpng/sys/gnu/ext2fs/ext2_vnops.c#23 integrate
.. //depot/projects/smpng/sys/i386/conf/GENERIC#56 integrate
.. //depot/projects/smpng/sys/i386/i386/busdma_machdep.c#29 integrate
.. //depot/projects/smpng/sys/i386/i386/db_trace.c#16 integrate
.. //depot/projects/smpng/sys/i386/i386/machdep.c#79 integrate
.. //depot/projects/smpng/sys/i386/i386/pmap.c#70 integrate
.. //depot/projects/smpng/sys/i386/linux/linux_machdep.c#27 integrate
.. //depot/projects/smpng/sys/i386/linux/linux_proto.h#18 integrate
.. //depot/projects/smpng/sys/i386/linux/linux_syscall.h#17 integrate
.. //depot/projects/smpng/sys/i386/linux/linux_sysent.c#18 integrate
.. //depot/projects/smpng/sys/i386/linux/syscalls.master#18 integrate
.. //depot/projects/smpng/sys/ia64/ia64/busdma_machdep.c#21 integrate
.. //depot/projects/smpng/sys/ia64/ia64/machdep.c#84 integrate
.. //depot/projects/smpng/sys/isofs/cd9660/cd9660_vnops.c#16 integrate
.. //depot/projects/smpng/sys/kern/init_main.c#48 integrate
.. //depot/projects/smpng/sys/kern/kern_event.c#32 integrate
.. //depot/projects/smpng/sys/kern/kern_exec.c#75 integrate
.. //depot/projects/smpng/sys/kern/kern_exit.c#83 integrate
.. //depot/projects/smpng/sys/kern/kern_fork.c#83 integrate
.. //depot/projects/smpng/sys/kern/kern_intr.c#52 integrate
.. //depot/projects/smpng/sys/kern/kern_kse.c#9 integrate
.. //depot/projects/smpng/sys/kern/kern_proc.c#65 integrate
.. //depot/projects/smpng/sys/kern/kern_switch.c#44 integrate
.. //depot/projects/smpng/sys/kern/kern_synch.c#79 integrate
.. //depot/projects/smpng/sys/kern/kern_thr.c#20 integrate
.. //depot/projects/smpng/sys/kern/kern_thread.c#66 integrate
.. //depot/projects/smpng/sys/kern/sched_4bsd.c#36 integrate
.. //depot/projects/smpng/sys/kern/sched_ule.c#40 integrate
.. //depot/projects/smpng/sys/kern/subr_witness.c#121 integrate
.. //depot/projects/smpng/sys/kern/uipc_socket.c#57 integrate
.. //depot/projects/smpng/sys/kern/vfs_mount.c#32 integrate
.. //depot/projects/smpng/sys/kern/vfs_subr.c#81 integrate
.. //depot/projects/smpng/sys/modules/Makefile#82 integrate
.. //depot/projects/smpng/sys/modules/autofs/Makefile#2 integrate
.. //depot/projects/smpng/sys/modules/cs/Makefile#3 integrate
.. //depot/projects/smpng/sys/modules/fdc/Makefile#8 integrate
.. //depot/projects/smpng/sys/modules/geom/geom_uzip/Makefile#2 integrate
.. //depot/projects/smpng/sys/modules/linprocfs/Makefile#4 integrate
.. //depot/projects/smpng/sys/modules/msdosfs/Makefile#6 integrate
.. //depot/projects/smpng/sys/modules/nfs4client/Makefile#3 integrate
.. //depot/projects/smpng/sys/modules/nfsclient/Makefile#8 integrate
.. //depot/projects/smpng/sys/modules/owi/Makefile#3 integrate
.. //depot/projects/smpng/sys/modules/smbfs/Makefile#7 integrate
.. //depot/projects/smpng/sys/modules/ucycom/Makefile#1 branch
.. //depot/projects/smpng/sys/modules/vge/Makefile#1 branch
.. //depot/projects/smpng/sys/net/bpf.c#40 integrate
.. //depot/projects/smpng/sys/net/bpfdesc.h#10 integrate
.. //depot/projects/smpng/sys/net/if.c#54 integrate
.. //depot/projects/smpng/sys/net/if.h#21 integrate
.. //depot/projects/smpng/sys/netgraph/ng_pptpgre.c#13 integrate
.. //depot/projects/smpng/sys/netinet/if_ether.c#28 integrate
.. //depot/projects/smpng/sys/netinet/ip_divert.c#37 integrate
.. //depot/projects/smpng/sys/netinet/ip_fw2.c#39 integrate
.. //depot/projects/smpng/sys/netinet/ip_output.c#64 integrate
.. //depot/projects/smpng/sys/netinet/raw_ip.c#44 integrate
.. //depot/projects/smpng/sys/netinet/tcp_output.c#29 integrate
.. //depot/projects/smpng/sys/netinet/tcp_subr.c#54 integrate
.. //depot/projects/smpng/sys/netinet/udp_usrreq.c#49 integrate
.. //depot/projects/smpng/sys/netinet6/nd6.c#22 integrate
.. //depot/projects/smpng/sys/nfs4client/nfs4_vnops.c#6 integrate
.. //depot/projects/smpng/sys/nfsclient/nfs.h#19 integrate
.. //depot/projects/smpng/sys/nfsclient/nfs_bio.c#30 integrate
.. //depot/projects/smpng/sys/nfsclient/nfs_nfsiod.c#12 integrate
.. //depot/projects/smpng/sys/nfsclient/nfs_vnops.c#40 integrate
.. //depot/projects/smpng/sys/pc98/conf/GENERIC#48 integrate
.. //depot/projects/smpng/sys/pc98/i386/machdep.c#70 integrate
.. //depot/projects/smpng/sys/pci/if_pcn.c#28 integrate
.. //depot/projects/smpng/sys/pci/if_xl.c#49 integrate
.. //depot/projects/smpng/sys/pci/ncr.c#17 integrate
.. //depot/projects/smpng/sys/powerpc/powerpc/busdma_machdep.c#16 integrate
.. //depot/projects/smpng/sys/powerpc/powerpc/machdep.c#54 integrate
.. //depot/projects/smpng/sys/security/mac_bsdextended/mac_bsdextended.c#12 integrate
.. //depot/projects/smpng/sys/sparc64/conf/GENERIC#46 integrate
.. //depot/projects/smpng/sys/sparc64/sparc64/bus_machdep.c#26 integrate
.. //depot/projects/smpng/sys/sparc64/sparc64/machdep.c#65 integrate
.. //depot/projects/smpng/sys/sys/conf.h#29 integrate
.. //depot/projects/smpng/sys/sys/param.h#71 integrate
.. //depot/projects/smpng/sys/sys/proc.h#125 integrate
.. //depot/projects/smpng/sys/sys/sched.h#14 integrate
.. //depot/projects/smpng/sys/sys/vnode.h#48 integrate
.. //depot/projects/smpng/sys/ufs/ufs/ufs_vnops.c#39 integrate
.. //depot/projects/smpng/sys/vm/vm_meter.c#19 integrate
.. //depot/projects/smpng/sys/vm/vnode_pager.c#42 integrate

Differences ...

==== //depot/projects/smpng/sys/alpha/alpha/busdma_machdep.c#23 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/alpha/alpha/busdma_machdep.c,v 1.45 2004/07/02 03:47:28 scottl Exp $");
+__FBSDID("$FreeBSD: src/sys/alpha/alpha/busdma_machdep.c,v 1.46 2004/09/08 04:54:18 scottl Exp $");
 
 #include <sys/param.h>
 #include <sys/bus.h>
@@ -229,11 +229,11 @@
 	if (parent != NULL) {
 		newtag->lowaddr = MIN(parent->lowaddr, newtag->lowaddr);
 		newtag->highaddr = MAX(parent->highaddr, newtag->highaddr);
-		/*
-		 * XXX Not really correct??? Probably need to honor boundary
-		 *     all the way up the inheritence chain.
-		 */
-		newtag->boundary = MAX(parent->boundary, newtag->boundary);
+		if (newtag->boundary == 0)
+			newtag->boundary = parent->boundary;
+		else if (parent->boundary != 0)
+			newtag->boundary = MIN(parent->boundary,
+					       newtag->boundary);
 		if (newtag->filter == NULL) {
 			/*
 			 * Short circuit looking at our parent directly

==== //depot/projects/smpng/sys/alpha/alpha/clock.c#13 (text+ko) ====

@@ -38,7 +38,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/alpha/alpha/clock.c,v 1.36 2004/04/05 21:00:49 imp Exp $");
+__FBSDID("$FreeBSD: src/sys/alpha/alpha/clock.c,v 1.37 2004/09/07 07:06:36 phk Exp $");
 
 #include "opt_clock.h"
 
@@ -120,7 +120,8 @@
 	0,			/* no poll_pps */
  	~0u,			/* counter_mask */
 	0,			/* frequency */
-	"alpha"			/* name */
+	"alpha",		/* name */
+	800,			/* quality */
 };
 
 static struct timecounter i8254_timecounter = {

==== //depot/projects/smpng/sys/alpha/alpha/machdep.c#70 (text+ko) ====

@@ -88,7 +88,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/alpha/alpha/machdep.c,v 1.222 2004/07/10 22:35:05 marcel Exp $");
+__FBSDID("$FreeBSD: src/sys/alpha/alpha/machdep.c,v 1.223 2004/09/05 02:09:51 julian Exp $");
 
 #include "opt_compat.h"
 #include "opt_ddb.h"
@@ -846,7 +846,7 @@
 
 	}
 
-	proc_linkup(&proc0, &ksegrp0, &kse0, &thread0);
+	proc_linkup(&proc0, &ksegrp0, &thread0);
 	/*
 	 * Init mapping for u page(s) for proc 0
 	 */

==== //depot/projects/smpng/sys/alpha/conf/GENERIC#41 (text+ko) ====

@@ -18,7 +18,7 @@
 #
 # For hardware specific information check HARDWARE.TXT
 #
-# $FreeBSD: src/sys/alpha/conf/GENERIC,v 1.177 2004/08/30 18:40:00 wilko Exp $
+# $FreeBSD: src/sys/alpha/conf/GENERIC,v 1.178 2004/09/07 22:37:43 scottl Exp $
 
 machine		alpha
 cpu		EV4
@@ -46,7 +46,9 @@
 options 	DEC_KN300		# AlphaServer 4100 (Rawhide),
 					# AlphaServer 1200 (Tincup)
 
-options 	SCHED_ULE		#ULE scheduler
+#options 	SCHED_ULE		#ULE scheduler
+options 	SCHED_4BSD		#4BSD scheduler
+options 	PREEMPTION		#Enable kernel thread preemption
 options 	INET			#InterNETworking
 options 	INET6			#IPv6 communications protocols
 options 	FFS			#Berkeley Fast Filesystem

==== //depot/projects/smpng/sys/alpha/include/atomic.h#9 (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/alpha/include/atomic.h,v 1.18 2003/02/23 06:34:21 marcel Exp $
+ * $FreeBSD: src/sys/alpha/include/atomic.h,v 1.19 2004/09/10 05:00:27 marcel Exp $
  */
 
 #ifndef _MACHINE_ATOMIC_H_
@@ -32,18 +32,6 @@
 #include <machine/alpha_cpu.h>
 
 /*
- * Quick and dirty workaround for compiling LINT. The kernel is too
- * large to jump between sections without linker stubs/trampolines.
- */
-#ifdef COMPILING_LINT
-#define	__COLD_SECTION	"br 3f\n"
-#define	__HOT_SECTION	"3:\n"
-#else
-#define	__COLD_SECTION	".section .text3,\"ax\"\n"
-#define	__HOT_SECTION	".previous\n"
-#endif
-
-/*
  * Various simple arithmetic on memory which is atomic in the presence
  * of interrupts and SMP safe.
  */
@@ -67,10 +55,7 @@
 		"1:\tldl_l %0, %2\n\t"		/* load old value */
 		"bis %0, %3, %0\n\t"		/* calculate new value */
 		"stl_c %0, %1\n\t"		/* attempt to store */
-		"beq %0, 2f\n\t"		/* spin if failed */
-		__COLD_SECTION			/* improve branch prediction */
-		"2:\tbr 1b\n"			/* try again */
-		__HOT_SECTION
+		"beq %0, 1b\n"			/* spin if failed */
 		: "=&r" (temp), "=m" (*p)
 		: "m" (*p), "r" (v)
 		: "memory");
@@ -86,10 +71,7 @@
 		"1:\tldl_l %0, %1\n\t"		/* load old value */
 		"bic %0, %2, %0\n\t"		/* calculate new value */
 		"stl_c %0, %1\n\t"		/* attempt to store */
-		"beq %0, 2f\n\t"		/* spin if failed */
-		__COLD_SECTION			/* improve branch prediction */
-		"2:\tbr 1b\n"			/* try again */
-		__HOT_SECTION
+		"beq %0, 1b\n"			/* spin if failed */
 		: "=&r" (temp), "+m" (*p)
 		: "r" (v)
 		: "memory");
@@ -105,10 +87,7 @@
 		"1:\tldl_l %0, %1\n\t"		/* load old value */
 		"addl %0, %2, %0\n\t"		/* calculate new value */
 		"stl_c %0, %1\n\t"		/* attempt to store */
-		"beq %0, 2f\n\t"		/* spin if failed */
-		__COLD_SECTION			/* improve branch prediction */
-		"2:\tbr 1b\n"			/* try again */
-		__HOT_SECTION
+		"beq %0, 1b\n"			/* spin if failed */
 		: "=&r" (temp), "+m" (*p)
 		: "r" (v)
 		: "memory");
@@ -124,10 +103,7 @@
 		"1:\tldl_l %0, %1\n\t"		/* load old value */
 		"subl %0, %2, %0\n\t"		/* calculate new value */
 		"stl_c %0, %1\n\t"		/* attempt to store */
-		"beq %0, 2f\n\t"		/* spin if failed */
-		__COLD_SECTION			/* improve branch prediction */
-		"2:\tbr 1b\n"			/* try again */
-		__HOT_SECTION
+		"beq %0, 1b\n"			/* spin if failed */
 		: "=&r" (temp), "+m" (*p)
 		: "r" (v)
 		: "memory");
@@ -144,10 +120,7 @@
 		"1:\tldl_l %0,%2\n\t"	/* load current value, asserting lock */
 		"ldiq %1,0\n\t"		/* value to store */
 		"stl_c %1,%2\n\t"	/* attempt to store */
-		"beq %1,2f\n\t"		/* if the store failed, spin */
-		"br 3f\n"		/* it worked, exit */
-		"2:\tbr 1b\n"		/* *addr not updated, loop */
-		"3:\n"			/* it worked */
+		"beq %1,1b\n"		/* if the store failed, spin */
 		: "=&r"(result), "=&r"(temp), "+m" (*addr)
 		:
 		: "memory");
@@ -165,10 +138,7 @@
 		"1:\tldq_l %0, %1\n\t"		/* load old value */
 		"bis %0, %2, %0\n\t"		/* calculate new value */
 		"stq_c %0, %1\n\t"		/* attempt to store */
-		"beq %0, 2f\n\t"		/* spin if failed */
-		__COLD_SECTION			/* improve branch prediction */
-		"2:\tbr 1b\n"			/* try again */
-		__HOT_SECTION
+		"beq %0, 1b\n"			/* spin if failed */
 		: "=&r" (temp), "+m" (*p)
 		: "r" (v)
 		: "memory");
@@ -184,10 +154,7 @@
 		"1:\tldq_l %0, %1\n\t"		/* load old value */
 		"bic %0, %2, %0\n\t"		/* calculate new value */
 		"stq_c %0, %1\n\t"		/* attempt to store */
-		"beq %0, 2f\n\t"		/* spin if failed */
-		__COLD_SECTION			/* improve branch prediction */
-		"2:\tbr 1b\n"			/* try again */
-		__HOT_SECTION
+		"beq %0, 1b\n"			/* spin if failed */
 		: "=&r" (temp), "+m" (*p)
 		: "r" (v)
 		: "memory");
@@ -203,10 +170,7 @@
 		"1:\tldq_l %0, %1\n\t"		/* load old value */
 		"addq %0, %2, %0\n\t"		/* calculate new value */
 		"stq_c %0, %1\n\t"		/* attempt to store */
-		"beq %0, 2f\n\t"		/* spin if failed */
-		__COLD_SECTION			/* improve branch prediction */
-		"2:\tbr 1b\n"			/* try again */
-		__HOT_SECTION
+		"beq %0, 1b\n"			/* spin if failed */
 		: "=&r" (temp), "+m" (*p)
 		: "r" (v)
 		: "memory");
@@ -222,10 +186,7 @@
 		"1:\tldq_l %0, %1\n\t"		/* load old value */
 		"subq %0, %2, %0\n\t"		/* calculate new value */
 		"stq_c %0, %1\n\t"		/* attempt to store */
-		"beq %0, 2f\n\t"		/* spin if failed */
-		__COLD_SECTION			/* improve branch prediction */
-		"2:\tbr 1b\n"			/* try again */
-		__HOT_SECTION
+		"beq %0, 1b\n"			/* spin if failed */
 		: "=&r" (temp), "+m" (*p)
 		: "r" (v)
 		: "memory");
@@ -242,10 +203,7 @@
 		"1:\tldq_l %0,%2\n\t"	/* load current value, asserting lock */
 		"ldiq %1,0\n\t"		/* value to store */
 		"stq_c %1,%2\n\t"	/* attempt to store */
-		"beq %1,2f\n\t"		/* if the store failed, spin */
-		"br 3f\n"		/* it worked, exit */
-		"2:\tbr 1b\n"		/* *addr not updated, loop */
-		"3:\n"			/* it worked */
+		"beq %1,1b\n"		/* if the store failed, spin */
 		: "=&r"(result), "=&r"(temp), "+m" (*addr)
 		:
 		: "memory");
@@ -385,11 +343,8 @@
 		"beq %0, 2f\n\t"		/* exit if not equal */
 		"mov %3, %0\n\t"		/* value to store */
 		"stl_c %0, %1\n\t"		/* attempt to store */
-		"beq %0, 3f\n\t"		/* if it failed, spin */
-		"2:\n"				/* done */
-		__COLD_SECTION			/* improve branch prediction */
-		"3:\tbr 1b\n"			/* try again */
-		__HOT_SECTION
+		"beq %0, 1b\n\t"		/* if it failed, spin */
+		"2:\n"
 		: "=&r" (ret), "+m" (*p)
 		: "r" ((long)(int)cmpval), "r" (newval)
 		: "memory");
@@ -415,11 +370,8 @@
 		"beq %0, 2f\n\t"		/* exit if not equal */
 		"mov %3, %0\n\t"		/* value to store */
 		"stq_c %0, %1\n\t"		/* attempt to store */
-		"beq %0, 3f\n\t"		/* if it failed, spin */
-		"2:\n"				/* done */
-		__COLD_SECTION			/* improve branch prediction */
-		"3:\tbr 1b\n"			/* try again */
-		__HOT_SECTION
+		"beq %0, 1b\n\t"		/* if it failed, spin */
+		"2:\n"
 		: "=&r" (ret), "+m" (*p)
 		: "r" (cmpval), "r" (newval)
 		: "memory");

==== //depot/projects/smpng/sys/amd64/amd64/busdma_machdep.c#11 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/busdma_machdep.c,v 1.57 2004/08/16 22:53:03 peter Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/busdma_machdep.c,v 1.58 2004/09/08 04:54:18 scottl Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -248,11 +248,11 @@
 	if (parent != NULL) {
 		newtag->lowaddr = MIN(parent->lowaddr, newtag->lowaddr);
 		newtag->highaddr = MAX(parent->highaddr, newtag->highaddr);
-		/*
-		 * XXX Not really correct??? Probably need to honor boundary
-		 *     all the way up the inheritence chain.
-		 */
-		newtag->boundary = MAX(parent->boundary, newtag->boundary);
+		if (newtag->boundary == 0)
+			newtag->boundary = parent->boundary;
+		else if (parent->boundary != 0)
+			newtag->boundary = MIN(parent->boundary,
+					       newtag->boundary);
 		if (newtag->filter == NULL) {
 			/*
 			 * Short circuit looking at our parent directly

==== //depot/projects/smpng/sys/amd64/amd64/machdep.c#29 (text+ko) ====

@@ -39,7 +39,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/machdep.c,v 1.619 2004/08/24 00:16:43 peter Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/machdep.c,v 1.620 2004/09/05 02:09:52 julian Exp $");
 
 #include "opt_atalk.h"
 #include "opt_atpic.h"
@@ -1116,7 +1116,7 @@
  	 * This may be done better later if it gets more high level
  	 * components in it. If so just link td->td_proc here.
 	 */
-	proc_linkup(&proc0, &ksegrp0, &kse0, &thread0);
+	proc_linkup(&proc0, &ksegrp0, &thread0);
 
 	preload_metadata = (caddr_t)(uintptr_t)(modulep + KERNBASE);
 	preload_bootstrap_relocate(KERNBASE);

==== //depot/projects/smpng/sys/amd64/amd64/pmap.c#32 (text+ko) ====

@@ -75,7 +75,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.496 2004/08/30 03:52:04 alc Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.497 2004/09/08 18:58:28 alc Exp $");
 
 /*
  *	Manages physical address maps.
@@ -203,7 +203,7 @@
 
 static PMAP_INLINE void	free_pv_entry(pv_entry_t pv);
 static pv_entry_t get_pv_entry(void);
-static void	pmap_clear_ptes(vm_page_t m, int bit);
+static void	pmap_clear_ptes(vm_page_t m, long bit);
 
 static int pmap_remove_pte(pmap_t pmap, pt_entry_t *ptq,
 		vm_offset_t sva, pd_entry_t ptepde);
@@ -2591,7 +2591,7 @@
  *	Clear the given bit in each of the given page's ptes.
  */
 static __inline void
-pmap_clear_ptes(vm_page_t m, int bit)
+pmap_clear_ptes(vm_page_t m, long bit)
 {
 	register pv_entry_t pv;
 	pt_entry_t pbits, *pte;
@@ -2623,15 +2623,18 @@
 
 		PMAP_LOCK(pv->pv_pmap);
 		pte = pmap_pte(pv->pv_pmap, pv->pv_va);
+retry:
 		pbits = *pte;
 		if (pbits & bit) {
 			if (bit == PG_RW) {
+				if (!atomic_cmpset_long(pte, pbits,
+				    pbits & ~(PG_RW | PG_M)))
+					goto retry;
 				if (pbits & PG_M) {
 					vm_page_dirty(m);
 				}
-				pte_store(pte, pbits & ~(PG_M|PG_RW));
 			} else {
-				pte_store(pte, pbits & ~bit);
+				atomic_clear_long(pte, bit);
 			}
 			pmap_invalidate_page(pv->pv_pmap, pv->pv_va);
 		}

==== //depot/projects/smpng/sys/amd64/conf/GENERIC#23 (text+ko) ====

@@ -16,7 +16,7 @@
 # If you are in doubt as to the purpose or necessity of a line, check first
 # in NOTES.
 #
-# $FreeBSD: src/sys/amd64/conf/GENERIC,v 1.422 2004/08/27 15:16:21 andre Exp $
+# $FreeBSD: src/sys/amd64/conf/GENERIC,v 1.424 2004/09/10 20:57:46 wpaul Exp $
 
 machine		amd64
 cpu		HAMMER
@@ -27,7 +27,9 @@
 
 makeoptions	DEBUG=-g		# Build kernel with gdb(1) debug symbols
 
-options 	SCHED_ULE		# ULE scheduler
+#options 	SCHED_ULE		# ULE scheduler
+options 	SCHED_4BSD		# 4BSD scheduler
+options 	PREEMPTION		# Enable kernel thread preemption
 options 	INET			# InterNETworking
 options 	INET6			# IPv6 communications protocols
 options 	FFS			# Berkeley Fast Filesystem
@@ -182,6 +184,8 @@
 device		bge		# Broadcom BCM570xx Gigabit Ethernet
 device		dc		# DEC/Intel 21143 and various workalikes
 device		fxp		# Intel EtherExpress PRO/100B (82557, 82558)
+device		lge		# Level 1 LXT1001 gigabit ethernet
+device		nge		# NatSemi DP83820 gigabit ethernet
 device		pcn		# AMD Am79C97x PCI 10/100 (precedence over 'lnc')
 device		re		# RealTek 8139C+/8169/8169S/8110S
 device		rl		# RealTek 8129/8139
@@ -192,6 +196,7 @@
 device		ti		# Alteon Networks Tigon I/II gigabit Ethernet
 device		tl		# Texas Instruments ThunderLAN
 device		tx		# SMC EtherPower II (83c170 ``EPIC'')
+device		vge		# VIA VT612x gigabit ethernet
 device		vr		# VIA Rhine, Rhine II
 device		wb		# Winbond W89C840F
 device		xl		# 3Com 3c90x (``Boomerang'', ``Cyclone'')

==== //depot/projects/smpng/sys/arm/arm/busdma_machdep.c#3 (text+ko) ====

@@ -29,7 +29,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/arm/busdma_machdep.c,v 1.2 2004/07/21 22:04:05 cognet Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/arm/busdma_machdep.c,v 1.3 2004/09/08 04:54:18 scottl Exp $");
 
 /*
  * MacPPC bus dma support routines
@@ -207,12 +207,11 @@
         if (parent != NULL) {
                 newtag->lowaddr = min(parent->lowaddr, newtag->lowaddr);
                 newtag->highaddr = max(parent->highaddr, newtag->highaddr);
-		
-                /*
-                 * XXX Not really correct??? Probably need to honor boundary
-                 *     all the way up the inheritence chain.
-                 */
-                newtag->boundary = max(parent->boundary, newtag->boundary);
+		if (newtag->boundary == 0)
+			newtag->boundary = parent->boundary;
+		else if (parent->boundary != 0)
+                	newtag->boundary = min(parent->boundary,
+					       newtag->boundary);
                 if (newtag->filter == NULL) {
                         /*
                          * Short circuit looking at our parent directly

==== //depot/projects/smpng/sys/arm/sa11x0/assabet_machdep.c#3 (text+ko) ====

@@ -47,7 +47,7 @@
 
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/sa11x0/assabet_machdep.c,v 1.2 2004/06/17 17:52:12 cognet Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/sa11x0/assabet_machdep.c,v 1.3 2004/09/05 02:09:52 julian Exp $");
 
 #define _ARM32_BUS_DMA_PRIVATE
 #include <sys/param.h>
@@ -370,7 +370,7 @@
 
 	/* Set stack for exception handlers */
 	
-	proc_linkup(&proc0, &ksegrp0, &kse0, &thread0);
+	proc_linkup(&proc0, &ksegrp0, &thread0);
 	proc0.p_uarea = (struct user *) proc0_uarea.pv_va;
 	thread0.td_kstack = kernelstack.pv_va;
 	thread0.td_pcb = (struct pcb *)

==== //depot/projects/smpng/sys/boot/sparc64/loader/main.c#18 (text+ko) ====

@@ -8,7 +8,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/boot/sparc64/loader/main.c,v 1.24 2004/08/19 20:13:31 kensmith Exp $");
+__FBSDID("$FreeBSD: src/sys/boot/sparc64/loader/main.c,v 1.25 2004/09/08 12:52:45 kensmith Exp $");
 
 /*
  * FreeBSD/sparc64 kernel loader - machine dependent part
@@ -197,9 +197,7 @@
 static int
 sparc64_autoload(void)
 {
-	/* XXX - Temporary hack needed for new ATA to work. */
-	printf("Turning off DMA for ATA.\n");
-	setenv("hw.ata.ata_dma", "0", 1);
+	printf("nothing to autoload yet.\n");
 	return 0;
 }
 

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

@@ -46,7 +46,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/cam/scsi/scsi_cd.c,v 1.89 2004/02/18 21:36:50 phk Exp $");
+__FBSDID("$FreeBSD: src/sys/cam/scsi/scsi_cd.c,v 1.90 2004/09/05 21:15:58 phk Exp $");
 
 #include "opt_cd.h"
 
@@ -2723,7 +2723,7 @@
 
 	cdprevent(periph, PR_PREVENT);
 	softc->disk->d_maxsize = DFLTPHYS;
-	softc->disk->d_sectorsize = 0;
+	softc->disk->d_sectorsize = 2048;
 	softc->disk->d_mediasize = 0;
 
 	/*

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

@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/NOTES,v 1.1275 2004/09/03 06:32:11 ru Exp $
+# $FreeBSD: src/sys/conf/NOTES,v 1.1276 2004/09/08 08:42:36 ru Exp $
 #
 # NOTES -- Lines that can be cut/pasted into kernel and hints configs.
 #
@@ -1904,20 +1904,20 @@
 device		snd_uaudio
 
 # For non-pnp sound cards:
-hint.snd_mss.0.at="isa"
-hint.snd_mss.0.irq="10"
-hint.snd_mss.0.drq="1"
-hint.snd_mss.0.flags="0x0"
-hint.snd_sbc.0.at="isa"
-hint.snd_sbc.0.port="0x220"
-hint.snd_sbc.0.irq="5"
-hint.snd_sbc.0.drq="1"
-hint.snd_sbc.0.flags="0x15"
-hint.snd_gusc.0.at="isa"
-hint.snd_gusc.0.port="0x220"
-hint.snd_gusc.0.irq="5"
-hint.snd_gusc.0.drq="1"
-hint.snd_gusc.0.flags="0x13"
+hint.pcm.0.at="isa"
+hint.pcm.0.irq="10"
+hint.pcm.0.drq="1"
+hint.pcm.0.flags="0x0"
+hint.sbc.0.at="isa"
+hint.sbc.0.port="0x220"
+hint.sbc.0.irq="5"
+hint.sbc.0.drq="1"
+hint.sbc.0.flags="0x15"
+hint.gusc.0.at="isa"
+hint.gusc.0.port="0x220"
+hint.gusc.0.irq="5"
+hint.gusc.0.drq="1"
+hint.gusc.0.flags="0x13"
 
 #
 # Miscellaneous hardware:

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

@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/files,v 1.949 2004/09/02 20:44:56 alfred Exp $
+# $FreeBSD: src/sys/conf/files,v 1.952 2004/09/10 20:57:45 wpaul Exp $
 #
 # The long compile-with and dependency lines are required because of
 # limitations in config: backslash-newline doesn't work in strings, and
@@ -549,6 +549,7 @@
 dev/mii/amphy.c		optional miibus
 dev/mii/bmtphy.c	optional miibus
 dev/mii/brgphy.c	optional miibus
+dev/mii/ciphy.c		optional miibus
 dev/mii/dcphy.c		optional miibus pci
 dev/mii/e1000phy.c	optional miibus
 dev/mii/exphy.c		optional miibus
@@ -800,6 +801,7 @@
 dev/usb/ubsa.c		optional ubsa ucom
 dev/usb/ubser.c		optional ubser
 dev/usb/ucom.c		optional ucom
+dev/usb/ucycom.c	optional ucycom ucom
 dev/usb/udbp.c		optional udbp
 dev/usb/ufm.c		optional ufm
 dev/usb/uftdi.c		optional uftdi ucom
@@ -841,6 +843,7 @@
 dev/vinum/vinumrevive.c		optional vinum
 dev/vinum/vinumstate.c		optional vinum
 dev/vinum/vinumutil.c		optional vinum
+dev/vge/if_vge.c		optional vge
 dev/vx/if_vx.c			optional vx
 dev/vx/if_vx_eisa.c		optional vx eisa
 dev/vx/if_vx_pci.c		optional vx pci
@@ -1086,7 +1089,6 @@
 kern/kern_idle.c	standard
 kern/kern_intr.c	standard
 kern/kern_jail.c	standard
-kern/kern_thr.c		standard
 kern/kern_kse.c		standard
 kern/kern_kthread.c	standard
 kern/kern_ktr.c		optional ktr
@@ -1110,12 +1112,12 @@
 kern/kern_shutdown.c	standard
 kern/kern_sig.c		standard
 kern/kern_subr.c	standard
-kern/kern_switch.c	standard
 kern/kern_sx.c		standard
 kern/kern_synch.c	standard
 kern/kern_syscalls.c	standard
 kern/kern_sysctl.c	standard
 kern/kern_tc.c		standard
+kern/kern_thr.c		standard
 kern/kern_thread.c	standard
 kern/kern_time.c	standard
 kern/kern_timeout.c	standard

==== //depot/projects/smpng/sys/ddb/db_ps.c#27 (text+ko) ====

@@ -28,7 +28,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/ddb/db_ps.c,v 1.52 2004/07/10 23:47:19 marcel Exp $");
+__FBSDID("$FreeBSD: src/sys/ddb/db_ps.c,v 1.53 2004/09/05 02:09:52 julian Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -100,7 +100,7 @@
 		    p->p_ucred != NULL ? p->p_ucred->cr_ruid : 0, pp->p_pid,
 		    p->p_pgrp != NULL ? p->p_pgrp->pg_id : 0, p->p_flag,
 		    state);
-		if (p->p_flag & P_SA) 
+		if (p->p_flag & P_HADTHREADS)
 			db_printf("(threaded)  %s\n", p->p_comm);
 		FOREACH_THREAD_IN_PROC(p, td) {
 			dumpthread(p, td);
@@ -120,7 +120,7 @@
 dumpthread(volatile struct proc *p, volatile struct thread *td)
 {
 
-	if (p->p_flag & P_SA) 
+	if (p->p_flag & P_HADTHREADS)
 		db_printf( "   thread %p ksegrp %p ", td, td->td_ksegrp);
 	if (TD_ON_SLEEPQ(td))
 		db_printf("[SLPQ %s %p]", td->td_wmesg, (void *)td->td_wchan);
@@ -159,9 +159,11 @@
 	default:
 		db_printf("[UNK: %#x]", td->td_state);
 	}
-	if (p->p_flag & P_SA) {
+	if (p->p_flag & P_HADTHREADS) {
+#ifdef KEF_DIDRUN
 		if (td->td_kse)
 			db_printf("[kse %p]", td->td_kse);
+#endif
 		db_printf("\n");
 	} else
 		db_printf(" %s\n", p->p_comm);

==== //depot/projects/smpng/sys/dev/acpica/acpi_powerres.c#19 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi_powerres.c,v 1.26 2004/08/13 06:22:10 njl Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi_powerres.c,v 1.27 2004/09/07 16:58:12 njl Exp $");
 
 #include "opt_acpi.h"
 #include <sys/param.h>
@@ -62,6 +62,7 @@
 /* Return values from _STA on a power resource */
 #define ACPI_PWR_OFF	0
 #define ACPI_PWR_ON	1
+#define ACPI_PWR_UNK	(-1)
 
 /* A relationship between a power resource and a consumer. */
 struct acpi_powerreference {
@@ -87,6 +88,7 @@
     ACPI_HANDLE				ap_resource;
     ACPI_INTEGER			ap_systemlevel;
     ACPI_INTEGER			ap_order;
+    int					ap_state;
 };
 
 static TAILQ_HEAD(acpi_powerresource_list, acpi_powerresource)
@@ -169,6 +171,7 @@
     }
     rp->ap_systemlevel = obj->PowerResource.SystemLevel;
     rp->ap_order = obj->PowerResource.ResourceOrder;
+    rp->ap_state = ACPI_PWR_UNK;
     
     /* Sort the resource into the list */
     status = AE_OK;
@@ -640,17 +643,17 @@
 	if (ACPI_FAILURE(status)) {
 	    ACPI_DEBUG_PRINT((ACPI_DB_OBJECTS, "can't get status of %s - %d\n",
 			      acpi_name(rp->ap_resource), status));
-
 	    /* XXX is this correct?  Always switch if in doubt? */
 	    continue;
-	}
+	} else if (rp->ap_state == ACPI_PWR_UNK)
+	    rp->ap_state = cur;
 
 	/*
 	 * Switch if required.  Note that we ignore the result of the switch
 	 * effort; we don't know what to do if it fails, so checking wouldn't
 	 * help much.
 	 */
-	if (cur != ACPI_PWR_ON) {
+	if (rp->ap_state != ACPI_PWR_ON) {
 	    status = AcpiEvaluateObject(rp->ap_resource, "_ON", NULL, NULL);
 	    if (ACPI_FAILURE(status)) {
 		ACPI_DEBUG_PRINT((ACPI_DB_OBJECTS,
@@ -658,6 +661,7 @@
 				 acpi_name(rp->ap_resource),
 				 AcpiFormatException(status)));
 	    } else {
+		rp->ap_state = ACPI_PWR_ON;
 		ACPI_DEBUG_PRINT((ACPI_DB_OBJECTS, "switched %s on\n",
 				 acpi_name(rp->ap_resource)));
 	    }
@@ -685,14 +689,15 @@
 			      acpi_name(rp->ap_resource), status));
 	    /* XXX is this correct?  Always switch if in doubt? */
 	    continue;
-	}
+	} else if (rp->ap_state == ACPI_PWR_UNK)
+	    rp->ap_state = cur;
 
 	/*
 	 * Switch if required.  Note that we ignore the result of the switch
 	 * effort; we don't know what to do if it fails, so checking wouldn't
 	 * help much.
 	 */
-	if (cur != ACPI_PWR_OFF) {
+	if (rp->ap_state != ACPI_PWR_OFF) {
 	    status = AcpiEvaluateObject(rp->ap_resource, "_OFF", NULL, NULL);
 	    if (ACPI_FAILURE(status)) {
 		ACPI_DEBUG_PRINT((ACPI_DB_OBJECTS,
@@ -700,6 +705,7 @@
 				 acpi_name(rp->ap_resource),
 				 AcpiFormatException(status)));
 	    } else {
+		rp->ap_state = ACPI_PWR_OFF;
 		ACPI_DEBUG_PRINT((ACPI_DB_OBJECTS, "switched %s off\n",
 				 acpi_name(rp->ap_resource)));
 	    }

==== //depot/projects/smpng/sys/dev/acpica/acpi_thermal.c#29 (text+ko) ====

@@ -26,7 +26,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi_thermal.c,v 1.49 2004/08/30 22:42:10 peter Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi_thermal.c,v 1.51 2004/09/08 19:36:07 njl Exp $");
 
 #include "opt_acpi.h"
 #include <sys/param.h>
@@ -112,7 +112,9 @@
 static int	acpi_tz_attach(device_t dev);
 static int	acpi_tz_establish(struct acpi_tz_softc *sc);
 static void	acpi_tz_monitor(void *Context);
+#if 0
 static void	acpi_tz_all_off(struct acpi_tz_softc *sc);
+#endif
 static void	acpi_tz_switch_cooler_off(ACPI_OBJECT *obj, void *arg);
 static void	acpi_tz_switch_cooler_on(ACPI_OBJECT *obj, void *arg);
 static void	acpi_tz_getparam(struct acpi_tz_softc *sc, char *node,
@@ -225,7 +227,8 @@
 					 OID_AUTO, oidname, CTLFLAG_RD, 0, "");
     SYSCTL_ADD_OPAQUE(&sc->tz_sysctl_ctx, SYSCTL_CHILDREN(sc->tz_sysctl_tree),
 		      OID_AUTO, "temperature", CTLFLAG_RD, &sc->tz_temperature,
-		      sizeof(sc->tz_temperature), "IK", "current thermal zone temperature");
+		      sizeof(sc->tz_temperature), "IK",
+		      "current thermal zone temperature");
     SYSCTL_ADD_PROC(&sc->tz_sysctl_ctx, SYSCTL_CHILDREN(sc->tz_sysctl_tree),
 		    OID_AUTO, "active", CTLTYPE_INT | CTLFLAG_RW,
 		    sc, 0, acpi_tz_active_sysctl, "I", "");
@@ -233,9 +236,9 @@
     SYSCTL_ADD_INT(&sc->tz_sysctl_ctx, SYSCTL_CHILDREN(sc->tz_sysctl_tree),
 		   OID_AUTO, "thermal_flags", CTLFLAG_RD,
 		   &sc->tz_thflags, 0, "thermal zone flags");
-    SYSCTL_ADD_INT(&sc->tz_sysctl_ctx, SYSCTL_CHILDREN(sc->tz_sysctl_tree),
-		   OID_AUTO, "_PSV", CTLFLAG_RD,
-		   &sc->tz_zone.psv, 0, "");
+    SYSCTL_ADD_OPAQUE(&sc->tz_sysctl_ctx, SYSCTL_CHILDREN(sc->tz_sysctl_tree),
+		      OID_AUTO, "_PSV", CTLFLAG_RD, &sc->tz_zone.psv,
+		      sizeof(sc->tz_zone.psv), "IK", "");
     SYSCTL_ADD_OPAQUE(&sc->tz_sysctl_ctx, SYSCTL_CHILDREN(sc->tz_sysctl_tree),
 		      OID_AUTO, "_HOT", CTLFLAG_RD, &sc->tz_zone.hot,
 		      sizeof(sc->tz_zone.hot), "IK", "");
@@ -293,8 +296,7 @@
     
     ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__);
 
-    /* Power everything off and erase any existing state. */
-    acpi_tz_all_off(sc);
+    /* Erase any existing state. */
     for (i = 0; i < TZ_NUMLEVELS; i++)
 	if (sc->tz_zone.al[i].Pointer != NULL)
 	    AcpiOsFree(sc->tz_zone.al[i].Pointer);
@@ -343,11 +345,6 @@
     for (i = 0; i < TZ_NUMLEVELS; i++)
 	acpi_tz_sanity(sc, &sc->tz_zone.ac[i], "_ACx");
 
-    /*
-     * Power off everything that we've just been given.
-     */
-    acpi_tz_all_off(sc);
-
     return_VALUE (0);
 }
 
@@ -490,6 +487,7 @@
     return_VOID;
 }
 
+#if 0
 /*
  * Turn off all the cooling devices.
  */
@@ -517,6 +515,7 @@
 
     return_VOID;
 }
+#endif
 
 /*
  * Given an object, verify that it's a reference to a device of some sort, 
@@ -634,9 +633,6 @@
     return (0);
 }
 
-/*
- * Respond to a Notify event sent to the zone.
- */
 static void
 acpi_tz_notify_handler(ACPI_HANDLE h, UINT32 notify, void *context)
 {
@@ -675,21 +671,32 @@
 }
 
 /*
- * Poll the thermal zone.
+ * Notifies can be generated asynchronously but have also been seen to be
+ * triggered by other thermal methods.  One system generates a notify of
+ * 0x81 when the fan is turned on or off.  Another generates it when _SCP
+ * is called.  To handle these situations, we check the zone via
+ * acpi_tz_monitor() before evaluating changes to setpoints or the cooling
+ * policy.

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


More information about the p4-projects mailing list