Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 4 Apr 2004 14:40:18 -0700 (PDT)
From:      Robert Watson <rwatson@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 50355 for review
Message-ID:  <200404042140.i34LeIgX036293@repoman.freebsd.org>

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

Change 50355 by rwatson@rwatson_paprika on 2004/04/04 14:40:06

	Integrate netperf_socket:
	
	- sf_buf_alloc() no locnger does PCATCH, but does accept a priority 
	  which allows the caller to specify PCATCH if they like.  
	- ptvmmap gone from amd64.
	- sparc64 loader, fb, uart code accepts input-device specification
	  and more options for what it might be (stdin, etc).
	- dev/led not soekris-specific.
	- dev/fb additional range checks.
	- geom bio sanity checks.
	- noisy psm output un-noised.
	- core dumps with KSE work properly now.
	- threads have thread ids (required for core dumps).
	- arpresolve() loses final route argument (rt0).
	- rt_output() removed from struct route.
	- unused ifnet methods GC'd (if_done, if_poll_recv, if_poll_xmit,
	  if_poll_intren, if_poll_slowinput, if_poll_slowq).  Also removed
	  are if_poll(), if_poll_init(), if_poll_throttle(),
	  if_poll_unthrottle(), if_poll_recv_slow(), if_poll_xmit_slow().
	- validity checks for TCP arguments moved before COMMON_START() so
	  that error handling is more correct (especially WRT dropping
	  locks).
	- '2' argument to soshutdown() spelled as SHUT_RDWR. 
	- NFS client modestamp zero'd following SETATTR.
	- NFS server pointer==boolean and pointer==0 converted to check
	  NULL explicitly.
	- Continued indecision about whether twa is i386-only or not.
	- AGP can be disabled using a hint.   

Affected files ...

.. //depot/projects/netperf_socket/sys/alpha/alpha/vm_machdep.c#4 integrate
.. //depot/projects/netperf_socket/sys/alpha/include/pmap.h#3 integrate
.. //depot/projects/netperf_socket/sys/amd64/amd64/pmap.c#5 integrate
.. //depot/projects/netperf_socket/sys/amd64/amd64/support.S#3 integrate
.. //depot/projects/netperf_socket/sys/amd64/amd64/vm_machdep.c#6 integrate
.. //depot/projects/netperf_socket/sys/amd64/include/pmap.h#3 integrate
.. //depot/projects/netperf_socket/sys/boot/common/loader.8#3 integrate
.. //depot/projects/netperf_socket/sys/boot/sparc64/loader/metadata.c#2 integrate
.. //depot/projects/netperf_socket/sys/conf/files#13 integrate
.. //depot/projects/netperf_socket/sys/dev/bfe/if_bfereg.h#2 integrate
.. //depot/projects/netperf_socket/sys/dev/fb/creator.c#2 integrate
.. //depot/projects/netperf_socket/sys/dev/fb/vga.c#2 integrate
.. //depot/projects/netperf_socket/sys/dev/md/md.c#11 integrate
.. //depot/projects/netperf_socket/sys/dev/uart/uart_bus_ebus.c#2 integrate
.. //depot/projects/netperf_socket/sys/dev/uart/uart_cpu_sparc64.c#4 integrate
.. //depot/projects/netperf_socket/sys/geom/geom_io.c#3 integrate
.. //depot/projects/netperf_socket/sys/i386/i386/db_interface.c#4 integrate
.. //depot/projects/netperf_socket/sys/i386/i386/elan-mmcr.c#6 integrate
.. //depot/projects/netperf_socket/sys/i386/i386/uio_machdep.c#2 integrate
.. //depot/projects/netperf_socket/sys/i386/i386/vm_machdep.c#9 integrate
.. //depot/projects/netperf_socket/sys/i386/include/cpufunc.h#4 integrate
.. //depot/projects/netperf_socket/sys/ia64/ia64/vm_machdep.c#4 integrate
.. //depot/projects/netperf_socket/sys/isa/psm.c#4 integrate
.. //depot/projects/netperf_socket/sys/kern/imgact_elf.c#4 integrate
.. //depot/projects/netperf_socket/sys/kern/kern_fork.c#9 integrate
.. //depot/projects/netperf_socket/sys/kern/kern_thr.c#5 integrate
.. //depot/projects/netperf_socket/sys/kern/kern_thread.c#6 integrate
.. //depot/projects/netperf_socket/sys/kern/sched_ule.c#5 integrate
.. //depot/projects/netperf_socket/sys/kern/uipc_cow.c#3 integrate
.. //depot/projects/netperf_socket/sys/kern/uipc_syscalls.c#7 integrate
.. //depot/projects/netperf_socket/sys/net/if_arcsubr.c#5 integrate
.. //depot/projects/netperf_socket/sys/net/if_ethersubr.c#9 integrate
.. //depot/projects/netperf_socket/sys/net/if_fddisubr.c#4 integrate
.. //depot/projects/netperf_socket/sys/net/if_iso88025subr.c#4 integrate
.. //depot/projects/netperf_socket/sys/net/if_var.h#4 integrate
.. //depot/projects/netperf_socket/sys/net/route.h#4 integrate
.. //depot/projects/netperf_socket/sys/netinet/if_ether.c#5 integrate
.. //depot/projects/netperf_socket/sys/netinet/if_ether.h#2 integrate
.. //depot/projects/netperf_socket/sys/netinet/tcp_usrreq.c#6 integrate
.. //depot/projects/netperf_socket/sys/netipsec/xform_tcp.c#1 branch
.. //depot/projects/netperf_socket/sys/nfsclient/nfs_socket.c#5 integrate
.. //depot/projects/netperf_socket/sys/nfsclient/nfs_vnops.c#3 integrate
.. //depot/projects/netperf_socket/sys/nfsserver/nfs_srvsock.c#4 integrate
.. //depot/projects/netperf_socket/sys/nfsserver/nfs_syscalls.c#3 integrate
.. //depot/projects/netperf_socket/sys/pc98/conf/NOTES#7 integrate
.. //depot/projects/netperf_socket/sys/pci/agp_ali.c#2 integrate
.. //depot/projects/netperf_socket/sys/pci/agp_amd.c#3 integrate
.. //depot/projects/netperf_socket/sys/pci/agp_i810.c#3 integrate
.. //depot/projects/netperf_socket/sys/pci/agp_intel.c#3 integrate
.. //depot/projects/netperf_socket/sys/pci/agp_nvidia.c#2 integrate
.. //depot/projects/netperf_socket/sys/pci/agp_sis.c#2 integrate
.. //depot/projects/netperf_socket/sys/pci/agp_via.c#2 integrate
.. //depot/projects/netperf_socket/sys/pci/if_ste.c#10 integrate
.. //depot/projects/netperf_socket/sys/powerpc/powerpc/vm_machdep.c#6 integrate
.. //depot/projects/netperf_socket/sys/sparc64/creator/creator_upa.c#3 integrate
.. //depot/projects/netperf_socket/sys/sparc64/sparc64/uio_machdep.c#2 integrate
.. //depot/projects/netperf_socket/sys/sparc64/sparc64/vm_machdep.c#5 integrate
.. //depot/projects/netperf_socket/sys/sys/proc.h#5 integrate
.. //depot/projects/netperf_socket/sys/sys/sf_buf.h#3 integrate
.. //depot/projects/netperf_socket/sys/ufs/ffs/fs.h#2 integrate

