PERFORCE change 113255 for review

Paolo Pisati piso at FreeBSD.org
Sun Jan 21 15:13:01 UTC 2007


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

Change 113255 by piso at piso_newluxor on 2007/01/21 15:12:50

	IFC at 113250

Affected files ...

.. //depot/projects/soc2006/intr_filter/amd64/linux32/linux32_machdep.c#8 integrate
.. //depot/projects/soc2006/intr_filter/arm/at91/uart_dev_at91usart.c#5 integrate
.. //depot/projects/soc2006/intr_filter/arm/sa11x0/uart_dev_sa1110.c#2 integrate
.. //depot/projects/soc2006/intr_filter/compat/linprocfs/linprocfs.c#8 integrate
.. //depot/projects/soc2006/intr_filter/compat/linux/linux_emul.c#7 integrate
.. //depot/projects/soc2006/intr_filter/compat/linux/linux_file.c#6 integrate
.. //depot/projects/soc2006/intr_filter/conf/files.sparc64#5 integrate
.. //depot/projects/soc2006/intr_filter/conf/options#12 integrate
.. //depot/projects/soc2006/intr_filter/conf/options.sun4v#2 integrate
.. //depot/projects/soc2006/intr_filter/dev/aic7xxx/aic79xx.h#2 integrate
.. //depot/projects/soc2006/intr_filter/dev/aic7xxx/aic79xx_pci.c#2 integrate
.. //depot/projects/soc2006/intr_filter/dev/bce/if_bce.c#11 integrate
.. //depot/projects/soc2006/intr_filter/dev/cardbus/cardbus.c#3 integrate
.. //depot/projects/soc2006/intr_filter/dev/dpt/dpt.h#2 integrate
.. //depot/projects/soc2006/intr_filter/dev/dpt/dpt_eisa.c#4 integrate
.. //depot/projects/soc2006/intr_filter/dev/dpt/dpt_scsi.c#4 integrate
.. //depot/projects/soc2006/intr_filter/dev/fb/fbreg.h#2 integrate
.. //depot/projects/soc2006/intr_filter/dev/isp/isp.c#12 integrate
.. //depot/projects/soc2006/intr_filter/dev/isp/isp_freebsd.c#9 integrate
.. //depot/projects/soc2006/intr_filter/dev/isp/isp_freebsd.h#7 integrate
.. //depot/projects/soc2006/intr_filter/dev/isp/isp_target.c#5 integrate
.. //depot/projects/soc2006/intr_filter/dev/isp/isp_target.h#4 integrate
.. //depot/projects/soc2006/intr_filter/dev/isp/isp_tpublic.h#4 integrate
.. //depot/projects/soc2006/intr_filter/dev/isp/ispvar.h#7 integrate
.. //depot/projects/soc2006/intr_filter/dev/le/if_le_cbus.c#3 integrate
.. //depot/projects/soc2006/intr_filter/dev/le/if_le_isa.c#3 integrate
.. //depot/projects/soc2006/intr_filter/dev/le/if_le_lebuffer.c#1 branch
.. //depot/projects/soc2006/intr_filter/dev/le/if_le_ledma.c#3 integrate
.. //depot/projects/soc2006/intr_filter/dev/le/if_le_pci.c#3 integrate
.. //depot/projects/soc2006/intr_filter/dev/le/lance.c#3 integrate
.. //depot/projects/soc2006/intr_filter/dev/le/lebuffer_sbus.c#1 branch
.. //depot/projects/soc2006/intr_filter/dev/mc146818/mc146818reg.h#2 integrate
.. //depot/projects/soc2006/intr_filter/dev/mii/mii.c#2 integrate
.. //depot/projects/soc2006/intr_filter/dev/mii/ukphy.c#3 integrate
.. //depot/projects/soc2006/intr_filter/dev/pci/pcireg.h#5 integrate
.. //depot/projects/soc2006/intr_filter/dev/si/si.c#3 integrate
.. //depot/projects/soc2006/intr_filter/dev/sound/sbus/cs4231.c#2 integrate
.. //depot/projects/soc2006/intr_filter/dev/uart/uart_cpu.h#2 integrate
.. //depot/projects/soc2006/intr_filter/dev/uart/uart_dev_ns8250.c#2 integrate
.. //depot/projects/soc2006/intr_filter/dev/uart/uart_dev_sab82532.c#2 integrate
.. //depot/projects/soc2006/intr_filter/dev/uart/uart_dev_z8530.c#3 integrate
.. //depot/projects/soc2006/intr_filter/dev/uart/uart_kbd_sun.c#4 integrate
.. //depot/projects/soc2006/intr_filter/i386/linux/linux_machdep.c#7 integrate
.. //depot/projects/soc2006/intr_filter/kern/sched_ule.c#9 integrate
.. //depot/projects/soc2006/intr_filter/modules/le/Makefile#2 integrate
.. //depot/projects/soc2006/intr_filter/netgraph/ng_ppp.c#3 integrate
.. //depot/projects/soc2006/intr_filter/sparc64/include/bus.h#3 integrate
.. //depot/projects/soc2006/intr_filter/sparc64/include/cache.h#2 integrate
.. //depot/projects/soc2006/intr_filter/sparc64/include/frame.h#2 integrate
.. //depot/projects/soc2006/intr_filter/sparc64/include/fsr.h#2 integrate
.. //depot/projects/soc2006/intr_filter/sparc64/include/intr_machdep.h#4 integrate
.. //depot/projects/soc2006/intr_filter/sparc64/include/pcb.h#2 integrate
.. //depot/projects/soc2006/intr_filter/sparc64/include/tsb.h#2 integrate
.. //depot/projects/soc2006/intr_filter/sparc64/isa/isa.c#3 integrate
.. //depot/projects/soc2006/intr_filter/sparc64/pci/ofw_pci_if.m#2 integrate
.. //depot/projects/soc2006/intr_filter/sparc64/pci/psycho.c#10 integrate
.. //depot/projects/soc2006/intr_filter/sparc64/sbus/dma_sbus.c#2 integrate
.. //depot/projects/soc2006/intr_filter/sparc64/sparc64/bus_machdep.c#2 integrate
.. //depot/projects/soc2006/intr_filter/sparc64/sparc64/exception.S#2 integrate
.. //depot/projects/soc2006/intr_filter/sparc64/sparc64/genassym.c#6 integrate
.. //depot/projects/soc2006/intr_filter/sparc64/sparc64/interrupt.S#2 integrate
.. //depot/projects/soc2006/intr_filter/sparc64/sparc64/mp_exception.S#2 integrate
.. //depot/projects/soc2006/intr_filter/sparc64/sparc64/mp_locore.S#2 integrate
.. //depot/projects/soc2006/intr_filter/sparc64/sparc64/ofw_machdep.c#3 integrate
.. //depot/projects/soc2006/intr_filter/sparc64/sparc64/support.S#4 integrate
.. //depot/projects/soc2006/intr_filter/sparc64/sparc64/swtch.S#2 integrate
.. //depot/projects/soc2006/intr_filter/sparc64/sparc64/upa.c#2 integrate
.. //depot/projects/soc2006/intr_filter/sun4v/include/bus.h#2 integrate
.. //depot/projects/soc2006/intr_filter/sun4v/include/frame.h#2 integrate
.. //depot/projects/soc2006/intr_filter/sun4v/include/fsr.h#2 integrate
.. //depot/projects/soc2006/intr_filter/sun4v/include/intr_machdep.h#3 integrate
.. //depot/projects/soc2006/intr_filter/sun4v/include/pcb.h#3 integrate
.. //depot/projects/soc2006/intr_filter/sun4v/include/utrap.h#3 integrate
.. //depot/projects/soc2006/intr_filter/sun4v/sun4v/bus_machdep.c#2 integrate
.. //depot/projects/soc2006/intr_filter/sun4v/sun4v/exception.S#5 integrate
.. //depot/projects/soc2006/intr_filter/sun4v/sun4v/hv_pci.c#3 integrate
.. //depot/projects/soc2006/intr_filter/sun4v/sun4v/interrupt.S#4 integrate
.. //depot/projects/soc2006/intr_filter/sun4v/sun4v/mp_locore.S#3 integrate
.. //depot/projects/soc2006/intr_filter/sun4v/sun4v/support.S#4 integrate
.. //depot/projects/soc2006/intr_filter/sun4v/sun4v/swtch.S#2 integrate
.. //depot/projects/soc2006/intr_filter/sun4v/sun4v/wbuf.S#4 integrate
.. //depot/projects/soc2006/intr_filter/ufs/ffs/ffs_alloc.c#5 integrate
.. //depot/projects/soc2006/intr_filter/ufs/ffs/ffs_snapshot.c#4 integrate
.. //depot/projects/soc2006/intr_filter/ufs/ufs/quota.h#2 integrate
.. //depot/projects/soc2006/intr_filter/ufs/ufs/ufs_quota.c#4 integrate

