PERFORCE change 48511 for review

Robert Watson rwatson at FreeBSD.org
Tue Mar 9 11:17:10 PST 2004


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

Change 48511 by rwatson at rwatson_paprika on 2004/03/09 11:16:37

	Integrate netperf_socket:
	
	  pmap_pinit2() removed
	  acpi type fixes
	  netgraph atm magic
	  ndis pieces  
	  vinum type fixes
	  more geom_concat
	  geom orphan fixes
	  More giant pushdown/removal in fork() 
	  loadav() now runs MPSAFE
	  cpus are now hung off busdma by acpi
	  configurable policy limits on hard links in vfs
	  pf now hooked up
	  if_disc locking (loopback)
	  if_loop locking (loopback)
	  netgraph getifindex
	  PIM registration fix

Affected files ...

.. //depot/projects/netperf_socket/sys/alpha/alpha/pmap.c#2 integrate
.. //depot/projects/netperf_socket/sys/amd64/amd64/local_apic.c#3 integrate
.. //depot/projects/netperf_socket/sys/amd64/amd64/machdep.c#3 integrate
.. //depot/projects/netperf_socket/sys/amd64/amd64/mp_machdep.c#3 integrate
.. //depot/projects/netperf_socket/sys/amd64/amd64/pmap.c#3 integrate
.. //depot/projects/netperf_socket/sys/amd64/amd64/trap.c#3 integrate
.. //depot/projects/netperf_socket/sys/amd64/include/cpufunc.h#4 integrate
.. //depot/projects/netperf_socket/sys/boot/efi/libefi/efi_console.c#2 integrate
.. //depot/projects/netperf_socket/sys/conf/NOTES#6 integrate
.. //depot/projects/netperf_socket/sys/conf/files#7 integrate
.. //depot/projects/netperf_socket/sys/conf/options#4 integrate
.. //depot/projects/netperf_socket/sys/dev/acpica/acpi.c#5 integrate
.. //depot/projects/netperf_socket/sys/dev/acpica/acpivar.h#4 integrate
.. //depot/projects/netperf_socket/sys/dev/if_ndis/if_ndis_pci.c#2 integrate
.. //depot/projects/netperf_socket/sys/dev/vinum/vinumext.h#2 integrate
.. //depot/projects/netperf_socket/sys/dev/vinum/vinumio.c#2 integrate
.. //depot/projects/netperf_socket/sys/dev/vinum/vinumrequest.c#2 integrate
.. //depot/projects/netperf_socket/sys/geom/concat/g_concat.c#5 integrate
.. //depot/projects/netperf_socket/sys/geom/concat/g_concat.h#5 integrate
.. //depot/projects/netperf_socket/sys/geom/geom_subr.c#3 integrate
.. //depot/projects/netperf_socket/sys/i386/i386/elan-mmcr.c#4 integrate
.. //depot/projects/netperf_socket/sys/i386/i386/pmap.c#3 integrate
.. //depot/projects/netperf_socket/sys/i386/i386/vm_machdep.c#2 integrate
.. //depot/projects/netperf_socket/sys/ia64/ia64/pmap.c#3 integrate
.. //depot/projects/netperf_socket/sys/kern/kern_fork.c#6 integrate
.. //depot/projects/netperf_socket/sys/kern/kern_synch.c#4 integrate
.. //depot/projects/netperf_socket/sys/kern/subr_smp.c#3 integrate
.. //depot/projects/netperf_socket/sys/kern/vfs_syscalls.c#3 integrate
.. //depot/projects/netperf_socket/sys/modules/Makefile#4 integrate
.. //depot/projects/netperf_socket/sys/modules/netgraph/atmllc/Makefile#1 branch
.. //depot/projects/netperf_socket/sys/net/if_disc.c#2 integrate
.. //depot/projects/netperf_socket/sys/net/if_loop.c#2 integrate
.. //depot/projects/netperf_socket/sys/netgraph/ng_atmllc.c#1 branch
.. //depot/projects/netperf_socket/sys/netgraph/ng_atmllc.h#1 branch
.. //depot/projects/netperf_socket/sys/netgraph/ng_iface.c#2 integrate
.. //depot/projects/netperf_socket/sys/netgraph/ng_iface.h#2 integrate
.. //depot/projects/netperf_socket/sys/netinet/ip_mroute.c#4 integrate
.. //depot/projects/netperf_socket/sys/netinet/pim.h#2 integrate
.. //depot/projects/netperf_socket/sys/powerpc/powerpc/pmap.c#4 integrate
.. //depot/projects/netperf_socket/sys/sparc64/sparc64/pmap.c#2 integrate
.. //depot/projects/netperf_socket/sys/sys/param.h#4 integrate
.. //depot/projects/netperf_socket/sys/sys/pcpu.h#2 integrate
.. //depot/projects/netperf_socket/sys/vm/pmap.h#2 integrate
.. //depot/projects/netperf_socket/sys/vm/vm_glue.c#4 integrate
.. //depot/projects/netperf_socket/sys/vm/vm_map.c#3 integrate
.. //depot/projects/netperf_socket/sys/vm/vm_object.c#3 integrate

