PERFORCE change 98901 for review

Warner Losh imp at FreeBSD.org
Sat Jun 10 05:57:47 UTC 2006


http://perforce.freebsd.org/chv.cgi?CH=98901

Change 98901 by imp at imp_harmony on 2006/06/10 05:54:52

	IFC @98899

Affected files ...

.. //depot/projects/arm/src/sys/amd64/amd64/pmap.c#13 integrate
.. //depot/projects/arm/src/sys/arm/arm/pmap.c#18 integrate
.. //depot/projects/arm/src/sys/arm/arm/vm_machdep.c#6 integrate
.. //depot/projects/arm/src/sys/arm/at91/kb920x_machdep.c#21 integrate
.. //depot/projects/arm/src/sys/arm/conf/IQ31244#3 integrate
.. //depot/projects/arm/src/sys/arm/conf/KB920X#29 integrate
.. //depot/projects/arm/src/sys/arm/conf/SKYEYE#5 integrate
.. //depot/projects/arm/src/sys/arm/include/pmap.h#10 integrate
.. //depot/projects/arm/src/sys/arm/sa11x0/assabet_machdep.c#5 integrate
.. //depot/projects/arm/src/sys/arm/sa11x0/uart_cpu_sa1110.c#3 integrate
.. //depot/projects/arm/src/sys/arm/sa11x0/uart_dev_sa1110.c#6 integrate
.. //depot/projects/arm/src/sys/arm/xscale/i80321/iq31244_machdep.c#9 integrate
.. //depot/projects/arm/src/sys/bsm/audit.h#5 integrate
.. //depot/projects/arm/src/sys/bsm/audit_record.h#3 integrate
.. //depot/projects/arm/src/sys/cam/cam_ccb.h#4 integrate
.. //depot/projects/arm/src/sys/cam/cam_xpt.c#6 integrate
.. //depot/projects/arm/src/sys/compat/freebsd32/freebsd32_misc.c#10 integrate
.. //depot/projects/arm/src/sys/conf/NOTES#21 integrate
.. //depot/projects/arm/src/sys/conf/files#29 integrate
.. //depot/projects/arm/src/sys/conf/files.arm#3 integrate
.. //depot/projects/arm/src/sys/conf/files.powerpc#8 integrate
.. //depot/projects/arm/src/sys/conf/options#20 integrate
.. //depot/projects/arm/src/sys/conf/options.arm#10 integrate
.. //depot/projects/arm/src/sys/contrib/dev/ath/COPYRIGHT#3 integrate
.. //depot/projects/arm/src/sys/contrib/dev/ath/README#3 integrate
.. //depot/projects/arm/src/sys/contrib/dev/ath/ah.h#3 integrate
.. //depot/projects/arm/src/sys/contrib/dev/ath/ah_desc.h#3 integrate
.. //depot/projects/arm/src/sys/contrib/dev/ath/ah_devid.h#3 integrate
.. //depot/projects/arm/src/sys/contrib/dev/ath/ah_soc.h#1 branch
.. //depot/projects/arm/src/sys/contrib/dev/ath/freebsd/ah_if.m#3 integrate
.. //depot/projects/arm/src/sys/contrib/dev/ath/freebsd/ah_osdep.c#4 integrate
.. //depot/projects/arm/src/sys/contrib/dev/ath/freebsd/ah_osdep.h#3 integrate
.. //depot/projects/arm/src/sys/contrib/dev/ath/public/alpha-elf.hal.o.uu#2 integrate
.. //depot/projects/arm/src/sys/contrib/dev/ath/public/ap30.hal.o.uu#1 branch
.. //depot/projects/arm/src/sys/contrib/dev/ath/public/ap30.inc#1 branch
.. //depot/projects/arm/src/sys/contrib/dev/ath/public/ap30.opt_ah.h#1 branch
.. //depot/projects/arm/src/sys/contrib/dev/ath/public/ap43.hal.o.uu#1 branch
.. //depot/projects/arm/src/sys/contrib/dev/ath/public/ap43.inc#1 branch
.. //depot/projects/arm/src/sys/contrib/dev/ath/public/ap43.opt_ah.h#1 branch
.. //depot/projects/arm/src/sys/contrib/dev/ath/public/ap51.hal.o.uu#1 branch
.. //depot/projects/arm/src/sys/contrib/dev/ath/public/ap51.inc#1 branch
.. //depot/projects/arm/src/sys/contrib/dev/ath/public/ap51.opt_ah.h#1 branch
.. //depot/projects/arm/src/sys/contrib/dev/ath/public/ap61.hal.o.uu#1 branch
.. //depot/projects/arm/src/sys/contrib/dev/ath/public/ap61.inc#1 branch
.. //depot/projects/arm/src/sys/contrib/dev/ath/public/ap61.opt_ah.h#1 branch
.. //depot/projects/arm/src/sys/contrib/dev/ath/public/arm9-le-thumb-elf.hal.o.uu#3 integrate
.. //depot/projects/arm/src/sys/contrib/dev/ath/public/arm9-le-thumb-elf.inc#3 integrate
.. //depot/projects/arm/src/sys/contrib/dev/ath/public/armv4-be-elf.hal.o.uu#3 integrate
.. //depot/projects/arm/src/sys/contrib/dev/ath/public/armv4-be-elf.inc#3 integrate
.. //depot/projects/arm/src/sys/contrib/dev/ath/public/armv4-be-elf.opt_ah.h#3 integrate
.. //depot/projects/arm/src/sys/contrib/dev/ath/public/armv4-le-elf.hal.o.uu#3 integrate
.. //depot/projects/arm/src/sys/contrib/dev/ath/public/armv4-le-elf.inc#3 integrate
.. //depot/projects/arm/src/sys/contrib/dev/ath/public/armv4-le-elf.opt_ah.h#3 integrate
.. //depot/projects/arm/src/sys/contrib/dev/ath/public/i386-elf.hal.o.uu#3 integrate
.. //depot/projects/arm/src/sys/contrib/dev/ath/public/i386-elf.inc#3 integrate
.. //depot/projects/arm/src/sys/contrib/dev/ath/public/mips-be-elf.hal.o.uu#3 integrate
.. //depot/projects/arm/src/sys/contrib/dev/ath/public/mips-be-elf.inc#3 integrate
.. //depot/projects/arm/src/sys/contrib/dev/ath/public/mips-be-elf.opt_ah.h#3 integrate
.. //depot/projects/arm/src/sys/contrib/dev/ath/public/mips-le-elf.hal.o.uu#3 integrate
.. //depot/projects/arm/src/sys/contrib/dev/ath/public/mips-le-elf.inc#3 integrate
.. //depot/projects/arm/src/sys/contrib/dev/ath/public/mips-le-elf.opt_ah.h#3 integrate
.. //depot/projects/arm/src/sys/contrib/dev/ath/public/mips1-be-elf.hal.o.uu#3 integrate
.. //depot/projects/arm/src/sys/contrib/dev/ath/public/mips1-be-elf.inc#3 integrate
.. //depot/projects/arm/src/sys/contrib/dev/ath/public/mips1-be-elf.opt_ah.h#3 integrate
.. //depot/projects/arm/src/sys/contrib/dev/ath/public/mips1-le-elf.hal.o.uu#3 integrate
.. //depot/projects/arm/src/sys/contrib/dev/ath/public/mips1-le-elf.inc#3 integrate
.. //depot/projects/arm/src/sys/contrib/dev/ath/public/mips1-le-elf.opt_ah.h#3 integrate
.. //depot/projects/arm/src/sys/contrib/dev/ath/public/mipsisa32-be-elf.hal.o.uu#3 integrate
.. //depot/projects/arm/src/sys/contrib/dev/ath/public/mipsisa32-be-elf.inc#3 integrate
.. //depot/projects/arm/src/sys/contrib/dev/ath/public/mipsisa32-be-elf.opt_ah.h#3 integrate
.. //depot/projects/arm/src/sys/contrib/dev/ath/public/mipsisa32-le-elf.hal.o.uu#3 integrate
.. //depot/projects/arm/src/sys/contrib/dev/ath/public/mipsisa32-le-elf.inc#3 integrate
.. //depot/projects/arm/src/sys/contrib/dev/ath/public/mipsisa32-le-elf.opt_ah.h#3 integrate
.. //depot/projects/arm/src/sys/contrib/dev/ath/public/powerpc-be-eabi.hal.o.uu#3 integrate
.. //depot/projects/arm/src/sys/contrib/dev/ath/public/powerpc-be-eabi.inc#3 integrate
.. //depot/projects/arm/src/sys/contrib/dev/ath/public/powerpc-be-eabi.opt_ah.h#3 integrate
.. //depot/projects/arm/src/sys/contrib/dev/ath/public/powerpc-be-elf.hal.o.uu#2 integrate
.. //depot/projects/arm/src/sys/contrib/dev/ath/public/powerpc-be-elf.inc#2 integrate
.. //depot/projects/arm/src/sys/contrib/dev/ath/public/powerpc-be-elf.opt_ah.h#2 integrate
.. //depot/projects/arm/src/sys/contrib/dev/ath/public/powerpc-le-eabi.hal.o.uu#3 integrate
.. //depot/projects/arm/src/sys/contrib/dev/ath/public/powerpc-le-eabi.inc#3 integrate
.. //depot/projects/arm/src/sys/contrib/dev/ath/public/powerpc-le-eabi.opt_ah.h#3 integrate
.. //depot/projects/arm/src/sys/contrib/dev/ath/public/sh4-le-elf.hal.o.uu#3 integrate
.. //depot/projects/arm/src/sys/contrib/dev/ath/public/sh4-le-elf.inc#3 integrate
.. //depot/projects/arm/src/sys/contrib/dev/ath/public/sparc-be-elf.hal.o.uu#1 branch
.. //depot/projects/arm/src/sys/contrib/dev/ath/public/sparc-be-elf.inc#1 branch
.. //depot/projects/arm/src/sys/contrib/dev/ath/public/sparc-be-elf.opt_ah.h#1 branch
.. //depot/projects/arm/src/sys/contrib/dev/ath/public/sparc64-be-elf.hal.o.uu#2 integrate
.. //depot/projects/arm/src/sys/contrib/dev/ath/public/sparc64-be-elf.inc#2 integrate
.. //depot/projects/arm/src/sys/contrib/dev/ath/public/x86_64-elf.hal.o.uu#3 integrate
.. //depot/projects/arm/src/sys/contrib/dev/ath/public/x86_64-elf.inc#3 integrate
.. //depot/projects/arm/src/sys/contrib/dev/ath/public/xscale-be-elf.hal.o.uu#3 integrate
.. //depot/projects/arm/src/sys/contrib/dev/ath/public/xscale-be-elf.inc#3 integrate
.. //depot/projects/arm/src/sys/contrib/dev/ath/public/xscale-be-elf.opt_ah.h#3 integrate
.. //depot/projects/arm/src/sys/contrib/dev/ath/public/xscale-le-elf.hal.o.uu#3 integrate
.. //depot/projects/arm/src/sys/contrib/dev/ath/public/xscale-le-elf.inc#3 integrate
.. //depot/projects/arm/src/sys/contrib/dev/ath/public/xscale-le-elf.opt_ah.h#3 integrate
.. //depot/projects/arm/src/sys/contrib/dev/ath/version.h#3 integrate
.. //depot/projects/arm/src/sys/crypto/via/padlock.c#4 integrate
.. //depot/projects/arm/src/sys/dev/acpi_support/acpi_panasonic.c#3 integrate
.. //depot/projects/arm/src/sys/dev/acpica/acpi_hpet.c#2 integrate
.. //depot/projects/arm/src/sys/dev/ath/if_ath.c#13 integrate
.. //depot/projects/arm/src/sys/dev/ath/if_ath_pci.c#4 integrate
.. //depot/projects/arm/src/sys/dev/ath/if_athvar.h#9 integrate
.. //depot/projects/arm/src/sys/dev/bce/if_bce.c#3 integrate
.. //depot/projects/arm/src/sys/dev/bge/if_bge.c#15 integrate
.. //depot/projects/arm/src/sys/dev/bge/if_bgereg.h#10 integrate
.. //depot/projects/arm/src/sys/dev/dc/dcphy.c#2 integrate
.. //depot/projects/arm/src/sys/dev/dc/if_dc.c#8 integrate
.. //depot/projects/arm/src/sys/dev/dc/if_dcreg.h#5 integrate
.. //depot/projects/arm/src/sys/dev/em/if_em.c#18 integrate
.. //depot/projects/arm/src/sys/dev/hifn/hifn7751.c#6 integrate
.. //depot/projects/arm/src/sys/dev/le/if_le_pci.c#3 integrate
.. //depot/projects/arm/src/sys/dev/mpt/mpt.h#14 integrate
.. //depot/projects/arm/src/sys/dev/mpt/mpt_cam.c#17 integrate
.. //depot/projects/arm/src/sys/dev/my/if_my.c#6 integrate
.. //depot/projects/arm/src/sys/dev/pccbb/pccbb.c#12 integrate
.. //depot/projects/arm/src/sys/dev/pccbb/pccbb_isa.c#3 integrate
.. //depot/projects/arm/src/sys/dev/pccbb/pccbb_pci.c#6 integrate
.. //depot/projects/arm/src/sys/dev/pccbb/pccbbvar.h#4 integrate
.. //depot/projects/arm/src/sys/dev/ral/rt2661.c#5 integrate
.. //depot/projects/arm/src/sys/dev/safe/safe.c#6 integrate
.. //depot/projects/arm/src/sys/dev/sk/if_sk.c#2 integrate
.. //depot/projects/arm/src/sys/dev/ubsec/ubsec.c#6 integrate
.. //depot/projects/arm/src/sys/dev/usb/if_axe.c#6 integrate
.. //depot/projects/arm/src/sys/dev/usb/if_axereg.h#4 integrate
.. //depot/projects/arm/src/sys/dev/usb/ugen.c#4 integrate
.. //depot/projects/arm/src/sys/dev/wi/if_wi.c#6 integrate
.. //depot/projects/arm/src/sys/fs/procfs/procfs.c#3 integrate
.. //depot/projects/arm/src/sys/geom/eli/g_eli.c#10 integrate
.. //depot/projects/arm/src/sys/geom/eli/g_eli.h#4 integrate
.. //depot/projects/arm/src/sys/geom/eli/g_eli_ctl.c#4 integrate
.. //depot/projects/arm/src/sys/geom/eli/g_eli_integrity.c#1 branch
.. //depot/projects/arm/src/sys/geom/eli/g_eli_key.c#3 integrate
.. //depot/projects/arm/src/sys/geom/eli/g_eli_privacy.c#1 branch
.. //depot/projects/arm/src/sys/geom/geom.h#4 integrate
.. //depot/projects/arm/src/sys/geom/geom_gpt.c#5 integrate
.. //depot/projects/arm/src/sys/geom/geom_io.c#5 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/FreeBSD/support/atomic.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/FreeBSD/support/debug.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/FreeBSD/support/kmem.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/FreeBSD/support/ktrace.c#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/FreeBSD/support/rwlock.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/FreeBSD/support/spin.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/FreeBSD/support/sv.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/FreeBSD/xfs_buf.c#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/FreeBSD/xfs_buf.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/FreeBSD/xfs_compat.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/FreeBSD/xfs_dmistubs.c#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/FreeBSD/xfs_freebsd.h#3 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/FreeBSD/xfs_freebsd_iget.c#1 branch
.. //depot/projects/arm/src/sys/gnu/fs/xfs/FreeBSD/xfs_frw.c#3 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/FreeBSD/xfs_frw.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/FreeBSD/xfs_globals.c#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/FreeBSD/xfs_iget.c#3 delete
.. //depot/projects/arm/src/sys/gnu/fs/xfs/FreeBSD/xfs_ioctl.c#3 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/FreeBSD/xfs_iops.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/FreeBSD/xfs_mountops.c#5 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/FreeBSD/xfs_super.c#3 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/FreeBSD/xfs_super.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/FreeBSD/xfs_sysctl.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/FreeBSD/xfs_vfs.c#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/FreeBSD/xfs_vfs.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/FreeBSD/xfs_vnode.c#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/FreeBSD/xfs_vnode.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/FreeBSD/xfs_vnops.c#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_acl.c#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_acl.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_ag.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_alloc.c#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_alloc.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_alloc_btree.c#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_alloc_btree.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_arch.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_attr.c#3 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_attr.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_attr_leaf.c#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_attr_leaf.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_attr_sf.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_behavior.c#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_behavior.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_bit.c#3 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_bit.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_bmap.c#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_bmap.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_bmap_btree.c#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_bmap_btree.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_btree.c#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_btree.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_buf_item.c#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_buf_item.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_cap.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_clnt.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_da_btree.c#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_da_btree.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_dfrag.c#3 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_dfrag.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_dinode.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_dir.c#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_dir.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_dir2.c#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_dir2.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_dir2_block.c#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_dir2_block.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_dir2_data.c#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_dir2_data.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_dir2_leaf.c#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_dir2_leaf.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_dir2_node.c#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_dir2_node.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_dir2_sf.c#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_dir2_sf.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_dir2_trace.c#3 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_dir2_trace.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_dir_leaf.c#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_dir_leaf.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_dir_sf.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_dmapi.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_dmops.c#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_error.c#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_error.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_extfree_item.c#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_extfree_item.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_fs.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_fsops.c#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_fsops.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_ialloc.c#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_ialloc.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_ialloc_btree.c#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_ialloc_btree.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_iget.c#1 branch
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_imap.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_inode.c#3 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_inode.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_inode_item.c#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_inode_item.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_inum.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_iocore.c#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_iomap.c#3 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_iomap.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_itable.c#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_itable.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_log.c#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_log.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_log_priv.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_log_recover.c#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_log_recover.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_mac.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_macros.c#2 delete
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_macros.h#2 delete
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_mount.c#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_mount.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_qmops.c#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_quota.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_refcache.c#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_refcache.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_rename.c#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_rtalloc.c#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_rtalloc.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_rw.c#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_rw.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_sb.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_trans.c#3 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_trans.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_trans_ail.c#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_trans_buf.c#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_trans_extfree.c#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_trans_inode.c#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_trans_item.c#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_trans_priv.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_trans_space.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_types.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_utils.c#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_utils.h#2 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_vfsops.c#3 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfs_vnodeops.c#3 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/xfsidbg.c#2 integrate
.. //depot/projects/arm/src/sys/i386/acpica/acpi_machdep.c#3 integrate
.. //depot/projects/arm/src/sys/i386/acpica/acpi_wakecode.S#3 integrate
.. //depot/projects/arm/src/sys/i386/acpica/acpi_wakeup.c#4 integrate
.. //depot/projects/arm/src/sys/i386/i386/minidump_machdep.c#2 integrate
.. //depot/projects/arm/src/sys/i386/i386/pmap.c#10 integrate
.. //depot/projects/arm/src/sys/ia64/ia64/pmap.c#6 integrate
.. //depot/projects/arm/src/sys/kern/kern_acct.c#8 integrate
.. //depot/projects/arm/src/sys/kern/kern_mutex.c#7 integrate
.. //depot/projects/arm/src/sys/kern/kern_synch.c#10 integrate
.. //depot/projects/arm/src/sys/kern/sched_4bsd.c#5 integrate
.. //depot/projects/arm/src/sys/kern/sched_ule.c#6 integrate
.. //depot/projects/arm/src/sys/kern/uipc_socket.c#12 integrate
.. //depot/projects/arm/src/sys/kern/vfs_mount.c#17 integrate
.. //depot/projects/arm/src/sys/kern/vfs_subr.c#18 integrate
.. //depot/projects/arm/src/sys/kern/vfs_syscalls.c#14 integrate
.. //depot/projects/arm/src/sys/modules/Makefile#20 integrate
.. //depot/projects/arm/src/sys/modules/ath_hal/Makefile#3 integrate
.. //depot/projects/arm/src/sys/modules/geom/geom_bde/Makefile#2 integrate
.. //depot/projects/arm/src/sys/modules/geom/geom_eli/Makefile#4 integrate
.. //depot/projects/arm/src/sys/modules/if_bridge/Makefile#3 integrate
.. //depot/projects/arm/src/sys/modules/xfs/Makefile#3 integrate
.. //depot/projects/arm/src/sys/net/bpf.h#4 integrate
.. //depot/projects/arm/src/sys/net/if_bridge.c#13 integrate
.. //depot/projects/arm/src/sys/net/route.c#4 integrate
.. //depot/projects/arm/src/sys/netatalk/COPYRIGHT#2 integrate
.. //depot/projects/arm/src/sys/netgraph/netgraph.h#5 integrate
.. //depot/projects/arm/src/sys/netgraph/ng_base.c#6 integrate
.. //depot/projects/arm/src/sys/netinet/if_ether.c#10 integrate
.. //depot/projects/arm/src/sys/netinet/ip_dummynet.c#8 integrate
.. //depot/projects/arm/src/sys/netinet/ip_fw2.c#12 integrate
.. //depot/projects/arm/src/sys/netinet/tcp_timer.c#6 integrate
.. //depot/projects/arm/src/sys/netinet/tcp_usrreq.c#8 integrate
.. //depot/projects/arm/src/sys/netinet/udp_usrreq.c#10 integrate
.. //depot/projects/arm/src/sys/netinet6/in6.c#5 integrate
.. //depot/projects/arm/src/sys/netinet6/nd6.c#6 integrate
.. //depot/projects/arm/src/sys/netipsec/ipsec.c#6 integrate
.. //depot/projects/arm/src/sys/netipsec/ipsec_input.c#2 integrate
.. //depot/projects/arm/src/sys/nfsserver/nfs_serv.c#8 integrate
.. //depot/projects/arm/src/sys/nfsserver/nfs_srvsubs.c#5 integrate
.. //depot/projects/arm/src/sys/opencrypto/criov.c#3 integrate
.. //depot/projects/arm/src/sys/opencrypto/crypto.c#6 integrate
.. //depot/projects/arm/src/sys/opencrypto/cryptodev.h#4 integrate
.. //depot/projects/arm/src/sys/opencrypto/cryptosoft.c#6 integrate
.. //depot/projects/arm/src/sys/opencrypto/xform.c#5 integrate
.. //depot/projects/arm/src/sys/pc98/pc98/machdep.c#7 integrate
.. //depot/projects/arm/src/sys/powerpc/powerpc/mmu_if.m#4 integrate
.. //depot/projects/arm/src/sys/powerpc/powerpc/mmu_oea.c#2 integrate
.. //depot/projects/arm/src/sys/powerpc/powerpc/pmap_dispatch.c#4 integrate
.. //depot/projects/arm/src/sys/security/audit/audit.c#8 integrate
.. //depot/projects/arm/src/sys/security/audit/audit_arg.c#3 integrate
.. //depot/projects/arm/src/sys/security/audit/audit_bsm.c#4 integrate
.. //depot/projects/arm/src/sys/security/audit/audit_bsm_klib.c#4 integrate
.. //depot/projects/arm/src/sys/security/audit/audit_bsm_token.c#3 integrate
.. //depot/projects/arm/src/sys/security/audit/audit_ioctl.h#2 integrate
.. //depot/projects/arm/src/sys/security/audit/audit_pipe.c#4 integrate
.. //depot/projects/arm/src/sys/security/audit/audit_private.h#5 integrate
.. //depot/projects/arm/src/sys/security/audit/audit_syscalls.c#3 integrate
.. //depot/projects/arm/src/sys/security/audit/audit_trigger.c#3 integrate
.. //depot/projects/arm/src/sys/security/audit/audit_worker.c#2 integrate
.. //depot/projects/arm/src/sys/sparc64/conf/GENERIC#13 integrate
.. //depot/projects/arm/src/sys/sparc64/isa/isa.c#3 integrate
.. //depot/projects/arm/src/sys/sparc64/sbus/sbus.c#6 integrate
.. //depot/projects/arm/src/sys/sparc64/sparc64/pmap.c#8 integrate
.. //depot/projects/arm/src/sys/sys/mutex.h#5 integrate
.. //depot/projects/arm/src/sys/sys/protosw.h#5 integrate
.. //depot/projects/arm/src/sys/ufs/ffs/ffs_vfsops.c#14 integrate
.. //depot/projects/arm/src/sys/vm/pmap.h#5 integrate
.. //depot/projects/arm/src/sys/vm/vm_map.c#8 integrate
.. //depot/projects/arm/src/sys/vm/vm_meter.c#4 integrate
.. //depot/projects/arm/src/usr.sbin/config/config.y#5 integrate
.. //depot/projects/arm/src/usr.sbin/config/main.c#5 integrate
.. //depot/projects/arm/src/usr.sbin/config/mkmakefile.c#5 integrate
.. //depot/projects/arm/src/usr.sbin/config/mkoptions.c#3 integrate

