From owner-p4-projects@FreeBSD.ORG Mon Nov 22 00:01:56 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 5BAAB16A4D0; Mon, 22 Nov 2004 00:01:56 +0000 (GMT) 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 352F716A4CE for ; Mon, 22 Nov 2004 00:01:56 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id EAA3C43D48 for ; Mon, 22 Nov 2004 00:01:55 +0000 (GMT) (envelope-from marcel@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 iAM01tdB092935 for ; Mon, 22 Nov 2004 00:01:55 GMT (envelope-from marcel@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.1/8.13.1/Submit) id iAM01twa092932 for perforce@freebsd.org; Mon, 22 Nov 2004 00:01:55 GMT (envelope-from marcel@freebsd.org) Date: Mon, 22 Nov 2004 00:01:55 GMT Message-Id: <200411220001.iAM01twa092932@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to marcel@freebsd.org using -f From: Marcel Moolenaar To: Perforce Change Reviews Subject: PERFORCE change 65632 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 22 Nov 2004 00:01:57 -0000 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 -__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 #include @@ -40,7 +40,6 @@ #include #include #include -#include #include #include @@ -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 -__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 @@ -43,6 +43,9 @@ #include #include /* just for boothowto */ #include +#ifdef KDB +#include +#endif #include #include @@ -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 -__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 #include @@ -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 #include #include -__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 -__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 #include @@ -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 #include -#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 #include +#include 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 -__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 #include @@ -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 -__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 #include @@ -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 -__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 -__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 -__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 -__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 -__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 #include @@ -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 -__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 #include @@ -36,7 +36,8 @@ #include #include #include -#include + +#include #include "uart_if.h" ==== //depot/projects/uart/dev/uart/uart_dev_z8530.c#20 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__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 #include @@ -36,7 +36,8 @@ #include #include #include -#include + +#include #include "uart_if.h" ==== //depot/projects/uart/i386/i386/busdma_machdep.c#12 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__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 #include @@ -40,7 +40,6 @@ #include #include #include -#include #include #include @@ -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) <<<