Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 7 Sep 2012 22:16:08 +0000 (UTC)
From:      Matt Jacob <mjacob@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-user@freebsd.org
Subject:   svn commit: r240215 - in user/mjacob/sys: amd64/amd64 amd64/conf arm/arm arm/include cam/scsi cddl/compat/opensolaris/sys cddl/contrib/opensolaris/uts/common/fs/zfs cddl/contrib/opensolaris/uts/com...
Message-ID:  <201209072216.q87MG8Q5072816@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: mjacob
Date: Fri Sep  7 22:16:08 2012
New Revision: 240215
URL: http://svn.freebsd.org/changeset/base/240215

Log:
  IFC@240214

Added:
  user/mjacob/sys/dev/random/ivy.c
     - copied unchanged from r240214, head/sys/dev/random/ivy.c
  user/mjacob/sys/libkern/jenkins_hash.c
     - copied unchanged from r240214, head/sys/libkern/jenkins_hash.c
  user/mjacob/sys/modules/ct/
     - copied from r240214, head/sys/modules/ct/
Deleted:
  user/mjacob/sys/dev/random/nehemiah.h
  user/mjacob/sys/libkern/jenkins.h
  user/mjacob/sys/sys/device_port.h
Modified:
  user/mjacob/sys/amd64/amd64/pmap.c
  user/mjacob/sys/amd64/conf/GENERIC
  user/mjacob/sys/amd64/conf/NOTES
  user/mjacob/sys/arm/arm/busdma_machdep.c
  user/mjacob/sys/arm/arm/pmap.c
  user/mjacob/sys/arm/include/pmap.h
  user/mjacob/sys/cam/scsi/scsi_low.c
  user/mjacob/sys/cam/scsi/scsi_low.h
  user/mjacob/sys/cam/scsi/scsi_low_pisa.c
  user/mjacob/sys/cam/scsi/scsi_low_pisa.h
  user/mjacob/sys/cddl/compat/opensolaris/sys/sid.h
  user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c
  user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/bptree.c
  user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_traverse.c
  user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_tx.c
  user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c
  user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dir.c
  user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_synctask.c
  user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_history.c
  user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c
  user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/arc.h
  user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dnode.h
  user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_debug.h
  user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c
  user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c
  user/mjacob/sys/conf/NOTES
  user/mjacob/sys/conf/files
  user/mjacob/sys/conf/files.amd64
  user/mjacob/sys/conf/files.i386
  user/mjacob/sys/conf/kern.pre.mk
  user/mjacob/sys/conf/options.amd64
  user/mjacob/sys/conf/options.i386
  user/mjacob/sys/dev/arcmsr/arcmsr.c
  user/mjacob/sys/dev/arcmsr/arcmsr.h
  user/mjacob/sys/dev/ath/ath_dfs/null/dfs_null.c
  user/mjacob/sys/dev/ath/ath_hal/ar5212/ar5212_misc.c
  user/mjacob/sys/dev/ath/ath_hal/ar5212/ar5212_recv.c
  user/mjacob/sys/dev/ath/if_ath_tx.c
  user/mjacob/sys/dev/atkbdc/psm.c
  user/mjacob/sys/dev/bxe/if_bxe.c
  user/mjacob/sys/dev/ct/bshw_machdep.c
  user/mjacob/sys/dev/ct/ct.c
  user/mjacob/sys/dev/ct/ct_isa.c
  user/mjacob/sys/dev/ct/ctvar.h
  user/mjacob/sys/dev/gxemul/disk/gxemul_disk.c
  user/mjacob/sys/dev/hptmv/entry.c
  user/mjacob/sys/dev/hwpmc/hwpmc_core.c
  user/mjacob/sys/dev/hwpmc/hwpmc_core.h
  user/mjacob/sys/dev/hwpmc/hwpmc_intel.c
  user/mjacob/sys/dev/hwpmc/pmc_events.h
  user/mjacob/sys/dev/ixgbe/ixgbe_82599.c
  user/mjacob/sys/dev/ncv/ncr53c500.c
  user/mjacob/sys/dev/ncv/ncr53c500_pccard.c
  user/mjacob/sys/dev/ncv/ncr53c500var.h
  user/mjacob/sys/dev/nsp/nsp.c
  user/mjacob/sys/dev/nsp/nsp_pccard.c
  user/mjacob/sys/dev/nsp/nspvar.h
  user/mjacob/sys/dev/pci/pcireg.h
  user/mjacob/sys/dev/random/nehemiah.c
  user/mjacob/sys/dev/random/probe.c
  user/mjacob/sys/dev/sound/usb/uaudioreg.h
  user/mjacob/sys/dev/stg/tmc18c30.c
  user/mjacob/sys/dev/stg/tmc18c30_pccard.c
  user/mjacob/sys/dev/stg/tmc18c30var.h
  user/mjacob/sys/dev/twe/twe.c
  user/mjacob/sys/dev/twe/twe_compat.h
  user/mjacob/sys/dev/twe/twe_freebsd.c
  user/mjacob/sys/dev/twe/twevar.h
  user/mjacob/sys/dev/usb/controller/dwc_otgreg.h
  user/mjacob/sys/dev/usb/serial/uchcom.c
  user/mjacob/sys/dev/usb/usbdevs
  user/mjacob/sys/geom/geom_subr.c
  user/mjacob/sys/gnu/fs/xfs/FreeBSD/xfs_ioctl.c
  user/mjacob/sys/gnu/fs/xfs/FreeBSD/xfs_stats.c
  user/mjacob/sys/gnu/fs/xfs/FreeBSD/xfs_super.c
  user/mjacob/sys/gnu/fs/xfs/xfs_alloc.c
  user/mjacob/sys/gnu/fs/xfs/xfs_vfsops.c
  user/mjacob/sys/i386/conf/GENERIC
  user/mjacob/sys/i386/conf/NOTES
  user/mjacob/sys/i386/i386/pmap.c
  user/mjacob/sys/i386/xen/pmap.c
  user/mjacob/sys/kern/kern_exit.c
  user/mjacob/sys/kern/kern_thread.c
  user/mjacob/sys/kern/subr_hints.c
  user/mjacob/sys/kern/subr_param.c
  user/mjacob/sys/kern/sys_procdesc.c
  user/mjacob/sys/kern/uipc_socket.c
  user/mjacob/sys/kern/uipc_usrreq.c
  user/mjacob/sys/mips/conf/BERI_DE4_MDROOT
  user/mjacob/sys/mips/conf/BERI_SIM_MDROOT
  user/mjacob/sys/mips/include/pmap.h
  user/mjacob/sys/mips/include/pte.h
  user/mjacob/sys/mips/mips/busdma_machdep.c
  user/mjacob/sys/mips/mips/pmap.c
  user/mjacob/sys/modules/Makefile
  user/mjacob/sys/modules/dtrace/dtraceall/Makefile
  user/mjacob/sys/modules/dtrace/dtraceall/dtraceall.c
  user/mjacob/sys/modules/random/Makefile
  user/mjacob/sys/modules/xfs/Makefile
  user/mjacob/sys/net/flowtable.c
  user/mjacob/sys/net/if_bridge.c
  user/mjacob/sys/net/if_ethersubr.c
  user/mjacob/sys/net/if_var.h
  user/mjacob/sys/netinet/if_ether.c
  user/mjacob/sys/netinet/ip_var.h
  user/mjacob/sys/netinet/ipfw/ip_fw2.c
  user/mjacob/sys/netinet/ipfw/ip_fw_log.c
  user/mjacob/sys/netinet/ipfw/ip_fw_pfil.c
  user/mjacob/sys/netinet/ipfw/ip_fw_private.h
  user/mjacob/sys/netinet/sctp_asconf.c
  user/mjacob/sys/netinet/sctp_auth.c
  user/mjacob/sys/netinet/sctp_cc_functions.c
  user/mjacob/sys/netinet/sctp_header.h
  user/mjacob/sys/netinet/sctp_indata.c
  user/mjacob/sys/netinet/sctp_input.c
  user/mjacob/sys/netinet/sctp_input.h
  user/mjacob/sys/netinet/sctp_output.c
  user/mjacob/sys/netinet/sctp_pcb.c
  user/mjacob/sys/netinet/sctp_structs.h
  user/mjacob/sys/netinet/sctp_timer.c
  user/mjacob/sys/netinet/sctputil.c
  user/mjacob/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib.h
  user/mjacob/sys/rpc/auth.h
  user/mjacob/sys/rpc/clnt_vc.c
  user/mjacob/sys/rpc/rpc_com.h
  user/mjacob/sys/rpc/rpcb_clnt.c
  user/mjacob/sys/rpc/xdr.h
  user/mjacob/sys/sparc64/include/vmparam.h
  user/mjacob/sys/sys/hash.h
  user/mjacob/sys/sys/pmc.h
  user/mjacob/sys/sys/time.h
  user/mjacob/sys/vm/swap_pager.c
  user/mjacob/sys/vm/vm_map.c
  user/mjacob/sys/vm/vm_mmap.c
