From owner-p4-projects@FreeBSD.ORG  Tue Dec 27 00:07:39 2005
Return-Path: <owner-p4-projects@FreeBSD.ORG>
X-Original-To: p4-projects@freebsd.org
Delivered-To: p4-projects@freebsd.org
Received: by hub.freebsd.org (Postfix, from userid 32767)
	id 7EA2716A422; Tue, 27 Dec 2005 00:07:38 +0000 (GMT)
X-Original-To: perforce@freebsd.org
Delivered-To: perforce@freebsd.org
Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125])
	by hub.freebsd.org (Postfix) with ESMTP id 4F68616A420
	for <perforce@freebsd.org>; Tue, 27 Dec 2005 00:07:38 +0000 (GMT)
	(envelope-from soc-andrew@freebsd.org)
Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115])
	by mx1.FreeBSD.org (Postfix) with ESMTP id 8325F43D45
	for <perforce@freebsd.org>; Tue, 27 Dec 2005 00:07:37 +0000 (GMT)
	(envelope-from soc-andrew@freebsd.org)
Received: from repoman.freebsd.org (localhost [127.0.0.1])
	by repoman.freebsd.org (8.13.1/8.13.1) with ESMTP id jBR07bsR060713
	for <perforce@freebsd.org>; Tue, 27 Dec 2005 00:07:37 GMT
	(envelope-from soc-andrew@freebsd.org)
Received: (from perforce@localhost)
	by repoman.freebsd.org (8.13.1/8.13.1/Submit) id jBR07bfS060708
	for perforce@freebsd.org; Tue, 27 Dec 2005 00:07:37 GMT
	(envelope-from soc-andrew@freebsd.org)
Date: Tue, 27 Dec 2005 00:07:37 GMT
Message-Id: <200512270007.jBR07bfS060708@repoman.freebsd.org>
X-Authentication-Warning: repoman.freebsd.org: perforce set sender to
	soc-andrew@freebsd.org using -f
From: soc-andrew <soc-andrew@FreeBSD.org>
To: Perforce Change Reviews <perforce@freebsd.org>
Cc: 
Subject: PERFORCE change 88746 for review
X-BeenThere: p4-projects@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: p4 projects tree changes <p4-projects.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/p4-projects>,
	<mailto:p4-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/p4-projects>
List-Post: <mailto:p4-projects@freebsd.org>
List-Help: <mailto:p4-projects-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/p4-projects>,
	<mailto:p4-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Tue, 27 Dec 2005 00:07:39 -0000

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

Change 88746 by soc-andrew@soc-andrew_serv on 2005/12/27 00:07:15

	Rename posix to POSIX to reduce the diff to the BSDInstaller cvs

Affected files ...

.. //depot/projects/soc2005/bsdinstaller/src/contrib/bsdinstaller/backend/lua/install/500_install_os.lua#6 edit
.. //depot/projects/soc2005/bsdinstaller/src/contrib/bsdinstaller/backend/lua/lib/package.lua#5 edit
.. //depot/projects/soc2005/bsdinstaller/src/contrib/bsdinstaller/backend/lua/lib/target_system.lua#9 edit
.. //depot/projects/soc2005/bsdinstaller/src/contrib/bsdinstaller/backend/lua/lib/uinav.lua#4 edit

Differences ...

==== //depot/projects/soc2005/bsdinstaller/src/contrib/bsdinstaller/backend/lua/install/500_install_os.lua#6 (text+ko) ====

@@ -90,7 +90,7 @@
 			"-C ${root}${base}/usr",
 		    replacements = {
 			base = base,
-			uname = posix.uname("%r")
+			uname = POSIX.uname("%r")
 		    }
 		}
 	end

==== //depot/projects/soc2005/bsdinstaller/src/contrib/bsdinstaller/backend/lua/lib/package.lua#5 (text+ko) ====

@@ -225,7 +225,7 @@
 		else
 			local tmp_dir = App.conf.dir.root ..
 			    ts:get_base() .. "tmp"
-			local link = posix.readlink(tmp_dir)
+			local link = POSIX.readlink(tmp_dir)
 			if link ~= nil then
 				pkg_tmp = FileName.remove_leading_slash(link)
 			elseif FileName.is_dir(tmp_dir) then
@@ -446,7 +446,7 @@
 		local dir_name = App.expand("${root}${base}var/db/pkg", {
 			base = ts:get_base()
 		    })
-		local dir = posix.dir(dir_name)
+		local dir = POSIX.dir(dir_name)
 		if dir then
 			local i, filename
 			for i, filename in ipairs(dir) do
@@ -464,7 +464,7 @@
 	-- the given directory.
 	--
 	method.enumerate_archives_in = function(self, dir_name)
-		local dir = posix.dir(dir_name)
+		local dir = POSIX.dir(dir_name)
 		if dir then
 			local i, filename
 			for i, filename in ipairs(dir) do

==== //depot/projects/soc2005/bsdinstaller/src/contrib/bsdinstaller/backend/lua/lib/target_system.lua#9 (text+ko) ====

@@ -350,7 +350,7 @@
 		--
 		local add_copy_command = function(src, dest)
 			local filename = App.expand("${root}" .. src)
-			local link = posix.readlink(filename)
+			local link = POSIX.readlink(filename)
 			if link ~= nil then
 				cmds:add{
 				    cmdline = "${root}${LN} -s ${link} ${root}${base}${dest}",
@@ -422,7 +422,7 @@
 					dir = dir,
 					dest = dest,
 					dist_suffix = App.conf.dist_suffix,
-					uname = posix.uname("%r")
+					uname = POSIX.uname("%r")
 				    },
 				    log_mode = CmdChain.LOG_QUIET -- don't spam log
 				}

==== //depot/projects/soc2005/bsdinstaller/src/contrib/bsdinstaller/backend/lua/lib/uinav.lua#4 (text+ko) ====

@@ -285,7 +285,7 @@
 			from_dir = FileName.dirname(App.get_current_script())
 		end
 
-		filenames = posix.dir(from_dir)
+		filenames = POSIX.dir(from_dir)
 		table.sort(filenames)
 
 		for i, filename in ipairs(filenames) do

From owner-p4-projects@FreeBSD.ORG  Wed Dec 28 16:17:44 2005
Return-Path: <owner-p4-projects@FreeBSD.ORG>
X-Original-To: p4-projects@freebsd.org
Delivered-To: p4-projects@freebsd.org
Received: by hub.freebsd.org (Postfix, from userid 32767)
	id 20FA216A422; Wed, 28 Dec 2005 16:17:44 +0000 (GMT)
X-Original-To: perforce@freebsd.org
Delivered-To: perforce@freebsd.org
Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125])
	by hub.freebsd.org (Postfix) with ESMTP id D18CC16A41F
	for <perforce@freebsd.org>; Wed, 28 Dec 2005 16:17:43 +0000 (GMT)
	(envelope-from jhb@freebsd.org)
Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115])
	by mx1.FreeBSD.org (Postfix) with ESMTP id 810D343D62
	for <perforce@freebsd.org>; Wed, 28 Dec 2005 16:17:43 +0000 (GMT)
	(envelope-from jhb@freebsd.org)
Received: from repoman.freebsd.org (localhost [127.0.0.1])
	by repoman.freebsd.org (8.13.1/8.13.1) with ESMTP id jBSGHhqW048566
	for <perforce@freebsd.org>; Wed, 28 Dec 2005 16:17:43 GMT
	(envelope-from jhb@freebsd.org)
Received: (from perforce@localhost)
	by repoman.freebsd.org (8.13.1/8.13.1/Submit) id jBSGHhS2048563
	for perforce@freebsd.org; Wed, 28 Dec 2005 16:17:43 GMT
	(envelope-from jhb@freebsd.org)
Date: Wed, 28 Dec 2005 16:17:43 GMT
Message-Id: <200512281617.jBSGHhS2048563@repoman.freebsd.org>
X-Authentication-Warning: repoman.freebsd.org: perforce set sender to
	jhb@freebsd.org using -f
From: John Baldwin <jhb@FreeBSD.org>
To: Perforce Change Reviews <perforce@freebsd.org>
Cc: 
Subject: PERFORCE change 88838 for review
X-BeenThere: p4-projects@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: p4 projects tree changes <p4-projects.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/p4-projects>,
	<mailto:p4-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/p4-projects>
List-Post: <mailto:p4-projects@freebsd.org>
List-Help: <mailto:p4-projects-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/p4-projects>,
	<mailto:p4-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Wed, 28 Dec 2005 16:17:45 -0000

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

Change 88838 by jhb@jhb_slimer on 2005/12/28 16:17:15

	Implement msleep_spin() which is a stripped down version of msleep()
	(no PCATCH or PDROP and no priority at all) that works with spin
	mutexes.  Add a test event to crash.ko as well.

Affected files ...

.. //depot/projects/smpng/sys/kern/kern_synch.c#93 edit
.. //depot/projects/smpng/sys/modules/crash/crash.c#26 edit
.. //depot/projects/smpng/sys/sys/systm.h#68 edit

Differences ...

==== //depot/projects/smpng/sys/kern/kern_synch.c#93 (text+ko) ====

@@ -241,6 +241,88 @@
 	return (rval);
 }
 
+int
+msleep_spin(ident, mtx, wmesg, timo)
+	void *ident;
+	struct mtx *mtx;
+	const char *wmesg;
+	int timo;
+{
+	struct thread *td;
+	struct proc *p;
+	int rval;
+	WITNESS_SAVE_DECL(mtx);
+
+	td = curthread;
+	p = td->td_proc;
+	KASSERT(mtx != NULL, ("sleeping without a mutex"));
+	KASSERT(p != NULL, ("msleep1"));
+	KASSERT(ident != NULL && TD_IS_RUNNING(td), ("msleep"));
+
+	if (cold) {
+		/*
+		 * During autoconfiguration, just return;
+		 * don't run any other threads or panic below,
+		 * in case this is the idle thread and already asleep.
+		 * XXX: this used to do "s = splhigh(); splx(safepri);
+		 * splx(s);" to give interrupts a chance, but there is
+		 * no way to give interrupts a chance now.
+		 */
+		return (0);
+	}
+
+	sleepq_lock(ident);
+	CTR5(KTR_PROC, "msleep_spin: thread %p (pid %ld, %s) on %s (%p)",
+	    (void *)td, (long)p->p_pid, p->p_comm, wmesg, ident);
+
+	DROP_GIANT();
+	mtx_assert(mtx, MA_OWNED | MA_NOTRECURSED);
+	WITNESS_SAVE(&mtx->mtx_object, mtx);
+	mtx_unlock_spin(mtx);
+
+	/*
+	 * We put ourselves on the sleep queue and start our timeout.
+	 */
+	sleepq_add(ident, mtx, wmesg, SLEEPQ_MSLEEP);
+	if (timo)
+		sleepq_set_timeout(ident, timo);
+
+	/*
+	 * Can't call ktrace with any spin locks held so it can lock the
+	 * ktrace_mtx lock, and WITNESS_WARN considers it an error to hold
+	 * any spin lock.  Thus, we have to drop the sleepq spin lock while
+	 * we handle those requests.  This is safe since we have placed our
+	 * thread on the sleep queue already.
+	 */
+#ifdef KTRACE
+	if (KTRPOINT(td, KTR_CSW)) {
+		sleepq_release(ident);
+		ktrcsw(1, 0);
+		sleepq_lock(ident);
+	}
+#endif
+#ifdef WITNESS
+	sleepq_release(ident);
+	WITNESS_WARN(WARN_GIANTOK | WARN_SLEEPOK, NULL, "Sleeping on \"%s\"",
+	    wmesg);
+	sleepq_lock(ident);
+#endif
+	if (timo)
+		rval = sleepq_timedwait(ident);
+	else {
+		sleepq_wait(ident);
+		rval = 0;
+	}
+#ifdef KTRACE
+	if (KTRPOINT(td, KTR_CSW))
+		ktrcsw(0, 0);
+#endif
+	PICKUP_GIANT();
+	mtx_lock_spin(mtx);
+	WITNESS_RESTORE(&mtx->mtx_object, mtx);
+	return (rval);
+}
+
 /*
  * Make all threads sleeping on the specified identifier runnable.
  */

