PERFORCE change 105494 for review

George V. Neville-Neil gnn at FreeBSD.org
Sat Sep 2 00:41:38 UTC 2006


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

Change 105494 by gnn at gnn_devbox_fast_ipsec on 2006/09/02 00:41:21

	Integrate from HEAD

Affected files ...

.. //depot/projects/gnn_fast_ipsec/src/sys/Makefile#4 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/amd64/amd64/busdma_machdep.c#6 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/arm/sa11x0/assabet_machdep.c#2 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/arm/sa11x0/sa11x0_io.c#3 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/arm/sa11x0/sa11x0_reg.h#2 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/arm/sa11x0/sa11x0_var.h#2 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/arm/sa11x0/uart_cpu_sa1110.c#2 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/arm/sa11x0/uart_dev_sa1110.c#4 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/arm/xscale/i80321/iq31244_machdep.c#4 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/cam/cam_ccb.h#3 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/cam/cam_periph.c#3 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/cam/scsi/scsi_target.c#2 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/conf/files#9 edit
.. //depot/projects/gnn_fast_ipsec/src/sys/conf/kmod.mk#5 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/dev/bfe/if_bfe.c#7 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/dev/bfe/if_bfereg.h#3 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/dev/bktr/bktr_os.c#3 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/dev/dcons/dcons_os.c#3 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/dev/digi/digi.c#2 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/dev/hifn/hifn7751.c#3 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/dev/hme/if_hme.c#5 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/dev/ic/ns16550.h#2 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/dev/isp/isp_freebsd.c#5 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/dev/isp/isp_freebsd.h#6 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/dev/isp/isp_pci.c#5 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/dev/isp/isp_tpublic.h#4 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/dev/isp/ispvar.h#3 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/dev/le/if_le_cbus.c#2 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/dev/ofw/ofw_console.c#2 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/dev/pccbb/pccbb.c#8 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/dev/pccbb/pccbb_pci.c#3 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/dev/pccbb/pccbbvar.h#2 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/dev/pci/fixup_pci.c#2 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/dev/re/if_re.c#6 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/dev/safe/safe.c#4 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/dev/sio/sio.c#5 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/dev/sound/midi/midi.c#1 branch
.. //depot/projects/gnn_fast_ipsec/src/sys/dev/sound/midi/midi.h#1 branch
.. //depot/projects/gnn_fast_ipsec/src/sys/dev/sound/midi/midiq.h#1 branch
.. //depot/projects/gnn_fast_ipsec/src/sys/dev/sound/midi/mpu401.c#1 branch
.. //depot/projects/gnn_fast_ipsec/src/sys/dev/sound/midi/mpu401.h#1 branch
.. //depot/projects/gnn_fast_ipsec/src/sys/dev/sound/midi/mpu_if.m#1 branch
.. //depot/projects/gnn_fast_ipsec/src/sys/dev/sound/midi/mpufoi_if.m#1 branch
.. //depot/projects/gnn_fast_ipsec/src/sys/dev/sound/midi/sequencer.c#1 branch
.. //depot/projects/gnn_fast_ipsec/src/sys/dev/sound/midi/sequencer.h#1 branch
.. //depot/projects/gnn_fast_ipsec/src/sys/dev/sound/midi/synth_if.m#1 branch
.. //depot/projects/gnn_fast_ipsec/src/sys/dev/sound/pci/cmi.c#3 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/dev/sound/pci/emu10k1.c#4 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/dev/syscons/apm/apm_saver.c#2 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/dev/syscons/syscons.c#5 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/dev/uart/uart.h#2 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/dev/uart/uart_dbg.c#2 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/dev/uart/uart_dev_ns8250.c#5 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/dev/uart/uart_tty.c#5 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/dev/ubsec/ubsec.c#4 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/dev/usb/ehci.c#5 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/dev/usb/ehci_pci.c#3 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/dev/usb/ehcivar.h#3 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/dev/usb/if_axe.c#4 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/dev/usb/if_axereg.h#2 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/dev/usb/ohci.c#5 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/dev/usb/ohci_pci.c#3 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/dev/usb/ohcireg.h#2 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/dev/usb/ohcivar.h#4 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/dev/usb/sl811hs.c#3 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/dev/usb/sl811hsvar.h#2 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/dev/usb/uhci.c#4 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/dev/usb/uhci_pci.c#2 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/dev/usb/uhcivar.h#2 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/dev/usb/usb.c#2 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/dev/usb/usb_mem.c#3 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/dev/usb/usbdi.c#4 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/dev/usb/usbdivar.h#3 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/dev/zs/zs.c#3 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/doc/subsys/Dependencies#1 branch
.. //depot/projects/gnn_fast_ipsec/src/sys/doc/subsys/Doxyfile-cam#1 branch
.. //depot/projects/gnn_fast_ipsec/src/sys/doc/subsys/Doxyfile-crypto#1 branch
.. //depot/projects/gnn_fast_ipsec/src/sys/doc/subsys/Doxyfile-dev_pci#1 branch
.. //depot/projects/gnn_fast_ipsec/src/sys/doc/subsys/Doxyfile-dev_sound#1 branch
.. //depot/projects/gnn_fast_ipsec/src/sys/doc/subsys/Doxyfile-dev_usb#1 branch
.. //depot/projects/gnn_fast_ipsec/src/sys/doc/subsys/Doxyfile-geom#1 branch
.. //depot/projects/gnn_fast_ipsec/src/sys/doc/subsys/Doxyfile-i4b#1 branch
.. //depot/projects/gnn_fast_ipsec/src/sys/doc/subsys/Doxyfile-kern#1 branch
.. //depot/projects/gnn_fast_ipsec/src/sys/doc/subsys/Doxyfile-libkern#1 branch
.. //depot/projects/gnn_fast_ipsec/src/sys/doc/subsys/Doxyfile-linux#1 branch
.. //depot/projects/gnn_fast_ipsec/src/sys/doc/subsys/Doxyfile-net80211#1 branch
.. //depot/projects/gnn_fast_ipsec/src/sys/doc/subsys/Doxyfile-netgraph#1 branch
.. //depot/projects/gnn_fast_ipsec/src/sys/doc/subsys/Doxyfile-netinet#1 branch
.. //depot/projects/gnn_fast_ipsec/src/sys/doc/subsys/Doxyfile-netinet6#1 branch
.. //depot/projects/gnn_fast_ipsec/src/sys/doc/subsys/Doxyfile-netipsec#1 branch
.. //depot/projects/gnn_fast_ipsec/src/sys/doc/subsys/Doxyfile-opencrypto#1 branch
.. //depot/projects/gnn_fast_ipsec/src/sys/doc/subsys/Doxyfile-vm#1 branch
.. //depot/projects/gnn_fast_ipsec/src/sys/doc/subsys/Makefile#1 branch
.. //depot/projects/gnn_fast_ipsec/src/sys/doc/subsys/README#1 branch
.. //depot/projects/gnn_fast_ipsec/src/sys/doc/subsys/common-Doxyfile#1 branch
.. //depot/projects/gnn_fast_ipsec/src/sys/doc/subsys/notreviewed.dox#1 branch
.. //depot/projects/gnn_fast_ipsec/src/sys/fs/msdosfs/msdosfs_vfsops.c#3 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/fs/ntfs/ntfs_vfsops.c#3 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/fs/nullfs/null_vfsops.c#5 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/fs/nwfs/nwfs_io.c#3 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/fs/procfs/procfs.c#2 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/fs/smbfs/smbfs_io.c#3 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/fs/udf/udf_vfsops.c#4 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/gdb/gdb.h#2 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/gdb/gdb_cons.c#3 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/gdb/gdb_main.c#3 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/gdb/gdb_packet.c#2 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/geom/geom_bsd.c#4 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/gnu/fs/ext2fs/ext2_vfsops.c#4 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/gnu/fs/reiserfs/reiserfs_vfsops.c#3 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/gnu/fs/xfs/FreeBSD/xfs_mountops.c#3 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/i386/bios/apm.c#2 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/i386/bios/apm.h#2 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/i386/i386/busdma_machdep.c#5 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/i386/i386/machdep.c#8 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/i386/i386/ptrace_machdep.c#2 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/i386/i386/vm_machdep.c#5 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/i386/include/npx.h#2 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/i386/isa/npx.c#6 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/ia64/ia64/ssc.c#3 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/isofs/cd9660/cd9660_vfsops.c#3 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/kern/kern_exec.c#7 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/kern/kern_exit.c#7 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/kern/kern_linker.c#3 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/kern/subr_disk.c#3 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/kern/subr_stack.c#2 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/kern/subr_taskqueue.c#7 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/kern/tty_cons.c#3 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/kern/uipc_syscalls.c#6 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/kern/vfs_mount.c#7 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/kern/vfs_subr.c#9 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/kern/vnode_if.src#3 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/modules/Makefile#8 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/modules/mfi/Makefile#4 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/modules/sound/driver/cmi/Makefile#2 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/modules/sound/driver/emu10k1/Makefile#2 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/modules/sound/sound/Makefile#2 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/net/bpf_filter.c#3 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/netinet/ip_fw.h#6 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/netinet/ip_fw2.c#6 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/netinet6/in6_src.c#4 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/nfs4client/nfs4_vfsops.c#4 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/nfs4client/nfs4_vnops.c#2 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/nfsclient/nfs.h#3 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/nfsclient/nfs_bio.c#5 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/nfsclient/nfs_nfsiod.c#4 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/nfsclient/nfs_node.c#4 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/nfsclient/nfs_socket.c#7 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/nfsclient/nfs_vfsops.c#6 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/nfsclient/nfsmount.h#3 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/opencrypto/crypto.c#6 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/opencrypto/cryptodev.c#4 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/opencrypto/cryptodev.h#3 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/pc98/cbus/sio.c#5 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/pci/if_rlreg.h#3 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/sparc64/include/pmap.h#3 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/sparc64/sparc64/pmap.c#5 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/sys/cons.h#2 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/sys/kernel.h#2 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/sys/queue.h#4 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/tools/vnode_if.awk#3 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/ufs/ffs/ffs_vfsops.c#7 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/vm/vm_extern.h#3 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/vm/vm_glue.c#3 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/vm/vm_map.c#5 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/vm/vm_map.h#3 integrate
.. //depot/projects/gnn_fast_ipsec/src/sys/vm/vm_meter.c#2 integrate

