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>