Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 29 Jun 2006 03:01:00 GMT
From:      Kip Macy <kmacy@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 100249 for review
Message-ID:  <200606290301.k5T310dD094199@repoman.freebsd.org>

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

Change 100249 by kmacy@kmacy_storage:sun4v_work_stable on 2006/06/29 03:00:01

	integrate console and DMA tag fixes

Affected files ...

.. //depot/projects/kmacy_sun4v_stable/src/sys/dev/bge/if_bge.c#2 integrate
.. //depot/projects/kmacy_sun4v_stable/src/sys/sun4v/sun4v/hcall.S#2 integrate
.. //depot/projects/kmacy_sun4v_stable/src/sys/sun4v/sun4v/hvcons.c#2 integrate

Differences ...

==== //depot/projects/kmacy_sun4v_stable/src/sys/dev/bge/if_bge.c#2 (text+ko) ====

@@ -1726,7 +1726,7 @@
 	/*
 	 * Allocate the parent bus DMA tag appropriate for PCI.
 	 */
-	error = bus_dma_tag_create(NULL,	/* parent */
+	error = bus_dma_tag_create(bus_get_dma_tag(sc->bge_dev),/* parent */
 			PAGE_SIZE, 0,		/* alignment, boundary */
 			BUS_SPACE_MAXADDR,	/* lowaddr */
 			BUS_SPACE_MAXADDR,	/* highaddr */

==== //depot/projects/kmacy_sun4v_stable/src/sys/sun4v/sun4v/hcall.S#2 (text+ko) ====

@@ -402,9 +402,8 @@
 	ENTRY(hv_cnputchar)
 	mov	CONS_WRITE, %o5
 	ta	FAST_TRAP
-	tst	%o0
 	retl
-	movnz	%xcc, -1, %o0
+	  nop
 	SET_SIZE(hv_cnputchar)
 
 	/*

==== //depot/projects/kmacy_sun4v_stable/src/sys/sun4v/sun4v/hvcons.c#2 (text+ko) ====

@@ -46,7 +46,7 @@
 #include <machine/resource.h>
 #include <machine/hypervisor_api.h>
 
-#define HVCN_POLL_FREQ 4
+#define HVCN_POLL_FREQ 10
 
 
 static d_open_t  hvcn_open;
@@ -60,10 +60,14 @@
 	.d_flags =	D_TTY | D_NEEDGIANT,
 };
 
+#define PCBURST 16
 static struct tty		*hvcn_tp = NULL;
 static struct resource          *hvcn_irq;
 static void                     *hvcn_intrhand;
 
+static int bufindex;
+static int buflen;
+static u_char buf[PCBURST];
 static int			polltime;
 static struct callout_handle	hvcn_timeouthandle
     = CALLOUT_HANDLE_INITIALIZER(&hvcn_timeouthandle);
@@ -243,7 +247,6 @@
 	int error;
 
 	error = 0;
-
 	do {
 		if (c == '\n') 
 			error = hv_cnputchar('\r');
@@ -266,21 +269,26 @@
 static void
 hvcn_tty_start(struct tty *tp)
 {
-	int error;
-	
-        if (tp->t_state & (TS_TIMEOUT | TS_BUSY | TS_TTSTOP)) {
-                ttwwakeup(tp);
-                return;
-        }
 
-        tp->t_state |= TS_BUSY;
-	error = 0;
-        while (tp->t_outq.c_cc != 0 && error != H_EWOULDBLOCK)
-                error = hv_cnputchar(getc(&tp->t_outq));
+        if (!(tp->t_state & (TS_TIMEOUT | TS_BUSY | TS_TTSTOP))) {
+		tp->t_state |= TS_BUSY;
 
-        tp->t_state &= ~TS_BUSY;
-
-	ttwwakeup(tp);
+		do {
+			if (buflen == 0) {
+				buflen = q_to_b(&tp->t_outq, buf, PCBURST);
+				bufindex = 0;
+			}
+			while (buflen) {
+				if (hv_cnputchar(buf[bufindex]) == H_EWOULDBLOCK)
+					goto done;
+				bufindex++;
+				buflen--;
+			}
+		} while (tp->t_outq.c_cc != 0);
+	done:
+		tp->t_state &= ~TS_BUSY;
+		ttwwakeup(tp);
+	}
 }
 
 static void
@@ -303,8 +311,9 @@
 	while ((c = hvcncheckc(NULL)) != -1) 
 		if (tp->t_state & TS_ISOPEN) 
 			ttyld_rint(tp, c);
-	
 
+	if (tp->t_outq.c_cc != 0 || buflen != 0) 
+		hvcn_tty_start(tp);
 }
 
 static void



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