==== //depot/projects/smpng/sys/modules/crash/crash.c#26 (text+ko) ====

@@ -84,6 +84,31 @@
 /* Events. */
 
 static void
+msleep_spin_callout(void *dummy)
+{
+
+	wakeup(&test1_mtx);
+}
+
+static void
+msleep_spin_test(void)
+{
+	int error;
+
+	bzero(&test1_mtx, sizeof(test1_mtx));
+	mtx_init(&test1_mtx, "test1", NULL, MTX_SPIN);
+	error = msleep_spin(&test1_mtx, &test1_mtx, "spincr", 5);
+	printf("msleep_spin returned %d\n", error);
+	kdb_enter("timed out");
+	timeout(msleep_spin_callout, NULL, 5);
+	error = msleep_spin(&test1_mtx, &test1_mtx, "spincr2", 0);
+	printf("msleep_spin returned %d\n", error);
+	kdb_enter("awoke from spin");
+	mtx_destroy(&test1_mtx);
+}
+CRASH_EVENT("msleep_spin", msleep_spin_test);
+
+static void
 ddblock_test(void)
 {
 

==== //depot/projects/smpng/sys/sys/systm.h#68 (text+ko) ====

@@ -295,6 +295,7 @@
  */
 int	msleep(void *chan, struct mtx *mtx, int pri, const char *wmesg,
 	    int timo);
+int	msleep_spin(void *chan, struct mtx *mtx, const char *wmesg, int timo);
 #define	tsleep(chan, pri, wmesg, timo)	msleep(chan, NULL, pri, wmesg, timo)
 void	wakeup(void *chan) __nonnull(1);
 void	wakeup_one(void *chan) __nonnull(1);

From owner-p4-projects@FreeBSD.ORG  Thu Dec 29 00:37:59 2005
Return-Path: <owner-p4-projects@FreeBSD.ORG>
X-Original-To: p4-projects@freebsd.org
Delivered-To: p4-projects@freebsd.org
Received: by hub.freebsd.org (Postfix, from userid 32767)
	id 34CD116A422; Thu, 29 Dec 2005 00:37:59 +0000 (GMT)
X-Original-To: perforce@freebsd.org
Delivered-To: perforce@freebsd.org
Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125])
	by hub.freebsd.org (Postfix) with ESMTP id E754816A41F
	for <perforce@freebsd.org>; Thu, 29 Dec 2005 00:37:58 +0000 (GMT)
	(envelope-from imp@freebsd.org)
Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115])
	by mx1.FreeBSD.org (Postfix) with ESMTP id F269B43D78
	for <perforce@freebsd.org>; Thu, 29 Dec 2005 00:37:55 +0000 (GMT)
	(envelope-from imp@freebsd.org)
Received: from repoman.freebsd.org (localhost [127.0.0.1])
	by repoman.freebsd.org (8.13.1/8.13.1) with ESMTP id jBT0btBB084060
	for <perforce@freebsd.org>; Thu, 29 Dec 2005 00:37:55 GMT
	(envelope-from imp@freebsd.org)
Received: (from perforce@localhost)
	by repoman.freebsd.org (8.13.1/8.13.1/Submit) id jBT0bteq084057
	for perforce@freebsd.org; Thu, 29 Dec 2005 00:37:55 GMT
	(envelope-from imp@freebsd.org)
Date: Thu, 29 Dec 2005 00:37:55 GMT
Message-Id: <200512290037.jBT0bteq084057@repoman.freebsd.org>
X-Authentication-Warning: repoman.freebsd.org: perforce set sender to
	imp@freebsd.org using -f
From: Warner Losh <imp@FreeBSD.org>
To: Perforce Change Reviews <perforce@freebsd.org>
Cc: 
Subject: PERFORCE change 88855 for review
X-BeenThere: p4-projects@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: p4 projects tree changes <p4-projects.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/p4-projects>,
	<mailto:p4-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/p4-projects>
List-Post: <mailto:p4-projects@freebsd.org>
List-Help: <mailto:p4-projects-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/p4-projects>,
	<mailto:p4-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Thu, 29 Dec 2005 00:38:00 -0000

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

Change 88855 by imp@imp_harmony on 2005/12/29 00:37:53

	IFC @88854

Affected files ...

.. //depot/projects/arm/src/sys/alpha/alpha/elf_machdep.c#3 integrate
.. //depot/projects/arm/src/sys/alpha/linux/linux_sysvec.c#4 integrate
.. //depot/projects/arm/src/sys/amd64/amd64/db_trace.c#5 integrate
.. //depot/projects/arm/src/sys/amd64/amd64/elf_machdep.c#4 integrate
.. //depot/projects/arm/src/sys/amd64/linux32/linux32_sysvec.c#4 integrate
.. //depot/projects/arm/src/sys/arm/arm/elf_machdep.c#2 integrate
.. //depot/projects/arm/src/sys/compat/ia32/ia32_sysvec.c#3 integrate
.. //depot/projects/arm/src/sys/compat/linux/linux_misc.c#4 integrate
.. //depot/projects/arm/src/sys/compat/linux/linux_socket.c#5 integrate
.. //depot/projects/arm/src/sys/contrib/pf/net/pf.c#5 integrate
.. //depot/projects/arm/src/sys/contrib/pf/net/pf_norm.c#4 integrate
.. //depot/projects/arm/src/sys/contrib/pf/net/pfvar.h#4 integrate
.. //depot/projects/arm/src/sys/dev/aac/aac.c#3 integrate
.. //depot/projects/arm/src/sys/dev/acpica/Osd/OsdSynch.c#3 integrate
.. //depot/projects/arm/src/sys/dev/ata/ata-all.h#5 integrate
.. //depot/projects/arm/src/sys/dev/ata/ata-chipset.c#6 integrate
.. //depot/projects/arm/src/sys/dev/ata/ata-pci.c#3 integrate
.. //depot/projects/arm/src/sys/dev/ata/ata-pci.h#5 integrate
.. //depot/projects/arm/src/sys/dev/ata/ata-queue.c#4 integrate
.. //depot/projects/arm/src/sys/dev/ata/ata-raid.c#6 integrate
.. //depot/projects/arm/src/sys/dev/cardbus/cardbus.c#5 integrate
.. //depot/projects/arm/src/sys/dev/dc/if_dc.c#4 integrate
.. //depot/projects/arm/src/sys/dev/em/if_em.c#10 integrate
.. //depot/projects/arm/src/sys/dev/firewire/sbp.c#2 integrate
.. //depot/projects/arm/src/sys/dev/hwpmc/hwpmc_mod.c#3 integrate
.. //depot/projects/arm/src/sys/dev/hwpmc/hwpmc_piv.c#3 integrate
.. //depot/projects/arm/src/sys/dev/md/md.c#3 integrate
.. //depot/projects/arm/src/sys/dev/pccard/pccard.c#3 integrate
.. //depot/projects/arm/src/sys/dev/pccbb/pccbb.c#3 integrate
.. //depot/projects/arm/src/sys/dev/pccbb/pccbbreg.h#3 integrate
.. //depot/projects/arm/src/sys/dev/sound/pci/atiixp.c#2 integrate
.. //depot/projects/arm/src/sys/dev/sound/pci/emu10k1.c#3 integrate
.. //depot/projects/arm/src/sys/dev/ti/if_ti.c#3 integrate
.. //depot/projects/arm/src/sys/dev/ti/if_tireg.h#3 integrate
.. //depot/projects/arm/src/sys/dev/usb/uhid.c#2 integrate
.. //depot/projects/arm/src/sys/dev/usb/usb_quirks.c#4 integrate
.. //depot/projects/arm/src/sys/dev/usb/usb_quirks.h#3 integrate
.. //depot/projects/arm/src/sys/dev/usb/usbdevs#6 integrate
.. //depot/projects/arm/src/sys/fs/procfs/procfs_status.c#3 integrate
.. //depot/projects/arm/src/sys/i386/i386/elf_machdep.c#2 integrate
.. //depot/projects/arm/src/sys/i386/i386/genassym.c#3 integrate
.. //depot/projects/arm/src/sys/i386/i386/machdep.c#6 integrate
.. //depot/projects/arm/src/sys/i386/i386/swtch.s#3 integrate
.. //depot/projects/arm/src/sys/i386/i386/sys_machdep.c#3 integrate
.. //depot/projects/arm/src/sys/i386/include/pcpu.h#4 integrate
.. //depot/projects/arm/src/sys/i386/linux/linux_sysvec.c#4 integrate
.. //depot/projects/arm/src/sys/ia64/ia64/elf_machdep.c#4 integrate
.. //depot/projects/arm/src/sys/kern/imgact_elf.c#5 integrate
.. //depot/projects/arm/src/sys/kern/kern_malloc.c#3 integrate
.. //depot/projects/arm/src/sys/kern/kern_switch.c#4 integrate
.. //depot/projects/arm/src/sys/kern/sched_ule.c#5 integrate
.. //depot/projects/arm/src/sys/net/if_media.c#2 integrate
.. //depot/projects/arm/src/sys/netatm/atm_sys.h#2 integrate
.. //depot/projects/arm/src/sys/netgraph/netflow/ng_netflow.c#3 integrate
.. //depot/projects/arm/src/sys/nfsclient/nfs_vnops.c#6 integrate
.. //depot/projects/arm/src/sys/pc98/pc98/machdep.c#3 integrate
.. //depot/projects/arm/src/sys/powerpc/powerpc/elf_machdep.c#2 integrate
.. //depot/projects/arm/src/sys/sparc64/conf/GENERIC#8 integrate
.. //depot/projects/arm/src/sys/sparc64/sparc64/elf_machdep.c#3 integrate
.. //depot/projects/arm/src/sys/sys/_timeval.h#2 integrate
.. //depot/projects/arm/src/sys/sys/imgact_elf.h#3 integrate
.. //depot/projects/arm/src/sys/sys/ktrace.h#3 integrate