Differences ...

==== //depot/projects/netperf_socket/sys/alpha/alpha/pmap.c#2 (text+ko) ====

@@ -148,7 +148,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/alpha/alpha/pmap.c,v 1.139 2003/10/03 22:46:52 alc Exp $");
+__FBSDID("$FreeBSD: src/sys/alpha/alpha/pmap.c,v 1.140 2004/03/07 21:06:46 alc Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -1109,18 +1109,6 @@
 	mtx_lock_spin(&allpmaps_lock);
 	LIST_INSERT_HEAD(&allpmaps, pmap, pm_list);
 	mtx_unlock_spin(&allpmaps_lock);
-}
-
-/*
- * Wire in kernel global address entries.  To avoid a race condition
- * between pmap initialization and pmap_growkernel, this procedure
- * should be called after the vmspace is attached to the process
- * but before this pmap is activated.
- */
-void
-pmap_pinit2(pmap)
-	struct pmap *pmap;
-{
 	bcopy(PTlev1 + K1SEGLEV1I, pmap->pm_lev1 + K1SEGLEV1I, nklev2 * PTESIZE);
 }
 

==== //depot/projects/netperf_socket/sys/amd64/amd64/local_apic.c#3 (text+ko) ====

@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/local_apic.c,v 1.7 2004/01/30 00:24:45 peter Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/local_apic.c,v 1.8 2004/03/08 00:15:29 peter Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -691,8 +691,8 @@
 	intr_restore(eflags);
 }
 
+#define	BEFORE_SPIN	1000000
 #ifdef DETECT_DEADLOCK
-#define	BEFORE_SPIN	1000000
 #define	AFTER_SPIN	1000
 #endif
 
@@ -723,11 +723,9 @@
 		destfield = dest;
 	}
 
-#ifdef DETECT_DEADLOCK
-	/* Check for an earlier stuck IPI. */
+	/* Wait for an earlier IPI to finish. */
 	if (!lapic_ipi_wait(BEFORE_SPIN))
 		panic("APIC: Previous IPI is stuck");
-#endif
 
 	lapic_ipi_raw(icrlo, destfield);
 

==== //depot/projects/netperf_socket/sys/amd64/amd64/machdep.c#3 (text+ko) ====

@@ -39,7 +39,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/machdep.c,v 1.604 2004/02/25 23:12:39 peter Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/machdep.c,v 1.605 2004/03/08 00:16:52 peter Exp $");
 
 #include "opt_atalk.h"
 #include "opt_atpic.h"
@@ -1162,6 +1162,7 @@
 	pcpu_init(pc, 0, sizeof(struct pcpu));
 	PCPU_SET(prvspace, pc);
 	PCPU_SET(curthread, &thread0);
+	PCPU_SET(curpcb, thread0.td_pcb);
 	PCPU_SET(tssp, &common_tss[0]);
 
 	/*

==== //depot/projects/netperf_socket/sys/amd64/amd64/mp_machdep.c#3 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/mp_machdep.c,v 1.234 2004/01/30 00:24:45 peter Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/mp_machdep.c,v 1.235 2004/03/08 00:25:03 peter Exp $");
 
 #include "opt_cpu.h"
 #include "opt_kstack_pages.h"
@@ -57,6 +57,7 @@
 #include <machine/clock.h>
 #include <machine/md_var.h>
 #include <machine/pcb.h>
+#include <machine/psl.h>
 #include <machine/smp.h>
 #include <machine/specialreg.h>
 #include <machine/tss.h>

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

@@ -75,7 +75,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.452 2004/02/05 00:11:05 peter Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.453 2004/03/07 21:06:47 alc Exp $");
 
 /*
  *	Manages physical address maps.
@@ -1103,19 +1103,6 @@
 }
 
 /*
- * Wire in kernel global address entries.  To avoid a race condition
- * between pmap initialization and pmap_growkernel, this procedure
- * should be called after the vmspace is attached to the process
- * but before this pmap is activated.
- */
-void
-pmap_pinit2(pmap)
-	struct pmap *pmap;
-{
-	/* XXX: Remove this stub when no longer called */
-}
-
-/*
  * this routine is called if the page table page is not
  * mapped correctly.
  *

==== //depot/projects/netperf_socket/sys/amd64/amd64/trap.c#3 (text+ko) ====

@@ -38,7 +38,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/trap.c,v 1.272 2004/01/29 00:05:03 peter Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/trap.c,v 1.273 2004/03/08 00:17:27 peter Exp $");
 
 /*
  * AMD64 Trap and System call handling
@@ -371,8 +371,7 @@
 				frame.tf_rip = (long)doreti_iret_fault;
 				goto out;
 			}
-			if (PCPU_GET(curpcb) != NULL &&
-			    PCPU_GET(curpcb)->pcb_onfault != NULL) {
+			if (PCPU_GET(curpcb)->pcb_onfault != NULL) {
 				frame.tf_rip =
 				    (long)PCPU_GET(curpcb)->pcb_onfault;
 				goto out;
@@ -555,7 +554,6 @@
 nogo:
 	if (!usermode) {
 		if (td->td_intr_nesting_level == 0 &&
-		    PCPU_GET(curpcb) != NULL &&
 		    PCPU_GET(curpcb)->pcb_onfault != NULL) {
 			frame->tf_rip = (long)PCPU_GET(curpcb)->pcb_onfault;
 			return (0);

==== //depot/projects/netperf_socket/sys/amd64/include/cpufunc.h#4 (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/include/cpufunc.h,v 1.140 2004/03/05 09:19:59 le Exp $
+ * $FreeBSD: src/sys/amd64/include/cpufunc.h,v 1.141 2004/03/08 00:24:15 peter Exp $
  */
 
 /*
@@ -43,13 +43,8 @@
 #ifndef _MACHINE_CPUFUNC_H_
 #define	_MACHINE_CPUFUNC_H_
 
-#include <sys/cdefs.h>
-#include <machine/psl.h>
-
-struct thread;
 struct region_descriptor;
 
-__BEGIN_DECLS
 #define readb(va)	(*(volatile u_int8_t *) (va))
 #define readw(va)	(*(volatile u_int16_t *) (va))
 #define readl(va)	(*(volatile u_int32_t *) (va))
@@ -563,21 +558,18 @@
 }
 #endif
 
-/* void lidt(struct region_descriptor *addr); */
 static __inline void
 lidt(struct region_descriptor *addr)
 {
 	__asm __volatile("lidt (%0)" : : "r" (addr));
 }
 
