PERFORCE change 62507 for review
John Baldwin
jhb at FreeBSD.org
Fri Oct 1 07:25:43 PDT 2004
http://perforce.freebsd.org/chv.cgi?CH=62507
Change 62507 by jhb at jhb_slimer on 2004/10/01 14:25:19
IFC @62506.
Affected files ...
.. //depot/projects/smpng/sys/amd64/amd64/bios.c#1 branch
.. //depot/projects/smpng/sys/amd64/amd64/machdep.c#30 integrate
.. //depot/projects/smpng/sys/amd64/amd64/mp_machdep.c#14 integrate
.. //depot/projects/smpng/sys/amd64/amd64/mptable.c#5 integrate
.. //depot/projects/smpng/sys/amd64/amd64/pmap.c#35 integrate
.. //depot/projects/smpng/sys/amd64/include/pc/bios.h#1 branch
.. //depot/projects/smpng/sys/amd64/include/pmap.h#15 integrate
.. //depot/projects/smpng/sys/arm/arm/bcopyinout.S#2 integrate
.. //depot/projects/smpng/sys/arm/arm/busdma_machdep.c#4 integrate
.. //depot/projects/smpng/sys/arm/arm/cpufunc.c#3 integrate
.. //depot/projects/smpng/sys/arm/arm/db_trace.c#6 integrate
.. //depot/projects/smpng/sys/arm/arm/elf_machdep.c#4 integrate
.. //depot/projects/smpng/sys/arm/arm/exception.S#3 integrate
.. //depot/projects/smpng/sys/arm/arm/fusu.S#2 integrate
.. //depot/projects/smpng/sys/arm/arm/genassym.c#2 integrate
.. //depot/projects/smpng/sys/arm/arm/identcpu.c#2 integrate
.. //depot/projects/smpng/sys/arm/arm/intr.c#3 integrate
.. //depot/projects/smpng/sys/arm/arm/irq_dispatch.S#2 integrate
.. //depot/projects/smpng/sys/arm/arm/locore.S#3 integrate
.. //depot/projects/smpng/sys/arm/arm/machdep.c#5 integrate
.. //depot/projects/smpng/sys/arm/arm/nexus_io.c#3 integrate
.. //depot/projects/smpng/sys/arm/arm/pmap.c#8 integrate
.. //depot/projects/smpng/sys/arm/arm/support.S#4 integrate
.. //depot/projects/smpng/sys/arm/arm/swtch.S#2 integrate
.. //depot/projects/smpng/sys/arm/arm/sys_machdep.c#3 integrate
.. //depot/projects/smpng/sys/arm/arm/trap.c#2 integrate
.. //depot/projects/smpng/sys/arm/arm/uio_machdep.c#3 integrate
.. //depot/projects/smpng/sys/arm/arm/vm_machdep.c#4 integrate
.. //depot/projects/smpng/sys/arm/conf/IQ31244#1 branch
.. //depot/projects/smpng/sys/arm/conf/SIMICS#2 integrate
.. //depot/projects/smpng/sys/arm/include/asm.h#2 integrate
.. //depot/projects/smpng/sys/arm/include/asmacros.h#2 integrate
.. //depot/projects/smpng/sys/arm/include/bus.h#3 integrate
.. //depot/projects/smpng/sys/arm/include/intr.h#2 integrate
.. //depot/projects/smpng/sys/arm/include/md_var.h#2 integrate
.. //depot/projects/smpng/sys/arm/include/param.h#5 integrate
.. //depot/projects/smpng/sys/arm/include/pcb.h#4 integrate
.. //depot/projects/smpng/sys/arm/include/pmap.h#4 integrate
.. //depot/projects/smpng/sys/arm/include/profile.h#5 integrate
.. //depot/projects/smpng/sys/arm/include/pte.h#2 integrate
.. //depot/projects/smpng/sys/arm/include/signal.h#5 integrate
.. //depot/projects/smpng/sys/arm/include/sysarch.h#1 branch
.. //depot/projects/smpng/sys/arm/include/vmparam.h#3 integrate
.. //depot/projects/smpng/sys/arm/sa11x0/assabet_machdep.c#4 integrate
.. //depot/projects/smpng/sys/arm/sa11x0/sa11x0.c#4 integrate
.. //depot/projects/smpng/sys/arm/sa11x0/sa11x0_io.c#3 integrate
.. //depot/projects/smpng/sys/arm/sa11x0/sa11x0_irq.S#2 integrate
.. //depot/projects/smpng/sys/arm/sa11x0/sa11x0_irqhandler.c#2 integrate
.. //depot/projects/smpng/sys/arm/sa11x0/std.sa11x0#2 integrate
.. //depot/projects/smpng/sys/arm/xscale/i80321/files.i80321#1 branch
.. //depot/projects/smpng/sys/arm/xscale/i80321/files.iq31244#1 branch
.. //depot/projects/smpng/sys/arm/xscale/i80321/i80321.c#1 branch
.. //depot/projects/smpng/sys/arm/xscale/i80321/i80321_intr.h#1 branch
.. //depot/projects/smpng/sys/arm/xscale/i80321/i80321_mcu.c#1 branch
.. //depot/projects/smpng/sys/arm/xscale/i80321/i80321_pci.c#1 branch
.. //depot/projects/smpng/sys/arm/xscale/i80321/i80321_space.c#1 branch
.. //depot/projects/smpng/sys/arm/xscale/i80321/i80321_timer.c#1 branch
.. //depot/projects/smpng/sys/arm/xscale/i80321/i80321reg.h#1 branch
.. //depot/projects/smpng/sys/arm/xscale/i80321/i80321var.h#1 branch
.. //depot/projects/smpng/sys/arm/xscale/i80321/iq31244_machdep.c#1 branch
.. //depot/projects/smpng/sys/arm/xscale/i80321/iq80321.c#1 branch
.. //depot/projects/smpng/sys/arm/xscale/i80321/iq80321reg.h#1 branch
.. //depot/projects/smpng/sys/arm/xscale/i80321/iq80321var.h#1 branch
.. //depot/projects/smpng/sys/arm/xscale/i80321/obio.c#1 branch
.. //depot/projects/smpng/sys/arm/xscale/i80321/obio_space.c#1 branch
.. //depot/projects/smpng/sys/arm/xscale/i80321/obiovar.h#1 branch
.. //depot/projects/smpng/sys/arm/xscale/i80321/std.i80321#1 branch
.. //depot/projects/smpng/sys/arm/xscale/i80321/std.iq31244#1 branch
.. //depot/projects/smpng/sys/arm/xscale/i80321/uart_bus_i80321.c#1 branch
.. //depot/projects/smpng/sys/arm/xscale/i80321/uart_cpu_i80321.c#1 branch
.. //depot/projects/smpng/sys/arm/xscale/xscalereg.h#1 branch
.. //depot/projects/smpng/sys/arm/xscale/xscalevar.h#1 branch
.. //depot/projects/smpng/sys/boot/common/commands.c#5 integrate
.. //depot/projects/smpng/sys/boot/common/help.common#14 integrate
.. //depot/projects/smpng/sys/boot/common/loader.8#30 integrate
.. //depot/projects/smpng/sys/boot/forth/loader.4th.8#7 integrate
.. //depot/projects/smpng/sys/boot/forth/loader.conf#29 integrate
.. //depot/projects/smpng/sys/boot/forth/loader.conf.5#8 integrate
.. //depot/projects/smpng/sys/boot/i386/loader/help.i386#5 integrate
.. //depot/projects/smpng/sys/boot/ia64/Makefile#3 integrate
.. //depot/projects/smpng/sys/boot/ia64/libski/Makefile#8 delete
.. //depot/projects/smpng/sys/boot/ia64/libski/acpi_stub.c#4 delete
.. //depot/projects/smpng/sys/boot/ia64/libski/bootinfo.c#6 delete
.. //depot/projects/smpng/sys/boot/ia64/libski/copy.c#4 delete
.. //depot/projects/smpng/sys/boot/ia64/libski/delay.c#3 delete
.. //depot/projects/smpng/sys/boot/ia64/libski/devicename.c#3 delete
.. //depot/projects/smpng/sys/boot/ia64/libski/efi_stub.c#3 delete
.. //depot/projects/smpng/sys/boot/ia64/libski/elf_freebsd.c#9 delete
.. //depot/projects/smpng/sys/boot/ia64/libski/exit.c#3 delete
.. //depot/projects/smpng/sys/boot/ia64/libski/libski.h#4 delete
.. //depot/projects/smpng/sys/boot/ia64/libski/module.c#4 delete
.. //depot/projects/smpng/sys/boot/ia64/libski/pal_stub.S#3 delete
.. //depot/projects/smpng/sys/boot/ia64/libski/sal_stub.c#3 delete
.. //depot/projects/smpng/sys/boot/ia64/libski/skiconsole.c#3 delete
.. //depot/projects/smpng/sys/boot/ia64/libski/skifs.c#3 delete
.. //depot/projects/smpng/sys/boot/ia64/libski/ssc.c#4 delete
.. //depot/projects/smpng/sys/boot/ia64/libski/time.c#5 delete
.. //depot/projects/smpng/sys/boot/ia64/ski/Makefile#1 branch
.. //depot/projects/smpng/sys/boot/ia64/ski/acpi_stub.c#1 branch
.. //depot/projects/smpng/sys/boot/ia64/ski/bootinfo.c#1 branch
.. //depot/projects/smpng/sys/boot/ia64/ski/conf.c#1 branch
.. //depot/projects/smpng/sys/boot/ia64/ski/copy.c#1 branch
.. //depot/projects/smpng/sys/boot/ia64/ski/delay.c#1 branch
.. //depot/projects/smpng/sys/boot/ia64/ski/devicename.c#1 branch
.. //depot/projects/smpng/sys/boot/ia64/ski/efi_stub.c#1 branch
.. //depot/projects/smpng/sys/boot/ia64/ski/elf_freebsd.c#1 branch
.. //depot/projects/smpng/sys/boot/ia64/ski/exit.c#1 branch
.. //depot/projects/smpng/sys/boot/ia64/ski/ldscript.ia64#1 branch
.. //depot/projects/smpng/sys/boot/ia64/ski/libski.h#1 branch
.. //depot/projects/smpng/sys/boot/ia64/ski/main.c#1 branch
.. //depot/projects/smpng/sys/boot/ia64/ski/pal_stub.S#1 branch
.. //depot/projects/smpng/sys/boot/ia64/ski/sal_stub.c#1 branch
.. //depot/projects/smpng/sys/boot/ia64/ski/skiconsole.c#1 branch
.. //depot/projects/smpng/sys/boot/ia64/ski/skifs.c#1 branch
.. //depot/projects/smpng/sys/boot/ia64/ski/skiload.cmd#1 branch
.. //depot/projects/smpng/sys/boot/ia64/ski/ssc.c#1 branch
.. //depot/projects/smpng/sys/boot/ia64/ski/start.S#1 branch
.. //depot/projects/smpng/sys/boot/ia64/ski/time.c#1 branch
.. //depot/projects/smpng/sys/boot/ia64/ski/version#1 branch
.. //depot/projects/smpng/sys/boot/ia64/skiload/Makefile#11 delete
.. //depot/projects/smpng/sys/boot/ia64/skiload/conf.c#4 delete
.. //depot/projects/smpng/sys/boot/ia64/skiload/ldscript.ia64#3 delete
.. //depot/projects/smpng/sys/boot/ia64/skiload/main.c#5 delete
.. //depot/projects/smpng/sys/boot/ia64/skiload/skiload.cmd#2 delete
.. //depot/projects/smpng/sys/boot/ia64/skiload/start.S#3 delete
.. //depot/projects/smpng/sys/boot/ia64/skiload/version#3 delete
.. //depot/projects/smpng/sys/boot/pc98/loader/help.pc98#2 integrate
.. //depot/projects/smpng/sys/compat/linux/linux_stats.c#20 integrate
.. //depot/projects/smpng/sys/compat/svr4/svr4_misc.c#33 integrate
.. //depot/projects/smpng/sys/conf/Makefile.arm#3 integrate
.. //depot/projects/smpng/sys/conf/files#123 integrate
.. //depot/projects/smpng/sys/conf/files.amd64#23 integrate
.. //depot/projects/smpng/sys/conf/files.ia64#45 integrate
.. //depot/projects/smpng/sys/conf/kern.pre.mk#39 integrate
.. //depot/projects/smpng/sys/conf/ldscript.arm#2 integrate
.. //depot/projects/smpng/sys/conf/majors#41 integrate
.. //depot/projects/smpng/sys/conf/options.arm#2 integrate
.. //depot/projects/smpng/sys/contrib/ipfilter/netinet/ip_fil.c#17 integrate
.. //depot/projects/smpng/sys/contrib/pf/net/pf.c#10 integrate
.. //depot/projects/smpng/sys/contrib/pf/net/pf_ioctl.c#10 integrate
.. //depot/projects/smpng/sys/contrib/pf/net/pfvar.h#6 integrate
.. //depot/projects/smpng/sys/dev/acpica/acpi_pci_link.c#22 integrate
.. //depot/projects/smpng/sys/dev/ata/ata-all.c#61 integrate
.. //depot/projects/smpng/sys/dev/ata/ata-all.h#31 integrate
.. //depot/projects/smpng/sys/dev/ata/ata-chipset.c#44 integrate
.. //depot/projects/smpng/sys/dev/ata/ata-disk.c#44 integrate
.. //depot/projects/smpng/sys/dev/ata/ata-lowlevel.c#20 integrate
.. //depot/projects/smpng/sys/dev/ata/ata-pci.c#49 integrate
.. //depot/projects/smpng/sys/dev/ata/ata-queue.c#19 integrate
.. //depot/projects/smpng/sys/dev/bge/if_bge.c#46 integrate
.. //depot/projects/smpng/sys/dev/bge/if_bgereg.h#24 integrate
.. //depot/projects/smpng/sys/dev/dcons/dcons.c#6 integrate
.. //depot/projects/smpng/sys/dev/em/if_em.c#36 integrate
.. //depot/projects/smpng/sys/dev/em/if_em_hw.c#14 integrate
.. //depot/projects/smpng/sys/dev/fb/vga.c#18 integrate
.. //depot/projects/smpng/sys/dev/fdc/fdc.c#10 integrate
.. //depot/projects/smpng/sys/dev/fdc/fdc_acpi.c#6 integrate
.. //depot/projects/smpng/sys/dev/mii/brgphy.c#22 integrate
.. //depot/projects/smpng/sys/dev/mii/miidevs#14 integrate
.. //depot/projects/smpng/sys/dev/musycc/musycc.c#10 integrate
.. //depot/projects/smpng/sys/dev/pci/pci.c#42 integrate
.. //depot/projects/smpng/sys/dev/re/if_re.c#16 integrate
.. //depot/projects/smpng/sys/dev/snp/snp.c#18 integrate
.. //depot/projects/smpng/sys/dev/sound/pci/ich.c#30 integrate
.. //depot/projects/smpng/sys/dev/syscons/scvgarndr.c#6 integrate
.. //depot/projects/smpng/sys/dev/syscons/syscons.c#43 integrate
.. //depot/projects/smpng/sys/dev/usb/ucom.c#21 integrate
.. //depot/projects/smpng/sys/dev/usb/ucomvar.h#6 integrate
.. //depot/projects/smpng/sys/dev/usb/ugen.c#27 integrate
.. //depot/projects/smpng/sys/dev/usb/usb_port.h#21 integrate
.. //depot/projects/smpng/sys/dev/usb/usb_subr.c#26 integrate
.. //depot/projects/smpng/sys/fs/devfs/devfs_rule.c#9 integrate
.. //depot/projects/smpng/sys/fs/procfs/procfs_dbregs.c#14 integrate
.. //depot/projects/smpng/sys/fs/procfs/procfs_fpregs.c#14 integrate
.. //depot/projects/smpng/sys/fs/procfs/procfs_regs.c#14 integrate
.. //depot/projects/smpng/sys/fs/specfs/spec_vnops.c#39 integrate
.. //depot/projects/smpng/sys/geom/geom_dev.c#37 integrate
.. //depot/projects/smpng/sys/geom/geom_io.c#33 integrate
.. //depot/projects/smpng/sys/geom/mirror/g_mirror.c#7 integrate
.. //depot/projects/smpng/sys/geom/mirror/g_mirror.h#3 integrate
.. //depot/projects/smpng/sys/geom/raid3/g_raid3.c#5 integrate
.. //depot/projects/smpng/sys/geom/raid3/g_raid3.h#3 integrate
.. //depot/projects/smpng/sys/geom/vinum/geom_vinum_init.c#5 integrate
.. //depot/projects/smpng/sys/geom/vinum/geom_vinum_list.c#2 integrate
.. //depot/projects/smpng/sys/geom/vinum/geom_vinum_plex.c#7 integrate
.. //depot/projects/smpng/sys/geom/vinum/geom_vinum_raid5.c#5 integrate
.. //depot/projects/smpng/sys/geom/vinum/geom_vinum_raid5.h#4 integrate
.. //depot/projects/smpng/sys/geom/vinum/geom_vinum_var.h#3 integrate
.. //depot/projects/smpng/sys/gnu/ext2fs/ext2_extern.h#9 integrate
.. //depot/projects/smpng/sys/gnu/ext2fs/ext2_readwrite.c#8 integrate
.. //depot/projects/smpng/sys/gnu/ext2fs/ext2_vfsops.c#36 integrate
.. //depot/projects/smpng/sys/gnu/ext2fs/ext2_vnops.c#24 integrate
.. //depot/projects/smpng/sys/i386/i386/mptable.c#12 integrate
.. //depot/projects/smpng/sys/i386/i386/pmap.c#73 integrate
.. //depot/projects/smpng/sys/i386/include/pmap.h#24 integrate
.. //depot/projects/smpng/sys/i386/linux/linux_ptrace.c#10 integrate
.. //depot/projects/smpng/sys/ia64/ia32/ia32_trap.c#1 branch
.. //depot/projects/smpng/sys/ia64/ia64/exception.S#9 integrate
.. //depot/projects/smpng/sys/ia64/ia64/genassym.c#25 integrate
.. //depot/projects/smpng/sys/ia64/ia64/trap.c#69 integrate
.. //depot/projects/smpng/sys/ia64/include/md_var.h#17 integrate
.. //depot/projects/smpng/sys/isa/psm.c#30 integrate
.. //depot/projects/smpng/sys/isa/syscons_isa.c#9 integrate
.. //depot/projects/smpng/sys/isofs/cd9660/cd9660_vfsops.c#31 integrate
.. //depot/projects/smpng/sys/kern/imgact_elf.c#40 integrate
.. //depot/projects/smpng/sys/kern/kern_conf.c#32 integrate
.. //depot/projects/smpng/sys/kern/kern_exit.c#85 integrate
.. //depot/projects/smpng/sys/kern/kern_fork.c#85 integrate
.. //depot/projects/smpng/sys/kern/kern_malloc.c#31 integrate
.. //depot/projects/smpng/sys/kern/kern_resource.c#51 integrate
.. //depot/projects/smpng/sys/kern/kern_sig.c#97 integrate
.. //depot/projects/smpng/sys/kern/kern_thread.c#68 integrate
.. //depot/projects/smpng/sys/kern/subr_kdb.c#6 integrate
.. //depot/projects/smpng/sys/kern/subr_unit.c#1 branch
.. //depot/projects/smpng/sys/kern/tty.c#48 integrate
.. //depot/projects/smpng/sys/kern/tty_cons.c#30 integrate
.. //depot/projects/smpng/sys/kern/uipc_mbuf.c#31 integrate
.. //depot/projects/smpng/sys/kern/vfs_aio.c#51 integrate
.. //depot/projects/smpng/sys/kern/vfs_bio.c#69 integrate
.. //depot/projects/smpng/sys/kern/vfs_cluster.c#33 integrate
.. //depot/projects/smpng/sys/kern/vfs_default.c#28 integrate
.. //depot/projects/smpng/sys/kern/vfs_mount.c#34 integrate
.. //depot/projects/smpng/sys/kern/vfs_subr.c#84 integrate
.. //depot/projects/smpng/sys/kern/vfs_vnops.c#51 integrate
.. //depot/projects/smpng/sys/modules/mem/Makefile#2 integrate
.. //depot/projects/smpng/sys/net/bridge.c#30 integrate
.. //depot/projects/smpng/sys/net/pfil.c#6 integrate
.. //depot/projects/smpng/sys/net/pfil.h#7 integrate
.. //depot/projects/smpng/sys/netinet/in_pcb.c#49 integrate
.. //depot/projects/smpng/sys/netinet/ip_fastfwd.c#11 integrate
.. //depot/projects/smpng/sys/netinet/ip_fw.h#23 integrate
.. //depot/projects/smpng/sys/netinet/ip_fw2.c#41 integrate
.. //depot/projects/smpng/sys/netinet/ip_fw_pfil.c#5 integrate
.. //depot/projects/smpng/sys/netinet/ip_input.c#59 integrate
.. //depot/projects/smpng/sys/netinet/ip_output.c#66 integrate
.. //depot/projects/smpng/sys/netinet6/ip6_forward.c#12 integrate
.. //depot/projects/smpng/sys/netinet6/ip6_input.c#36 integrate
.. //depot/projects/smpng/sys/netinet6/ip6_output.c#35 integrate
.. //depot/projects/smpng/sys/netipsec/ipsec.c#9 integrate
.. //depot/projects/smpng/sys/netipsec/key.c#13 integrate
.. //depot/projects/smpng/sys/netipsec/key.h#3 integrate
.. //depot/projects/smpng/sys/netkey/key.c#26 integrate
.. //depot/projects/smpng/sys/nfs4client/nfs4_vnops.c#8 integrate
.. //depot/projects/smpng/sys/nfsclient/nfs.h#20 integrate
.. //depot/projects/smpng/sys/nfsclient/nfs_bio.c#32 integrate
.. //depot/projects/smpng/sys/nfsclient/nfs_subs.c#21 integrate
.. //depot/projects/smpng/sys/nfsclient/nfs_vnops.c#42 integrate
.. //depot/projects/smpng/sys/nfsclient/nfsnode.h#9 integrate
.. //depot/projects/smpng/sys/pci/if_dc.c#60 integrate
.. //depot/projects/smpng/sys/pci/if_rlreg.h#21 integrate
.. //depot/projects/smpng/sys/pci/if_xl.c#50 integrate
.. //depot/projects/smpng/sys/powerpc/powermac/uninorth.c#7 integrate
.. //depot/projects/smpng/sys/powerpc/powermac/uninorthvar.h#3 integrate
.. //depot/projects/smpng/sys/sparc64/include/smp.h#14 integrate
.. //depot/projects/smpng/sys/sparc64/sparc64/counter.c#4 integrate
.. //depot/projects/smpng/sys/sparc64/sparc64/machdep.c#66 integrate
.. //depot/projects/smpng/sys/sparc64/sparc64/mp_machdep.c#23 integrate
.. //depot/projects/smpng/sys/sparc64/sparc64/rwindow.c#8 integrate
.. //depot/projects/smpng/sys/sparc64/sparc64/vm_machdep.c#42 integrate
.. //depot/projects/smpng/sys/sys/buf.h#30 integrate
.. //depot/projects/smpng/sys/sys/conf.h#33 integrate
.. //depot/projects/smpng/sys/sys/mbuf.h#44 integrate
.. //depot/projects/smpng/sys/sys/param.h#72 integrate
.. //depot/projects/smpng/sys/sys/proc.h#129 integrate
.. //depot/projects/smpng/sys/sys/syscallsubr.h#10 integrate
.. //depot/projects/smpng/sys/sys/systm.h#56 integrate
.. //depot/projects/smpng/sys/sys/tty.h#17 integrate
.. //depot/projects/smpng/sys/ufs/ffs/ffs_extern.h#14 integrate
.. //depot/projects/smpng/sys/ufs/ffs/ffs_vfsops.c#59 integrate
.. //depot/projects/smpng/sys/ufs/ffs/ffs_vnops.c#33 integrate
.. //depot/projects/smpng/sys/ufs/ufs/ufs_extern.h#14 integrate
.. //depot/projects/smpng/sys/ufs/ufs/ufs_vnops.c#40 integrate
.. //depot/projects/smpng/sys/vm/device_pager.c#18 integrate
.. //depot/projects/smpng/sys/vm/swap_pager.c#49 integrate
.. //depot/projects/smpng/sys/vm/vm_mmap.c#49 integrate
Differences ...
==== //depot/projects/smpng/sys/amd64/amd64/machdep.c#30 (text+ko) ====
@@ -39,7 +39,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/machdep.c,v 1.620 2004/09/05 02:09:52 julian Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/machdep.c,v 1.621 2004/09/24 01:11:11 peter Exp $");
#include "opt_atalk.h"
#include "opt_atpic.h"
@@ -111,6 +111,7 @@
#include <machine/specialreg.h>
#include <machine/intr_machdep.h>
#include <machine/md_var.h>
+#include <machine/pc/bios.h>
#include <machine/metadata.h>
#include <machine/proc.h>
#ifdef PERFMON
@@ -798,12 +799,6 @@
#define PHYSMAP_SIZE (2 * 8)
-struct bios_smap {
- u_int64_t base;
- u_int64_t length;
- u_int32_t type;
-} __packed;
-
u_int basemem;
/*
==== //depot/projects/smpng/sys/amd64/amd64/mp_machdep.c#14 (text+ko) ====
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/mp_machdep.c,v 1.246 2004/09/01 06:42:01 julian Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/mp_machdep.c,v 1.247 2004/09/29 01:59:10 peter Exp $");
#include "opt_cpu.h"
#include "opt_kstack_pages.h"
@@ -539,12 +539,14 @@
u_int32_t mpbioswarmvec;
int apic_id, cpu, i;
u_int64_t *pt4, *pt3, *pt2;
+ vm_offset_t va = boot_address + KERNBASE;
mtx_init(&ap_boot_mtx, "ap boot", NULL, MTX_SPIN);
/* install the AP 1st level boot code */
- pmap_kenter(boot_address + KERNBASE, boot_address);
- bcopy(mptramp_start, (void *)((uintptr_t)boot_address + KERNBASE), bootMP_size);
+ pmap_kenter(va, boot_address);
+ pmap_invalidate_page(kernel_pmap, va);
+ bcopy(mptramp_start, (void *)va, bootMP_size);
/* Locate the page tables, they'll be below the trampoline */
pt4 = (u_int64_t *)(uintptr_t)(mptramp_pagetables + KERNBASE);
==== //depot/projects/smpng/sys/amd64/amd64/mptable.c#5 (text+ko) ====
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/mptable.c,v 1.232 2004/07/08 01:42:49 peter Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/mptable.c,v 1.233 2004/09/29 01:58:24 peter Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -928,7 +928,9 @@
if (args->vector == vector)
return;
KASSERT(args->vector == -1,
- ("Multiple entries for PCI IRQ %d", args->vector));
+ ("Multiple IRQs for PCI interrupt %d.%d.INT%c: %d and %d\n",
+ args->bus, args->irq >> 2, 'A' + (args->irq & 0x3), args->vector,
+ vector));
args->vector = vector;
}
==== //depot/projects/smpng/sys/amd64/amd64/pmap.c#35 (text+ko) ====
@@ -75,7 +75,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.502 2004/09/22 05:01:48 alc Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.503 2004/09/29 19:20:39 alc Exp $");
/*
* Manages physical address maps.
@@ -110,6 +110,7 @@
#include <sys/systm.h>
#include <sys/kernel.h>
#include <sys/lock.h>
+#include <sys/malloc.h>
#include <sys/mman.h>
#include <sys/msgbuf.h>
#include <sys/mutex.h>
@@ -212,9 +213,9 @@
vm_offset_t va, pd_entry_t ptepde);
static void pmap_insert_entry(pmap_t pmap, vm_offset_t va, vm_page_t m);
-static vm_page_t pmap_allocpte(pmap_t pmap, vm_offset_t va);
+static vm_page_t pmap_allocpte(pmap_t pmap, vm_offset_t va, int flags);
-static vm_page_t _pmap_allocpte(pmap_t pmap, vm_pindex_t ptepindex);
+static vm_page_t _pmap_allocpte(pmap_t pmap, vm_pindex_t ptepindex, int flags);
static int _pmap_unwire_pte_hold(pmap_t pmap, vm_offset_t va, vm_page_t m);
static int pmap_unuse_pt(pmap_t, vm_offset_t, pd_entry_t);
static vm_offset_t pmap_kmem_choose(vm_offset_t addr);
@@ -1101,22 +1102,26 @@
* race conditions.
*/
static vm_page_t
-_pmap_allocpte(pmap, ptepindex)
- pmap_t pmap;
- vm_pindex_t ptepindex;
+_pmap_allocpte(pmap_t pmap, vm_pindex_t ptepindex, int flags)
{
vm_page_t m, pdppg, pdpg;
+ KASSERT((flags & (M_NOWAIT | M_WAITOK)) == M_NOWAIT ||
+ (flags & (M_NOWAIT | M_WAITOK)) == M_WAITOK,
+ ("_pmap_allocpte: flags is neither M_NOWAIT nor M_WAITOK"));
+
/*
* Allocate a page table page.
*/
if ((m = vm_page_alloc(NULL, ptepindex, VM_ALLOC_NOOBJ |
VM_ALLOC_WIRED | VM_ALLOC_ZERO)) == NULL) {
- PMAP_UNLOCK(pmap);
- vm_page_unlock_queues();
- VM_WAIT;
- vm_page_lock_queues();
- PMAP_LOCK(pmap);
+ if (flags & M_WAITOK) {
+ PMAP_UNLOCK(pmap);
+ vm_page_unlock_queues();
+ VM_WAIT;
+ vm_page_lock_queues();
+ PMAP_LOCK(pmap);
+ }
/*
* Indicate the need to retry. While waiting, the page table
@@ -1156,7 +1161,8 @@
pml4 = &pmap->pm_pml4[pml4index];
if ((*pml4 & PG_V) == 0) {
/* Have to allocate a new pdp, recurse */
- if (_pmap_allocpte(pmap, NUPDE + NUPDPE + pml4index) == NULL) {
+ if (_pmap_allocpte(pmap, NUPDE + NUPDPE + pml4index,
+ flags) == NULL) {
--m->wire_count;
vm_page_free(m);
return (NULL);
@@ -1187,7 +1193,8 @@
pml4 = &pmap->pm_pml4[pml4index];
if ((*pml4 & PG_V) == 0) {
/* Have to allocate a new pd, recurse */
- if (_pmap_allocpte(pmap, NUPDE + pdpindex) == NULL) {
+ if (_pmap_allocpte(pmap, NUPDE + pdpindex,
+ flags) == NULL) {
--m->wire_count;
vm_page_free(m);
return (NULL);
@@ -1199,7 +1206,8 @@
pdp = &pdp[pdpindex & ((1ul << NPDPEPGSHIFT) - 1)];
if ((*pdp & PG_V) == 0) {
/* Have to allocate a new pd, recurse */
- if (_pmap_allocpte(pmap, NUPDE + pdpindex) == NULL) {
+ if (_pmap_allocpte(pmap, NUPDE + pdpindex,
+ flags) == NULL) {
--m->wire_count;
vm_page_free(m);
return (NULL);
@@ -1221,12 +1229,16 @@
}
static vm_page_t
-pmap_allocpte(pmap_t pmap, vm_offset_t va)
+pmap_allocpte(pmap_t pmap, vm_offset_t va, int flags)
{
vm_pindex_t ptepindex;
pd_entry_t *pd;
vm_page_t m;
+ KASSERT((flags & (M_NOWAIT | M_WAITOK)) == M_NOWAIT ||
+ (flags & (M_NOWAIT | M_WAITOK)) == M_WAITOK,
+ ("pmap_allocpte: flags is neither M_NOWAIT nor M_WAITOK"));
+
/*
* Calculate pagetable page index
*/
@@ -1259,8 +1271,8 @@
* Here if the pte page isn't mapped, or if it has been
* deallocated.
*/
- m = _pmap_allocpte(pmap, ptepindex);
- if (m == NULL)
+ m = _pmap_allocpte(pmap, ptepindex, flags);
+ if (m == NULL && (flags & M_WAITOK))
goto retry;
}
return (m);
@@ -1848,7 +1860,7 @@
* resident, we are creating it here.
*/
if (va < VM_MAXUSER_ADDRESS) {
- mpte = pmap_allocpte(pmap, va);
+ mpte = pmap_allocpte(pmap, va, M_WAITOK);
}
#if 0 && defined(PMAP_DIAGNOSTIC)
else {
@@ -2029,7 +2041,8 @@
mpte = PHYS_TO_VM_PAGE(*ptepa & PG_FRAME);
mpte->wire_count++;
} else {
- mpte = _pmap_allocpte(pmap, ptepindex);
+ mpte = _pmap_allocpte(pmap, ptepindex,
+ M_WAITOK);
if (mpte == NULL)
goto retry;
}
@@ -2224,7 +2237,13 @@
return;
vm_page_lock_queues();
- PMAP_LOCK(dst_pmap);
+ if (dst_pmap < src_pmap) {
+ PMAP_LOCK(dst_pmap);
+ PMAP_LOCK(src_pmap);
+ } else {
+ PMAP_LOCK(src_pmap);
+ PMAP_LOCK(dst_pmap);
+ }
for (addr = src_addr; addr < end_addr; addr = va_next) {
pt_entry_t *src_pte, *dst_pte;
vm_page_t dstmpte, srcmpte;
@@ -2303,9 +2322,12 @@
* pte still being around... allocpte can
* block.
*/
- dstmpte = pmap_allocpte(dst_pmap, addr);
+ dstmpte = pmap_allocpte(dst_pmap, addr,
+ M_NOWAIT);
+ if (dstmpte == NULL)
+ break;
dst_pte = pmap_pte(dst_pmap, addr);
- if ((*dst_pte == 0) && (ptetemp = *src_pte)) {
+ if (*dst_pte == 0) {
/*
* Clear the modified and
* accessed (referenced) bits
@@ -2325,6 +2347,7 @@
}
}
vm_page_unlock_queues();
+ PMAP_UNLOCK(src_pmap);
PMAP_UNLOCK(dst_pmap);
}
==== //depot/projects/smpng/sys/amd64/include/pmap.h#15 (text+ko) ====
@@ -39,7 +39,7 @@
*
* from: hp300: @(#)pmap.h 7.2 (Berkeley) 12/16/90
* from: @(#)pmap.h 7.4 (Berkeley) 5/12/91
- * $FreeBSD: src/sys/amd64/include/pmap.h,v 1.123 2004/09/11 01:31:26 scottl Exp $
+ * $FreeBSD: src/sys/amd64/include/pmap.h,v 1.124 2004/09/29 19:20:39 alc Exp $
*/
#ifndef _MACHINE_PMAP_H_
@@ -240,7 +240,7 @@
mtx_assert(&(pmap)->pm_mtx, (type))
#define PMAP_LOCK_DESTROY(pmap) mtx_destroy(&(pmap)->pm_mtx)
#define PMAP_LOCK_INIT(pmap) mtx_init(&(pmap)->pm_mtx, "pmap", \
- NULL, MTX_DEF)
+ NULL, MTX_DEF | MTX_DUPOK)
#define PMAP_LOCKED(pmap) mtx_owned(&(pmap)->pm_mtx)
#define PMAP_MTX(pmap) (&(pmap)->pm_mtx)
#define PMAP_TRYLOCK(pmap) mtx_trylock(&(pmap)->pm_mtx)
==== //depot/projects/smpng/sys/arm/arm/bcopyinout.S#2 (text+ko) ====
@@ -40,9 +40,9 @@
#include <machine/asm.h>
-__FBSDID("$FreeBSD: src/sys/arm/arm/bcopyinout.S,v 1.1 2004/05/14 11:46:42 cognet Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/arm/bcopyinout.S,v 1.2 2004/09/23 21:56:36 cognet Exp $");
#ifdef __XSCALE__
-#include "bcopyinout_xscale.S"
+#include <arm/arm/bcopyinout_xscale.S>
#else
.text
==== //depot/projects/smpng/sys/arm/arm/busdma_machdep.c#4 (text+ko) ====
@@ -29,7 +29,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/arm/busdma_machdep.c,v 1.3 2004/09/08 04:54:18 scottl Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/arm/busdma_machdep.c,v 1.4 2004/09/23 21:57:47 cognet Exp $");
/*
* MacPPC bus dma support routines
@@ -79,19 +79,18 @@
*/
struct arm32_dma_range *ranges;
int _nranges;
-
};
-struct arm_seglist {
- bus_dma_segment_t seg;
- SLIST_ENTRY(arm_seglist) next;
-};
-
-#define MAX_SEGS 512
+#define DMAMAP_LINEAR 0x1
+#define DMAMAP_MBUF 0x2
+#define DMAMAP_UIO 0x4
+#define DMAMAP_TYPE_MASK (DMAMAP_LINEAR|DMAMAP_MBUF|DMAMAP_UIO)
+#define DMAMAP_COHERENT 0x8
struct bus_dmamap {
- bus_dma_tag_t dmat;
- int flags;
- SLIST_HEAD(, arm_seglist) seglist;
+ bus_dma_tag_t dmat;
+ int flags;
+ void *buffer;
+ int len;
};
/*
@@ -103,6 +102,7 @@
bus_dmamap_t map, void *buf, bus_size_t buflen, struct thread *td,
int flags, vm_offset_t *lastaddrp, int *segp,
int first);
+
static __inline struct arm32_dma_range *
_bus_dma_inrange(struct arm32_dma_range *ranges, int nranges,
bus_addr_t curaddr)
@@ -161,6 +161,8 @@
/*
* Allocate a device specific dma_tag.
*/
+#define SEG_NB 1024
+
int
bus_dma_tag_create(bus_dma_tag_t parent, bus_size_t alignment,
bus_size_t boundary, bus_addr_t lowaddr,
@@ -171,7 +173,6 @@
{
bus_dma_tag_t newtag;
int error = 0;
-
/* Return a NULL tag on failure */
*dmat = NULL;
@@ -193,6 +194,7 @@
newtag->ref_count = 1; /* Count ourself */
newtag->map_count = 0;
newtag->ranges = bus_dma_get_range();
+ newtag->_nranges = bus_dma_get_range_nb();
if (lockfunc != NULL) {
newtag->lockfunc = lockfunc;
newtag->lockfuncarg = lockfuncarg;
@@ -200,7 +202,6 @@
newtag->lockfunc = dflt_lock;
newtag->lockfuncarg = NULL;
}
-
/*
* Take into account any restrictions imposed by our parent tag
*/
@@ -257,34 +258,6 @@
return (0);
}
-static void
-arm_dmamap_freesegs(bus_dmamap_t map)
-{
- struct arm_seglist *seg = SLIST_FIRST(&map->seglist);
-
- while (seg) {
- struct arm_seglist *next;
-
- next = SLIST_NEXT(seg, next);
- SLIST_REMOVE_HEAD(&map->seglist, next);
- free(seg, M_DEVBUF);
- seg = next;
- }
-}
-
-static int
-arm_dmamap_addseg(bus_dmamap_t map, vm_offset_t addr, vm_size_t size)
-{
- struct arm_seglist *seg = malloc(sizeof(*seg), M_DEVBUF, M_NOWAIT);
-
- if (!seg)
- return (ENOMEM);
- seg->seg.ds_addr = addr;
- seg->seg.ds_len = size;
- SLIST_INSERT_HEAD(&map->seglist, seg, next);
- return (0);
-}
-
/*
* Allocate a handle for mapping from kva/uva/physical
* address space into bus device space.
@@ -297,8 +270,9 @@
newmap = malloc(sizeof(*newmap), M_DEVBUF, M_NOWAIT | M_ZERO);
if (newmap == NULL)
return (ENOMEM);
- SLIST_INIT(&newmap->seglist);
*mapp = newmap;
+ newmap->dmat = dmat;
+ newmap->flags = 0;
dmat->map_count++;
return (0);
@@ -311,7 +285,7 @@
int
bus_dmamap_destroy(bus_dma_tag_t dmat, bus_dmamap_t map)
{
- arm_dmamap_freesegs(map);
+
free(map, M_DEVBUF);
dmat->map_count--;
return (0);
@@ -326,7 +300,7 @@
bus_dmamem_alloc(bus_dma_tag_t dmat, void** vaddr, int flags,
bus_dmamap_t *mapp)
{
- bus_dmamap_t newmap;
+ bus_dmamap_t newmap = NULL;
int mflags;
@@ -337,11 +311,16 @@
if (flags & BUS_DMA_ZERO)
mflags |= M_ZERO;
- newmap = malloc(sizeof(*newmap), M_DEVBUF, M_NOWAIT | M_ZERO);
- if (newmap == NULL)
- return (ENOMEM);
- SLIST_INIT(&newmap->seglist);
- *mapp = newmap;
+ if (!*mapp) {
+ newmap = malloc(sizeof(*newmap), M_DEVBUF, M_NOWAIT | M_ZERO);
+ if (newmap == NULL)
+ return (ENOMEM);
+ dmat->map_count++;
+ newmap->flags = 0;
+ *mapp = newmap;
+ newmap->dmat = dmat;
+ }
+
if (dmat->maxsize <= PAGE_SIZE) {
*vaddr = malloc(dmat->maxsize, M_DEVBUF, mflags);
} else {
@@ -354,13 +333,12 @@
0ul, dmat->lowaddr, dmat->alignment? dmat->alignment : 1ul,
dmat->boundary);
}
-
- if (*vaddr == NULL) {
+ if (*vaddr == NULL && newmap != NULL) {
free(newmap, M_DEVBUF);
+ dmat->map_count--;
*mapp = NULL;
return (ENOMEM);
}
-
return (0);
}
@@ -371,14 +349,12 @@
void
bus_dmamem_free(bus_dma_tag_t dmat, void *vaddr, bus_dmamap_t map)
{
- if (map != NULL)
- panic("bus_dmamem_free: Invalid map freed\n");
if (dmat->maxsize <= PAGE_SIZE)
free(vaddr, M_DEVBUF);
else {
contigfree(vaddr, dmat->maxsize, M_DEVBUF);
}
- arm_dmamap_freesegs(map);
+ dmat->map_count--;
free(map, M_DEVBUF);
}
@@ -398,10 +374,17 @@
bus_dma_segment_t dm_segments[BUS_DMAMAP_NSEGS];
#endif
+ map->flags &= ~DMAMAP_TYPE_MASK;
+ map->flags |= DMAMAP_LINEAR|DMAMAP_COHERENT;
+ map->buffer = buf;
+ map->len = buflen;
error = bus_dmamap_load_buffer(dmat,
dm_segments, map, buf, buflen, NULL,
flags, &lastaddr, &nsegs, 1);
- (*callback)(callback_arg, dm_segments, nsegs, error);
+ if (error)
+ (*callback)(callback_arg, NULL, 0, error);
+ else
+ (*callback)(callback_arg, dm_segments, nsegs + 1, error);
return (0);
}
@@ -428,7 +411,6 @@
pt_entry_t pte;
pt_entry_t *ptep;
-
if (td != NULL)
pmap = vmspace_pmap(td->td_proc->p_vmspace);
else
@@ -451,7 +433,7 @@
(vaddr & L1_S_OFFSET);
if (*pde & L1_S_CACHE_MASK) {
map->flags &=
- ~ARM32_DMAMAP_COHERENT;
+ ~DMAMAP_COHERENT;
}
} else {
pte = *ptep;
@@ -463,22 +445,37 @@
(vaddr & L2_L_OFFSET);
if (pte & L2_L_CACHE_MASK) {
map->flags &=
- ~ARM32_DMAMAP_COHERENT;
+ ~DMAMAP_COHERENT;
+
}
} else {
curaddr = (pte & L2_S_FRAME) |
(vaddr & L2_S_OFFSET);
if (pte & L2_S_CACHE_MASK) {
map->flags &=
- ~ARM32_DMAMAP_COHERENT;
+ ~DMAMAP_COHERENT;
}
}
}
} else {
curaddr = pmap_extract(pmap, vaddr);
- map->flags &= ~ARM32_DMAMAP_COHERENT;
+ map->flags &= ~DMAMAP_COHERENT;
}
+ if (dmat->ranges) {
+ struct arm32_dma_range *dr;
+
+ dr = _bus_dma_inrange(dmat->ranges, dmat->_nranges,
+ curaddr);
+ if (dr == NULL)
+ return (EINVAL);
+ /*
+ * In a valid DMA range. Translate the physical
+ * memory address to an address in the DMA window.
+ */
+ curaddr = (curaddr - dr->dr_sysbase) + dr->dr_busbase;
+
+ }
/*
* Compute the segment size, and adjust counts.
*/
@@ -499,11 +496,6 @@
* Insert chunk into a segment, coalescing with
* the previous segment if possible.
*/
- error = arm_dmamap_addseg(map,
- (vm_offset_t)curaddr, sgsize);
- if (error)
- break;
-
if (first) {
segs[seg].ds_addr = curaddr;
segs[seg].ds_len = sgsize;
@@ -512,8 +504,11 @@
if (curaddr == lastaddr &&
(segs[seg].ds_len + sgsize) <= dmat->maxsegsz &&
(dmat->boundary == 0 ||
- (segs[seg].ds_addr & bmask) == (curaddr & bmask)))
+ (segs[seg].ds_addr & bmask) ==
+ (curaddr & bmask))) {
segs[seg].ds_len += sgsize;
+ goto segdone;
+ }
else {
if (++seg >= dmat->nsegments)
break;
@@ -522,6 +517,9 @@
}
}
+ if (error)
+ break;
+segdone:
lastaddr = curaddr + sgsize;
vaddr += sgsize;
buflen -= sgsize;
@@ -555,6 +553,9 @@
M_ASSERTPKTHDR(m0);
+ map->flags &= ~DMAMAP_TYPE_MASK;
+ map->flags |= DMAMAP_MBUF | DMAMAP_COHERENT;
+ map->buffer = m0;
if (m0->m_pkthdr.len <= dmat->maxsize) {
int first = 1;
vm_offset_t lastaddr = 0;
@@ -578,7 +579,7 @@
*/
(*callback)(callback_arg, dm_segments, 0, 0, error);
} else {
- (*callback)(callback_arg, dm_segments, nsegs+1,
+ (*callback)(callback_arg, dm_segments, nsegs + 1,
m0->m_pkthdr.len, error);
}
return (error);
@@ -605,6 +606,9 @@
resid = uio->uio_resid;
iov = uio->uio_iov;
+ map->flags &= ~DMAMAP_TYPE_MASK;
+ map->flags |= DMAMAP_UIO|DMAMAP_COHERENT;
+ map->buffer = uio;
if (uio->uio_segflg == UIO_USERSPACE) {
td = uio->uio_td;
@@ -647,30 +651,73 @@
}
/*
- * Release the mapping held by map. A no-op on PowerPC.
+ * Release the mapping held by map.
*/
void
bus_dmamap_unload(bus_dma_tag_t dmat, bus_dmamap_t map)
{
- arm_dmamap_freesegs(map);
+ map->flags &= ~DMAMAP_TYPE_MASK;
return;
}
+static void
+bus_dmamap_sync_buf(void *buf, int len, bus_dmasync_op_t op)
+{
+
+ if (op & BUS_DMASYNC_POSTREAD ||
+ op == (BUS_DMASYNC_PREREAD|BUS_DMASYNC_PREWRITE)) {
+ cpu_dcache_wbinv_range((vm_offset_t)buf, len);
+ return;
+ }
+ if (op & BUS_DMASYNC_PREWRITE)
+ cpu_dcache_wb_range((vm_offset_t)buf, len);
+ if (op & BUS_DMASYNC_PREREAD) {
+ if ((((vm_offset_t)buf | len) & arm_dcache_align_mask) == 0)
+ cpu_dcache_inv_range((vm_offset_t)buf, len);
+ else
+ cpu_dcache_wbinv_range((vm_offset_t)buf, len);
+ }
+}
+
void
bus_dmamap_sync(bus_dma_tag_t dmat, bus_dmamap_t map, bus_dmasync_op_t op)
{
- struct arm_seglist *seg = SLIST_FIRST(&map->seglist);
-
- if (op != BUS_DMASYNC_PREREAD && op != BUS_DMASYNC_PREWRITE)
+ struct mbuf *m;
+ struct uio *uio;
+ int resid;
+ struct iovec *iov;
+
+ if (op == BUS_DMASYNC_POSTREAD)
return;
- /* Skip cache frobbing if mapping was COHERENT. */
- if (map->flags & ARM32_DMAMAP_COHERENT) {
- /* Drain the write buffer. */
- cpu_drain_writebuf();
+ if (map->flags & DMAMAP_COHERENT)
return;
+ switch(map->flags & DMAMAP_TYPE_MASK) {
+ case DMAMAP_LINEAR:
+ bus_dmamap_sync_buf(map->buffer, map->len, op);
+ break;
+ case DMAMAP_MBUF:
+ m = map->buffer;
+ while (m) {
+ bus_dmamap_sync_buf(m->m_data, m->m_len, op);
+ m = m->m_next;
+ }
+ break;
+ case DMAMAP_UIO:
+ uio = map->buffer;
+ iov = uio->uio_iov;
+ resid = uio->uio_resid;
+ for (int i = 0; i < uio->uio_iovcnt && resid != 0; i++) {
+ bus_size_t minlen = resid < iov[i].iov_len ? resid :
+ iov[i].iov_len;
+ if (minlen > 0) {
>>> TRUNCATED FOR MAIL (1000 lines) <<<
More information about the p4-projects
mailing list