Differences ...

==== //depot/projects/arm/src/sys/alpha/alpha/elf_machdep.c#3 (text+ko) ====

@@ -24,7 +24,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/alpha/alpha/elf_machdep.c,v 1.20 2005/12/18 04:52:34 marcel Exp $");
+__FBSDID("$FreeBSD: src/sys/alpha/alpha/elf_machdep.c,v 1.21 2005/12/26 21:23:56 sobomax Exp $");
 
 #include <sys/param.h>
 #include <sys/kernel.h>
@@ -85,6 +85,7 @@
 						"/libexec/ld-elf.so.1",
 						&elf64_freebsd_sysvec,
 						NULL,
+						0,
 					  };
 
 SYSINIT(elf64, SI_SUB_EXEC, SI_ORDER_ANY,
@@ -99,6 +100,7 @@
 						"/usr/libexec/ld-elf.so.1",
 						&elf64_freebsd_sysvec,
 						NULL,
+						0,
 					  };
 
 SYSINIT(oelf64, SI_SUB_EXEC, SI_ORDER_ANY,

==== //depot/projects/arm/src/sys/alpha/linux/linux_sysvec.c#4 (text+ko) ====

@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/alpha/linux/linux_sysvec.c,v 1.97 2005/12/15 16:30:41 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/alpha/linux/linux_sysvec.c,v 1.98 2005/12/26 21:23:56 sobomax Exp $");
 
 /* XXX we use functions that might not exist. */
 #include "opt_compat.h"
@@ -208,6 +208,7 @@
 					"/lib/ld-linux.so.1",
 					&elf_linux_sysvec,
 					NULL,
+					BI_CAN_EXEC_DYN,
 				 };
 
 static Elf64_Brandinfo linux_glibc2brand = {
@@ -218,6 +219,7 @@
 					"/lib/ld-linux.so.2",
 					&elf_linux_sysvec,
 					NULL,
+					BI_CAN_EXEC_DYN,
 				 };
 
 Elf64_Brandinfo *linux_brandlist[] = {

==== //depot/projects/arm/src/sys/amd64/amd64/db_trace.c#5 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/db_trace.c,v 1.72 2005/12/23 21:33:55 jeff Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/db_trace.c,v 1.73 2005/12/27 23:23:47 pjd Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -199,8 +199,8 @@
 static void decode_syscall(int, struct thread *);
 
 static char * watchtype_str(int type);
-int  amd64_set_watch(int watchnum, unsigned int watchaddr, int size, int access,
-		    struct dbreg * d);
+int  amd64_set_watch(int watchnum, unsigned long watchaddr, int size,
+		    int access, struct dbreg * d);
 int  amd64_clr_watch(int watchnum, struct dbreg * d);
 
 /*
@@ -526,7 +526,7 @@
 int
 amd64_set_watch(watchnum, watchaddr, size, access, d)
 	int watchnum;
-	unsigned int watchaddr;
+	unsigned long watchaddr;
 	int size;
 	int access;
 	struct dbreg * d;

==== //depot/projects/arm/src/sys/amd64/amd64/elf_machdep.c#4 (text+ko) ====

@@ -24,7 +24,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/elf_machdep.c,v 1.24 2005/12/18 04:52:35 marcel Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/elf_machdep.c,v 1.25 2005/12/26 21:23:56 sobomax Exp $");
 
 #include <sys/param.h>
 #include <sys/kernel.h>
@@ -82,6 +82,7 @@
 						"/libexec/ld-elf.so.1",
 						&elf64_freebsd_sysvec,
 						NULL,
+						0,
 					  };
 
 SYSINIT(elf64, SI_SUB_EXEC, SI_ORDER_ANY,
@@ -96,6 +97,7 @@
 						"/usr/libexec/ld-elf.so.1",
 						&elf64_freebsd_sysvec,
 						NULL,
+						0,
 					  };
 
 SYSINIT(oelf64, SI_SUB_EXEC, SI_ORDER_ANY,

==== //depot/projects/arm/src/sys/amd64/linux32/linux32_sysvec.c#4 (text+ko) ====

@@ -31,7 +31,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/linux32/linux32_sysvec.c,v 1.13 2005/12/15 16:30:41 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/linux32/linux32_sysvec.c,v 1.14 2005/12/26 21:23:57 sobomax Exp $");
 
 /* XXX we use functions that might not exist. */
 #include "opt_compat.h"
@@ -1026,6 +1026,7 @@
 					"/lib/ld-linux.so.1",
 					&elf_linux_sysvec,
 					NULL,
+					BI_CAN_EXEC_DYN,
 				 };
 
 static Elf32_Brandinfo linux_glibc2brand = {
@@ -1036,6 +1037,7 @@
 					"/lib/ld-linux.so.2",
 					&elf_linux_sysvec,
 					NULL,
+					BI_CAN_EXEC_DYN,
 				 };
 
 Elf32_Brandinfo *linux_brandlist[] = {

==== //depot/projects/arm/src/sys/arm/arm/elf_machdep.c#2 (text+ko) ====

@@ -24,7 +24,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/arm/elf_machdep.c,v 1.5 2004/11/04 18:48:52 cognet Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/arm/elf_machdep.c,v 1.6 2005/12/26 21:23:56 sobomax Exp $");
 
 #include <sys/param.h>
 #include <sys/kernel.h>
@@ -82,6 +82,7 @@
 						"/libexec/ld-elf.so.1",
 						&elf32_freebsd_sysvec,
 						NULL,
+						0,
 					  };
 
 SYSINIT(elf32, SI_SUB_EXEC, SI_ORDER_ANY,
@@ -96,6 +97,7 @@
 						"/usr/libexec/ld-elf.so.1",
 						&elf32_freebsd_sysvec,
 						NULL,
+						0,
 					  };
 
 SYSINIT(oelf32, SI_SUB_EXEC, SI_ORDER_ANY,

==== //depot/projects/arm/src/sys/compat/ia32/ia32_sysvec.c#3 (text+ko) ====

@@ -26,7 +26,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/compat/ia32/ia32_sysvec.c,v 1.21 2005/11/02 21:18:07 ps Exp $");
+__FBSDID("$FreeBSD: src/sys/compat/ia32/ia32_sysvec.c,v 1.22 2005/12/26 21:23:56 sobomax Exp $");
 
 #include "opt_compat.h"
 
@@ -137,6 +137,7 @@
 						"/libexec/ld-elf.so.1",
 						&ia32_freebsd_sysvec,
 						"/libexec/ld-elf32.so.1",
+						0,
 					  };
 
 SYSINIT(ia32, SI_SUB_EXEC, SI_ORDER_ANY,
@@ -151,6 +152,7 @@
 						"/usr/libexec/ld-elf.so.1",
 						&ia32_freebsd_sysvec,
 						"/libexec/ld-elf32.so.1",
+						0,
 					  };
 
 SYSINIT(oia32, SI_SUB_EXEC, SI_ORDER_ANY,

==== //depot/projects/arm/src/sys/compat/linux/linux_misc.c#4 (text+ko) ====

@@ -28,7 +28,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/compat/linux/linux_misc.c,v 1.171 2005/10/14 12:43:44 davidxu Exp $");
+__FBSDID("$FreeBSD: src/sys/compat/linux/linux_misc.c,v 1.172 2005/12/28 07:08:54 trhodes Exp $");
 
 #include "opt_mac.h"
 
@@ -501,8 +501,8 @@
 		utv.tv_usec = ltv.tv_usec;
 #ifdef DEBUG
 		if (ldebug(select))
-			printf(LMSG("incoming timeout (%ld/%ld)"),
-			    utv.tv_sec, utv.tv_usec);
+			printf(LMSG("incoming timeout (%jd/%ld)"),
+			    (intmax_t)utv.tv_sec, utv.tv_usec);
 #endif
 
 		if (itimerfix(&utv)) {
@@ -558,8 +558,8 @@
 			timevalclear(&utv);
 #ifdef DEBUG
 		if (ldebug(select))
-			printf(LMSG("outgoing timeout (%ld/%ld)"),
-			    utv.tv_sec, utv.tv_usec);
+			printf(LMSG("outgoing timeout (%jd/%ld)"),
+			    (intmax_t)utv.tv_sec, utv.tv_usec);
 #endif
 		ltv.tv_sec = utv.tv_sec;
 		ltv.tv_usec = utv.tv_usec;
@@ -958,10 +958,10 @@
 	B2L_ITIMERVAL(&aitv, &ls);
 #ifdef DEBUG
 	if (ldebug(setitimer)) {
-		printf("setitimer: value: sec: %ld, usec: %ld\n",
-		    aitv.it_value.tv_sec, aitv.it_value.tv_usec);
-		printf("setitimer: interval: sec: %ld, usec: %ld\n",
-		    aitv.it_interval.tv_sec, aitv.it_interval.tv_usec);
+		printf("setitimer: value: sec: %jd, usec: %ld\n",
+		    (intmax_t)aitv.it_value.tv_sec, aitv.it_value.tv_usec);
+		printf("setitimer: interval: sec: %jd, usec: %ld\n",
+		    (intmax_t)aitv.it_interval.tv_sec, aitv.it_interval.tv_usec);
 	}
 #endif
 	error = kern_setitimer(td, uap->which, &aitv, &oitv);

==== //depot/projects/arm/src/sys/compat/linux/linux_socket.c#5 (text+ko) ====

@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/compat/linux/linux_socket.c,v 1.61 2005/09/28 07:03:02 rwatson Exp $");
+__FBSDID("$FreeBSD: src/sys/compat/linux/linux_socket.c,v 1.62 2005/12/27 00:17:11 glebius Exp $");
 
 /* XXX we use functions that might not exist. */
 #include "opt_compat.h"
@@ -154,7 +154,7 @@
 			sin6->sin6_scope_id = 0;
 		} else {
 			log(LOG_DEBUG,
-			    "obsolete pre-RFC2553 sockaddr_in6 rejected");
+			    "obsolete pre-RFC2553 sockaddr_in6 rejected\n");
 			error = EINVAL;
 			goto out;
 		}

==== //depot/projects/arm/src/sys/contrib/pf/net/pf.c#5 (text+ko) ====