-/* void lldt(u_short sel); */
 static __inline void
 lldt(u_short sel)
 {
 	__asm __volatile("lldt %0" : : "r" (sel));
 }
 
-/* void ltr(u_short sel); */
 static __inline void
 ltr(u_short sel)
 {
@@ -717,30 +709,37 @@
 int	breakpoint(void);
 u_int	bsfl(u_int mask);
 u_int	bsrl(u_int mask);
-void	cpu_invlpg(u_long addr);
-void	cpu_invlpg_range(u_long start, u_long end);
 void	disable_intr(void);
 void	do_cpuid(u_int ax, u_int *p);
 void	enable_intr(void);
 void	halt(void);
+void	ia32_pause(void);
 u_char	inb(u_int port);
 u_int	inl(u_int port);
 void	insb(u_int port, void *addr, size_t cnt);
 void	insl(u_int port, void *addr, size_t cnt);
 void	insw(u_int port, void *addr, size_t cnt);
+register_t	intr_disable(void);
+void	intr_restore(register_t rf);
 void	invd(void);
 void	invlpg(u_int addr);
-void	invlpg_range(u_int start, u_int end);
 void	invltlb(void);
 u_short	inw(u_int port);
-void	load_cr0(u_int cr0);
-void	load_cr3(u_int cr3);
-void	load_cr4(u_int cr4);
+void	lidt(struct region_descriptor *addr);
+void	lldt(u_short sel);
+void	load_cr0(u_long cr0);
+void	load_cr3(u_long cr3);
+void	load_cr4(u_long cr4);
+void	load_dr0(u_int64_t dr0);
+void	load_dr1(u_int64_t dr1);
+void	load_dr2(u_int64_t dr2);
+void	load_dr3(u_int64_t dr3);
+void	load_dr4(u_int64_t dr4);
+void	load_dr5(u_int64_t dr5);
+void	load_dr6(u_int64_t dr6);
+void	load_dr7(u_int64_t dr7);
 void	load_fs(u_int sel);
 void	load_gs(u_int sel);
-struct region_descriptor;
-void	lidt(struct region_descriptor *addr);
-void	lldt(u_short sel);
 void	ltr(u_short sel);
 void	outb(u_int port, u_char data);
 void	outl(u_int port, u_int data);
@@ -748,43 +747,30 @@
 void	outsl(u_int port, const void *addr, size_t cnt);
 void	outsw(u_int port, const void *addr, size_t cnt);
 void	outw(u_int port, u_short data);
-void	ia32_pause(void);
-u_int	rcr0(void);
-u_int	rcr2(void);
-u_int	rcr3(void);
-u_int	rcr4(void);
-u_int	rfs(void);
-u_int	rgs(void);
+u_long	rcr0(void);
+u_long	rcr2(void);
+u_long	rcr3(void);
+u_long	rcr4(void);
 u_int64_t rdmsr(u_int msr);
 u_int64_t rdpmc(u_int pmc);
+u_int64_t rdr0(void);
+u_int64_t rdr1(void);
+u_int64_t rdr2(void);
+u_int64_t rdr3(void);
+u_int64_t rdr4(void);
+u_int64_t rdr5(void);
+u_int64_t rdr6(void);
+u_int64_t rdr7(void);
 u_int64_t rdtsc(void);
 u_int	read_rflags(void);
+u_int	rfs(void);
+u_int	rgs(void);
 void	wbinvd(void);
 void	write_rflags(u_int rf);
 void	wrmsr(u_int msr, u_int64_t newval);
-u_int64_t	rdr0(void);
-void	load_dr0(u_int64_t dr0);
-u_int64_t	rdr1(void);
-void	load_dr1(u_int64_t dr1);
-u_int64_t	rdr2(void);
-void	load_dr2(u_int64_t dr2);
-u_int64_t	rdr3(void);
-void	load_dr3(u_int64_t dr3);
-u_int64_t	rdr4(void);
-void	load_dr4(u_int64_t dr4);
-u_int64_t	rdr5(void);
-void	load_dr5(u_int64_t dr5);
-u_int64_t	rdr6(void);
-void	load_dr6(u_int64_t dr6);
-u_int64_t	rdr7(void);
-void	load_dr7(u_int64_t dr7);
-register_t	intr_disable(void);
-void	intr_restore(register_t rf);
 
 #endif	/* __GNUC__ */
 
 void	reset_dbregs(void);
 
-__END_DECLS
-
 #endif /* !_MACHINE_CPUFUNC_H_ */

==== //depot/projects/netperf_socket/sys/boot/efi/libefi/efi_console.c#2 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/boot/efi/libefi/efi_console.c,v 1.4 2003/04/03 21:36:29 obrien Exp $");
+__FBSDID("$FreeBSD: src/sys/boot/efi/libefi/efi_console.c,v 1.5 2004/03/09 04:00:33 marcel Exp $");
 
 #include <efi.h>
 #include <efilib.h>
@@ -46,6 +46,7 @@
 static int
 efi_cons_init(int arg)
 {
+	conout->SetAttribute(conout, EFI_TEXT_ATTR(EFI_LIGHTGRAY, EFI_BLACK));
 	return 0;
 }
 

==== //depot/projects/netperf_socket/sys/conf/NOTES#6 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/NOTES,v 1.1203 2004/03/01 07:51:51 bde Exp $
+# $FreeBSD: src/sys/conf/NOTES,v 1.1205 2004/03/08 22:03:28 mlaier Exp $
 #
 # NOTES -- Lines that can be cut/pasted into kernel and hints configs.
 #
@@ -409,6 +409,7 @@
 # corresponding man page, e.g., ng_async(8).
 options 	NETGRAPH		#netgraph(4) system
 options 	NETGRAPH_ASYNC
+options 	NETGRAPH_ATMLLC
 options 	NETGRAPH_BPF
 options 	NETGRAPH_BRIDGE
 options 	NETGRAPH_CISCO
@@ -486,6 +487,13 @@
 #  The `ef' device provides support for multiple ethernet frame types
 #  specified via ETHER_* options. See ef(4) for details.
 #
+# The pf packet filter consists of three devices:
+#  The `pf' device provides /dev/pf and the firewall code itself.
+#  The `pflog' device provides the pflog0 interface which logs packets.
+#  The `pfsync' device provides the pfsync0 interface used for
+#   synchronization of firewall state tables (over the net).
+# Requires option PFIL_HOOKS and (when used as a module) option RANDOM_IP_ID
+#
 # The PPP_BSDCOMP option enables support for compress(1) style entire
 # packet compression, the PPP_DEFLATE is for zlib/gzip style compression.
 # PPP_FILTER enables code for filtering the ppp data stream and selecting
@@ -506,6 +514,9 @@
 device		tun			#Tunnel driver (ppp(8), nos-tun(8))
 device		sl			#Serial Line IP
 device		gre			#IP over IP tunneling
+device		pf			#PF OpenBSD packet-filter firewall
+device		pflog			#logging support interface for PF
+device		pfsync			#synchronization interface for PF
 device		ppp			#Point-to-point protocol
 options 	PPP_BSDCOMP		#PPP BSD-compress support
 options 	PPP_DEFLATE		#PPP zlib/deflate/gzip support
@@ -560,7 +571,7 @@
 #
 # PFIL_HOOKS enables an abtraction layer which is meant to be used in
 # network code where filtering is required.  See the pfil(9) man page.
-# This option is required by the IPFILTER option.
+# This option is required by the IPFILTER option and the PF device.
 #
 # TCPDEBUG enables code which keeps traces of the TCP state machine
 # for sockets with the SO_DEBUG option set, which can then be examined

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

@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/files,v 1.872 2004/03/03 09:33:03 obrien Exp $
+# $FreeBSD: src/sys/conf/files,v 1.873 2004/03/08 10:54:35 benno Exp $
 #
 # The long compile-with and dependency lines are required because of
 # limitations in config: backslash-newline doesn't work in strings, and
@@ -1402,6 +1402,7 @@
 contrib/ngatm/netnatm/sig/sig_verify.c		optional ngatm_uni
 netgraph/ng_UI.c	optional netgraph_UI
 netgraph/ng_async.c	optional netgraph_async
+netgraph/ng_atmllc.c	optional netgraph_atmllc
 netgraph/ng_base.c	optional netgraph
 netgraph/ng_bpf.c	optional netgraph_bpf
 net/bpf_filter.c	optional netgraph_bpf

==== //depot/projects/netperf_socket/sys/conf/options#4 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/options,v 1.433 2004/02/28 20:56:35 phk Exp $
+# $FreeBSD: src/sys/conf/options,v 1.434 2004/03/08 10:54:35 benno Exp $
 #
 #        On the handling of kernel options
 #
@@ -376,6 +376,7 @@
 # option below. Each type has its own man page, e.g. ng_async(4).
 NETGRAPH
 NETGRAPH_ASYNC		opt_netgraph.h
+NETGRAPH_ATMLLC		opt_netgraph.h
 NETGRAPH_BPF		opt_netgraph.h
 NETGRAPH_BRIDGE		opt_netgraph.h
 NETGRAPH_CISCO		opt_netgraph.h

==== //depot/projects/netperf_socket/sys/dev/acpica/acpi.c#5 (text+ko) ====

@@ -26,7 +26,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- *	$FreeBSD: src/sys/dev/acpica/acpi.c,v 1.123 2004/03/04 04:42:59 njl Exp $
+ *	$FreeBSD: src/sys/dev/acpica/acpi.c,v 1.125 2004/03/09 05:44:47 njl Exp $
  */
 
 #include "opt_acpi.h"
@@ -1369,7 +1369,7 @@
 }
 
 ACPI_STATUS
