Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 15 Jan 2005 20:38:32 GMT
From:      Peter Wemm <peter@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 69081 for review
Message-ID:  <200501152038.j0FKcWGS091858@repoman.freebsd.org>

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

Change 69081 by peter@peter_overcee on 2005/01/15 20:38:11

	integ -b i386_hammer

Affected files ...

.. //depot/projects/hammer/sys/amd64/amd64/local_apic.c#41 integrate
.. //depot/projects/hammer/sys/amd64/amd64/mptable.c#34 integrate
.. //depot/projects/hammer/sys/amd64/amd64/vm_machdep.c#64 integrate
.. //depot/projects/hammer/sys/amd64/conf/GENERIC.hints#12 integrate

Differences ...

==== //depot/projects/hammer/sys/amd64/amd64/local_apic.c#41 (text+ko) ====

@@ -449,7 +449,7 @@
 			printf("lapic%u:", apic_id);
 	}
 	if (bootverbose)
-		printf(" LINT%u polarity: active-%s\n", pin,
+		printf(" LINT%u polarity: %s\n", pin,
 		    pol == INTR_POLARITY_HIGH ? "high" : "low");
 	return (0);
 }

==== //depot/projects/hammer/sys/amd64/amd64/mptable.c#34 (text+ko) ====

@@ -628,23 +628,38 @@
 mptable_parse_io_int(int_entry_ptr intr)
 {
 	void *ioapic;
-	u_int pin;
+	u_int pin, apic_id;
 
+	apic_id = intr->dst_apic_id;
 	if (intr->dst_apic_id == 0xff) {
-		printf("MPTable: Ignoring global interrupt entry for pin %d\n",
-		    intr->dst_apic_int);
-		return;
+		/*
+		 * An APIC ID of 0xff means that the interrupt is connected
+		 * to the specified pin on all I/O APICs in the system.  If
+		 * there is only one I/O APIC, then use that APIC to route
+		 * the interrupts.  If there is more than one I/O APIC, then
+		 * punt.
+		 */
+		if (mptable_nioapics == 1) {
+			apic_id = 0;
+			while (ioapics[apic_id] == NULL)
+				apic_id++;
+		} else {
+			printf(
+			"MPTable: Ignoring global interrupt entry for pin %d\n",
+			    intr->dst_apic_int);
+			return;
+		}
 	}
-	if (intr->dst_apic_id >= NAPICID) {
+	if (apic_id >= NAPICID) {
 		printf("MPTable: Ignoring interrupt entry for ioapic%d\n",
 		    intr->dst_apic_id);
 		return;
 	}
-	ioapic = ioapics[intr->dst_apic_id];
+	ioapic = ioapics[apic_id];
 	if (ioapic == NULL) {
 		printf(
 	"MPTable: Ignoring interrupt entry for missing ioapic%d\n",
-		    intr->dst_apic_id);
+		    apic_id);
 		return;
 	}
 	pin = intr->dst_apic_int;

==== //depot/projects/hammer/sys/amd64/amd64/vm_machdep.c#64 (text+ko) ====

@@ -239,7 +239,7 @@
 
 /*
  * Initialize machine state (pcb and trap frame) for a new thread about to
- * upcall. Pu t enough state in the new thread's PCB to get it to go back 
+ * upcall. Put enough state in the new thread's PCB to get it to go back 
  * userret(), where we can intercept it again to set the return (upcall)
  * Address and stack, along with those from upcals that are from other sources
  * such as those generated in thread_userret() itself.

==== //depot/projects/hammer/sys/amd64/conf/GENERIC.hints#12 (text+ko) ====



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