@@ -1,4 +1,4 @@
-/*	$FreeBSD: src/sys/contrib/pf/net/pf.c,v 1.39 2005/12/20 00:33:33 mlaier Exp $	*/
+/*	$FreeBSD: src/sys/contrib/pf/net/pf.c,v 1.40 2005/12/25 23:52:00 mlaier Exp $	*/
 /*	$OpenBSD: pf.c,v 1.483 2005/03/15 17:38:43 dhartmei Exp $ */
 
 /*
@@ -742,6 +742,9 @@
 	int bad = 0;
 
 	(*state)->src_node->conn++;
+#ifdef __FreeBSD__
+	(*state)->local_flags |= PFSTATE_SRC_CONN;
+#endif
 	pf_add_threshold(&(*state)->src_node->conn_rate);
 
 	if ((*state)->rule.ptr->max_src_conn &&
@@ -1074,8 +1077,12 @@
 
 	if (s->src_node != NULL) {
 		if (s->proto == IPPROTO_TCP) {
+#ifdef __FreeBSD__
+			if (s->local_flags & PFSTATE_SRC_CONN)
+#else
 			if (s->src.state == PF_TCPS_PROXY_DST ||
 			    s->timeout >= PFTM_TCP_ESTABLISHED)
+#endif
 				--s->src_node->conn;
 		}
 		if (--s->src_node->states <= 0) {

==== //depot/projects/arm/src/sys/contrib/pf/net/pf_norm.c#4 (text+ko) ====

@@ -1,4 +1,4 @@
-/*	$FreeBSD: src/sys/contrib/pf/net/pf_norm.c,v 1.13 2005/12/05 11:58:31 ru Exp $	*/
+/*	$FreeBSD: src/sys/contrib/pf/net/pf_norm.c,v 1.14 2005/12/25 22:57:08 mlaier Exp $	*/
 /*	$OpenBSD: pf_norm.c,v 1.97 2004/09/21 16:59:12 aaron Exp $ */
 
 /*
@@ -75,6 +75,8 @@
 #include <net/pfvar.h>
 
 #ifndef __FreeBSD__
+#include <inttypes.h>
+
 struct pf_frent {
 	LIST_ENTRY(pf_frent) fr_next;
 	struct ip *fr_ip;
@@ -1815,8 +1817,9 @@
 			    SEQ_LT(tsecr, dst->scrub->pfss_tsval0)? '3' : ' '));
 #ifdef __FreeBSD__
 			DPFPRINTF((" tsval: %u  tsecr: %u  +ticks: %u  "
-			    "idle: %lus %lums\n",
-			    tsval, tsecr, tsval_from_last, delta_ts.tv_sec,
+			    "idle: %jus %lums\n",
+			    tsval, tsecr, tsval_from_last,
+			    (uintmax_t)delta_ts.tv_sec,
 			    delta_ts.tv_usec / 1000));
 			DPFPRINTF((" src->tsval: %u  tsecr: %u\n",
 			    src->scrub->pfss_tsval, src->scrub->pfss_tsecr));

==== //depot/projects/arm/src/sys/contrib/pf/net/pfvar.h#4 (text+ko) ====

@@ -1,4 +1,4 @@
-/*	$FreeBSD: src/sys/contrib/pf/net/pfvar.h,v 1.13 2005/12/20 00:33:33 mlaier Exp $	*/
+/*	$FreeBSD: src/sys/contrib/pf/net/pfvar.h,v 1.14 2005/12/25 23:52:00 mlaier Exp $	*/
 /*	$OpenBSD: pfvar.h,v 1.213 2005/03/03 07:13:39 dhartmei Exp $ */
 
 /*
@@ -793,6 +793,7 @@
 #ifdef __FreeBSD__
 	u_int8_t	 local_flags;
 #define	PFSTATE_EXPIRING 0x01
+#define	PFSTATE_SRC_CONN 0x02
 #else
 	u_int8_t	 pad;
 #endif

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

@@ -28,7 +28,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/aac/aac.c,v 1.116 2005/11/13 17:26:36 schweikh Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/aac/aac.c,v 1.117 2005/12/28 21:18:55 scottl Exp $");
 
 /*
  * Driver for the Adaptec 'FSA' family of PCI/SCSI RAID adapters.
@@ -281,6 +281,7 @@
 	mtx_init(&sc->aac_io_lock, "AAC I/O lock", NULL, MTX_DEF);
 	mtx_init(&sc->aac_container_lock, "AAC container lock", NULL, MTX_DEF);
 	TAILQ_INIT(&sc->aac_container_tqh);
+	TAILQ_INIT(&sc->aac_ev_cmfree);
 
 	/* Initialize the local AIF queue pointers */
 	sc->aac_aifq_head = sc->aac_aifq_tail = AAC_AIFQ_LENGTH;

==== //depot/projects/arm/src/sys/dev/acpica/Osd/OsdSynch.c#3 (text+ko) ====

@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/acpica/Osd/OsdSynch.c,v 1.25 2005/11/01 22:44:07 jkim Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/acpica/Osd/OsdSynch.c,v 1.26 2005/12/24 22:22:17 trhodes Exp $");
 
 #include <contrib/dev/acpica/acpi.h>
 
@@ -257,8 +257,8 @@
 	    tmo = 1;
 
 	if (acpi_semaphore_debug) {
-	    printf("%s: Wakeup timeleft(%lu, %lu), tmo %u, sem %p, thread %d\n",
-		__func__, timelefttv.tv_sec, timelefttv.tv_usec, tmo, as,
+	    printf("%s: Wakeup timeleft(%jd, %lu), tmo %u, sem %p, thread %d\n",
+		__func__, (intmax_t)timelefttv.tv_sec, timelefttv.tv_usec, tmo, as,
 		AcpiOsGetThreadId());
 	}
     }

==== //depot/projects/arm/src/sys/dev/ata/ata-all.h#5 (text+ko) ====

@@ -25,7 +25,7 @@
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/dev/ata/ata-all.h,v 1.108 2005/11/29 20:08:26 sos Exp $
+ * $FreeBSD: src/sys/dev/ata/ata-all.h,v 1.109 2005/12/27 16:49:33 sos Exp $
  */
 
 /* ATA register defines */
@@ -323,6 +323,7 @@
 };
 
 /* structure used for composite atomic operations */