-acpi_SetInteger(ACPI_HANDLE handle, char *path, int number)
+acpi_SetInteger(ACPI_HANDLE handle, char *path, UINT32 number)
 {
     ACPI_OBJECT arg1;
     ACPI_OBJECT_LIST args;
@@ -1388,7 +1388,7 @@
  * Evaluate a path that should return an integer.
  */
 ACPI_STATUS
-acpi_GetInteger(ACPI_HANDLE handle, char *path, int *number)
+acpi_GetInteger(ACPI_HANDLE handle, char *path, UINT32 *number)
 {
     ACPI_STATUS	status;
     ACPI_BUFFER	buf;
@@ -1435,9 +1435,10 @@
 }
 
 ACPI_STATUS
-acpi_ConvertBufferToInteger(ACPI_BUFFER *bufp, int *number)
+acpi_ConvertBufferToInteger(ACPI_BUFFER *bufp, UINT32 *number)
 {
     ACPI_OBJECT	*p;
+    UINT8	*val;
     int		i;
 
     p = (ACPI_OBJECT *)bufp->Pointer;
@@ -1451,8 +1452,9 @@
 	return (AE_BAD_DATA);
 
     *number = 0;
+    val = p->Buffer.Pointer;
     for (i = 0; i < p->Buffer.Length; i++)
-	*number += (*(p->Buffer.Pointer + i) << (i * 8));
+	*number += val[i] << (i * 8);
     return (AE_OK);
 }
 

==== //depot/projects/netperf_socket/sys/dev/acpica/acpivar.h#4 (text+ko) ====

@@ -25,7 +25,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- *	$FreeBSD: src/sys/dev/acpica/acpivar.h,v 1.56 2004/03/03 18:34:42 njl Exp $
+ *	$FreeBSD: src/sys/dev/acpica/acpivar.h,v 1.57 2004/03/09 05:41:28 njl Exp $
  */
 
 #include "bus_if.h"
@@ -176,11 +176,11 @@
 					      ACPI_HANDLE *result);
 extern ACPI_BUFFER	*acpi_AllocBuffer(int size);
 extern ACPI_STATUS	acpi_ConvertBufferToInteger(ACPI_BUFFER *bufp,
-						   int *number);
+						    UINT32 *number);
 extern ACPI_STATUS	acpi_GetInteger(ACPI_HANDLE handle, char *path,
-					int *number);
+					UINT32 *number);
 extern ACPI_STATUS	acpi_SetInteger(ACPI_HANDLE handle, char *path,
-					int number);
+					UINT32 number);
 extern ACPI_STATUS	acpi_ForeachPackageObject(ACPI_OBJECT *obj, 
 				void (*func)(ACPI_OBJECT *comp, void *arg),
 				void *arg);

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

