Date: Wed, 21 Jul 2004 01:41:58 GMT From: Peter Wemm <peter@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 57812 for review Message-ID: <200407210141.i6L1fw8K026457@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=57812 Change 57812 by peter@peter_melody on 2004/07/21 01:41:36 Integ -I -b i386_hammer to sync up with i386. Affected files ... .. //depot/projects/hammer/sys/amd64/acpica/acpi_wakeup.c#10 integrate .. //depot/projects/hammer/sys/amd64/amd64/autoconf.c#15 integrate .. //depot/projects/hammer/sys/amd64/amd64/cpu_switch.S#29 integrate .. //depot/projects/hammer/sys/amd64/amd64/db_interface.c#21 integrate .. //depot/projects/hammer/sys/amd64/amd64/db_trace.c#16 integrate .. //depot/projects/hammer/sys/amd64/amd64/intr_machdep.c#25 integrate .. //depot/projects/hammer/sys/amd64/amd64/local_apic.c#38 integrate .. //depot/projects/hammer/sys/amd64/amd64/locore.S#11 integrate .. //depot/projects/hammer/sys/amd64/amd64/machdep.c#95 integrate .. //depot/projects/hammer/sys/amd64/amd64/pmap.c#95 integrate .. //depot/projects/hammer/sys/amd64/amd64/trap.c#49 integrate .. //depot/projects/hammer/sys/amd64/amd64/vm_machdep.c#46 integrate .. //depot/projects/hammer/sys/amd64/conf/GENERIC#47 integrate .. //depot/projects/hammer/sys/amd64/conf/NOTES#36 integrate .. //depot/projects/hammer/sys/amd64/include/db_machdep.h#9 integrate .. //depot/projects/hammer/sys/amd64/include/float.h#12 integrate .. //depot/projects/hammer/sys/amd64/include/frame.h#14 integrate .. //depot/projects/hammer/sys/amd64/include/pcb.h#21 integrate .. //depot/projects/hammer/sys/amd64/include/pmap.h#44 integrate .. //depot/projects/hammer/sys/amd64/isa/clock.c#28 integrate .. //depot/projects/hammer/sys/amd64/isa/isa.h#9 integrate .. //depot/projects/hammer/sys/amd64/isa/isa_dma.c#12 integrate Differences ... ==== //depot/projects/hammer/sys/amd64/acpica/acpi_wakeup.c#10 (text+ko) ==== ==== //depot/projects/hammer/sys/amd64/amd64/autoconf.c#15 (text+ko) ==== ==== //depot/projects/hammer/sys/amd64/amd64/cpu_switch.S#29 (text+ko) ==== @@ -53,7 +53,7 @@ /* * cpu_throw() * - * This is the second half of cpu_swtch(). It is used when the current + * This is the second half of cpu_switch(). It is used when the current * thread is either a dummy or slated to die, and we no longer care * about its state. This is only a slight optimization and is probably * not worth it anymore. Note that we need to clear the pm_active bits so ==== //depot/projects/hammer/sys/amd64/amd64/db_interface.c#21 (text+ko) ==== @@ -33,11 +33,9 @@ #include <sys/param.h> #include <sys/systm.h> #include <sys/kdb.h> -#include <sys/reboot.h> #include <sys/cons.h> #include <sys/pcpu.h> #include <sys/proc.h> -#include <sys/smp.h> #include <machine/cpu.h> ==== //depot/projects/hammer/sys/amd64/amd64/db_trace.c#16 (text+ko) ==== ==== //depot/projects/hammer/sys/amd64/amd64/intr_machdep.c#25 (text+ko) ==== ==== //depot/projects/hammer/sys/amd64/amd64/local_apic.c#38 (text+ko) ==== @@ -194,7 +194,7 @@ { int i; - if (apic_id > MAX_APICID) { + if (apic_id >= MAX_APICID) { printf("APIC: Ignoring local APIC with ID %d\n", apic_id); if (boot_cpu) panic("Can't ignore BSP"); ==== //depot/projects/hammer/sys/amd64/amd64/locore.S#11 (text+ko) ==== ==== //depot/projects/hammer/sys/amd64/amd64/machdep.c#95 (text+ko) ==== @@ -94,6 +94,11 @@ #include <sys/exec.h> #include <sys/cons.h> +#ifdef DDB +#ifndef KDB +#error KDB must be enabled in order for DDB to work! +#endif +#endif #include <ddb/ddb.h> #include <net/netisr.h> ==== //depot/projects/hammer/sys/amd64/amd64/pmap.c#95 (text+ko) ==== @@ -1058,7 +1058,6 @@ if (va >= VM_MAXUSER_ADDRESS) return 0; -/* XXX this should be an error, all cases should be caught now */ if (ptepde == 0) ptepde = *pmap_pde(pmap, va); mpte = PHYS_TO_VM_PAGE(ptepde & PG_FRAME); @@ -1511,6 +1510,7 @@ pt_entry_t oldpte; vm_page_t m; + mtx_assert(&vm_page_queue_mtx, MA_OWNED); PMAP_LOCK_ASSERT(pmap, MA_OWNED); oldpte = pte_load_clear(ptq); if (oldpte & PG_W) @@ -1552,6 +1552,7 @@ pd_entry_t ptepde; pt_entry_t *pte; + mtx_assert(&vm_page_queue_mtx, MA_OWNED); PMAP_LOCK_ASSERT(pmap, MA_OWNED); pte = pmap_pte_pde(pmap, va, &ptepde); if (pte == NULL || (*pte & PG_V) == 0) ==== //depot/projects/hammer/sys/amd64/amd64/trap.c#49 (text+ko) ==== @@ -286,7 +286,7 @@ */ if (kdb_on_nmi) { printf ("NMI ... going to debugger\n"); - kdb_trap (type, 0, &frame); + kdb_trap(type, 0, &frame); } #endif /* KDB */ goto userout; ==== //depot/projects/hammer/sys/amd64/amd64/vm_machdep.c#46 (text+ko) ==== @@ -314,6 +314,7 @@ * Set the trap frame to point at the beginning of the uts * function. */ + td->td_frame->tf_rbp = 0; td->td_frame->tf_rsp = ((register_t)ku->ku_stack.ss_sp + ku->ku_stack.ss_size) & ~0x0f; td->td_frame->tf_rsp -= 8; ==== //depot/projects/hammer/sys/amd64/conf/GENERIC#47 (text+ko) ==== ==== //depot/projects/hammer/sys/amd64/conf/NOTES#36 (text+ko) ==== @@ -4,7 +4,7 @@ # This file contains machine dependent kernel configuration notes. For # machine independent notes, look in /sys/conf/NOTES. # -# (XXX from i386:NOTES,v 1.1164) +# (XXX from i386:NOTES,v 1.1165) # $FreeBSD: src/sys/amd64/conf/NOTES,v 1.14 2004/05/17 22:13:14 peter Exp $ # ==== //depot/projects/hammer/sys/amd64/include/db_machdep.h#9 (text+ko) ==== ==== //depot/projects/hammer/sys/amd64/include/float.h#12 (text+ko) ==== ==== //depot/projects/hammer/sys/amd64/include/frame.h#14 (text+ko) ==== ==== //depot/projects/hammer/sys/amd64/include/pcb.h#21 (text+ko) ==== ==== //depot/projects/hammer/sys/amd64/include/pmap.h#44 (text+ko) ==== ==== //depot/projects/hammer/sys/amd64/isa/clock.c#28 (text+ko) ==== @@ -212,6 +212,7 @@ static void rtcintr(struct clockframe *frame) { + while (rtcin(RTC_INTR) & RTCIR_PERIOD) { if (profprocs != 0) { if (--pscnt == 0) @@ -295,7 +296,7 @@ * multiplications and divisions to scale the count take a while). * * However, if ddb is active then use a fake counter since reading - * the i8254 counter involves acquiring a lock. ddb must not go + * the i8254 counter involves acquiring a lock. ddb must not do * locking for many reasons, but it calls here for at least atkbd * input. */ ==== //depot/projects/hammer/sys/amd64/isa/isa.h#9 (text+ko) ==== @@ -64,69 +64,9 @@ #define IO_NPX 0x0F0 /* Numeric Coprocessor */ /* Cards */ - /* 0x100 - 0x16F Open */ - -#define IO_WD2 0x170 /* Secondary Fixed Disk Controller */ - -#define IO_PMP2 0x178 /* 82347 Power Management Peripheral */ - - /* 0x17A - 0x1EF Open */ - -#define IO_WD1 0x1F0 /* Primary Fixed Disk Controller */ -#define IO_GAME 0x201 /* Game Controller */ - - /* 0x202 - 0x22A Open */ - -#define IO_ASC2 0x22B /* AmiScan addr.grp. 2 */ - - /* 0x230 - 0x26A Open */ - -#define IO_ASC3 0x26B /* AmiScan addr.grp. 3 */ -#define IO_GSC1 0x270 /* -- 0x27B! GeniScan GS-4500 addr.grp. 1 */ -#define IO_LPT2 0x278 /* Parallel Port #2 */ - - /* 0x280 - 0x2AA Open */ - -#define IO_ASC4 0x2AB /* AmiScan addr.grp. 4 */ - - /* 0x2B0 - 0x2DF Open */ - -#define IO_GSC2 0x2E0 /* GeniScan GS-4500 addr.grp. 2 */ -#define IO_COM4 0x2E8 /* COM4 i/o address */ -#define IO_ASC5 0x2EB /* AmiScan addr.grp. 5 */ - - /* 0x2F0 - 0x2F7 Open */ - -#define IO_COM2 0x2F8 /* COM2 i/o address */ - - /* 0x300 - 0x32A Open */ - -#define IO_ASC6 0x32B /* AmiScan addr.grp. 6 */ -#define IO_AHA0 0x330 /* adaptec 1542 default addr. */ -#define IO_BT0 0x330 /* bustek 742a default addr. */ -#define IO_UHA0 0x330 /* ultrastore 14f default addr. */ -#define IO_AHA1 0x334 /* adaptec 1542 default addr. */ -#define IO_BT1 0x334 /* bustek 742a default addr. */ - - /* 0x340 - 0x36A Open */ - -#define IO_ASC7 0x36B /* AmiScan addr.grp. 7 */ -#define IO_GSC3 0x370 /* GeniScan GS-4500 addr.grp. 3 */ -#define IO_FD2 0x370 /* secondary base i/o address */ -#define IO_LPT1 0x378 /* Parallel Port #1 */ - - /* 0x380 - 0x3AA Open */ - -#define IO_ASC8 0x3AB /* AmiScan addr.grp. 8 */ -#define IO_MDA 0x3B0 /* Monochome Adapter */ -#define IO_LPT3 0x3BC /* Monochome Adapter Printer Port */ #define IO_VGA 0x3C0 /* E/VGA Ports */ #define IO_CGA 0x3D0 /* CGA Ports */ -#define IO_GSC4 0x3E0 /* GeniScan GS-4500 addr.grp. 4 */ -#define IO_COM3 0x3E8 /* COM3 i/o address */ -#define IO_ASC1 0x3EB /* AmiScan addr.grp. 1 */ -#define IO_FD1 0x3F0 /* primary base i/o address */ -#define IO_COM1 0x3F8 /* COM1 i/o address */ +#define IO_MDA 0x3B0 /* Monochome Adapter */ #define IO_ISAEND 0x3FF /* End (actually Max) of I/O Regs */ #endif /* !IO_ISABEGIN */ @@ -138,25 +78,10 @@ #ifndef IO_ISASIZES #define IO_ISASIZES -#define IO_ASCSIZE 5 /* AmiScan GI1904-based hand scanner */ #define IO_CGASIZE 12 /* CGA controllers */ -#define IO_COMSIZE 8 /* 8250, 16x50 com controllers */ -#define IO_DMASIZE 16 /* 8237 DMA controllers */ -#define IO_DPGSIZE 32 /* 74LS612 DMA page registers */ -#define IO_FDCSIZE 8 /* Nec765 floppy controllers */ -#define IO_GAMSIZE 16 /* AT compatible game controllers */ -#define IO_GSCSIZE 8 /* GeniScan GS-4500G hand scanner */ -#define IO_ICUSIZE 16 /* 8259A interrupt controllers */ -#define IO_KBDSIZE 16 /* 8042 Keyboard controllers */ -#define IO_LPTSIZE 8 /* LPT controllers, some use only 4 */ #define IO_MDASIZE 12 /* Monochrome display controllers */ #define IO_NPXSIZE 16 /* 80387/80487 NPX registers */ -#define IO_PMPSIZE 2 /* 82347 power management peripheral */ -#define IO_PSMSIZE 5 /* 8042 Keyboard controllers */ -#define IO_RTCSIZE 16 /* CMOS real time clock, NMI control */ -#define IO_TMRSIZE 16 /* 8253 programmable timers */ #define IO_VGASIZE 16 /* VGA controllers */ -#define IO_WDCSIZE 8 /* WD compatible disk controllers */ #endif /* !IO_ISASIZES */ ==== //depot/projects/hammer/sys/amd64/isa/isa_dma.c#12 (text+ko) ==== @@ -103,12 +103,20 @@ { void *buf; + /* + * If a DMA channel is shared, both drivers have to call isa_dmainit + * since they don't know that the other driver will do it. + * Just return if we're already set up good. + * XXX: this only works if they agree on the bouncebuf size. This + * XXX: is typically the case since they are multiple instances of + * XXX: the same driver. + */ + if (dma_bouncebuf[chan] != NULL) + return; + #ifdef DIAGNOSTIC if (chan & ~VALID_DMA_MASK) panic("isa_dmainit: channel out of range"); - - if (dma_bouncebuf[chan] != NULL) - panic("isa_dmainit: impossible request"); #endif dma_bouncebufsize[chan] = bouncebufsize;
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200407210141.i6L1fw8K026457>