Differences ...

==== //depot/projects/gnn_fast_ipsec/src/sys/Makefile#4 (text+ko) ====

@@ -4,17 +4,15 @@
 
 # The boot loader
 .if ${MK_BOOT} != "no"
-.if ${MACHINE_ARCH} != "arm"
 SUBDIR=	boot
 .endif
-.endif
 
 # Directories to include in cscope name file and TAGS.
-CSCOPEDIRS=	coda compat conf contrib crypto ddb dev fs gnu i4b isa \
-		isofs kern libkern modules net netatalk netatm netgraph \
-		netinet netinet6 netipx netkey netnatm netncp netsmb nfs \
-		nfsclient nfs4client rpc pccard pci posix4 sys ufs vm \
-		${ARCHDIR}
+CSCOPEDIRS=	coda compat conf contrib crypto ddb dev fs geom gnu i4b isa \
+		isofs kern libkern modules net net80211 netatalk netatm \
+		netgraph netinet netinet6 netipx netkey netnatm netncp \
+		netsmb nfs nfsclient nfs4client rpc pccard pci posix4 sys \
+		ufs vm ${ARCHDIR}
 
 ARCHDIR	?=	${MACHINE}
 

==== //depot/projects/gnn_fast_ipsec/src/sys/amd64/amd64/busdma_machdep.c#6 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/busdma_machdep.c,v 1.74 2006/05/03 04:14:17 scottl Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/busdma_machdep.c,v 1.77 2006/06/01 04:49:29 silby Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -492,7 +492,16 @@
 		}
 	}
 