Differences ...

==== //depot/projects/arm/src/sys/amd64/amd64/pmap.c#13 (text+ko) ====

@@ -77,7 +77,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.554 2006/05/01 22:06:59 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.555 2006/06/05 20:35:25 alc Exp $");
 
 /*
  *	Manages physical address maps.
@@ -209,6 +209,8 @@
 static pv_entry_t get_pv_entry(pmap_t locked_pmap, int try);
 static void	pmap_clear_ptes(vm_page_t m, long bit);
 
+static vm_page_t pmap_enter_quick_locked(pmap_t pmap, vm_offset_t va,
+    vm_page_t m, vm_prot_t prot, vm_page_t mpte);
 static int pmap_remove_pte(pmap_t pmap, pt_entry_t *ptq,
 		vm_offset_t sva, pd_entry_t ptepde);
 static void pmap_remove_page(pmap_t pmap, vm_offset_t va, pd_entry_t *pde);
@@ -2310,6 +2312,37 @@
 }
 
 /*
+ * Maps a sequence of resident pages belonging to the same object.
+ * The sequence begins with the given page m_start.  This page is
+ * mapped at the given virtual address start.  Each subsequent page is
+ * mapped at a virtual address that is offset from start by the same
+ * amount as the page is offset from m_start within the object.  The
+ * last page in the sequence is the page with the largest offset from
+ * m_start that can be mapped at a virtual address less than the given
+ * virtual address end.  Not every virtual page between start and end
+ * is mapped; only those for which a resident page exists with the
+ * corresponding offset from m_start are mapped.
+ */
+void
+pmap_enter_object(pmap_t pmap, vm_offset_t start, vm_offset_t end,
+    vm_page_t m_start, vm_prot_t prot)
+{
+	vm_page_t m, mpte;
+	vm_pindex_t diff, psize;
+
+	psize = atop(end - start);
+	mpte = NULL;
+	m = m_start;
+	PMAP_LOCK(pmap);
+	while (m != NULL && (diff = m->pindex - m_start->pindex) < psize) {
+		mpte = pmap_enter_quick_locked(pmap, start + ptoa(diff), m,
+		    prot, mpte);
+		m = TAILQ_NEXT(m, listq);
+	}
+ 	PMAP_UNLOCK(pmap);
+}
+
+/*
  * this code makes some *MAJOR* assumptions:
  * 1. Current pmap & pmap exists.
  * 2. Not wired.
@@ -2322,15 +2355,26 @@
 pmap_enter_quick(pmap_t pmap, vm_offset_t va, vm_page_t m, vm_prot_t prot,
     vm_page_t mpte)
 {
+
+	PMAP_LOCK(pmap);
+	mpte = pmap_enter_quick_locked(pmap, va, m, prot, mpte);
+	PMAP_UNLOCK(pmap);
+	return (mpte);
+}
+
+static vm_page_t
+pmap_enter_quick_locked(pmap_t pmap, vm_offset_t va, vm_page_t m,
+    vm_prot_t prot, vm_page_t mpte)
+{
 	pt_entry_t *pte;
 	vm_paddr_t pa;
 
 	KASSERT(va < kmi.clean_sva || va >= kmi.clean_eva ||
 	    (m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) != 0,
-	    ("pmap_enter_quick: managed mapping within the clean submap"));
+	    ("pmap_enter_quick_locked: managed mapping within the clean submap"));
 	mtx_assert(&vm_page_queue_mtx, MA_OWNED);
 	VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED);
-	PMAP_LOCK(pmap);
+	PMAP_LOCK_ASSERT(pmap, MA_OWNED);
 
 	/*
 	 * In the case that a page table page is not
@@ -2395,7 +2439,7 @@
 			pmap_unwire_pte_hold(pmap, va, mpte);
 			mpte = NULL;
 		}
-		goto out;
+		return (mpte);
 	}
 
 	/*
@@ -2422,8 +2466,6 @@
 		pte_store(pte, pa | PG_V | PG_U);
 	else
 		pte_store(pte, pa | PG_V | PG_U | PG_MANAGED);
-out:
-	PMAP_UNLOCK(pmap);
 	return mpte;
 }
 

==== //depot/projects/arm/src/sys/arm/arm/pmap.c#18 (text+ko) ====

@@ -147,7 +147,7 @@
 #include "opt_vm.h"
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/arm/pmap.c,v 1.52 2006/06/01 01:31:07 alc Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/arm/pmap.c,v 1.61 2006/06/10 05:20:18 alc Exp $");
 #include <sys/param.h>
 #include <sys/systm.h>
 #include <sys/kernel.h>
@@ -272,9 +272,6 @@
  */
 union pmap_cache_state *pmap_cache_state;
 