Differences ...

==== //depot/projects/soc2006/intr_filter/amd64/linux32/linux32_machdep.c#8 (text+ko) ====

@@ -29,7 +29,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/linux32/linux32_machdep.c,v 1.26 2007/01/14 16:20:37 netchild Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/linux32/linux32_machdep.c,v 1.27 2007/01/20 14:58:59 netchild Exp $");
 
 #include <sys/param.h>
 #include <sys/kernel.h>
@@ -453,14 +453,21 @@
 linux_fork(struct thread *td, struct linux_fork_args *args)
 {
 	int error;
+	struct proc *p2;
+	struct thread *td2;
 
 #ifdef DEBUG
 	if (ldebug(fork))
 		printf(ARGS(fork, ""));
 #endif
 
-	if ((error = fork(td, (struct fork_args *)args)) != 0)
+	if ((error = fork1(td, RFFDG | RFPROC | RFSTOPPED, 0, &p2)) != 0)
 		return (error);
+	
+	if (error == 0) {
+		td->td_retval[0] = p2->p_pid;
+		td->td_retval[1] = 0;
+	}
 
 	if (td->td_retval[1] == 1)
 		td->td_retval[0] = 0;
@@ -468,6 +475,14 @@
 	if (error)
 		return (error);
 
+	td2 = FIRST_THREAD_IN_PROC(p2);
+
+	/* make it run */
+	mtx_lock_spin(&sched_lock);
+	TD_SET_CAN_RUN(td2);
+	setrunqueue(td2, SRQ_BORING);
+	mtx_unlock_spin(&sched_lock);
+
 	return (0);
 }
 