+	/* 
+	 * XXX:
+	 * (dmat->alignment < dmat->maxsize) is just a quick hack; the exact
+	 * alignment guarantees of malloc need to be nailed down, and the
+	 * code below should be rewritten to take that into account.
+	 *
+	 * In the meantime, we'll warn the user if malloc gets it wrong.
+	 */
 	if ((dmat->maxsize <= PAGE_SIZE) &&
+	   (dmat->alignment < dmat->maxsize) &&
 	    dmat->lowaddr >= ptoa((vm_paddr_t)Maxmem)) {
 		*vaddr = malloc(dmat->maxsize, M_DEVBUF, mflags);
 	} else {
@@ -510,6 +519,8 @@
 		CTR4(KTR_BUSDMA, "%s: tag %p tag flags 0x%x error %d",
 		    __func__, dmat, dmat->flags, ENOMEM);
 		return (ENOMEM);
+	} else if ((uintptr_t)*vaddr & (dmat->alignment - 1)) {
+		printf("bus_dmamem_alloc failed to align memory properly.");
 	}
 	CTR4(KTR_BUSDMA, "%s: tag %p tag flags 0x%x error %d",
 	    __func__, dmat, dmat->flags, ENOMEM);
@@ -529,8 +540,9 @@
 	 */
 	if (map != NULL)
 		panic("bus_dmamem_free: Invalid map freed\n");