+#define MAX_COMPOSITES		32		/* u_int32_t bits */
 struct ata_composite {
     struct mtx          lock;                   /* control lock */
     u_int32_t           rd_needed;              /* needed read subdisks */
@@ -330,7 +331,7 @@
     u_int32_t           wr_needed;              /* needed write subdisks */
     u_int32_t           wr_depend;              /* write depends on subdisks */
     u_int32_t           wr_done;                /* done write subdisks */
-    struct ata_request  *request[32];           /* size must match maps above */
+    struct ata_request  *request[MAX_COMPOSITES];
     u_int32_t		residual;		/* bytes still to transfer */
     caddr_t             data_1;     
     caddr_t             data_2;     

==== //depot/projects/arm/src/sys/dev/ata/ata-chipset.c#6 (text+ko) ====

@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/ata/ata-chipset.c,v 1.141 2005/12/16 08:12:13 sos Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/ata/ata-chipset.c,v 1.145 2005/12/28 11:55:43 sos Exp $");
 
 #include "opt_ata.h"
 #include <sys/param.h>
@@ -98,6 +98,12 @@
 static void ata_intel_new_setmode(device_t dev, int mode);
 static int ata_ite_chipinit(device_t dev);
 static void ata_ite_setmode(device_t dev, int mode);
+static int ata_marvell_chipinit(device_t dev);
+static int ata_marvell_allocate(device_t dev);
+static void ata_marvell_intr(void *data);
+static void ata_marvell_dmainit(device_t dev);
+static int ata_marvell_command(struct ata_request *request);
+static void ata_marvell_reset(device_t dev);
 static int ata_national_chipinit(device_t dev);
 static void ata_national_setmode(device_t dev, int mode);
 static int ata_nvidia_chipinit(device_t dev);
@@ -2081,6 +2087,449 @@
 
 
 /*
+ * Marvell chipset support functions
+ */
+#define ATA_MV_HOST_BASE(ch) \
+	((ch->unit & 3) * 0x0100) + (ch->unit > 3 ? 0x30000 : 0x20000)
+#define ATA_MV_EDMA_BASE(ch) \
+	((ch->unit & 3) * 0x2000) + (ch->unit > 3 ? 0x30000 : 0x20000)
+
+int
+ata_marvell_ident(device_t dev)
+{
+    struct ata_pci_controller *ctlr = device_get_softc(dev);
+    struct ata_chip_id *idx;
+    static struct ata_chip_id ids[] =
+    {{ ATA_M88SX5040, 0, 4, MV5XXX, ATA_SA150, "88SX5040" },
+     { ATA_M88SX5041, 0, 4, MV5XXX, ATA_SA150, "88SX5041" },
+     { ATA_M88SX5080, 0, 8, MV5XXX, ATA_SA150, "88SX5080" },
+     { ATA_M88SX5081, 0, 8, MV5XXX, ATA_SA150, "88SX5081" },
+     { ATA_M88SX6041, 0, 4, MV6XXX, ATA_SA300, "88SX6041" },
+     { ATA_M88SX6081, 0, 8, MV6XXX, ATA_SA300, "88SX6081" },
+     { 0, 0, 0, 0, 0, 0}};
+    char buffer[64];
+
+    if (!(idx = ata_match_chip(dev, ids)))
+	return ENXIO;
+
+    sprintf(buffer, "Marvell %s %s controller",
+	    idx->text, ata_mode2str(idx->max_dma));
+    device_set_desc_copy(dev, buffer);
+    ctlr->chip = idx;
+    ctlr->chipinit = ata_marvell_chipinit;
+    return 0;
+}
+
+static int
+ata_marvell_chipinit(device_t dev)
+{
+    struct ata_pci_controller *ctlr = device_get_softc(dev);
+    int rid = ATA_IRQ_RID;
+
+    if (!(ctlr->r_irq = bus_alloc_resource_any(dev, SYS_RES_IRQ, &rid,
+					       RF_SHAREABLE | RF_ACTIVE))) {
+	device_printf(dev, "unable to map interrupt\n");
+	return ENXIO;
+    }
+
+    ctlr->r_type1 = SYS_RES_MEMORY;
+    ctlr->r_rid1 = PCIR_BAR(0);
+    if (!(ctlr->r_res1 = bus_alloc_resource_any(dev, ctlr->r_type1,
+						&ctlr->r_rid1, RF_ACTIVE)))
+	return ENXIO;
+
+    /* mask all host controller interrupts */
+    ATA_OUTL(ctlr->r_res1, 0x01d64, 0x00000000);
+
+    /* mask all PCI interrupts */
+    ATA_OUTL(ctlr->r_res1, 0x01d5c, 0x00000000);
+
+    ctlr->reset = ata_marvell_reset;
+    ctlr->dmainit = ata_marvell_dmainit;
+    ctlr->allocate = ata_marvell_allocate;
+    ctlr->setmode = ata_sata_setmode;
+    ctlr->channels = ctlr->chip->cfg1;
+
+    if ((bus_setup_intr(dev, ctlr->r_irq, ATA_INTR_FLAGS,
+			ata_marvell_intr, ctlr, &ctlr->handle))) {
+	device_printf(dev, "unable to setup interrupt\n");
+	return ENXIO;
+    }
+
+    /* clear host controller interrupts */
+    ATA_OUTL(ctlr->r_res1, 0x20014, 0x00000000);
+    if (ctlr->chip->cfg1 > 4)
+	ATA_OUTL(ctlr->r_res1, 0x30014, 0x00000000);
+
+    /* clear PCI interrupts */
+    ATA_OUTL(ctlr->r_res1, 0x01d58, 0x00000000);
+
+    /* unmask PCI interrupts we want */
+    ATA_OUTL(ctlr->r_res1, 0x01d5c, 0x007fffff);
+
+    /* unmask host controller interrupts we want */
+    ATA_OUTL(ctlr->r_res1, 0x01d64, 0x000000ff/*HC0*/ | 0x0001fe00/*HC1*/ |
+	     /*(1<<19) | (1<<20) | (1<<21) |*/(1<<22) | (1<<24) | (0x7f << 25));
+
+    pci_write_config(dev, PCIR_COMMAND,
+		     pci_read_config(dev, PCIR_COMMAND, 2) & ~0x0400, 2);
+    return 0;
+}
+
+static int
+ata_marvell_allocate(device_t dev)
+{
+    struct ata_pci_controller *ctlr = device_get_softc(device_get_parent(dev));
+    struct ata_channel *ch = device_get_softc(dev);
+    bus_addr_t wordp = ch->dma->work_bus;
+    int i;
+
+    /* set legacy ATA resources */
+    for (i = ATA_DATA; i <= ATA_COMMAND; i++) {
+	ch->r_io[i].res = ctlr->r_res1;
+	ch->r_io[i].offset = 0x02100 + (i << 2) + ATA_MV_EDMA_BASE(ch);
+    }
+    ch->r_io[ATA_CONTROL].res = ctlr->r_res1;
+    ch->r_io[ATA_CONTROL].offset = 0x02120 + ATA_MV_EDMA_BASE(ch);
+    ch->r_io[ATA_IDX_ADDR].res = ctlr->r_res1;
+    ata_default_registers(dev);
+
+    /* set SATA resources */
+    switch (ctlr->chip->cfg2) {
+    case MV5XXX:
+	ch->r_io[ATA_SSTATUS].res = ctlr->r_res1;
+	ch->r_io[ATA_SSTATUS].offset =  0x00100 + ATA_MV_HOST_BASE(ch);
+	ch->r_io[ATA_SERROR].res = ctlr->r_res1;
+	ch->r_io[ATA_SERROR].offset = 0x00104 + ATA_MV_HOST_BASE(ch);
+	ch->r_io[ATA_SCONTROL].res = ctlr->r_res1;
+	ch->r_io[ATA_SCONTROL].offset = 0x00108 + ATA_MV_HOST_BASE(ch);
+	break;
+    case MV6XXX:
+	ch->r_io[ATA_SSTATUS].res = ctlr->r_res1;
+	ch->r_io[ATA_SSTATUS].offset =  0x02300 + ATA_MV_EDMA_BASE(ch);
+	ch->r_io[ATA_SERROR].res = ctlr->r_res1;
+	ch->r_io[ATA_SERROR].offset = 0x02304 + ATA_MV_EDMA_BASE(ch);
+	ch->r_io[ATA_SCONTROL].res = ctlr->r_res1;
+	ch->r_io[ATA_SCONTROL].offset = 0x02308 + ATA_MV_EDMA_BASE(ch);
+	ch->r_io[ATA_SACTIVE].res = ctlr->r_res1;
+	ch->r_io[ATA_SACTIVE].offset = 0x02350 + ATA_MV_EDMA_BASE(ch);
+	break;
+    }
+
+    ch->flags |= ATA_NO_SLAVE;
+    ch->flags |= ATA_USE_16BIT; /* XXX SOS needed ? */
+    ata_generic_hw(dev);
+    ch->hw.command = ata_marvell_command;
+
+    /* disable the EDMA machinery */
+    ATA_OUTL(ctlr->r_res1, 0x02028 + ATA_MV_EDMA_BASE(ch), 0x00000002);
+    DELAY(100000);       /* SOS should poll for disabled */
+
+    /* set configuration to non-queued 128b read transfers stop on error */
+    ATA_OUTL(ctlr->r_res1, 0x02000 + ATA_MV_EDMA_BASE(ch), (1<<11) | (1<<13));
+
+    /* request queue base high */
+    ATA_OUTL(ctlr->r_res1, 0x02010 + ATA_MV_EDMA_BASE(ch), (wordp >> 16) >> 16);
+
+    /* request queue in ptr */
+    ATA_OUTL(ctlr->r_res1, 0x02014 + ATA_MV_EDMA_BASE(ch), wordp & 0xffffffff);
+
+    /* request queue out ptr */
+    ATA_OUTL(ctlr->r_res1, 0x02018 + ATA_MV_EDMA_BASE(ch), 0x0);
+
+    /* response queue base high */
+    wordp += 1024;
+    ATA_OUTL(ctlr->r_res1, 0x0201c + ATA_MV_EDMA_BASE(ch), (wordp >> 16) >> 16);
+
+    /* response queue in ptr */
+    ATA_OUTL(ctlr->r_res1, 0x02020 + ATA_MV_EDMA_BASE(ch), 0x0);
+
+    /* response queue out ptr */
+    ATA_OUTL(ctlr->r_res1, 0x02024 + ATA_MV_EDMA_BASE(ch), wordp & 0xffffffff);
+
+    /* clear SATA error register */
+    ATA_IDX_OUTL(ch, ATA_SERROR, ATA_IDX_INL(ch, ATA_SERROR));
+
+    /* clear any outstanding error interrupts */
+    ATA_OUTL(ctlr->r_res1, 0x02008 + ATA_MV_EDMA_BASE(ch), 0x0);
+
+    /* unmask all error interrupts */
+    ATA_OUTL(ctlr->r_res1, 0x0200c + ATA_MV_EDMA_BASE(ch), ~0x0);
+    
+    /* enable EDMA machinery */
+    ATA_OUTL(ctlr->r_res1, 0x02028 + ATA_MV_EDMA_BASE(ch), 0x00000001);
+    return 0;
+}
+
+struct ata_marvell_response {
+    u_int16_t	tag;
+    u_int8_t	edma_status;
+    u_int8_t	dev_status;
+    u_int32_t	timestamp;
+};
+
+static void
+ata_marvell_intr(void *data)
+{
+    struct ata_pci_controller *ctlr = data;
+    struct ata_channel *ch;
+    struct ata_request *request;
+    struct ata_marvell_response *response;
+    u_int32_t cause, icr0 = 0, icr1 = 0;
+    int unit;
+
+    cause = ATA_INL(ctlr->r_res1, 0x01d60);
+    if ((icr0 = ATA_INL(ctlr->r_res1, 0x20014)))
+	ATA_OUTL(ctlr->r_res1, 0x20014, ~icr0);
+    if (ctlr->channels > 4) {
+	if ((icr1 = ATA_INL(ctlr->r_res1, 0x30014)))
+	    ATA_OUTL(ctlr->r_res1, 0x30014, ~icr1);
+    }
+
+    for (unit = 0; unit < ctlr->channels; unit++) {
+        u_int32_t icr;
+	int shift;
+
+	if (!(ch = ctlr->interrupt[unit].argument))
+	    continue;
+
+	mtx_lock(&ch->state_mtx);
+	shift = unit << 1;
+	if (ch->unit < 4) 
+	    icr = icr0;
+	else {
+	    icr = icr1;
+	    shift++;
+	}
+
+	/* do we have any errors flagged ? */
+	if (cause & (1 << shift)) {
+	    /* clear SATA error register */
+	    ATA_IDX_OUTL(ch, ATA_SERROR, ATA_IDX_INL(ch, ATA_SERROR));
+
+	    /* clear any outstanding error interrupts */
+	    ATA_OUTL(ctlr->r_res1, 0x02008 + ATA_MV_EDMA_BASE(ch), 0x0);
+	}
+
+	/* EDMA interrupt */
+	if ((icr & (0x0001 << (unit & 3))) && (request = ch->running)) {
+	    u_int32_t rsp_in, rsp_out;
+	    int slot;
+
+	    request->dmastat = ch->dma->stop(request->dev);
+	    ch->dma->unload(ch->dev);
+	    callout_stop(&request->callout);
+
+	    /* get response ptr's */
+	    rsp_in = ATA_INL(ctlr->r_res1, 0x02020 + ATA_MV_EDMA_BASE(ch));
+    	    rsp_out = ATA_INL(ctlr->r_res1, 0x02024 + ATA_MV_EDMA_BASE(ch));
+	    slot = (((rsp_in & ~0xffffff00) >> 3)) & 0x1f;
+	    rsp_out &= 0xffffff00;
+	    rsp_out += (slot << 3);
+	    response = (struct ata_marvell_response *)
+		(u_int8_t *)(ch->dma->work) + 1024 + (slot << 3);
+
+	    /* record status for this request */
+	    request->status = response->dev_status;
+	    request->error = 0; 
+
+	    /* ack response */
+    	    ATA_OUTL(ctlr->r_res1, 0x02024 + ATA_MV_EDMA_BASE(ch), rsp_out);
+
+	    /* update progress */
+	    if (!(request->status & ATA_S_ERROR) &&
+		!(request->flags & ATA_R_TIMEOUT))
+	        request->donecount = request->bytecount;
+
+	    /* finish up this request */
+	    ch->running = NULL;
+	    if (ch->state == ATA_ACTIVE)
+                ch->state = ATA_IDLE;
+            mtx_unlock(&ch->state_mtx);
+            ATA_LOCKING(ch->dev, ATA_LF_UNLOCK);
+	    ata_finish(request);
+        }
+
+	/* legacy ATA interrupt */
+	else if (icr & (0x0100 << (unit & 3))) {
+	    mtx_unlock(&ch->state_mtx);
+	    ctlr->interrupt[unit].function(ch);
+	}
+
+	/* no device action to handle */
+	else {
+	    mtx_unlock(&ch->state_mtx);
+	}
+    }
+}
+
+struct ata_marvell_dma_prdentry {
+    u_int32_t addrlo;
+    u_int32_t count;
+    u_int32_t addrhi;
+    u_int32_t reserved;
+};  
+
+static void
+ata_marvell_dmasetprd(void *xsc, bus_dma_segment_t *segs, int nsegs, int error)
+{
+    struct ata_dmasetprd_args *args = xsc;
+    struct ata_marvell_dma_prdentry *prd = args->dmatab;
+    int i;
+
+    if ((args->error = error))
+	return;
+
+    for (i = 0; i < nsegs; i++) {
+	prd[i].addrlo = htole32(segs[i].ds_addr);
+	prd[i].addrhi = 0;
+	prd[i].count = htole32(segs[i].ds_len);
+    }
+    prd[i - 1].count |= htole32(ATA_DMA_EOT);
+}
+
+static int
+ata_marvell_dmastart(device_t dev)
+{
+    struct ata_channel *ch = device_get_softc(device_get_parent(dev));
+
+    ch->flags |= ATA_DMA_ACTIVE;
+    return 0;
+}
+
+static int
+ata_marvell_dmastop(device_t dev)
+{
+    struct ata_channel *ch = device_get_softc(device_get_parent(dev));
+
+    ch->flags &= ~ATA_DMA_ACTIVE;
+
+    /* get status XXX SOS */
+    return 0;
+}
+
+static void
+ata_marvell_dmainit(device_t dev)
+{
+    struct ata_channel *ch = device_get_softc(dev);
+
+    ata_dmainit(dev);
+    if (ch->dma) {
+        ch->dma->start = ata_marvell_dmastart;
+        ch->dma->stop = ata_marvell_dmastop;
+        ch->dma->setprd = ata_marvell_dmasetprd;
+    }
+}
+
+static int
+ata_marvell_command(struct ata_request *request)
+{
+    struct ata_pci_controller *ctlr=device_get_softc(GRANDPARENT(request->dev));
+    struct ata_channel *ch = device_get_softc(device_get_parent(request->dev));
+    u_int32_t req_in;
+    u_int8_t *bytep;
+    u_int16_t *wordp;
+    u_int32_t *quadp;
+    int i, tag = 0x07;
+    int slot;
+
+    /* only DMA R/W goes through the EMDA machine */
+    if (request->u.ata.command != ATA_READ_DMA &&
+        request->u.ata.command != ATA_READ_DMA48 &&
+	request->u.ata.command != ATA_WRITE_DMA &&
+	request->u.ata.command != ATA_WRITE_DMA48) {
+
+        /* disable the EDMA machinery */
+        if (ATA_INL(ctlr->r_res1, 0x02028 + ATA_MV_EDMA_BASE(ch)) & 0x00000001)
+	    ATA_OUTL(ctlr->r_res1, 0x02028 + ATA_MV_EDMA_BASE(ch), 0x00000002);
+	return ata_generic_command(request);
+    }
+
+    /* get next free request queue slot */
+    req_in = ATA_INL(ctlr->r_res1, 0x02014 + ATA_MV_EDMA_BASE(ch));
+    slot = (((req_in & ~0xfffffc00) >> 5) + 0) & 0x1f;
+    bytep = (u_int8_t *)(ch->dma->work);
+    bytep += (slot << 5);
+    wordp = (u_int16_t *)bytep;
+    quadp = (u_int32_t *)bytep;
+
+    /* fill in this request */
+    quadp[0] = (long)ch->dma->sg_bus & 0xffffffff;
+    quadp[1] = (ch->dma->sg_bus & 0xffffffff00000000) >> 32;
+    wordp[4] = (request->flags & ATA_R_READ ? 0x01 : 0x00) | (tag<<1);
+
+    i = 10;
+    bytep[i++] = (request->u.ata.count >> 8) & 0xff;
+    bytep[i++] = 0x10 | ATA_COUNT;
+    bytep[i++] = request->u.ata.count & 0xff;
+    bytep[i++] = 0x10 | ATA_COUNT;
+
+    bytep[i++] = (request->u.ata.lba >> 24) & 0xff;
+    bytep[i++] = 0x10 | ATA_SECTOR;
+    bytep[i++] = request->u.ata.lba & 0xff;
+    bytep[i++] = 0x10 | ATA_SECTOR;
+
+    bytep[i++] = (request->u.ata.lba >> 32) & 0xff;
+    bytep[i++] = 0x10 | ATA_CYL_LSB;
+    bytep[i++] = (request->u.ata.lba >> 8) & 0xff;
+    bytep[i++] = 0x10 | ATA_CYL_LSB;
+
+    bytep[i++] = (request->u.ata.lba >> 40) & 0xff;
+    bytep[i++] = 0x10 | ATA_CYL_MSB;
+    bytep[i++] = (request->u.ata.lba >> 16) & 0xff;
+    bytep[i++] = 0x10 | ATA_CYL_MSB;
+
+    bytep[i++] = ATA_D_LBA | ATA_D_IBM | ((request->u.ata.lba >> 24) & 0xf);
+    bytep[i++] = 0x10 | ATA_DRIVE;
+    bytep[i++] = request->u.ata.command;
+    bytep[i++] = 0x90 | ATA_COMMAND;
+
+    /* enable EDMA machinery if needed */
+    if (!(ATA_INL(ctlr->r_res1, 0x02028 + ATA_MV_EDMA_BASE(ch)) & 0x00000001)) {
+	ATA_OUTL(ctlr->r_res1, 0x02028 + ATA_MV_EDMA_BASE(ch), 0x00000001);
+	while (!(ATA_INL(ctlr->r_res1,
+			 0x02028 + ATA_MV_EDMA_BASE(ch)) & 0x00000001))
+	    DELAY(10);
+    }
+
+    /* tell EDMA it has a new request */
+    slot = (((req_in & ~0xfffffc00) >> 5) + 1) & 0x1f;
+    req_in &= 0xfffffc00;
+    req_in += (slot << 5);
+    ATA_OUTL(ctlr->r_res1, 0x02014 + ATA_MV_EDMA_BASE(ch), req_in);
+   
+    return 0;
+}
+
+static void
+ata_marvell_reset(device_t dev)
+{
+    struct ata_pci_controller *ctlr = device_get_softc(device_get_parent(dev));
+    struct ata_channel *ch = device_get_softc(dev);
+
+    /* disable the EDMA machinery */
+    ATA_OUTL(ctlr->r_res1, 0x02028 + ATA_MV_EDMA_BASE(ch), 0x00000002);
+    while ((ATA_INL(ctlr->r_res1, 0x02028 + ATA_MV_EDMA_BASE(ch)) & 0x00000001))
+	DELAY(10);
+
+    /* clear SATA error register */
+    ATA_IDX_OUTL(ch, ATA_SERROR, ATA_IDX_INL(ch, ATA_SERROR));
+
+    /* clear any outstanding error interrupts */
+    ATA_OUTL(ctlr->r_res1, 0x02008 + ATA_MV_EDMA_BASE(ch), 0x0);
+
+    /* unmask all error interrupts */
+    ATA_OUTL(ctlr->r_res1, 0x0200c + ATA_MV_EDMA_BASE(ch), ~0x0);
+
+    /* enable channel and test for devices */
+    ata_sata_phy_enable(ch);
+
+    /* enable EDMA machinery */
+    ATA_OUTL(ctlr->r_res1, 0x02028 + ATA_MV_EDMA_BASE(ch), 0x00000001);
+}
+
+
+/*
  * National chipset support functions
  */
 int

==== //depot/projects/arm/src/sys/dev/ata/ata-pci.c#3 (text+ko) ====

@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/ata/ata-pci.c,v 1.107 2005/10/31 15:41:18 rwatson Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/ata/ata-pci.c,v 1.109 2005/12/27 18:22:11 sos Exp $");
 
 #include "opt_ata.h"
 #include <sys/param.h>
@@ -58,6 +58,7 @@
 
 /* misc defines */
 #define IOMASK                  0xfffffffc
+#define ATA_PROBE_OK		-10
 
 /* prototypes */
 static void ata_pci_dmainit(device_t);
@@ -80,73 +81,77 @@
     switch (pci_get_vendor(dev)) {
     case ATA_ACARD_ID: 
 	if (!ata_acard_ident(dev))
-	    return 0;
+	    return ATA_PROBE_OK;
 	break;
     case ATA_ACER_LABS_ID:
 	if (!ata_ali_ident(dev))
-	    return 0;
+	    return ATA_PROBE_OK;
 	break;
     case ATA_AMD_ID:
 	if (!ata_amd_ident(dev))

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

From owner-p4-projects@FreeBSD.ORG  Thu Dec 29 16:12:22 2005
Return-Path: <owner-p4-projects@FreeBSD.ORG>
X-Original-To: p4-projects@freebsd.org
Delivered-To: p4-projects@freebsd.org
Received: by hub.freebsd.org (Postfix, from userid 32767)
	id BD11916A423; Thu, 29 Dec 2005 16:12:21 +0000 (GMT)
X-Original-To: perforce@freebsd.org
Delivered-To: perforce@freebsd.org
Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125])
	by hub.freebsd.org (Postfix) with ESMTP id 5C8AB16A420
	for <perforce@freebsd.org>; Thu, 29 Dec 2005 16:12:21 +0000 (GMT)
	(envelope-from jhb@freebsd.org)
Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115])
	by mx1.FreeBSD.org (Postfix) with ESMTP id 9ED1143D5E
	for <perforce@freebsd.org>; Thu, 29 Dec 2005 16:12:07 +0000 (GMT)
	(envelope-from jhb@freebsd.org)