-LIST_HEAD(pmaplist, pmap);
-struct pmaplist allpmaps;
-
 /* static pt_entry_t *msgbufmap;*/
 struct msgbuf *msgbufp = 0;
 
@@ -415,7 +412,6 @@
 static vm_offset_t pmap_kernel_l2ptp_kva;
 static vm_paddr_t pmap_kernel_l2ptp_phys;
 static struct vm_object pvzone_obj;
-static struct vm_object l2zone_obj;
 static int pv_entry_count=0, pv_entry_max=0, pv_entry_high_water=0;
 int pmap_pagedaemon_waken = 0;
 
@@ -459,14 +455,8 @@
 	struct pv_addr *pv;
 
 	SLIST_FOREACH(pv, &kernel_pt_list, pv_list) {
-#ifndef ARM32_NEW_VM_LAYOUT
-		if (pv->pv_pa == (pa & ~PAGE_MASK)) {
-			return (pv->pv_va | (pa & PAGE_MASK));
-			}
-#else
 		if (pv->pv_pa == pa)
 			return (pv->pv_va);
-#endif
 	}
 	return (0);
 }
@@ -718,21 +708,12 @@
 
 	for (; size != 0;
 	     va += L2_S_SIZE, pa += L2_S_SIZE, size -= L2_S_SIZE) {
-#ifndef ARM32_NEW_VM_LAYOUT
-		pte = (pt_entry_t *)
-		    kernel_pt_lookup(pde[va >> L1_S_SHIFT] & L2_S_FRAME);
-#else
 		pte = (pt_entry_t *) kernel_pt_lookup(
 		    pde[L1_IDX(va)] & L1_C_ADDR_MASK);
-#endif
 		if (pte == NULL)
 			panic("xscale_setup_minidata: can't find L2 table for "
 			    "VA 0x%08x", (u_int32_t) va);
-#ifndef ARM32_NEW_VM_LAYOUT
-		pte[(va >> PAGE_SHIFT) & 0x3ff] =
-#else
 		pte[l2pte_index(va)] =
-#endif
 		    L2_S_PROTO | pa | L2_S_PROT(PTE_KERNEL, VM_PROT_READ) |
 		    L2_C | L2_XSCALE_T_TEX(TEX_XSCALE_X);
 	}