-	if ((dmat->maxsize <= PAGE_SIZE)
-	 && dmat->lowaddr >= ptoa((vm_paddr_t)Maxmem))
+	if ((dmat->maxsize <= PAGE_SIZE) &&
+	   (dmat->alignment < dmat->maxsize) &&
+	    dmat->lowaddr >= ptoa((vm_paddr_t)Maxmem))
 		free(vaddr, M_DEVBUF);
 	else {
 		contigfree(vaddr, dmat->maxsize, M_DEVBUF);

==== //depot/projects/gnn_fast_ipsec/src/sys/arm/sa11x0/assabet_machdep.c#2 (text+ko) ====

@@ -47,7 +47,7 @@
 
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/sa11x0/assabet_machdep.c,v 1.10 2005/10/03 14:15:50 cognet Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/sa11x0/assabet_machdep.c,v 1.18 2006/08/08 20:59:38 cognet Exp $");
 
 #include "opt_md.h"
 
@@ -93,6 +93,8 @@
 #include <machine/bus.h>
 #include <sys/reboot.h>
 
+#include <arm/sa11x0/sa11x0_reg.h>
+
 #define MDROOT_ADDR 0xd0400000
 
 #define KERNEL_PT_VMEM		0	/* Page table for mapping video memory */
@@ -102,7 +104,7 @@
 #define KERNEL_PT_KERNEL	1	/* Page table for mapping kernel */
 #define KERNEL_PT_L1		4	/* Page table for mapping l1pt */
 #define	KERNEL_PT_VMDATA	5	/* Page tables for mapping kernel VM */
-#define	KERNEL_PT_VMDATA_NUM	4	/* start with 16MB of KVM */
+#define	KERNEL_PT_VMDATA_NUM	7	/* start with 16MB of KVM */
 #define	NUM_KERNEL_PTS		(KERNEL_PT_VMDATA + KERNEL_PT_VMDATA_NUM)
 
 /* Define various stack sizes in pages */
@@ -113,7 +115,7 @@
 #else
 #define UND_STACK_SIZE	1
 #endif
-#define	KERNEL_VM_BASE		(KERNBASE + 0x00c00000)
+#define	KERNEL_VM_BASE		(KERNBASE + 0x00100000)
 #define	KERNEL_VM_SIZE		0x05000000
 
 extern u_int data_abort_handler_address;
@@ -124,7 +126,7 @@
 
 extern void *_end;
 
-int got_mmu = 0;
+extern vm_offset_t sa1110_uart_vaddr;
 
 extern vm_offset_t sa1_cache_clean_addr;
 
@@ -151,9 +153,37 @@
 struct pv_addr undstack;
 struct pv_addr abtstack;
 struct pv_addr kernelstack;
-void enable_mmu(vm_offset_t);
 static struct trapframe proc0_tf;
 
+/* Static device mappings. */
+static const struct pmap_devmap assabet_devmap[] = {
+	/*
+	 * Map the on-board devices VA == PA so that we can access them
+	 * with the MMU on or off.
+	 */
+	{
+		SACOM1_VBASE,
+		SACOM1_BASE,
+		SACOM1_SIZE,
+		VM_PROT_READ|VM_PROT_WRITE,
+		PTE_NOCACHE,
+	},
+	{
+		SAIPIC_BASE,
+		SAIPIC_BASE,
+		SAIPIC_SIZE,
+		VM_PROT_READ|VM_PROT_WRITE,
+		PTE_NOCACHE,
+	},
+	{
+		0,
+		0,
+		0,
+		0,
+		0,
+	}
+};
+
 struct arm32_dma_range *
 bus_dma_get_range(void)
 {
@@ -191,6 +221,8 @@
 	vm_size_t pt_size;
 	int i = 0;
 	uint32_t fake_preload[35];
+	uint32_t memsize = 32 * 1024 * 1024;
+	sa1110_uart_vaddr = SACOM1_VBASE;
 
 	boothowto = RB_VERBOSE | RB_SINGLE;
 	cninit();
@@ -227,7 +259,7 @@
 	fake_preload[i] = 0;
 	preload_metadata = (void *)fake_preload;
 
-	physmem =( 16 * 1024 * 1024) / PAGE_SIZE;
+	physmem = memsize / PAGE_SIZE;
 	pc = &__pcpu;
 	pcpu_init(pc, 0, sizeof(struct pcpu));
 	PCPU_SET(curthread, &thread0);
@@ -256,9 +288,18 @@
 	valloc_pages(kernel_l1pt, L1_TABLE_SIZE / PAGE_SIZE);
 	valloc_pages(md_bla, L2_TABLE_SIZE / PAGE_SIZE);
 	alloc_pages(sa1_cache_clean_addr, CPU_SA110_CACHE_CLEAN_SIZE / PAGE_SIZE);
+
 	for (loop = 0; loop < NUM_KERNEL_PTS; ++loop) {
-		valloc_pages(kernel_pt_table[loop],
-		    L2_TABLE_SIZE / PAGE_SIZE);
+		if (!(loop % (PAGE_SIZE / L2_TABLE_SIZE_REAL))) {
+			valloc_pages(kernel_pt_table[loop],
+			    L2_TABLE_SIZE / PAGE_SIZE);
+		} else {
+			kernel_pt_table[loop].pv_pa = freemempos +
+			    (loop % (PAGE_SIZE / L2_TABLE_SIZE_REAL)) *
+			    L2_TABLE_SIZE_REAL;
+			kernel_pt_table[loop].pv_va = 
+			    kernel_pt_table[loop].pv_pa;
+		}
 	}
 
 	valloc_pages(systempage, 1);
@@ -305,10 +346,10 @@
 	pmap_link_l2pt(l1pagetable, MDROOT_ADDR,
 	    &md_bla);
 	for (loop = 0; loop < KERNEL_PT_VMDATA_NUM; ++loop)
-		pmap_link_l2pt(l1pagetable, KERNEL_VM_BASE + loop * 0x00400000,
+		pmap_link_l2pt(l1pagetable, KERNEL_VM_BASE + loop * 0x00100000,
 		    &kernel_pt_table[KERNEL_PT_VMDATA + loop]);
 	pmap_map_chunk(l1pagetable, KERNBASE, KERNBASE,
-	   (uint32_t)&end - KERNBASE, VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE);
+	   ((uint32_t)&end - KERNBASE), VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE);
 	/* Map the stack pages */
 	pmap_map_chunk(l1pagetable, irqstack.pv_va, irqstack.pv_pa,
 	    IRQ_STACK_SIZE * PAGE_SIZE, VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE);
@@ -334,11 +375,8 @@
 	/* Map the vector page. */
 	pmap_map_entry(l1pagetable, vector_page, systempage.pv_pa,
 	    VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE);
-	/* Map SACOM3. */
-	pmap_map_entry(l1pagetable, 0xd000d000, 0x80010000, 
-	    VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE);
-	pmap_map_entry(l1pagetable, 0x90050000, 0x90050000,
-	    VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE);
+	/* Map the statically mapped devices. */
+	pmap_devmap_bootstrap(l1pagetable, assabet_devmap);
 	pmap_map_chunk(l1pagetable, sa1_cache_clean_addr, 0xf0000000, 
 	    CPU_SA110_CACHE_CLEAN_SIZE, VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE);
 
@@ -378,7 +416,7 @@
 	 * After booting there are no gross reloations of the kernel thus
 	 * this problem will not occur after initarm().
 	 */
-/*	cpu_idcache_wbinv_all();*/
+	cpu_idcache_wbinv_all();
 
 
 	bootverbose = 1;
@@ -396,28 +434,24 @@
 	/* Enable MMU, I-cache, D-cache, write buffer. */
 
 	cpufunc_control(0x337f, 0x107d);
-	got_mmu = 1;
 	arm_vector_init(ARM_VECTORS_LOW, ARM_VEC_ALL);
 
 	pmap_curmaxkvaddr = freemempos + KERNEL_PT_VMDATA_NUM * 0x400000;
 
-	pmap_bootstrap(freemempos, 
-	    0xd0000000, &kernel_l1pt);
-
-	
-	mutex_init();
-	
-	
 	dump_avail[0] = phys_avail[0] = round_page(virtual_avail);
 	dump_avail[1] = phys_avail[1] = 0xc0000000 + 0x02000000 - 1;
 	dump_avail[2] = phys_avail[2] = 0;
 	dump_avail[3] = phys_avail[3] = 0;
-	
+					
+	mutex_init();
+	pmap_bootstrap(freemempos, 
+	    0xd0000000, &kernel_l1pt);
+
 	/* Do basic tuning, hz etc */
 	init_param1();
 	init_param2(physmem);
 	kdb_init();
-	avail_end = 0xc0000000 + 0x02000000 - 1;
+	avail_end = 0xc0000000 + memsize - 1;
 	return ((void *)(kernelstack.pv_va + USPACE_SVC_STACK_TOP -
 	    sizeof(struct pcb)));
 }

==== //depot/projects/gnn_fast_ipsec/src/sys/arm/sa11x0/sa11x0_io.c#3 (text+ko) ====

@@ -41,7 +41,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/sa11x0/sa11x0_io.c,v 1.7 2006/05/18 22:03:47 cognet Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/sa11x0/sa11x0_io.c,v 1.8 2006/05/23 12:14:14 cognet Exp $");
 #include <sys/param.h>
 #include <sys/systm.h>
 #include <sys/queue.h>
@@ -146,6 +146,13 @@
 	u_long startpa, endpa, pa;
 	vm_offset_t va;
 	pt_entry_t *pte;
+	const struct pmap_devmap *pd;
+
+	if ((pd = pmap_devmap_find_pa(bpa, size)) != NULL) {
+		/* Device was statically mapped. */
+		*bshp = pd->pd_va + (bpa - pd->pd_pa);
+		return 0;
+	}
 
 	startpa = trunc_page(bpa);
 	endpa = round_page(bpa + size);

==== //depot/projects/gnn_fast_ipsec/src/sys/arm/sa11x0/sa11x0_reg.h#2 (text+ko) ====

@@ -34,7 +34,7 @@
  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  * POSSIBILITY OF SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/arm/sa11x0/sa11x0_reg.h,v 1.1 2004/05/14 11:46:45 cognet Exp $
+ * $FreeBSD: src/sys/arm/sa11x0/sa11x0_reg.h,v 1.3 2006/05/23 12:14:14 cognet Exp $
  *
  */
 
@@ -48,9 +48,11 @@
 #define SARCR_BASE		0x90030000	/* Reset Controller */
 #define SAGPIO_BASE		0x90040000	/* GPIO */
 #define SAIPIC_BASE		0x90050000	/* Interrupt Controller */
+#define SAIPIC_SIZE		0x24
 #define SAPPC_BASE		0x90060000	/* Peripheral Pin Controller */
 #define SAUDC_BASE		0x80000000	/* USB Device Controller*/
 #define	SACOM1_BASE		0x80010000	/* GPCLK/UART 1 */
+#define SACOM1_SIZE		0x24
 #define SACOM3_HW_BASE		0x80050000	/* UART 3  */
 #define SAMCP_BASE		0x80060000	/* MCP Controller */
 #define SASSP_BASE		0x80070000	/* Synchronous serial port */
@@ -59,7 +61,7 @@
 #define SALCD_BASE		0xB0100000	/* LCD */
 
 /* Register base virtual addresses mapped by initarm() */
-#define SACOM3_BASE             0xd000d000
+#define SACOM1_VBASE		0xd000d000
 
 /* Interrupt controller registers */
 #define SAIPIC_NPORTS		9

==== //depot/projects/gnn_fast_ipsec/src/sys/arm/sa11x0/sa11x0_var.h#2 (text+ko) ====

@@ -34,7 +34,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/arm/sa11x0/sa11x0_var.h,v 1.2 2005/09/25 21:06:50 cognet Exp $
+ * $FreeBSD: src/sys/arm/sa11x0/sa11x0_var.h,v 1.3 2006/05/29 19:32:32 cognet Exp $
  *
  */
 
@@ -64,15 +64,6 @@
 typedef void *sa11x0_chipset_tag_t;
 
 extern struct bus_space sa11x0_bs_tag;
-struct sa11x0_attach_args {
-	sa11x0_chipset_tag_t	sa_sc;		
-	bus_space_tag_t		sa_iot;		/* Bus tag */
-	bus_addr_t		sa_addr;	/* i/o address  */
-	bus_size_t		sa_size;
-
-	int			sa_intr;
-	int			sa_gpio;
-};
 
 void *sa11x0_intr_establish(sa11x0_chipset_tag_t, int, int, int, 
 			    int (*)(void *), void *);

==== //depot/projects/gnn_fast_ipsec/src/sys/arm/sa11x0/uart_cpu_sa1110.c#2 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/sa11x0/uart_cpu_sa1110.c,v 1.3 2005/01/05 21:58:48 imp Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/sa11x0/uart_cpu_sa1110.c,v 1.6 2006/06/21 10:56:59 cognet Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -36,6 +36,7 @@
 #include <dev/uart/uart.h>
 #include <dev/uart/uart_cpu.h>
 
+#include <arm/sa11x0/sa11x0_reg.h>
 #include <arm/sa11x0/sa11x0_var.h>
 
 bus_space_tag_t uart_bus_space_io;
@@ -43,21 +44,21 @@
 
 extern struct uart_ops uart_sa1110_ops;
 
+vm_offset_t sa1110_uart_vaddr;
+
 int
 uart_cpu_eqres(struct uart_bas *b1, struct uart_bas *b2)
 {
 	return ((b1->bsh == b2->bsh && b1->bst == b2->bst) ? 1 : 0);
 }
 
-extern int got_mmu;
-
 int
 uart_cpu_getdev(int devtype, struct uart_devinfo *di)
 {
 	di->ops = uart_sa1110_ops;
 	di->bas.chan = 0;
 	di->bas.bst = &sa11x0_bs_tag;
-	di->bas.bsh = 0x80010000;
+	di->bas.bsh = sa1110_uart_vaddr;
 	di->bas.regshft = 0;
 	di->bas.rclk = 0;
 	di->baudrate = 9600;

==== //depot/projects/gnn_fast_ipsec/src/sys/arm/sa11x0/uart_dev_sa1110.c#4 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/sa11x0/uart_dev_sa1110.c,v 1.4 2006/05/18 22:02:33 cognet Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/sa11x0/uart_dev_sa1110.c,v 1.6 2006/06/07 11:28:17 cognet Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -38,14 +38,13 @@
 #include <dev/uart/uart.h>
 #include <dev/uart/uart_cpu.h>
 #include <dev/uart/uart_bus.h>
+#include <arm/sa11x0/sa11x0_reg.h>
 #include <arm/sa11x0/uart_dev_sa1110.h>
 
 #include "uart_if.h"
 
 #define      DEFAULT_RCLK    3686400
 
-extern int got_mmu;
-
 /*
  * Low-level UART interface.
  */
@@ -56,8 +55,6 @@
 static int sa1110_poll(struct uart_bas *bas);
 static int sa1110_getc(struct uart_bas *bas, struct mtx *mtx);
 
-int did_mmu = 0;
-
 extern SLIST_HEAD(uart_devinfo_list, uart_devinfo) uart_sysdevs;
 
 struct uart_ops uart_sa1110_ops = {
@@ -76,22 +73,11 @@
 }
 
 static void
-sa1110_addr_change(struct uart_bas *bas)
-{
-	
-	bas->bsh = 0xd000d000;
-	did_mmu = 1;
-}
-
-static void
 sa1110_init(struct uart_bas *bas, int baudrate, int databits, int stopbits,
     int parity)
 {
 	int brd;
 	
-	/* XXX: sigh. */
-	if (!did_mmu && got_mmu) 
-		sa1110_addr_change(bas);
 	if (bas->rclk == 0)
 		bas->rclk = DEFAULT_RCLK;
 	while (uart_getreg(bas, SACOM_SR1) & SR1_TBY);
@@ -111,10 +97,6 @@
 static void
 sa1110_putc(struct uart_bas *bas, int c)
 {
-	/* XXX: sigh. */
-	if (!did_mmu && got_mmu) 
-		sa1110_addr_change(bas);
-
 	while (!uart_getreg(bas, SACOM_SR1) & SR1_TNF);
 	uart_setreg(bas, SACOM_DR, c);
 }
@@ -122,10 +104,6 @@
 static int
 sa1110_poll(struct uart_bas *bas)
 {
-	/* XXX: sigh. */
-	if (!did_mmu && got_mmu) 
-		sa1110_addr_change(bas);
-
 	if (!(uart_getreg(bas, SACOM_SR1) & SR1_RNE))
 		return (-1);
 	return (uart_getreg(bas, SACOM_DR) & 0xff);
@@ -135,9 +113,6 @@
 sa1110_getc(struct uart_bas *bas, struct mtx *mtx)
 {
 	int c;
-	/* XXX: sigh. */
-	if (!did_mmu && got_mmu) 
-		sa1110_addr_change(bas);
 
 	while (!(uart_getreg(bas, SACOM_SR1) & SR1_RNE)) {
 		u_int32_t sr0;

==== //depot/projects/gnn_fast_ipsec/src/sys/arm/xscale/i80321/iq31244_machdep.c#4 (text+ko) ====

@@ -49,7 +49,7 @@
 #include "opt_ddb.h"
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/xscale/i80321/iq31244_machdep.c,v 1.18 2005/12/21 15:01:49 cognet Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/xscale/i80321/iq31244_machdep.c,v 1.23 2006/08/24 23:51:28 cognet Exp $");
 
 #define _ARM32_BUS_DMA_PRIVATE
 #include <sys/param.h>
@@ -147,7 +147,6 @@
 struct pv_addr kernelstack;
 struct pv_addr minidataclean;
 
-void enable_mmu(vm_offset_t);
 static struct trapframe proc0_tf;
 
 #define IQ80321_OBIO_BASE 0xfe800000UL
@@ -211,7 +210,7 @@
 #ifdef DDB
 	vm_offset_t zstart = 0, zend = 0;
 #endif
-	int i = 0;
+	int i;
 	uint32_t fake_preload[35];
 	uint32_t memsize, memstart;
 
@@ -283,7 +282,6 @@
 			kernel_pt_table[loop].pv_va = 
 			    kernel_pt_table[loop].pv_pa + 0x20000000;
 		}
-		i++;
 	}
 	freemem_pt = freemempos;
 	freemempos = 0xa0100000;
@@ -444,6 +442,15 @@
 
 
 	pmap_curmaxkvaddr = afterkern + PAGE_SIZE;
+	/*
+	 * ARM_USE_SMALL_ALLOC uses dump_avail, so it must be filled before
+	 * calling pmap_bootstrap.
+	 */
+	dump_avail[0] = 0xa0000000;
+	dump_avail[1] = 0xa0000000 + memsize;
+	dump_avail[2] = 0;
+	dump_avail[3] = 0;
+					
 	pmap_bootstrap(pmap_curmaxkvaddr, 
 	    0xd0000000, &kernel_l1pt);
 	msgbufp = (void*)msgbufpv.pv_va;
@@ -462,10 +469,6 @@
 	phys_avail[i++] = trunc_page(0xa0000000 + memsize - 1);
 	phys_avail[i++] = 0;
 	phys_avail[i] = 0;
-	dump_avail[0] = 0xa0000000;
-	dump_avail[1] = 0xa0000000 + memsize;
-	dump_avail[2] = 0;
-	dump_avail[3] = 0;
 	
 	/* Do basic tuning, hz etc */
 	init_param1();
@@ -475,3 +478,60 @@
 	return ((void *)(kernelstack.pv_va + USPACE_SVC_STACK_TOP -
 	    sizeof(struct pcb)));
 }
+
+
+extern int
+machdep_pci_route_interrupt(device_t pcib, device_t dev, int pin)
+{
+	int bus;
+	int device;
+	int func;
+	uint32_t busno;
+	struct i80321_pci_softc *sc = device_get_softc(pcib);
+	bus = pci_get_bus(dev);
+	device = pci_get_slot(dev);
+	func = pci_get_function(dev);
+	busno = bus_space_read_4(sc->sc_st, sc->sc_atu_sh, ATU_PCIXSR);
+	busno = PCIXSR_BUSNO(busno);
+	if (busno == 0xff)
+		busno = 0;
+	if (bus != busno)
+		goto no_mapping;
+	switch (device) {
+		/* IQ31244 PCI */
+	case 1: /* PCIX-PCIX bridge */
+		/*
+		 * The S-ATA chips are behind the bridge, and all of
+		 * the S-ATA interrupts are wired together.
+		 */
+		return (ICU_INT_XINT(2));
+	case 2: /* PCI slot */
+		/* All pins are wired together. */
+		return (ICU_INT_XINT(3));
+	case 3: /* i82546 dual Gig-E */
+		if (pin == 1 || pin == 2)
+			return (ICU_INT_XINT(0));
+		goto no_mapping;
+		/* IQ80321 PCI */
+	case 4: /* i82544 Gig-E */
+	case 8: /*
+		 * Apparently you can set the device for the ethernet adapter
+		 * to 8 with a jumper, so handle that as well
+		 */
+		if (pin == 1)
+			return (ICU_INT_XINT(0));
+		goto no_mapping;
+	case 6: /* S-PCI-X slot */
+		if (pin == 1)
+			return (ICU_INT_XINT(2));
+		if (pin == 2)
+			return (ICU_INT_XINT(3));
+		goto no_mapping;
+	default:
+no_mapping:
+		printf("No mapping for %d/%d/%d/%c\n", bus, device, func, pin);
+		
+	}
+	return (0);
+
+}

==== //depot/projects/gnn_fast_ipsec/src/sys/cam/cam_ccb.h#3 (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/cam/cam_ccb.h,v 1.29 2006/01/20 19:21:38 mjacob Exp $
+ * $FreeBSD: src/sys/cam/cam_ccb.h,v 1.32 2006/06/05 22:22:14 mjacob Exp $
  */
 
 #ifndef _CAM_CAM_CCB_H
@@ -514,7 +514,8 @@
 	PIM_NOREMOVE	= 0x40,	/* Removeable devices not included in scan */
 	PIM_NOINITIATOR	= 0x20,	/* Initiator role not supported. */
 	PIM_NOBUSRESET	= 0x10,	/* User has disabled initial BUS RESET */
-	PIM_NO_6_BYTE	= 0x08	/* Do not send 6-byte commands */
+	PIM_NO_6_BYTE	= 0x08,	/* Do not send 6-byte commands */
+	PIM_SEQSCAN	= 0x04	/* Do bus scans sequentially, not in parallel */
 } pi_miscflag;
 
 #ifdef CAM_NEW_TRAN_CODE

==== //depot/projects/gnn_fast_ipsec/src/sys/cam/cam_periph.c#3 (text+ko) ====

@@ -28,7 +28,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/cam/cam_periph.c,v 1.61 2006/01/08 20:04:55 iedowse Exp $");
+__FBSDID("$FreeBSD: src/sys/cam/cam_periph.c,v 1.62 2006/05/24 15:22:21 mjacob Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -673,6 +673,16 @@
 		mapinfo->num_bufs_used++;
 	}
 
+	/*
+	 * Now that we've gotten this far, change ownership to the kernel
+	 * of the buffers so that we don't run afoul of returning to user
+	 * space with locks (on the buffer) held.
+	 */
+	for (i = 0; i < numbufs; i++) {
+		BUF_KERNPROC(mapinfo->bp[i]);
+	}
+
+
 	return(0);
 }
 

==== //depot/projects/gnn_fast_ipsec/src/sys/cam/scsi/scsi_target.c#2 (text+ko) ====

@@ -28,7 +28,8 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/cam/scsi/scsi_target.c,v 1.68 2005/08/08 19:55:30 rwatson Exp $");
+__FBSDID("$FreeBSD: src/sys/cam/scsi/scsi_target.c,v 1.70 2006/05/24 15:26:07 mjacob Exp $");
+
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -40,6 +41,7 @@
 #include <sys/lock.h>
 #include <sys/mutex.h>
 #include <sys/devicestat.h>
+#include <sys/proc.h>
 
 #include <cam/cam.h>
 #include <cam/cam_ccb.h>
@@ -89,7 +91,6 @@
 	targ_state		 state;
 	struct selinfo		 read_select;
 	struct devstat		 device_stats;
-	struct mtx		 mtx;
 };
 
 static d_open_t		targopen;