@@ -476,6 +491,7 @@
 {
 	int error;
 	struct proc *p2;
+	struct thread *td2;
 
 #ifdef DEBUG
 	if (ldebug(vfork))
@@ -483,7 +499,7 @@
 #endif
 
 	/* exclude RFPPWAIT */
-	if ((error = fork1(td, RFFDG | RFPROC | RFMEM, 0, &p2)) != 0)
+	if ((error = fork1(td, RFFDG | RFPROC | RFMEM | RFSTOPPED, 0, &p2)) != 0)
 		return (error);
 	if (error == 0) {
 	   	td->td_retval[0] = p2->p_pid;
@@ -495,12 +511,25 @@
 	error = linux_proc_init(td, td->td_retval[0], 0);
 	if (error)
 		return (error);
+
+	PROC_LOCK(p2);
+	p2->p_flag |= P_PPWAIT;
+	PROC_UNLOCK(p2);
+
+	td2 = FIRST_THREAD_IN_PROC(p2);
+	
+	/* make it run */
+	mtx_lock_spin(&sched_lock);
+	TD_SET_CAN_RUN(td2);
+	setrunqueue(td2, SRQ_BORING);
+	mtx_unlock_spin(&sched_lock);
+
 	/* wait for the children to exit, ie. emulate vfork */
 	PROC_LOCK(p2);
-	p2->p_flag |= P_PPWAIT;
 	while (p2->p_flag & P_PPWAIT)
 	   	msleep(td->td_proc, &p2->p_mtx, PWAIT, "ppwait", 0);
 	PROC_UNLOCK(p2);
+	
 	return (0);
 }
 
@@ -632,6 +661,11 @@
 		printf(LMSG("clone: successful rfork to %ld, stack %p sig = %d"),
 		    (long)p2->p_pid, args->stack, exit_signal);
 #endif
+	if (args->flags & CLONE_VFORK) {
+	   	PROC_LOCK(p2);
+	   	p2->p_flag |= P_PPWAIT;
+	   	PROC_UNLOCK(p2);
+	}
 
 	/*
 	 * Make this runnable after we are finished with it.
@@ -647,7 +681,6 @@
 	if (args->flags & CLONE_VFORK) {
    	   	/* wait for the children to exit, ie. emulate vfork */
    	   	PROC_LOCK(p2);
-		p2->p_flag |= P_PPWAIT;
 		while (p2->p_flag & P_PPWAIT)
    		   	msleep(td->td_proc, &p2->p_mtx, PWAIT, "ppwait", 0);
 		PROC_UNLOCK(p2);

==== //depot/projects/soc2006/intr_filter/arm/at91/uart_dev_at91usart.c#5 (text) ====

@@ -26,7 +26,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/at91/uart_dev_at91usart.c,v 1.10 2006/12/07 00:24:15 cognet Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/at91/uart_dev_at91usart.c,v 1.11 2007/01/18 22:01:19 marius Exp $");
 
 #include "opt_comconsole.h"
 
@@ -94,7 +94,7 @@
 static void at91_usart_init(struct uart_bas *bas, int, int, int, int);
 static void at91_usart_term(struct uart_bas *bas);
 static void at91_usart_putc(struct uart_bas *bas, int);
-static int at91_usart_poll(struct uart_bas *bas);
+static int at91_usart_rxready(struct uart_bas *bas);
 static int at91_usart_getc(struct uart_bas *bas, struct mtx *mtx);
 
 extern SLIST_HEAD(uart_devinfo_list, uart_devinfo) uart_sysdevs;
@@ -201,7 +201,7 @@
 	.init = at91_usart_init,
 	.term = at91_usart_term,
 	.putc = at91_usart_putc,
-	.poll = at91_usart_poll,
+	.rxready = at91_usart_rxready,
 	.getc = at91_usart_getc,
 };
 
@@ -252,15 +252,13 @@
 }
 
 /*
- * Poll for a character available
+ * Check for a character available.
  */
 static int
-at91_usart_poll(struct uart_bas *bas)
+at91_usart_rxready(struct uart_bas *bas)
 {
 
-	if (!(RD4(bas, USART_CSR) & USART_CSR_RXRDY))
-		return (-1);
-	return (RD4(bas, USART_RHR) & 0xff);
+	return ((RD4(bas, USART_CSR) & USART_CSR_RXRDY) != 0 ? 1 : 0);
 }
 
 /*

==== //depot/projects/soc2006/intr_filter/arm/sa11x0/uart_dev_sa1110.c#2 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/sa11x0/uart_dev_sa1110.c,v 1.6 2006/06/07 11:28:17 cognet Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/sa11x0/uart_dev_sa1110.c,v 1.7 2007/01/18 22:01:19 marius Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -52,7 +52,7 @@
 static void sa1110_init(struct uart_bas *bas, int, int, int, int);
 static void sa1110_term(struct uart_bas *bas);
 static void sa1110_putc(struct uart_bas *bas, int);
-static int sa1110_poll(struct uart_bas *bas);
+static int sa1110_rxready(struct uart_bas *bas);
 static int sa1110_getc(struct uart_bas *bas, struct mtx *mtx);
 
 extern SLIST_HEAD(uart_devinfo_list, uart_devinfo) uart_sysdevs;
@@ -62,7 +62,7 @@
 	.init = sa1110_init,
 	.term = sa1110_term,
 	.putc = sa1110_putc,
-	.poll = sa1110_poll,
+	.rxready = sa1110_rxready,
 	.getc = sa1110_getc,
 };
 
@@ -102,11 +102,10 @@
 }
 
 static int
-sa1110_poll(struct uart_bas *bas)
+sa1110_rxready(struct uart_bas *bas)
 {
-	if (!(uart_getreg(bas, SACOM_SR1) & SR1_RNE))
-		return (-1);
-	return (uart_getreg(bas, SACOM_DR) & 0xff);
+
+	return ((uart_getreg(bas, SACOM_SR1) & SR1_RNE) != 0 ? 1 : 0);
 }
 
 static int

==== //depot/projects/soc2006/intr_filter/compat/linprocfs/linprocfs.c#8 (text+ko) ====

@@ -40,7 +40,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/compat/linprocfs/linprocfs.c,v 1.101 2006/11/27 21:10:55 jkim Exp $");
+__FBSDID("$FreeBSD: src/sys/compat/linprocfs/linprocfs.c,v 1.105 2007/01/21 13:18:52 netchild Exp $");
 
 #include <sys/param.h>
 #include <sys/queue.h>
@@ -121,7 +121,7 @@
  * This character array is used with ki_stati-1 as an index and tries to
  * map our states to suitable linux states.
  */