Received: from repoman.freebsd.org (localhost [127.0.0.1])
	by repoman.freebsd.org (8.13.1/8.13.1) with ESMTP id jBTGC3bv056397
	for <perforce@freebsd.org>; Thu, 29 Dec 2005 16:12:03 GMT
	(envelope-from jhb@freebsd.org)
Received: (from perforce@localhost)
	by repoman.freebsd.org (8.13.1/8.13.1/Submit) id jBTGC3Um056394
	for perforce@freebsd.org; Thu, 29 Dec 2005 16:12:03 GMT
	(envelope-from jhb@freebsd.org)
Date: Thu, 29 Dec 2005 16:12:03 GMT
Message-Id: <200512291612.jBTGC3Um056394@repoman.freebsd.org>
X-Authentication-Warning: repoman.freebsd.org: perforce set sender to
	jhb@freebsd.org using -f
From: John Baldwin <jhb@FreeBSD.org>
To: Perforce Change Reviews <perforce@freebsd.org>
Cc: 
Subject: PERFORCE change 88882 for review
X-BeenThere: p4-projects@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: p4 projects tree changes <p4-projects.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/p4-projects>,
	<mailto:p4-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/p4-projects>
List-Post: <mailto:p4-projects@freebsd.org>
List-Help: <mailto:p4-projects-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/p4-projects>,
	<mailto:p4-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Thu, 29 Dec 2005 16:12:22 -0000

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