@@ -31,7 +31,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/if_ndis/if_ndis_pci.c,v 1.1 2004/03/07 02:49:06 wpaul Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/if_ndis/if_ndis_pci.c,v 1.2 2004/03/09 18:39:40 wpaul Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -263,6 +263,26 @@
 	}
 
 	/*
+	 * If the BIOS did not set up an interrupt for this device,
+	 * the resource traversal code above will fail to set up
+	 * an IRQ resource. This is usually a bad thing, so try to
+	 * force the allocation of an interrupt here. If one was
+	 * not assigned to us by the BIOS, bus_alloc_resource()
+	 * should route one for us.
+	 */
+	if (sc->ndis_irq == NULL) {
+		rid = 0;
+		sc->ndis_irq = bus_alloc_resource(dev, SYS_RES_IRQ,
+		    &rid, 0, ~0, 1, RF_SHAREABLE | RF_ACTIVE);
+		if (sc->ndis_irq == NULL) {
+			device_printf(dev, "couldn't route interrupt\n");
+			error = ENXIO;
+			goto fail;
+		}
+		sc->ndis_rescnt++;
+	}
+
+	/*
 	 * Allocate the parent bus DMA tag appropriate for PCI.
 	 */
 #define NDIS_NSEG_NEW 32

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

@@ -34,7 +34,7 @@
  * advised of the possibility of such damage.
  *
  * $Id: vinumext.h,v 1.33 2003/05/23 00:57:48 grog Exp $