-static char *linux_state = "RRSTZDD";
+static char linux_state[] = "RRSTZDD";
 
 /*
  * Filler function for proc/meminfo
@@ -462,15 +462,25 @@
 linprocfs_doprocstat(PFS_FILL_ARGS)
 {
 	struct kinfo_proc kp;
+	char state;
+	static int ratelimit = 0;
 
 	PROC_LOCK(p);
 	fill_kinfo_proc(p, &kp);
 	sbuf_printf(sb, "%d", p->p_pid);
 #define PS_ADD(name, fmt, arg) sbuf_printf(sb, " " fmt, arg)
 	PS_ADD("comm",		"(%s)",	p->p_comm);
-	KASSERT(kp.ki_stat <= sizeof(linux_state),
-		("linprocfs: don't know how to handle unknown FreeBSD state"));
-	PS_ADD("state",		"%c",	linux_state[kp.ki_stat - 1]);
+	if (kp.ki_stat > sizeof(linux_state)) {
+		state = 'R';
+
+		if (ratelimit == 0) {
+			printf("linprocfs: don't know how to handle unknown FreeBSD state %d/%zd, mapping to R\n",
+			    kp.ki_stat, sizeof(linux_state));
+			++ratelimit;
+		}
+	} else
+		state = linux_state[kp.ki_stat - 1];
+	PS_ADD("state",		"%c",	state);
 	PS_ADD("ppid",		"%d",	p->p_pptr ? p->p_pptr->p_pid : 0);
 	PS_ADD("pgrp",		"%d",	p->p_pgid);
 	PS_ADD("session",	"%d",	p->p_session->s_sid);

==== //depot/projects/soc2006/intr_filter/compat/linux/linux_emul.c#7 (text+ko) ====

@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/compat/linux/linux_emul.c,v 1.12 2007/01/07 19:09:20 netchild Exp $");
+__FBSDID("$FreeBSD: src/sys/compat/linux/linux_emul.c,v 1.13 2007/01/20 14:58:59 netchild Exp $");
 
 #include "opt_compat.h"
 
@@ -91,17 +91,12 @@
 			struct linux_emuldata_shared *s;
 
 			s = malloc(sizeof *s, M_LINUX, M_WAITOK | M_ZERO);
-			em->shared = s;
 			s->refs = 1;
 			s->group_pid = child;
 
 			LIST_INIT(&s->threads);
+			em->shared = s;
 		}
-		p = pfind(child);
-		KASSERT(p != NULL, ("process not found in proc_init\n"));
-		p->p_emuldata = em;
-		PROC_UNLOCK(p);
-		EMUL_LOCK(&emul_lock);
 	} else {
 		/* lookup the old one */
 		em = em_find(td->td_proc, EMUL_DOLOCK);