@@ -917,6 +898,7 @@
 
 	l1idx = L1_IDX(va);
 
+	PMAP_ASSERT_LOCKED(pm);
 	mtx_assert(&vm_page_queue_mtx, MA_OWNED);
 	if ((l2 = pm->pm_l2[L2_IDX(l1idx)]) == NULL) {
 		/*
@@ -925,16 +907,21 @@
 		 * Need to allocate a new l2_dtable.
 		 */
 again_l2table:
+		PMAP_UNLOCK(pm);
 		vm_page_unlock_queues();
 		if ((l2 = pmap_alloc_l2_dtable()) == NULL) {
 			vm_page_lock_queues();
+			PMAP_LOCK(pm);
 			return (NULL);
 		}
 		vm_page_lock_queues();
+		PMAP_LOCK(pm);
 		if (pm->pm_l2[L2_IDX(l1idx)] != NULL) {
+			PMAP_UNLOCK(pm);
 			vm_page_unlock_queues();
 			uma_zfree(l2table_zone, l2);
 			vm_page_lock_queues();
+			PMAP_LOCK(pm);
 			l2 = pm->pm_l2[L2_IDX(l1idx)];
 			if (l2 == NULL)
 				goto again_l2table;
@@ -964,14 +951,18 @@
 		 * is because we just allocated the l2_dtable, above.
 		 */
 again_ptep:
+		PMAP_UNLOCK(pm);
 		vm_page_unlock_queues();
 		ptep = (void*)uma_zalloc(l2zone, M_NOWAIT);
 		vm_page_lock_queues();
+		PMAP_LOCK(pm);
 		if (l2b->l2b_kva != 0) {
 			/* We lost the race. */
+			PMAP_UNLOCK(pm);
 			vm_page_unlock_queues();
 			uma_zfree(l2zone, ptep);
 			vm_page_lock_queues();
+			PMAP_LOCK(pm);
 			if (l2b->l2b_kva == 0)
 				goto again_ptep;
 			return (l2b);
@@ -1315,6 +1306,7 @@
 {
 	int nattr;
 
+	mtx_assert(&vm_page_queue_mtx, MA_OWNED);
 	nattr = pmap_get_vac_flags(pg);
 
 	if (nattr < 0) {
@@ -1545,10 +1537,8 @@
 	vm_offset_t va;
 	u_int oflags;
 	int count = 0;
-#if 0
-	PMAP_HEAD_TO_MAP_LOCK();
-	simple_lock(&pg->mdpage.pvh_slock);
-#endif
+
+	mtx_assert(&vm_page_queue_mtx, MA_OWNED);
 
 	/*
 	 * Clear saved attributes (modify, reference)
@@ -1556,10 +1546,6 @@
 	pg->md.pvh_attrs &= ~(maskbits & (PVF_MOD | PVF_REF));
 
 	if (TAILQ_EMPTY(&pg->md.pv_list)) {
-#if 0
-		simple_unlock(&pg->mdpage.pvh_slock);
-		PMAP_HEAD_TO_MAP_UNLOCK();
-#endif
 		return (0);
 	}
 
@@ -1572,9 +1558,7 @@
 		oflags = pv->pv_flags;
 		pv->pv_flags &= ~maskbits;
 
-#if 0
-		pmap_acquire_pmap_lock(pm);
-#endif
+		PMAP_LOCK(pm);
 
 		l2b = pmap_get_l2_bucket(pm, va);
 
@@ -1692,16 +1676,10 @@
 				pmap_tlb_flushD_SE(pm, pv->pv_va);
 		}
 
-#if 0
-		pmap_release_pmap_lock(pm);
-#endif
+		PMAP_UNLOCK(pm);
 
 	}
 
-#if 0
-	simple_unlock(&pg->mdpage.pvh_slock);
-	PMAP_HEAD_TO_MAP_UNLOCK();
-#endif
 	if (maskbits & PVF_WRITE)
 		vm_page_flag_clear(pg, PG_WRITEABLE);
 	return (count);
@@ -1730,14 +1708,12 @@
     vm_offset_t va, u_int flags)
 {
 
-
+	mtx_assert(&vm_page_queue_mtx, MA_OWNED);
+	PMAP_ASSERT_LOCKED(pm);
 	pve->pv_pmap = pm;
 	pve->pv_va = va;
 	pve->pv_flags = flags;
 
-#if 0
-	mtx_lock(&pg->md.pvh_mtx);
-#endif
 	TAILQ_INSERT_HEAD(&pg->md.pv_list, pve, pv_list);
 	TAILQ_INSERT_HEAD(&pm->pm_pvlist, pve, pv_plist);
 	pg->md.pvh_attrs |= flags & (PVF_REF | PVF_MOD);
@@ -1752,9 +1728,6 @@
 	else
 		pg->md.uro_mappings++;
 	pg->md.pv_list_count++;
-#if 0
-	mtx_unlock(&pg->md.pvh_mtx);
-#endif
 	if (pve->pv_flags & PVF_WIRED)
 		++pm->pm_stats.wired_count;
 	vm_page_flag_set(pg, PG_REFERENCED);
@@ -1771,6 +1744,7 @@
 {
 	struct pv_entry *pv;
 
+	mtx_assert(&vm_page_queue_mtx, MA_OWNED);
 	TAILQ_FOREACH(pv, &pg->md.pv_list, pv_list)
 	    if (pm == pv->pv_pmap && va == pv->pv_va)
 		    break;
@@ -1813,6 +1787,8 @@
 pmap_nuke_pv(struct vm_page *pg, pmap_t pm, struct pv_entry *pve)
 {
 
+	mtx_assert(&vm_page_queue_mtx, MA_OWNED);
+	PMAP_ASSERT_LOCKED(pm);
 	TAILQ_REMOVE(&pg->md.pv_list, pve, pv_list);
 	TAILQ_REMOVE(&pm->pm_pvlist, pve, pv_plist);
 	if (pve->pv_flags & PVF_WIRED)
@@ -1848,6 +1824,7 @@
 {
 	struct pv_entry *pve;
 
+	mtx_assert(&vm_page_queue_mtx, MA_OWNED);
 	pve = TAILQ_FIRST(&pg->md.pv_list);
 
 	while (pve) {
@@ -1879,6 +1856,8 @@
 	struct pv_entry *npv;
 	u_int flags, oflags;
 
+	PMAP_ASSERT_LOCKED(pm);
+	mtx_assert(&vm_page_queue_mtx, MA_OWNED);
 	if ((npv = pmap_find_pv(pg, pm, va)) == NULL)
 		return (0);
 
@@ -1944,6 +1923,8 @@
 	dprintf("pmap_pinit0: pmap = %08x, pm_pdir = %08x\n",
 		(u_int32_t) pmap, (u_int32_t) pmap->pm_pdir);
 	bcopy(kernel_pmap, pmap, sizeof(*pmap));
+	bzero(&pmap->pm_mtx, sizeof(pmap->pm_mtx));
+	PMAP_LOCK_INIT(pmap);
 }
 
 /*
@@ -1990,7 +1971,6 @@
 	    UMA_ZONE_VM | UMA_ZONE_NOFREE);
 
 	uma_zone_set_obj(pvzone, &pvzone_obj, pv_entry_max);
-	uma_zone_set_obj(l2zone, &l2zone_obj, pv_entry_max);
 
 }
 
@@ -2005,11 +1985,9 @@
 	u_int l1idx;
 	int rv = 0;
 
-#if 0
-	PMAP_MAP_TO_HEAD_LOCK();
-	pmap_acquire_pmap_lock(pm);
-#endif
 	l1idx = L1_IDX(va);
+	vm_page_lock_queues();
+	PMAP_LOCK(pm);
 
 	/*
 	 * If there is no l2_dtable for this address, then the process
@@ -2101,18 +2079,13 @@
 		struct vm_page *pg;
 
 		/* Extract the physical address of the page */
-		vm_page_lock_queues();
-		if ((pg = PHYS_TO_VM_PAGE(pa)) == NULL) {
-			vm_page_unlock_queues();
+		if ((pg = PHYS_TO_VM_PAGE(pa)) == NULL)
 			goto out;
-		}
 		/* Get the current flags for this page. */
 
 		pv = pmap_find_pv(pg, pm, va);
-		if (pv == NULL) {
-			vm_page_unlock_queues();
+		if (pv == NULL)
 			goto out;
-		}
 
 		pg->md.pvh_attrs |= PVF_REF;
 		pv->pv_flags |= PVF_REF;
@@ -2121,7 +2094,6 @@
 		*ptep = (pte & ~L2_TYPE_MASK) | L2_S_PROTO;
 		PTE_SYNC(ptep);
 		rv = 1;
-		vm_page_unlock_queues();
 	}
 
 	/*
@@ -2212,10 +2184,8 @@
 	rv = 1;
 
 out:
-#if 0
-	pmap_release_pmap_lock(pm);
-	PMAP_MAP_TO_HEAD_UNLOCK();
-#endif
+	vm_page_unlock_queues();
+	PMAP_UNLOCK(pm);
 	return (rv);
 }
 
@@ -2536,11 +2506,10 @@
 	cpu_tlb_flushID();
 	cpu_cpwait();
 
+	PMAP_LOCK_INIT(kernel_pmap);
 	kernel_pmap->pm_active = -1;
 	kernel_pmap->pm_domain = PMAP_DOMAIN_KERNEL;
-	LIST_INIT(&allpmaps);
 	TAILQ_INIT(&kernel_pmap->pm_pvlist);
-	LIST_INSERT_HEAD(&allpmaps, kernel_pmap, pm_list);
 	
 	/*
 	 * Reserve some special page table entries/VA space for temporary
@@ -2601,7 +2570,6 @@
 	pmap_idcache_wbinv_all(pmap);
 	pmap_tlb_flushID(pmap);
 	cpu_cpwait();
-	LIST_REMOVE(pmap, pm_list);
 	if (vector_page < KERNBASE) {
 		struct pcb *curpcb = PCPU_GET(curpcb);
 		pcb = thread0.td_pcb;
@@ -2630,6 +2598,7 @@
 
 	}
 	pmap_free_l1(pmap);
+	PMAP_LOCK_DESTROY(pmap);
 	
 	dprintf("pmap_release()\n");
 }
@@ -2839,6 +2808,7 @@
 	pt_entry_t *pt;
 	
 	vm_page_lock_queues();
+	PMAP_LOCK(pmap);
 	for (pv = TAILQ_FIRST(&pmap->pm_pvlist); pv; pv = npv) {
 		if (pv->pv_flags & PVF_WIRED) {
 			/* The page is wired, cannot remove it now. */
@@ -2868,6 +2838,7 @@
 	cpu_idcache_wbinv_all();
 	cpu_tlb_flushID();
 	cpu_cpwait();
+	PMAP_UNLOCK(pmap);
 }
 
 
@@ -3202,6 +3173,7 @@
 		if (flush == FALSE && (pv->pv_pmap == curpm ||
 		    pv->pv_pmap == pmap_kernel()))
 			flush = TRUE;
+		PMAP_LOCK(pv->pv_pmap);
 		l2b = pmap_get_l2_bucket(pv->pv_pmap, pv->pv_va);
 		KASSERT(l2b != NULL, ("No l2 bucket"));
 		ptep = &l2b->l2b_kva[l2pte_index(pv->pv_va)];
@@ -3214,6 +3186,7 @@
 		pv->pv_pmap->pm_stats.resident_count--;
 		flags |= pv->pv_flags;
 		pmap_nuke_pv(m, pv->pv_pmap, pv);
+		PMAP_UNLOCK(pv->pv_pmap);
 		pmap_free_pv_entry(pv);
 	}
 
@@ -3241,9 +3214,7 @@
 	int flush;
 
 	if ((prot & VM_PROT_READ) == 0) {
-		mtx_lock(&Giant);
 		pmap_remove(pm, sva, eva);
-		mtx_unlock(&Giant);
 		return;
 	}
 
@@ -3255,7 +3226,8 @@
 		return;
 	}
 
-	mtx_lock(&Giant);
+	vm_page_lock_queues();
+	PMAP_LOCK(pm);
 
 	/*
 	 * OK, at this point, we know we're doing write-protect operation.
@@ -3266,7 +3238,6 @@
 	flush = ((eva - sva) >= (PAGE_SIZE * 4)) ? 0 : -1;
 	flags = 0;
 
-	vm_page_lock_queues();
 	while (sva < eva) {
 		next_bucket = L2_NEXT_BUCKET(sva);
 		if (next_bucket > eva)
@@ -3324,7 +3295,7 @@
 	}
 	vm_page_unlock_queues();
 
-	mtx_unlock(&Giant);
+ 	PMAP_UNLOCK(pm);
 }
 
 
@@ -3347,8 +3318,10 @@
 {
 
 	vm_page_lock_queues();
+	PMAP_LOCK(pmap);
 	pmap_enter_locked(pmap, va, m, prot, wired);
 	vm_page_unlock_queues();
+ 	PMAP_UNLOCK(pmap);
 }
 
 /*
@@ -3366,6 +3339,7 @@
 	u_int oflags;
 	vm_paddr_t pa;
 
+	PMAP_ASSERT_LOCKED(pmap);
 	mtx_assert(&vm_page_queue_mtx, MA_OWNED);
 	if (va == vector_page) {
 		pa = systempage.pv_pa;
@@ -3449,15 +3423,9 @@
 		/*
 		 * We're changing the attrs of an existing mapping.
 		 */
-#if 0
-		simple_lock(&pg->mdpage.pvh_slock);
-#endif
 		oflags = pmap_modify_pv(m, pmap, va,
 		    PVF_WRITE | PVF_EXEC | PVF_WIRED |
 		    PVF_MOD | PVF_REF, nflags);
-#if 0
-		simple_unlock(&pg->mdpage.pvh_slock);
-#endif
 		
 		/*
 		 * We may need to flush the cache if we're
@@ -3479,9 +3447,6 @@
 			 * It is part of our managed memory so we
 			 * must remove it from the PV list
 			 */
-#if 0
-			simple_lock(&opg->mdpage.pvh_slock);
-#endif
 			pve = pmap_remove_pv(opg, pmap, va);
 			if (m && (m->flags & (PG_UNMANAGED | PG_FICTITIOUS)) &&
 			    pve)
@@ -3490,9 +3455,6 @@
 			    !(m->flags & (PG_UNMANAGED | PG_FICTITIOUS)))
 				pve = pmap_get_pv_entry();
 			KASSERT(pve != NULL, ("No pv"));