- * $FreeBSD: src/sys/dev/vinum/vinumext.h,v 1.40 2003/05/23 01:13:43 grog Exp $
+ * $FreeBSD: src/sys/dev/vinum/vinumext.h,v 1.41 2004/03/09 09:50:15 le Exp $
  */
 
 /* vinumext.h: external definitions */
@@ -187,8 +187,6 @@
 void update_plex_state(int plexno);
 void update_volume_state(int volno);
 void invalidate_subdisks(struct plex *, enum sdstate);
-void get_volume_label(char *name, int plexes, u_int64_t size, struct disklabel *lp);
-int write_volume_label(int);
 void start_object(struct vinum_ioctl_msg *);
 void stop_object(struct vinum_ioctl_msg *);
 void setstate(struct vinum_ioctl_msg *msg);

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

@@ -34,7 +34,7 @@
  * advised of the possibility of such damage.
  *
  * $Id: vinumio.c,v 1.39 2003/05/23 00:59:53 grog Exp grog $
- * $FreeBSD: src/sys/dev/vinum/vinumio.c,v 1.95 2003/11/24 04:06:56 grog Exp $
+ * $FreeBSD: src/sys/dev/vinum/vinumio.c,v 1.96 2004/03/09 09:50:15 le Exp $
  */
 
 #include <dev/vinum/vinumhdr.h>
@@ -627,66 +627,6 @@
 }
 
 /*
- * Disk labels are a mess.  The correct way to
- * access them is with the DIOC[GSW]DINFO ioctls,
- * but some programs, such as newfs, access the
- * disk directly, so we have to write things
- * there.  We do this only on request.  If a user
- * request tries to read it directly, we fake up
- * one on the fly.
- */
-
-/*
- * get_volume_label returns a label structure to
- * lp, which is allocated by the caller.
- */
-void
-get_volume_label(char *name, int plexes, u_int64_t size, struct disklabel *lp)
-{
-    bzero(lp, sizeof(struct disklabel));
-
-    strncpy(lp->d_typename, "vinum", sizeof(lp->d_typename));
-    lp->d_type = DTYPE_VINUM;
-    strncpy(lp->d_packname, name, min(sizeof(lp->d_packname), sizeof(name)));
-    lp->d_rpm = 14400 * plexes;				    /* to keep them guessing */
-    lp->d_interleave = 1;
-    lp->d_flags = 0;
-
-    /*
-     * A Vinum volume has a single track with all
-     * its sectors.
-     */
-    lp->d_secsize = DEV_BSIZE;				    /* bytes per sector */
-    lp->d_nsectors = size;				    /* data sectors per track */
-    lp->d_ntracks = 1;					    /* tracks per cylinder */
-    lp->d_ncylinders = 1;				    /* data cylinders per unit */
-    lp->d_secpercyl = size;				    /* data sectors per cylinder */
-    lp->d_secperunit = size;				    /* data sectors per unit */
-
-    lp->d_bbsize = BBSIZE;
-    lp->d_sbsize = 0;					    /* no longer used?  */
-    lp->d_magic = DISKMAGIC;
-    lp->d_magic2 = DISKMAGIC;
-
-    /*
-     * Set up partitions a, b and c to be identical
-     * and the size of the volume.  a is UFS, b is
-     * swap, c is nothing.
-     */
-    lp->d_partitions[0].p_size = size;
-    lp->d_partitions[0].p_fsize = 1024;
-    lp->d_partitions[0].p_fstype = FS_BSDFFS;		    /* FreeBSD File System :-) */
-    lp->d_partitions[0].p_fsize = 1024;			    /* FS fragment size */
-    lp->d_partitions[0].p_frag = 8;			    /* and fragments per block */
-    lp->d_partitions[SWAP_PART].p_size = size;
-    lp->d_partitions[SWAP_PART].p_fstype = FS_SWAP;	    /* swap partition */
-    lp->d_partitions[LABEL_PART].p_size = size;
-    lp->d_npartitions = LABEL_PART + 1;
-    strncpy(lp->d_packname, name, min(sizeof(lp->d_packname), sizeof(name)));
-    lp->d_checksum = dkcksum(lp);
-}
-
-/*
  * Search disks on system for vinum slices and add
  * them to the configuuration if they're not
  * there already.  devicename is a blank-separate

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

@@ -41,7 +41,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/vinum/vinumrequest.c,v 1.71 2003/11/24 04:06:56 grog Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/vinum/vinumrequest.c,v 1.72 2004/03/09 12:45:43 le Exp $");
 
 #include <dev/vinum/vinumhdr.h>
 #include <dev/vinum/request.h>
@@ -1018,7 +1018,7 @@
 int
 vinum_bounds_check(struct buf *bp, struct volume *vol)
 {
-    int maxsize = vol->size;				    /* size of the partition (sectors) */
+    int64_t maxsize = vol->size;			    /* size of the partition (sectors) */
     int size = (bp->b_bcount + DEV_BSIZE - 1) >> DEV_BSHIFT; /* size of this request (sectors) */
 
 #ifdef LABELSECTOR