@@ -120,11 +115,12 @@
 		if (flags & CLONE_THREAD) {
 			/* lookup the parent */
 		   	EMUL_SHARED_WLOCK(&emul_shared_lock);
-			p_em = em_find(td->td_proc, EMUL_DONTLOCK);
+			p_em = em_find(td->td_proc, EMUL_DOLOCK);
 			KASSERT(p_em != NULL, ("proc_init: parent emuldata not found for CLONE_THREAD\n"));
 			em->shared = p_em->shared;
 			em->shared->refs++;
 		   	EMUL_SHARED_WUNLOCK(&emul_shared_lock);
+			EMUL_UNLOCK(&emul_lock);
 		} else {
 			/*
 			 * handled earlier to avoid malloc(M_WAITOK) with
@@ -133,12 +129,13 @@
 		}
 	}
 	if (child != 0) {
-		EMUL_UNLOCK(&emul_lock);
 		EMUL_SHARED_WLOCK(&emul_shared_lock);
 		LIST_INSERT_HEAD(&em->shared->threads, em, threads);
 		EMUL_SHARED_WUNLOCK(&emul_shared_lock);
 
 		p = pfind(child);
+		KASSERT(p != NULL, ("process not found in proc_init\n"));
+		p->p_emuldata = em;
 		/* we might have a sleeping linux_schedtail */
 		wakeup(&p->p_emuldata);
 		PROC_UNLOCK(p);

==== //depot/projects/soc2006/intr_filter/compat/linux/linux_file.c#6 (text+ko) ====

@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/compat/linux/linux_file.c,v 1.100 2007/01/18 09:32:08 kib Exp $");
+__FBSDID("$FreeBSD: src/sys/compat/linux/linux_file.c,v 1.101 2007/01/18 10:42:10 kib Exp $");
 
 #include "opt_compat.h"
 #include "opt_mac.h"

==== //depot/projects/soc2006/intr_filter/conf/files.sparc64#5 (text+ko) ====

@@ -1,7 +1,7 @@
 # This file tells config what files go into building a kernel,
 # files marked standard are always included.
 #
-# $FreeBSD: src/sys/conf/files.sparc64,v 1.86 2007/01/16 22:08:27 marius Exp $
+# $FreeBSD: src/sys/conf/files.sparc64,v 1.87 2007/01/20 12:53:30 marius Exp $
 #
 # The long compile-with and dependency lines are required because of
 # limitations in config: backslash-newline doesn't work in strings, and
@@ -49,7 +49,9 @@
 dev/fb/machfb.c			optional	machfb sc
 dev/hwpmc/hwpmc_sparc64.c	optional	hwpmc
 dev/kbd/kbd.c			optional	atkbd | sc | ukbd
+dev/le/if_le_lebuffer.c		optional	le sbus
 dev/le/if_le_ledma.c		optional	le sbus
+dev/le/lebuffer_sbus.c		optional	le sbus
 dev/ofw/ofw_bus_if.m		standard
 dev/ofw/ofw_bus_subr.c		standard
 dev/ofw/ofw_console.c		optional	ofw_console

==== //depot/projects/soc2006/intr_filter/conf/options#12 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/options,v 1.572 2007/01/10 18:45:17 marius Exp $
+# $FreeBSD: src/sys/conf/options,v 1.573 2007/01/18 13:33:36 marius Exp $
 #
 #        On the handling of kernel options
 #
@@ -662,6 +662,8 @@
 DEV_CARP		opt_carp.h
 DEV_SPLASH		opt_splash.h
 
+# EISA support
+DEV_EISA		opt_eisa.h
 EISA_SLOTS		opt_eisa.h
 
 # ed driver

==== //depot/projects/soc2006/intr_filter/conf/options.sun4v#2 (text+ko) ====

@@ -1,12 +1,7 @@
-# $FreeBSD: src/sys/conf/options.sun4v,v 1.1 2006/10/05 06:14:24 kmacy Exp $
+# $FreeBSD: src/sys/conf/options.sun4v,v 1.2 2007/01/19 12:22:50 marius Exp $
 
 SUN4V			opt_global.h
 
-GFB_DEBUG		opt_gfb.h
-GFB_NO_FONT_LOADING	opt_gfb.h
-GFB_NO_MODE_CHANGE	opt_gfb.h
-
-DEBUGGER_ON_POWERFAIL	opt_psycho.h
 OFW_PCI_DEBUG		opt_ofw_pci.h
 OFWCONS_POLL_HZ		opt_ofw.h
 # Debug IOMMU inserts/removes using diagnostic accesses. Very loud.

==== //depot/projects/soc2006/intr_filter/dev/aic7xxx/aic79xx.h#2 (text+ko) ====

@@ -39,7 +39,7 @@
  *
  * $Id: //depot/aic7xxx/aic7xxx/aic79xx.h#107 $
  *
- * $FreeBSD: src/sys/dev/aic7xxx/aic79xx.h,v 1.24 2005/01/06 01:42:25 imp Exp $
+ * $FreeBSD: src/sys/dev/aic7xxx/aic79xx.h,v 1.25 2007/01/19 22:37:52 jhb Exp $
  */
 
 #ifndef _AIC79XX_H_
@@ -1244,6 +1244,9 @@
 	/* PCI cacheline size. */
 	u_int			  pci_cachesize;
 
+	/* PCI-X capability offset. */
+	int			  pcix_ptr;
+
 	/* IO Cell Parameters */
 	uint8_t			  iocell_opts[AHD_NUM_PER_DEV_ANNEXCOLS];
 

==== //depot/projects/soc2006/intr_filter/dev/aic7xxx/aic79xx_pci.c#2 (text+ko) ====

@@ -46,7 +46,7 @@
 #include "aic79xx_inline.h"
 #else
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/aic7xxx/aic79xx_pci.c,v 1.24 2005/12/04 02:12:40 ru Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/aic7xxx/aic79xx_pci.c,v 1.25 2007/01/19 22:37:52 jhb Exp $");
 #include <dev/aic7xxx/aic79xx_osm.h>
 #include <dev/aic7xxx/aic79xx_inline.h>
 #endif
@@ -342,7 +342,12 @@
 	error = entry->setup(ahd);
 	if (error != 0)
 		return (error);
-	
+
+	/*
+	 * Find the PCI-X cap pointer.  If we don't find it,
+	 * pcix_ptr will be 0.
+	 */
+	pci_find_extcap(ahd->dev_softc, PCIY_PCIX, &ahd->pcix_ptr);
 	devconfig = aic_pci_read_config(ahd->dev_softc, DEVCONFIG, /*bytes*/4);
 	if ((devconfig & PCIXINITPAT) == PCIXINIT_PCI33_66) {
 		ahd->chip |= AHD_PCI;
@@ -350,6 +355,8 @@
 		ahd->bugs &= ~AHD_PCIX_BUG_MASK;
 	} else {
 		ahd->chip |= AHD_PCIX;
+		if (ahd->pcix_ptr == 0)
+			return (ENXIO);
 	}
 	ahd->bus_description = pci_bus_modes[PCI_BUS_MODES_INDEX(devconfig)];
 
@@ -867,16 +874,16 @@
 	uint8_t		sg_split_status1[2];
 	ahd_mode_state	saved_modes;
 	u_int		i;
-	uint16_t	pcix_status;
+	uint32_t	pcix_status;
 
 	/*
 	 * Check for splits in all modes.  Modes 0 and 1
 	 * additionally have SG engine splits to look at.
 	 */
-	pcix_status = aic_pci_read_config(ahd->dev_softc, PCIXR_STATUS,
-					  /*bytes*/2);
+	pcix_status = aic_pci_read_config(ahd->dev_softc,
+	    ahd->pcix_ptr + PCIXR_STATUS, /*bytes*/ 4);
 	printf("%s: PCI Split Interrupt - PCI-X status = 0x%x\n",
-	       ahd_name(ahd), pcix_status);
+	       ahd_name(ahd), pcix_status >> 16);
 	saved_modes = ahd_save_modes(ahd);
 	for (i = 0; i < 4; i++) {
 		ahd_set_modes(ahd, i, i);
@@ -922,8 +929,8 @@
 	/*
 	 * Clear PCI-X status bits.
 	 */
-	aic_pci_write_config(ahd->dev_softc, PCIXR_STATUS,
-			     pcix_status, /*bytes*/2);
+	aic_pci_write_config(ahd->dev_softc, ahd->pcix_ptr + PCIXR_STATUS,
+			     pcix_status, /*bytes*/4);
 	ahd_outb(ahd, CLRINT, CLRSPLTINT);
 	ahd_restore_modes(ahd, saved_modes);
 }

==== //depot/projects/soc2006/intr_filter/dev/bce/if_bce.c#11 (text) ====