-#if 0
-			simple_unlock(&opg->mdpage.pvh_slock);
-#endif
 			oflags = pve->pv_flags;
 			
 			/*
@@ -3585,6 +3547,36 @@
 }
 
 /*
+ * Maps a sequence of resident pages belonging to the same object.
+ * The sequence begins with the given page m_start.  This page is
+ * mapped at the given virtual address start.  Each subsequent page is
+ * mapped at a virtual address that is offset from start by the same
+ * amount as the page is offset from m_start within the object.  The
+ * last page in the sequence is the page with the largest offset from
+ * m_start that can be mapped at a virtual address less than the given
+ * virtual address end.  Not every virtual page between start and end
+ * is mapped; only those for which a resident page exists with the
+ * corresponding offset from m_start are mapped.
+ */
+void
+pmap_enter_object(pmap_t pmap, vm_offset_t start, vm_offset_t end,
+    vm_page_t m_start, vm_prot_t prot)
+{
+	vm_page_t m;
+	vm_pindex_t diff, psize;
+
+	psize = atop(end - start);
+	m = m_start;
+	PMAP_LOCK(pmap);
+	while (m != NULL && (diff = m->pindex - m_start->pindex) < psize) {
+		pmap_enter_locked(pmap, start + ptoa(diff), m, prot &
+		    (VM_PROT_READ | VM_PROT_EXECUTE), FALSE);
+		m = TAILQ_NEXT(m, listq);
+	}
+ 	PMAP_UNLOCK(pmap);
+}
+
+/*
  * this code makes some *MAJOR* assumptions:
  * 1. Current pmap & pmap exists.
  * 2. Not wired.
@@ -3598,9 +3590,10 @@
     vm_page_t mpte)
 {
 
-	mtx_assert(&vm_page_queue_mtx, MA_OWNED);
+ 	PMAP_LOCK(pmap);
 	pmap_enter_locked(pmap, va, m, prot & (VM_PROT_READ | VM_PROT_EXECUTE),
 	    FALSE);
+ 	PMAP_UNLOCK(pmap);
 	return (NULL);
 }
 
@@ -3618,6 +3611,8 @@
 	pt_entry_t *ptep, pte;
 	vm_page_t pg;
 
+	vm_page_lock_queues();
+ 	PMAP_LOCK(pmap);
 	l2b = pmap_get_l2_bucket(pmap, va);
 	KASSERT(l2b, ("No l2b bucket in pmap_change_wiring"));
 	ptep = &l2b->l2b_kva[l2pte_index(va)];
@@ -3625,6 +3620,8 @@
 	pg = PHYS_TO_VM_PAGE(l2pte_pa(pte));
 	if (pg) 
 		pmap_modify_pv(pg, pmap, va, PVF_WIRED, wired);
+	vm_page_unlock_queues();
+ 	PMAP_UNLOCK(pmap);
 }
 
 
@@ -3652,14 +3649,14 @@
 pmap_extract(pmap_t pm, vm_offset_t va)
 {
 	struct l2_dtable *l2;

>>> TRUNCATED FOR MAIL (1000 lines) <<<


More information about the p4-projects mailing list