Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 22 Nov 2004 00:01:55 GMT
From:      Marcel Moolenaar <marcel@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 65632 for review
Message-ID:  <200411220001.iAM01twa092932@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=65632

Change 65632 by marcel@marcel_nfs on 2004/11/22 00:01:39

	IFC @65631

Affected files ...

.. //depot/projects/uart/amd64/amd64/busdma_machdep.c#9 integrate
.. //depot/projects/uart/arm/arm/db_interface.c#2 integrate
.. //depot/projects/uart/arm/arm/db_trace.c#3 integrate
.. //depot/projects/uart/arm/arm/swtch.S#3 integrate
.. //depot/projects/uart/arm/arm/undefined.c#3 integrate
.. //depot/projects/uart/arm/include/db_machdep.h#3 integrate
.. //depot/projects/uart/arm/include/kdb.h#2 integrate
.. //depot/projects/uart/boot/efi/loader/main.c#4 integrate
.. //depot/projects/uart/ddb/db_run.c#3 integrate
.. //depot/projects/uart/dev/aac/aac.c#11 integrate
.. //depot/projects/uart/dev/bge/if_bge.c#14 integrate
.. //depot/projects/uart/dev/ed/if_ed.c#6 integrate
.. //depot/projects/uart/dev/fdc/fdc.c#5 integrate
.. //depot/projects/uart/dev/ic/sab82532.h#2 integrate
.. //depot/projects/uart/dev/ic/z8530.h#2 integrate
.. //depot/projects/uart/dev/uart/uart_cpu_pc98.c#10 integrate
.. //depot/projects/uart/dev/uart/uart_dev_i8251.c#5 delete
.. //depot/projects/uart/dev/uart/uart_dev_i8251.h#2 delete
.. //depot/projects/uart/dev/uart/uart_dev_ns8250.h#5 delete
.. //depot/projects/uart/dev/uart/uart_dev_sab82532.c#34 integrate
.. //depot/projects/uart/dev/uart/uart_dev_sab82532.h#4 delete
.. //depot/projects/uart/dev/uart/uart_dev_z8530.c#20 integrate
.. //depot/projects/uart/dev/uart/uart_dev_z8530.h#8 delete
.. //depot/projects/uart/i386/i386/busdma_machdep.c#12 integrate
.. //depot/projects/uart/ia64/ia64/pmap.c#15 integrate
.. //depot/projects/uart/ia64/include/pte.h#3 integrate
.. //depot/projects/uart/kern/kern_descrip.c#12 integrate
.. //depot/projects/uart/netinet/tcp_fsm.h#3 integrate

Differences ...

==== //depot/projects/uart/amd64/amd64/busdma_machdep.c#9 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/busdma_machdep.c,v 1.61 2004/11/19 17:51:29 scottl Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/busdma_machdep.c,v 1.63 2004/11/21 06:28:09 scottl Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -40,7 +40,6 @@
 #include <sys/mbuf.h>
 #include <sys/uio.h>
 #include <sys/sysctl.h>
-#include <sys/ktr.h>
 
 #include <vm/vm.h>
 #include <vm/vm_page.h>
@@ -87,6 +86,7 @@
 struct bounce_zone {
 	STAILQ_ENTRY(bounce_zone) links;
 	STAILQ_HEAD(bp_list, bounce_page) bounce_page_list;
+	int		total_bpages;
 	int		free_bpages;
 	int		reserved_bpages;
 	int		active_bpages;
@@ -128,7 +128,7 @@
 static struct bus_dmamap nobounce_dmamap;
 
 static void init_bounce_pages(void *dummy);
-static struct bounce_zone * alloc_bounce_zone(bus_dma_tag_t dmat);
+static int alloc_bounce_zone(bus_dma_tag_t dmat);
 static int alloc_bounce_pages(bus_dma_tag_t dmat, u_int numpages);
 static int reserve_bounce_pages(bus_dma_tag_t dmat, bus_dmamap_t map,
 				int commit);
@@ -200,7 +200,8 @@
 	panic("driver error: busdma dflt_lock called");
 }
 
-#define BUS_DMA_MIN_ALLOC_COMP BUS_DMA_BUS4
+#define BUS_DMA_COULD_BOUNCE	BUS_DMA_BUS3
+#define BUS_DMA_MIN_ALLOC_COMP	BUS_DMA_BUS4
 /*
  * Allocate a device specific dma_tag.
  */
@@ -274,11 +275,21 @@
 		if (newtag->parent != NULL)
 			atomic_add_int(&parent->ref_count, 1);
 	}