@@ -29,7 +29,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/bce/if_bce.c,v 1.25 2007/01/13 04:35:15 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/bce/if_bce.c,v 1.26 2007/01/20 17:05:12 scottl Exp $");
 
 /*
  * The following controllers are supported by this driver:
@@ -5231,7 +5231,7 @@
 {
 	struct ifnet *ifp;
 	struct ifmultiaddr *ifma;
-	u32 hashes[4] = { 0, 0, 0, 0 };
+	u32 hashes[NUM_MC_HASH_REGISTERS] = { 0, 0, 0, 0, 0, 0, 0, 0 };
 	u32 rx_mode, sort_mode;
 	int h, i;
 
@@ -5279,12 +5279,12 @@
 			if (ifma->ifma_addr->sa_family != AF_LINK)
 				continue;
 			h = ether_crc32_le(LLADDR((struct sockaddr_dl *)
-		    	ifma->ifma_addr), ETHER_ADDR_LEN) & 0x7F;
-			hashes[(h & 0x60) >> 5] |= 1 << (h & 0x1F);
+			    ifma->ifma_addr), ETHER_ADDR_LEN) & 0xFF;
+			    hashes[(h & 0xE0) >> 5] |= 1 << (h & 0x1F);
 		}
 		IF_ADDR_UNLOCK(ifp);
 
-		for (i = 0; i < 4; i++)
+		for (i = 0; i < NUM_MC_HASH_REGISTERS; i++)
 			REG_WR(sc, BCE_EMAC_MULTICAST_HASH0 + (i * 4), hashes[i]);
 
 		sort_mode |= BCE_RPM_SORT_USER0_MC_HSH_EN;

==== //depot/projects/soc2006/intr_filter/dev/cardbus/cardbus.c#3 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/cardbus/cardbus.c,v 1.62 2006/06/12 03:17:24 imp Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/cardbus/cardbus.c,v 1.63 2007/01/19 08:49:28 imp Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -217,7 +217,8 @@
 	int tmp;
 	int err = 0;
 
-	device_get_children(cbdev, &devlist, &numdevs);
+	if (device_get_children(cbdev, &devlist, &numdevs) != 0)
+		return (ENOENT);
 
 	if (numdevs == 0) {
 		free(devlist, M_TEMP);
@@ -251,7 +252,9 @@
 	struct cardbus_devinfo *dinfo;
 
 	DEVICE_IDENTIFY(driver, cbdev);
-	device_get_children(cbdev, &devlist, &numdevs);
+	if (device_get_children(cbdev, &devlist, &numdevs) != 0)
+		return;
+
 	/*
 	 * If there are no drivers attached, but there are children,
 	 * then power the card up.

==== //depot/projects/soc2006/intr_filter/dev/dpt/dpt.h#2 (text+ko) ====

@@ -40,7 +40,7 @@
  */
 
 
-#ident "$FreeBSD: src/sys/dev/dpt/dpt.h,v 1.16 2005/01/06 01:42:35 imp Exp $"
+#ident "$FreeBSD: src/sys/dev/dpt/dpt.h,v 1.17 2007/01/18 13:33:36 marius Exp $"
 
 #ifndef _DPT_H
 #define _DPT_H
@@ -1292,7 +1292,9 @@
 int			dpt_attach(dpt_softc_t * dpt);
 void			dpt_intr(void *arg);
 
+#ifdef DEV_EISA
 dpt_conf_t *		dpt_pio_get_conf(u_int32_t);
+#endif
 
 #if 0
 extern void		hex_dump(u_char * data, int length,

==== //depot/projects/soc2006/intr_filter/dev/dpt/dpt_eisa.c#4 (text+ko) ====

@@ -26,7 +26,9 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/dpt/dpt_eisa.c,v 1.21 2006/12/11 18:28:30 mjacob Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/dpt/dpt_eisa.c,v 1.22 2007/01/18 13:33:36 marius Exp $");
+
+#include "opt_eisa.h"
 
 #include <sys/param.h>
 #include <sys/systm.h>

==== //depot/projects/soc2006/intr_filter/dev/dpt/dpt_scsi.c#4 (text+ko) ====

@@ -27,9 +27,9 @@
  * SUCH DAMAGE.
  */
 
-#ident "$FreeBSD: src/sys/dev/dpt/dpt_scsi.c,v 1.54 2006/11/02 00:54:36 mjacob Exp $"
+#ident "$FreeBSD: src/sys/dev/dpt/dpt_scsi.c,v 1.55 2007/01/18 13:33:36 marius Exp $"
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/dpt/dpt_scsi.c,v 1.54 2006/11/02 00:54:36 mjacob Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/dpt/dpt_scsi.c,v 1.55 2007/01/18 13:33:36 marius Exp $");
 
 /*
  * dpt_scsi.c: SCSI dependant code for the DPT driver
@@ -50,6 +50,8 @@
 #define _DPT_C_
 
 #include "opt_dpt.h"
+#include "opt_eisa.h"
+
 #include <sys/param.h>
 #include <sys/systm.h>
 #include <sys/eventhandler.h>
@@ -106,7 +108,9 @@
 /* ================= Private Inline Function declarations ===================*/
 static __inline int		dpt_just_reset(dpt_softc_t * dpt);
 static __inline int		dpt_raid_busy(dpt_softc_t * dpt);
+#ifdef DEV_EISA
 static __inline int		dpt_pio_wait (u_int32_t, u_int, u_int, u_int);
+#endif
 static __inline int		dpt_wait(dpt_softc_t *dpt, u_int bits,
 					 u_int state);
 static __inline struct dpt_ccb* dptgetccb(struct dpt_softc *dpt);
@@ -181,6 +185,7 @@
 		return (0);
 }
 
+#ifdef DEV_EISA
 static __inline int
 dpt_pio_wait (u_int32_t base, u_int reg, u_int bits, u_int state)
 {
@@ -196,6 +201,7 @@
 	}
 	return (-1);
 }
+#endif
 
 static __inline int
 dpt_wait(dpt_softc_t *dpt, u_int bits, u_int state)
@@ -386,6 +392,7 @@
 	return (i);
 }
 
+#ifdef DEV_EISA
 dpt_conf_t *
 dpt_pio_get_conf (u_int32_t base)
 {
@@ -478,6 +485,7 @@
 	}
 	return (NULL);
 }
+#endif
 
 /*
  * Read a configuration page into the supplied dpt_cont_t buffer.

==== //depot/projects/soc2006/intr_filter/dev/fb/fbreg.h#2 (text+ko) ====

@@ -23,7 +23,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/fb/fbreg.h,v 1.20 2005/12/06 11:19:36 ru Exp $
+ * $FreeBSD: src/sys/dev/fb/fbreg.h,v 1.21 2007/01/18 13:08:08 marius Exp $
  */
 
 #ifndef _DEV_FB_FBREG_H_
@@ -50,7 +50,8 @@
 #define bzero_io(d, c)		bzero((void *)(d), (c))
 #define fill_io(p, d, c)	fill((p), (void *)(d), (c))
 #define fillw_io(p, d, c)	fillw((p), (void *)(d), (c))