@@ -157,10 +158,6 @@
 };
 PERIPHDRIVER_DECLARE(targ, targdriver);
 
-static struct mtx		targ_mtx;
-#define TARG_LOCK(softc)	mtx_lock(&(softc)->mtx)
-#define TARG_UNLOCK(softc)	mtx_unlock(&(softc)->mtx)
-
 static MALLOC_DEFINE(M_TARG, "TARG", "TARG data");
 
 /* Create softc and initialize it. Only one proc can open each targ device. */
@@ -169,15 +166,12 @@
 {
 	struct targ_softc *softc;
 
-	mtx_lock(&targ_mtx);
 	if (dev->si_drv1 != 0) {
-		mtx_unlock(&targ_mtx);
 		return (EBUSY);
 	}
 	
 	/* Mark device busy before any potentially blocking operations */
 	dev->si_drv1 = (void *)~0;
-	mtx_unlock(&targ_mtx);
 
 	/* Create the targ device, allocate its softc, initialize it */
 	if ((dev->si_flags & SI_NAMED) == 0) {
@@ -190,13 +184,12 @@
 	softc->state = TARG_STATE_OPENED;
 	softc->periph = NULL;
 	softc->path = NULL;
-	mtx_init(&softc->mtx, devtoname(dev), "targ cdev", MTX_DEF);
 
 	TAILQ_INIT(&softc->pending_ccb_queue);
 	TAILQ_INIT(&softc->work_queue);
 	TAILQ_INIT(&softc->abort_queue);
 	TAILQ_INIT(&softc->user_ccb_queue);
-	knlist_init(&softc->read_select.si_note, &softc->mtx, NULL, NULL, NULL);
+	knlist_init(&softc->read_select.si_note, NULL, NULL, NULL, NULL);
 
 	return (0);
 }
@@ -209,22 +202,15 @@
 	int    error;
 
 	softc = (struct targ_softc *)dev->si_drv1;
-	TARG_LOCK(softc);
 	error = targdisable(softc);
 	if (error == CAM_REQ_CMP) {
 		dev->si_drv1 = 0;
-		mtx_lock(&targ_mtx);
 		if (softc->periph != NULL) {
 			cam_periph_invalidate(softc->periph);
 			softc->periph = NULL;
 		}
-		mtx_unlock(&targ_mtx);
-		TARG_UNLOCK(softc);
-		mtx_destroy(&softc->mtx);
 		destroy_dev(dev);
 		FREE(softc, M_TARG);
-	} else {
-		TARG_UNLOCK(softc);
 	}
 	return (error);
 }
