From owner-svn-src-projects@FreeBSD.ORG Sat May 8 20:08:02 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 7CA27106566B; Sat, 8 May 2010 20:08:02 +0000 (UTC) (envelope-from marcel@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [69.147.83.44]) by mx1.freebsd.org (Postfix) with ESMTP id 67E428FC17; Sat, 8 May 2010 20:08:02 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o48K82eh015926; Sat, 8 May 2010 20:08:02 GMT (envelope-from marcel@svn.freebsd.org) Received: (from marcel@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o48K82QP015916; Sat, 8 May 2010 20:08:02 GMT (envelope-from marcel@svn.freebsd.org) Message-Id: <201005082008.o48K82QP015916@svn.freebsd.org> From: Marcel Moolenaar Date: Sat, 8 May 2010 20:08:02 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r207795 - in projects/altix/sys: amd64/amd64 amd64/conf amd64/ia32 amd64/include amd64/include/xen arm/arm arm/at91 arm/conf arm/include arm/mv arm/xscale/ixp425 boot/forth boot/sparc64... X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 08 May 2010 20:08:02 -0000 Author: marcel Date: Sat May 8 20:08:01 2010 New Revision: 207795 URL: http://svn.freebsd.org/changeset/base/207795 Log: Merge svn+ssh://svn.freebsd.org/base/head@207793 Added: projects/altix/sys/contrib/dev/acpica/compiler/aslrestype1i.c - copied unchanged from r207793, head/sys/contrib/dev/acpica/compiler/aslrestype1i.c projects/altix/sys/contrib/dev/acpica/compiler/aslrestype2d.c - copied unchanged from r207793, head/sys/contrib/dev/acpica/compiler/aslrestype2d.c projects/altix/sys/contrib/dev/acpica/compiler/aslrestype2e.c - copied unchanged from r207793, head/sys/contrib/dev/acpica/compiler/aslrestype2e.c projects/altix/sys/contrib/dev/acpica/compiler/aslrestype2q.c - copied unchanged from r207793, head/sys/contrib/dev/acpica/compiler/aslrestype2q.c projects/altix/sys/contrib/dev/acpica/compiler/aslrestype2w.c - copied unchanged from r207793, head/sys/contrib/dev/acpica/compiler/aslrestype2w.c projects/altix/sys/contrib/dev/acpica/events/evgpeinit.c - copied unchanged from r207793, head/sys/contrib/dev/acpica/events/evgpeinit.c projects/altix/sys/contrib/dev/acpica/events/evgpeutil.c - copied unchanged from r207793, head/sys/contrib/dev/acpica/events/evgpeutil.c projects/altix/sys/dev/io/iodev.h - copied unchanged from r207793, head/sys/dev/io/iodev.h projects/altix/sys/dev/mvs/ - copied from r207793, head/sys/dev/mvs/ projects/altix/sys/dev/sge/ - copied from r207793, head/sys/dev/sge/ projects/altix/sys/mips/cavium/octeon_mp.c - copied unchanged from r207793, head/sys/mips/cavium/octeon_mp.c projects/altix/sys/modules/mvs/ - copied from r207793, head/sys/modules/mvs/ projects/altix/sys/modules/sge/ - copied from r207793, head/sys/modules/sge/ projects/altix/sys/sparc64/include/mcntl.h - copied unchanged from r207793, head/sys/sparc64/include/mcntl.h projects/altix/sys/sparc64/sparc64/zeus.c - copied unchanged from r207793, head/sys/sparc64/sparc64/zeus.c Deleted: projects/altix/sys/cddl/dev/cyclic/amd64/ projects/altix/sys/mips/cavium/dev/rgmii/octeon_fau.c projects/altix/sys/mips/include/archtype.h projects/altix/sys/mips/include/defs.h projects/altix/sys/mips/include/psl.h projects/altix/sys/mips/include/queue.h projects/altix/sys/mips/include/rm7000.h projects/altix/sys/mips/include/segments.h projects/altix/sys/mips/mips/copystr.S Modified: projects/altix/sys/amd64/amd64/bpf_jit_machdep.c projects/altix/sys/amd64/amd64/bpf_jit_machdep.h projects/altix/sys/amd64/amd64/exception.S projects/altix/sys/amd64/amd64/identcpu.c projects/altix/sys/amd64/amd64/io.c projects/altix/sys/amd64/amd64/local_apic.c projects/altix/sys/amd64/amd64/pmap.c projects/altix/sys/amd64/amd64/trap.c projects/altix/sys/amd64/conf/GENERIC projects/altix/sys/amd64/ia32/ia32_signal.c projects/altix/sys/amd64/include/iodev.h projects/altix/sys/amd64/include/pmap.h projects/altix/sys/amd64/include/proc.h projects/altix/sys/amd64/include/specialreg.h projects/altix/sys/amd64/include/vmparam.h projects/altix/sys/amd64/include/xen/xenfunc.h projects/altix/sys/amd64/include/xen/xenvar.h projects/altix/sys/arm/arm/cpufunc.c projects/altix/sys/arm/arm/cpufunc_asm_fa526.S projects/altix/sys/arm/arm/elf_trampoline.c projects/altix/sys/arm/arm/identcpu.c projects/altix/sys/arm/arm/pmap.c projects/altix/sys/arm/at91/if_ate.c projects/altix/sys/arm/conf/DB-78XXX projects/altix/sys/arm/conf/DB-88F5XXX projects/altix/sys/arm/conf/DB-88F6XXX projects/altix/sys/arm/conf/HL200 projects/altix/sys/arm/conf/KB920X projects/altix/sys/arm/conf/LN2410SBC projects/altix/sys/arm/conf/SHEEVAPLUG projects/altix/sys/arm/include/cpuconf.h projects/altix/sys/arm/include/cpufunc.h projects/altix/sys/arm/include/pmap.h projects/altix/sys/arm/include/proc.h projects/altix/sys/arm/mv/files.mv projects/altix/sys/arm/xscale/ixp425/if_npe.c projects/altix/sys/boot/forth/loader.conf projects/altix/sys/boot/sparc64/loader/main.c projects/altix/sys/cam/ata/ata_da.c projects/altix/sys/cam/ata/ata_pmp.c projects/altix/sys/cam/ata/ata_xpt.c projects/altix/sys/cam/cam_ccb.h projects/altix/sys/cam/cam_xpt.c projects/altix/sys/cam/scsi/scsi_cd.c projects/altix/sys/cddl/compat/opensolaris/kern/opensolaris_taskq.c projects/altix/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c projects/altix/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c projects/altix/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_object.c projects/altix/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_objset.c projects/altix/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c projects/altix/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c projects/altix/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/arc.h projects/altix/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_objset.h projects/altix/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa.h projects/altix/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/txg.c projects/altix/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_acl.c projects/altix/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_byteswap.c projects/altix/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c projects/altix/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c projects/altix/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c projects/altix/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c projects/altix/sys/cddl/dev/cyclic/i386/cyclic_machdep.c projects/altix/sys/compat/freebsd32/freebsd32.h projects/altix/sys/compat/freebsd32/freebsd32_misc.c projects/altix/sys/compat/freebsd32/freebsd32_util.h projects/altix/sys/compat/linprocfs/linprocfs.c projects/altix/sys/compat/linux/linux_ioctl.c projects/altix/sys/compat/x86bios/x86bios.c projects/altix/sys/conf/NOTES projects/altix/sys/conf/files projects/altix/sys/conf/files.mips projects/altix/sys/conf/files.sparc64 projects/altix/sys/conf/files.sun4v projects/altix/sys/conf/kern.pre.mk projects/altix/sys/conf/kmod.mk projects/altix/sys/conf/options projects/altix/sys/conf/options.arm projects/altix/sys/contrib/dev/acpica/acpica_prep.sh projects/altix/sys/contrib/dev/acpica/changes.txt projects/altix/sys/contrib/dev/acpica/common/adisasm.c projects/altix/sys/contrib/dev/acpica/compiler/aslcompile.c projects/altix/sys/contrib/dev/acpica/compiler/aslcompiler.h projects/altix/sys/contrib/dev/acpica/compiler/asldefine.h projects/altix/sys/contrib/dev/acpica/compiler/aslfiles.c projects/altix/sys/contrib/dev/acpica/compiler/aslglobal.h projects/altix/sys/contrib/dev/acpica/compiler/asllisting.c projects/altix/sys/contrib/dev/acpica/compiler/aslmain.c projects/altix/sys/contrib/dev/acpica/compiler/aslpredef.c projects/altix/sys/contrib/dev/acpica/compiler/aslresource.c projects/altix/sys/contrib/dev/acpica/compiler/aslrestype1.c projects/altix/sys/contrib/dev/acpica/compiler/aslrestype2.c projects/altix/sys/contrib/dev/acpica/compiler/asltypes.h projects/altix/sys/contrib/dev/acpica/debugger/dbcmds.c projects/altix/sys/contrib/dev/acpica/debugger/dbdisply.c projects/altix/sys/contrib/dev/acpica/events/evgpe.c projects/altix/sys/contrib/dev/acpica/events/evgpeblk.c projects/altix/sys/contrib/dev/acpica/executer/exconfig.c projects/altix/sys/contrib/dev/acpica/executer/exoparg1.c projects/altix/sys/contrib/dev/acpica/executer/exsystem.c projects/altix/sys/contrib/dev/acpica/include/acevents.h projects/altix/sys/contrib/dev/acpica/include/acglobal.h projects/altix/sys/contrib/dev/acpica/include/acinterp.h projects/altix/sys/contrib/dev/acpica/include/aclocal.h projects/altix/sys/contrib/dev/acpica/include/acpiosxf.h projects/altix/sys/contrib/dev/acpica/include/acpixf.h projects/altix/sys/contrib/dev/acpica/include/actypes.h projects/altix/sys/contrib/dev/acpica/include/amlresrc.h projects/altix/sys/contrib/dev/acpica/osunixxf.c projects/altix/sys/contrib/dev/acpica/tables/tbfind.c projects/altix/sys/contrib/dev/acpica/tables/tbinstal.c projects/altix/sys/contrib/dev/acpica/tables/tbutils.c projects/altix/sys/contrib/dev/acpica/tables/tbxface.c projects/altix/sys/contrib/dev/acpica/utilities/utcopy.c projects/altix/sys/contrib/dev/acpica/utilities/utglobal.c projects/altix/sys/contrib/dev/acpica/utilities/uttrack.c projects/altix/sys/contrib/ipfilter/netinet/ip_auth.c projects/altix/sys/contrib/ipfilter/netinet/ip_compat.h projects/altix/sys/ddb/db_sym.c projects/altix/sys/dev/acpica/Osd/OsdHardware.c projects/altix/sys/dev/ae/if_ae.c projects/altix/sys/dev/age/if_age.c projects/altix/sys/dev/agp/agp.c projects/altix/sys/dev/agp/agp_i810.c projects/altix/sys/dev/ahci/ahci.c projects/altix/sys/dev/ahci/ahci.h projects/altix/sys/dev/alc/if_alc.c projects/altix/sys/dev/ale/if_ale.c projects/altix/sys/dev/an/if_an.c projects/altix/sys/dev/ata/ata-all.c projects/altix/sys/dev/ata/ata-queue.c projects/altix/sys/dev/ata/chipsets/ata-acerlabs.c projects/altix/sys/dev/ath/ath_hal/ar5212/ar5212_reset.c projects/altix/sys/dev/ath/if_ath.c projects/altix/sys/dev/atkbdc/atkbdc.c projects/altix/sys/dev/atkbdc/atkbdc_ebus.c projects/altix/sys/dev/atkbdc/atkbdc_isa.c projects/altix/sys/dev/atkbdc/atkbdcreg.h projects/altix/sys/dev/bce/if_bce.c projects/altix/sys/dev/bce/if_bcereg.h projects/altix/sys/dev/bge/if_bge.c projects/altix/sys/dev/bwi/if_bwi.c projects/altix/sys/dev/bwn/if_bwn.c projects/altix/sys/dev/cas/if_cas.c projects/altix/sys/dev/cas/if_casreg.h projects/altix/sys/dev/ce/if_ce.c projects/altix/sys/dev/ciss/ciss.c projects/altix/sys/dev/cm/smc90cx6.c projects/altix/sys/dev/cp/if_cp.c projects/altix/sys/dev/cs/if_cs.c projects/altix/sys/dev/ctau/if_ct.c projects/altix/sys/dev/cx/if_cx.c projects/altix/sys/dev/cxgb/cxgb_adapter.h projects/altix/sys/dev/cxgb/cxgb_ioctl.h projects/altix/sys/dev/cxgb/cxgb_main.c projects/altix/sys/dev/cxgb/cxgb_sge.c projects/altix/sys/dev/cxgb/sys/mvec.h projects/altix/sys/dev/cxgb/sys/uipc_mvec.c projects/altix/sys/dev/drm/ati_pcigart.c projects/altix/sys/dev/drm/drmP.h projects/altix/sys/dev/drm/drm_bufs.c projects/altix/sys/dev/drm/drm_context.c projects/altix/sys/dev/drm/drm_drv.c projects/altix/sys/dev/drm/drm_hashtab.c projects/altix/sys/dev/drm/drm_memory.c projects/altix/sys/dev/drm/drm_mm.c projects/altix/sys/dev/drm/drm_scatter.c projects/altix/sys/dev/drm/drm_sman.c projects/altix/sys/dev/drm/drm_sysctl.c projects/altix/sys/dev/drm/drm_vm.c projects/altix/sys/dev/drm/i915_dma.c projects/altix/sys/dev/drm/mach64_dma.c projects/altix/sys/dev/drm/mga_dma.c projects/altix/sys/dev/drm/mga_warp.c projects/altix/sys/dev/drm/r128_cce.c projects/altix/sys/dev/drm/r128_state.c projects/altix/sys/dev/drm/r600_blit.c projects/altix/sys/dev/drm/r600_cp.c projects/altix/sys/dev/drm/radeon_cp.c projects/altix/sys/dev/drm/radeon_cs.c projects/altix/sys/dev/drm/radeon_state.c projects/altix/sys/dev/drm/savage_bci.c projects/altix/sys/dev/drm/via_dma.c projects/altix/sys/dev/drm/via_dmablit.c projects/altix/sys/dev/drm/via_map.c projects/altix/sys/dev/drm/via_mm.c projects/altix/sys/dev/drm/via_video.c projects/altix/sys/dev/e1000/if_em.c projects/altix/sys/dev/e1000/if_igb.c projects/altix/sys/dev/e1000/if_lem.c projects/altix/sys/dev/ed/if_ed.c projects/altix/sys/dev/ep/if_ep.c projects/altix/sys/dev/esp/esp_sbus.c projects/altix/sys/dev/ex/if_ex.c projects/altix/sys/dev/fe/if_fe.c projects/altix/sys/dev/fxp/if_fxp.c projects/altix/sys/dev/hwpmc/hwpmc_core.c projects/altix/sys/dev/hwpmc/hwpmc_mod.c projects/altix/sys/dev/hwpmc/pmc_events.h projects/altix/sys/dev/ie/if_ie.c projects/altix/sys/dev/iicbus/if_ic.c projects/altix/sys/dev/io/iodev.c projects/altix/sys/dev/ipw/if_ipw.c projects/altix/sys/dev/ipw/if_ipwvar.h projects/altix/sys/dev/isp/isp_pci.c projects/altix/sys/dev/isp/isp_sbus.c projects/altix/sys/dev/iwi/if_iwi.c projects/altix/sys/dev/iwn/if_iwn.c projects/altix/sys/dev/ixgbe/ixgbe.c projects/altix/sys/dev/le/lance.c projects/altix/sys/dev/malo/if_malo.c projects/altix/sys/dev/md/md.c projects/altix/sys/dev/mii/brgphy.c projects/altix/sys/dev/mii/e1000phy.c projects/altix/sys/dev/mii/miidevs projects/altix/sys/dev/mpt/mpt.c projects/altix/sys/dev/mpt/mpt.h projects/altix/sys/dev/mpt/mpt_cam.c projects/altix/sys/dev/mpt/mpt_pci.c projects/altix/sys/dev/msk/if_msk.c projects/altix/sys/dev/msk/if_mskreg.h projects/altix/sys/dev/mwl/if_mwl.c projects/altix/sys/dev/mxge/if_mxge.c projects/altix/sys/dev/mxge/if_mxge_var.h projects/altix/sys/dev/my/if_my.c projects/altix/sys/dev/nfe/if_nfe.c projects/altix/sys/dev/nxge/if_nxge.c projects/altix/sys/dev/pdq/pdq_ifsubr.c projects/altix/sys/dev/ppbus/if_plip.c projects/altix/sys/dev/quicc/quicc_bfe.h projects/altix/sys/dev/ral/rt2560.c projects/altix/sys/dev/ral/rt2661.c projects/altix/sys/dev/re/if_re.c projects/altix/sys/dev/sbni/if_sbni.c projects/altix/sys/dev/siis/siis.c projects/altix/sys/dev/siis/siis.h projects/altix/sys/dev/sis/if_sis.c projects/altix/sys/dev/smc/if_smc.c projects/altix/sys/dev/sn/if_sn.c projects/altix/sys/dev/snc/dp83932.c projects/altix/sys/dev/sound/pcm/buffer.c projects/altix/sys/dev/sound/pcm/buffer.h projects/altix/sys/dev/sound/usb/uaudio.c projects/altix/sys/dev/sym/sym_hipd.c projects/altix/sys/dev/ti/if_ti.c projects/altix/sys/dev/uart/uart_dev_ns8250.c projects/altix/sys/dev/usb/controller/ehci.c projects/altix/sys/dev/usb/controller/uhci.c projects/altix/sys/dev/usb/controller/uss820dci.c projects/altix/sys/dev/usb/input/atp.c projects/altix/sys/dev/usb/input/uhid.c projects/altix/sys/dev/usb/input/ukbd.c projects/altix/sys/dev/usb/input/ums.c projects/altix/sys/dev/usb/misc/udbp.c projects/altix/sys/dev/usb/net/if_aue.c projects/altix/sys/dev/usb/net/if_axe.c projects/altix/sys/dev/usb/net/if_cdce.c projects/altix/sys/dev/usb/net/if_cue.c projects/altix/sys/dev/usb/net/if_kue.c projects/altix/sys/dev/usb/net/if_rue.c projects/altix/sys/dev/usb/net/if_udav.c projects/altix/sys/dev/usb/net/uhso.c projects/altix/sys/dev/usb/net/usb_ethernet.c projects/altix/sys/dev/usb/serial/u3g.c projects/altix/sys/dev/usb/serial/ubsa.c projects/altix/sys/dev/usb/serial/ubser.c projects/altix/sys/dev/usb/serial/uchcom.c projects/altix/sys/dev/usb/serial/uftdi.c projects/altix/sys/dev/usb/serial/ulpt.c projects/altix/sys/dev/usb/serial/umodem.c projects/altix/sys/dev/usb/serial/umoscom.c projects/altix/sys/dev/usb/serial/uplcom.c projects/altix/sys/dev/usb/serial/usb_serial.c projects/altix/sys/dev/usb/serial/uslcom.c projects/altix/sys/dev/usb/serial/uvisor.c projects/altix/sys/dev/usb/serial/uvscom.c projects/altix/sys/dev/usb/storage/umass.c projects/altix/sys/dev/usb/storage/urio.c projects/altix/sys/dev/usb/storage/ustorage_fs.c projects/altix/sys/dev/usb/usb_compat_linux.c projects/altix/sys/dev/usb/usb_debug.h projects/altix/sys/dev/usb/usb_dev.c projects/altix/sys/dev/usb/usb_device.c projects/altix/sys/dev/usb/usb_device.h projects/altix/sys/dev/usb/usb_freebsd.h projects/altix/sys/dev/usb/usb_generic.c projects/altix/sys/dev/usb/usb_hub.c projects/altix/sys/dev/usb/usb_request.c projects/altix/sys/dev/usb/usb_transfer.c projects/altix/sys/dev/usb/usb_transfer.h projects/altix/sys/dev/usb/usbdevs projects/altix/sys/dev/usb/wlan/if_rum.c projects/altix/sys/dev/usb/wlan/if_run.c projects/altix/sys/dev/usb/wlan/if_uath.c projects/altix/sys/dev/usb/wlan/if_upgt.c projects/altix/sys/dev/usb/wlan/if_ural.c projects/altix/sys/dev/usb/wlan/if_urtw.c projects/altix/sys/dev/usb/wlan/if_zyd.c projects/altix/sys/dev/vx/if_vx.c projects/altix/sys/dev/wi/if_wi.c projects/altix/sys/dev/wl/if_wl.c projects/altix/sys/dev/wpi/if_wpi.c projects/altix/sys/dev/xe/if_xe.c projects/altix/sys/dev/xen/netfront/netfront.c projects/altix/sys/fs/devfs/devfs_devs.c projects/altix/sys/fs/devfs/devfs_int.h projects/altix/sys/fs/ext2fs/ext2_readwrite.c projects/altix/sys/fs/ext2fs/ext2_vnops.c projects/altix/sys/fs/msdosfs/msdosfs_vnops.c projects/altix/sys/fs/nfs/nfs_commonkrpc.c projects/altix/sys/fs/nfs/nfs_commonport.c projects/altix/sys/fs/nfs/nfs_var.h projects/altix/sys/fs/nfs/nfsclstate.h projects/altix/sys/fs/nfs/nfskpiport.h projects/altix/sys/fs/nfs/nfsport.h projects/altix/sys/fs/nfsclient/nfs.h projects/altix/sys/fs/nfsclient/nfs_clbio.c projects/altix/sys/fs/nfsclient/nfs_clnfsiod.c projects/altix/sys/fs/nfsclient/nfs_clnode.c projects/altix/sys/fs/nfsclient/nfs_clport.c projects/altix/sys/fs/nfsclient/nfs_clrpcops.c projects/altix/sys/fs/nfsclient/nfs_clstate.c projects/altix/sys/fs/nfsclient/nfs_clvfsops.c projects/altix/sys/fs/nfsclient/nfs_clvnops.c projects/altix/sys/fs/nfsserver/nfs_nfsdstate.c projects/altix/sys/fs/nwfs/nwfs_io.c projects/altix/sys/fs/pseudofs/pseudofs_vnops.c projects/altix/sys/fs/smbfs/smbfs_io.c projects/altix/sys/fs/tmpfs/tmpfs_vnops.c projects/altix/sys/geom/eli/g_eli.c projects/altix/sys/geom/geom.h projects/altix/sys/geom/geom_io.c projects/altix/sys/geom/geom_subr.c projects/altix/sys/geom/part/g_part.c projects/altix/sys/geom/part/g_part_apm.c projects/altix/sys/geom/part/g_part_bsd.c projects/altix/sys/geom/part/g_part_gpt.c projects/altix/sys/geom/part/g_part_if.m projects/altix/sys/geom/part/g_part_mbr.c projects/altix/sys/geom/part/g_part_pc98.c projects/altix/sys/geom/part/g_part_vtoc8.c projects/altix/sys/geom/vinum/geom_vinum_var.h projects/altix/sys/gnu/fs/xfs/FreeBSD/xfs_vnops.c projects/altix/sys/i386/conf/GENERIC projects/altix/sys/i386/conf/XBOX projects/altix/sys/i386/i386/bpf_jit_machdep.c projects/altix/sys/i386/i386/bpf_jit_machdep.h projects/altix/sys/i386/i386/identcpu.c projects/altix/sys/i386/i386/io.c projects/altix/sys/i386/i386/local_apic.c projects/altix/sys/i386/i386/pmap.c projects/altix/sys/i386/include/iodev.h projects/altix/sys/i386/include/pmap.h projects/altix/sys/i386/include/proc.h projects/altix/sys/i386/include/specialreg.h projects/altix/sys/i386/include/xen/xenfunc.h projects/altix/sys/i386/include/xen/xenvar.h projects/altix/sys/i386/xen/pmap.c projects/altix/sys/ia64/conf/GENERIC projects/altix/sys/ia64/ia64/iodev_machdep.c projects/altix/sys/ia64/ia64/pmap.c projects/altix/sys/ia64/include/iodev.h projects/altix/sys/ia64/include/pmap.h projects/altix/sys/ia64/include/proc.h projects/altix/sys/kern/imgact_elf.c projects/altix/sys/kern/kern_alq.c projects/altix/sys/kern/kern_clock.c projects/altix/sys/kern/kern_conf.c projects/altix/sys/kern/kern_descrip.c projects/altix/sys/kern/kern_exec.c projects/altix/sys/kern/kern_gzio.c projects/altix/sys/kern/kern_ktr.c projects/altix/sys/kern/kern_ntptime.c projects/altix/sys/kern/kern_proc.c projects/altix/sys/kern/kern_resource.c projects/altix/sys/kern/kern_shutdown.c projects/altix/sys/kern/kern_sig.c projects/altix/sys/kern/kern_thread.c projects/altix/sys/kern/subr_bufring.c projects/altix/sys/kern/subr_bus.c projects/altix/sys/kern/subr_taskqueue.c projects/altix/sys/kern/subr_uio.c projects/altix/sys/kern/subr_witness.c projects/altix/sys/kern/sys_pipe.c projects/altix/sys/kern/sys_process.c projects/altix/sys/kern/uipc_cow.c projects/altix/sys/kern/uipc_mbuf.c projects/altix/sys/kern/uipc_syscalls.c projects/altix/sys/kern/vfs_bio.c projects/altix/sys/kern/vfs_cache.c projects/altix/sys/kern/vfs_subr.c projects/altix/sys/kern/vfs_vnops.c projects/altix/sys/mips/adm5120/if_admsw.c projects/altix/sys/mips/atheros/if_arge.c projects/altix/sys/mips/cavium/asm_octeon.S projects/altix/sys/mips/cavium/dev/rgmii/octeon_fau.h projects/altix/sys/mips/cavium/dev/rgmii/octeon_rgmx.c projects/altix/sys/mips/cavium/files.octeon1 projects/altix/sys/mips/cavium/octeon_machdep.c projects/altix/sys/mips/cavium/octeon_pcmap_regs.h projects/altix/sys/mips/cavium/uart_dev_oct16550.c projects/altix/sys/mips/conf/AR71XX projects/altix/sys/mips/conf/SENTRY5 projects/altix/sys/mips/conf/SWARM projects/altix/sys/mips/conf/XLR projects/altix/sys/mips/include/_inttypes.h projects/altix/sys/mips/include/_limits.h projects/altix/sys/mips/include/asm.h projects/altix/sys/mips/include/cpu.h projects/altix/sys/mips/include/cpufunc.h projects/altix/sys/mips/include/cpuregs.h projects/altix/sys/mips/include/db_machdep.h projects/altix/sys/mips/include/param.h projects/altix/sys/mips/include/pcb.h projects/altix/sys/mips/include/pmap.h projects/altix/sys/mips/include/proc.h projects/altix/sys/mips/include/profile.h projects/altix/sys/mips/include/pte.h projects/altix/sys/mips/include/regnum.h projects/altix/sys/mips/include/sf_buf.h projects/altix/sys/mips/include/trap.h projects/altix/sys/mips/include/vmparam.h projects/altix/sys/mips/malta/gt_pci.c projects/altix/sys/mips/mips/autoconf.c projects/altix/sys/mips/mips/db_trace.c projects/altix/sys/mips/mips/exception.S projects/altix/sys/mips/mips/fp.S projects/altix/sys/mips/mips/genassym.c projects/altix/sys/mips/mips/locore.S projects/altix/sys/mips/mips/machdep.c projects/altix/sys/mips/mips/mem.c projects/altix/sys/mips/mips/mp_machdep.c projects/altix/sys/mips/mips/mpboot.S projects/altix/sys/mips/mips/nexus.c projects/altix/sys/mips/mips/pmap.c projects/altix/sys/mips/mips/psraccess.S projects/altix/sys/mips/mips/support.S projects/altix/sys/mips/mips/swtch.S projects/altix/sys/mips/mips/tick.c projects/altix/sys/mips/mips/tlb.S projects/altix/sys/mips/mips/trap.c projects/altix/sys/mips/mips/uio_machdep.c projects/altix/sys/mips/mips/vm_machdep.c projects/altix/sys/mips/rmi/clock.c projects/altix/sys/mips/sibyte/sb_machdep.c projects/altix/sys/modules/Makefile projects/altix/sys/modules/acpi/acpi/Makefile projects/altix/sys/modules/cyclic/Makefile projects/altix/sys/modules/usb/usb/Makefile projects/altix/sys/net/bpf.c projects/altix/sys/net/bpf_zerocopy.c projects/altix/sys/net/bpfdesc.h projects/altix/sys/net/flowtable.c projects/altix/sys/net/if.c projects/altix/sys/net/if_ef.c projects/altix/sys/net/if_gif.c projects/altix/sys/net/if_gif.h projects/altix/sys/net/if_gre.c projects/altix/sys/net/if_stf.c projects/altix/sys/net/route.c projects/altix/sys/net/rtsock.c projects/altix/sys/net/vnet.c projects/altix/sys/net/vnet.h projects/altix/sys/net80211/ieee80211.c projects/altix/sys/net80211/ieee80211_amrr.c projects/altix/sys/net80211/ieee80211_freebsd.h projects/altix/sys/net80211/ieee80211_ht.h projects/altix/sys/net80211/ieee80211_node.c projects/altix/sys/net80211/ieee80211_rssadapt.c projects/altix/sys/net80211/ieee80211_scan_sta.c projects/altix/sys/net80211/ieee80211_var.h projects/altix/sys/netgraph/ng_base.c projects/altix/sys/netgraph/ng_bridge.c projects/altix/sys/netgraph/ng_bridge.h projects/altix/sys/netgraph/ng_eiface.c projects/altix/sys/netgraph/ng_fec.c projects/altix/sys/netgraph/ng_hub.c projects/altix/sys/netgraph/ng_hub.h projects/altix/sys/netgraph/ng_iface.c projects/altix/sys/netgraph/ng_ksocket.c projects/altix/sys/netgraph/ng_pipe.c projects/altix/sys/netgraph/ng_tty.c projects/altix/sys/netinet/icmp6.h projects/altix/sys/netinet/if_ether.c projects/altix/sys/netinet/igmp.c projects/altix/sys/netinet/in.c projects/altix/sys/netinet/in_gif.c projects/altix/sys/netinet/in_proto.c projects/altix/sys/netinet/in_rmx.c projects/altix/sys/netinet/ip_dummynet.h projects/altix/sys/netinet/ip_icmp.c projects/altix/sys/netinet/ip_icmp.h projects/altix/sys/netinet/ip_input.c projects/altix/sys/netinet/ip_var.h projects/altix/sys/netinet/ipfw/dn_sched.h projects/altix/sys/netinet/ipfw/dn_sched_rr.c projects/altix/sys/netinet/ipfw/dn_sched_wf2q.c projects/altix/sys/netinet/ipfw/ip_dn_private.h projects/altix/sys/netinet/ipfw/ip_dummynet.c projects/altix/sys/netinet/ipfw/ip_fw_pfil.c projects/altix/sys/netinet/ipfw/ip_fw_private.h projects/altix/sys/netinet/raw_ip.c projects/altix/sys/netinet/sctp_asconf.c projects/altix/sys/netinet/sctp_indata.c projects/altix/sys/netinet/sctp_output.c projects/altix/sys/netinet/sctputil.c projects/altix/sys/netinet/tcp_hostcache.c projects/altix/sys/netinet/tcp_input.c projects/altix/sys/netinet/tcp_output.c projects/altix/sys/netinet/tcp_reass.c projects/altix/sys/netinet/tcp_sack.c projects/altix/sys/netinet/tcp_subr.c projects/altix/sys/netinet/tcp_syncache.c projects/altix/sys/netinet/tcp_timewait.c projects/altix/sys/netinet/tcp_var.h projects/altix/sys/netinet/udp_usrreq.c projects/altix/sys/netinet/udp_var.h projects/altix/sys/netinet6/frag6.c projects/altix/sys/netinet6/icmp6.c projects/altix/sys/netinet6/in6.c projects/altix/sys/netinet6/in6_gif.c projects/altix/sys/netinet6/in6_ifattach.c projects/altix/sys/netinet6/in6_proto.c projects/altix/sys/netinet6/in6_rmx.c projects/altix/sys/netinet6/in6_src.c projects/altix/sys/netinet6/in6_var.h projects/altix/sys/netinet6/ip6_input.c projects/altix/sys/netinet6/ip6_mroute.c projects/altix/sys/netinet6/ip6_var.h projects/altix/sys/netinet6/nd6.c projects/altix/sys/netinet6/nd6.h projects/altix/sys/netinet6/nd6_nbr.c projects/altix/sys/netinet6/nd6_rtr.c projects/altix/sys/netinet6/raw_ip6.c projects/altix/sys/netinet6/scope6.c projects/altix/sys/netipsec/ah_var.h projects/altix/sys/netipsec/esp_var.h projects/altix/sys/netipsec/ipcomp_var.h projects/altix/sys/netipsec/ipip_var.h projects/altix/sys/netipsec/ipsec.c projects/altix/sys/netipsec/ipsec.h projects/altix/sys/netipsec/ipsec6.h projects/altix/sys/netipsec/key.c projects/altix/sys/netipsec/xform_esp.c projects/altix/sys/nfsclient/nfs_bio.c projects/altix/sys/pc98/cbus/clock.c projects/altix/sys/pc98/conf/GENERIC projects/altix/sys/pc98/pc98/machdep.c projects/altix/sys/pci/if_rl.c projects/altix/sys/powerpc/aim/mmu_oea.c projects/altix/sys/powerpc/aim/mmu_oea64.c projects/altix/sys/powerpc/booke/pmap.c projects/altix/sys/powerpc/conf/GENERIC projects/altix/sys/powerpc/conf/MPC85XX projects/altix/sys/powerpc/include/pmap.h projects/altix/sys/powerpc/include/proc.h projects/altix/sys/powerpc/powerpc/mmu_if.m projects/altix/sys/powerpc/powerpc/pmap_dispatch.c projects/altix/sys/security/audit/audit_bsm.c projects/altix/sys/sparc64/conf/GENERIC projects/altix/sys/sparc64/include/asi.h projects/altix/sys/sparc64/include/cache.h projects/altix/sys/sparc64/include/ofw_machdep.h projects/altix/sys/sparc64/include/pmap.h projects/altix/sys/sparc64/include/proc.h projects/altix/sys/sparc64/isa/isa.c projects/altix/sys/sparc64/sparc64/cache.c projects/altix/sys/sparc64/sparc64/cheetah.c projects/altix/sys/sparc64/sparc64/identcpu.c projects/altix/sys/sparc64/sparc64/interrupt.S projects/altix/sys/sparc64/sparc64/locore.S projects/altix/sys/sparc64/sparc64/machdep.c projects/altix/sys/sparc64/sparc64/mp_locore.S projects/altix/sys/sparc64/sparc64/mp_machdep.c projects/altix/sys/sparc64/sparc64/nexus.c projects/altix/sys/sparc64/sparc64/ofw_machdep.c projects/altix/sys/sparc64/sparc64/pmap.c projects/altix/sys/sparc64/sparc64/tick.c projects/altix/sys/sun4v/conf/GENERIC projects/altix/sys/sun4v/include/ofw_machdep.h projects/altix/sys/sun4v/include/pmap.h projects/altix/sys/sun4v/include/proc.h projects/altix/sys/sun4v/sun4v/pmap.c projects/altix/sys/sys/_task.h projects/altix/sys/sys/alq.h projects/altix/sys/sys/buf.h projects/altix/sys/sys/buf_ring.h projects/altix/sys/sys/conf.h projects/altix/sys/sys/dtrace_bsd.h projects/altix/sys/sys/mbuf.h projects/altix/sys/sys/mount.h projects/altix/sys/sys/param.h projects/altix/sys/sys/proc.h projects/altix/sys/sys/resource.h projects/altix/sys/sys/resourcevar.h projects/altix/sys/sys/taskqueue.h projects/altix/sys/sys/thr.h projects/altix/sys/sys/user.h projects/altix/sys/sys/vmmeter.h projects/altix/sys/sys/vnode.h projects/altix/sys/ufs/ffs/ffs_alloc.c projects/altix/sys/ufs/ffs/ffs_balloc.c projects/altix/sys/ufs/ffs/ffs_extern.h projects/altix/sys/ufs/ffs/ffs_inode.c projects/altix/sys/ufs/ffs/ffs_snapshot.c projects/altix/sys/ufs/ffs/ffs_softdep.c projects/altix/sys/ufs/ffs/ffs_subr.c projects/altix/sys/ufs/ffs/ffs_vfsops.c projects/altix/sys/ufs/ffs/ffs_vnops.c projects/altix/sys/ufs/ffs/fs.h projects/altix/sys/ufs/ffs/softdep.h projects/altix/sys/ufs/ufs/dinode.h projects/altix/sys/ufs/ufs/inode.h projects/altix/sys/ufs/ufs/quota.h projects/altix/sys/ufs/ufs/ufs_dirhash.c projects/altix/sys/ufs/ufs/ufs_extern.h projects/altix/sys/ufs/ufs/ufs_lookup.c projects/altix/sys/ufs/ufs/ufs_quota.c projects/altix/sys/ufs/ufs/ufs_vfsops.c projects/altix/sys/ufs/ufs/ufs_vnops.c projects/altix/sys/ufs/ufs/ufsmount.h projects/altix/sys/vm/device_pager.c projects/altix/sys/vm/phys_pager.c projects/altix/sys/vm/pmap.h projects/altix/sys/vm/sg_pager.c projects/altix/sys/vm/swap_pager.c projects/altix/sys/vm/uma_core.c projects/altix/sys/vm/vm_contig.c projects/altix/sys/vm/vm_extern.h projects/altix/sys/vm/vm_fault.c projects/altix/sys/vm/vm_glue.c projects/altix/sys/vm/vm_kern.c projects/altix/sys/vm/vm_map.c projects/altix/sys/vm/vm_map.h projects/altix/sys/vm/vm_mmap.c projects/altix/sys/vm/vm_object.c projects/altix/sys/vm/vm_page.c projects/altix/sys/vm/vm_page.h projects/altix/sys/vm/vm_pageout.c projects/altix/sys/vm/vm_pageout.h projects/altix/sys/vm/vm_param.h projects/altix/sys/vm/vnode_pager.c projects/altix/sys/x86/isa/clock.c Directory Properties: projects/altix/lib/libstand/ (props changed) projects/altix/sys/ (props changed) projects/altix/sys/amd64/include/xen/ (props changed) projects/altix/sys/cddl/contrib/opensolaris/ (props changed) projects/altix/sys/contrib/dev/acpica/ (props changed) projects/altix/sys/contrib/pf/ (props changed) projects/altix/sys/contrib/x86emu/ (props changed) projects/altix/sys/dev/xen/xenpci/ (props changed) projects/altix/sys/mips/rmi/debug.h (props changed) projects/altix/sys/mips/rmi/dev/sec/desc.h (props changed) projects/altix/sys/mips/rmi/msgring.h (props changed) projects/altix/sys/mips/rmi/shared_structs.h (props changed) projects/altix/sys/mips/rmi/shared_structs_func.h (props changed) projects/altix/sys/mips/rmi/shared_structs_offsets.h (props changed) Modified: projects/altix/sys/amd64/amd64/bpf_jit_machdep.c ============================================================================== --- projects/altix/sys/amd64/amd64/bpf_jit_machdep.c Sat May 8 20:02:39 2010 (r207794) +++ projects/altix/sys/amd64/amd64/bpf_jit_machdep.c Sat May 8 20:08:01 2010 (r207795) @@ -419,62 +419,77 @@ bpf_jit_compile(struct bpf_insn *prog, u break; case BPF_JMP|BPF_JA: - JMP(stream.refs[stream.bpf_pc + ins->k] - - stream.refs[stream.bpf_pc]); + JUMP(ins->k); break; case BPF_JMP|BPF_JGT|BPF_K: - if (ins->jt == 0 && ins->jf == 0) + if (ins->jt == ins->jf) { + JUMP(ins->jt); break; + } CMPid(ins->k, EAX); JCC(JA, JBE); break; case BPF_JMP|BPF_JGE|BPF_K: - if (ins->jt == 0 && ins->jf == 0) + if (ins->jt == ins->jf) { + JUMP(ins->jt); break; + } CMPid(ins->k, EAX); JCC(JAE, JB); break; case BPF_JMP|BPF_JEQ|BPF_K: - if (ins->jt == 0 && ins->jf == 0) + if (ins->jt == ins->jf) { + JUMP(ins->jt); break; + } CMPid(ins->k, EAX); JCC(JE, JNE); break; case BPF_JMP|BPF_JSET|BPF_K: - if (ins->jt == 0 && ins->jf == 0) + if (ins->jt == ins->jf) { + JUMP(ins->jt); break; + } TESTid(ins->k, EAX); JCC(JNE, JE); break; case BPF_JMP|BPF_JGT|BPF_X: - if (ins->jt == 0 && ins->jf == 0) + if (ins->jt == ins->jf) { + JUMP(ins->jt); break; + } CMPrd(EDX, EAX); JCC(JA, JBE); break; case BPF_JMP|BPF_JGE|BPF_X: - if (ins->jt == 0 && ins->jf == 0) + if (ins->jt == ins->jf) { + JUMP(ins->jt); break; + } CMPrd(EDX, EAX); JCC(JAE, JB); break; case BPF_JMP|BPF_JEQ|BPF_X: - if (ins->jt == 0 && ins->jf == 0) + if (ins->jt == ins->jf) { + JUMP(ins->jt); break; + } CMPrd(EDX, EAX); JCC(JE, JNE); break; case BPF_JMP|BPF_JSET|BPF_X: - if (ins->jt == 0 && ins->jf == 0) + if (ins->jt == ins->jf) { + JUMP(ins->jt); break; + } TESTrd(EDX, EAX); JCC(JNE, JE); break; Modified: projects/altix/sys/amd64/amd64/bpf_jit_machdep.h ============================================================================== --- projects/altix/sys/amd64/amd64/bpf_jit_machdep.h Sat May 8 20:02:39 2010 (r207794) +++ projects/altix/sys/amd64/amd64/bpf_jit_machdep.h Sat May 8 20:08:01 2010 (r207795) @@ -473,4 +473,10 @@ typedef void (*emit_func)(bpf_bin_stream } \ } while (0) +#define JUMP(off) do { \ + if ((off) != 0) \ + JMP(stream.refs[stream.bpf_pc + (off)] - \ + stream.refs[stream.bpf_pc]); \ +} while (0) + #endif /* _BPF_JIT_MACHDEP_H_ */ Modified: projects/altix/sys/amd64/amd64/exception.S ============================================================================== --- projects/altix/sys/amd64/amd64/exception.S Sat May 8 20:02:39 2010 (r207794) +++ projects/altix/sys/amd64/amd64/exception.S Sat May 8 20:08:01 2010 (r207795) @@ -50,14 +50,14 @@ .bss .globl dtrace_invop_jump_addr .align 8 - .type dtrace_invop_jump_addr, @object - .size dtrace_invop_jump_addr, 8 + .type dtrace_invop_jump_addr,@object + .size dtrace_invop_jump_addr,8 dtrace_invop_jump_addr: .zero 8 .globl dtrace_invop_calltrap_addr .align 8 - .type dtrace_invop_calltrap_addr, @object - .size dtrace_invop_calltrap_addr, 8 + .type dtrace_invop_calltrap_addr,@object + .size dtrace_invop_calltrap_addr,8 dtrace_invop_calltrap_addr: .zero 8 #endif @@ -157,7 +157,6 @@ IDTVEC(align) * kernel from userland. Reenable interrupts if they were enabled * before the trap. This approximates SDT_SYS386TGT on the i386 port. */ - SUPERALIGN_TEXT .globl alltraps .type alltraps,@function @@ -211,16 +210,16 @@ alltraps_pushregs_no_rdi: * Set our jump address for the jump back in the event that * the breakpoint wasn't caused by DTrace at all. */ - movq $calltrap, dtrace_invop_calltrap_addr(%rip) + movq $calltrap,dtrace_invop_calltrap_addr(%rip) /* Jump to the code hooked in by DTrace. */ - movq dtrace_invop_jump_addr, %rax + movq dtrace_invop_jump_addr,%rax jmpq *dtrace_invop_jump_addr #endif .globl calltrap .type calltrap,@function calltrap: - movq %rsp, %rdi + movq %rsp,%rdi call trap MEXITCOUNT jmp doreti /* Handle any pending ASTs */ @@ -274,9 +273,11 @@ IDTVEC(dblfault) testb $SEL_RPL_MASK,TF_CS(%rsp) /* Did we come from kernel? */ jz 1f /* already running with kernel GS.base */ swapgs -1: movq %rsp, %rdi +1: + movq %rsp,%rdi call dblfault_handler -2: hlt +2: + hlt jmp 2b IDTVEC(page) @@ -369,7 +370,7 @@ IDTVEC(fast_syscall) movq %r15,TF_R15(%rsp) /* C preserved */ movl $TF_HASSEGS,TF_FLAGS(%rsp) FAKE_MCOUNT(TF_RIP(%rsp)) - movq %rsp, %rdi + movq %rsp,%rdi call syscall movq PCPU(CURPCB),%rax andq $~PCB_FULLCTX,PCB_FLAGS(%rax) @@ -456,7 +457,7 @@ nmi_fromuserspace: /* Note: this label is also used by ddb and gdb: */ nmi_calltrap: FAKE_MCOUNT(TF_RIP(%rsp)) - movq %rsp, %rdi + movq %rsp,%rdi call trap MEXITCOUNT #ifdef HWPMC_HOOKS @@ -555,9 +556,9 @@ nmi_restoreregs: iretq ENTRY(fork_trampoline) - movq %r12, %rdi /* function */ - movq %rbx, %rsi /* arg1 */ - movq %rsp, %rdx /* trapframe pointer */ + movq %r12,%rdi /* function */ + movq %rbx,%rsi /* arg1 */ + movq %rsp,%rdx /* trapframe pointer */ call fork_exit MEXITCOUNT jmp doreti /* Handle any ASTs */ @@ -628,7 +629,7 @@ doreti_ast: testl $TDF_ASTPENDING | TDF_NEEDRESCHED,TD_FLAGS(%rax) je doreti_exit sti - movq %rsp, %rdi /* pass a pointer to the trapframe */ + movq %rsp,%rdi /* pass a pointer to the trapframe */ call ast jmp doreti_ast @@ -648,8 +649,8 @@ doreti_exit: * Do not reload segment registers for kernel. * Since we do not reload segments registers with sane * values on kernel entry, descriptors referenced by - * segments registers may be not valid. This is fatal - * for the usermode, but is innocent for the kernel. + * segments registers might be not valid. This is fatal + * for user mode, but is not a problem for the kernel. */ testb $SEL_RPL_MASK,TF_CS(%rsp) jz ld_regs @@ -662,14 +663,16 @@ do_segs: /* Restore %fs and fsbase */ movw TF_FS(%rsp),%ax .globl ld_fs -ld_fs: movw %ax,%fs +ld_fs: + movw %ax,%fs cmpw $KUF32SEL,%ax jne 1f movl $MSR_FSBASE,%ecx movl PCB_FSBASE(%r8),%eax movl PCB_FSBASE+4(%r8),%edx .globl ld_fsbase -ld_fsbase: wrmsr +ld_fsbase: + wrmsr 1: /* Restore %gs and gsbase */ movw TF_GS(%rsp),%si @@ -678,7 +681,8 @@ ld_fsbase: wrmsr movl $MSR_GSBASE,%ecx rdmsr .globl ld_gs -ld_gs: movw %si,%gs +ld_gs: + movw %si,%gs wrmsr popfq cmpw $KUG32SEL,%si @@ -687,12 +691,17 @@ ld_gs: movw %si,%gs movl PCB_GSBASE(%r8),%eax movl PCB_GSBASE+4(%r8),%edx .globl ld_gsbase -ld_gsbase: wrmsr -1: .globl ld_es -ld_es: movw TF_ES(%rsp),%es +ld_gsbase: + wrmsr +1: + .globl ld_es +ld_es: + movw TF_ES(%rsp),%es .globl ld_ds -ld_ds: movw TF_DS(%rsp),%ds -ld_regs:movq TF_RDI(%rsp),%rdi +ld_ds: + movw TF_DS(%rsp),%ds +ld_regs: + movq TF_RDI(%rsp),%rdi movq TF_RSI(%rsp),%rsi movq TF_RDX(%rsp),%rdx movq TF_RCX(%rsp),%rcx @@ -711,7 +720,8 @@ ld_regs:movq TF_RDI(%rsp),%rdi jz 1f /* keep running with kernel GS.base */ cli swapgs -1: addq $TF_RIP,%rsp /* skip over tf_err, tf_trapno */ +1: + addq $TF_RIP,%rsp /* skip over tf_err, tf_trapno */ .globl doreti_iret doreti_iret: iretq @@ -738,7 +748,8 @@ doreti_iret_fault: testl $PSL_I,TF_RFLAGS(%rsp) jz 1f sti -1: movw %fs,TF_FS(%rsp) +1: + movw %fs,TF_FS(%rsp) movw %gs,TF_GS(%rsp) movw %es,TF_ES(%rsp) movw %ds,TF_DS(%rsp) @@ -768,7 +779,7 @@ doreti_iret_fault: .globl ds_load_fault ds_load_fault: movl $T_PROTFLT,TF_TRAPNO(%rsp) - movq %rsp, %rdi + movq %rsp,%rdi call trap movw $KUDSEL,TF_DS(%rsp) jmp doreti @@ -777,7 +788,7 @@ ds_load_fault: .globl es_load_fault es_load_fault: movl $T_PROTFLT,TF_TRAPNO(%rsp) - movq %rsp, %rdi + movq %rsp,%rdi call trap movw $KUDSEL,TF_ES(%rsp) jmp doreti @@ -786,7 +797,7 @@ es_load_fault: .globl fs_load_fault fs_load_fault: movl $T_PROTFLT,TF_TRAPNO(%rsp) - movq %rsp, %rdi + movq %rsp,%rdi call trap movw $KUF32SEL,TF_FS(%rsp) jmp doreti @@ -796,7 +807,7 @@ fs_load_fault: gs_load_fault: popfq movl $T_PROTFLT,TF_TRAPNO(%rsp) - movq %rsp, %rdi + movq %rsp,%rdi call trap movw $KUG32SEL,TF_GS(%rsp) jmp doreti @@ -805,7 +816,7 @@ gs_load_fault: .globl fsbase_load_fault fsbase_load_fault: movl $T_PROTFLT,TF_TRAPNO(%rsp) - movq %rsp, %rdi + movq %rsp,%rdi call trap movq PCPU(CURTHREAD),%r8 movq TD_PCB(%r8),%r8 @@ -815,9 +826,8 @@ fsbase_load_fault: ALIGN_TEXT .globl gsbase_load_fault gsbase_load_fault: - popfq movl $T_PROTFLT,TF_TRAPNO(%rsp) - movq %rsp, %rdi + movq %rsp,%rdi call trap movq PCPU(CURTHREAD),%r8 movq TD_PCB(%r8),%r8 Modified: projects/altix/sys/amd64/amd64/identcpu.c ============================================================================== --- projects/altix/sys/amd64/amd64/identcpu.c Sat May 8 20:02:39 2010 (r207794) +++ projects/altix/sys/amd64/amd64/identcpu.c Sat May 8 20:08:01 2010 (r207795) @@ -240,7 +240,7 @@ printcpuinfo(void) printf("\n Features2=0x%b", cpu_feature2, "\020" "\001SSE3" /* SSE3 */ - "\002" + "\002PCLMULQDQ" /* Carry-Less Mul Quadword */ "\003DTES64" /* 64-bit Debug Trace */ "\004MON" /* MONITOR/MWAIT Instructions */ "\005DS_CPL" /* CPL Qualified Debug Store */ @@ -264,7 +264,7 @@ printcpuinfo(void) "\027MOVBE" "\030POPCNT" "\031" - "\032" + "\032AESNI" /* AES Crypto*/ "\033XSAVE" "\034OSXSAVE" "\035" Modified: projects/altix/sys/amd64/amd64/io.c ============================================================================== --- projects/altix/sys/amd64/amd64/io.c Sat May 8 20:02:39 2010 (r207794) +++ projects/altix/sys/amd64/amd64/io.c Sat May 8 20:08:01 2010 (r207795) @@ -28,60 +28,32 @@ __FBSDID("$FreeBSD$"); #include -#include -#include -#include -#include -#include -#include #include -#include -#include -#include #include -#include -#include - -#include -#include - #include +#include -/* ARGSUSED */ int -ioopen(struct cdev *dev __unused, int flags __unused, int fmt __unused, - struct thread *td) +iodev_open(struct thread *td) { - int error; - - error = priv_check(td, PRIV_IO); - if (error != 0) - return (error); - error = securelevel_gt(td->td_ucred, 0); - if (error != 0) - return (error); td->td_frame->tf_rflags |= PSL_IOPL; - return (0); } -/* ARGSUSED */ int -ioclose(struct cdev *dev __unused, int flags __unused, int fmt __unused, - struct thread *td) +iodev_close(struct thread *td) { - td->td_frame->tf_rflags &= ~PSL_IOPL; + td->td_frame->tf_rflags &= ~PSL_IOPL; return (0); } /* ARGSUSED */ int -ioioctl(struct cdev *dev __unused, u_long cmd __unused, caddr_t data __unused, - int fflag __unused, struct thread *td __unused) +iodev_ioctl(u_long cmd __unused, caddr_t data __unused) { - return (ENXIO); + return (ENOIOCTL); } Modified: projects/altix/sys/amd64/amd64/local_apic.c ============================================================================== --- projects/altix/sys/amd64/amd64/local_apic.c Sat May 8 20:02:39 2010 (r207794) +++ projects/altix/sys/amd64/amd64/local_apic.c Sat May 8 20:08:01 2010 (r207795) @@ -70,7 +70,7 @@ __FBSDID("$FreeBSD$"); #ifdef KDTRACE_HOOKS #include -cyclic_clock_func_t lapic_cyclic_clock_func[MAXCPU]; +cyclic_clock_func_t cyclic_clock_func[MAXCPU]; #endif /* Sanity checks on IDT vectors. */ @@ -778,8 +778,8 @@ lapic_handle_timer(struct trapframe *fra * timers. */ int cpu = PCPU_GET(cpuid); - if (lapic_cyclic_clock_func[cpu] != NULL) - (*lapic_cyclic_clock_func[cpu])(frame); + if (cyclic_clock_func[cpu] != NULL) + (*cyclic_clock_func[cpu])(frame); #endif /* Fire hardclock at hz. */ Modified: projects/altix/sys/amd64/amd64/pmap.c ============================================================================== --- projects/altix/sys/amd64/amd64/pmap.c Sat May 8 20:02:39 2010 (r207794) +++ projects/altix/sys/amd64/amd64/pmap.c Sat May 8 20:08:01 2010 (r207795) @@ -236,6 +236,7 @@ static void pmap_fill_ptp(pt_entry_t *fi static void pmap_insert_pt_page(pmap_t pmap, vm_page_t mpte); static void pmap_invalidate_cache_range(vm_offset_t sva, vm_offset_t eva); static boolean_t pmap_is_modified_pvh(struct md_page *pvh); +static boolean_t pmap_is_referenced_pvh(struct md_page *pvh); static void pmap_kenter_attr(vm_offset_t va, vm_paddr_t pa, int mode); static vm_page_t pmap_lookup_pt_page(pmap_t pmap, vm_offset_t va); static void pmap_pde_attr(pd_entry_t *pde, int cache_bits); @@ -283,7 +284,7 @@ pmap_kmem_choose(vm_offset_t addr) vm_offset_t newaddr = addr; newaddr = (addr + (NBPDR - 1)) & ~(NBPDR - 1); - return newaddr; + return (newaddr); } /********************/ @@ -294,7 +295,7 @@ pmap_kmem_choose(vm_offset_t addr) static __inline vm_pindex_t pmap_pde_pindex(vm_offset_t va) { - return va >> PDRSHIFT; + return (va >> PDRSHIFT); } @@ -353,7 +354,7 @@ pmap_pdpe(pmap_t pmap, vm_offset_t va) pml4e = pmap_pml4e(pmap, va); if ((*pml4e & PG_V) == 0) - return NULL; + return (NULL); return (pmap_pml4e_to_pdpe(pml4e, va)); } @@ -375,7 +376,7 @@ pmap_pde(pmap_t pmap, vm_offset_t va) pdpe = pmap_pdpe(pmap, va); if (pdpe == NULL || (*pdpe & PG_V) == 0) - return NULL; + return (NULL); return (pmap_pdpe_to_pde(pdpe, va)); } @@ -397,12 +398,27 @@ pmap_pte(pmap_t pmap, vm_offset_t va) pde = pmap_pde(pmap, va); if (pde == NULL || (*pde & PG_V) == 0) - return NULL; + return (NULL); if ((*pde & PG_PS) != 0) /* compat with i386 pmap_pte() */ return ((pt_entry_t *)pde); return (pmap_pde_to_pte(pde, va)); } +static __inline void +pmap_resident_count_inc(pmap_t pmap, int count) +{ + + PMAP_LOCK_ASSERT(pmap, MA_OWNED); + pmap->pm_stats.resident_count += count; +} + +static __inline void +pmap_resident_count_dec(pmap_t pmap, int count) +{ + + PMAP_LOCK_ASSERT(pmap, MA_OWNED); + pmap->pm_stats.resident_count -= count; +} PMAP_INLINE pt_entry_t * vtopte(vm_offset_t va) @@ -777,7 +793,6 @@ static u_long pmap_pdpe_demotions; SYSCTL_ULONG(_vm_pmap_pdpe, OID_AUTO, demotions, CTLFLAG_RD, &pmap_pdpe_demotions, 0, "1GB page demotions"); - /*************************************************** * Low level helper routines..... ***************************************************/ @@ -1184,15 +1199,20 @@ pmap_extract_and_hold(pmap_t pmap, vm_of { pd_entry_t pde, *pdep; pt_entry_t pte; + vm_paddr_t pa; vm_page_t m; + pa = 0; m = NULL; - vm_page_lock_queues(); PMAP_LOCK(pmap); +retry: pdep = pmap_pde(pmap, va); if (pdep != NULL && (pde = *pdep)) { if (pde & PG_PS) { if ((pde & PG_RW) || (prot & VM_PROT_WRITE) == 0) { + if (vm_page_pa_tryrelock(pmap, (pde & PG_PS_FRAME) | + (va & PDRMASK), &pa)) + goto retry; m = PHYS_TO_VM_PAGE((pde & PG_PS_FRAME) | (va & PDRMASK)); vm_page_hold(m); @@ -1201,12 +1221,14 @@ pmap_extract_and_hold(pmap_t pmap, vm_of pte = *pmap_pde_to_pte(pdep, va); if ((pte & PG_V) && ((pte & PG_RW) || (prot & VM_PROT_WRITE) == 0)) { + if (vm_page_pa_tryrelock(pmap, pte & PG_FRAME, &pa)) + goto retry; m = PHYS_TO_VM_PAGE(pte & PG_FRAME); vm_page_hold(m); } } } - vm_page_unlock_queues(); + PA_UNLOCK_COND(pa); PMAP_UNLOCK(pmap); return (m); } @@ -1236,7 +1258,7 @@ pmap_kextract(vm_offset_t va) pa = (pa & PG_FRAME) | (va & PAGE_MASK); } } - return pa; + return (pa); } /*************************************************** @@ -1466,9 +1488,9 @@ pmap_unwire_pte_hold(pmap_t pmap, vm_off --m->wire_count; if (m->wire_count == 0) - return _pmap_unwire_pte_hold(pmap, va, m, free); + return (_pmap_unwire_pte_hold(pmap, va, m, free)); else - return 0; + return (0); } static int @@ -1476,6 +1498,7 @@ _pmap_unwire_pte_hold(pmap_t pmap, vm_of vm_page_t *free) { + PMAP_LOCK_ASSERT(pmap, MA_OWNED); /* * unmap the page table page */ @@ -1495,7 +1518,7 @@ _pmap_unwire_pte_hold(pmap_t pmap, vm_of pd = pmap_pde(pmap, va); *pd = 0; } - --pmap->pm_stats.resident_count; + pmap_resident_count_dec(pmap, 1); if (m->pindex < NUPDE) { /* We just released a PT, unhold the matching PD */ vm_page_t pdpg; @@ -1524,7 +1547,7 @@ _pmap_unwire_pte_hold(pmap_t pmap, vm_of */ pmap_add_delayed_free_list(m, free, TRUE); - return 1; + return (1); } /* @@ -1537,10 +1560,10 @@ pmap_unuse_pt(pmap_t pmap, vm_offset_t v vm_page_t mpte; if (va >= VM_MAXUSER_ADDRESS) - return 0; + return (0); KASSERT(ptepde != 0, ("pmap_unuse_pt: ptepde != 0")); mpte = PHYS_TO_VM_PAGE(ptepde & PG_FRAME); - return pmap_unwire_pte_hold(pmap, va, mpte, free); + return (pmap_unwire_pte_hold(pmap, va, mpte, free)); } void @@ -1612,6 +1635,7 @@ _pmap_allocpte(pmap_t pmap, vm_pindex_t (flags & (M_NOWAIT | M_WAITOK)) == M_WAITOK, ("_pmap_allocpte: flags is neither M_NOWAIT nor M_WAITOK")); + PMAP_LOCK_ASSERT(pmap, MA_OWNED); /* * Allocate a page table page. */ @@ -1729,9 +1753,9 @@ _pmap_allocpte(pmap_t pmap, vm_pindex_t *pd = VM_PAGE_TO_PHYS(m) | PG_U | PG_RW | PG_V | PG_A | PG_M; } - pmap->pm_stats.resident_count++; + pmap_resident_count_inc(pmap, 1); - return m; + return (m); } static vm_page_t @@ -2036,7 +2060,7 @@ pmap_collect(pmap_t locked_pmap, struct PMAP_LOCK(pmap); else if (pmap != locked_pmap && !PMAP_TRYLOCK(pmap)) continue; - pmap->pm_stats.resident_count--; + pmap_resident_count_dec(pmap, 1); pde = pmap_pde(pmap, va); KASSERT((*pde & PG_PS) == 0, ("pmap_collect: found" " a 2mpage in page %p's pv list", m)); @@ -2437,7 +2461,7 @@ pmap_demote_pde(pmap_t pmap, pd_entry_t return (FALSE); } if (va < VM_MAXUSER_ADDRESS) - pmap->pm_stats.resident_count++; + pmap_resident_count_inc(pmap, 1); } mptepa = VM_PAGE_TO_PHYS(mpte); firstpte = (pt_entry_t *)PHYS_TO_DMAP(mptepa); @@ -2529,7 +2553,7 @@ pmap_remove_pde(pmap_t pmap, pd_entry_t */ if (oldpde & PG_G) pmap_invalidate_page(kernel_pmap, sva); - pmap->pm_stats.resident_count -= NBPDR / PAGE_SIZE; + pmap_resident_count_dec(pmap, NBPDR / PAGE_SIZE); if (oldpde & PG_MANAGED) { pvh = pa_to_pvh(oldpde & PG_PS_FRAME); pmap_pvh_free(pvh, pmap, sva); @@ -2552,7 +2576,7 @@ pmap_remove_pde(pmap_t pmap, pd_entry_t mpte = pmap_lookup_pt_page(pmap, sva); if (mpte != NULL) { pmap_remove_pt_page(pmap, mpte); - pmap->pm_stats.resident_count--; + pmap_resident_count_dec(pmap, 1); KASSERT(mpte->wire_count == NPTEPG, ("pmap_remove_pde: pte page wire count error")); mpte->wire_count = 0; @@ -2583,7 +2607,7 @@ pmap_remove_pte(pmap_t pmap, pt_entry_t */ if (oldpte & PG_G) pmap_invalidate_page(kernel_pmap, va); - pmap->pm_stats.resident_count -= 1; + pmap_resident_count_dec(pmap, 1); if (oldpte & PG_MANAGED) { m = PHYS_TO_VM_PAGE(oldpte & PG_FRAME); if ((oldpte & (PG_M | PG_RW)) == (PG_M | PG_RW)) @@ -2775,9 +2799,9 @@ pmap_remove_all(vm_page_t m) mtx_assert(&vm_page_queue_mtx, MA_OWNED); pvh = pa_to_pvh(VM_PAGE_TO_PHYS(m)); while ((pv = TAILQ_FIRST(&pvh->pv_list)) != NULL) { - va = pv->pv_va; pmap = PV_PMAP(pv); PMAP_LOCK(pmap); + va = pv->pv_va; pde = pmap_pde(pmap, va); (void)pmap_demote_pde(pmap, pde, va); PMAP_UNLOCK(pmap); @@ -2785,7 +2809,7 @@ pmap_remove_all(vm_page_t m) while ((pv = TAILQ_FIRST(&m->md.pv_list)) != NULL) { pmap = PV_PMAP(pv); PMAP_LOCK(pmap); - pmap->pm_stats.resident_count--; + pmap_resident_count_dec(pmap, 1); pde = pmap_pde(pmap, pv->pv_va); KASSERT((*pde & PG_PS) == 0, ("pmap_remove_all: found" " a 2mpage in page %p's pv list", m)); @@ -2832,18 +2856,9 @@ retry: if (oldpde & PG_MANAGED) { eva = sva + NBPDR; for (va = sva, m = PHYS_TO_VM_PAGE(oldpde & PG_PS_FRAME); - va < eva; va += PAGE_SIZE, m++) { - /* - * In contrast to the analogous operation on a 4KB page - * mapping, the mapping's PG_A flag is not cleared and - * the page's PG_REFERENCED flag is not set. The - * reason is that pmap_demote_pde() expects that a 2MB - * page mapping with a stored page table page has PG_A - * set. - */ + va < eva; va += PAGE_SIZE, m++) if ((oldpde & (PG_M | PG_RW)) == (PG_M | PG_RW)) vm_page_dirty(m); - } } if ((prot & VM_PROT_WRITE) == 0) newpde &= ~(PG_RW | PG_M); @@ -2952,23 +2967,15 @@ retry: obits = pbits = *pte; if ((pbits & PG_V) == 0) continue; - if (pbits & PG_MANAGED) { - m = NULL; - if (pbits & PG_A) { + + if ((prot & VM_PROT_WRITE) == 0) { + if ((pbits & (PG_MANAGED | PG_M | PG_RW)) == + (PG_MANAGED | PG_M | PG_RW)) { m = PHYS_TO_VM_PAGE(pbits & PG_FRAME); - vm_page_flag_set(m, PG_REFERENCED); - pbits &= ~PG_A; - } - if ((pbits & (PG_M | PG_RW)) == (PG_M | PG_RW)) { - if (m == NULL) - m = PHYS_TO_VM_PAGE(pbits & - PG_FRAME); vm_page_dirty(m); } - } - - if ((prot & VM_PROT_WRITE) == 0) pbits &= ~(PG_RW | PG_M); + } if ((prot & VM_PROT_EXECUTE) == 0) pbits |= pg_nx; @@ -3142,9 +3149,8 @@ pmap_enter(pmap_t pmap, vm_offset_t va, * In the case that a page table page is not * resident, we are creating it here. */ - if (va < VM_MAXUSER_ADDRESS) { + if (va < VM_MAXUSER_ADDRESS) mpte = pmap_allocpte(pmap, va, M_WAITOK); - } pde = pmap_pde(pmap, va); if (pde != NULL && (*pde & PG_V) != 0) { @@ -3208,7 +3214,7 @@ pmap_enter(pmap_t pmap, vm_offset_t va, " va: 0x%lx", va)); } } else - pmap->pm_stats.resident_count++; + pmap_resident_count_inc(pmap, 1); /* * Enter on the PV list if part of our managed memory. @@ -3342,7 +3348,7 @@ pmap_enter_pde(pmap_t pmap, vm_offset_t /* * Increment counters. */ - pmap->pm_stats.resident_count += NBPDR / PAGE_SIZE; + pmap_resident_count_inc(pmap, NBPDR / PAGE_SIZE); /* * Map the superpage. @@ -3392,7 +3398,7 @@ pmap_enter_object(pmap_t pmap, vm_offset mpte); m = TAILQ_NEXT(m, listq); } - PMAP_UNLOCK(pmap); + PMAP_UNLOCK(pmap); } /* @@ -3496,7 +3502,7 @@ pmap_enter_quick_locked(pmap_t pmap, vm_ /* * Increment counters */ - pmap->pm_stats.resident_count++; + pmap_resident_count_inc(pmap, 1); pa = VM_PAGE_TO_PHYS(m) | pmap_cache_bits(m->md.pat_mode, 0); if ((prot & VM_PROT_EXECUTE) == 0) @@ -3509,7 +3515,7 @@ pmap_enter_quick_locked(pmap_t pmap, vm_ pte_store(pte, pa | PG_V | PG_U); else pte_store(pte, pa | PG_V | PG_U | PG_MANAGED); - return mpte; + return (mpte); } /* @@ -3601,8 +3607,7 @@ pmap_object_init_pt(pmap_t pmap, vm_offs if ((*pde & PG_V) == 0) { pde_store(pde, pa | PG_PS | PG_M | PG_A | PG_U | PG_RW | PG_V); - pmap->pm_stats.resident_count += NBPDR / - PAGE_SIZE; + pmap_resident_count_inc(pmap, NBPDR / PAGE_SIZE); pmap_pde_mappings++; } else { /* Continue on if the PDE is already valid. */ @@ -3669,8 +3674,6 @@ out: PMAP_UNLOCK(pmap); } - - /* * Copy the range specified by src_addr/len * from the source map to the range dst_addr/len @@ -3745,8 +3748,7 @@ pmap_copy(pmap_t dst_pmap, pmap_t src_pm pmap_pv_insert_pde(dst_pmap, addr, srcptepaddr & PG_PS_FRAME))) { *pde = srcptepaddr & ~PG_W; - dst_pmap->pm_stats.resident_count += - NBPDR / PAGE_SIZE; + pmap_resident_count_inc(dst_pmap, NBPDR / PAGE_SIZE); } else dstmpde->wire_count--; continue; @@ -3789,7 +3791,7 @@ pmap_copy(pmap_t dst_pmap, pmap_t src_pm */ *dst_pte = ptetemp & ~(PG_W | PG_M | PG_A); - dst_pmap->pm_stats.resident_count++; + pmap_resident_count_inc(dst_pmap, 1); } else { free = NULL; if (pmap_unwire_pte_hold(dst_pmap, @@ -3886,12 +3888,12 @@ pmap_page_exists_quick(pmap_t pmap, vm_p int loops = 0; if (m->flags & PG_FICTITIOUS) - return FALSE; + return (FALSE); mtx_assert(&vm_page_queue_mtx, MA_OWNED); TAILQ_FOREACH(pv, &m->md.pv_list, pv_list) { if (PV_PMAP(pv) == pmap) { - return TRUE; + return (TRUE); } loops++; if (loops >= 16) @@ -3959,16 +3961,15 @@ pmap_pvh_wired_mappings(struct md_page * boolean_t pmap_page_is_mapped(vm_page_t m) { - struct md_page *pvh; + boolean_t rv; if ((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) != 0) return (FALSE); - mtx_assert(&vm_page_queue_mtx, MA_OWNED); - if (TAILQ_EMPTY(&m->md.pv_list)) { - pvh = pa_to_pvh(VM_PAGE_TO_PHYS(m)); - return (!TAILQ_EMPTY(&pvh->pv_list)); - } else - return (TRUE); + vm_page_lock_queues(); + rv = !TAILQ_EMPTY(&m->md.pv_list) || + !TAILQ_EMPTY(&pa_to_pvh(VM_PAGE_TO_PHYS(m))->pv_list); + vm_page_unlock_queues(); + return (rv); } /* @@ -4062,7 +4063,7 @@ pmap_remove_pages(pmap_t pmap) pv_entry_count--; pc->pc_map[field] |= bitmask; if ((tpte & PG_PS) != 0) { - pmap->pm_stats.resident_count -= NBPDR / PAGE_SIZE; + pmap_resident_count_dec(pmap, NBPDR / PAGE_SIZE); pvh = pa_to_pvh(tpte & PG_PS_FRAME); TAILQ_REMOVE(&pvh->pv_list, pv, pv_list); if (TAILQ_EMPTY(&pvh->pv_list)) { @@ -4073,7 +4074,7 @@ pmap_remove_pages(pmap_t pmap) mpte = pmap_lookup_pt_page(pmap, pv->pv_va); if (mpte != NULL) { pmap_remove_pt_page(pmap, mpte); - pmap->pm_stats.resident_count--; + pmap_resident_count_dec(pmap, 1); KASSERT(mpte->wire_count == NPTEPG, ("pmap_remove_pages: pte page wire count error")); mpte->wire_count = 0; @@ -4081,7 +4082,7 @@ pmap_remove_pages(pmap_t pmap) atomic_subtract_int(&cnt.v_wire_count, 1); } } else { - pmap->pm_stats.resident_count--; + pmap_resident_count_dec(pmap, 1); TAILQ_REMOVE(&m->md.pv_list, pv, pv_list); if (TAILQ_EMPTY(&m->md.pv_list)) { pvh = pa_to_pvh(VM_PAGE_TO_PHYS(m)); @@ -4178,6 +4179,49 @@ pmap_is_prefaultable(pmap_t pmap, vm_off } /* + * pmap_is_referenced: + * + * Return whether or not the specified physical page was referenced + * in any physical maps. + */ +boolean_t +pmap_is_referenced(vm_page_t m) +{ + + if (m->flags & PG_FICTITIOUS) + return (FALSE); + if (pmap_is_referenced_pvh(&m->md)) + return (TRUE); + return (pmap_is_referenced_pvh(pa_to_pvh(VM_PAGE_TO_PHYS(m)))); +} + +/* + * Returns TRUE if any of the given mappings were referenced and FALSE + * otherwise. Both page and 2mpage mappings are supported. + */ +static boolean_t +pmap_is_referenced_pvh(struct md_page *pvh) +{ + pv_entry_t pv; + pt_entry_t *pte; + pmap_t pmap; + boolean_t rv; + + mtx_assert(&vm_page_queue_mtx, MA_OWNED); + rv = FALSE; + TAILQ_FOREACH(pv, &pvh->pv_list, pv_list) { + pmap = PV_PMAP(pv); + PMAP_LOCK(pmap); + pte = pmap_pte(pmap, pv->pv_va); + rv = (*pte & (PG_A | PG_V)) == (PG_A | PG_V); + PMAP_UNLOCK(pmap); + if (rv) + break; + } + return (rv); +} + +/* * Clear the write and modified bits in each of the given page's mappings. */ void @@ -4196,9 +4240,9 @@ pmap_remove_write(vm_page_t m) mtx_assert(&vm_page_queue_mtx, MA_OWNED); pvh = pa_to_pvh(VM_PAGE_TO_PHYS(m)); TAILQ_FOREACH_SAFE(pv, &pvh->pv_list, pv_list, next_pv) { - va = pv->pv_va; pmap = PV_PMAP(pv); PMAP_LOCK(pmap); + va = pv->pv_va; pde = pmap_pde(pmap, va); if ((*pde & PG_RW) != 0) (void)pmap_demote_pde(pmap, pde, va); @@ -4254,9 +4298,9 @@ pmap_ts_referenced(vm_page_t m) mtx_assert(&vm_page_queue_mtx, MA_OWNED); pvh = pa_to_pvh(VM_PAGE_TO_PHYS(m)); TAILQ_FOREACH_SAFE(pv, &pvh->pv_list, pv_list, pvn) { - va = pv->pv_va; pmap = PV_PMAP(pv); PMAP_LOCK(pmap); + va = pv->pv_va; pde = pmap_pde(pmap, va); *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***