-#elif defined(__ia64__)
+#elif defined(__ia64__) || defined(__sparc64__)
+#if defined(__ia64__)
 #include <machine/bus.h>
 #define	bcopy_fromio(s, d, c)	\
 	bus_space_read_region_1(IA64_BUS_SPACE_MEM, s, 0, (void*)(d), c)
@@ -69,6 +70,7 @@
 #define	writeb(a, v)		bus_space_write_1(IA64_BUS_SPACE_MEM, a, 0, v)
 #define	writew(a, v)		bus_space_write_2(IA64_BUS_SPACE_MEM, a, 0, v)
 #define	writel(a, v)		bus_space_write_4(IA64_BUS_SPACE_MEM, a, 0, v)
+#endif /* __ia64__ */
 static __inline void
 fillw(int val, uint16_t *buf, size_t size)
 {
@@ -91,7 +93,7 @@
 u_int16_t ofwfb_readw(u_int16_t *addr);
 void ofwfb_writew(u_int16_t *addr, u_int16_t val);
 
-#else /* !__i386__ && !__ia64__ && !__amd64__ && !__powerpc__ */
+#else /* !__i386__ && !__amd64__ && !__ia64__ && !__sparc64__ && !__powerpc__ */
 #define bcopy_io(s, d, c)	memcpy_io((d), (s), (c))
 #define bcopy_toio(s, d, c)	memcpy_toio((d), (void *)(s), (c))
 #define bcopy_fromio(s, d, c)	memcpy_fromio((void *)(d), (s), (c))

==== //depot/projects/soc2006/intr_filter/dev/isp/isp.c#12 (text+ko) ====

@@ -43,7 +43,7 @@
 #endif
 #ifdef	__FreeBSD__
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/isp/isp.c,v 1.136 2007/01/05 22:59:26 mjacob Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/isp/isp.c,v 1.137 2007/01/20 04:00:20 mjacob Exp $");
 #include <dev/isp/isp_freebsd.h>
 #endif
 #ifdef	__OpenBSD__
@@ -1170,6 +1170,14 @@
 			isp->isp_maxluns = 16;
 		}
 	}
