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...
Matt Jacob
mjacob at FreeBSD.org
Fri Sep 7 22:16:09 UTC 2012
Author: mjacob
Date: Fri Sep 7 22:16:08 2012
New Revision: 240215
URL: http://svn.freebsd.org/changeset/base/240215
Log:
IFC at 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 ***
More information about the svn-src-user
mailing list