==== //depot/projects/netperf_socket/sys/geom/concat/g_concat.c#5 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/geom/concat/g_concat.c,v 1.5 2004/03/04 10:22:42 pjd Exp $");
+__FBSDID("$FreeBSD: src/sys/geom/concat/g_concat.c,v 1.6 2004/03/09 11:18:53 pjd Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -65,6 +65,32 @@
 
 
 /*
+ * Greatest Common Divisor.
+ */
+static u_int
+gcd(u_int a, u_int b)
+{
+	u_int c;
+
+	while (b != 0) {
+		c = a;
+		a = b;
+		b = (c % b);
+	}
+	return (a);
+}
+
+/*
+ * Least Common Multiple.
+ */
+static u_int
+lcm(u_int a, u_int b)
+{
+
+	return ((a * b) / gcd(a, b));
+}
+
+/*
  * Return the number of valid disks.
  */
 static u_int
@@ -273,8 +299,8 @@
 g_concat_check_and_run(struct g_concat_softc *sc)
 {
 	struct g_concat_disk *disk;
+	u_int no, sectorsize = 0;
 	off_t start;
-	u_int no;
 
 	if (g_concat_nvalid(sc) != sc->sc_ndisks)
 		return;
@@ -288,7 +314,14 @@
 		if (sc->sc_type == G_CONCAT_TYPE_AUTOMATIC)
 			disk->d_end -= disk->d_consumer->provider->sectorsize;
 		start = disk->d_end;
+		if (no == 0)
+			sectorsize = disk->d_consumer->provider->sectorsize;
+		else {
+			sectorsize = lcm(sectorsize,
+			    disk->d_consumer->provider->sectorsize);
+		}
 	}
+	sc->sc_provider->sectorsize = sectorsize;
 	/* We have sc->sc_disks[sc->sc_ndisks - 1].d_end in 'start'. */
 	sc->sc_provider->mediasize = start;
 	g_error_provider(sc->sc_provider, 0);
@@ -366,6 +399,7 @@
 	if (sc->sc_type == G_CONCAT_TYPE_AUTOMATIC) {
 		struct g_concat_metadata md;
 
+		/* Re-read metadata. */
 		error = g_concat_read_metadata(cp, &md);
 		if (error != 0)
 			goto fail;
@@ -399,7 +433,7 @@
 
 static struct g_geom *
 g_concat_create(struct g_class *mp, const struct g_concat_metadata *md,
-    u_int type, size_t sectorsize)
+    u_int type)
 {
 	struct g_provider *pp;
 	struct g_concat_softc *sc;
@@ -452,10 +486,9 @@
 
 	pp = g_new_providerf(gp, "%s", gp->name);
 	sc->sc_provider = pp;
-	pp->sectorsize = sectorsize;
 	/*
 	 * Don't run provider yet (by setting its error to 0), because we're
-	 * not aware of its mediasize.
+	 * not aware of its media and sector size.
 	 */
 
 	G_CONCAT_DEBUG(0, "Device %s created (id=%u).", gp->name, sc->sc_id);
@@ -510,8 +543,8 @@
 }
 
 static int
-g_concat_destroy_geom(struct gctl_req *req, struct g_class *mp,
-    struct g_geom *gp)
+g_concat_destroy_geom(struct gctl_req *req __unused,
+    struct g_class *mp __unused, struct g_geom *gp)
 {
 	struct g_concat_softc *sc;
 
@@ -580,8 +613,7 @@
 			return (NULL);
 		}
 	} else {
-		gp = g_concat_create(mp, &md, G_CONCAT_TYPE_AUTOMATIC,
-		    pp->sectorsize);
+		gp = g_concat_create(mp, &md, G_CONCAT_TYPE_AUTOMATIC);
 		if (gp == NULL) {
 			G_CONCAT_DEBUG(0, "Cannot create device %s.concat.",
 			    md.md_name);
@@ -610,13 +642,12 @@
 	struct g_concat_softc *sc;
 	struct g_geom *gp;
 	struct sbuf *sb;
-	uint32_t sectorsize = 0;
 	char buf[20];
 
 	g_topology_assert();
 	md = gctl_get_paraml(req, "metadata", sizeof(*md));
 	if (md == NULL) {
-		gctl_error(req, "No 'metadata' argument");
+		gctl_error(req, "No '%s' argument.", "metadata");
 		return;
 	}
 	if (md->md_all <= 1) {
@@ -630,17 +661,15 @@
 		snprintf(buf, sizeof(buf), "disk%u", no);
 		pp = gctl_get_provider(req, buf);
 		if (pp == NULL) {
-			G_CONCAT_DEBUG(1, "Disk %u is invalid.", no);
-			gctl_error(req, "Disk %u is invalid", no);
+			G_CONCAT_DEBUG(1, "Disk %u is invalid.", no + 1);
+			gctl_error(req, "Disk %u is invalid.", no + 1);
 			return;
 		}
-		if (no == 0)
-			sectorsize = pp->sectorsize;
 	}
 
-	gp = g_concat_create(mp, md, G_CONCAT_TYPE_MANUAL, sectorsize);
+	gp = g_concat_create(mp, md, G_CONCAT_TYPE_MANUAL);
 	if (gp == NULL) {
-		gctl_error(req, "Can't configure %s.concat", md->md_name);
+		gctl_error(req, "Can't configure %s.concat.", md->md_name);
 		return;
 	}
 
@@ -673,9 +702,10 @@
 	int *force, error;
 
 	g_topology_assert();
+
 	force = gctl_get_paraml(req, "force", sizeof(*force));
 	if (force == NULL) {
-		gctl_error(req, "No 'force' argument");
+		gctl_error(req, "No '%s' argument.", "force");
 		return;
 	}
 	sc = gp->softc;
@@ -713,8 +743,7 @@
 		g_concat_ctl_destroy(req, gp);
 		return;
 	}
-
-	gctl_error(req, "unknown verb");
+	gctl_error(req, "Unknown verb.");
 }
 
 static void