-	
-	if (newtag->lowaddr < ptoa((vm_paddr_t)Maxmem) &&
+
+	if (newtag->lowaddr < ptoa((vm_paddr_t)Maxmem)
+	 || newtag->alignment > 1 || newtag->boundary > 0)
+		newtag->flags |= BUS_DMA_COULD_BOUNCE;
+
+	if (((newtag->flags & BUS_DMA_COULD_BOUNCE) != 0) &&
 	    (flags & BUS_DMA_ALLOCNOW) != 0) {
+		struct bounce_zone *bz;
+
 		/* Must bounce */
 
+		if ((error = alloc_bounce_zone(newtag)) != 0)
+			return (error);
+		bz = newtag->bounce_zone;
+
 		if (lowaddr > bounce_lowaddr) {
 			/*
 			 * Go through the pool and kill any pages
@@ -287,10 +298,10 @@
 			panic("bus_dma_tag_create: page reallocation "
 			      "not implemented");
 		}
-		if (ptoa(total_bpages) < maxsize) {
+		if (ptoa(bz->total_bpages) < maxsize) {
 			int pages;
 
-			pages = atop(maxsize) - total_bpages;
+			pages = atop(maxsize) - bz->total_bpages;
 
 			/* Add pages to our bounce pool */
 			if (alloc_bounce_pages(newtag, pages) < pages)
@@ -378,12 +389,16 @@
 	 * exclusion region, a data alignment that is stricter than 1, and/or
 	 * an active address boundary.
 	 */
-	if (dmat->lowaddr < ptoa((vm_paddr_t)Maxmem)
-	 || dmat->alignment > 1 || dmat->boundary > 0) {
+	if (dmat->flags & BUS_DMA_COULD_BOUNCE) {
 
 		/* Must bounce */
 		int maxpages;
 
+		if (dmat->bounce_zone == NULL) {
+			if ((error = alloc_bounce_zone(dmat)) != 0)
+				return (error);
+		}
+
 		*mapp = (bus_dmamap_t)malloc(sizeof(**mapp), M_DEVBUF,
 					     M_NOWAIT | M_ZERO);
 		if (*mapp == NULL) {
@@ -564,8 +579,7 @@
 		map = &nobounce_dmamap;
 
 	if ((map != &nobounce_dmamap && map->pagesneeded == 0) 
-	 && (dmat->lowaddr < ptoa((vm_paddr_t)Maxmem)
-	 || dmat->boundary > 0 || dmat->alignment > 1)) {
+	 && ((dmat->flags & BUS_DMA_COULD_BOUNCE) != 0)) {
 		vm_offset_t	vendaddr;
 
 		CTR4(KTR_BUSDMA, "lowaddr= %d Maxmem= %d, boundary= %d, "
@@ -898,14 +912,24 @@
 	return (bz->sysctl_tree_top);
 }
 
-static struct bounce_zone *
+static int
 alloc_bounce_zone(bus_dma_tag_t dmat)
 {
 	struct bounce_zone *bz;
 
+	/* Check to see if we already have a suitable zone */
+	STAILQ_FOREACH(bz, &bounce_zone_list, links) {
+		if ((dmat->alignment <= bz->alignment)
+		 && (dmat->boundary <= bz->boundary)
+		 && (dmat->lowaddr >= bz->lowaddr)) {
+			dmat->bounce_zone = bz;
+			return (0);
+		}
+	}
+
 	if ((bz = (struct bounce_zone *)malloc(sizeof(*bz), M_DEVBUF,
 	    M_NOWAIT | M_ZERO)) == NULL)
-		return (NULL);
+		return (ENOMEM);
 
 	STAILQ_INIT(&bz->bounce_page_list);
 	bz->free_bpages = 0;
@@ -918,6 +942,7 @@
 	busdma_zonecount++;
 	snprintf(bz->lowaddrid, 18, "%#jx", (uintmax_t)bz->lowaddr);
 	STAILQ_INSERT_TAIL(&bounce_zone_list, bz, links);
+	dmat->bounce_zone = bz;
 
 	sysctl_ctx_init(&bz->sysctl_tree);
 	bz->sysctl_tree_top = SYSCTL_ADD_NODE(&bz->sysctl_tree,
@@ -925,11 +950,15 @@
 	    CTLFLAG_RD, 0, "");
 	if (bz->sysctl_tree_top == NULL) {
 		sysctl_ctx_free(&bz->sysctl_tree);
-		return (bz);
+		return (0);	/* XXX error code? */
 	}
 
 	SYSCTL_ADD_INT(busdma_sysctl_tree(bz),
 	    SYSCTL_CHILDREN(busdma_sysctl_tree_top(bz)), OID_AUTO,
+	    "total_bpages", CTLFLAG_RD, &bz->total_bpages, 0,
+	    "Totoal bounce pages");
+	SYSCTL_ADD_INT(busdma_sysctl_tree(bz),
+	    SYSCTL_CHILDREN(busdma_sysctl_tree_top(bz)), OID_AUTO,
 	    "free_bpages", CTLFLAG_RD, &bz->free_bpages, 0,
 	    "Free bounce pages");
 	SYSCTL_ADD_INT(busdma_sysctl_tree(bz),
@@ -958,7 +987,7 @@
 	    SYSCTL_CHILDREN(busdma_sysctl_tree_top(bz)), OID_AUTO,
 	    "boundary", CTLFLAG_RD, &bz->boundary, 0, "");
 
-	return (bz);
+	return (0);
 }
 
 static int
@@ -968,21 +997,6 @@
 	int count;
 
 	bz = dmat->bounce_zone;
-	if (bz == NULL) {
-		STAILQ_FOREACH(bz, &bounce_zone_list, links) {
-			if ((dmat->alignment <= bz->alignment)
-			 && (dmat->boundary <= bz->boundary)
-			 && (dmat->lowaddr >= bz->lowaddr))
-				break;
-		}
-
-		if (bz == NULL) {
-			if ((bz = alloc_bounce_zone(dmat)) == NULL)
-				return (ENOMEM);
-		}
-		dmat->bounce_zone = bz;
-	}
-
 	count = 0;
 	while (numpages > 0) {
 		struct bounce_page *bpage;
@@ -1005,6 +1019,7 @@
 		mtx_lock(&bounce_lock);
 		STAILQ_INSERT_TAIL(&bz->bounce_page_list, bpage, links);
 		total_bpages++;
+		bz->total_bpages++;
 		bz->free_bpages++;
 		mtx_unlock(&bounce_lock);
 		count++;

==== //depot/projects/uart/arm/arm/db_interface.c#2 (text+ko) ====

@@ -35,7 +35,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/arm/db_interface.c,v 1.2 2004/07/12 21:25:01 cognet Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/arm/db_interface.c,v 1.3 2004/11/21 18:11:39 cognet Exp $");
 #include "opt_ddb.h"
 
 #include <sys/param.h>
@@ -43,6 +43,9 @@
 #include <sys/reboot.h>
 #include <sys/systm.h>	/* just for boothowto */
 #include <sys/exec.h>
+#ifdef KDB
+#include <sys/kdb.h>
+#endif
 
 #include <vm/vm.h>
 #include <vm/pmap.h>
@@ -192,11 +195,6 @@
 	char *dst;
 	size_t loop;
 
-	/* If any part is in kernel text, use db_write_text() */
-	if (addr >= (vm_offset_t) btext && addr < (vm_offset_t) etext) {
-		return (-1);
-	}
-
 	dst = (char *)addr;
 	if (db_validate_address((u_int)dst)) {
 		db_printf("address %p is invalid\n", dst);
@@ -229,4 +227,93 @@
 }
 
 
+static u_int
+db_fetch_reg(int reg)
+{
+
+	switch (reg) {
+	case 0:
+		return (kdb_frame->tf_r0);
+	case 1:
+		return (kdb_frame->tf_r1);
+	case 2:
+		return (kdb_frame->tf_r2);
+	case 3:
+		return (kdb_frame->tf_r3);
+	case 4:
+		return (kdb_frame->tf_r4);
+	case 5:
+		return (kdb_frame->tf_r5);
+	case 6:
+		return (kdb_frame->tf_r6);
+	case 7:
+		return (kdb_frame->tf_r7);
+	case 8:
+		return (kdb_frame->tf_r8);
+	case 9:
+		return (kdb_frame->tf_r9);
+	case 10:
+		return (kdb_frame->tf_r10);
+	case 11:
+		return (kdb_frame->tf_r11);
+	case 12:
+		return (kdb_frame->tf_r12);
+	case 13:
+		return (kdb_frame->tf_svc_sp);
+	case 14:
+		return (kdb_frame->tf_svc_lr);
+	case 15:
+		return (kdb_frame->tf_pc);
+	default:
+		panic("db_fetch_reg: botch");
+	}
+}
+
+u_int
+branch_taken(u_int insn, db_addr_t pc)
+{
+	u_int addr, nregs;
+
+	switch ((insn >> 24) & 0xf) {
+	case 0xa:	/* b ... */
+	case 0xb:	/* bl ... */
+		addr = ((insn << 2) & 0x03ffffff);
+		if (addr & 0x02000000)
+			addr |= 0xfc000000;
+		return (pc + 8 + addr);
+	case 0x7:	/* ldr pc, [pc, reg, lsl #2] */
+		addr = db_fetch_reg(insn & 0xf);
+		addr = pc + 8 + (addr << 2);
+		db_read_bytes(addr, 4, (char *)&addr);
+		return (addr);
+	case 0x1:	/* mov pc, reg */
+		addr = db_fetch_reg(insn & 0xf);
+		return (addr);
+	case 0x8:	/* ldmxx reg, {..., pc} */
+	case 0x9:
+		addr = db_fetch_reg((insn >> 16) & 0xf);
+		nregs = (insn  & 0x5555) + ((insn  >> 1) & 0x5555);
+		nregs = (nregs & 0x3333) + ((nregs >> 2) & 0x3333);
+		nregs = (nregs + (nregs >> 4)) & 0x0f0f;
+		nregs = (nregs + (nregs >> 8)) & 0x001f;
+		switch ((insn >> 23) & 0x3) {
+		case 0x0:	/* ldmda */
+			addr = addr - 0;
+			break;
+		case 0x1:	/* ldmia */
+			addr = addr + 0 + ((nregs - 1) << 2);
+			break;
+		case 0x2:	/* ldmdb */
+			addr = addr - 4;
+			break;
+		case 0x3:	/* ldmib */
+			addr = addr + 4 + ((nregs - 1) << 2);
+			break;
+		}
+		db_read_bytes(addr, 4, (char *)&addr);
+		return (addr);
+	default:
+		panic("branch_taken: botch");
+	}
+}
 

==== //depot/projects/uart/arm/arm/db_trace.c#3 (text+ko) ====

@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/arm/db_trace.c,v 1.7 2004/11/01 22:15:13 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/arm/db_trace.c,v 1.8 2004/11/21 19:41:27 cognet Exp $");
 #include <sys/param.h>
 #include <sys/systm.h>
 
@@ -87,53 +87,17 @@
 #define FR_RFP	(-3)
 
 static void
-db_stack_trace_cmd(db_expr_t addr, int have_addr, db_expr_t count, char *modif)
+db_stack_trace_cmd(db_expr_t addr, db_expr_t count)
 {
 	u_int32_t	*frame, *lastframe;
 	c_db_sym_t sym;
-	char c, *cp = modif;
 	const char *name;
 	db_expr_t value;
 	db_expr_t offset;
 	boolean_t	kernel_only = TRUE;
-	boolean_t	trace_thread = FALSE;
 	int	scp_offset, quit;
 
-	if (kdb_frame == NULL && !have_addr)
-		return;
-	while (modif && ((c = *cp++) != 0)) {
-		if (c == 'u')
-			kernel_only = FALSE;
-		if (c == 't')
-			trace_thread = TRUE;
-	}
-
-	if (!have_addr)
-		frame = (u_int32_t *)(kdb_frame->tf_r11);
-	else {
-		if (trace_thread) {
-			struct proc *p;
-			struct thread *td;
-			pid_t pid = (pid_t)addr;
-			LIST_FOREACH(p, &allproc, p_list) {
-				if (p->p_pid == pid)
-					break;
-			}
-
-			if (p == NULL) {
-				db_printf("not found\n");
-				return;
-			}	
-			if (!(p->p_sflag & PS_INMEM)) {
-				db_printf("swapped out\n");
-				return;
-			}
-			td = FIRST_THREAD_IN_PROC(p);
-			frame = (u_int32_t *)(td->td_pcb->un_32.pcb32_r11);
-			db_printf("at %p\n", frame);
-		} else
-			frame = (u_int32_t *)(addr);
-	}
+	frame = (u_int32_t *)addr;
 	lastframe = NULL;
 	scp_offset = -(get_pc_str_offset() >> 2);
 
@@ -152,8 +116,6 @@
 		 */
 		scp = frame[FR_SCP];
 
-		db_printsym(scp, DB_STGY_PROC);
-		db_printf("\n\t");
 		sym = db_search_symbol(scp, DB_STGY_ANY, &offset);
 		if (sym == C_DB_SYM_NULL) {
 			value = 0;
@@ -248,7 +210,7 @@
 		addr = (uint32_t)__builtin_frame_address(0);
 	else
 		addr = thr->td_pcb->un_32.pcb32_r11;
-	db_stack_trace_cmd(addr, 1, -1, NULL);
+	db_stack_trace_cmd(addr, -1);
 	return (0);
 }
 

==== //depot/projects/uart/arm/arm/swtch.S#3 (text+ko) ====

@@ -83,7 +83,7 @@
 #include <machine/asm.h>
 #include <machine/asmacros.h>
 #include <machine/armreg.h>
-__FBSDID("$FreeBSD: src/sys/arm/arm/swtch.S,v 1.6 2004/11/09 16:47:47 cognet Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/arm/swtch.S,v 1.7 2004/11/21 19:33:47 cognet Exp $");
 
 
 /*
@@ -468,6 +468,7 @@
 	mov	r1, r5
 	mov	r2, sp
 	mov	r0, r4
+	mov	fp, #0
 	bl	_C_LABEL(fork_exit)
 	/* Kill irq"s */
 	mrs	r0, cpsr

==== //depot/projects/uart/arm/arm/undefined.c#3 (text+ko) ====

@@ -45,8 +45,10 @@
  */
 
 
+#include "opt_ddb.h"
+
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/arm/undefined.c,v 1.2 2004/11/20 16:52:10 cognet Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/arm/undefined.c,v 1.3 2004/11/21 18:11:39 cognet Exp $");
 
 #include <sys/param.h>
 #include <sys/malloc.h>
@@ -263,21 +265,13 @@
 	if ((fault_code & FAULT_USER) == 0) {
 		if (fault_instruction == KERNEL_BREAKPOINT) {
 #ifdef KDB
-		kdb_trap(0, 0, frame);
+		kdb_trap(T_BREAKPOINT, 0, frame);
 #else
 		printf("No debugger in kernel.\n");
 #endif
-		frame->tf_pc += 4;
 		return;
-		} else {
-#ifdef KDB
-			printf("Undefined instruction in kernel.\n");
-			kdb_trap(0, 0, frame);
-#else
+		} else
 			panic("Undefined instruction in kernel.\n");
-#endif
-		}
-		
 	}		
 
 #ifdef FAST_FPE

==== //depot/projects/uart/arm/include/db_machdep.h#3 (text+ko) ====

@@ -24,7 +24,7 @@
  * the rights to redistribute these changes.
  *
  *	from: FreeBSD: src/sys/i386/include/db_machdep.h,v 1.16 1999/10/04
- * $FreeBSD: src/sys/arm/include/db_machdep.h,v 1.3 2004/11/20 16:52:09 cognet Exp $
+ * $FreeBSD: src/sys/arm/include/db_machdep.h,v 1.4 2004/11/21 18:11:38 cognet Exp $
  */
 
 #ifndef	_MACHINE_DB_MACHDEP_H_
@@ -34,8 +34,6 @@
 #include <machine/trap.h>
 #include <machine/armreg.h>
 
-#define	BYTE_MSF	(1)
-
 #define T_BREAKPOINT	(1)
 typedef vm_offset_t	db_addr_t;
 typedef int		db_expr_t;
@@ -50,8 +48,7 @@
 	kdb_frame->tf_pc += BKPT_SIZE; \
 } while (0)
 
-#define	db_clear_single_step(regs)
-#define	db_set_single_step(regs)
+#define SOFTWARE_SSTEP	1
 
 #define	IS_BREAKPOINT_TRAP(type, code)	(type == T_BREAKPOINT)
 #define	IS_WATCHPOINT_TRAP(type, code)	(0)
@@ -65,7 +62,8 @@
 /* mov pc, reg
 					    0000000f  register */
 #define	inst_return(ins)	(((ins) & 0x0e108000) == 0x08108000 || \
-				 ((ins) & 0x0ff0fff0) == 0x01a0f000)
+				 ((ins) & 0x0ff0fff0) == 0x01a0f000 ||	\
+				 ((ins) & 0x0ffffff0) == 0x012fff10) /* bx */
 /* bl ...
 					    00ffffff  offset>>2 */
 #define	inst_call(ins)		(((ins) & 0x0f000000) == 0x0b000000)
@@ -74,14 +72,21 @@
 /* ldr pc, [pc, reg, lsl #2]
 					    0000000f  register */
 
+#define	inst_branch(ins)	(((ins) & 0x0f000000) == 0x0a000000 || \
+				 ((ins) & 0x0fdffff0) == 0x079ff100)
 
 #define	inst_load(ins)		(0)
 #define	inst_store(ins)		(0)
 
+#define next_instr_address(pc, bd)	((bd) ? (pc) : ((pc) + INSN_SIZE))
+
 #define	DB_SMALL_VALUE_MAX	(0x7fffffff)
 #define	DB_SMALL_VALUE_MIN	(-0x40001)
 
-#define	DB_ELFSIZE		64
+#define	DB_ELFSIZE		32
 
 int db_validate_address(vm_offset_t);
+
+u_int branch_taken (u_int insn, u_int pc);
+
 #endif /* !_MACHINE_DB_MACHDEP_H_ */

==== //depot/projects/uart/arm/include/kdb.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/arm/include/kdb.h,v 1.1 2004/07/12 21:17:51 cognet Exp $
+ * $FreeBSD: src/sys/arm/include/kdb.h,v 1.2 2004/11/21 18:11:38 cognet Exp $
  */
 
 #ifndef _MACHINE_KDB_H_
@@ -31,6 +31,7 @@
 
 #include <machine/frame.h>
 #include <machine/psl.h>
+#include <machine/cpufunc.h>
 
 static __inline void
 kdb_cpu_clear_singlestep(void)
@@ -45,6 +46,7 @@
 static __inline void
 kdb_cpu_trap(int type, int code)
 {
+	cpu_idcache_wbinv_all();
 }
 
 #endif /* _MACHINE_KDB_H_ */

==== //depot/projects/uart/boot/efi/loader/main.c#4 (text+ko) ====

@@ -26,7 +26,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/boot/efi/loader/main.c,v 1.22 2004/09/23 18:37:36 marcel Exp $");
+__FBSDID("$FreeBSD: src/sys/boot/efi/loader/main.c,v 1.23 2004/11/21 21:40:08 marcel Exp $");
 
 #include <stand.h>
 #include <string.h>
@@ -388,7 +388,7 @@
 	int i, maxtr;
 	struct {
 		pt_entry_t	pte;
-		struct ia64_itir itir;
+		uint64_t	itir;
 		uint64_t	ifa;
 		struct ia64_rr	rr;
 	} buf;
@@ -445,7 +445,8 @@
 			buf.pte &= ~PTE_MA_MASK;
 		sprintf(lbuf, "%03d %06x %013lx %013lx %4s %d  %d  %d  %d %d "
 		    "%-3s %d %06x\n", i, buf.rr.rr_rid, buf.ifa >> 12,
-		    (buf.pte & PTE_PPN_MASK) >> 12, psnames[buf.itir.ps],
+		    (buf.pte & PTE_PPN_MASK) >> 12,
+		    psnames[(buf.itir & ITIR_PS_MASK) >> 2],
 		    (buf.pte & PTE_ED) ? 1 : 0,
 		    (int)(buf.pte & PTE_AR_MASK) >> 9,
 		    (int)(buf.pte & PTE_PL_MASK) >> 7,
@@ -453,7 +454,7 @@
 		    (buf.pte & PTE_ACCESSED) ? 1 : 0,
 		    manames[(buf.pte & PTE_MA_MASK) >> 2],
 		    (buf.pte & PTE_PRESENT) ? 1 : 0,
-		    buf.itir.key);
+		    (int)((buf.itir & ITIR_KEY_MASK) >> 8));
 		pager_output(lbuf);
 	}
 	pager_close();

==== //depot/projects/uart/ddb/db_run.c#3 (text+ko) ====

@@ -33,7 +33,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/ddb/db_run.c,v 1.24 2004/07/10 23:47:19 marcel Exp $");
+__FBSDID("$FreeBSD: src/sys/ddb/db_run.c,v 1.25 2004/11/21 18:11:02 cognet Exp $");
 
 #include <sys/param.h>
 #include <sys/kdb.h>
@@ -71,6 +71,11 @@
 void db_clear_single_step(void);
 #endif
 
+#ifdef SOFTWARE_SSTEP
+db_breakpoint_t	db_not_taken_bkpt = 0;
+db_breakpoint_t	db_taken_bkpt = 0;
+#endif
+
 boolean_t
 db_stop_at_pc(is_breakpoint)
 	boolean_t	*is_breakpoint;
@@ -78,10 +83,16 @@
 	register db_addr_t	pc;
 	register db_breakpoint_t bkpt;
 
+	pc = PC_REGS();
+#ifdef SOFTWARE_SSTEP
+	if ((db_not_taken_bkpt != 0 && pc == db_not_taken_bkpt->address)
+	    || (db_taken_bkpt != 0 && pc == db_taken_bkpt->address))
+		*is_breakpoint = FALSE;
+#endif
+
 	db_clear_single_step();
 	db_clear_breakpoints();
 	db_clear_watchpoints();
-	pc = PC_REGS();
 
 #ifdef	FIXUP_PC_AFTER_BREAK
 	if (*is_breakpoint) {
@@ -245,8 +256,6 @@
  *	we allocate a breakpoint and save it here.
  *	These breakpoints are deleted on return.
  */
-db_breakpoint_t	db_not_taken_bkpt = 0;
-db_breakpoint_t	db_taken_bkpt = 0;
 
 void
 db_set_single_step(void)

==== //depot/projects/uart/dev/aac/aac.c#11 (text+ko) ====

@@ -28,7 +28,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/aac/aac.c,v 1.103 2004/09/16 02:37:40 scottl Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/aac/aac.c,v 1.104 2004/11/21 04:03:29 scottl Exp $");
 
 /*
  * Driver for the Adaptec 'FSA' family of PCI/SCSI RAID adapters.
@@ -1485,7 +1485,7 @@
 			       1,			/* nsegments */
 			       AAC_FIB_COUNT *
 			       sizeof(struct aac_fib),	/* maxsegsize */
-			       BUS_DMA_ALLOCNOW,	/* flags */
+			       0,			/* flags */
 			       NULL, NULL,		/* No locking needed */
 			       &sc->aac_fib_dmat)) {
 		device_printf(sc->aac_dev, "can't allocate FIB DMA tag\n");;
@@ -1505,7 +1505,7 @@
 			       8192 + sizeof(struct aac_common), /* maxsize */
 			       1,			/* nsegments */
 			       BUS_SPACE_MAXSIZE_32BIT,	/* maxsegsize */
-			       BUS_DMA_ALLOCNOW,	/* flags */
+			       0,			/* flags */
 			       NULL, NULL,		/* No locking needed */
 			       &sc->aac_common_dmat)) {
 		device_printf(sc->aac_dev,

==== //depot/projects/uart/dev/bge/if_bge.c#14 (text+ko) ====

@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/bge/if_bge.c,v 1.80 2004/11/08 19:27:00 phk Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/bge/if_bge.c,v 1.81 2004/11/21 04:02:36 scottl Exp $");
 
 /*
  * Broadcom BCM570x family gigabit ethernet driver for FreeBSD.
@@ -1927,7 +1927,7 @@
 			NULL, NULL,		/* filter, filterarg */
 			MAXBSIZE, BGE_NSEG_NEW,	/* maxsize, nsegments */
 			BUS_SPACE_MAXSIZE_32BIT,/* maxsegsize */
-			BUS_DMA_ALLOCNOW,	/* flags */
+			0,			/* flags */
 			NULL, NULL,		/* lockfunc, lockarg */
 			&sc->bge_cdata.bge_parent_tag);
 
@@ -1937,7 +1937,7 @@
 	nseg = 32;
 	error = bus_dma_tag_create(sc->bge_cdata.bge_parent_tag, 1,
 	    0, BUS_SPACE_MAXADDR, BUS_SPACE_MAXADDR, NULL,
-	    NULL, MCLBYTES * nseg, nseg, MCLBYTES, 0, NULL, NULL,
+	    NULL, MCLBYTES * nseg, nseg, MCLBYTES, BUS_DMA_ALLOCNOW, NULL, NULL,
 	    &sc->bge_cdata.bge_mtag);
 
 	if (error) {

==== //depot/projects/uart/dev/ed/if_ed.c#6 (text+ko) ====

@@ -26,7 +26,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/ed/if_ed.c,v 1.235 2004/11/10 13:16:12 nyan Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/ed/if_ed.c,v 1.236 2004/11/21 02:42:09 mlaier Exp $");
 
 /*
  * Device driver for National Semiconductor DS8390/WD83C690 based ethernet
@@ -1720,7 +1720,9 @@
 	ifp->if_ioctl = ed_ioctl;
 	ifp->if_watchdog = ed_watchdog;
 	ifp->if_init = ed_init;
-	ifp->if_snd.ifq_maxlen = IFQ_MAXLEN;
+	IFQ_SET_MAXLEN(&ifp->if_snd, IFQ_MAXLEN);
+	ifp->if_snd.ifq_drv_maxlen = IFQ_MAXLEN;
+	IFQ_SET_READY(&ifp->if_snd);
 	ifp->if_linkmib = &sc->mibdata;
 	ifp->if_linkmiblen = sizeof sc->mibdata;
 	/*
@@ -2122,7 +2124,7 @@
 		ifp->if_flags |= IFF_OACTIVE;
 		return;
 	}
-	IF_DEQUEUE(&ifp->if_snd, m);
+	IFQ_DRV_DEQUEUE(&ifp->if_snd, m);
 	if (m == 0) {
 
 		/*

==== //depot/projects/uart/dev/fdc/fdc.c#5 (text+ko) ====

@@ -51,7 +51,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/fdc/fdc.c,v 1.302 2004/11/08 18:53:52 phk Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/fdc/fdc.c,v 1.303 2004/11/21 16:25:21 imp Exp $");
 
 #include "opt_fdc.h"
 
@@ -1957,6 +1957,11 @@
 	struct	fd_data *fd;
 
 	fd = device_get_softc(dev);
+	g_topology_lock();
+	g_wither_geom(fd->fd_geom, ENXIO);
+	g_topology_unlock();
+	while (device_get_state(dev) == DS_BUSY)
+		tsleep(fd, PZERO, "fdd", hz/10);
 	callout_drain(&fd->toffhandle);
 
 	return (0);

==== //depot/projects/uart/dev/ic/sab82532.h#2 (text+ko) ====

@@ -34,9 +34,12 @@
  * Agency (DARPA) and Air Force Research Laboratory, Air Force
  * Materiel Command, USAF, under agreement number F30602-01-2-0537.
  *
- * $FreeBSD: src/sys/dev/ic/sab82532.h,v 1.1 2003/09/06 23:13:47 marcel Exp $
+ * $FreeBSD: src/sys/dev/ic/sab82532.h,v 1.2 2004/11/21 01:33:39 marcel Exp $
  */
 
+#ifndef _DEV_IC_SAB82532_H_
+#define	_DEV_IC_SAB82532_H_
+
 /*
  * Register definitions for SAB82532 based on "Enhanced Serial Communication
  * Controller ESCC2 Version 3.2 User's Manual 07.96" from:
@@ -318,3 +321,5 @@
 #define	SAB_RSTAT_PE	0x80	/* parity error */
 #define	SAB_RSTAT_FE	0x40	/* framing error */
 #define	SAB_RSTAT_PAR	0x01	/* parity bit */
+
+#endif /* _DEV_IC_SAB82532_H_ */

==== //depot/projects/uart/dev/ic/z8530.h#2 (text+ko) ====

@@ -23,11 +23,11 @@
  * (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/ic/z8530.h,v 1.1 2003/09/06 23:13:47 marcel Exp $
+ * $FreeBSD: src/sys/dev/ic/z8530.h,v 1.2 2004/11/21 01:34:15 marcel Exp $
  */
 
-#ifndef _DEV_UART_DEV_Z8530_H_
-#define _DEV_UART_DEV_Z8530_H_
+#ifndef _DEV_IC_Z8530_H_
+#define	_DEV_IC_Z8530_H_
 
 /*
  * Channel B control:	0
@@ -249,4 +249,4 @@
 #define	TPC_RTS		0x02	/* RTS. */
 #define	TPC_CRC		0x01	/* CRC Enable. */
 
-#endif /* _DEV_UART_DEV_Z8530_H_ */
+#endif /* _DEV_IC_Z8530_H_ */

==== //depot/projects/uart/dev/uart/uart_cpu_pc98.c#10 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/uart/uart_cpu_pc98.c,v 1.13 2004/11/17 20:01:43 marius Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/uart/uart_cpu_pc98.c,v 1.14 2004/11/21 15:18:35 nyan Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -79,14 +79,8 @@
 		if (resource_int_value("uart", i, "port", &ivar) != 0 ||
 		    ivar == 0)
 			continue;
-		/*
-		 * Got it. Fill in the instance and return it. We have
-		 * both i8251 an ns8250 and successors on pc98.
-		 */
-		if (flags & 0x100)
-			di->ops = uart_ns8250_ops;
-		else
-			di->ops = uart_i8251_ops;
+
+		di->ops = uart_ns8250_ops;
 		di->bas.chan = 0;
 		di->bas.bst = uart_bus_space_io;
 		if (bus_space_map(di->bas.bst, ivar, 8, 0, &di->bas.bsh) != 0)

==== //depot/projects/uart/dev/uart/uart_dev_sab82532.c#34 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/uart/uart_dev_sab82532.c,v 1.7 2004/06/24 10:07:28 phk Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/uart/uart_dev_sab82532.c,v 1.8 2004/11/21 01:43:27 marcel Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -36,7 +36,8 @@
 #include <dev/uart/uart.h>
 #include <dev/uart/uart_cpu.h>
 #include <dev/uart/uart_bus.h>
-#include <dev/uart/uart_dev_sab82532.h>
+
+#include <dev/ic/sab82532.h>
 
 #include "uart_if.h"
 

==== //depot/projects/uart/dev/uart/uart_dev_z8530.c#20 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/uart/uart_dev_z8530.c,v 1.8 2004/06/24 10:07:28 phk Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/uart/uart_dev_z8530.c,v 1.9 2004/11/21 01:43:27 marcel Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -36,7 +36,8 @@
 #include <dev/uart/uart.h>
 #include <dev/uart/uart_cpu.h>
 #include <dev/uart/uart_bus.h>
-#include <dev/uart/uart_dev_z8530.h>
+
+#include <dev/ic/z8530.h>
 
 #include "uart_if.h"
 

==== //depot/projects/uart/i386/i386/busdma_machdep.c#12 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/i386/i386/busdma_machdep.c,v 1.65 2004/11/19 17:56:22 scottl Exp $");
+__FBSDID("$FreeBSD: src/sys/i386/i386/busdma_machdep.c,v 1.67 2004/11/21 06:28:35 scottl Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -40,7 +40,6 @@
 #include <sys/mbuf.h>
 #include <sys/uio.h>
 #include <sys/sysctl.h>
-#include <sys/ktr.h>
 
 #include <vm/vm.h>
 #include <vm/vm_page.h>
@@ -87,6 +86,7 @@
 struct bounce_zone {
 	STAILQ_ENTRY(bounce_zone) links;
 	STAILQ_HEAD(bp_list, bounce_page) bounce_page_list;
+	int		total_bpages;
 	int		free_bpages;
 	int		reserved_bpages;
 	int		active_bpages;
@@ -128,7 +128,7 @@
 static struct bus_dmamap nobounce_dmamap;
 
 static void init_bounce_pages(void *dummy);
-static struct bounce_zone * alloc_bounce_zone(bus_dma_tag_t dmat);
+static int alloc_bounce_zone(bus_dma_tag_t dmat);
 static int alloc_bounce_pages(bus_dma_tag_t dmat, u_int numpages);
 static int reserve_bounce_pages(bus_dma_tag_t dmat, bus_dmamap_t map,
 				int commit);
@@ -200,7 +200,8 @@
 	panic("driver error: busdma dflt_lock called");
 }
 
-#define BUS_DMA_MIN_ALLOC_COMP BUS_DMA_BUS4
+#define BUS_DMA_COULD_BOUNCE	BUS_DMA_BUS3
+#define BUS_DMA_MIN_ALLOC_COMP	BUS_DMA_BUS4
 /*
  * Allocate a device specific dma_tag.
  */
@@ -274,11 +275,21 @@
 		if (newtag->parent != NULL)
 			atomic_add_int(&parent->ref_count, 1);
 	}
-	
-	if (newtag->lowaddr < ptoa((vm_paddr_t)Maxmem) &&
+
+	if (newtag->lowaddr < ptoa((vm_paddr_t)Maxmem)
+	 || newtag->alignment > 1 || newtag->boundary > 0)
+		newtag->flags |= BUS_DMA_COULD_BOUNCE;
+
+	if (((newtag->flags & BUS_DMA_COULD_BOUNCE) != 0) &&
 	    (flags & BUS_DMA_ALLOCNOW) != 0) {
+		struct bounce_zone *bz;
+
 		/* Must bounce */
 
+		if ((error = alloc_bounce_zone(newtag)) != 0)
+			return (error);
+		bz = newtag->bounce_zone;
+

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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200411220001.iAM01twa092932>