PERFORCE change 57812 for review
Peter Wemm
peter at FreeBSD.org
Tue Jul 20 18:42:00 PDT 2004
http://perforce.freebsd.org/chv.cgi?CH=57812
Change 57812 by peter at 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;
More information about the p4-projects
mailing list