PERFORCE change 84075 for review
John Baldwin
jhb at FreeBSD.org
Wed Sep 21 13:58:36 PDT 2005
http://perforce.freebsd.org/chv.cgi?CH=84075
Change 84075 by jhb at jhb_slimer on 2005/09/21 20:57:42
IFC @84072
Affected files ...
.. //depot/projects/smpng/sys/alpha/alpha/busdma_machdep.c#29 integrate
.. //depot/projects/smpng/sys/alpha/alpha/trap.c#59 integrate
.. //depot/projects/smpng/sys/alpha/conf/MAC#1 branch
.. //depot/projects/smpng/sys/alpha/include/chipset.h#2 integrate
.. //depot/projects/smpng/sys/alpha/include/pmap.h#23 integrate
.. //depot/projects/smpng/sys/alpha/mcbus/mcpcia.c#22 integrate
.. //depot/projects/smpng/sys/alpha/osf1/osf1_ioctl.c#10 integrate
.. //depot/projects/smpng/sys/alpha/osf1/osf1_misc.c#39 integrate
.. //depot/projects/smpng/sys/alpha/osf1/osf1_signal.c#27 integrate
.. //depot/projects/smpng/sys/alpha/pci/apecs.c#15 integrate
.. //depot/projects/smpng/sys/alpha/pci/cia.c#19 integrate
.. //depot/projects/smpng/sys/alpha/pci/irongate.c#6 integrate
.. //depot/projects/smpng/sys/alpha/pci/lca.c#8 integrate
.. //depot/projects/smpng/sys/alpha/pci/t2.c#21 integrate
.. //depot/projects/smpng/sys/alpha/pci/tsunami.c#16 integrate
.. //depot/projects/smpng/sys/alpha/tlsb/dwlpx.c#16 integrate
.. //depot/projects/smpng/sys/amd64/amd64/mptable_pci.c#3 integrate
.. //depot/projects/smpng/sys/amd64/amd64/trap.c#31 integrate
.. //depot/projects/smpng/sys/amd64/conf/MAC#1 branch
.. //depot/projects/smpng/sys/amd64/include/legacyvar.h#5 integrate
.. //depot/projects/smpng/sys/amd64/pci/pci_bus.c#13 integrate
.. //depot/projects/smpng/sys/cam/cam_xpt.c#32 integrate
.. //depot/projects/smpng/sys/compat/linux/linux_socket.c#25 integrate
.. //depot/projects/smpng/sys/compat/svr4/svr4_fcntl.c#20 integrate
.. //depot/projects/smpng/sys/compat/svr4/svr4_ioctl.c#13 integrate
.. //depot/projects/smpng/sys/compat/svr4/svr4_ipc.c#10 integrate
.. //depot/projects/smpng/sys/compat/svr4/svr4_misc.c#41 integrate
.. //depot/projects/smpng/sys/compat/svr4/svr4_signal.c#15 integrate
.. //depot/projects/smpng/sys/compat/svr4/svr4_stat.c#15 integrate
.. //depot/projects/smpng/sys/compat/svr4/svr4_stream.c#25 integrate
.. //depot/projects/smpng/sys/compat/svr4/svr4_termios.c#8 integrate
.. //depot/projects/smpng/sys/compat/svr4/svr4_ttold.c#8 integrate
.. //depot/projects/smpng/sys/compat/svr4/svr4_util.h#7 integrate
.. //depot/projects/smpng/sys/conf/NOTES#103 integrate
.. //depot/projects/smpng/sys/conf/files#149 integrate
.. //depot/projects/smpng/sys/conf/files.i386#87 integrate
.. //depot/projects/smpng/sys/conf/kmod.mk#49 integrate
.. //depot/projects/smpng/sys/conf/options#105 integrate
.. //depot/projects/smpng/sys/contrib/dev/oltr/if_oltr.c#15 integrate
.. //depot/projects/smpng/sys/dev/acpica/acpi_pcib_acpi.c#20 integrate
.. //depot/projects/smpng/sys/dev/aic/aic_pccard.c#11 integrate
.. //depot/projects/smpng/sys/dev/an/if_an.c#46 integrate
.. //depot/projects/smpng/sys/dev/arl/if_arl_isa.c#6 integrate
.. //depot/projects/smpng/sys/dev/ata/ata-lowlevel.c#31 integrate
.. //depot/projects/smpng/sys/dev/ath/if_ath.c#31 integrate
.. //depot/projects/smpng/sys/dev/awi/if_awi_pccard.c#16 integrate
.. //depot/projects/smpng/sys/dev/bfe/if_bfe.c#18 integrate
.. //depot/projects/smpng/sys/dev/bge/if_bge.c#59 integrate
.. //depot/projects/smpng/sys/dev/cm/if_cm_isa.c#8 integrate
.. //depot/projects/smpng/sys/dev/cnw/if_cnw.c#21 integrate
.. //depot/projects/smpng/sys/dev/cp/if_cp.c#15 integrate
.. //depot/projects/smpng/sys/dev/cs/if_cs.c#16 integrate
.. //depot/projects/smpng/sys/dev/cs/if_cs_pccard.c#13 integrate
.. //depot/projects/smpng/sys/dev/ed/if_ed.c#34 integrate
.. //depot/projects/smpng/sys/dev/ed/if_ed_pccard.c#33 integrate
.. //depot/projects/smpng/sys/dev/ed/if_edvar.h#12 integrate
.. //depot/projects/smpng/sys/dev/em/if_em.c#51 integrate
.. //depot/projects/smpng/sys/dev/en/if_en_pci.c#11 integrate
.. //depot/projects/smpng/sys/dev/ep/if_ep.c#25 integrate
.. //depot/projects/smpng/sys/dev/ex/if_ex.c#18 integrate
.. //depot/projects/smpng/sys/dev/fatm/if_fatm.c#16 integrate
.. //depot/projects/smpng/sys/dev/fe/if_fe.c#21 integrate
.. //depot/projects/smpng/sys/dev/fe/if_fe_pccard.c#15 integrate
.. //depot/projects/smpng/sys/dev/fxp/if_fxp.c#65 integrate
.. //depot/projects/smpng/sys/dev/gem/if_gem.c#25 integrate
.. //depot/projects/smpng/sys/dev/hatm/if_hatm.c#19 integrate
.. //depot/projects/smpng/sys/dev/hatm/if_hatm_intr.c#16 integrate
.. //depot/projects/smpng/sys/dev/ie/if_ie.c#14 integrate
.. //depot/projects/smpng/sys/dev/if_ndis/if_ndis.c#31 integrate
.. //depot/projects/smpng/sys/dev/ipw/if_ipw.c#8 integrate
.. //depot/projects/smpng/sys/dev/iwi/if_iwi.c#10 integrate
.. //depot/projects/smpng/sys/dev/iwi/if_iwireg.h#3 integrate
.. //depot/projects/smpng/sys/dev/iwi/if_iwivar.h#4 integrate
.. //depot/projects/smpng/sys/dev/ixgb/if_ixgb.c#11 integrate
.. //depot/projects/smpng/sys/dev/joy/joy_pccard.c#5 integrate
.. //depot/projects/smpng/sys/dev/lge/if_lge.c#29 integrate
.. //depot/projects/smpng/sys/dev/lnc/if_lnc.c#20 integrate
.. //depot/projects/smpng/sys/dev/md/md.c#68 integrate
.. //depot/projects/smpng/sys/dev/ncv/ncr53c500_pccard.c#19 integrate
.. //depot/projects/smpng/sys/dev/nge/if_nge.c#42 integrate
.. //depot/projects/smpng/sys/dev/nsp/nsp_pccard.c#15 integrate
.. //depot/projects/smpng/sys/dev/nve/if_nve.c#6 integrate
.. //depot/projects/smpng/sys/dev/patm/if_patm_attach.c#10 integrate
.. //depot/projects/smpng/sys/dev/patm/if_patm_rx.c#8 integrate
.. //depot/projects/smpng/sys/dev/pccard/pccard.c#39 integrate
.. //depot/projects/smpng/sys/dev/pccard/pccard_cis.c#23 integrate
.. //depot/projects/smpng/sys/dev/pccard/pccard_cis_quirks.c#9 integrate
.. //depot/projects/smpng/sys/dev/pccard/pccard_device.c#1 branch
.. //depot/projects/smpng/sys/dev/pccard/pccardvar.h#25 integrate
.. //depot/projects/smpng/sys/dev/pccard/pccardvarp.h#1 branch
.. //depot/projects/smpng/sys/dev/pci/pci.c#60 integrate
.. //depot/projects/smpng/sys/dev/ral/if_ral.c#10 integrate
.. //depot/projects/smpng/sys/dev/ray/if_ray.c#22 integrate
.. //depot/projects/smpng/sys/dev/re/if_re.c#27 integrate
.. //depot/projects/smpng/sys/dev/sbsh/if_sbsh.c#12 integrate
.. //depot/projects/smpng/sys/dev/sio/sio_pccard.c#12 integrate
.. //depot/projects/smpng/sys/dev/sn/if_sn.c#25 integrate
.. //depot/projects/smpng/sys/dev/snp/snp.c#25 integrate
.. //depot/projects/smpng/sys/dev/sound/usb/uaudio.c#8 integrate
.. //depot/projects/smpng/sys/dev/sound/usb/uaudio_pcm.c#11 integrate
.. //depot/projects/smpng/sys/dev/tx/if_tx.c#23 integrate
.. //depot/projects/smpng/sys/dev/txp/if_txp.c#28 integrate
.. //depot/projects/smpng/sys/dev/usb/ehci_pci.c#17 integrate
.. //depot/projects/smpng/sys/dev/usb/ehcireg.h#8 integrate
.. //depot/projects/smpng/sys/dev/usb/ehcivar.h#8 integrate
.. //depot/projects/smpng/sys/dev/usb/if_aue.c#38 integrate
.. //depot/projects/smpng/sys/dev/usb/if_axe.c#22 integrate
.. //depot/projects/smpng/sys/dev/usb/if_cdce.c#5 integrate
.. //depot/projects/smpng/sys/dev/usb/if_cue.c#30 integrate
.. //depot/projects/smpng/sys/dev/usb/if_kue.c#27 integrate
.. //depot/projects/smpng/sys/dev/usb/if_rue.c#16 integrate
.. //depot/projects/smpng/sys/dev/usb/if_udav.c#10 integrate
.. //depot/projects/smpng/sys/dev/usb/if_ural.c#9 integrate
.. //depot/projects/smpng/sys/dev/usb/usb_port.h#25 integrate
.. //depot/projects/smpng/sys/dev/vge/if_vge.c#9 integrate
.. //depot/projects/smpng/sys/dev/wi/if_wi.c#76 integrate
.. //depot/projects/smpng/sys/dev/wl/if_wl.c#26 integrate
.. //depot/projects/smpng/sys/dev/xe/if_xe_pccard.c#23 integrate
.. //depot/projects/smpng/sys/fs/devfs/devfs.h#16 integrate
.. //depot/projects/smpng/sys/fs/devfs/devfs_devs.c#20 integrate
.. //depot/projects/smpng/sys/fs/devfs/devfs_int.h#2 integrate
.. //depot/projects/smpng/sys/fs/devfs/devfs_rule.c#13 integrate
.. //depot/projects/smpng/sys/fs/devfs/devfs_vfsops.c#25 integrate
.. //depot/projects/smpng/sys/fs/devfs/devfs_vnops.c#51 integrate
.. //depot/projects/smpng/sys/fs/fifofs/fifo_vnops.c#36 integrate
.. //depot/projects/smpng/sys/geom/geom_ctl.c#24 integrate
.. //depot/projects/smpng/sys/geom/geom_gpt.c#19 integrate
.. //depot/projects/smpng/sys/gnu/fs/ext2fs/ext2_alloc.c#2 integrate
.. //depot/projects/smpng/sys/i386/conf/MAC#1 branch
.. //depot/projects/smpng/sys/i386/i386/mptable_pci.c#3 integrate
.. //depot/projects/smpng/sys/i386/i386/trap.c#82 integrate
.. //depot/projects/smpng/sys/i386/i386/vm86.c#19 integrate
.. //depot/projects/smpng/sys/i386/include/legacyvar.h#5 integrate
.. //depot/projects/smpng/sys/i386/pci/pci_bus.c#27 integrate
.. //depot/projects/smpng/sys/ia64/conf/MAC#1 branch
.. //depot/projects/smpng/sys/ia64/ia64/unaligned.c#11 integrate
.. //depot/projects/smpng/sys/kern/imgact_elf.c#46 integrate
.. //depot/projects/smpng/sys/kern/init_main.c#57 integrate
.. //depot/projects/smpng/sys/kern/kern_acct.c#37 integrate
.. //depot/projects/smpng/sys/kern/kern_acl.c#25 integrate
.. //depot/projects/smpng/sys/kern/kern_conf.c#42 integrate
.. //depot/projects/smpng/sys/kern/kern_event.c#42 integrate
.. //depot/projects/smpng/sys/kern/kern_intr.c#71 integrate
.. //depot/projects/smpng/sys/kern/kern_tc.c#33 integrate
.. //depot/projects/smpng/sys/kern/kern_timeout.c#26 integrate
.. //depot/projects/smpng/sys/kern/kern_uuid.c#9 integrate
.. //depot/projects/smpng/sys/kern/subr_bus.c#54 integrate
.. //depot/projects/smpng/sys/kern/subr_prf.c#41 integrate
.. //depot/projects/smpng/sys/kern/uipc_socket.c#74 integrate
.. //depot/projects/smpng/sys/kern/uipc_socket2.c#45 integrate
.. //depot/projects/smpng/sys/kern/vfs_lookup.c#31 integrate
.. //depot/projects/smpng/sys/kern/vfs_subr.c#110 integrate
.. //depot/projects/smpng/sys/modules/Makefile#105 integrate
.. //depot/projects/smpng/sys/modules/agp/Makefile#9 integrate
.. //depot/projects/smpng/sys/modules/geom/geom_bsd/Makefile#2 integrate
.. //depot/projects/smpng/sys/modules/pccard/Makefile#4 integrate
.. //depot/projects/smpng/sys/modules/snp/Makefile#5 integrate
.. //depot/projects/smpng/sys/net/if.c#74 integrate
.. //depot/projects/smpng/sys/net/if_ppp.c#35 integrate
.. //depot/projects/smpng/sys/net/if_sl.c#29 integrate
.. //depot/projects/smpng/sys/net/if_spppsubr.c#28 integrate
.. //depot/projects/smpng/sys/net/if_vlan.c#39 integrate
.. //depot/projects/smpng/sys/net/route.c#28 integrate
.. //depot/projects/smpng/sys/net/rtsock.c#50 integrate
.. //depot/projects/smpng/sys/netgraph/ng_pppoe.c#28 integrate
.. //depot/projects/smpng/sys/netinet/if_ether.c#39 integrate
.. //depot/projects/smpng/sys/netinet/in.c#28 integrate
.. //depot/projects/smpng/sys/netinet/in.h#32 integrate
.. //depot/projects/smpng/sys/netinet/in_rmx.c#12 integrate
.. //depot/projects/smpng/sys/netinet/ip_dummynet.c#40 integrate
.. //depot/projects/smpng/sys/netinet/ip_fastfwd.c#21 integrate
.. //depot/projects/smpng/sys/netinet/ip_fw2.c#59 integrate
.. //depot/projects/smpng/sys/netinet/ip_mroute.c#41 integrate
.. //depot/projects/smpng/sys/netinet/libalias/alias_db.c#2 integrate
.. //depot/projects/smpng/sys/netinet6/in6_rmx.c#9 integrate
.. //depot/projects/smpng/sys/netinet6/nd6_nbr.c#19 integrate
.. //depot/projects/smpng/sys/nfsclient/nfs_socket.c#37 integrate
.. //depot/projects/smpng/sys/pc98/conf/MAC#1 branch
.. //depot/projects/smpng/sys/pci/agp_ati.c#1 branch
.. //depot/projects/smpng/sys/pci/agp_nvidia.c#6 integrate
.. //depot/projects/smpng/sys/pci/agpreg.h#12 integrate
.. //depot/projects/smpng/sys/pci/if_dc.c#70 integrate
.. //depot/projects/smpng/sys/pci/if_pcn.c#36 integrate
.. //depot/projects/smpng/sys/pci/if_rl.c#58 integrate
.. //depot/projects/smpng/sys/pci/if_sf.c#38 integrate
.. //depot/projects/smpng/sys/pci/if_sis.c#53 integrate
.. //depot/projects/smpng/sys/pci/if_sisreg.h#16 integrate
.. //depot/projects/smpng/sys/pci/if_sk.c#49 integrate
.. //depot/projects/smpng/sys/pci/if_ste.c#39 integrate
.. //depot/projects/smpng/sys/pci/if_ti.c#48 integrate
.. //depot/projects/smpng/sys/pci/if_tl.c#29 integrate
.. //depot/projects/smpng/sys/pci/if_vr.c#37 integrate
.. //depot/projects/smpng/sys/pci/if_wb.c#32 integrate
.. //depot/projects/smpng/sys/pci/if_xl.c#62 integrate
.. //depot/projects/smpng/sys/powerpc/conf/MAC#1 branch
.. //depot/projects/smpng/sys/rpc/rpcclnt.c#10 integrate
.. //depot/projects/smpng/sys/security/mac/mac_vfs.c#10 integrate
.. //depot/projects/smpng/sys/security/mac_biba/mac_biba.c#37 integrate
.. //depot/projects/smpng/sys/security/mac_lomac/mac_lomac.c#28 integrate
.. //depot/projects/smpng/sys/security/mac_mls/mac_mls.c#35 integrate
.. //depot/projects/smpng/sys/security/mac_none/mac_none.c#13 integrate
.. //depot/projects/smpng/sys/security/mac_partition/mac_partition.c#8 integrate
.. //depot/projects/smpng/sys/security/mac_stub/mac_stub.c#16 integrate
.. //depot/projects/smpng/sys/security/mac_test/mac_test.c#33 integrate
.. //depot/projects/smpng/sys/sparc64/conf/MAC#1 branch
.. //depot/projects/smpng/sys/sys/bus.h#24 integrate
.. //depot/projects/smpng/sys/sys/conf.h#44 integrate
.. //depot/projects/smpng/sys/sys/gpt.h#6 integrate
.. //depot/projects/smpng/sys/sys/mchain.h#10 integrate
.. //depot/projects/smpng/sys/sys/snoop.h#9 integrate
.. //depot/projects/smpng/sys/sys/socket.h#28 integrate
.. //depot/projects/smpng/sys/sys/uuid.h#5 integrate
.. //depot/projects/smpng/sys/ufs/ffs/ffs_alloc.c#36 integrate
.. //depot/projects/smpng/sys/vm/swap_pager.c#59 integrate
.. //depot/projects/smpng/sys/vm/vm_mmap.c#55 integrate
Differences ...
==== //depot/projects/smpng/sys/alpha/alpha/busdma_machdep.c#29 (text+ko) ====
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/alpha/alpha/busdma_machdep.c,v 1.52 2005/09/15 17:09:42 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/alpha/alpha/busdma_machdep.c,v 1.53 2005/09/19 13:50:07 ticso Exp $");
#include <sys/param.h>
#include <sys/bus.h>
@@ -472,8 +472,6 @@
* Map the buffer buf into bus space using the dmamap map.
*/
-vm_offset_t alpha_XXX_dmamap_or = 1024UL*1024UL*1024UL; /*XXX */
-
int
bus_dmamap_load(bus_dma_tag_t dmat, bus_dmamap_t map, void *buf,
bus_size_t buflen, bus_dmamap_callback_t *callback,
@@ -581,7 +579,7 @@
}
if (sg->ds_len == 0) {
- sg->ds_addr = paddr | alpha_XXX_dmamap_or;
+ sg->ds_addr = paddr + chipset.dmoffset;
sg->ds_len = size;
} else if (paddr == nextpaddr) {
sg->ds_len += size;
@@ -591,7 +589,7 @@
seg++;
if (seg > dmat->nsegments)
break;
- sg->ds_addr = paddr | alpha_XXX_dmamap_or;
+ sg->ds_addr = paddr + chipset.dmoffset;
sg->ds_len = size;
}
vaddr += size;
@@ -671,7 +669,7 @@
* previous segment if possible.
*/
if (first) {
- segs[seg].ds_addr = curaddr | alpha_XXX_dmamap_or;
+ segs[seg].ds_addr = curaddr + chipset.dmoffset;
segs[seg].ds_len = sgsize;
first = 0;
} else {
@@ -683,7 +681,7 @@
else {
if (++seg >= dmat->nsegments)
break;
- segs[seg].ds_addr = curaddr | alpha_XXX_dmamap_or;
+ segs[seg].ds_addr = curaddr + chipset.dmoffset;;
segs[seg].ds_len = sgsize;
}
}
==== //depot/projects/smpng/sys/alpha/alpha/trap.c#59 (text+ko) ====
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/alpha/alpha/trap.c,v 1.123 2005/04/12 23:18:53 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/alpha/alpha/trap.c,v 1.124 2005/09/19 16:51:40 rwatson Exp $");
/* #include "opt_fix_unaligned_vax_fp.h" */
#include "opt_ddb.h"
@@ -1046,12 +1046,14 @@
* If we're supposed to be noisy, squawk now.
*/
if (doprint) {
+ mtx_lock(&Giant);
uprintf(
"pid %d (%s): unaligned access: va=0x%lx pc=0x%lx ra=0x%lx op=",
p->p_pid, p->p_comm, va, td->td_frame->tf_regs[FRAME_PC],
td->td_frame->tf_regs[FRAME_RA]);
uprintf(type,opcode);
uprintf("\n");
+ mtx_unlock(&Giant);
}
/*
==== //depot/projects/smpng/sys/alpha/include/chipset.h#2 (text+ko) ====
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: src/sys/alpha/include/chipset.h,v 1.11 2000/08/28 21:48:01 dfr Exp $
+ * $FreeBSD: src/sys/alpha/include/chipset.h,v 1.12 2005/09/19 13:50:07 ticso Exp $
*/
#ifndef _MACHINE_CHIPSET_H_
@@ -45,6 +45,17 @@
* Scatter-Gather map for ISA dma.
*/
struct sgmap* sgmap;
+
+ /*
+ * Scatter-Gather map for PCI dma.
+ */
+ struct sgmap* pci_sgmap;
+
+ /*
+ * direct map
+ */
+ long dmsize;
+ long dmoffset;
} alpha_chipset_t;
extern alpha_chipset_t chipset;
==== //depot/projects/smpng/sys/alpha/include/pmap.h#23 (text+ko) ====
@@ -39,12 +39,17 @@
* from: hp300: @(#)pmap.h 7.2 (Berkeley) 12/16/90
* from: @(#)pmap.h 7.4 (Berkeley) 5/12/91
* from: i386 pmap.h,v 1.54 1997/11/20 19:30:35 bde Exp
- * $FreeBSD: src/sys/alpha/include/pmap.h,v 1.34 2005/01/05 20:05:50 imp Exp $
+ * $FreeBSD: src/sys/alpha/include/pmap.h,v 1.36 2005/09/19 23:33:00 ticso Exp $
*/
#ifndef _MACHINE_PMAP_H_
#define _MACHINE_PMAP_H_
+#ifdef _KERNEL
+#include <machine/chipset.h>
+#include <sys/systm.h>
+#endif
+
/*
* Define meanings for a few software bits in the pte
*/
@@ -142,12 +147,16 @@
#define vtophys(va) pmap_kextract(((vm_offset_t) (va)))
-extern vm_offset_t alpha_XXX_dmamap_or;
-
static __inline vm_offset_t
alpha_XXX_dmamap(vm_offset_t va)
{
- return (pmap_kextract(va) | alpha_XXX_dmamap_or);
+ vm_offset_t pa = pmap_kextract(va);
+ if (pa >= chipset.dmsize)
+ panic ("driver uses alpha_XXX_dmamap() for an address that"
+ "is not within direct map");
+ if (chipset.pci_sgmap != NULL)
+ panic ("driver uses alpha_XXX_dmamap() on largemem system");
+ return (pa + chipset.dmoffset);
}
#endif /* _KERNEL */
==== //depot/projects/smpng/sys/alpha/mcbus/mcpcia.c#22 (text+ko) ====
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/alpha/mcbus/mcpcia.c,v 1.30 2005/01/05 20:05:51 imp Exp $");
+__FBSDID("$FreeBSD: src/sys/alpha/mcbus/mcpcia.c,v 1.31 2005/09/19 13:50:07 ticso Exp $");
#define __RMAN_RESOURCE_VISIBLE
#include <sys/param.h>
@@ -172,6 +172,7 @@
}
sc->mcpcia_inst = unit;
if ((xc = mcpcia_root) == NULL) {
+ chipset.pci_sgmap = NULL;
mcpcia_root = sc;
} else {
while (xc->next)
@@ -633,10 +634,12 @@
static void
mcpcia_sgmap_map(void *arg, bus_addr_t ba, vm_offset_t pa)
{
+ struct mcpcia_softc *sc;
u_int64_t *sgtable = arg;
int index = alpha_btop(ba - MCPCIA_ISA_SG_MAPPED_BASE);
if (pa) {
+ /* XXX */
if (pa > (1L<<32))
panic("mcpcia_sgmap_map: can't map address 0x%lx", pa);
sgtable[index] = ((pa >> 13) << 1) | 1;
@@ -644,12 +647,18 @@
sgtable[index] = 0;
}
alpha_mb();
- MCPCIA_SGTLB_INVALIDATE(mcpcia_eisa);
+ if ((struct sgmap*)sgtable == chipset.sgmap)
+ MCPCIA_SGTLB_INVALIDATE(mcpcia_eisa);
+ else {
+ for (sc = mcpcia_root; sc != NULL; sc = sc->next)
+ MCPCIA_SGTLB_INVALIDATE(sc);
+ }
}
static void
mcpcia_dma_init(struct mcpcia_softc *sc)
{
+ void *sgtable;
/*
* Disable all windows first.
@@ -672,7 +681,6 @@
*/
if (sc == mcpcia_eisa) {
- void *sgtable;
REGVAL(MCPCIA_W0_MASK(sc)) = MCPCIA_WMASK_8M;
sgtable = contigmalloc(8192, M_DEVBUF,
@@ -699,6 +707,8 @@
* Set up window 1 as a 2 GB Direct-mapped window starting at 2GB.
*/
+ chipset.dmsize = 2UL * 1024UL * 1024UL * 1024UL;
+ chipset.dmoffset = MCPCIA_DIRECT_MAPPED_BASE;
REGVAL(MCPCIA_W1_MASK(sc)) = MCPCIA_WMASK_2G;
REGVAL(MCPCIA_T1_BASE(sc)) = 0;
alpha_mb();
@@ -706,30 +716,33 @@
MCPCIA_DIRECT_MAPPED_BASE | MCPCIA_WBASE_EN;
alpha_mb();
- /*
- * When we get around to redoing the 'chipset' stuff to have more
- * than one sgmap handler...
- */
+ if (alpha_ptob(Maxmem) <= chipset.dmsize)
+ return;
-#if 0
/*
* Set up window 2 as a 1G SGMAP-mapped window starting at 1G.
*/
+ if (chipset.pci_sgmap == NULL) {
+ sgtable = contigmalloc(1048576, M_DEVBUF,
+ M_NOWAIT, 0, 1L<<34, 32<<10, 1L<<34);
+ if (sgtable == NULL) {
+ panic("mcpcia_dma_init: cannot allocate pci_sgmap");
+ /* NOTREACHED */
+ }
+ chipset.pci_sgmap = sgmap_map_create(MCPCIA_PCI_SG_MAPPED_BASE,
+ MCPCIA_PCI_SG_MAPPED_BASE + MCPCIA_PCI_SG_MAPPED_SIZE - 1,
+ mcpcia_sgmap_map, sgtable);
+ }
REGVAL(MCPCIA_W2_MASK(sc)) = MCPCIA_WMASK_1G;
REGVAL(MCPCIA_T2_BASE(sc)) =
- ccp->cc_pci_sgmap.aps_ptpa >> MCPCIA_TBASEX_SHIFT;
+ pmap_kextract((vm_offset_t)chipset.pci_sgmap) >>
+ MCPCIA_TBASEX_SHIFT;
alpha_mb();
REGVAL(MCPCIA_W2_BASE(sc)) =
MCPCIA_WBASE_EN | MCPCIA_WBASE_SG | MCPCIA_PCI_SG_MAPPED_BASE;
alpha_mb();
-#endif
-
- /* XXX XXX BEGIN XXX XXX */
- { /* XXX */
- alpha_XXX_dmamap_or = MCPCIA_DIRECT_MAPPED_BASE;/* XXX */
- } /* XXX */
- /* XXX XXX END XXX XXX */
+ MCPCIA_SGTLB_INVALIDATE(sc);
}
/*
==== //depot/projects/smpng/sys/alpha/osf1/osf1_ioctl.c#10 (text+ko) ====
@@ -30,9 +30,11 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/alpha/osf1/osf1_ioctl.c,v 1.13 2005/01/05 20:05:51 imp Exp $");
+__FBSDID("$FreeBSD: src/sys/alpha/osf1/osf1_ioctl.c,v 1.14 2005/09/19 16:51:40 rwatson Exp $");
#include <sys/param.h>
+#include <sys/lock.h>
+#include <sys/mutex.h>
#include <sys/systm.h>
#include <sys/fcntl.h>
#include <sys/filio.h>
@@ -110,9 +112,11 @@
break;
}
#ifdef IOCTL_DEBUG
+ mtx_lock(&Giant);
uprintf(
"OSF/1 IOCTL: group = %c, cmd = %d, len = %d, dir = %s\n",
group, cmd, len, dirstr);
+ mtx_unlock(&Giant);
#endif
a.fd = uap->fd;
==== //depot/projects/smpng/sys/alpha/osf1/osf1_misc.c#39 (text+ko) ====
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/alpha/osf1/osf1_misc.c,v 1.56 2005/07/07 19:16:30 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/alpha/osf1/osf1_misc.c,v 1.57 2005/09/19 16:51:40 rwatson Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -209,8 +209,10 @@
rpb_size = (unsigned long)&hwrpb->rpb_tbhint -
(unsigned long)hwrpb;
if(uap->nbytes < rpb_size){
+ mtx_lock(&Giant);
uprintf("nbytes = %ld, sizeof(struct rpb) = %ld\n",
uap->nbytes, rpb_size);
+ mtx_unlock(&Giant);
error = EINVAL;
}
else {
@@ -254,7 +256,9 @@
break;
}
default:
+ mtx_lock(&Giant);
uprintf("osf1_setsysinfo called with op=%ld\n", uap->op);
+ mtx_unlock(&Giant);
/*error = EINVAL;*/
}
return (error);
==== //depot/projects/smpng/sys/alpha/osf1/osf1_signal.c#27 (text+ko) ====
@@ -32,7 +32,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/alpha/osf1/osf1_signal.c,v 1.40 2005/02/13 17:37:20 sobomax Exp $");
+__FBSDID("$FreeBSD: src/sys/alpha/osf1/osf1_signal.c,v 1.41 2005/09/19 16:51:40 rwatson Exp $");
#include "opt_compat.h"
#ifndef COMPAT_43
@@ -40,6 +40,8 @@
#endif
#include <sys/param.h>
+#include <sys/lock.h>
+#include <sys/mutex.h>
#include <sys/systm.h>
#include <sys/sysproto.h>
#include <sys/signalvar.h>
@@ -145,9 +147,12 @@
{
bsa->sa_handler = osa->osa_handler;
- if (osf1_sigdbg)
+ if (osf1_sigdbg) {
+ mtx_lock(&Giant);
uprintf("%s(%d): handler @0x%lx \n", __FILE__, __LINE__,
(unsigned long)osa->osa_handler);
+ mtx_unlock(&Giant);
+ }
osf1_to_bsd_sigset(&osa->osa_mask, &bsa->sa_mask);
bsa->sa_flags = 0;
if ((osa->osa_flags & OSF1_SA_ONSTACK) != 0)
@@ -225,9 +230,12 @@
struct sigaction *nbsap;
int error;
- if (osf1_sigdbg && uap->sigtramp)
+ if (osf1_sigdbg && uap->sigtramp) {
+ mtx_lock(&Giant);
uprintf("osf1_sigaction: trampoline handler at %p\n",
uap->sigtramp);
+ mtx_unlock(&Giant);
+ }
td->td_md.osf_sigtramp = uap->sigtramp;
if (uap->nsa != NULL) {
if ((error = copyin(uap->nsa, &osa, sizeof(osa))) != 0)
@@ -315,8 +323,10 @@
#endif
error = kern_sigaction(td, signum, &nbsa, &obsa, 0);
if (error != 0) {
+ mtx_lock(&Giant);
DPRINTF("signal: sigaction failed: %d\n",
error);
+ mtx_unlock(&Giant);
td->td_retval[0] = -1;
return (error);
}
@@ -352,8 +362,11 @@
SIGEMPTYSET(sa.sa_mask);
sa.sa_flags = 0;
error = kern_sigaction(td, signum, &sa, NULL, 0);
- if (error != 0)
+ if (error != 0) {
+ mtx_lock(&Giant);
DPRINTF(("sigignore: sigaction failed\n"));
+ mtx_unlock(&Giant);
+ }
return (error);
}
@@ -544,8 +557,11 @@
/*
* Set up the registers to return to sigcode.
*/
- if (osf1_sigdbg)
+ if (osf1_sigdbg) {
+ mtx_lock(&Giant);
uprintf("attempting to call osf1 sigtramp\n");
+ mtx_unlock(&Giant);
+ }
frame->tf_regs[FRAME_PC] = (u_int64_t)td->td_md.osf_sigtramp;
frame->tf_regs[FRAME_A0] = sig;
frame->tf_regs[FRAME_A1] = code;
@@ -627,7 +643,9 @@
} */ *uap;
{
-/* uprintf("osf1_osigstack: oss = %p, nss = %p",uap->oss, uap->nss);
- uprintf(" stack ptr = %p\n",p->p_sigacts->ps_sigstk.ss_sp);*/
+/* mtx_lock(&Giant);
+ uprintf("osf1_osigstack: oss = %p, nss = %p",uap->oss, uap->nss);
+ uprintf(" stack ptr = %p\n",p->p_sigacts->ps_sigstk.ss_sp);
+ mtx_unlock(&Giant); */
return(osigstack(td, (struct osigstack_args *)uap));
}
==== //depot/projects/smpng/sys/alpha/pci/apecs.c#15 (text+ko) ====
@@ -55,7 +55,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/alpha/pci/apecs.c,v 1.27 2005/01/05 20:05:51 imp Exp $");
+__FBSDID("$FreeBSD: src/sys/alpha/pci/apecs.c,v 1.28 2005/09/19 13:50:07 ticso Exp $");
#define __RMAN_RESOURCE_VISIBLE
#include <sys/param.h>
@@ -235,6 +235,9 @@
chipset.sgmap = sgmap_map_create(APECS_SGMAP_BASE,
APECS_SGMAP_BASE + APECS_SGMAP_SIZE,
apecs_sgmap_map, sgtable);
+ chipset.pci_sgmap = NULL;
+ chipset.dmsize = 1UL * 1024UL * 1024UL * 1024UL;
+ chipset.dmoffset = 1UL * 1024UL * 1024UL * 1024UL;
}
void
==== //depot/projects/smpng/sys/alpha/pci/cia.c#19 (text+ko) ====
@@ -87,7 +87,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/alpha/pci/cia.c,v 1.44 2005/01/05 20:05:52 imp Exp $");
+__FBSDID("$FreeBSD: src/sys/alpha/pci/cia.c,v 1.45 2005/09/19 13:50:07 ticso Exp $");
#include "opt_cpu.h"
@@ -314,6 +314,9 @@
chipset.sgmap = sgmap_map_create(CIA_SGMAP_BASE,
CIA_SGMAP_BASE + CIA_SGMAP_SIZE - 1,
cia_sgmap_map, sgtable);
+ chipset.pci_sgmap = NULL;
+ chipset.dmsize = 1UL * 1024UL * 1024UL * 1024UL;
+ chipset.dmoffset = 1UL * 1024UL * 1024UL * 1024UL;
if (cia_ispyxis) {
/*
==== //depot/projects/smpng/sys/alpha/pci/irongate.c#6 (text+ko) ====
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/alpha/pci/irongate.c,v 1.9 2003/08/22 07:20:27 imp Exp $");
+__FBSDID("$FreeBSD: src/sys/alpha/pci/irongate.c,v 1.10 2005/09/19 13:50:07 ticso Exp $");
#include "opt_cpu.h"
@@ -123,7 +123,6 @@
initted = 1;
chipset = irongate_chipset;
- alpha_XXX_dmamap_or = 0UL;
bwx_init_space(&io_space, KV(IRONGATE_IO));
bwx_init_space(&mem_space, KV(IRONGATE_MEM));
@@ -166,6 +165,9 @@
chipset_dense = IRONGATE_MEM;
/* no s/g support in this chipset, must use bounce-buffers */
chipset.sgmap = NULL;
+ chipset.pci_sgmap = NULL;
+ chipset.dmsize = 4UL * 1024UL * 1024UL * 1024UL;
+ chipset.dmoffset = 0;
bus_generic_attach(dev);
==== //depot/projects/smpng/sys/alpha/pci/lca.c#8 (text+ko) ====
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/alpha/pci/lca.c,v 1.21 2005/01/31 23:07:42 ticso Exp $");
+__FBSDID("$FreeBSD: src/sys/alpha/pci/lca.c,v 1.22 2005/09/19 13:50:07 ticso Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -186,7 +186,9 @@
chipset.sgmap = sgmap_map_create(LCA_SGMAP_BASE,
LCA_SGMAP_BASE + LCA_SGMAP_SIZE,
lca_sgmap_map, sgtable);
-
+ chipset.pci_sgmap = NULL;
+ chipset.dmsize = 1UL * 1024UL * 1024UL * 1024UL;
+ chipset.dmoffset = 1UL * 1024UL * 1024UL * 1024UL;
REGVAL64(LCA_IOC_W_T_BASE0) = pmap_kextract((vm_offset_t) sgtable);
alpha_mb();
==== //depot/projects/smpng/sys/alpha/pci/t2.c#21 (text+ko) ====
@@ -51,7 +51,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/alpha/pci/t2.c,v 1.22 2005/01/05 20:05:52 imp Exp $");
+__FBSDID("$FreeBSD: src/sys/alpha/pci/t2.c,v 1.23 2005/09/19 13:50:07 ticso Exp $");
#define __RMAN_RESOURCE_VISIBLE
#include <sys/param.h>
@@ -252,6 +252,9 @@
chipset.sgmap = sgmap_map_create(T2_SGMAP_BASE,
T2_SGMAP_BASE + T2_SGMAP_SIZE,
t2_sgmap_map, sgtable);
+ chipset.pci_sgmap = NULL;
+ chipset.dmsize = 2UL * 1024UL * 1024UL * 1024UL;
+ chipset.dmoffset = 1UL * 1024UL * 1024UL * 1024UL;
}
static void
==== //depot/projects/smpng/sys/alpha/pci/tsunami.c#16 (text+ko) ====
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/alpha/pci/tsunami.c,v 1.24 2004/07/01 15:07:27 gallatin Exp $");
+__FBSDID("$FreeBSD: src/sys/alpha/pci/tsunami.c,v 1.25 2005/09/19 13:50:07 ticso Exp $");
#include "opt_cpu.h"
@@ -234,6 +234,7 @@
chipset.sgmap = sgmap_map_create(TSUNAMI_SGMAP_BASE,
TSUNAMI_SGMAP_BASE + TSUNAMI_SGMAP_SIZE,
tsunami_sgmap_map, sgtable);
+ chipset.pci_sgmap = NULL;
}
void
@@ -258,7 +259,8 @@
chipset = tsunami_chipset;
platform.pci_intr_enable = tsunami_intr_enable;
platform.pci_intr_disable = tsunami_intr_disable;
- alpha_XXX_dmamap_or = 2UL * 1024UL * 1024UL * 1024UL;
+ chipset.dmsize = 2UL * 1024UL * 1024UL * 1024UL;
+ chipset.dmoffset = 2UL * 1024UL * 1024UL * 1024UL;
if (platform.pci_intr_init)
platform.pci_intr_init();
==== //depot/projects/smpng/sys/alpha/tlsb/dwlpx.c#16 (text+ko) ====
@@ -56,7 +56,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/alpha/tlsb/dwlpx.c,v 1.28 2005/01/05 20:05:52 imp Exp $");
+__FBSDID("$FreeBSD: src/sys/alpha/tlsb/dwlpx.c,v 1.29 2005/09/19 13:50:07 ticso Exp $");
#define __RMAN_RESOURCE_VISIBLE
#include <sys/param.h>
@@ -707,7 +707,12 @@
* SGVA base: 0
*/
chipset.sgmap = sgmap_map_create(sgwbase, sgwend, dwlpx_sgmap_map, tbl);
+#else
+ chipset.sgmap = NULL;
#endif
+ chipset.pci_sgmap = NULL;
+ chipset.dmsize = 2UL * 1024UL * 1024UL * 1024UL;
+ chipset.dmoffset = DWLPx_DIRECT_MAPPED_BASE;
/*
* Set up DMA windows for this DWLPx.
@@ -729,12 +734,6 @@
sgwbase | PCIA_WBASE_W_EN | PCIA_WBASE_SG_EN;
}
alpha_mb();
-
- /* XXX XXX BEGIN XXX XXX */
- { /* XXX */
- alpha_XXX_dmamap_or = DWLPx_DIRECT_MAPPED_BASE; /* XXX */
- } /* XXX */
- /* XXX XXX END XXX XXX */
}
/*
==== //depot/projects/smpng/sys/amd64/amd64/mptable_pci.c#3 (text+ko) ====
@@ -33,7 +33,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/mptable_pci.c,v 1.2 2004/05/16 20:30:46 peter Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/mptable_pci.c,v 1.3 2005/09/18 01:42:43 imp Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -84,7 +84,7 @@
DEVMETHOD(bus_print_child, bus_generic_print_child),
DEVMETHOD(bus_read_ivar, legacy_pcib_read_ivar),
DEVMETHOD(bus_write_ivar, legacy_pcib_write_ivar),
- DEVMETHOD(bus_alloc_resource, bus_generic_alloc_resource),
+ DEVMETHOD(bus_alloc_resource, legacy_pcib_alloc_resource),
DEVMETHOD(bus_release_resource, bus_generic_release_resource),
DEVMETHOD(bus_activate_resource, bus_generic_activate_resource),
DEVMETHOD(bus_deactivate_resource, bus_generic_deactivate_resource),
==== //depot/projects/smpng/sys/amd64/amd64/trap.c#31 (text+ko) ====
@@ -38,7 +38,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/trap.c,v 1.290 2005/08/27 16:03:40 jkoshy Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/trap.c,v 1.291 2005/09/19 16:51:40 rwatson Exp $");
/*
* AMD64 Trap and System call handling
@@ -486,11 +486,13 @@
#ifdef DEBUG
if (type <= MAX_TRAP_MSG) {
+ mtx_lock(&Giant);
uprintf("fatal process exception: %s",
trap_msg[type]);
if ((type == T_PAGEFLT) || (type == T_PROTFLT))
uprintf(", fault VA = 0x%lx", frame.tf_addr);
uprintf("\n");
+ mtx_unlock(&Giant);
}
#endif
==== //depot/projects/smpng/sys/amd64/include/legacyvar.h#5 (text+ko) ====
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: src/sys/amd64/include/legacyvar.h,v 1.6 2005/04/15 18:41:32 peter Exp $
+ * $FreeBSD: src/sys/amd64/include/legacyvar.h,v 1.7 2005/09/18 01:42:43 imp Exp $
*/
#ifndef _MACHINE_LEGACYVAR_H_
@@ -49,5 +49,7 @@
int reg, u_int32_t data, int bytes);
int legacy_pcib_write_ivar(device_t dev, device_t child, int which,
uintptr_t value);
+struct resource *legacy_pcib_alloc_resource(device_t dev, device_t child,
+ int type, int *rid, u_long start, u_long end, u_long count, u_int flags);
#endif /* !_MACHINE_LEGACYVAR_H_ */
==== //depot/projects/smpng/sys/amd64/pci/pci_bus.c#13 (text+ko) ====
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/pci/pci_bus.c,v 1.113 2005/01/05 20:17:21 imp Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/pci/pci_bus.c,v 1.114 2005/09/18 01:42:43 imp Exp $");
#include "opt_cpu.h"
@@ -273,7 +273,7 @@
"Limit the host bridge memory to being above this address. Must be\n\
set at boot via a tunable.");
-static struct resource *
+struct resource *
legacy_pcib_alloc_resource(device_t dev, device_t child, int type, int *rid,
u_long start, u_long end, u_long count, u_int flags)
{
@@ -291,6 +291,8 @@
*/
if (type == SYS_RES_MEMORY && start == 0UL && end == ~0UL)
start = legacy_host_mem_start;
+ if (type == SYS_RES_IOPORT && start == 0UL && end == ~0UL)
+ start = 0x1000;
return (bus_generic_alloc_resource(dev, child, type, rid, start, end,
count, flags));
}
==== //depot/projects/smpng/sys/cam/cam_xpt.c#32 (text+ko) ====
@@ -28,7 +28,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/cam/cam_xpt.c,v 1.155 2005/07/01 15:21:29 avatar Exp $");
+__FBSDID("$FreeBSD: src/sys/cam/cam_xpt.c,v 1.156 2005/09/16 01:26:17 mjacob Exp $");
#include <sys/param.h>
#include <sys/bus.h>
@@ -45,6 +45,7 @@
#include <sys/lock.h>
#include <sys/mutex.h>
+#include <sys/sysctl.h>
#ifdef PC98
#include <pc98/pc98/pc98_machdep.h> /* geometry translation */
@@ -208,16 +209,31 @@
u_int mintags;
u_int maxtags;
};
+
+static int cam_srch_hi = 0;
+TUNABLE_INT("kern.cam.cam_srch_hi", &cam_srch_hi);
+static int sysctl_cam_search_luns(SYSCTL_HANDLER_ARGS);
+SYSCTL_PROC(_kern_cam, OID_AUTO, cam_srch_hi, CTLTYPE_INT|CTLFLAG_RW, 0, 0,
+ sysctl_cam_search_luns, "I",
+ "allow search above LUN 7 for SCSI3 and greater devices");
+
#define CAM_SCSI2_MAXLUN 8
/*
* If we're not quirked to search <= the first 8 luns
* and we are either quirked to search above lun 8,
- * or we're > SCSI-2, we can look for luns above lun 8.
+ * or we're > SCSI-2 and we've enabled hilun searching,
+ * or we're > SCSI-2 and the last lun was a success,
+ * we can look for luns above lun 8.
*/
-#define CAN_SRCH_HI(dv) \
+#define CAN_SRCH_HI_SPARSE(dv) \
+ (((dv->quirk->quirks & CAM_QUIRK_NOHILUNS) == 0) \
+ && ((dv->quirk->quirks & CAM_QUIRK_HILUNS) \
+ || (SID_ANSI_REV(&dv->inq_data) > SCSI_REV_2 && cam_srch_hi)))
+
+#define CAN_SRCH_HI_DENSE(dv) \
(((dv->quirk->quirks & CAM_QUIRK_NOHILUNS) == 0) \
&& ((dv->quirk->quirks & CAM_QUIRK_HILUNS) \
- || SID_ANSI_REV(&dv->inq_data) > SCSI_REV_2))
+ || (SID_ANSI_REV(&dv->inq_data) > SCSI_REV_2)))
typedef enum {
XPT_FLAG_OPEN = 0x01
@@ -5334,7 +5350,7 @@
s = splcam();
device = TAILQ_FIRST(&target->ed_entries);
if (device != NULL) {
- phl = CAN_SRCH_HI(device);
+ phl = CAN_SRCH_HI_SPARSE(device);
>>> TRUNCATED FOR MAIL (1000 lines) <<<
More information about the p4-projects
mailing list