+	/*
+	 * Must do this first to get defaults established.
+	 */
+	isp_setdfltparm(isp, 0);
+	if (IS_DUALBUS(isp)) {
+		isp_setdfltparm(isp, 1);
+	}
+
 }
 
 /*
@@ -1181,14 +1189,6 @@
 void
 isp_init(ispsoftc_t *isp)
 {
-	/*
-	 * Must do this first to get defaults established.
-	 */
-	isp_setdfltparm(isp, 0);
-	if (IS_DUALBUS(isp)) {
-		isp_setdfltparm(isp, 1);
-	}
-
 	if (IS_FC(isp)) {
 		/*
 		 * Do this *before* initializing the firmware.
@@ -3956,6 +3956,7 @@
 static uint16_t
 isp_nxt_handle(ispsoftc_t *isp, uint16_t handle)
 {
+	int i;
 	if (handle == NIL_HANDLE) {
 		if (FCPARAM(isp)->isp_topo == TOPO_F_PORT) {
 			handle = 0;
@@ -3982,9 +3983,16 @@
 	}
 	if (handle == FCPARAM(isp)->isp_loopid) {
 		return (isp_nxt_handle(isp, handle));
-	} else {
-		return (handle);
+	}
+	for (i = 0; i < MAX_FC_TARG; i++) {
+		if (FCPARAM(isp)->portdb[i].state == FC_PORTDB_STATE_NIL) {
+			continue;
+		}
+		if (FCPARAM(isp)->portdb[i].handle == handle) {
+			return (isp_nxt_handle(isp, handle));
+		}
 	}
+	return (handle);
 }
 
 /*
@@ -7034,15 +7042,16 @@
 		fcp->isp_retry_count = ICB_DFLT_RCOUNT;
 		/* Platform specific.... */
 		fcp->isp_loopid = DEFAULT_LOOPID(isp);
-		fcp->isp_nodewwn = DEFAULT_NODEWWN(isp);
-		fcp->isp_portwwn = DEFAULT_PORTWWN(isp);
+		fcp->isp_wwnn_nvram = DEFAULT_NODEWWN(isp);
+		fcp->isp_wwpn_nvram = DEFAULT_PORTWWN(isp);
 		fcp->isp_fwoptions = 0;
 		fcp->isp_fwoptions |= ICBOPT_FAIRNESS;
 		fcp->isp_fwoptions |= ICBOPT_PDBCHANGE_AE;
 		fcp->isp_fwoptions |= ICBOPT_HARD_ADDRESS;
 		fcp->isp_fwoptions |= ICBOPT_FAST_POST;
-		if (isp->isp_confopts & ISP_CFG_FULL_DUPLEX)
+		if (isp->isp_confopts & ISP_CFG_FULL_DUPLEX) {
 			fcp->isp_fwoptions |= ICBOPT_FULL_DUPLEX;
+		}
 
 		/*
 		 * Make sure this is turned off now until we get
@@ -7052,7 +7061,7 @@
 
 		/*
 		 * Now try and read NVRAM unless told to not do so.
-		 * This will set fcparam's isp_nodewwn && isp_portwwn.
+		 * This will set fcparam's isp_wwnn_nvram && isp_wwpn_nvram.
 		 */
 		if ((isp->isp_confopts & ISP_CFG_NONVRAM) == 0) {
 		    	nvfail = isp_read_nvram(isp);
@@ -7081,8 +7090,8 @@
 			 * We always start out with values derived
 			 * from NVRAM or our platform default.
 			 */
-			ISP_NODEWWN(isp) = fcp->isp_nodewwn;
-			if (fcp->isp_nodewwn == 0) {
+			ISP_NODEWWN(isp) = fcp->isp_wwnn_nvram;
+			if (fcp->isp_wwnn_nvram == 0) {
 				isp_prt(isp, ISP_LOGCONFIG,
 				    "bad WWNN- using default");
 				ISP_NODEWWN(isp) = DEFAULT_NODEWWN(isp);
@@ -7098,8 +7107,8 @@
 			 * We always start out with values derived
 			 * from NVRAM or our platform default.
 			 */
-			ISP_PORTWWN(isp) = fcp->isp_portwwn;
-			if (fcp->isp_portwwn == 0) {
+			ISP_PORTWWN(isp) = fcp->isp_wwpn_nvram;
+			if (fcp->isp_wwpn_nvram == 0) {
 				isp_prt(isp, ISP_LOGCONFIG,
 				    "bad WWPN- using default");
 				ISP_PORTWWN(isp) = DEFAULT_PORTWWN(isp);
@@ -7841,10 +7850,10 @@
 	/*
 	 * Make sure we have both Node and Port as non-zero values.
 	 */
-	if (fcp->isp_nodewwn != 0 && fcp->isp_portwwn == 0) {
-		fcp->isp_portwwn = fcp->isp_nodewwn;
-	} else if (fcp->isp_nodewwn == 0 && fcp->isp_portwwn != 0) {
-		fcp->isp_nodewwn = fcp->isp_portwwn;
+	if (fcp->isp_wwnn_nvram != 0 && fcp->isp_wwpn_nvram == 0) {
+		fcp->isp_wwpn_nvram = fcp->isp_wwnn_nvram;
+	} else if (fcp->isp_wwnn_nvram == 0 && fcp->isp_wwpn_nvram != 0) {
+		fcp->isp_wwnn_nvram = fcp->isp_wwpn_nvram;
 	}
 
 	/*
@@ -7853,14 +7862,14 @@
 	 * make sure that there's some non-zero value in 48..56
 	 * for the Port WWN.
 	 */
-	if (fcp->isp_nodewwn && fcp->isp_portwwn) {
-		if ((fcp->isp_nodewwn & (((uint64_t) 0xfff) << 48)) != 0 &&
-		    (fcp->isp_nodewwn >> 60) == 2) {
-			fcp->isp_nodewwn &= ~((uint64_t) 0xfff << 48);
+	if (fcp->isp_wwnn_nvram && fcp->isp_wwpn_nvram) {
+		if ((fcp->isp_wwnn_nvram & (((uint64_t) 0xfff) << 48)) != 0 &&
+		    (fcp->isp_wwnn_nvram >> 60) == 2) {
+			fcp->isp_wwnn_nvram &= ~((uint64_t) 0xfff << 48);
 		}
-		if ((fcp->isp_portwwn & (((uint64_t) 0xfff) << 48)) == 0 &&
-		    (fcp->isp_portwwn >> 60) == 2) {
-			fcp->isp_portwwn |= ((uint64_t) 1 << 56);
+		if ((fcp->isp_wwpn_nvram & (((uint64_t) 0xfff) << 48)) == 0 &&
+		    (fcp->isp_wwpn_nvram >> 60) == 2) {
+			fcp->isp_wwpn_nvram |= ((uint64_t) 1 << 56);
 		}
 	}
 }
@@ -7890,7 +7899,7 @@
 			wwn |= (((uint64_t) 2)<< 60);
 		}
 	}
-	fcp->isp_portwwn = wwn;
+	fcp->isp_wwpn_nvram = wwn;
 	if (IS_2200(isp) || IS_23XX(isp)) {
 		wwn = ISP2100_NVRAM_NODE_NAME(nvram_data);
 		if (wwn) {
@@ -7904,7 +7913,7 @@
 	} else {
 		wwn &= ~((uint64_t) 0xfff << 48);
 	}
-	fcp->isp_nodewwn = wwn;
+	fcp->isp_wwnn_nvram = wwn;
 
 	isp_fix_nvram_wwns(isp);
 
@@ -7924,8 +7933,8 @@
 	fcp->isp_fwoptions = ISP2100_NVRAM_OPTIONS(nvram_data);
 	isp_prt(isp, ISP_LOGDEBUG0,
 	    "NVRAM 0x%08x%08x 0x%08x%08x maxalloc %d maxframelen %d",
-	    (uint32_t) (fcp->isp_nodewwn >> 32), (uint32_t) fcp->isp_nodewwn,
-	    (uint32_t) (fcp->isp_portwwn >> 32), (uint32_t) fcp->isp_portwwn,
+	    (uint32_t) (fcp->isp_wwnn_nvram >> 32), (uint32_t) fcp->isp_wwnn_nvram,
+	    (uint32_t) (fcp->isp_wwpn_nvram >> 32), (uint32_t) fcp->isp_wwpn_nvram,
 	    ISP2100_NVRAM_MAXIOCBALLOCATION(nvram_data),
 	    ISP2100_NVRAM_MAXFRAMELENGTH(nvram_data));
 	isp_prt(isp, ISP_LOGDEBUG0,
@@ -7969,7 +7978,7 @@
 			wwn = 0;
 		}
 	}
-	fcp->isp_portwwn = wwn;
+	fcp->isp_wwpn_nvram = wwn;
 
 	wwn = ISP2400_NVRAM_NODE_NAME(nvram_data);
 	if (wwn) {
@@ -7977,7 +7986,7 @@
 			wwn = 0;
 		}
 	}
-	fcp->isp_nodewwn = wwn;
+	fcp->isp_wwnn_nvram = wwn;
 
 	isp_fix_nvram_wwns(isp);
 

==== //depot/projects/soc2006/intr_filter/dev/isp/isp_freebsd.c#9 (text+ko) ====

@@ -29,7 +29,7 @@
  * Platform (FreeBSD) dependent common attachment code for Qlogic adapters.
  */
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/isp/isp_freebsd.c,v 1.132 2006/12/18 23:50:30 mjacob Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/isp/isp_freebsd.c,v 1.133 2007/01/20 04:00:20 mjacob Exp $");
 #include <dev/isp/isp_freebsd.h>
 #include <sys/unistd.h>
 #include <sys/kthread.h>
@@ -42,6 +42,7 @@
 #include <sys/sysctl.h>
 #endif
 #include <cam/cam_periph.h>

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


More information about the p4-projects mailing list