Differences ...

==== //depot/projects/netperf_socket/sys/alpha/alpha/vm_machdep.c#4 (text+ko) ====

@@ -67,7 +67,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/alpha/alpha/vm_machdep.c,v 1.101 2004/03/29 02:01:42 kensmith Exp $");
+__FBSDID("$FreeBSD: src/sys/alpha/alpha/vm_machdep.c,v 1.102 2004/04/03 09:16:24 alc Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -405,7 +405,7 @@
  * Get an sf_buf from the freelist. Will block if none are available.
  */
 struct sf_buf *
-sf_buf_alloc(struct vm_page *m)
+sf_buf_alloc(struct vm_page *m, int pri)
 {
 	struct sf_buf *sf;
 	int error;
@@ -414,7 +414,7 @@
 	while ((sf = SLIST_FIRST(&sf_freelist.sf_head)) == NULL) {
 		sf_buf_alloc_want++;
 		mbstat.sf_allocwait++;
-		error = msleep(&sf_freelist, &sf_freelist.sf_lock, PVM|PCATCH,
+		error = msleep(&sf_freelist, &sf_freelist.sf_lock, PVM | pri,
 		    "sfbufa", 0);
 		sf_buf_alloc_want--;
 

==== //depot/projects/netperf_socket/sys/alpha/include/pmap.h#3 (text+ko) ====

@@ -43,7 +43,7 @@
  *	from: hp300: @(#)pmap.h	7.2 (Berkeley) 12/16/90
  *	from: @(#)pmap.h	7.4 (Berkeley) 5/12/91
  *	from: i386 pmap.h,v 1.54 1997/11/20 19:30:35 bde Exp
- * $FreeBSD: src/sys/alpha/include/pmap.h,v 1.25 2004/03/07 07:13:15 alc Exp $
+ * $FreeBSD: src/sys/alpha/include/pmap.h,v 1.26 2004/04/03 21:38:20 alc Exp $
  */
 
 #ifndef _MACHINE_PMAP_H_
@@ -208,8 +208,6 @@
 
 #ifdef	_KERNEL
 
-extern caddr_t	CADDR1;
-extern pt_entry_t *CMAP1;
 extern vm_offset_t avail_end;
 extern vm_offset_t avail_start;
 extern vm_offset_t phys_avail[];

==== //depot/projects/netperf_socket/sys/amd64/amd64/pmap.c#5 (text+ko) ====

@@ -75,7 +75,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.454 2004/03/31 02:03:48 alc Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.455 2004/04/03 20:53:49 alc Exp $");
 
 /*
  *	Manages physical address maps.
@@ -200,8 +200,7 @@
  * All those kernel PT submaps that BSD is so fond of
  */
 pt_entry_t *CMAP1 = 0;
-static pt_entry_t *ptmmap;
-caddr_t CADDR1 = 0, ptvmmap = 0;
+caddr_t CADDR1 = 0;
 static pt_entry_t *msgbufmap;
 struct msgbuf *msgbufp = 0;
 
@@ -507,12 +506,6 @@
 	SYSMAP(caddr_t, pt_crashdumpmap, crashdumpmap, MAXDUMPPGS);
 
 	/*
-	 * ptvmmap is used for reading arbitrary physical pages via /dev/mem.
-	 * XXX ptmmap is not used.
-	 */
-	SYSMAP(caddr_t, ptmmap, ptvmmap, 1)
-
-	/*
 	 * msgbufp is used to map the system message buffer.
 	 * XXX msgbufmap is not used.
 	 */

==== //depot/projects/netperf_socket/sys/amd64/amd64/support.S#3 (text+ko) ====

@@ -31,7 +31,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/amd64/amd64/support.S,v 1.106 2004/03/31 02:03:49 alc Exp $
+ * $FreeBSD: src/sys/amd64/amd64/support.S,v 1.107 2004/04/03 05:33:10 alc Exp $
  */
 
 #include "opt_ddb.h"
@@ -76,15 +76,15 @@
 
 /* Address: %rdi */
 ENTRY(pagezero)
-	lea	4096(%rdi),%rsi
+	movq	$-PAGE_SIZE,%rdx
+	subq	%rdx,%rdi
 	xorq	%rax,%rax
 1:
-	movnti	%rax,(%rdi)
-	movnti	%rax,8(%rdi)
-	movnti	%rax,16(%rdi)
-	movnti	%rax,24(%rdi)
-	addq	$32,%rdi
-	cmpq	%rsi,%rdi
+	movnti	%rax,(%rdi,%rdx)
+	movnti	%rax,8(%rdi,%rdx)
+	movnti	%rax,16(%rdi,%rdx)
+	movnti	%rax,24(%rdi,%rdx)
+	addq	$32,%rdx
 	jne	1b
 	sfence
 	retq

==== //depot/projects/netperf_socket/sys/amd64/amd64/vm_machdep.c#6 (text+ko) ====

@@ -41,7 +41,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/vm_machdep.c,v 1.231 2004/03/29 19:38:05 peter Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/vm_machdep.c,v 1.232 2004/04/03 09:16:25 alc Exp $");
 
 #include "opt_isa.h"
 #include "opt_cpu.h"
@@ -460,7 +460,7 @@
  * Get an sf_buf from the freelist. Will block if none are available.
  */
 struct sf_buf *
-sf_buf_alloc(struct vm_page *m)
+sf_buf_alloc(struct vm_page *m, int pri)
 {
 	struct sf_buf *sf;
 	int error;
@@ -469,7 +469,7 @@
 	while ((sf = SLIST_FIRST(&sf_freelist.sf_head)) == NULL) {
 		sf_buf_alloc_want++;
 		mbstat.sf_allocwait++;
-		error = msleep(&sf_freelist, &sf_freelist.sf_lock, PVM|PCATCH,
+		error = msleep(&sf_freelist, &sf_freelist.sf_lock, PVM | pri,
 		    "sfbufa", 0);
 		sf_buf_alloc_want--;
 

==== //depot/projects/netperf_socket/sys/amd64/include/pmap.h#3 (text+ko) ====

@@ -43,7 +43,7 @@
  *
  *	from: hp300: @(#)pmap.h	7.2 (Berkeley) 12/16/90
  *	from: @(#)pmap.h	7.4 (Berkeley) 5/12/91
- * $FreeBSD: src/sys/amd64/include/pmap.h,v 1.110 2004/03/07 07:13:15 alc Exp $
+ * $FreeBSD: src/sys/amd64/include/pmap.h,v 1.111 2004/04/03 20:53:50 alc Exp $
  */
 
 #ifndef _MACHINE_PMAP_H_
@@ -263,7 +263,6 @@
 extern vm_paddr_t avail_end;
 extern vm_paddr_t avail_start;
 extern vm_paddr_t phys_avail[];
-extern char *ptvmmap;		/* poor name! */
 extern vm_offset_t virtual_avail;
 extern vm_offset_t virtual_end;
 

==== //depot/projects/netperf_socket/sys/boot/common/loader.8#3 (text+ko) ====

@@ -22,7 +22,7 @@
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
-.\" $FreeBSD: src/sys/boot/common/loader.8,v 1.58 2004/01/27 15:59:38 des Exp $
+.\" $FreeBSD: src/sys/boot/common/loader.8,v 1.59 2004/04/03 12:14:30 le Exp $
 .\"
 .\" Note: The date here should be updated whenever a non-trivial
 .\" change is made to the manual page.
@@ -493,12 +493,12 @@
 .Va TCBHASHSIZE
 or the preset default of 512.
 Must be a power of 2.
-.El
 .It Va vm.kmem_size
 Sets the size of kernel memory (bytes).
 This overrides the value determined when the kernel was compiled.
 Modifies
 .Va VM_KMEM_SIZE .
+.El
 .Ss BUILTIN PARSER
 When a builtin command is executed, the rest of the line is taken
 by it as arguments, and it is processed by a special parser which

==== //depot/projects/netperf_socket/sys/boot/sparc64/loader/metadata.c#2 (text+ko) ====

@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/boot/sparc64/loader/metadata.c,v 1.11 2004/01/04 23:20:15 obrien Exp $");
+__FBSDID("$FreeBSD: src/sys/boot/sparc64/loader/metadata.c,v 1.12 2004/04/04 05:24:13 marcel Exp $");
 
 #include <stand.h>
 #include <sys/param.h>
@@ -69,7 +69,7 @@
 int
 md_getboothowto(char *kargs)
 {
-    char	buf[32];
+    char	buf[32], buf2[32];
     phandle_t	options;
     char	*cp;
     int		howto;
@@ -131,9 +131,21 @@
 	if (getenv(howto_names[i].ev) != NULL)
 	    howto |= howto_names[i].mask;
     options = OF_finddevice("/options");
-    OF_getprop(options, "output-device", buf, sizeof(buf));
-    if (strcmp(buf, "ttya") == 0 || strcmp(buf, "ttyb") == 0)
+    OF_getprop(options, "input-device", buf, sizeof(buf));
+    OF_getprop(options, "output-device", buf2, sizeof(buf2));
+    if (strncmp(buf, "tty", sizeof("tty") - 1) == 0 && strncmp(buf2, "tty",
+      sizeof("tty") - 1) == 0)
+	howto |= RB_SERIAL;
+    else if (strcmp(buf, "keyboard") == 0 && strcmp(buf2, "screen") == 0) {
+	phandle_t	chosen;
+	ihandle_t	stdin, stdout;
+
+	chosen = OF_finddevice("/chosen");
+	OF_getprop(chosen, "stdin", &stdin, sizeof(stdin));
+	OF_getprop(chosen, "stdout", &stdout, sizeof(stdout));
+	if (OF_instance_to_package(stdin) == OF_instance_to_package(stdout))
 	    howto |= RB_SERIAL;
+    }
     return(howto);
 }
 

==== //depot/projects/netperf_socket/sys/conf/files#13 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/files,v 1.880 2004/04/01 17:55:50 des Exp $
+# $FreeBSD: src/sys/conf/files,v 1.881 2004/04/03 18:42:05 phk Exp $
 #
 # The long compile-with and dependency lines are required because of
 # limitations in config: backslash-newline doesn't work in strings, and
@@ -499,7 +499,7 @@
 dev/joy/joy.c		optional joy
 dev/joy/joy_isa.c	optional joy isa
 dev/joy/joy_pccard.c	optional joy pccard
-dev/led/led.c		optional cpu_soekris
+dev/led/led.c		standard
 dev/lge/if_lge.c	optional lge
 dev/lnc/if_lnc.c	optional lnc
 dev/lnc/if_lnc_pci.c	optional lnc pci

==== //depot/projects/netperf_socket/sys/dev/bfe/if_bfereg.h#2 (text+ko) ====

@@ -1,5 +1,27 @@
 /* Copyright (c) 2003 Stuart Walsh */
-/* $FreeBSD: src/sys/dev/bfe/if_bfereg.h,v 1.1 2003/09/09 18:17:22 wpaul Exp $ */
+/*
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS 'AS IS' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+/* $FreeBSD: src/sys/dev/bfe/if_bfereg.h,v 1.2 2004/04/04 06:13:56 wes Exp $ */
 
 #ifndef _BFE_H
 #define _BFE_H

==== //depot/projects/netperf_socket/sys/dev/fb/creator.c#2 (text+ko) ====

@@ -23,7 +23,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/dev/fb/creator.c,v 1.3 2004/01/02 10:46:38 obrien Exp $
+ * $FreeBSD: src/sys/dev/fb/creator.c,v 1.4 2004/04/04 12:52:22 tmm Exp $
  */
 
 #include <sys/param.h>
@@ -165,7 +165,7 @@
 	struct upa_regs reg[FFB_NREG];
 	struct creator_softc *sc;
 	phandle_t chosen;
-	phandle_t stdout;
+	ihandle_t stdout;
 	phandle_t child;
 	char buf[32];
 	int i;
@@ -183,7 +183,7 @@
 
 	chosen = OF_finddevice("/chosen");
 	OF_getprop(chosen, "stdout", &stdout, sizeof(stdout));
-	if (child == stdout)
+	if (child == OF_instance_to_package(stdout))
 		sc->sc_console = 1;
 
 	OF_getprop(child, "reg", reg, sizeof(reg));

==== //depot/projects/netperf_socket/sys/dev/fb/vga.c#2 (text+ko) ====

@@ -29,7 +29,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/fb/vga.c,v 1.28 2003/08/24 17:46:06 obrien Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/fb/vga.c,v 1.29 2004/04/03 15:28:25 nectar Exp $");
 
 #include "opt_vga.h"
 #include "opt_fb.h"
@@ -2854,7 +2854,8 @@
     u_char *g;
     u_char *b;
 
-    if ((base < 0) || (base >= 256) || (base + count > 256))
+    if (count < 0 || base < 0 || count > 256 || base > 256 ||
+	base + count > 256)
 	return EINVAL;
 
     r = malloc(count*3, M_DEVBUF, M_WAITOK);
@@ -2885,7 +2886,8 @@
     u_char *b;
     int err;
 
-    if ((base < 0) || (base >= 256) || (base + count > 256))
+    if (count < 0 || base < 0 || count > 256 || base > 256 ||
+	base + count > 256)
 	return EINVAL;
 
     r = malloc(count*3, M_DEVBUF, M_WAITOK);

==== //depot/projects/netperf_socket/sys/dev/md/md.c#11 (text+ko) ====

@@ -6,7 +6,7 @@
  * this stuff is worth it, you can buy me a beer in return.   Poul-Henning Kamp
  * ----------------------------------------------------------------------------
  *
- * $FreeBSD: src/sys/dev/md/md.c,v 1.119 2004/03/31 21:48:02 luigi Exp $
+ * $FreeBSD: src/sys/dev/md/md.c,v 1.120 2004/04/03 09:16:25 alc Exp $
  *
  */
 
@@ -546,7 +546,7 @@
 		m = vm_page_grab(sc->object, i,
 		    VM_ALLOC_NORMAL|VM_ALLOC_RETRY);
 		VM_OBJECT_UNLOCK(sc->object);
-		sf = sf_buf_alloc(m);
+		sf = sf_buf_alloc(m, 0);
 		VM_OBJECT_LOCK(sc->object);
 		if (bp->bio_cmd == BIO_READ) {
 			if (m->valid != VM_PAGE_BITS_ALL)

==== //depot/projects/netperf_socket/sys/dev/uart/uart_bus_ebus.c#2 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/uart/uart_bus_ebus.c,v 1.2 2003/09/26 05:14:56 marcel Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/uart/uart_bus_ebus.c,v 1.3 2004/04/03 23:02:02 marcel Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -61,7 +61,7 @@
 static int
 uart_ebus_probe(device_t dev)
 {
-	const char *nm;
+	const char *nm, *cmpt;
 	struct uart_softc *sc;
 	int error;
 
@@ -69,7 +69,9 @@
 	sc->sc_class = NULL;
 
 	nm = ebus_get_name(dev);
-	if (!strcmp(nm, "su")) {
+	cmpt = ebus_get_compat(dev);
+	if (!strcmp(nm, "su") || !strcmp(nm, "su_pnp") || (cmpt != NULL &&
+	    (!strcmp(cmpt, "su") || !strcmp(cmpt, "su16550")))) {
 		sc->sc_class = &uart_ns8250_class;
 		return (uart_bus_probe(dev, 0, 0, 0, 0));
 	}

==== //depot/projects/netperf_socket/sys/dev/uart/uart_cpu_sparc64.c#4 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/uart/uart_cpu_sparc64.c,v 1.9 2004/04/02 07:33:35 marcel Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/uart/uart_cpu_sparc64.c,v 1.10 2004/04/04 05:06:26 marcel Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -71,13 +71,14 @@
 /*
  * Get the address of the UART that is selected as the console, if the
  * console is an UART of course. Note that we enforce that both stdin and
- * stdout are selected. For weird configurations, use ofw_console(4).
+ * stdout are selected.
  * Note that the currently active console (i.e. /chosen/stdout and
  * /chosen/stdin) may not be the same as the device selected in the
  * environment (ie /options/output-device and /options/input-device) because
- * the user may have changed the environment. In that case I would assume
- * that the user expects that FreeBSD uses the new console setting. There's
- * no choice, really.
+ * keyboard and screen were selected but the keyboard was unplugged or the
+ * user has changed the environment. In the latter case I would assume that
+ * the user expects that FreeBSD uses the new console setting.
+ * For weirder configurations, use ofw_console(4).
  */
 static phandle_t
 uart_cpu_getdev_console(phandle_t options, char *dev, size_t devsz)
@@ -89,14 +90,29 @@
 		return (-1);
 	if ((input = OF_finddevice(dev)) == -1)
 		return (-1);
+	if (OF_getprop(options, "output-device", buf, sizeof(buf)) == -1)
+		return (-1);
+	if (!strcmp(dev, "keyboard") && !strcmp(buf, "screen")) {
+		phandle_t chosen;
+		ihandle_t stdin, stdout;
+
+		if ((chosen = OF_finddevice("/chosen")) == -1)
+			return (-1);
+		if (OF_getprop(chosen, "stdin", &stdin, sizeof(stdin)) == -1)
+			return (-1);
+		if ((input = OF_instance_to_package(stdin)) == -1)
+			return (-1);
+		if (OF_getprop(chosen, "stdout", &stdout, sizeof(stdout)) == -1)
+			return (-1);
+		if (OF_instance_to_package(stdout) != input)
+			return (-1);
+		snprintf(dev, devsz, "ttya");
+	} else if (OF_finddevice(buf) != input)
+		return (-1);
 	if (OF_getprop(input, "device_type", buf, sizeof(buf)) == -1)
 		return (-1);
 	if (strcmp(buf, "serial") != 0)
 		return (-1);
-	if (OF_getprop(options, "output-device", buf, sizeof(buf)) == -1)
-		return (-1);
-	if (OF_finddevice(buf) != input)
-		return (-1);
 	return (input);
 }
 

==== //depot/projects/netperf_socket/sys/geom/geom_io.c#3 (text+ko) ====

@@ -34,7 +34,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/geom/geom_io.c,v 1.53 2004/02/11 18:21:32 pjd Exp $");
+__FBSDID("$FreeBSD: src/sys/geom/geom_io.c,v 1.54 2004/04/04 20:37:28 pjd Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -279,6 +279,9 @@
 	}
 	KASSERT(cp != NULL, ("NULL bio_from in g_io_deliver"));
 	KASSERT(cp->geom != NULL, ("NULL bio_from->geom in g_io_deliver"));
+	KASSERT(bp->bio_completed >= 0, ("bio_completed can't be less than 0"));
+	KASSERT(bp->bio_completed <= bp->bio_length,
+	    ("bio_completed can't be greater than bio_length"));
 
 	g_trace(G_T_BIO,
 "g_io_deliver(%p) from %p(%s) to %p(%s) cmd %d error %d off %jd len %jd",

==== //depot/projects/netperf_socket/sys/i386/i386/db_interface.c#4 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/i386/i386/db_interface.c,v 1.80 2004/03/12 21:45:29 trhodes Exp $");
+__FBSDID("$FreeBSD: src/sys/i386/i386/db_interface.c,v 1.81 2004/04/03 22:23:36 marcel Exp $");
 
 /*
  * Interface to new debugger.
@@ -60,19 +60,6 @@
 
 static jmp_buf	db_global_jmpbuf;
 
-static __inline u_short
-rss(void)
-{
-	u_short ss;
-#if defined(__GNUC__) || defined(__INTEL_COMPILER)
-	__asm __volatile("mov %%ss,%0" : "=r" (ss));
-#else
-#error Function rss() needs to get ported to this compiler.
-	ss = 0; /* XXXX Fix for other compilers. */
-#endif
-	return ss;
-}
-
 /*
  *  kdb_trap - field a TRACE or BPT trap
  */

==== //depot/projects/netperf_socket/sys/i386/i386/elan-mmcr.c#6 (text+ko) ====

@@ -39,7 +39,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/i386/i386/elan-mmcr.c,v 1.26 2004/03/15 21:47:34 phk Exp $");
+__FBSDID("$FreeBSD: src/sys/i386/i386/elan-mmcr.c,v 1.27 2004/04/03 18:42:52 phk Exp $");
 
 #include "opt_cpu.h"
 #include <sys/param.h>
@@ -77,7 +77,6 @@
 static u_int	echo_a, echo_d;
 #endif /* CPU_ELAN_PPS */
 
-#ifdef CPU_SOEKRIS
 static u_int	led_cookie[32];
 static dev_t	led_dev[32];
 
@@ -93,7 +92,6 @@
 		v ^= 0xc;
 	mmcrptr[v / 2] = u;
 }
-#endif
 
 static int
 sysctl_machdep_elan_gpio_config(SYSCTL_HANDLER_ARGS)
@@ -117,7 +115,9 @@
 	/* Disallow any disabled pins and count pps and echo */
 	np = ne = 0;
 	for (i = 0; i < 32; i++) {
-		if (gpio_config[i] == '-' && (buf[i] != '-' && buf[i] != '.'))
+		if (gpio_config[i] == '-' && buf[i] == '.')
+			buf[i] = gpio_config[i];
+		if (gpio_config[i] == '-' && buf[i] != '-')
 			return (EPERM);
 		if (buf[i] == 'P') {
 			np++;
@@ -149,12 +149,15 @@
 		else
 			v = 0;
 #ifdef CPU_SOEKRIS
+		if (i == 9)
+			;
+		else
+#endif
 		if (buf[i] != 'l' && buf[i] != 'L' && led_dev[i] != NULL) {
 			led_destroy(led_dev[i]);	
 			led_dev[i] = NULL;
 			mmcrptr[(0xc2a + v) / 2] &= ~u;
 		}
-#endif
 		switch (buf[i]) {
 #ifdef CPU_ELAN_PPS
 		case 'P':
@@ -177,7 +180,6 @@
 			gpio_config[i] = buf[i];
 			break;
 #endif /* CPU_ELAN_PPS */
-#ifdef CPU_SOEKRIS
 		case 'l':
 		case 'L':
 			if (buf[i] == 'L')
@@ -192,7 +194,6 @@
 			mmcrptr[(0xc2a + v) / 2] |= u;
 			gpio_config[i] = buf[i];
 			break;
-#endif
 		case '.':
 			gpio_config[i] = buf[i];
 			break;

==== //depot/projects/netperf_socket/sys/i386/i386/uio_machdep.c#2 (text+ko) ====

@@ -40,7 +40,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/i386/i386/uio_machdep.c,v 1.1 2004/03/21 20:28:36 alc Exp $");
+__FBSDID("$FreeBSD: src/sys/i386/i386/uio_machdep.c,v 1.2 2004/04/03 09:16:25 alc Exp $");
 
 #include <sys/param.h>
 #include <sys/kernel.h>
@@ -92,7 +92,7 @@
 			cnt = n;
 		page_offset = offset & PAGE_MASK;
 		cnt = min(cnt, PAGE_SIZE - page_offset);
-		sf = sf_buf_alloc(ma[offset >> PAGE_SHIFT]);
+		sf = sf_buf_alloc(ma[offset >> PAGE_SHIFT], 0);
 		cp = (char *)sf_buf_kva(sf) + page_offset;
 		switch (uio->uio_segflg) {
 		case UIO_USERSPACE:

==== //depot/projects/netperf_socket/sys/i386/i386/vm_machdep.c#9 (text+ko) ====

@@ -41,7 +41,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/i386/i386/vm_machdep.c,v 1.234 2004/03/29 19:38:05 peter Exp $");
+__FBSDID("$FreeBSD: src/sys/i386/i386/vm_machdep.c,v 1.235 2004/04/03 09:16:25 alc Exp $");
 
 #include "opt_isa.h"
 #include "opt_npx.h"
@@ -606,7 +606,7 @@
  * Get an sf_buf from the freelist. Will block if none are available.
  */
 struct sf_buf *
-sf_buf_alloc(struct vm_page *m)
+sf_buf_alloc(struct vm_page *m, int pri)
 {
 	struct sf_head *hash_list;
 	struct sf_buf *sf;
@@ -628,7 +628,7 @@
 	while ((sf = TAILQ_FIRST(&sf_buf_freelist)) == NULL) {
 		sf_buf_alloc_want++;
 		mbstat.sf_allocwait++;
-		error = msleep(&sf_buf_freelist, &sf_buf_lock, PVM|PCATCH,
+		error = msleep(&sf_buf_freelist, &sf_buf_lock, PVM | pri,
 		    "sfbufa", 0);
 		sf_buf_alloc_want--;
 

==== //depot/projects/netperf_socket/sys/i386/include/cpufunc.h#4 (text+ko) ====

@@ -30,7 +30,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/i386/include/cpufunc.h,v 1.140 2004/03/12 21:45:30 trhodes Exp $
+ * $FreeBSD: src/sys/i386/include/cpufunc.h,v 1.141 2004/04/03 22:23:36 marcel Exp $
  */
 
 /*
@@ -456,6 +456,14 @@
 	return (sel);
 }
 
+static __inline u_int
+rss(void)
+{
+	u_int sel;
+	__asm __volatile("movl %%ss,%0" : "=rm" (sel));
+	return (sel);
+}
+
 static __inline void
 load_fs(u_int sel)
 {

==== //depot/projects/netperf_socket/sys/ia64/ia64/vm_machdep.c#4 (text+ko) ====

@@ -38,7 +38,7 @@
  *
  *	from: @(#)vm_machdep.c	7.3 (Berkeley) 5/13/91
  *	Utah $Hdr: vm_machdep.c 1.16.1.1 89/06/23$
- * $FreeBSD: src/sys/ia64/ia64/vm_machdep.c,v 1.81 2004/03/27 17:44:25 marcel Exp $
+ * $FreeBSD: src/sys/ia64/ia64/vm_machdep.c,v 1.82 2004/04/03 09:16:26 alc Exp $
  */
 /*
  * Copyright (c) 1994, 1995, 1996 Carnegie-Mellon University.
@@ -344,7 +344,7 @@
  * Get an sf_buf from the freelist. Will block if none are available.
  */
 struct sf_buf *
-sf_buf_alloc(struct vm_page *m)
+sf_buf_alloc(struct vm_page *m, int pri)
 {
 	struct sf_buf *sf;
 	int error;
@@ -353,7 +353,7 @@
 	while ((sf = SLIST_FIRST(&sf_freelist.sf_head)) == NULL) {
 		sf_buf_alloc_want++;
 		mbstat.sf_allocwait++;
-		error = msleep(&sf_freelist, &sf_freelist.sf_lock, PVM|PCATCH,
+		error = msleep(&sf_freelist, &sf_freelist.sf_lock, PVM | pri,
 		    "sfbufa", 0);
 		sf_buf_alloc_want--;
 

==== //depot/projects/netperf_socket/sys/isa/psm.c#4 (text+ko) ====

@@ -59,7 +59,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/isa/psm.c,v 1.66 2004/03/17 17:50:51 njl Exp $");
+__FBSDID("$FreeBSD: src/sys/isa/psm.c,v 1.67 2004/04/04 16:36:21 markm Exp $");
 
 #include "opt_psm.h"
 
@@ -2033,7 +2033,9 @@
     
 	getmicrouptime(&now);
 	if ((pb->inputbytes > 0) && timevalcmp(&now, &sc->inputtimeout, >)) {
+#if DEBUG
 	    log(LOG_DEBUG, "psmintr: delay too long; resetting byte count\n");
+#endif
 	    pb->inputbytes = 0;
 	    sc->syncerrors = 0;
 	}
@@ -2045,7 +2047,7 @@
         if (pb->inputbytes < sc->mode.packetsize) 
 	    continue;
 
-#if 0
+#if DEBUG
         log(LOG_DEBUG, "psmintr: %02x %02x %02x %02x %02x %02x\n",
 	    pb->ipacket[0], pb->ipacket[1], pb->ipacket[2],
 	    pb->ipacket[3], pb->ipacket[4], pb->ipacket[5]);
@@ -2054,30 +2056,40 @@
 	c = pb->ipacket[0];
 
 	if ((c & sc->mode.syncmask[0]) != sc->mode.syncmask[1]) {
+#if DEBUG
             log(LOG_DEBUG, "psmintr: out of sync (%04x != %04x) %d"
 		" cmds since last error.\n", 
 		c & sc->mode.syncmask[0], sc->mode.syncmask[1],
 		sc->cmdcount - sc->lasterr);
+#endif
 	    haderror = 1;
 	    sc->lasterr = sc->cmdcount;
 	    dropqueue(sc);
 	    ++sc->syncerrors;
 	    sc->lastinputerr = now;
 	    if (sc->syncerrors < sc->mode.packetsize) {
+#if DEBUG
 		log(LOG_DEBUG, "psmintr: discard a byte (%d).\n", sc->syncerrors);
+#endif
 		--pb->inputbytes;
 		bcopy(&pb->ipacket[1], &pb->ipacket[0], pb->inputbytes);
 	    } else if (sc->syncerrors == sc->mode.packetsize) {
+#if DEBUG
 		log(LOG_DEBUG, "psmintr: re-enable the mouse.\n");
+#endif
 		pb->inputbytes = 0;
 		disable_aux_dev(sc->kbdc);
 		enable_aux_dev(sc->kbdc);
 	    } else if (sc->syncerrors < PSM_SYNCERR_THRESHOLD1) {
+#if DEBUG
 		log(LOG_DEBUG, "psmintr: discard a byte (%d).\n", sc->syncerrors);
+#endif
 		--pb->inputbytes;
 		bcopy(&pb->ipacket[1], &pb->ipacket[0], pb->inputbytes);
 	    } else if (sc->syncerrors >= PSM_SYNCERR_THRESHOLD1) {
+#if DEBUG
 		log(LOG_DEBUG, "psmintr: reset the mouse.\n");
+#endif
 		reinitialize(sc, TRUE);
 	    }
 	    continue;

==== //depot/projects/netperf_socket/sys/kern/imgact_elf.c#4 (text+ko) ====

@@ -29,7 +29,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/imgact_elf.c,v 1.145 2004/03/18 16:33:05 nectar Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/imgact_elf.c,v 1.146 2004/04/03 20:25:41 marcel Exp $");
 
 #include <sys/param.h>
 #include <sys/exec.h>
@@ -922,8 +922,7 @@
 static void each_writable_segment(struct proc *, segment_callback, void *);
 static int __elfN(corehdr)(struct thread *, struct vnode *, struct ucred *,
     int, void *, size_t);
-static void __elfN(puthdr)(struct proc *, void *, size_t *,
-    const prstatus_t *, const prfpregset_t *, const prpsinfo_t *, int);
+static void __elfN(puthdr)(struct proc *, void *, size_t *, int);
 static void __elfN(putnote)(void *, size_t *, const char *, int,
     const void *, size_t);
 
@@ -953,9 +952,7 @@
 	 * size is calculated.
 	 */
 	hdrsize = 0;
-	__elfN(puthdr)((struct proc *)NULL, (void *)NULL, &hdrsize,
-	    (const prstatus_t *)NULL, (const prfpregset_t *)NULL,
-	    (const prpsinfo_t *)NULL, seginfo.count);
+	__elfN(puthdr)(p, (void *)NULL, &hdrsize, seginfo.count);
 
 	if (hdrsize + seginfo.size >= limit)
 		return (EFAULT);
@@ -1115,48 +1112,14 @@
 	size_t hdrsize;
 	void *hdr;
 {
-	struct {
-		prstatus_t status;
-		prfpregset_t fpregset;
-		prpsinfo_t psinfo;
-	} *tempdata;
 	struct proc *p = td->td_proc;
 	size_t off;
-	prstatus_t *status;
-	prfpregset_t *fpregset;
-	prpsinfo_t *psinfo;
-
-	tempdata = malloc(sizeof(*tempdata), M_TEMP, M_ZERO | M_WAITOK);
-	status = &tempdata->status;
-	fpregset = &tempdata->fpregset;
-	psinfo = &tempdata->psinfo;
-
-	/* Gather the information for the header. */
-	status->pr_version = PRSTATUS_VERSION;
-	status->pr_statussz = sizeof(prstatus_t);
-	status->pr_gregsetsz = sizeof(gregset_t);
-	status->pr_fpregsetsz = sizeof(fpregset_t);
-	status->pr_osreldate = osreldate;
-	status->pr_cursig = p->p_sig;
-	status->pr_pid = p->p_pid;
-	fill_regs(td, &status->pr_reg);
-
-	fill_fpregs(td, fpregset);
 
-	psinfo->pr_version = PRPSINFO_VERSION;
-	psinfo->pr_psinfosz = sizeof(prpsinfo_t);
-	strlcpy(psinfo->pr_fname, p->p_comm, sizeof(psinfo->pr_fname));
-
-	/* XXX - We don't fill in the command line arguments properly yet. */
-	strlcpy(psinfo->pr_psargs, p->p_comm, sizeof(psinfo->pr_psargs));
-
 	/* Fill in the header. */
 	bzero(hdr, hdrsize);
 	off = 0;
-	__elfN(puthdr)(p, hdr, &off, status, fpregset, psinfo, numsegs);
+	__elfN(puthdr)(p, hdr, &off, numsegs);
 
-	free(tempdata, M_TEMP);
-
 	/* Write it to the core file. */
 	return (vn_rdwr_inchunks(UIO_WRITE, vp, hdr, hdrsize, (off_t)0,
 	    UIO_SYSSPACE, IO_UNIT | IO_DIRECT, cred, NOCRED, NULL,
@@ -1164,13 +1127,18 @@
 }
 
 static void
-__elfN(puthdr)(struct proc *p, void *dst, size_t *off, const prstatus_t *status,
-    const prfpregset_t *fpregset, const prpsinfo_t *psinfo, int numsegs)
+__elfN(puthdr)(struct proc *p, void *dst, size_t *off, int numsegs)
 {
-	size_t ehoff;
-	size_t phoff;
-	size_t noteoff;
-	size_t notesz;
+	struct {
+		prstatus_t status;
+		prfpregset_t fpregset;
+		prpsinfo_t psinfo;
+	} *tempdata;
+	prstatus_t *status;
+	prfpregset_t *fpregset;
+	prpsinfo_t *psinfo;
+	struct thread *first, *thr;
+	size_t ehoff, noteoff, notesz, phoff;
 
 	ehoff = *off;
 	*off += sizeof(Elf_Ehdr);
@@ -1179,14 +1147,77 @@
 	*off += (numsegs + 1) * sizeof(Elf_Phdr);
 
 	noteoff = *off;
-	__elfN(putnote)(dst, off, "FreeBSD", NT_PRSTATUS, status,
-	    sizeof *status);
-	__elfN(putnote)(dst, off, "FreeBSD", NT_FPREGSET, fpregset,
-	    sizeof *fpregset);
+	/*
+	 * Don't allocate space for the notes if we're just calculating
+	 * the size of the header. We also don't collect the data.
+	 */
+	if (dst != NULL) {
+		tempdata = malloc(sizeof(*tempdata), M_TEMP, M_ZERO|M_WAITOK);
+		status = &tempdata->status;
+		fpregset = &tempdata->fpregset;
+		psinfo = &tempdata->psinfo;
+	} else {
+		tempdata = NULL;

>>> TRUNCATED FOR MAIL (1000 lines) <<<



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