From owner-p4-projects@FreeBSD.ORG Tue Jul 1 11:40:30 2003 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 509EF37B404; Tue, 1 Jul 2003 11:40:29 -0700 (PDT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id CBC3E37B401 for ; Tue, 1 Jul 2003 11:40:28 -0700 (PDT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 4AD254400E for ; Tue, 1 Jul 2003 11:40:27 -0700 (PDT) (envelope-from jhb@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.6/8.12.6) with ESMTP id h61IeR0U089342 for ; Tue, 1 Jul 2003 11:40:27 -0700 (PDT) (envelope-from jhb@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.6/8.12.6/Submit) id h61IeO0E089309 for perforce@freebsd.org; Tue, 1 Jul 2003 11:40:24 -0700 (PDT) Date: Tue, 1 Jul 2003 11:40:24 -0700 (PDT) Message-Id: <200307011840.h61IeO0E089309@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to jhb@freebsd.org using -f From: John Baldwin To: Perforce Change Reviews Subject: PERFORCE change 33938 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 01 Jul 2003 18:40:30 -0000 http://perforce.freebsd.org/chv.cgi?CH=33938 Change 33938 by jhb@jhb_laptop on 2003/07/01 11:39:50 IFC @33935. Affected files ... .. //depot/projects/smpng/sys/alpha/alpha/busdma_machdep.c#18 integrate .. //depot/projects/smpng/sys/alpha/alpha/machdep.c#58 integrate .. //depot/projects/smpng/sys/alpha/alpha/pmap.c#47 integrate .. //depot/projects/smpng/sys/alpha/alpha/support.s#7 integrate .. //depot/projects/smpng/sys/alpha/include/bus.h#11 integrate .. //depot/projects/smpng/sys/alpha/isa/isa_dma.c#4 integrate .. //depot/projects/smpng/sys/alpha/mcbus/mcpcia.c#17 integrate .. //depot/projects/smpng/sys/amd64/amd64/busdma_machdep.c#3 integrate .. //depot/projects/smpng/sys/amd64/amd64/machdep.c#9 integrate .. //depot/projects/smpng/sys/amd64/amd64/pmap.c#5 integrate .. //depot/projects/smpng/sys/amd64/conf/GENERIC#6 integrate .. //depot/projects/smpng/sys/amd64/include/bus_dma.h#5 integrate .. //depot/projects/smpng/sys/boot/common/loader.8#24 integrate .. //depot/projects/smpng/sys/boot/ficl/Makefile#6 integrate .. //depot/projects/smpng/sys/boot/forth/loader.conf#19 integrate .. //depot/projects/smpng/sys/boot/i386/btx/lib/Makefile#5 integrate .. //depot/projects/smpng/sys/boot/i386/kgzldr/Makefile#9 integrate .. //depot/projects/smpng/sys/boot/pc98/btx/lib/Makefile#4 integrate .. //depot/projects/smpng/sys/boot/pc98/kgzldr/Makefile#7 integrate .. //depot/projects/smpng/sys/compat/linux/linux_ioctl.c#28 integrate .. //depot/projects/smpng/sys/conf/NOTES#47 integrate .. //depot/projects/smpng/sys/conf/files#80 integrate .. //depot/projects/smpng/sys/conf/files.powerpc#14 integrate .. //depot/projects/smpng/sys/conf/files.sparc64#29 integrate .. //depot/projects/smpng/sys/conf/options.i386#28 integrate .. //depot/projects/smpng/sys/conf/options.pc98#29 integrate .. //depot/projects/smpng/sys/conf/options.sparc64#7 integrate .. //depot/projects/smpng/sys/dev/aac/aac.c#27 integrate .. //depot/projects/smpng/sys/dev/aac/aac_pci.c#22 integrate .. //depot/projects/smpng/sys/dev/acpica/acpi_ec.c#17 integrate .. //depot/projects/smpng/sys/dev/acpica/acpi_pci.c#4 integrate .. //depot/projects/smpng/sys/dev/advansys/adv_eisa.c#4 integrate .. //depot/projects/smpng/sys/dev/advansys/adv_isa.c#4 integrate .. //depot/projects/smpng/sys/dev/advansys/adv_pci.c#4 integrate .. //depot/projects/smpng/sys/dev/advansys/advansys.c#7 integrate .. //depot/projects/smpng/sys/dev/advansys/adw_pci.c#4 integrate .. //depot/projects/smpng/sys/dev/advansys/adwcam.c#7 integrate .. //depot/projects/smpng/sys/dev/aha/aha.c#9 integrate .. //depot/projects/smpng/sys/dev/aha/aha_isa.c#4 integrate .. //depot/projects/smpng/sys/dev/aha/aha_mca.c#4 integrate .. //depot/projects/smpng/sys/dev/ahb/ahb.c#8 integrate .. //depot/projects/smpng/sys/dev/aic7xxx/ahc_eisa.c#8 integrate .. //depot/projects/smpng/sys/dev/aic7xxx/ahc_pci.c#10 integrate .. //depot/projects/smpng/sys/dev/aic7xxx/ahd_pci.c#8 integrate .. //depot/projects/smpng/sys/dev/aic7xxx/aic79xx.c#15 integrate .. //depot/projects/smpng/sys/dev/aic7xxx/aic79xx.h#12 integrate .. //depot/projects/smpng/sys/dev/aic7xxx/aic79xx.seq#10 integrate .. //depot/projects/smpng/sys/dev/aic7xxx/aic79xx_inline.h#10 integrate .. //depot/projects/smpng/sys/dev/aic7xxx/aic79xx_osm.h#9 integrate .. //depot/projects/smpng/sys/dev/aic7xxx/aic79xx_pci.c#12 integrate .. //depot/projects/smpng/sys/dev/aic7xxx/aic7xxx_osm.h#10 integrate .. //depot/projects/smpng/sys/dev/amd/amd.c#6 integrate .. //depot/projects/smpng/sys/dev/amr/amr_pci.c#10 integrate .. //depot/projects/smpng/sys/dev/an/if_an.c#31 integrate .. //depot/projects/smpng/sys/dev/an/if_an_pci.c#13 integrate .. //depot/projects/smpng/sys/dev/ata/ata-dma.c#30 integrate .. //depot/projects/smpng/sys/dev/ath/if_ath.c#2 integrate .. //depot/projects/smpng/sys/dev/ath/if_ath_pci.c#2 integrate .. //depot/projects/smpng/sys/dev/awi/awi.c#14 integrate .. //depot/projects/smpng/sys/dev/awi/awi_wep.c#11 integrate .. //depot/projects/smpng/sys/dev/awi/awi_wicfg.c#8 integrate .. //depot/projects/smpng/sys/dev/awi/awivar.h#4 integrate .. //depot/projects/smpng/sys/dev/awi/if_awi_pccard.c#7 integrate .. //depot/projects/smpng/sys/dev/buslogic/bt.c#10 integrate .. //depot/projects/smpng/sys/dev/buslogic/bt_eisa.c#5 integrate .. //depot/projects/smpng/sys/dev/buslogic/bt_isa.c#4 integrate .. //depot/projects/smpng/sys/dev/buslogic/bt_mca.c#4 integrate .. //depot/projects/smpng/sys/dev/buslogic/bt_pci.c#4 integrate .. //depot/projects/smpng/sys/dev/cardbus/cardbus.c#15 integrate .. //depot/projects/smpng/sys/dev/ciss/ciss.c#17 integrate .. //depot/projects/smpng/sys/dev/ct/ct_isa.c#6 integrate .. //depot/projects/smpng/sys/dev/dpt/dpt_eisa.c#4 integrate .. //depot/projects/smpng/sys/dev/dpt/dpt_isa.c#4 integrate .. //depot/projects/smpng/sys/dev/dpt/dpt_pci.c#4 integrate .. //depot/projects/smpng/sys/dev/dpt/dpt_scsi.c#8 integrate .. //depot/projects/smpng/sys/dev/em/if_em.c#23 integrate .. //depot/projects/smpng/sys/dev/en/midway.c#16 integrate .. //depot/projects/smpng/sys/dev/fatm/if_fatm.c#2 integrate .. //depot/projects/smpng/sys/dev/firewire/firewire.c#20 integrate .. //depot/projects/smpng/sys/dev/firewire/firewirereg.h#10 integrate .. //depot/projects/smpng/sys/dev/firewire/fwdma.c#2 integrate .. //depot/projects/smpng/sys/dev/firewire/fwmem.c#10 integrate .. //depot/projects/smpng/sys/dev/firewire/fwohci.c#18 integrate .. //depot/projects/smpng/sys/dev/firewire/fwohci_pci.c#14 integrate .. //depot/projects/smpng/sys/dev/firewire/sbp.c#20 integrate .. //depot/projects/smpng/sys/dev/fxp/if_fxp.c#39 integrate .. //depot/projects/smpng/sys/dev/gem/if_gem.c#14 integrate .. //depot/projects/smpng/sys/dev/gem/if_gem_pci.c#9 integrate .. //depot/projects/smpng/sys/dev/hatm/if_hatm.c#2 integrate .. //depot/projects/smpng/sys/dev/hifn/hifn7751.c#9 integrate .. //depot/projects/smpng/sys/dev/hme/if_hme.c#11 integrate .. //depot/projects/smpng/sys/dev/hme/if_hme_pci.c#7 integrate .. //depot/projects/smpng/sys/dev/ida/ida.c#11 integrate .. //depot/projects/smpng/sys/dev/ida/ida_eisa.c#5 integrate .. //depot/projects/smpng/sys/dev/ida/ida_pci.c#5 integrate .. //depot/projects/smpng/sys/dev/iir/iir.c#7 integrate .. //depot/projects/smpng/sys/dev/iir/iir_pci.c#7 integrate .. //depot/projects/smpng/sys/dev/ips/ips.c#3 integrate .. //depot/projects/smpng/sys/dev/ips/ips_commands.c#3 integrate .. //depot/projects/smpng/sys/dev/ips/ips_disk.c#2 integrate .. //depot/projects/smpng/sys/dev/ips/ips_ioctl.c#3 integrate .. //depot/projects/smpng/sys/dev/ips/ips_pci.c#3 integrate .. //depot/projects/smpng/sys/dev/isp/isp_pci.c#20 integrate .. //depot/projects/smpng/sys/dev/isp/isp_sbus.c#5 integrate .. //depot/projects/smpng/sys/dev/lnc/if_lnc_cbus.c#4 integrate .. //depot/projects/smpng/sys/dev/lnc/if_lnc_isa.c#4 integrate .. //depot/projects/smpng/sys/dev/lnc/if_lnc_pci.c#4 integrate .. //depot/projects/smpng/sys/dev/mlx/mlx.c#10 integrate .. //depot/projects/smpng/sys/dev/mlx/mlx_pci.c#4 integrate .. //depot/projects/smpng/sys/dev/mly/mly.c#16 integrate .. //depot/projects/smpng/sys/dev/mpt/mpt_pci.c#5 integrate .. //depot/projects/smpng/sys/dev/pci/pci.c#28 integrate .. //depot/projects/smpng/sys/dev/pci/pci_if.m#3 integrate .. //depot/projects/smpng/sys/dev/pci/pci_private.h#7 integrate .. //depot/projects/smpng/sys/dev/ray/if_ray.c#8 integrate .. //depot/projects/smpng/sys/dev/sound/isa/ad1816.c#10 integrate .. //depot/projects/smpng/sys/dev/sound/isa/ess.c#7 integrate .. //depot/projects/smpng/sys/dev/sound/isa/mss.c#13 integrate .. //depot/projects/smpng/sys/dev/sound/isa/sb16.c#9 integrate .. //depot/projects/smpng/sys/dev/sound/isa/sb8.c#7 integrate .. //depot/projects/smpng/sys/dev/sound/pci/als4000.c#8 integrate .. //depot/projects/smpng/sys/dev/sound/pci/au88x0.c#2 integrate .. //depot/projects/smpng/sys/dev/sound/pci/aureal.c#5 integrate .. //depot/projects/smpng/sys/dev/sound/pci/cmi.c#14 integrate .. //depot/projects/smpng/sys/dev/sound/pci/cs4281.c#7 integrate .. //depot/projects/smpng/sys/dev/sound/pci/csapcm.c#4 integrate .. //depot/projects/smpng/sys/dev/sound/pci/ds1.c#9 integrate .. //depot/projects/smpng/sys/dev/sound/pci/emu10k1.c#12 integrate .. //depot/projects/smpng/sys/dev/sound/pci/es137x.c#7 integrate .. //depot/projects/smpng/sys/dev/sound/pci/fm801.c#8 integrate .. //depot/projects/smpng/sys/dev/sound/pci/ich.c#20 integrate .. //depot/projects/smpng/sys/dev/sound/pci/maestro.c#7 integrate .. //depot/projects/smpng/sys/dev/sound/pci/maestro3.c#13 integrate .. //depot/projects/smpng/sys/dev/sound/pci/solo.c#6 integrate .. //depot/projects/smpng/sys/dev/sound/pci/t4dwave.c#12 integrate .. //depot/projects/smpng/sys/dev/sound/pci/via8233.c#7 integrate .. //depot/projects/smpng/sys/dev/sound/pci/via82c686.c#12 integrate .. //depot/projects/smpng/sys/dev/sound/pci/vibes.c#7 integrate .. //depot/projects/smpng/sys/dev/sound/usb/uaudio_pcm.c#3 integrate .. //depot/projects/smpng/sys/dev/sym/sym_hipd.c#13 integrate .. //depot/projects/smpng/sys/dev/trm/trm.c#9 integrate .. //depot/projects/smpng/sys/dev/twe/twe_freebsd.c#15 integrate .. //depot/projects/smpng/sys/dev/tx/if_tx.c#10 integrate .. //depot/projects/smpng/sys/dev/ubsec/ubsec.c#13 integrate .. //depot/projects/smpng/sys/dev/usb/umct.c#1 branch .. //depot/projects/smpng/sys/dev/usb/usbdevs#34 integrate .. //depot/projects/smpng/sys/dev/usb/usbdevs.h#35 integrate .. //depot/projects/smpng/sys/dev/usb/usbdevs_data.h#35 integrate .. //depot/projects/smpng/sys/dev/usb/uscanner.c#12 integrate .. //depot/projects/smpng/sys/dev/vinum/vinumconfig.c#14 integrate .. //depot/projects/smpng/sys/dev/wds/wd7000.c#4 integrate .. //depot/projects/smpng/sys/dev/wi/if_wi.c#52 integrate .. //depot/projects/smpng/sys/dev/wi/if_wi_pccard.c#18 integrate .. //depot/projects/smpng/sys/dev/wi/if_wi_pci.c#13 integrate .. //depot/projects/smpng/sys/dev/wi/if_wivar.h#14 integrate .. //depot/projects/smpng/sys/fs/msdosfs/msdosfs_vfsops.c#19 integrate .. //depot/projects/smpng/sys/i386/acpica/acpi_wakeup.c#17 integrate .. //depot/projects/smpng/sys/i386/i386/busdma_machdep.c#20 integrate .. //depot/projects/smpng/sys/i386/i386/genassym.c#24 integrate .. //depot/projects/smpng/sys/i386/i386/machdep.c#61 integrate .. //depot/projects/smpng/sys/i386/i386/mp_machdep.c#47 integrate .. //depot/projects/smpng/sys/i386/i386/pmap.c#40 integrate .. //depot/projects/smpng/sys/i386/i386/swtch.s#18 integrate .. //depot/projects/smpng/sys/i386/include/bus_dma.h#7 integrate .. //depot/projects/smpng/sys/i386/include/md_var.h#20 integrate .. //depot/projects/smpng/sys/i386/include/pcpu.h#6 integrate .. //depot/projects/smpng/sys/i4b/layer1/itjc/i4b_itjc_pci.c#9 integrate .. //depot/projects/smpng/sys/ia64/ia64/busdma_machdep.c#17 integrate .. //depot/projects/smpng/sys/ia64/ia64/machdep.c#59 integrate .. //depot/projects/smpng/sys/ia64/ia64/pmap.c#48 integrate .. //depot/projects/smpng/sys/ia64/ia64/vm_machdep.c#28 integrate .. //depot/projects/smpng/sys/ia64/include/bus.h#11 integrate .. //depot/projects/smpng/sys/ia64/isa/isa_dma.c#4 integrate .. //depot/projects/smpng/sys/isa/psm.c#16 integrate .. //depot/projects/smpng/sys/kern/init_sysent.c#30 integrate .. //depot/projects/smpng/sys/kern/kern_intr.c#32 integrate .. //depot/projects/smpng/sys/kern/kern_sig.c#71 integrate .. //depot/projects/smpng/sys/kern/kern_synch.c#53 integrate .. //depot/projects/smpng/sys/kern/kern_thread.c#38 integrate .. //depot/projects/smpng/sys/kern/sched_ule.c#13 integrate .. //depot/projects/smpng/sys/kern/subr_trap.c#55 integrate .. //depot/projects/smpng/sys/kern/syscalls.c#30 integrate .. //depot/projects/smpng/sys/kern/syscalls.master#29 integrate .. //depot/projects/smpng/sys/kern/vfs_mount.c#16 integrate .. //depot/projects/smpng/sys/modules/Makefile#56 integrate .. //depot/projects/smpng/sys/modules/ath_hal/Makefile#2 integrate .. //depot/projects/smpng/sys/modules/umct/Makefile#1 branch .. //depot/projects/smpng/sys/modules/wlan/Makefile#2 integrate .. //depot/projects/smpng/sys/net/if_ieee80211.h#5 delete .. //depot/projects/smpng/sys/net/if_ieee80211subr.c#4 delete .. //depot/projects/smpng/sys/net80211/ieee80211.c#2 integrate .. //depot/projects/smpng/sys/net80211/ieee80211_ioctl.c#2 integrate .. //depot/projects/smpng/sys/net80211/ieee80211_node.c#2 integrate .. //depot/projects/smpng/sys/netinet/ip_dummynet.c#18 integrate .. //depot/projects/smpng/sys/netinet/ip_fw2.c#15 integrate .. //depot/projects/smpng/sys/netipsec/ipsec.c#5 integrate .. //depot/projects/smpng/sys/netipsec/ipsec_output.c#6 integrate .. //depot/projects/smpng/sys/netipsec/key.c#4 integrate .. //depot/projects/smpng/sys/netipsec/xform_ah.c#3 integrate .. //depot/projects/smpng/sys/netipsec/xform_esp.c#3 integrate .. //depot/projects/smpng/sys/netipsec/xform_ipcomp.c#3 integrate .. //depot/projects/smpng/sys/opencrypto/crypto.c#9 integrate .. //depot/projects/smpng/sys/opencrypto/cryptodev.h#5 integrate .. //depot/projects/smpng/sys/opencrypto/cryptosoft.c#4 integrate .. //depot/projects/smpng/sys/pc98/i386/machdep.c#55 integrate .. //depot/projects/smpng/sys/pci/if_rl.c#31 integrate .. //depot/projects/smpng/sys/pci/if_sis.c#27 integrate .. //depot/projects/smpng/sys/pci/if_xl.c#29 integrate .. //depot/projects/smpng/sys/powerpc/include/bus.h#11 integrate .. //depot/projects/smpng/sys/powerpc/powermac/grackle.c#1 branch .. //depot/projects/smpng/sys/powerpc/powermac/gracklevar.h#1 branch .. //depot/projects/smpng/sys/powerpc/powermac/hrowpic.c#1 branch .. //depot/projects/smpng/sys/powerpc/powermac/hrowpicvar.h#1 branch .. //depot/projects/smpng/sys/powerpc/powermac/macio.c#6 integrate .. //depot/projects/smpng/sys/powerpc/powerpc/busdma_machdep.c#13 integrate .. //depot/projects/smpng/sys/powerpc/powerpc/machdep.c#40 integrate .. //depot/projects/smpng/sys/powerpc/powerpc/pmap.c#28 integrate .. //depot/projects/smpng/sys/sparc64/conf/GENERIC#31 integrate .. //depot/projects/smpng/sys/sparc64/conf/NOTES#3 integrate .. //depot/projects/smpng/sys/sparc64/ebus/ebus.c#8 integrate .. //depot/projects/smpng/sys/sparc64/include/bus.h#17 integrate .. //depot/projects/smpng/sys/sparc64/include/ofw_bus.h#5 integrate .. //depot/projects/smpng/sys/sparc64/isa/isa.c#8 integrate .. //depot/projects/smpng/sys/sparc64/isa/ofw_isa.c#4 integrate .. //depot/projects/smpng/sys/sparc64/isa/ofw_isa.h#2 integrate .. //depot/projects/smpng/sys/sparc64/pci/apb.c#5 integrate .. //depot/projects/smpng/sys/sparc64/pci/ofw_pci.c#11 integrate .. //depot/projects/smpng/sys/sparc64/pci/ofw_pci.h#6 integrate .. //depot/projects/smpng/sys/sparc64/pci/ofw_pci_if.m#2 integrate .. //depot/projects/smpng/sys/sparc64/pci/ofw_pcib.c#1 branch .. //depot/projects/smpng/sys/sparc64/pci/ofw_pcib_subr.c#1 branch .. //depot/projects/smpng/sys/sparc64/pci/ofw_pcib_subr.h#1 branch .. //depot/projects/smpng/sys/sparc64/pci/ofw_pcibus.c#1 branch .. //depot/projects/smpng/sys/sparc64/pci/psycho.c#24 integrate .. //depot/projects/smpng/sys/sparc64/pci/psychovar.h#9 integrate .. //depot/projects/smpng/sys/sparc64/sbus/sbus.c#12 integrate .. //depot/projects/smpng/sys/sparc64/sparc64/bus_machdep.c#18 integrate .. //depot/projects/smpng/sys/sparc64/sparc64/iommu.c#18 integrate .. //depot/projects/smpng/sys/sparc64/sparc64/machdep.c#52 integrate .. //depot/projects/smpng/sys/sparc64/sparc64/ofw_bus.c#6 integrate .. //depot/projects/smpng/sys/sparc64/sparc64/pmap.c#39 integrate .. //depot/projects/smpng/sys/sparc64/sparc64/sparcbus_if.m#3 delete .. //depot/projects/smpng/sys/sys/kse.h#11 integrate .. //depot/projects/smpng/sys/sys/mount.h#22 integrate .. //depot/projects/smpng/sys/sys/param.h#43 integrate .. //depot/projects/smpng/sys/sys/proc.h#93 integrate .. //depot/projects/smpng/sys/sys/smp.h#7 integrate .. //depot/projects/smpng/sys/sys/syscall.h#30 integrate .. //depot/projects/smpng/sys/sys/syscall.mk#30 integrate .. //depot/projects/smpng/sys/sys/sysproto.h#32 integrate .. //depot/projects/smpng/sys/vm/pmap.h#19 integrate .. //depot/projects/smpng/sys/vm/vm_kern.c#15 integrate .. //depot/projects/smpng/sys/vm/vm_map.c#39 integrate .. //depot/projects/smpng/sys/vm/vm_map.h#19 integrate .. //depot/projects/smpng/sys/vm/vm_page.c#39 integrate .. //depot/projects/smpng/sys/vm/vm_pageout.c#33 integrate Differences ... ==== //depot/projects/smpng/sys/alpha/alpha/busdma_machdep.c#18 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/alpha/alpha/busdma_machdep.c,v 1.39 2003/06/27 08:31:47 scottl Exp $"); +__FBSDID("$FreeBSD: src/sys/alpha/alpha/busdma_machdep.c,v 1.40 2003/07/01 15:51:50 scottl Exp $"); #include #include @@ -64,6 +64,8 @@ int flags; int ref_count; int map_count; + bus_dma_lock_t *lockfunc; + void *lockfuncarg; }; struct bounce_page { @@ -94,7 +96,6 @@ vm_offset_t busaddress; /* address in bus space */ bus_dmamap_callback_t *callback; void *callback_arg; - struct mtx *callback_mtx; void *sgmaphandle; /* handle into sgmap */ STAILQ_ENTRY(bus_dmamap) links; }; @@ -129,6 +130,46 @@ return (retval); } +/* + * Convenience function for manipulating driver locks from busdma (during + * busdma_swi, for example). Drivers that don't provide their own locks + * should specify &Giant to dmat->lockfuncarg. Drivers that use their own + * non-mutex locking scheme don't have to use this at all. + */ +void +busdma_lock_mutex(void *arg, bus_dma_lock_op_t op) +{ + struct mtx *dmtx; + + dmtx = (struct mtx *)arg; + switch (op) { + case BUS_DMA_LOCK: + mtx_lock(dmtx); + break; + case BUS_DMA_UNLOCK: + mtx_unlock(dmtx); + break; + default: + panic("Unknown operation 0x%x for busdma_lock_mutex!", op); + } +} + +/* + * dflt_lock should never get called. It gets put into the dma tag when + * lockfunc == NULL, which is only valid if the maps that are associated + * with the tag are meant to never be defered. + * XXX Should have a way to identify which driver is responsible here. + */ +static void +dflt_lock(void *arg, bus_dma_lock_op_t op) +{ +#ifdef INVARIANTS + panic("driver error: busdma dflt_lock called"); +#else + printf("DRIVER_ERROR: busdma dflt_lock called\n"); +#endif +} + #define BUS_DMA_MIN_ALLOC_COMP BUS_DMA_BUS4 /* * Allocate a device specific dma_tag. @@ -138,7 +179,8 @@ bus_size_t boundary, bus_addr_t lowaddr, bus_addr_t highaddr, bus_dma_filter_t *filter, void *filterarg, bus_size_t maxsize, int nsegments, - bus_size_t maxsegsz, int flags, bus_dma_tag_t *dmat) + bus_size_t maxsegsz, int flags, bus_dma_lock_t *lockfunc, + void *lockfuncarg, bus_dma_tag_t *dmat) { bus_dma_tag_t newtag; int error = 0; @@ -163,6 +205,13 @@ newtag->flags = flags; newtag->ref_count = 1; /* Count ourself */ newtag->map_count = 0; + if (lockfunc != NULL) { + newtag->lockfunc = lockfunc; + newtag->lockfuncarg = lockfuncarg; + } else { + newtag->lockfunc = dflt_lock; + newtag->lockfuncarg = NULL; + } /* Take into account any restrictions imposed by our parent tag */ if (parent != NULL) { @@ -926,18 +975,18 @@ void busdma_swi(void) { + bus_dma_tag_t dmat; struct bus_dmamap *map; mtx_lock(&bounce_lock); while ((map = STAILQ_FIRST(&bounce_map_callbacklist)) != NULL) { STAILQ_REMOVE_HEAD(&bounce_map_callbacklist, links); mtx_unlock(&bounce_lock); - if (map->callback_mtx != NULL) - mtx_lock(map->callback_mtx); + dmat = map->dmat; + (dmat->lockfunc)(dmat->lockfuncarg, BUS_DMA_LOCK); bus_dmamap_load(map->dmat, map, map->buf, map->buflen, map->callback, map->callback_arg, /*flags*/0); - if (map->callback_mtx != NULL) - mtx_unlock(map->callback_mtx); + (dmat->lockfunc)(dmat->lockfuncarg, BUS_DMA_UNLOCK); mtx_lock(&bounce_lock); } mtx_unlock(&bounce_lock); ==== //depot/projects/smpng/sys/alpha/alpha/machdep.c#58 (text+ko) ==== @@ -88,7 +88,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/alpha/alpha/machdep.c,v 1.203 2003/06/10 16:50:43 obrien Exp $"); +__FBSDID("$FreeBSD: src/sys/alpha/alpha/machdep.c,v 1.204 2003/06/28 06:34:07 davidxu Exp $"); #include "opt_compat.h" #include "opt_ddb.h" @@ -1462,6 +1462,25 @@ } /* + * Build siginfo_t for SA thread + */ +void +thread_siginfo(int sig, u_long code, siginfo_t *si) +{ + struct proc *p; + struct thread *td; + + td = curthread; + p = td->td_proc; + PROC_LOCK_ASSERT(p, MA_OWNED); + + bzero(si, sizeof(*si)); + si->si_signo = sig; + si->si_code = code; + /* XXXKSE fill other fields */ +} + +/* * System call to cleanup state after a signal * has been taken. Reset signal mask and * stack state from context left by sendsig (above). ==== //depot/projects/smpng/sys/alpha/alpha/pmap.c#47 (text+ko) ==== @@ -148,7 +148,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/alpha/alpha/pmap.c,v 1.126 2003/06/18 02:57:38 alc Exp $"); +__FBSDID("$FreeBSD: src/sys/alpha/alpha/pmap.c,v 1.128 2003/06/29 21:20:02 alc Exp $"); #include #include @@ -330,8 +330,6 @@ static void alpha_protection_init(void); static void pmap_changebit(vm_page_t m, int bit, boolean_t setem); -static vm_page_t pmap_enter_quick(pmap_t pmap, vm_offset_t va, - vm_page_t m, vm_page_t mpte); static int pmap_remove_pte(pmap_t pmap, pt_entry_t* ptq, vm_offset_t sva); static void pmap_remove_page(struct pmap *pmap, vm_offset_t va); static int pmap_remove_entry(struct pmap *pmap, vm_page_t m, vm_offset_t va); @@ -1973,7 +1971,7 @@ * but is *MUCH* faster than pmap_enter... */ -static vm_page_t +vm_page_t pmap_enter_quick(pmap_t pmap, vm_offset_t va, vm_page_t m, vm_page_t mpte) { register pt_entry_t *pte; @@ -2090,18 +2088,18 @@ if (pmap == NULL || object == NULL) return; - + VM_OBJECT_LOCK(object); psize = alpha_btop(size); if ((object->type != OBJT_VNODE) || ((limit & MAP_PREFAULT_PARTIAL) && (psize > MAX_INIT_PT) && (object->resident_page_count > MAX_INIT_PT))) { - return; + goto unlock_return; } if (psize + pindex > object->size) { if (object->size < pindex) - return; + goto unlock_return; psize = object->size - pindex; } @@ -2141,8 +2139,10 @@ vm_page_deactivate(p); vm_page_busy(p); vm_page_unlock_queues(); + VM_OBJECT_UNLOCK(object); mpte = pmap_enter_quick(pmap, addr + alpha_ptob(tmpidx), p, mpte); + VM_OBJECT_LOCK(object); vm_page_lock_queues(); vm_page_wakeup(p); } @@ -2173,15 +2173,18 @@ vm_page_deactivate(p); vm_page_busy(p); vm_page_unlock_queues(); + VM_OBJECT_UNLOCK(object); mpte = pmap_enter_quick(pmap, addr + alpha_ptob(tmpidx), p, mpte); + VM_OBJECT_LOCK(object); vm_page_lock_queues(); vm_page_wakeup(p); } vm_page_unlock_queues(); } } - return; +unlock_return: + VM_OBJECT_UNLOCK(object); } /* ==== //depot/projects/smpng/sys/alpha/alpha/support.s#7 (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/alpha/support.s,v 1.13 2003/04/04 17:29:54 des Exp $ + * $FreeBSD: src/sys/alpha/alpha/support.s,v 1.14 2003/06/29 17:14:42 marcel Exp $ */ /* @@ -84,7 +84,27 @@ mov zero, v0 RET END(suword) - + + LEAF(suword32, 2) + LDGP(pv) + + ldiq t0, VM_MAXUSER_ADDRESS /* verify address validity */ + cmpult a0, t0, t1 + beq t1, fusufault + + lda t0, fusufault /* trap faults */ + ldq t2, PC_CURTHREAD(pcpup) + ldq t2, TD_PCB(t2) + stq t0, PCB_ONFAULT(t2) + + stl a1, 0(a0) /* try the store */ + + stq zero, PCB_ONFAULT(t2) /* clean up */ + + mov zero, v0 + RET + END(suword32) + LEAF(subyte, 1) LDGP(pv) @@ -130,6 +150,25 @@ RET END(fuword) + LEAF(fuword32, 1) + LDGP(pv) + + ldiq t0, VM_MAXUSER_ADDRESS /* verify address validity */ + cmpult a0, t0, t1 + beq t1, fusufault + + lda t0, fusufault /* trap faults */ + ldq t2, PC_CURTHREAD(pcpup) + ldq t2, TD_PCB(t2) + stq t0, PCB_ONFAULT(t2) + + ldl v0, 0(a0) /* get the word containing our byte */ + + stq zero, PCB_ONFAULT(t2) /* clean up */ + + RET + END(fuword32) + LEAF(fubyte, 1) LDGP(pv) ==== //depot/projects/smpng/sys/alpha/include/bus.h#11 (text+ko) ==== @@ -67,7 +67,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* $FreeBSD: src/sys/alpha/include/bus.h,v 1.21 2003/05/30 20:40:32 hmp Exp $ */ +/* $FreeBSD: src/sys/alpha/include/bus.h,v 1.22 2003/07/01 15:51:50 scottl Exp $ */ #ifndef _ALPHA_BUS_H_ #define _ALPHA_BUS_H_ @@ -523,6 +523,17 @@ typedef int bus_dma_filter_t(void *, bus_addr_t); /* + * A function that performs driver-specific syncronization on behalf of + * busdma. + */ +typedef enum { + BUS_DMA_LOCK = 0x01, + BUS_DMA_UNLOCK = 0x02, +} bus_dma_lock_op_t; + +typedef void bus_dma_lock_t(void *, bus_dma_lock_op_t); + +/* * Allocate a device specific dma_tag encapsulating the constraints of * the parent tag in addition to other restrictions specified: * @@ -547,7 +558,8 @@ bus_size_t boundary, bus_addr_t lowaddr, bus_addr_t highaddr, bus_dma_filter_t *filtfunc, void *filtfuncarg, bus_size_t maxsize, int nsegments, - bus_size_t maxsegsz, int flags, bus_dma_tag_t *dmat); + bus_size_t maxsegsz, int flags, bus_dma_lock_t *lockfunc, + void *lockfuncarg, bus_dma_tag_t *dmat); int bus_dma_tag_destroy(bus_dma_tag_t dmat); @@ -629,4 +641,9 @@ if ((dmamap) != NULL) \ _bus_dmamap_unload(dmat, dmamap) +/* + * Generic helper function for manipulating mutexes. + */ +void busdma_lock_mutex(void *arg, bus_dma_lock_op_t op); + #endif /* _ALPHA_BUS_H_ */ ==== //depot/projects/smpng/sys/alpha/isa/isa_dma.c#4 (text+ko) ==== @@ -48,11 +48,13 @@ */ #include -__FBSDID("$FreeBSD: src/sys/alpha/isa/isa_dma.c,v 1.8 2003/06/10 16:57:28 obrien Exp $"); +__FBSDID("$FreeBSD: src/sys/alpha/isa/isa_dma.c,v 1.9 2003/07/01 15:51:50 scottl Exp $"); #include #include #include +#include +#include #include #include #include @@ -131,6 +133,8 @@ /*maxsize*/bouncebufsize, /*nsegments*/1, /*maxsegz*/0x3ffff, /*flags*/BUS_DMA_ISA, + /*lockfunc*/busdma_lock_mutex, + /*lockarg*/&Giant, &dma_tag[chan]) != 0) { panic("isa_dmainit: unable to create dma tag\n"); } ==== //depot/projects/smpng/sys/alpha/mcbus/mcpcia.c#17 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/alpha/mcbus/mcpcia.c,v 1.25 2003/06/10 17:02:51 obrien Exp $"); +__FBSDID("$FreeBSD: src/sys/alpha/mcbus/mcpcia.c,v 1.26 2003/06/28 13:47:23 ticso Exp $"); #include #include @@ -58,6 +58,7 @@ #include #include #include +#include #include #include "alphapci_if.h" @@ -387,43 +388,49 @@ } static int -mcpcia_setup_intr(device_t dev, device_t child, struct resource *ir, int flags, - driver_intr_t *intr, void *arg, void **cp) +mcpcia_pci_route_interrupt(device_t bus, device_t dev, int pin) { - struct mcpcia_softc *sc = MCPCIA_SOFTC(dev); - int slot, mid, gid, birq, irq, error, intpin, h; - - intpin = pci_get_intpin(child); - if (intpin == 0) { - /* No IRQ used */ - return (0); - } - if (intpin < 1 || intpin > 4) { - /* Bad IRQ */ - return (ENXIO); + int irq, slot, mid; + + /* + * Validate requested pin number. + */ + if ((pin < 1) || (pin > 4)) { + printf("mcpcia_pci_route_interrupt: bad interrupt pin %d\n", + pin); + return(255); } - slot = pci_get_slot(child); - mid = mcbus_get_mid(dev); - gid = mcbus_get_gid(dev); + slot = pci_get_slot(dev); + mid = mcbus_get_mid(bus); - if (slot == 0) { - device_t bdev; - /* bridged - get slot from grandparent */ - /* note that this is broken for all but the most trival case */ - bdev = device_get_parent(device_get_parent(child)); - slot = pci_get_slot(bdev); - } +#if 0 + printf("mcpcia_pci_route_interrupt: called for slot=%d, pin=%d, mid=%d\n", slot, pin, mid); +#endif if (mid == 5 && slot == 1) { irq = 16; /* MID 5, slot 1, is the internal NCR 53c810 */ } else if (slot >= 2 && slot <= 5) { - irq = ((slot - 2) * 4) + (intpin - 1); + irq = ((slot - 2) * 4) + (pin - 1); } else { - device_printf(child, "weird slot number (%d); can't make irq\n", + printf("mcpcia_pci_route_interrupt: weird device number %d\n", slot); - return (ENXIO); + return (255); } + + return(irq); +} + +static int +mcpcia_setup_intr(device_t dev, device_t child, struct resource *ir, int flags, + driver_intr_t *intr, void *arg, void **cp) +{ + struct mcpcia_softc *sc = MCPCIA_SOFTC(dev); + int mid, birq, irq, error, h; + + irq = ir->r_start; + mid = mcbus_get_mid(dev); + error = rman_activate_resource(ir); if (error) return error; @@ -437,8 +444,8 @@ } else { h = MCPCIA_VEC_PCI + ((mid - MCPCIA_PCI_MIDMIN) * MCPCIA_VECWIDTH_PER_MCPCIA) + - (slot * MCPCIA_VECWIDTH_PER_SLOT) + - ((intpin - 1) * MCPCIA_VECWIDTH_PER_INTPIN); + irq * MCPCIA_VECWIDTH_PER_INTPIN + + 2 * MCPCIA_VECWIDTH_PER_SLOT; } birq = irq + INTRCNT_KN300_IRQ; error = alpha_setup_intr(device_get_nameunit(child), h, @@ -449,8 +456,8 @@ mtx_lock_spin(&icu_lock); mcpcia_enable_intr(sc, irq); mtx_unlock_spin(&icu_lock); - device_printf(child, "interrupting at IRQ 0x%x int%c (vec 0x%x)\n", - irq, intpin - 1 + 'A' , h); + device_printf(child, "interrupting at IRQ 0x%x (vec 0x%x)\n", + irq , h); return (0); } @@ -458,30 +465,9 @@ mcpcia_teardown_intr(device_t dev, device_t child, struct resource *i, void *c) { struct mcpcia_softc *sc = MCPCIA_SOFTC(dev); - int slot, mid, intpin, irq; - intpin = pci_get_intpin(child); - if (intpin == 0) { - /* No IRQ used */ - return (0); - } - if (intpin < 1 || intpin > 4) { - /* Bad IRQ */ - return (ENXIO); - } - - slot = pci_get_slot(child); - mid = mcbus_get_mid(dev); - - if (mid == 5 && slot == 1) { - irq = 16; - } else if (slot >= 2 && slot <= 5) { - irq = ((slot - 2) << 4) + (intpin - 1); - } else { - return (ENXIO); - } mtx_lock_spin(&icu_lock); - mcpcia_disable_intr(sc, irq); + mcpcia_disable_intr(sc, i->r_start); mtx_unlock_spin(&icu_lock); alpha_teardown_intr(c); return (rman_deactivate_resource(i)); @@ -554,6 +540,11 @@ u_int32_t *dp, data, rvp; u_int64_t paddr; + if ((off == PCIR_INTLINE) && (sz == 1)) { + /* SRM left bad value; let intr_route fill them in later */ + return ~0; + } + rvp = data = ~0; /* @@ -789,7 +780,7 @@ DEVMETHOD(pcib_maxslots, mcpcia_maxslots), DEVMETHOD(pcib_read_config, mcpcia_read_config), DEVMETHOD(pcib_write_config, mcpcia_write_config), - DEVMETHOD(pcib_route_interrupt, alpha_pci_route_interrupt), + DEVMETHOD(pcib_route_interrupt, mcpcia_pci_route_interrupt), { 0, 0 } }; ==== //depot/projects/smpng/sys/amd64/amd64/busdma_machdep.c#3 (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/amd64/busdma_machdep.c,v 1.45 2003/05/27 04:59:56 scottl Exp $ + * $FreeBSD: src/sys/amd64/amd64/busdma_machdep.c,v 1.48 2003/07/01 16:54:54 mux Exp $ */ #include @@ -62,6 +62,8 @@ int flags; int ref_count; int map_count; + bus_dma_lock_t *lockfunc; + void *lockfuncarg; }; struct bounce_page { @@ -135,6 +137,46 @@ return (retval); } +/* + * Convenience function for manipulating driver locks from busdma (during + * busdma_swi, for example). Drivers that don't provide their own locks + * should specify &Giant to dmat->lockfuncarg. Drivers that use their own + * non-mutex locking scheme don't have to use this at all. + */ +void +busdma_lock_mutex(void *arg, bus_dma_lock_op_t op) +{ + struct mtx *dmtx; + + dmtx = (struct mtx *)arg; + switch (op) { + case BUS_DMA_LOCK: + mtx_lock(dmtx); + break; + case BUS_DMA_UNLOCK: + mtx_unlock(dmtx); + break; + default: + panic("Unknown operation 0x%x for busdma_lock_mutex!", op); + } +} + +/* + * dflt_lock should never get called. It gets put into the dma tag when + * lockfunc == NULL, which is only valid if the maps that are associated + * with the tag are meant to never be defered. + * XXX Should have a way to identify which driver is responsible here. + */ +static void +dflt_lock(void *arg, bus_dma_lock_op_t op) +{ +#ifdef INVARIANTS + panic("driver error: busdma dflt_lock called"); +#else + printf("DRIVER_ERROR: busdma dflt_lock called\n"); +#endif +} + #define BUS_DMA_MIN_ALLOC_COMP BUS_DMA_BUS4 /* * Allocate a device specific dma_tag. @@ -144,7 +186,8 @@ bus_size_t boundary, bus_addr_t lowaddr, bus_addr_t highaddr, bus_dma_filter_t *filter, void *filterarg, bus_size_t maxsize, int nsegments, - bus_size_t maxsegsz, int flags, bus_dma_tag_t *dmat) + bus_size_t maxsegsz, int flags, bus_dma_lock_t *lockfunc, + void *lockfuncarg, bus_dma_tag_t *dmat) { bus_dma_tag_t newtag; int error = 0; @@ -170,6 +213,13 @@ newtag->flags = flags; newtag->ref_count = 1; /* Count ourself */ newtag->map_count = 0; + if (lockfunc != NULL) { + newtag->lockfunc = lockfunc; + newtag->lockfuncarg = lockfuncarg; + } else { + newtag->lockfunc = dflt_lock; + newtag->lockfuncarg = NULL; + } /* Take into account any restrictions imposed by our parent tag */ if (parent != NULL) { @@ -766,7 +816,7 @@ M_NOWAIT, 0ul, dmat->lowaddr, PAGE_SIZE, - 0); + dmat->boundary); mtx_unlock(&Giant); if (bpage->vaddr == 0) { free(bpage, M_DEVBUF); @@ -861,14 +911,18 @@ void busdma_swi(void) { + bus_dma_tag_t dmat; struct bus_dmamap *map; mtx_lock(&bounce_lock); while ((map = STAILQ_FIRST(&bounce_map_callbacklist)) != NULL) { STAILQ_REMOVE_HEAD(&bounce_map_callbacklist, links); mtx_unlock(&bounce_lock); + dmat = map->dmat; + (dmat->lockfunc)(dmat->lockfuncarg, BUS_DMA_LOCK); bus_dmamap_load(map->dmat, map, map->buf, map->buflen, map->callback, map->callback_arg, /*flags*/0); + (dmat->lockfunc)(dmat->lockfuncarg, BUS_DMA_UNLOCK); mtx_lock(&bounce_lock); } mtx_unlock(&bounce_lock); ==== //depot/projects/smpng/sys/amd64/amd64/machdep.c#9 (text+ko) ==== @@ -35,7 +35,7 @@ * SUCH DAMAGE. * * from: @(#)machdep.c 7.4 (Berkeley) 6/3/91 - * $FreeBSD: src/sys/amd64/amd64/machdep.c,v 1.582 2003/05/31 07:00:08 peter Exp $ + * $FreeBSD: src/sys/amd64/amd64/machdep.c,v 1.583 2003/06/28 06:34:07 davidxu Exp $ */ #include "opt_atalk.h" @@ -300,6 +300,25 @@ } /* + * Build siginfo_t for SA thread + */ +void +thread_siginfo(int sig, u_long code, siginfo_t *si) +{ + struct proc *p; + struct thread *td; + + td = curthread; + p = td->td_proc; + PROC_LOCK_ASSERT(p, MA_OWNED); + + bzero(si, sizeof(*si)); + si->si_signo = sig; + si->si_code = code; + /* XXXKSE fill other fields */ +} + +/* * System call to cleanup state after a signal * has been taken. Reset signal mask and * stack state from context left by sendsig (above). ==== //depot/projects/smpng/sys/amd64/amd64/pmap.c#5 (text+ko) ==== @@ -39,7 +39,7 @@ * SUCH DAMAGE. * * from: @(#)pmap.c 7.7 (Berkeley) 5/12/91 - * $FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.417 2003/06/26 01:04:31 peter Exp $ + * $FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.418 2003/06/29 21:20:03 alc Exp $ */ /*- * Copyright (c) 2003 Networks Associates Technology, Inc. @@ -208,8 +208,6 @@ static void amd64_protection_init(void); static __inline void pmap_changebit(vm_page_t m, int bit, boolean_t setem); -static vm_page_t pmap_enter_quick(pmap_t pmap, vm_offset_t va, - vm_page_t m, vm_page_t mpte); static int pmap_remove_pte(pmap_t pmap, pt_entry_t *ptq, vm_offset_t sva); >>> TRUNCATED FOR MAIL (1000 lines) <<<