@@ -253,17 +239,13 @@
 			printf("Couldn't create path, status %#x\n", status);
 			break;
 		}
-		TARG_LOCK(softc);
 		status = targenable(softc, path, new_lun->grp6_len,
 				    new_lun->grp7_len);
-		TARG_UNLOCK(softc);
 		xpt_free_path(path);
 		break;
 	}
 	case TARGIOCDISABLE:
-		TARG_LOCK(softc);
 		status = targdisable(softc);
-		TARG_UNLOCK(softc);
 		break;
 	case TARGIOCDEBUG:
 	{
@@ -280,14 +262,11 @@
 		cdbg.ccb_h.cbfcnp = targdone;
 
 		/* If no periph available, disallow debugging changes */
-		TARG_LOCK(softc);
 		if ((softc->state & TARG_STATE_LUN_ENABLED) == 0) {
 			status = CAM_DEV_NOT_THERE;
-			TARG_UNLOCK(softc);
 			break;
 		}
 		xpt_action((union ccb *)&cdbg);
-		TARG_UNLOCK(softc);
 		status = cdbg.ccb_h.status & CAM_STATUS_MASK;
 #else
 		status = CAM_FUNC_NOTAVAIL;
@@ -315,7 +294,6 @@
 	revents = poll_events & (POLLOUT | POLLWRNORM);
 	if ((poll_events & (POLLIN | POLLRDNORM)) != 0) {
 		/* Poll for read() depends on user and abort queues. */
-		TARG_LOCK(softc);
 		if (!TAILQ_EMPTY(&softc->user_ccb_queue) ||
 		    !TAILQ_EMPTY(&softc->abort_queue)) {
 			revents |= poll_events & (POLLIN | POLLRDNORM);
@@ -323,7 +301,6 @@
 		/* Only sleep if the user didn't poll for write. */
 		if (revents == 0)
 			selrecord(td, &softc->read_select);
-		TARG_UNLOCK(softc);
 	}
 
 	return (revents);
@@ -415,7 +392,6 @@
 	}
 
 	/* Destroy any periph on our path if it is disabled */
-	mtx_lock(&targ_mtx);
 	periph = cam_periph_find(path, "targ");
 	if (periph != NULL) {
 		struct targ_softc *del_softc;
@@ -427,7 +403,6 @@

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


More information about the p4-projects mailing list