Change 88882 by jhb@jhb_slimer on 2005/12/29 16:11:02

	WITNESS_SAVE/RESTORE doesn't work yet for spin locks.

Affected files ...

.. //depot/projects/smpng/sys/kern/kern_synch.c#94 edit

Differences ...

==== //depot/projects/smpng/sys/kern/kern_synch.c#94 (text+ko) ====

@@ -251,7 +251,9 @@
 	struct thread *td;
 	struct proc *p;
 	int rval;
+#if 0
 	WITNESS_SAVE_DECL(mtx);
+#endif
 
 	td = curthread;
 	p = td->td_proc;
@@ -277,7 +279,9 @@
 
 	DROP_GIANT();
 	mtx_assert(mtx, MA_OWNED | MA_NOTRECURSED);
+#if 0
 	WITNESS_SAVE(&mtx->mtx_object, mtx);
+#endif
 	mtx_unlock_spin(mtx);
 
 	/*
@@ -319,7 +323,9 @@
 #endif
 	PICKUP_GIANT();
 	mtx_lock_spin(mtx);
+#if 0
 	WITNESS_RESTORE(&mtx->mtx_object, mtx);
+#endif
 	return (rval);
 }
 

From owner-p4-projects@FreeBSD.ORG  Thu Dec 29 18:35:18 2005
Return-Path: <owner-p4-projects@FreeBSD.ORG>
X-Original-To: p4-projects@freebsd.org
Delivered-To: p4-projects@freebsd.org
Received: by hub.freebsd.org (Postfix, from userid 32767)
	id 38D2616A429; Thu, 29 Dec 2005 18:35:17 +0000 (GMT)
X-Original-To: perforce@freebsd.org
Delivered-To: perforce@freebsd.org
Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125])
	by hub.freebsd.org (Postfix) with ESMTP id D98A516A423
	for <perforce@freebsd.org>; Thu, 29 Dec 2005 18:35:16 +0000 (GMT)
	(envelope-from jhb@freebsd.org)
Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115])
	by mx1.FreeBSD.org (Postfix) with ESMTP id 351BE43D5D
	for <perforce@freebsd.org>; Thu, 29 Dec 2005 18:35:05 +0000 (GMT)
	(envelope-from jhb@freebsd.org)
Received: from repoman.freebsd.org (localhost [127.0.0.1])
	by repoman.freebsd.org (8.13.1/8.13.1) with ESMTP id jBTIZ0bt069661
	for <perforce@freebsd.org>; Thu, 29 Dec 2005 18:35:00 GMT
	(envelope-from jhb@freebsd.org)
Received: (from perforce@localhost)
	by repoman.freebsd.org (8.13.1/8.13.1/Submit) id jBTIZ0Am069658
	for perforce@freebsd.org; Thu, 29 Dec 2005 18:35:00 GMT
	(envelope-from jhb@freebsd.org)
Date: Thu, 29 Dec 2005 18:35:00 GMT
Message-Id: <200512291835.jBTIZ0Am069658@repoman.freebsd.org>
X-Authentication-Warning: repoman.freebsd.org: perforce set sender to
	jhb@freebsd.org using -f
From: John Baldwin <jhb@FreeBSD.org>
To: Perforce Change Reviews <perforce@freebsd.org>
Cc: 
Subject: PERFORCE change 88893 for review
X-BeenThere: p4-projects@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: p4 projects tree changes <p4-projects.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/p4-projects>,
	<mailto:p4-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/p4-projects>
List-Post: <mailto:p4-projects@freebsd.org>
List-Help: <mailto:p4-projects-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/p4-projects>,
	<mailto:p4-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Thu, 29 Dec 2005 18:35:18 -0000

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

Change 88893 by jhb@jhb_slimer on 2005/12/29 18:34:03

	Actually lock the mutex, duh.

Affected files ...

.. //depot/projects/smpng/sys/modules/crash/crash.c#27 edit

Differences ...

==== //depot/projects/smpng/sys/modules/crash/crash.c#27 (text+ko) ====

@@ -97,6 +97,7 @@
 
 	bzero(&test1_mtx, sizeof(test1_mtx));
 	mtx_init(&test1_mtx, "test1", NULL, MTX_SPIN);
+	mtx_lock_spin(&test1_mtx);
 	error = msleep_spin(&test1_mtx, &test1_mtx, "spincr", 5);
 	printf("msleep_spin returned %d\n", error);
 	kdb_enter("timed out");
@@ -104,6 +105,7 @@
 	error = msleep_spin(&test1_mtx, &test1_mtx, "spincr2", 0);
 	printf("msleep_spin returned %d\n", error);
 	kdb_enter("awoke from spin");
+	mtx_unlock_spin(&test1_mtx);
 	mtx_destroy(&test1_mtx);
 }
 CRASH_EVENT("msleep_spin", msleep_spin_test);

From owner-p4-projects@FreeBSD.ORG  Thu Dec 29 19:36:25 2005
Return-Path: <owner-p4-projects@FreeBSD.ORG>
X-Original-To: p4-projects@freebsd.org
Delivered-To: p4-projects@freebsd.org
Received: by hub.freebsd.org (Postfix, from userid 32767)
	id E4D3816A422; Thu, 29 Dec 2005 19:36:24 +0000 (GMT)
X-Original-To: perforce@freebsd.org
Delivered-To: perforce@freebsd.org
Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125])
	by hub.freebsd.org (Postfix) with ESMTP id BAD3316A41F
	for <perforce@freebsd.org>; Thu, 29 Dec 2005 19:36:24 +0000 (GMT)
	(envelope-from jhb@freebsd.org)
Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115])
	by mx1.FreeBSD.org (Postfix) with ESMTP id B600543D60
	for <perforce@freebsd.org>; Thu, 29 Dec 2005 19:36:23 +0000 (GMT)
	(envelope-from jhb@freebsd.org)
Received: from repoman.freebsd.org (localhost [127.0.0.1])
	by repoman.freebsd.org (8.13.1/8.13.1) with ESMTP id jBTJaNPF072223
	for <perforce@freebsd.org>; Thu, 29 Dec 2005 19:36:23 GMT
	(envelope-from jhb@freebsd.org)
Received: (from perforce@localhost)
	by repoman.freebsd.org (8.13.1/8.13.1/Submit) id jBTJaNVi072220
	for perforce@freebsd.org; Thu, 29 Dec 2005 19:36:23 GMT
	(envelope-from jhb@freebsd.org)
Date: Thu, 29 Dec 2005 19:36:23 GMT
Message-Id: <200512291936.jBTJaNVi072220@repoman.freebsd.org>
X-Authentication-Warning: repoman.freebsd.org: perforce set sender to
	jhb@freebsd.org using -f
From: John Baldwin <jhb@FreeBSD.org>
To: Perforce Change Reviews <perforce@freebsd.org>
Cc: 
Subject: PERFORCE change 88897 for review
X-BeenThere: p4-projects@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: p4 projects tree changes <p4-projects.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/p4-projects>,
	<mailto:p4-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/p4-projects>
List-Post: <mailto:p4-projects@freebsd.org>
List-Help: <mailto:p4-projects-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/p4-projects>,
	<mailto:p4-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Thu, 29 Dec 2005 19:36:25 -0000

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

Change 88897 by jhb@jhb_slimer on 2005/12/29 19:35:53

	Support spinlocks in witness_save and witness_restore and turn that
	part of msleep_spin() back on.

Affected files ...

.. //depot/projects/smpng/sys/kern/kern_synch.c#95 edit
.. //depot/projects/smpng/sys/kern/subr_witness.c#144 edit

Differences ...

==== //depot/projects/smpng/sys/kern/kern_synch.c#95 (text+ko) ====

@@ -251,9 +251,7 @@
 	struct thread *td;
 	struct proc *p;
 	int rval;
-#if 0
 	WITNESS_SAVE_DECL(mtx);
-#endif
 
 	td = curthread;
 	p = td->td_proc;
@@ -279,9 +277,7 @@
 
 	DROP_GIANT();
 	mtx_assert(mtx, MA_OWNED | MA_NOTRECURSED);
-#if 0
 	WITNESS_SAVE(&mtx->mtx_object, mtx);
-#endif
 	mtx_unlock_spin(mtx);
 
 	/*
@@ -323,9 +319,7 @@
 #endif
 	PICKUP_GIANT();
 	mtx_lock_spin(mtx);
-#if 0
 	WITNESS_RESTORE(&mtx->mtx_object, mtx);
-#endif
 	return (rval);
 }
 

==== //depot/projects/smpng/sys/kern/subr_witness.c#144 (text+ko) ====

@@ -1805,15 +1805,20 @@
 void
 witness_save(struct lock_object *lock, const char **filep, int *linep)
 {
+	struct lock_list_entry *lock_list;
 	struct lock_instance *instance;
 
 	KASSERT(!witness_cold, ("%s: witness_cold", __func__));
 	if (lock->lo_witness == NULL || witness_watch == 0 || panicstr != NULL)
 		return;
-	if ((lock->lo_class->lc_flags & LC_SLEEPLOCK) == 0)
-		panic("%s: lock (%s) %s is not a sleep lock", __func__,
-		    lock->lo_class->lc_name, lock->lo_name);
-	instance = find_instance(curthread->td_sleeplocks, lock);
+	if (lock->lo_class->lc_flags & LC_SLEEPLOCK)
+		lock_list = curthread->td_sleeplocks;
+	else {
+		if (witness_skipspin)
+			return;
+		lock_list = PCPU_GET(spinlocks);
+	}
+	instance = find_instance(lock_list, lock);
 	if (instance == NULL)
 		panic("%s: lock (%s) %s not locked", __func__,
 		    lock->lo_class->lc_name, lock->lo_name);
@@ -1824,15 +1829,20 @@
 void
 witness_restore(struct lock_object *lock, const char *file, int line)
 {
+	struct lock_list_entry *lock_list;
 	struct lock_instance *instance;
 
 	KASSERT(!witness_cold, ("%s: witness_cold", __func__));
 	if (lock->lo_witness == NULL || witness_watch == 0 || panicstr != NULL)
 		return;
-	if ((lock->lo_class->lc_flags & LC_SLEEPLOCK) == 0)
-		panic("%s: lock (%s) %s is not a sleep lock", __func__,
-		    lock->lo_class->lc_name, lock->lo_name);
-	instance = find_instance(curthread->td_sleeplocks, lock);
+	if (lock->lo_class->lc_flags & LC_SLEEPLOCK)
+		lock_list = curthread->td_sleeplocks;
+	else {
+		if (witness_skipspin)
+			return;
+		lock_list = PCPU_GET(spinlocks);
+	}
+	instance = find_instance(lock_list, lock);
 	if (instance == NULL)
 		panic("%s: lock (%s) %s not locked", __func__,
 		    lock->lo_class->lc_name, lock->lo_name);

From owner-p4-projects@FreeBSD.ORG  Thu Dec 29 20:06:17 2005
Return-Path: <owner-p4-projects@FreeBSD.ORG>
X-Original-To: p4-projects@freebsd.org
Delivered-To: p4-projects@freebsd.org
Received: by hub.freebsd.org (Postfix, from userid 32767)
	id EC6B016A422; Thu, 29 Dec 2005 20:06:16 +0000 (GMT)
X-Original-To: perforce@freebsd.org
Delivered-To: perforce@freebsd.org
Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125])
	by hub.freebsd.org (Postfix) with ESMTP id BE45D16A41F
	for <perforce@freebsd.org>; Thu, 29 Dec 2005 20:06:16 +0000 (GMT)
	(envelope-from jhb@freebsd.org)
Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115])
	by mx1.FreeBSD.org (Postfix) with ESMTP id AA17643D70
	for <perforce@freebsd.org>; Thu, 29 Dec 2005 20:06:00 +0000 (GMT)
	(envelope-from jhb@freebsd.org)
Received: from repoman.freebsd.org (localhost [127.0.0.1])
	by repoman.freebsd.org (8.13.1/8.13.1) with ESMTP id jBTK5xv2073611
	for <perforce@freebsd.org>; Thu, 29 Dec 2005 20:05:59 GMT
	(envelope-from jhb@freebsd.org)
Received: (from perforce@localhost)
	by repoman.freebsd.org (8.13.1/8.13.1/Submit) id jBTK5xIf073608
	for perforce@freebsd.org; Thu, 29 Dec 2005 20:05:59 GMT
	(envelope-from jhb@freebsd.org)
Date: Thu, 29 Dec 2005 20:05:59 GMT
Message-Id: <200512292005.jBTK5xIf073608@repoman.freebsd.org>
X-Authentication-Warning: repoman.freebsd.org: perforce set sender to
	jhb@freebsd.org using -f
From: John Baldwin <jhb@FreeBSD.org>
To: Perforce Change Reviews <perforce@freebsd.org>
Cc: 
Subject: PERFORCE change 88898 for review
X-BeenThere: p4-projects@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: p4 projects tree changes <p4-projects.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/p4-projects>,
	<mailto:p4-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/p4-projects>
List-Post: <mailto:p4-projects@freebsd.org>
List-Help: <mailto:p4-projects-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/p4-projects>,
	<mailto:p4-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Thu, 29 Dec 2005 20:06:18 -0000

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

Change 88898 by jhb@jhb_slimer on 2005/12/29 20:05:30

	You can't call printf while holding the witness mutex or you can
	trigger a deadlock (which I've reproduced several times today ;-P)
	with the spin locks used in console drivers.  Fix the one printf
	I recently added which had this bug.

Affected files ...

.. //depot/projects/smpng/sys/kern/subr_witness.c#145 edit

Differences ...

==== //depot/projects/smpng/sys/kern/subr_witness.c#145 (text+ko) ====

@@ -1409,18 +1409,8 @@
 			return (w);
 		}
 	}
-	/*
-	 * We issue a warning for any spin locks not defined in the static
-	 * order list as a way to discourage their use (folks should really
-	 * be using non-spin mutexes most of the time).  However, several
-	 * 3rd part device drivers use spin locks because that is all they
-	 * have available on Windows and Linux and they think that normal
-	 * mutexes are insufficient.
-	 */
-	if ((lock_class->lc_flags & LC_SPINLOCK) && witness_spin_warn)
-		printf("WITNESS: spin lock %s not in order list", description);
 	if ((w = witness_get()) == NULL)