==== //depot/projects/netperf_socket/sys/geom/concat/g_concat.h#5 (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/geom/concat/g_concat.h,v 1.5 2004/03/04 10:22:42 pjd Exp $
+ * $FreeBSD: src/sys/geom/concat/g_concat.h,v 1.6 2004/03/09 11:00:24 pjd Exp $
  */
 
 #ifndef	_G_CONCAT_H_
@@ -51,6 +51,7 @@
 	if (g_concat_debug >= 2) {					\
 		printf("GEOM_CONCAT[2]: ");				\
 		printf(__VA_ARGS__);					\
+		printf(" ");						\
 		g_print_bio(bp);					\
 		printf("\n");						\
 	}								\

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

@@ -34,7 +34,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/geom/geom_subr.c,v 1.71 2004/02/14 17:58:57 phk Exp $");
+__FBSDID("$FreeBSD: src/sys/geom/geom_subr.c,v 1.72 2004/03/07 17:33:15 phk Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -272,7 +272,8 @@
 	if (!(gp->flags & G_GEOM_WITHER)) {
 		gp->flags |= G_GEOM_WITHER;
 		LIST_FOREACH(pp, &gp->provider, provider)
-			g_orphan_provider(pp, error);
+			if (!(pp->flags & G_PF_ORPHAN))
+				g_orphan_provider(pp, error);
 	}
 	for (pp = LIST_FIRST(&gp->provider); pp != NULL; pp = pp2) {
 		pp2 = LIST_NEXT(pp, provider);

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

@@ -39,7 +39,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/i386/i386/elan-mmcr.c,v 1.24 2004/02/28 20:06:58 phk Exp $");
+__FBSDID("$FreeBSD: src/sys/i386/i386/elan-mmcr.c,v 1.25 2004/03/09 02:51:21 jb Exp $");
 
 #include "opt_cpu.h"
 #include <sys/param.h>
@@ -75,6 +75,7 @@
 u_int	pps_a, pps_d;
 u_int	echo_a, echo_d;
 #endif /* CPU_ELAN_PPS */
+#ifdef CPU_SOEKRIS
 u_int	led_cookie[32];
 dev_t	led_dev[32];
 
@@ -90,6 +91,7 @@
 		v ^= 0xc;
 	mmcrptr[v / 2] = u;
 }
+#endif
 
 static int
 sysctl_machdep_elan_gpio_config(SYSCTL_HANDLER_ARGS)
@@ -97,7 +99,10 @@
 	u_int u, v;
 	int i, np, ne;
 	int error;
-	char buf[32], tmp[10];
+	char buf[32];
+#ifdef CPU_SOEKRIS
+	char tmp[10];
+#endif
 
 	error = SYSCTL_OUT(req, gpio_config, 33);
 	if (error != 0 || req->newptr == NULL)
@@ -141,11 +146,13 @@
 			v = 2;
 		else

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


More information about the p4-projects mailing list