Directory Properties:
  user/mjacob/sys/   (props changed)
  user/mjacob/sys/cddl/contrib/opensolaris/   (props changed)
  user/mjacob/sys/conf/   (props changed)

Modified: user/mjacob/sys/amd64/amd64/pmap.c
==============================================================================
--- user/mjacob/sys/amd64/amd64/pmap.c	Fri Sep  7 21:06:54 2012	(r240214)
+++ user/mjacob/sys/amd64/amd64/pmap.c	Fri Sep  7 22:16:08 2012	(r240215)
@@ -323,8 +323,8 @@ static vm_page_t pmap_allocpde(pmap_t pm
 static vm_page_t pmap_allocpte(pmap_t pmap, vm_offset_t va,
 		struct rwlock **lockp);
 
-static int _pmap_unwire_pte_hold(pmap_t pmap, vm_offset_t va, vm_page_t m,
-                vm_page_t* free);
+static void _pmap_unwire_ptp(pmap_t pmap, vm_offset_t va, vm_page_t m,
+                vm_page_t *free);
 static int pmap_unuse_pt(pmap_t, vm_offset_t, pd_entry_t, vm_page_t *);
 static vm_offset_t pmap_kmem_choose(vm_offset_t addr);
 
@@ -1557,23 +1557,25 @@ pmap_remove_pt_page(pmap_t pmap, vm_page
 }
 
 /*
- * This routine unholds page table pages, and if the hold count
- * drops to zero, then it decrements the wire count.
+ * Decrements a page table page's wire count, which is used to record the
+ * number of valid page table entries within the page.  If the wire count
+ * drops to zero, then the page table page is unmapped.  Returns TRUE if the
+ * page table page was unmapped and FALSE otherwise.
  */
-static __inline int
-pmap_unwire_pte_hold(pmap_t pmap, vm_offset_t va, vm_page_t m, vm_page_t *free)
+static inline boolean_t
+pmap_unwire_ptp(pmap_t pmap, vm_offset_t va, vm_page_t m, vm_page_t *free)
 {
 
 	--m->wire_count;
-	if (m->wire_count == 0)
-		return (_pmap_unwire_pte_hold(pmap, va, m, free));
-	else
-		return (0);
+	if (m->wire_count == 0) {
+		_pmap_unwire_ptp(pmap, va, m, free);
+		return (TRUE);
+	} else
+		return (FALSE);
 }
 
-static int 
-_pmap_unwire_pte_hold(pmap_t pmap, vm_offset_t va, vm_page_t m, 
-    vm_page_t *free)
+static void
+_pmap_unwire_ptp(pmap_t pmap, vm_offset_t va, vm_page_t m, vm_page_t *free)
 {
 
 	PMAP_LOCK_ASSERT(pmap, MA_OWNED);
@@ -1602,14 +1604,14 @@ _pmap_unwire_pte_hold(pmap_t pmap, vm_of
 		vm_page_t pdpg;
 
 		pdpg = PHYS_TO_VM_PAGE(*pmap_pdpe(pmap, va) & PG_FRAME);
-		pmap_unwire_pte_hold(pmap, va, pdpg, free);
+		pmap_unwire_ptp(pmap, va, pdpg, free);
 	}
 	if (m->pindex >= NUPDE && m->pindex < (NUPDE + NUPDPE)) {
 		/* We just released a PD, unhold the matching PDP */
 		vm_page_t pdppg;
 
 		pdppg = PHYS_TO_VM_PAGE(*pmap_pml4e(pmap, va) & PG_FRAME);
-		pmap_unwire_pte_hold(pmap, va, pdppg, free);
+		pmap_unwire_ptp(pmap, va, pdppg, free);
 	}
 
 	/*
@@ -1624,8 +1626,6 @@ _pmap_unwire_pte_hold(pmap_t pmap, vm_of
 	 * *ALL* TLB shootdown is done
 	 */
 	pmap_add_delayed_free_list(m, free, TRUE);
-	
-	return (1);
 }
 
 /*
@@ -1641,7 +1641,7 @@ pmap_unuse_pt(pmap_t pmap, vm_offset_t v
 		return (0);
 	KASSERT(ptepde != 0, ("pmap_unuse_pt: ptepde != 0"));
 	mpte = PHYS_TO_VM_PAGE(ptepde & PG_FRAME);
-	return (pmap_unwire_pte_hold(pmap, va, mpte, free));
+	return (pmap_unwire_ptp(pmap, va, mpte, free));
 }
 
 void
@@ -3666,7 +3666,7 @@ pmap_enter_pde(pmap_t pmap, vm_offset_t 
 		if (!pmap_pv_insert_pde(pmap, va, VM_PAGE_TO_PHYS(m),
 		    lockp)) {
 			free = NULL;
-			if (pmap_unwire_pte_hold(pmap, va, mpde, &free)) {
+			if (pmap_unwire_ptp(pmap, va, mpde, &free)) {
 				pmap_invalidate_page(pmap, va);
 				pmap_free_zero_pages(free);
 			}
@@ -3842,7 +3842,7 @@ pmap_enter_quick_locked(pmap_t pmap, vm_
 	    !pmap_try_insert_pv_entry(pmap, va, m, lockp)) {
 		if (mpte != NULL) {
 			free = NULL;
-			if (pmap_unwire_pte_hold(pmap, va, mpte, &free)) {
+			if (pmap_unwire_ptp(pmap, va, mpte, &free)) {
 				pmap_invalidate_page(pmap, va);
 				pmap_free_zero_pages(free);
 			}
@@ -4149,8 +4149,8 @@ pmap_copy(pmap_t dst_pmap, pmap_t src_pm
 					pmap_resident_count_inc(dst_pmap, 1);
 	 			} else {
 					free = NULL;
-					if (pmap_unwire_pte_hold(dst_pmap,
-					    addr, dstmpte, &free)) {
+					if (pmap_unwire_ptp(dst_pmap, addr,
+					    dstmpte, &free)) {
 					    	pmap_invalidate_page(dst_pmap,
 					 	    addr);
 				    	    	pmap_free_zero_pages(free);

Modified: user/mjacob/sys/amd64/conf/GENERIC
==============================================================================
--- user/mjacob/sys/amd64/conf/GENERIC	Fri Sep  7 21:06:54 2012	(r240214)
+++ user/mjacob/sys/amd64/conf/GENERIC	Fri Sep  7 22:16:08 2012	(r240215)
@@ -148,6 +148,7 @@ device		ciss		# Compaq Smart RAID 5*
 device		dpt		# DPT Smartcache III, IV - See NOTES for options
 device		hptmv		# Highpoint RocketRAID 182x
 device		hptrr		# Highpoint RocketRAID 17xx, 22xx, 23xx, 25xx
+device		hpt27xx		# Highpoint RocketRAID 27xx
 device		iir		# Intel Integrated RAID
 device		ips		# IBM (Adaptec) ServeRAID
 device		mly		# Mylex AcceleRAID/eXtremeRAID
@@ -291,6 +292,8 @@ device		wpi		# Intel 3945ABG wireless NI
 # Pseudo devices.
 device		loop		# Network loopback
 device		random		# Entropy device
+options 	PADLOCK_RNG	# VIA Padlock RNG
+options 	IVY_RNG		# Intel Bull Mountain RNG
 device		ether		# Ethernet support
 device		vlan		# 802.1Q VLAN support
 device		tun		# Packet tunnel.

Modified: user/mjacob/sys/amd64/conf/NOTES
==============================================================================
--- user/mjacob/sys/amd64/conf/NOTES	Fri Sep  7 21:06:54 2012	(r240214)
+++ user/mjacob/sys/amd64/conf/NOTES	Fri Sep  7 22:16:08 2012	(r240215)
@@ -306,8 +306,6 @@ options 	DRM_DEBUG	# Include debug print
 # mlx4ib: Mellanox ConnectX HCA InfiniBand
 # mlxen: Mellanox ConnectX HCA Ethernet
 # mthca: Mellanox HCA InfiniBand
-# mwl:	Marvell 88W8363 IEEE 802.11 adapter
-#	Requires the mwl firmware module
 # nfe:	nVidia nForce MCP on-board Ethernet Networking (BSD open source)
 # nve:	nVidia nForce MCP on-board Ethernet Networking
 # sfxge: Solarflare SFC9000 family 10Gb Ethernet adapters
@@ -324,10 +322,9 @@ device		iwn		# Intel 4965/1000/5000/6000
 device  	mlx4ib		# Mellanox ConnectX HCA InfiniBand
 device  	mlxen		# Mellanox ConnectX HCA Ethernet
 device  	mthca		# Mellanox HCA InfiniBand
-device		mwl		# Marvell 88W8363 802.11n wireless NICs.
 device		nfe		# nVidia nForce MCP on-board Ethernet
 device		nve		# nVidia nForce MCP on-board Ethernet Networking
-device		sfxge
+device		sfxge		# Solarflare SFC9000 10Gb Ethernet
 device		wpi		# Intel 3945ABG wireless NICs.
 
 # IEEE 802.11 adapter firmware modules
@@ -350,7 +347,6 @@ device		wpi		# Intel 3945ABG wireless NI
 #   iwn5150fw:		Specific module for the 5150 only
 #   iwn6000fw:		Specific module for the 6000 only
 #   iwn6050fw:		Specific module for the 6050 only
-# mwlfw:	Marvell 88W8363 firmware
 # wpifw:	Intel 3945ABG Wireless LAN Controller firmware
 
 device		iwifw
@@ -368,7 +364,6 @@ device		iwn5000fw
 device		iwn5150fw
 device		iwn6000fw
 device		iwn6050fw
-device		mwlfw
 device		wpifw
 
 #

Modified: user/mjacob/sys/arm/arm/busdma_machdep.c
==============================================================================
--- user/mjacob/sys/arm/arm/busdma_machdep.c	Fri Sep  7 21:06:54 2012	(r240214)
+++ user/mjacob/sys/arm/arm/busdma_machdep.c	Fri Sep  7 22:16:08 2012	(r240215)
@@ -81,6 +81,7 @@ struct bus_dma_tag {
 	int			map_count;
 	bus_dma_lock_t		*lockfunc;
 	void			*lockfuncarg;
+	bus_dma_segment_t	*segments;
 	/*
 	 * DMA range for this tag.  If the page doesn't fall within
 	 * one of these ranges, an error is returned.  The caller
@@ -374,6 +375,8 @@ bus_dma_tag_create(bus_dma_tag_t parent,
 		newtag->lockfunc = dflt_lock;
 		newtag->lockfuncarg = NULL;
 	}
+	newtag->segments = NULL;
+
         /*
 	 * Take into account any restrictions imposed by our parent tag
 	 */
@@ -447,7 +450,6 @@ bus_dma_tag_destroy(bus_dma_tag_t dmat)
 #endif
 
 	if (dmat != NULL) {
-		
                 if (dmat->map_count != 0)
                         return (EBUSY);
 		
@@ -457,6 +459,8 @@ bus_dma_tag_destroy(bus_dma_tag_t dmat)
                         parent = dmat->parent;
                         atomic_subtract_int(&dmat->ref_count, 1);
                         if (dmat->ref_count == 0) {
+				if (dmat->segments != NULL)
+					free(dmat->segments, M_DEVBUF);
                                 free(dmat, M_DEVBUF);
                                 /*
                                  * Last reference count, so
@@ -484,6 +488,17 @@ bus_dmamap_create(bus_dma_tag_t dmat, in
 	bus_dmamap_t newmap;
 	int error = 0;
 
+	if (dmat->segments == NULL) {
+		dmat->segments = (bus_dma_segment_t *)malloc(
+		    sizeof(bus_dma_segment_t) * dmat->nsegments, M_DEVBUF,
+		    M_NOWAIT);
+		if (dmat->segments == NULL) {
+			CTR3(KTR_BUSDMA, "%s: tag %p error %d",
+			    __func__, dmat, ENOMEM);
+			return (ENOMEM);
+		}
+	}
+
 	newmap = _busdma_alloc_dmamap();
 	if (newmap == NULL) {
 		CTR3(KTR_BUSDMA, "%s: tag %p error %d", __func__, dmat, ENOMEM);
@@ -585,6 +600,16 @@ bus_dmamem_alloc(bus_dma_tag_t dmat, voi
 		mflags = M_NOWAIT;
 	else
 		mflags = M_WAITOK;
+	if (dmat->segments == NULL) {
+		dmat->segments = (bus_dma_segment_t *)malloc(
+		    sizeof(bus_dma_segment_t) * dmat->nsegments, M_DEVBUF,
+		    mflags);
+		if (dmat->segments == NULL) {
+			CTR4(KTR_BUSDMA, "%s: tag %p tag flags 0x%x error %d",
+			    __func__, dmat, dmat->flags, ENOMEM);
+			return (ENOMEM);
+		}
+	}
 	if (flags & BUS_DMA_ZERO)
 		mflags |= M_ZERO;
 
@@ -883,11 +908,6 @@ bus_dmamap_load(bus_dma_tag_t dmat, bus_
 {
      	vm_offset_t	lastaddr = 0;
 	int		error, nsegs = -1;
-#ifdef __CC_SUPPORTS_DYNAMIC_ARRAY_INIT
-	bus_dma_segment_t dm_segments[dmat->nsegments];
-#else
-	bus_dma_segment_t dm_segments[BUS_DMAMAP_NSEGS];
-#endif
 
 	KASSERT(dmat != NULL, ("dmatag is NULL"));
 	KASSERT(map != NULL, ("dmamap is NULL"));
@@ -898,14 +918,14 @@ bus_dmamap_load(bus_dma_tag_t dmat, bus_
 	map->buffer = buf;
 	map->len = buflen;
 	error = bus_dmamap_load_buffer(dmat,
-	    dm_segments, map, buf, buflen, kernel_pmap,
+	    dmat->segments, map, buf, buflen, kernel_pmap,
 	    flags, &lastaddr, &nsegs);
 	if (error == EINPROGRESS)
 		return (error);
 	if (error)
 		(*callback)(callback_arg, NULL, 0, error);
 	else
-		(*callback)(callback_arg, dm_segments, nsegs + 1, error);
+		(*callback)(callback_arg, dmat->segments, nsegs + 1, error);
 	
 	CTR5(KTR_BUSDMA, "%s: tag %p tag flags 0x%x error %d nsegs %d",
 	    __func__, dmat, dmat->flags, nsegs + 1, error);
@@ -921,11 +941,6 @@ bus_dmamap_load_mbuf(bus_dma_tag_t dmat,
 		     bus_dmamap_callback2_t *callback, void *callback_arg,
 		     int flags)
 {
-#ifdef __CC_SUPPORTS_DYNAMIC_ARRAY_INIT
-	bus_dma_segment_t dm_segments[dmat->nsegments];
-#else
-	bus_dma_segment_t dm_segments[BUS_DMAMAP_NSEGS];
-#endif
 	int nsegs = -1, error = 0;
 
 	M_ASSERTPKTHDR(m0);
@@ -941,7 +956,7 @@ bus_dmamap_load_mbuf(bus_dma_tag_t dmat,
 		for (m = m0; m != NULL && error == 0; m = m->m_next) {
 			if (m->m_len > 0) {
 				error = bus_dmamap_load_buffer(dmat,
-				    dm_segments, map, m->m_data, m->m_len,
+				    dmat->segments, map, m->m_data, m->m_len,
 				    pmap_kernel(), flags, &lastaddr, &nsegs);
 				map->len += m->m_len;
 			}
@@ -954,9 +969,9 @@ bus_dmamap_load_mbuf(bus_dma_tag_t dmat,
 		/*
 		 * force "no valid mappings" on error in callback.
 		 */
-		(*callback)(callback_arg, dm_segments, 0, 0, error);
+		(*callback)(callback_arg, dmat->segments, 0, 0, error);
 	} else {
-		(*callback)(callback_arg, dm_segments, nsegs + 1,
+		(*callback)(callback_arg, dmat->segments, nsegs + 1,
 		    m0->m_pkthdr.len, error);
 	}
 	CTR5(KTR_BUSDMA, "%s: tag %p tag flags 0x%x error %d nsegs %d",
@@ -1012,11 +1027,6 @@ bus_dmamap_load_uio(bus_dma_tag_t dmat, 
     int flags)
 {
 	vm_offset_t lastaddr = 0;
-#ifdef __CC_SUPPORTS_DYNAMIC_ARRAY_INIT
-	bus_dma_segment_t dm_segments[dmat->nsegments];
-#else
-	bus_dma_segment_t dm_segments[BUS_DMAMAP_NSEGS];
-#endif
 	int nsegs, i, error;
 	bus_size_t resid;
 	struct iovec *iov;
@@ -1048,8 +1058,8 @@ bus_dmamap_load_uio(bus_dma_tag_t dmat, 
 		caddr_t addr = (caddr_t) iov[i].iov_base;
 
 		if (minlen > 0) {
-			error = bus_dmamap_load_buffer(dmat, dm_segments, map,
-			    addr, minlen, pmap, flags, &lastaddr, &nsegs);
+			error = bus_dmamap_load_buffer(dmat, dmat->segments,
+			    map, addr, minlen, pmap, flags, &lastaddr, &nsegs);
 
 			map->len += minlen;
 			resid -= minlen;
@@ -1060,9 +1070,9 @@ bus_dmamap_load_uio(bus_dma_tag_t dmat, 
 		/*
 		 * force "no valid mappings" on error in callback.
 		 */
-		(*callback)(callback_arg, dm_segments, 0, 0, error);
+		(*callback)(callback_arg, dmat->segments, 0, 0, error);
 	} else {
-		(*callback)(callback_arg, dm_segments, nsegs+1,
+		(*callback)(callback_arg, dmat->segments, nsegs+1,
 		    uio->uio_resid, error);
 	}
 

Modified: user/mjacob/sys/arm/arm/pmap.c
==============================================================================
--- user/mjacob/sys/arm/arm/pmap.c	Fri Sep  7 21:06:54 2012	(r240214)
+++ user/mjacob/sys/arm/arm/pmap.c	Fri Sep  7 22:16:08 2012	(r240215)
@@ -1584,13 +1584,13 @@ pmap_clearbit(struct vm_page *pg, u_int 
  *   pmap_remove_pv: remove a mappiing from a vm_page list
  *
  * NOTE: pmap_enter_pv expects to lock the pvh itself
- *       pmap_remove_pv expects te caller to lock the pvh before calling
+ *       pmap_remove_pv expects the caller to lock the pvh before calling
  */
 
 /*
  * pmap_enter_pv: enter a mapping onto a vm_page lst
  *
- * => caller should hold the proper lock on pmap_main_lock
+ * => caller should hold the proper lock on pvh_global_lock
  * => caller should have pmap locked
  * => we will gain the lock on the vm_page and allocate the new pv_entry
  * => caller should adjust ptp's wire_count before calling
@@ -1600,12 +1600,11 @@ static void
 pmap_enter_pv(struct vm_page *pg, struct pv_entry *pve, pmap_t pm,
     vm_offset_t va, u_int flags)
 {
-
 	int km;
 
 	rw_assert(&pvh_global_lock, RA_WLOCKED);
 
-	if (pg->md.pv_kva) {
+	if (pg->md.pv_kva != 0) {
 		/* PMAP_ASSERT_LOCKED(pmap_kernel()); */
 		pve->pv_pmap = pmap_kernel();
 		pve->pv_va = pg->md.pv_kva;
@@ -1617,10 +1616,8 @@ pmap_enter_pv(struct vm_page *pg, struct
 		TAILQ_INSERT_HEAD(&pg->md.pv_list, pve, pv_list);
 		TAILQ_INSERT_HEAD(&pve->pv_pmap->pm_pvlist, pve, pv_plist);
 		PMAP_UNLOCK(pmap_kernel());
-		rw_wunlock(&pvh_global_lock);
 		if ((pve = pmap_get_pv_entry()) == NULL)
-			panic("pmap_kenter_internal: no pv entries");
-		rw_wlock(&pvh_global_lock);
+			panic("pmap_kenter_pv: no pv entries");
 		if (km)
 			PMAP_LOCK(pmap_kernel());
 	}
@@ -2824,22 +2821,20 @@ pmap_kenter_internal(vm_offset_t va, vm_
 		*pte |= L2_S_PROT_U;
 	PTE_SYNC(pte);
 
-		/* kernel direct mappings can be shared, so use a pv_entry
-		 * to ensure proper caching.
-		 *
-		 * The pvzone is used to delay the recording of kernel
-		 * mappings until the VM is running.
-		 *
-		 * This expects the physical memory to have vm_page_array entry.
-		 */
-	if (pvzone != NULL && (m = vm_phys_paddr_to_vm_page(pa))) {
+	/*
+	 * A kernel mapping may not be the page's only mapping, so create a PV
+	 * entry to ensure proper caching.
+ 	 *
+	 * The existence test for the pvzone is used to delay the recording of
+	 * kernel mappings until the VM system is fully initialized.
+	 *
+	 * This expects the physical memory to have a vm_page_array entry.
+	 */
+	if (pvzone != NULL && (m = vm_phys_paddr_to_vm_page(pa)) != NULL) {
 		rw_wlock(&pvh_global_lock);
-		if (!TAILQ_EMPTY(&m->md.pv_list) || m->md.pv_kva) {
-			/* release vm_page lock for pv_entry UMA */
-			rw_wunlock(&pvh_global_lock);
+		if (!TAILQ_EMPTY(&m->md.pv_list) || m->md.pv_kva != 0) {
 			if ((pve = pmap_get_pv_entry()) == NULL)
 				panic("pmap_kenter_internal: no pv entries");	
-			rw_wlock(&pvh_global_lock);
 			PMAP_LOCK(pmap_kernel());
 			pmap_enter_pv(m, pve, pmap_kernel(), va,
 			    PVF_WRITE | PVF_UNMAN);

Modified: user/mjacob/sys/arm/include/pmap.h
==============================================================================
--- user/mjacob/sys/arm/include/pmap.h	Fri Sep  7 21:06:54 2012	(r240214)
+++ user/mjacob/sys/arm/include/pmap.h	Fri Sep  7 22:16:08 2012	(r240215)
@@ -124,13 +124,6 @@ struct	md_page {
 	TAILQ_HEAD(,pv_entry)	pv_list;
 };
 
-#define	VM_MDPAGE_INIT(pg)						\
-do {									\
-	TAILQ_INIT(&pg->pv_list);					\
-	mtx_init(&(pg)->md_page.pvh_mtx, "MDPAGE Mutex", NULL, MTX_DEV);\
-	(pg)->mdpage.pvh_attrs = 0;					\
-} while (/*CONSTCOND*/0)
-
 struct l1_ttable;
 struct l2_dtable;
 

Modified: user/mjacob/sys/cam/scsi/scsi_low.c
==============================================================================
--- user/mjacob/sys/cam/scsi/scsi_low.c	Fri Sep  7 21:06:54 2012	(r240214)
+++ user/mjacob/sys/cam/scsi/scsi_low.c	Fri Sep  7 22:16:08 2012	(r240215)
@@ -14,13 +14,7 @@ __FBSDID("$FreeBSD$");
 /* #define	SCSI_LOW_QCLEAR_AFTER_CA */
 /* #define	SCSI_LOW_FLAGS_QUIRKS_OK */
 
-#ifdef __NetBSD__
-#define	SCSI_LOW_TARGET_OPEN
-#endif	/* __NetBSD__ */
-
-#ifdef	__FreeBSD__
 #define	SCSI_LOW_FLAGS_QUIRKS_OK
-#endif	/* __FreeBSD__ */
 
 /*-
  * [NetBSD for NEC PC-98 series]
@@ -71,41 +65,12 @@ __FBSDID("$FreeBSD$");
 #include <sys/param.h>
 #include <sys/systm.h>
 #include <sys/kernel.h>
-
-#ifdef __FreeBSD__
-#if __FreeBSD_version >= 500001
 #include <sys/bio.h>
-#else
-#include <machine/clock.h>
-#endif
-#endif	/* __FreeBSD__ */
-
 #include <sys/buf.h>
 #include <sys/queue.h>
 #include <sys/malloc.h>
 #include <sys/errno.h>
 
-#ifdef	__NetBSD__
-#include <sys/device.h>
-#include <vm/vm.h>
-
-#include <machine/bus.h>
-#include <machine/intr.h>
-#include <machine/dvcfg.h>
-
-#include <dev/cons.h>
-
-#include <dev/scsipi/scsipi_all.h>
-#include <dev/scsipi/scsipiconf.h>
-#include <dev/scsipi/scsipi_disk.h>
-#include <dev/scsipi/scsi_all.h>
-#include <dev/scsipi/scsiconf.h>
-#include <sys/scsiio.h>
-
-#include <i386/Cbus/dev/scsi_low.h>
-#endif	/* __NetBSD__ */
-
-#ifdef __FreeBSD__
 #include <cam/cam.h>
 #include <cam/cam_ccb.h>
 #include <cam/cam_sim.h>
@@ -119,7 +84,6 @@ __FBSDID("$FreeBSD$");
 #include <cam/scsi/scsi_low.h>
 
 #include <sys/cons.h>
-#endif	/* __FreeBSD__ */
 
 /**************************************************************
  * Constants
@@ -392,501 +356,6 @@ scsi_low_translate_error_code(cb, tp)
 	return tp->error_code;
 }
 
-#ifdef SCSI_LOW_INTERFACE_XS
-/**************************************************************
- * SCSI INTERFACE (XS)
- **************************************************************/
-#define	SCSI_LOW_MINPHYS		0x10000
-#define	SCSI_LOW_MALLOC(size)		malloc((size), M_SCSILOW, M_NOWAIT)
-#define	SCSI_LOW_FREE(pt)		free((pt), M_SCSILOW)
-#define	SCSI_LOW_ALLOC_CCB(flags)	scsi_low_get_ccb((flags))
-#define	SCSI_LOW_XS_POLL_HZ		1000
-
-static int scsi_low_poll_xs(struct scsi_low_softc *, struct slccb *);
-static void scsi_low_scsi_minphys_xs(struct buf *);
-#ifdef	SCSI_LOW_TARGET_OPEN
-static int scsi_low_target_open(struct scsipi_link *, struct cfdata *);
-#endif	/* SCSI_LOW_TARGET_OPEN */
-static int scsi_low_scsi_cmd_xs(struct scsipi_xfer *);
-static int scsi_low_enable_xs(void *, int);
-static int scsi_low_ioctl_xs(struct scsipi_link *, u_long, caddr_t, int, struct proc *);
-
-static int scsi_low_attach_xs(struct scsi_low_softc *);
-static int scsi_low_world_start_xs(struct scsi_low_softc *);
-static int scsi_low_dettach_xs(struct scsi_low_softc *);
-static int scsi_low_ccb_setup_xs(struct scsi_low_softc *, struct slccb *);
-static int scsi_low_done_xs(struct scsi_low_softc *, struct slccb *);
-static void scsi_low_timeout_xs(struct scsi_low_softc *, int, int);
-static u_int scsi_low_translate_quirks_xs(u_int);
-static void scsi_low_setup_quirks_xs(struct targ_info *, struct lun_info *, u_int);
-
-struct scsi_low_osdep_funcs scsi_low_osdep_funcs_xs = {
-	scsi_low_attach_xs,
-	scsi_low_world_start_xs,
-	scsi_low_dettach_xs,
-	scsi_low_ccb_setup_xs,
-	scsi_low_done_xs,
-	scsi_low_timeout_xs
-};
-	
-struct scsipi_device scsi_low_dev = {
-	NULL,	/* Use default error handler */
-	NULL,	/* have a queue, served by this */
-	NULL,	/* have no async handler */
-	NULL,	/* Use default 'done' routine */
-};
-
-struct scsi_low_error_code scsi_low_error_code_xs[] = {
-	{0,		XS_NOERROR},
-	{SENSEIO,	XS_SENSE},
-	{BUSYERR,	XS_BUSY	},
-	{SELTIMEOUTIO,	XS_SELTIMEOUT},
-	{TIMEOUTIO,	XS_TIMEOUT},
-	{-1,		XS_DRIVER_STUFFUP}
-};
-
-static int
-scsi_low_ioctl_xs(link, cmd, addr, flag, p)
-	struct scsipi_link *link;
-	u_long cmd;
-	caddr_t addr;
-	int flag;
-	struct proc *p;
-{
-	struct scsi_low_softc *slp;
-	int s, error = ENOTTY;
-
-	slp = (struct scsi_low_softc *) link->adapter_softc;
-	if ((slp->sl_flags & HW_INACTIVE) != 0)
-		return ENXIO;
-
-	if (cmd == SCBUSIORESET)
-	{
-		s = SCSI_LOW_SPLSCSI();
-		scsi_low_restart(slp, SCSI_LOW_RESTART_HARD, NULL);
-		splx(s);
-		error = 0;
-	}
-	else if (slp->sl_funcs->scsi_low_ioctl != 0)
-	{
-		error = (*slp->sl_funcs->scsi_low_ioctl)
-				(slp, cmd, addr, flag, p);
-	}
-
-	return error;
-}
-
-static int
-scsi_low_enable_xs(arg, enable)
-	void *arg;
-	int enable;
-{
-	struct scsi_low_softc *slp = arg;
-
-	if (enable != 0)
-	{
-		if ((slp->sl_flags & HW_INACTIVE) != 0)
-			return ENXIO;
-	}
-	else
-	{
-		if ((slp->sl_flags & HW_INACTIVE) != 0 ||
-		    (slp->sl_flags & HW_POWERCTRL) == 0)
-			return 0;
-
-		slp->sl_flags |= HW_POWDOWN;
-		if (slp->sl_funcs->scsi_low_power != NULL)
-		{
-			(*slp->sl_funcs->scsi_low_power)
-					(slp, SCSI_LOW_POWDOWN);
-		}
-	}
-	return 0;
-}
-
-static void
-scsi_low_scsi_minphys_xs(bp)
-	struct buf *bp;
-{
-
-	if (bp->b_bcount > SCSI_LOW_MINPHYS)
-		bp->b_bcount = SCSI_LOW_MINPHYS;
-	minphys(bp);
-}
-
-static int
-scsi_low_poll_xs(slp, cb)
-	struct scsi_low_softc *slp;
-	struct slccb *cb;
-{
-	struct scsipi_xfer *xs = cb->osdep;
-	int tcount;
-
-	cb->ccb_flags |= CCB_NOSDONE;
-	tcount = 0;
-
-	while (slp->sl_nio > 0)
-	{
-		SCSI_LOW_DELAY((1000 * 1000) / SCSI_LOW_XS_POLL_HZ);
-
-		(*slp->sl_funcs->scsi_low_poll) (slp);
-
-		if ((slp->sl_flags & (HW_INACTIVE | HW_INITIALIZING)) != 0)
-		{
-			cb->ccb_flags |= CCB_NORETRY;
-			cb->ccb_error |= FATALIO;
-			(void) scsi_low_revoke_ccb(slp, cb, 1);
-			printf("%s: hardware inactive in poll mode\n", 
-				slp->sl_xname);
-		}
-
-		if ((xs->flags & ITSDONE) != 0)
-			break;
-
-		if (tcount ++ < SCSI_LOW_XS_POLL_HZ / SCSI_LOW_TIMEOUT_HZ)
-			continue;
-
-		tcount = 0;
-		scsi_low_timeout_check(slp);
-	}
-
-	xs->flags |= ITSDONE;
-	scsipi_done(xs);
-	return COMPLETE;
-}
-
-static int
-scsi_low_scsi_cmd_xs(xs)
-	struct scsipi_xfer *xs;
-{
-	struct scsipi_link *splp = xs->sc_link;
-	struct scsi_low_softc *slp = splp->adapter_softc;
-	struct targ_info *ti;
-	struct lun_info *li;
-	struct slccb *cb;
-	int s, targ, lun, flags, rv;
-
-	if ((cb = SCSI_LOW_ALLOC_CCB(xs->flags & SCSI_NOSLEEP)) == NULL)
-		return TRY_AGAIN_LATER;
-
-	targ = splp->scsipi_scsi.target,
-	lun = splp->scsipi_scsi.lun;
-	ti = slp->sl_ti[targ];
-
-	cb->osdep = xs;
-	cb->bp = xs->bp;
-
-	if ((xs->flags & SCSI_POLL) == 0)
-		flags = CCB_AUTOSENSE;
-	else
-		flags = CCB_AUTOSENSE | CCB_POLLED;
-		
-
-	s = SCSI_LOW_SPLSCSI();
-	li = scsi_low_alloc_li(ti, lun, 1);
-	if ((u_int) splp->quirks != li->li_sloi.sloi_quirks)
-	{
-		scsi_low_setup_quirks_xs(ti, li, (u_int) splp->quirks);
-	}
-
-	if ((xs->flags & SCSI_RESET) != 0)
-	{
-		flags |= CCB_NORETRY | CCB_URGENT;
-		scsi_low_enqueue(slp, ti, li, cb, flags, SCSI_LOW_MSG_RESET);
-	}
-	else
-	{
-		if (ti->ti_setup_msg != 0)
-		{
-			scsi_low_message_enqueue(slp, ti, li, flags);
-		}
-
-		flags |= CCB_SCSIIO;
-		scsi_low_enqueue(slp, ti, li, cb, flags, 0);
-	}
-
-#ifdef	SCSI_LOW_DEBUG
-	if (SCSI_LOW_DEBUG_TEST_GO(SCSI_LOW_ABORT_CHECK, ti->ti_id) != 0)
-	{
-		scsi_low_test_abort(slp, ti, li);
-	}
-#endif	/* SCSI_LOW_DEBUG */
-
-	if ((cb->ccb_flags & CCB_POLLED) != 0)
-	{
-		rv = scsi_low_poll_xs(slp, cb);
-	}
-	else
-	{
-		rv = SUCCESSFULLY_QUEUED;
-	}
-	splx(s);
-	return rv;
-}
-
-static int
-scsi_low_attach_xs(slp)
-	struct scsi_low_softc *slp;
-{
-	struct scsipi_adapter *sap;
-	struct scsipi_link *splp;
-
-	strncpy(slp->sl_xname, slp->sl_dev.dv_xname, 16);
-
-	sap = SCSI_LOW_MALLOC(sizeof(*sap));
-	if (sap == NULL)
-		return ENOMEM;
-	splp = SCSI_LOW_MALLOC(sizeof(*splp));
-	if (splp == NULL)
-	{
-		SCSI_LOW_FREE(sap);
-		return ENOMEM;
-	}
-
-	SCSI_LOW_BZERO(sap, sizeof(*sap));
-	SCSI_LOW_BZERO(splp, sizeof(*splp));
-
-	sap->scsipi_cmd = scsi_low_scsi_cmd_xs;
-	sap->scsipi_minphys = scsi_low_scsi_minphys_xs;
-	sap->scsipi_enable = scsi_low_enable_xs;
-	sap->scsipi_ioctl = scsi_low_ioctl_xs;
-#ifdef	SCSI_LOW_TARGET_OPEN
-	sap->open_target_lu = scsi_low_target_open;
-#endif	/* SCSI_LOW_TARGET_OPEN */
-
-	splp->adapter_softc = slp;
-	splp->scsipi_scsi.adapter_target = slp->sl_hostid;
-	splp->scsipi_scsi.max_target = slp->sl_ntargs - 1;
-	splp->scsipi_scsi.max_lun = slp->sl_nluns - 1;
-	splp->scsipi_scsi.channel = SCSI_CHANNEL_ONLY_ONE;
-	splp->openings = slp->sl_openings;
-	splp->type = BUS_SCSI;
-	splp->adapter_softc = slp;
-	splp->adapter = sap;
-	splp->device = &scsi_low_dev;
-
-	slp->sl_si.si_splp = splp;
-	slp->sl_show_result = SHOW_ALL_NEG;
-	return 0;
-}
-
-static int
-scsi_low_world_start_xs(slp)
-	struct scsi_low_softc *slp;
-{
-
-	return 0;
-}
-
-static int
-scsi_low_dettach_xs(slp)
-	struct scsi_low_softc *slp;
-{
-
-	/*
-	 * scsipi does not have dettach bus fucntion.
-	 *
-	scsipi_dettach_scsibus(slp->sl_si.si_splp);
-	*/
-	return 0;
-}
-
-static int
-scsi_low_ccb_setup_xs(slp, cb)
-	struct scsi_low_softc *slp;
-	struct slccb *cb;
-{
-	struct scsipi_xfer *xs = (struct scsipi_xfer *) cb->osdep;
-
-	if ((cb->ccb_flags & CCB_SCSIIO) != 0)
-	{
-		cb->ccb_scp.scp_cmd = (u_int8_t *) xs->cmd;
-		cb->ccb_scp.scp_cmdlen = xs->cmdlen;
-		cb->ccb_scp.scp_data = xs->data;
-		cb->ccb_scp.scp_datalen = xs->datalen;
-		cb->ccb_scp.scp_direction = (xs->flags & SCSI_DATA_OUT) ? 
-					SCSI_LOW_WRITE : SCSI_LOW_READ;
-		cb->ccb_tcmax = xs->timeout / 1000;
-	}
-	else
-	{
-		scsi_low_unit_ready_cmd(cb);
-	}
-	return SCSI_LOW_START_QTAG;
-}
-
-static int
-scsi_low_done_xs(slp, cb)
-	struct scsi_low_softc *slp;
-	struct slccb *cb;
-{
-	struct scsipi_xfer *xs;
-
-	xs = (struct scsipi_xfer *) cb->osdep;
-	if (cb->ccb_error == 0)
-	{
-		xs->error = XS_NOERROR;
-		xs->resid = 0;
-	}
-	else 	
-	{
-	        if (cb->ccb_rcnt >= slp->sl_max_retry)
-			cb->ccb_error |= ABORTIO;
-
-		if ((cb->ccb_flags & CCB_NORETRY) == 0 &&
-		    (cb->ccb_error & ABORTIO) == 0)
-			return EJUSTRETURN;
-
-		if ((cb->ccb_error & SENSEIO) != 0)
-		{
-			xs->sense.scsi_sense = cb->ccb_sense;
-		}
-
-		xs->error = scsi_low_translate_error_code(cb,
-				&scsi_low_error_code_xs[0]);
-	
-#ifdef	SCSI_LOW_DIAGNOSTIC
-		if ((cb->ccb_flags & CCB_SILENT) == 0 &&
-		    cb->ccb_scp.scp_cmdlen > 0 &&
-		    (scsi_low_cmd_flags[cb->ccb_scp.scp_cmd[0]] &
-		     SCSI_LOW_CMD_ABORT_WARNING) != 0)
-		{
-			printf("%s: WARNING: scsi_low IO abort\n",
-				slp->sl_xname);
-			scsi_low_print(slp, NULL);
-		}
-#endif	/* SCSI_LOW_DIAGNOSTIC */
-	}
-
-	if (cb->ccb_scp.scp_status == ST_UNKNOWN)
-		xs->status = 0;	/* XXX */
-	else
-		xs->status = cb->ccb_scp.scp_status;
-
-	xs->flags |= ITSDONE;
-	if ((cb->ccb_flags & CCB_NOSDONE) == 0)
-		scsipi_done(xs);
-
-	return 0;
-}
-
-static void
-scsi_low_timeout_xs(slp, ch, action)
-	struct scsi_low_softc *slp;
-	int ch;
-	int action;
-{
-
-	switch (ch)
-	{
-	case SCSI_LOW_TIMEOUT_CH_IO:
-		switch (action)
-		{
-		case SCSI_LOW_TIMEOUT_START:
-			timeout(scsi_low_timeout, slp,
-				hz / SCSI_LOW_TIMEOUT_HZ);
-			break;
-		case SCSI_LOW_TIMEOUT_STOP:
-			untimeout(scsi_low_timeout, slp);
-			break;
-		}
-		break;
-
-	case SCSI_LOW_TIMEOUT_CH_ENGAGE:
-		switch (action)
-		{
-		case SCSI_LOW_TIMEOUT_START:
-			timeout(scsi_low_engage, slp, 1);
-			break;
-		case SCSI_LOW_TIMEOUT_STOP:
-			untimeout(scsi_low_engage, slp);
-			break;
-		}
-		break;
-
-	case SCSI_LOW_TIMEOUT_CH_RECOVER:
-		break;
-	}
-}
-
-u_int
-scsi_low_translate_quirks_xs(quirks)
-	u_int quirks;
-{
-	u_int flags;
-	
-	flags = SCSI_LOW_DISK_LFLAGS | SCSI_LOW_DISK_TFLAGS;
-
-#ifdef	SDEV_NODISC
-	if (quirks & SDEV_NODISC)
-		flags &= ~SCSI_LOW_DISK_DISC;
-#endif	/* SDEV_NODISC */
-#ifdef	SDEV_NOPARITY
-	if (quirks & SDEV_NOPARITY)
-		flags &= ~SCSI_LOW_DISK_PARITY;
-#endif	/* SDEV_NOPARITY */
-#ifdef	SDEV_NOCMDLNK
-	if (quirks & SDEV_NOCMDLNK)
-		flags &= ~SCSI_LOW_DISK_LINK;
-#endif	/* SDEV_NOCMDLNK */
-#ifdef	SDEV_NOTAG
-	if (quirks & SDEV_NOTAG)
-		flags &= ~SCSI_LOW_DISK_QTAG;
-#endif	/* SDEV_NOTAG */
-#ifdef	SDEV_NOSYNC
-	if (quirks & SDEV_NOSYNC)
-		flags &= ~SCSI_LOW_DISK_SYNC;
-#endif	/* SDEV_NOSYNC */
-
-	return flags;
-}
-
-static void
-scsi_low_setup_quirks_xs(ti, li, flags)
-	struct targ_info *ti;
-	struct lun_info *li;
-	u_int flags;
-{
-	u_int quirks;
-
-	li->li_sloi.sloi_quirks = flags;
-	quirks = scsi_low_translate_quirks_xs(flags);
-	ti->ti_quirks = quirks & SCSI_LOW_DISK_TFLAGS;
-	li->li_quirks = quirks & SCSI_LOW_DISK_LFLAGS;
-	ti->ti_flags_valid |= SCSI_LOW_TARG_FLAGS_QUIRKS_VALID;
-	li->li_flags_valid |= SCSI_LOW_LUN_FLAGS_QUIRKS_VALID;
-	scsi_low_calcf_target(ti);
-	scsi_low_calcf_lun(li);
-	scsi_low_calcf_show(li);
-}
-
-#ifdef	SCSI_LOW_TARGET_OPEN
-static int
-scsi_low_target_open(link, cf)
-	struct scsipi_link *link;
-	struct cfdata *cf;
-{
-	u_int target = link->scsipi_scsi.target;
-	u_int lun = link->scsipi_scsi.lun;
-	struct scsi_low_softc *slp;
-	struct targ_info *ti;
-	struct lun_info *li;
-
-	slp = (struct scsi_low_softc *) link->adapter_softc;
-	ti = slp->sl_ti[target];
-	li = scsi_low_alloc_li(ti, lun, 0);
-	if (li == NULL)
-		return 0;
-
-	li->li_cfgflags = cf->cf_flags;
-	scsi_low_setup_quirks_xs(ti, li, (u_int) link->quirks);
-	return 0;
-}
-#endif	/* SCSI_LOW_TARGET_OPEN */
-
-#endif	/* SCSI_LOW_INTERFACE_XS */
-
-#ifdef SCSI_LOW_INTERFACE_CAM
 /**************************************************************

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***



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