-		return (NULL);
+		goto out;
 	w->w_name = description;
 	w->w_class = lock_class;
 	w->w_refcount = 1;
@@ -1437,6 +1427,17 @@
 		    lock_class->lc_name);
 	}
 	mtx_unlock_spin(&w_mtx);
+out:
+	/*
+	 * We issue a warning for any spin locks not defined in the static
+	 * order list as a way to discourage their use (folks should really
+	 * be using non-spin mutexes most of the time).  However, several
+	 * 3rd part device drivers use spin locks because that is all they
+	 * have available on Windows and Linux and they think that normal
+	 * mutexes are insufficient.
+	 */
+	if ((lock_class->lc_flags & LC_SPINLOCK) && witness_spin_warn)
+		printf("WITNESS: spin lock %s not in order list", description);
 	return (w);
 }
 
@@ -1988,7 +1989,7 @@
 		FOREACH_THREAD_IN_PROC(p, td) {
 			if (!witness_thread_has_locks(td))
 				continue;
-			printf("Process %d (%s) thread %p (%d)\n", p->p_pid,
+			db_printf("Process %d (%s) thread %p (%d)\n", p->p_pid,
 			    p->p_comm, td, td->td_tid);
 			witness_list(td);
 		}

From owner-p4-projects@FreeBSD.ORG  Thu Dec 29 20:43:47 2005
Return-Path: <owner-p4-projects@FreeBSD.ORG>
X-Original-To: p4-projects@freebsd.org
Delivered-To: p4-projects@freebsd.org
Received: by hub.freebsd.org (Postfix, from userid 32767)
	id A43C816A422; Thu, 29 Dec 2005 20:43:46 +0000 (GMT)
X-Original-To: perforce@freebsd.org
Delivered-To: perforce@freebsd.org
Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125])
	by hub.freebsd.org (Postfix) with ESMTP id 6274316A41F
	for <perforce@freebsd.org>; Thu, 29 Dec 2005 20:43:46 +0000 (GMT)
	(envelope-from jhb@freebsd.org)
Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115])
	by mx1.FreeBSD.org (Postfix) with ESMTP id 1625243D75
	for <perforce@freebsd.org>; Thu, 29 Dec 2005 20:43:46 +0000 (GMT)
	(envelope-from jhb@freebsd.org)
Received: from repoman.freebsd.org (localhost [127.0.0.1])
	by repoman.freebsd.org (8.13.1/8.13.1) with ESMTP id jBTKhjUE075002
	for <perforce@freebsd.org>; Thu, 29 Dec 2005 20:43:45 GMT
	(envelope-from jhb@freebsd.org)
Received: (from perforce@localhost)
	by repoman.freebsd.org (8.13.1/8.13.1/Submit) id jBTKhjah074999
	for perforce@freebsd.org; Thu, 29 Dec 2005 20:43:45 GMT
	(envelope-from jhb@freebsd.org)
Date: Thu, 29 Dec 2005 20:43:45 GMT
Message-Id: <200512292043.jBTKhjah074999@repoman.freebsd.org>
X-Authentication-Warning: repoman.freebsd.org: perforce set sender to
	jhb@freebsd.org using -f
From: John Baldwin <jhb@FreeBSD.org>
To: Perforce Change Reviews <perforce@freebsd.org>
Cc: 
Subject: PERFORCE change 88900 for review
X-BeenThere: p4-projects@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: p4 projects tree changes <p4-projects.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/p4-projects>,
	<mailto:p4-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/p4-projects>
List-Post: <mailto:p4-projects@freebsd.org>
List-Help: <mailto:p4-projects-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/p4-projects>,
	<mailto:p4-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Thu, 29 Dec 2005 20:43:47 -0000

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

Change 88900 by jhb@jhb_slimer on 2005/12/29 20:42:54

	Missing a \n in that printf.

Affected files ...

.. //depot/projects/smpng/sys/kern/subr_witness.c#146 edit

Differences ...

==== //depot/projects/smpng/sys/kern/subr_witness.c#146 (text+ko) ====

@@ -1437,7 +1437,8 @@
 	 * mutexes are insufficient.
 	 */
 	if ((lock_class->lc_flags & LC_SPINLOCK) && witness_spin_warn)
-		printf("WITNESS: spin lock %s not in order list", description);
+		printf("WITNESS: spin lock %s not in order list\n",
+		    description);
 	return (w);
 }
 

From owner-p4-projects@FreeBSD.ORG  Thu Dec 29 20:48:03 2005
Return-Path: <owner-p4-projects@FreeBSD.ORG>
X-Original-To: p4-projects@freebsd.org
Delivered-To: p4-projects@freebsd.org
Received: by hub.freebsd.org (Postfix, from userid 32767)
	id 66BD816A423; Thu, 29 Dec 2005 20:48:02 +0000 (GMT)
X-Original-To: perforce@freebsd.org
Delivered-To: perforce@freebsd.org
Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125])
	by hub.freebsd.org (Postfix) with ESMTP id 28EBA16A41F
	for <perforce@freebsd.org>; Thu, 29 Dec 2005 20:48:02 +0000 (GMT)
	(envelope-from jhb@freebsd.org)
Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115])
	by mx1.FreeBSD.org (Postfix) with ESMTP id 2D6FA43D62
	for <perforce@freebsd.org>; Thu, 29 Dec 2005 20:48:01 +0000 (GMT)
	(envelope-from jhb@freebsd.org)
Received: from repoman.freebsd.org (localhost [127.0.0.1])
	by repoman.freebsd.org (8.13.1/8.13.1) with ESMTP id jBTKlpuV082513
	for <perforce@freebsd.org>; Thu, 29 Dec 2005 20:47:51 GMT
	(envelope-from jhb@freebsd.org)
Received: (from perforce@localhost)
	by repoman.freebsd.org (8.13.1/8.13.1/Submit) id jBTKlpYA082510
	for perforce@freebsd.org; Thu, 29 Dec 2005 20:47:51 GMT
	(envelope-from jhb@freebsd.org)
Date: Thu, 29 Dec 2005 20:47:51 GMT
Message-Id: <200512292047.jBTKlpYA082510@repoman.freebsd.org>
X-Authentication-Warning: repoman.freebsd.org: perforce set sender to
	jhb@freebsd.org using -f
From: John Baldwin <jhb@FreeBSD.org>
To: Perforce Change Reviews <perforce@freebsd.org>
Cc: 
Subject: PERFORCE change 88902 for review
X-BeenThere: p4-projects@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: p4 projects tree changes <p4-projects.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/p4-projects>,
	<mailto:p4-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/p4-projects>
List-Post: <mailto:p4-projects@freebsd.org>
List-Help: <mailto:p4-projects-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/p4-projects>,
	<mailto:p4-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Thu, 29 Dec 2005 20:48:03 -0000

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

Change 88902 by jhb@jhb_slimer on 2005/12/29 20:46:58

	Mismerge.

Affected files ...

.. //depot/projects/smpng/sys/kern/kern_sx.c#31 edit

Differences ...

==== //depot/projects/smpng/sys/kern/kern_sx.c#31 (text+ko) ====

@@ -38,8 +38,6 @@
 
 #include "opt_ddb.h"
 
-#include "opt_ddb.h"
-
 #include <sys/param.h>
 #include <sys/systm.h>
 #include <sys/ktr.h>