Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 21 Sep 2005 20:58:20 GMT
From:      John Baldwin <jhb@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 84075 for review
Message-ID:  <200509212058.j8LKwKFo099459@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=84075

Change 84075 by jhb@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) <<<



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