PERFORCE change 96194 for review

Marcel Moolenaar marcel at FreeBSD.org
Thu Apr 27 05:55:06 UTC 2006


http://perforce.freebsd.org/chv.cgi?CH=96194

Change 96194 by marcel at marcel_nfs on 2006/04/27 05:54:04

	IFC @96193

Affected files ...

.. //depot/projects/uart/dev/uart/uart_dev_ns8250.c#43 integrate
.. //depot/projects/uart/i386/i386/pmap.c#35 integrate
.. //depot/projects/uart/i386/i386/vm_machdep.c#15 integrate

Differences ...

==== //depot/projects/uart/dev/uart/uart_dev_ns8250.c#43 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/uart/uart_dev_ns8250.c,v 1.20 2006/04/23 21:15:07 marcel Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/uart/uart_dev_ns8250.c,v 1.21 2006/04/27 05:43:10 marcel Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -611,7 +611,7 @@
 	mcr = MCR_IE;
 	if (sc->sc_sysdev == NULL) {
 		/* By using ns8250_init() we also set DTR and RTS. */
-		ns8250_init(bas, 9600, 8, 1, UART_PARITY_NONE);
+		ns8250_init(bas, 115200, 8, 1, UART_PARITY_NONE);
 	} else
 		mcr |= MCR_DTR | MCR_RTS;
 

==== //depot/projects/uart/i386/i386/pmap.c#35 (text+ko) ====

@@ -75,7 +75,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/i386/i386/pmap.c,v 1.550 2006/04/26 21:49:19 peter Exp $");
+__FBSDID("$FreeBSD: src/sys/i386/i386/pmap.c,v 1.551 2006/04/27 05:02:21 delphij Exp $");
 
 /*
  *	Manages physical address maps.
@@ -260,7 +260,7 @@
 	   "Number of times pmap_pte_quick didn't change PMAP1");
 static struct mtx PMAP2mutex;
 
-static PMAP_INLINE void	free_pv_entry(pmap_t pmap, pv_entry_t pv);
+static void	free_pv_entry(pmap_t pmap, pv_entry_t pv);
 static pv_entry_t get_pv_entry(pmap_t locked_pmap, int try);
 static void	pmap_clear_ptes(vm_page_t m, int bit);
 
@@ -1574,7 +1574,7 @@
 /*
  * free the pv_entry back to the free list
  */
-static PMAP_INLINE void
+static void
 free_pv_entry(pmap_t pmap, pv_entry_t pv)
 {
 	vm_page_t m;

==== //depot/projects/uart/i386/i386/vm_machdep.c#15 (text+ko) ====

@@ -41,7 +41,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/i386/i386/vm_machdep.c,v 1.269 2006/03/10 05:55:26 davidxu Exp $");
+__FBSDID("$FreeBSD: src/sys/i386/i386/vm_machdep.c,v 1.270 2006/04/27 05:18:26 sobomax Exp $");
 
 #include "opt_isa.h"
 #include "opt_npx.h"
@@ -590,7 +590,9 @@
 static void
 cpu_reset_real()
 {
+	int b;
 
+	disable_intr();
 #ifdef CPU_ELAN
 	if (elan_mmcr != NULL)
 		elan_mmcr->RESCFG = 1;
@@ -606,7 +608,6 @@
 	/*
 	 * Attempt to do a CPU reset via CPU reset port.
 	 */
-	disable_intr();
 	if ((inb(0x35) & 0xa0) != 0xa0) {
 		outb(0x37, 0x0f);		/* SHUT0 = 0. */
 		outb(0x37, 0x0b);		/* SHUT1 = 0. */
@@ -621,11 +622,26 @@
 	 */
 	outb(IO_KBD + 4, 0xFE);
 	DELAY(500000);	/* wait 0.5 sec to see if that did it */
-	printf("Keyboard reset did not work, attempting CPU shutdown\n");
-	DELAY(1000000);	/* wait 1 sec for printf to complete */
 #endif
+	/* Try the PCI reset */
+	outb(0xcf9, 0x2);
+	outb(0xcf9, 0x6);
+	DELAY(500000);  /* wait 0.5 sec to see if that did it */
+
+	/* Try port 0x92 fast reset */
+	b = inb(0x92);
+	/* Check the the hardware actually has the port in question */
+	if (b != 0xff) {
+		if ((b & 0x1) != 0)
+			outb(0x92, b & 0xfe);
+		outb(0x92, b | 0x1);
+		DELAY(500000);  /* wait 0.5 sec to see if that did it */
+	}
 #endif /* PC98 */
 
+	printf("No known reset method did work, attempting CPU shutdown\n");
+	DELAY(1000000); /* wait 1 sec for printf to complete */
+
 	/* Force a shutdown by unmapping entire address space. */
 	bzero((caddr_t)PTD, NBPTD);
 


More information about the p4-projects mailing list