Date: Sun, 6 May 2007 11:33:16 GMT From: Marko Zec <zec@FreeBSD.org> To: Perforce Change Reviews <perforce@FreeBSD.org> Subject: PERFORCE change 119324 for review Message-ID: <200705061133.l46BXGPn079978@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=119324 Change 119324 by zec@zec_tca51 on 2007/05/06 11:32:18 IFC Affected files ... .. //depot/projects/vimage/src/sys/amd64/amd64/local_apic.c#4 integrate .. //depot/projects/vimage/src/sys/amd64/amd64/mptable_pci.c#4 integrate .. //depot/projects/vimage/src/sys/amd64/amd64/msi.c#3 integrate .. //depot/projects/vimage/src/sys/amd64/amd64/nexus.c#4 integrate .. //depot/projects/vimage/src/sys/amd64/amd64/pmap.c#5 integrate .. //depot/projects/vimage/src/sys/amd64/amd64/vm_machdep.c#2 integrate .. //depot/projects/vimage/src/sys/amd64/include/intr_machdep.h#4 integrate .. //depot/projects/vimage/src/sys/amd64/include/vmparam.h#3 integrate .. //depot/projects/vimage/src/sys/amd64/pci/pci_bus.c#4 integrate .. //depot/projects/vimage/src/sys/arm/include/vmparam.h#2 integrate .. //depot/projects/vimage/src/sys/arm/xscale/i80321/ep80219_machdep.c#3 integrate .. //depot/projects/vimage/src/sys/arm/xscale/i80321/iq31244_machdep.c#3 integrate .. //depot/projects/vimage/src/sys/arm/xscale/ixp425/avila_machdep.c#4 integrate .. //depot/projects/vimage/src/sys/boot/common/loader.8#3 integrate .. //depot/projects/vimage/src/sys/cam/cam_xpt.c#6 integrate .. //depot/projects/vimage/src/sys/cam/scsi/scsi_da.c#6 integrate .. //depot/projects/vimage/src/sys/compat/freebsd32/freebsd32_misc.c#3 integrate .. //depot/projects/vimage/src/sys/compat/linprocfs/linprocfs.c#8 integrate .. //depot/projects/vimage/src/sys/compat/opensolaris/kern/opensolaris_kobj.c#2 integrate .. //depot/projects/vimage/src/sys/compat/opensolaris/kern/opensolaris_misc.c#2 integrate .. //depot/projects/vimage/src/sys/compat/opensolaris/kern/opensolaris_vfs.c#2 integrate .. //depot/projects/vimage/src/sys/compat/opensolaris/sys/misc.h#2 integrate .. //depot/projects/vimage/src/sys/compat/opensolaris/sys/sunddi.h#1 branch .. //depot/projects/vimage/src/sys/compat/opensolaris/sys/types.h#2 integrate .. //depot/projects/vimage/src/sys/compat/opensolaris/sys/vnode.h#2 integrate .. //depot/projects/vimage/src/sys/conf/files#8 integrate .. //depot/projects/vimage/src/sys/conf/kern.pre.mk#2 integrate .. //depot/projects/vimage/src/sys/contrib/opensolaris/uts/common/fs/dnlc.c#2 integrate .. //depot/projects/vimage/src/sys/contrib/opensolaris/uts/common/fs/gfs.c#2 integrate .. //depot/projects/vimage/src/sys/contrib/opensolaris/uts/common/fs/zfs/arc.c#2 integrate .. //depot/projects/vimage/src/sys/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c#2 integrate .. //depot/projects/vimage/src/sys/contrib/opensolaris/uts/common/fs/zfs/spa.c#2 integrate .. //depot/projects/vimage/src/sys/contrib/opensolaris/uts/common/fs/zfs/spa_config.c#2 integrate .. //depot/projects/vimage/src/sys/contrib/opensolaris/uts/common/fs/zfs/vdev.c#2 integrate .. //depot/projects/vimage/src/sys/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c#2 integrate .. //depot/projects/vimage/src/sys/contrib/opensolaris/uts/common/fs/zfs/zap.c#2 integrate .. //depot/projects/vimage/src/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_acl.c#2 integrate .. //depot/projects/vimage/src/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_ctldir.c#2 integrate .. //depot/projects/vimage/src/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_dir.c#2 integrate .. //depot/projects/vimage/src/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c#2 integrate .. //depot/projects/vimage/src/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_log.c#2 integrate .. //depot/projects/vimage/src/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c#2 integrate .. //depot/projects/vimage/src/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c#2 integrate .. //depot/projects/vimage/src/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c#2 integrate .. //depot/projects/vimage/src/sys/contrib/opensolaris/uts/common/fs/zfs/zil.c#2 integrate .. //depot/projects/vimage/src/sys/contrib/opensolaris/uts/common/fs/zfs/zio.c#2 integrate .. //depot/projects/vimage/src/sys/contrib/opensolaris/uts/common/fs/zfs/zvol.c#2 integrate .. //depot/projects/vimage/src/sys/dev/acpi_support/acpi_ibm.c#3 integrate .. //depot/projects/vimage/src/sys/dev/acpica/acpi.c#4 integrate .. //depot/projects/vimage/src/sys/dev/acpica/acpi_pcib_acpi.c#4 integrate .. //depot/projects/vimage/src/sys/dev/acpica/acpi_pcib_pci.c#3 integrate .. //depot/projects/vimage/src/sys/dev/ata/ata-disk.c#3 integrate .. //depot/projects/vimage/src/sys/dev/ata/atapi-cam.c#4 integrate .. //depot/projects/vimage/src/sys/dev/ath/if_ath.c#8 integrate .. //depot/projects/vimage/src/sys/dev/bce/if_bce.c#6 integrate .. //depot/projects/vimage/src/sys/dev/bce/if_bcefw.h#2 integrate .. //depot/projects/vimage/src/sys/dev/bce/if_bcereg.h#3 integrate .. //depot/projects/vimage/src/sys/dev/bge/if_bge.c#6 integrate .. //depot/projects/vimage/src/sys/dev/bge/if_bgereg.h#6 integrate .. //depot/projects/vimage/src/sys/dev/ciss/ciss.c#4 integrate .. //depot/projects/vimage/src/sys/dev/ciss/cissvar.h#2 integrate .. //depot/projects/vimage/src/sys/dev/cxgb/cxgb_main.c#3 integrate .. //depot/projects/vimage/src/sys/dev/cxgb/cxgb_sge.c#3 integrate .. //depot/projects/vimage/src/sys/dev/em/LICENSE#2 integrate .. //depot/projects/vimage/src/sys/dev/em/README#2 integrate .. //depot/projects/vimage/src/sys/dev/em/e1000_80003es2lan.c#1 branch .. //depot/projects/vimage/src/sys/dev/em/e1000_80003es2lan.h#1 branch .. //depot/projects/vimage/src/sys/dev/em/e1000_82540.c#1 branch .. //depot/projects/vimage/src/sys/dev/em/e1000_82541.c#1 branch .. //depot/projects/vimage/src/sys/dev/em/e1000_82541.h#1 branch .. //depot/projects/vimage/src/sys/dev/em/e1000_82542.c#1 branch .. //depot/projects/vimage/src/sys/dev/em/e1000_82543.c#1 branch .. //depot/projects/vimage/src/sys/dev/em/e1000_82543.h#1 branch .. //depot/projects/vimage/src/sys/dev/em/e1000_82571.c#1 branch .. //depot/projects/vimage/src/sys/dev/em/e1000_82571.h#1 branch .. //depot/projects/vimage/src/sys/dev/em/e1000_82575.c#1 branch .. //depot/projects/vimage/src/sys/dev/em/e1000_82575.h#1 branch .. //depot/projects/vimage/src/sys/dev/em/e1000_api.c#1 branch .. //depot/projects/vimage/src/sys/dev/em/e1000_api.h#1 branch .. //depot/projects/vimage/src/sys/dev/em/e1000_defines.h#1 branch .. //depot/projects/vimage/src/sys/dev/em/e1000_hw.h#1 branch .. //depot/projects/vimage/src/sys/dev/em/e1000_ich8lan.c#1 branch .. //depot/projects/vimage/src/sys/dev/em/e1000_ich8lan.h#1 branch .. //depot/projects/vimage/src/sys/dev/em/e1000_mac.c#1 branch .. //depot/projects/vimage/src/sys/dev/em/e1000_mac.h#1 branch .. //depot/projects/vimage/src/sys/dev/em/e1000_manage.c#1 branch .. //depot/projects/vimage/src/sys/dev/em/e1000_manage.h#1 branch .. //depot/projects/vimage/src/sys/dev/em/e1000_nvm.c#1 branch .. //depot/projects/vimage/src/sys/dev/em/e1000_nvm.h#1 branch .. //depot/projects/vimage/src/sys/dev/em/e1000_osdep.h#1 branch .. //depot/projects/vimage/src/sys/dev/em/e1000_phy.c#1 branch .. //depot/projects/vimage/src/sys/dev/em/e1000_phy.h#1 branch .. //depot/projects/vimage/src/sys/dev/em/e1000_regs.h#1 branch .. //depot/projects/vimage/src/sys/dev/em/if_em.c#3 integrate .. //depot/projects/vimage/src/sys/dev/em/if_em.h#2 integrate .. //depot/projects/vimage/src/sys/dev/em/if_em_hw.c#2 delete .. //depot/projects/vimage/src/sys/dev/em/if_em_hw.h#2 delete .. //depot/projects/vimage/src/sys/dev/em/if_em_osdep.h#2 delete .. //depot/projects/vimage/src/sys/dev/firewire/firewire.c#4 integrate .. //depot/projects/vimage/src/sys/dev/firewire/firewire.h#2 integrate .. //depot/projects/vimage/src/sys/dev/firewire/firewirereg.h#3 integrate .. //depot/projects/vimage/src/sys/dev/firewire/fwdev.c#4 integrate .. //depot/projects/vimage/src/sys/dev/firewire/fwohci.c#3 integrate .. //depot/projects/vimage/src/sys/dev/firewire/fwohcireg.h#2 integrate .. //depot/projects/vimage/src/sys/dev/firewire/if_fwip.c#4 integrate .. //depot/projects/vimage/src/sys/dev/firewire/sbp.c#4 integrate .. //depot/projects/vimage/src/sys/dev/firewire/sbp_targ.c#4 integrate .. //depot/projects/vimage/src/sys/dev/gem/if_gem.c#3 integrate .. //depot/projects/vimage/src/sys/dev/gem/if_gem_pci.c#3 integrate .. //depot/projects/vimage/src/sys/dev/gem/if_gemvar.h#3 integrate .. //depot/projects/vimage/src/sys/dev/hme/if_hme.c#3 integrate .. //depot/projects/vimage/src/sys/dev/ipmi/ipmi_smbios.c#2 integrate .. //depot/projects/vimage/src/sys/dev/isp/isp.c#7 integrate .. //depot/projects/vimage/src/sys/dev/isp/isp_freebsd.c#7 integrate .. //depot/projects/vimage/src/sys/dev/isp/isp_freebsd.h#5 integrate .. //depot/projects/vimage/src/sys/dev/isp/isp_pci.c#6 integrate .. //depot/projects/vimage/src/sys/dev/isp/isp_sbus.c#6 integrate .. //depot/projects/vimage/src/sys/dev/isp/isp_tpublic.h#4 integrate .. //depot/projects/vimage/src/sys/dev/led/led.c#2 integrate .. //depot/projects/vimage/src/sys/dev/led/led.h#2 integrate .. //depot/projects/vimage/src/sys/dev/mii/brgphy.c#8 integrate .. //depot/projects/vimage/src/sys/dev/mii/mii.c#3 integrate .. //depot/projects/vimage/src/sys/dev/mpt/mpt.c#4 integrate .. //depot/projects/vimage/src/sys/dev/mpt/mpt.h#5 integrate .. //depot/projects/vimage/src/sys/dev/mpt/mpt_cam.c#7 integrate .. //depot/projects/vimage/src/sys/dev/mpt/mpt_cam.h#3 integrate .. //depot/projects/vimage/src/sys/dev/mpt/mpt_pci.c#5 integrate .. //depot/projects/vimage/src/sys/dev/mpt/mpt_raid.c#3 integrate .. //depot/projects/vimage/src/sys/dev/msk/if_msk.c#6 integrate .. //depot/projects/vimage/src/sys/dev/msk/if_mskreg.h#3 integrate .. //depot/projects/vimage/src/sys/dev/mxge/if_mxge.c#3 integrate .. //depot/projects/vimage/src/sys/dev/pci/pci.c#7 integrate .. //depot/projects/vimage/src/sys/dev/pci/pci_if.m#3 integrate .. //depot/projects/vimage/src/sys/dev/pci/pci_pci.c#4 integrate .. //depot/projects/vimage/src/sys/dev/pci/pci_private.h#4 integrate .. //depot/projects/vimage/src/sys/dev/pci/pcib_if.m#3 integrate .. //depot/projects/vimage/src/sys/dev/pci/pcib_private.h#5 integrate .. //depot/projects/vimage/src/sys/dev/pci/pcireg.h#5 integrate .. //depot/projects/vimage/src/sys/dev/pci/pcivar.h#4 integrate .. //depot/projects/vimage/src/sys/dev/sound/pci/emu10kx.c#4 integrate .. //depot/projects/vimage/src/sys/dev/sound/pci/hda/hdac.c#8 integrate .. //depot/projects/vimage/src/sys/dev/sound/pci/hda/hdac_private.h#4 integrate .. //depot/projects/vimage/src/sys/dev/sound/pci/ich.c#5 integrate .. //depot/projects/vimage/src/sys/dev/stge/if_stge.c#4 integrate .. //depot/projects/vimage/src/sys/dev/stge/if_stgereg.h#2 integrate .. //depot/projects/vimage/src/sys/dev/uart/uart_kbd_sun.c#4 integrate .. //depot/projects/vimage/src/sys/dev/usb/if_axe.c#3 integrate .. //depot/projects/vimage/src/sys/dev/usb/if_axereg.h#2 integrate .. //depot/projects/vimage/src/sys/dev/usb/if_ural.c#4 integrate .. //depot/projects/vimage/src/sys/dev/usb/uftdi.c#2 integrate .. //depot/projects/vimage/src/sys/dev/usb/usbdevs#4 integrate .. //depot/projects/vimage/src/sys/fs/devfs/devfs_devs.c#2 integrate .. //depot/projects/vimage/src/sys/fs/devfs/devfs_vnops.c#4 integrate .. //depot/projects/vimage/src/sys/fs/procfs/procfs_ioctl.c#3 integrate .. //depot/projects/vimage/src/sys/fs/procfs/procfs_map.c#3 integrate .. //depot/projects/vimage/src/sys/fs/pseudofs/pseudofs_vncache.c#5 integrate .. //depot/projects/vimage/src/sys/geom/geom.h#2 integrate .. //depot/projects/vimage/src/sys/geom/geom_dev.c#3 integrate .. //depot/projects/vimage/src/sys/geom/geom_disk.c#3 integrate .. //depot/projects/vimage/src/sys/geom/geom_disk.h#2 integrate .. //depot/projects/vimage/src/sys/geom/geom_io.c#3 integrate .. //depot/projects/vimage/src/sys/geom/geom_slice.c#2 integrate .. //depot/projects/vimage/src/sys/geom/geom_subr.c#2 integrate .. //depot/projects/vimage/src/sys/geom/part/g_part.c#2 integrate .. //depot/projects/vimage/src/sys/geom/uzip/g_uzip.c#3 integrate .. //depot/projects/vimage/src/sys/i386/i386/local_apic.c#4 integrate .. //depot/projects/vimage/src/sys/i386/i386/mptable_pci.c#4 integrate .. //depot/projects/vimage/src/sys/i386/i386/msi.c#3 integrate .. //depot/projects/vimage/src/sys/i386/i386/nexus.c#4 integrate .. //depot/projects/vimage/src/sys/i386/i386/pmap.c#5 integrate .. //depot/projects/vimage/src/sys/i386/i386/sys_machdep.c#2 integrate .. //depot/projects/vimage/src/sys/i386/i386/vm_machdep.c#3 integrate .. //depot/projects/vimage/src/sys/i386/include/intr_machdep.h#4 integrate .. //depot/projects/vimage/src/sys/i386/include/vmparam.h#3 integrate .. //depot/projects/vimage/src/sys/i386/pci/pci_bus.c#4 integrate .. //depot/projects/vimage/src/sys/ia64/ia64/machdep.c#4 integrate .. //depot/projects/vimage/src/sys/ia64/include/vmparam.h#3 integrate .. //depot/projects/vimage/src/sys/kern/kern_descrip.c#6 integrate .. //depot/projects/vimage/src/sys/kern/kern_linker.c#7 integrate .. //depot/projects/vimage/src/sys/kern/kern_time.c#3 integrate .. //depot/projects/vimage/src/sys/kern/kern_uuid.c#5 integrate .. //depot/projects/vimage/src/sys/kern/subr_rman.c#5 integrate .. //depot/projects/vimage/src/sys/kern/sys_generic.c#4 integrate .. //depot/projects/vimage/src/sys/kern/uipc_debug.c#2 integrate .. //depot/projects/vimage/src/sys/kern/uipc_sockbuf.c#3 integrate .. //depot/projects/vimage/src/sys/kern/uipc_socket.c#10 integrate .. //depot/projects/vimage/src/sys/kern/uipc_syscalls.c#8 integrate .. //depot/projects/vimage/src/sys/kern/vfs_bio.c#4 integrate .. //depot/projects/vimage/src/sys/kern/vfs_mount.c#5 integrate .. //depot/projects/vimage/src/sys/kern/vfs_syscalls.c#5 integrate .. //depot/projects/vimage/src/sys/modules/em/Makefile#2 integrate .. //depot/projects/vimage/src/sys/modules/zfs/Makefile#2 integrate .. //depot/projects/vimage/src/sys/net/ieee8023ad_lacp.c#2 integrate .. //depot/projects/vimage/src/sys/net/if.h#2 integrate .. //depot/projects/vimage/src/sys/net/if_lagg.c#2 integrate .. //depot/projects/vimage/src/sys/net/if_lagg.h#2 integrate .. //depot/projects/vimage/src/sys/net80211/ieee80211_amrr.c#2 integrate .. //depot/projects/vimage/src/sys/netgraph/ng_l2tp.c#2 integrate .. //depot/projects/vimage/src/sys/netgraph/ng_mppc.c#2 integrate .. //depot/projects/vimage/src/sys/netinet/in_pcb.c#9 integrate .. //depot/projects/vimage/src/sys/netinet/in_pcb.h#7 integrate .. //depot/projects/vimage/src/sys/netinet/ip_divert.c#4 integrate .. //depot/projects/vimage/src/sys/netinet/ip_fw.h#6 integrate .. //depot/projects/vimage/src/sys/netinet/ip_fw2.c#13 integrate .. //depot/projects/vimage/src/sys/netinet/libalias/alias_proxy.c#4 integrate .. //depot/projects/vimage/src/sys/netinet/raw_ip.c#8 integrate .. //depot/projects/vimage/src/sys/netinet/sctp.h#3 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_auth.c#5 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_bsd_addr.c#5 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_constants.h#7 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_header.h#3 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_indata.c#8 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_indata.h#4 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_input.c#8 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_os_bsd.h#7 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_output.c#8 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_output.h#4 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_pcb.c#8 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_pcb.h#7 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_peeloff.c#6 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_structs.h#8 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_uio.h#6 integrate .. //depot/projects/vimage/src/sys/netinet/sctp_usrreq.c#8 integrate .. //depot/projects/vimage/src/sys/netinet/sctputil.c#8 integrate .. //depot/projects/vimage/src/sys/netinet/sctputil.h#7 integrate .. //depot/projects/vimage/src/sys/netinet/tcp_debug.c#2 integrate .. //depot/projects/vimage/src/sys/netinet/tcp_input.c#10 integrate .. //depot/projects/vimage/src/sys/netinet/tcp_subr.c#14 integrate .. //depot/projects/vimage/src/sys/netinet/tcp_usrreq.c#8 integrate .. //depot/projects/vimage/src/sys/netinet/tcp_var.h#8 integrate .. //depot/projects/vimage/src/sys/netinet/udp_usrreq.c#9 edit .. //depot/projects/vimage/src/sys/netinet6/in6_pcb.c#7 edit .. //depot/projects/vimage/src/sys/netinet6/in6_src.c#7 integrate .. //depot/projects/vimage/src/sys/netinet6/nd6.c#11 integrate .. //depot/projects/vimage/src/sys/netinet6/nd6_nbr.c#6 integrate .. //depot/projects/vimage/src/sys/netinet6/route6.c#4 integrate .. //depot/projects/vimage/src/sys/netinet6/sctp6_usrreq.c#8 integrate .. //depot/projects/vimage/src/sys/nfsclient/nfs_bio.c#2 integrate .. //depot/projects/vimage/src/sys/nfsclient/nfs_lock.c#2 integrate .. //depot/projects/vimage/src/sys/nfsclient/nfs_vnops.c#6 integrate .. //depot/projects/vimage/src/sys/nfsserver/nfs_syscalls.c#4 integrate .. //depot/projects/vimage/src/sys/pci/if_vr.c#4 integrate .. //depot/projects/vimage/src/sys/pci/if_vrreg.h#3 integrate .. //depot/projects/vimage/src/sys/powerpc/include/vmparam.h#2 integrate .. //depot/projects/vimage/src/sys/security/audit/audit_ioctl.h#2 integrate .. //depot/projects/vimage/src/sys/security/audit/audit_syscalls.c#5 integrate .. //depot/projects/vimage/src/sys/security/mac/mac_audit.c#1 branch .. //depot/projects/vimage/src/sys/security/mac/mac_framework.h#4 integrate .. //depot/projects/vimage/src/sys/security/mac/mac_inet.c#5 integrate .. //depot/projects/vimage/src/sys/security/mac/mac_net.c#4 integrate .. //depot/projects/vimage/src/sys/security/mac/mac_pipe.c#4 integrate .. //depot/projects/vimage/src/sys/security/mac/mac_policy.h#4 integrate .. //depot/projects/vimage/src/sys/security/mac/mac_process.c#3 integrate .. //depot/projects/vimage/src/sys/security/mac/mac_socket.c#3 integrate .. //depot/projects/vimage/src/sys/security/mac/mac_system.c#4 integrate .. //depot/projects/vimage/src/sys/security/mac/mac_vfs.c#5 integrate .. //depot/projects/vimage/src/sys/security/mac_biba/mac_biba.c#4 integrate .. //depot/projects/vimage/src/sys/security/mac_bsdextended/mac_bsdextended.c#4 integrate .. //depot/projects/vimage/src/sys/security/mac_ifoff/mac_ifoff.c#4 integrate .. //depot/projects/vimage/src/sys/security/mac_lomac/mac_lomac.c#4 integrate .. //depot/projects/vimage/src/sys/security/mac_mls/mac_mls.c#4 integrate .. //depot/projects/vimage/src/sys/security/mac_partition/mac_partition.c#4 integrate .. //depot/projects/vimage/src/sys/security/mac_portacl/mac_portacl.c#4 integrate .. //depot/projects/vimage/src/sys/security/mac_seeotheruids/mac_seeotheruids.c#4 integrate .. //depot/projects/vimage/src/sys/security/mac_stub/mac_stub.c#5 integrate .. //depot/projects/vimage/src/sys/security/mac_test/mac_test.c#4 integrate .. //depot/projects/vimage/src/sys/sparc64/include/vmparam.h#3 integrate .. //depot/projects/vimage/src/sys/sparc64/sparc64/machdep.c#4 integrate .. //depot/projects/vimage/src/sys/sparc64/sparc64/upa.c#3 integrate .. //depot/projects/vimage/src/sys/sun4v/include/vmparam.h#3 integrate .. //depot/projects/vimage/src/sys/sys/disk.h#2 integrate .. //depot/projects/vimage/src/sys/sys/filedesc.h#3 integrate .. //depot/projects/vimage/src/sys/sys/ioctl_compat.h#2 integrate .. //depot/projects/vimage/src/sys/sys/mount.h#5 integrate .. //depot/projects/vimage/src/sys/sys/param.h#5 integrate .. //depot/projects/vimage/src/sys/sys/priv.h#4 integrate .. //depot/projects/vimage/src/sys/sys/proc.h#10 integrate .. //depot/projects/vimage/src/sys/sys/socketvar.h#5 integrate .. //depot/projects/vimage/src/sys/ufs/ffs/ffs_softdep.c#4 integrate .. //depot/projects/vimage/src/sys/vm/swap_pager.c#4 integrate .. //depot/projects/vimage/src/sys/vm/vm_map.c#3 integrate .. //depot/projects/vimage/src/sys/vm/vm_page.c#4 integrate .. //depot/projects/vimage/src/sys/vm/vm_page.h#3 integrate Differences ... ==== //depot/projects/vimage/src/sys/amd64/amd64/local_apic.c#4 (text+ko) ==== @@ -32,7 +32,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/amd64/amd64/local_apic.c,v 1.37 2007/03/20 21:53:30 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/local_apic.c,v 1.38 2007/04/25 19:58:41 ariff Exp $"); #include "opt_hwpmc_hooks.h" @@ -326,6 +326,29 @@ /* XXX: Error and thermal LVTs */ + if (strcmp(cpu_vendor, "AuthenticAMD") == 0) { + /* + * Detect the presence of C1E capability mostly on latest + * dual-cores (or future) k8 family. This feature renders + * the local APIC timer dead, so we disable it by reading + * the Interrupt Pending Message register and clearing both + * C1eOnCmpHalt (bit 28) and SmiOnCmpHalt (bit 27). + * + * Reference: + * "BIOS and Kernel Developer's Guide for AMD NPT + * Family 0Fh Processors" + * #32559 revision 3.00 + */ + if ((cpu_id & 0x00000f00) == 0x00000f00 && + (cpu_id & 0x0fff0000) >= 0x00040000) { + uint64_t msr; + + msr = rdmsr(0xc0010055); + if (msr & 0x18000000) + wrmsr(0xc0010055, msr & ~0x18000000ULL); + } + } + intr_restore(eflags); } ==== //depot/projects/vimage/src/sys/amd64/amd64/mptable_pci.c#4 (text+ko) ==== @@ -33,7 +33,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/amd64/amd64/mptable_pci.c,v 1.7 2007/01/22 21:48:42 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/mptable_pci.c,v 1.8 2007/05/02 17:50:34 jhb Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -72,7 +72,7 @@ return (bus_generic_attach(dev)); } -/* Pass MSI alloc requests up to the nexus. */ +/* Pass MSI requests up to the nexus. */ static int mptable_hostb_alloc_msi(device_t pcib, device_t dev, int count, int maxcount, int *irqs) @@ -85,12 +85,22 @@ } static int -mptable_hostb_alloc_msix(device_t pcib, device_t dev, int index, int *irq) +mptable_hostb_alloc_msix(device_t pcib, device_t dev, int *irq) +{ + device_t bus; + + bus = device_get_parent(pcib); + return (PCIB_ALLOC_MSIX(device_get_parent(bus), dev, irq)); +} + +static int +mptable_hostb_map_msi(device_t pcib, device_t dev, int irq, uint64_t *addr, + uint32_t *data) { device_t bus; bus = device_get_parent(pcib); - return (PCIB_ALLOC_MSIX(device_get_parent(bus), dev, index, irq)); + return (PCIB_MAP_MSI(device_get_parent(bus), dev, irq, addr, data)); } static device_method_t mptable_hostb_methods[] = { @@ -120,8 +130,8 @@ DEVMETHOD(pcib_alloc_msi, mptable_hostb_alloc_msi), DEVMETHOD(pcib_release_msi, pcib_release_msi), DEVMETHOD(pcib_alloc_msix, mptable_hostb_alloc_msix), - DEVMETHOD(pcib_remap_msix, pcib_remap_msix), DEVMETHOD(pcib_release_msix, pcib_release_msix), + DEVMETHOD(pcib_map_msi, mptable_hostb_map_msi), { 0, 0 } }; @@ -177,8 +187,8 @@ DEVMETHOD(pcib_alloc_msi, pcib_alloc_msi), DEVMETHOD(pcib_release_msi, pcib_release_msi), DEVMETHOD(pcib_alloc_msix, pcib_alloc_msix), - DEVMETHOD(pcib_remap_msix, pcib_remap_msix), DEVMETHOD(pcib_release_msix, pcib_release_msix), + DEVMETHOD(pcib_map_msi, pcib_map_msi), {0, 0} }; ==== //depot/projects/vimage/src/sys/amd64/amd64/msi.c#3 (text+ko) ==== @@ -34,7 +34,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/amd64/amd64/msi.c,v 1.4 2007/02/15 22:22:56 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/msi.c,v 1.5 2007/05/02 17:50:34 jhb Exp $"); #include <sys/param.h> #include <sys/bus.h> @@ -99,21 +99,20 @@ * assigned an ID by the system; however, a group will use the ID from * the first message. * - * For MSI-X, each message is isolated, and msi_index indicates the - * index of this message in the device's MSI-X table. + * For MSI-X, each message is isolated. */ struct msi_intsrc { struct intsrc msi_intsrc; device_t msi_dev; /* Owning device. (g) */ struct msi_intsrc *msi_first; /* First source in group. */ u_int msi_irq; /* IRQ cookie. */ - u_int msi_index; /* Index of this message. */ u_int msi_msix; /* MSI-X message. */ u_int msi_vector:8; /* IDT vector. */ u_int msi_cpu:8; /* Local APIC ID. (g) */ u_int msi_count:8; /* Messages in this group. (g) */ }; +static struct msi_intsrc *msi_create_source(u_int irq); static void msi_enable_source(struct intsrc *isrc); static void msi_disable_source(struct intsrc *isrc, int eoi); static void msi_eoi_source(struct intsrc *isrc); @@ -123,16 +122,10 @@ static int msi_config_intr(struct intsrc *isrc, enum intr_trigger trig, enum intr_polarity pol); static void msi_assign_cpu(struct intsrc *isrc, u_int apic_id); -static void msix_enable_intr(struct intsrc *isrc); -static int msix_source_pending(struct intsrc *isrc); -static void msix_assign_cpu(struct intsrc *isrc, u_int apic_id); struct pic msi_pic = { msi_enable_source, msi_disable_source, msi_eoi_source, msi_enable_intr, msi_vector, msi_source_pending, NULL, NULL, msi_config_intr, msi_assign_cpu }; -struct pic msix_pic = { msi_enable_source, msi_disable_source, msi_eoi_source, - msix_enable_intr, msi_vector, msix_source_pending, - NULL, NULL, msi_config_intr, msix_assign_cpu }; static int msi_enabled; static struct sx msi_sx; @@ -162,17 +155,6 @@ { struct msi_intsrc *msi = (struct msi_intsrc *)isrc; - /* - * Since we can only enable the entire group at once, go ahead and - * enable the messages when the first message is given a handler. - * Note that we assume all devices will register a handler for the - * first message. - */ - if (msi->msi_index == 0) { - mtx_lock_spin(&icu_lock); - pci_enable_msi(msi->msi_dev, INTEL_ADDR(msi), INTEL_DATA(msi)); - mtx_unlock_spin(&icu_lock); - } apic_enable_vector(msi->msi_vector); } @@ -206,51 +188,13 @@ msi->msi_cpu = apic_id; if (bootverbose) - printf("msi: Assigning MSI IRQ %d to local APIC %u\n", - msi->msi_irq, msi->msi_cpu); - mtx_lock_spin(&icu_lock); + printf("msi: Assigning %s IRQ %d to local APIC %u\n", + msi->msi_msix ? "MSI-X" : "MSI", msi->msi_irq, + msi->msi_cpu); if (isrc->is_enabled) - pci_enable_msi(msi->msi_dev, INTEL_ADDR(msi), INTEL_DATA(msi)); - mtx_unlock_spin(&icu_lock); + pci_remap_msi_irq(msi->msi_dev, msi->msi_irq); } -static void -msix_enable_intr(struct intsrc *isrc) -{ - struct msi_intsrc *msi = (struct msi_intsrc *)isrc; - - mtx_lock_spin(&icu_lock); - pci_enable_msix(msi->msi_dev, msi->msi_index, INTEL_ADDR(msi), - INTEL_DATA(msi)); - pci_unmask_msix(msi->msi_dev, msi->msi_index); - mtx_unlock_spin(&icu_lock); - apic_enable_vector(msi->msi_vector); -} - -static int -msix_source_pending(struct intsrc *isrc) -{ - struct msi_intsrc *msi = (struct msi_intsrc *)isrc; - - return (pci_pending_msix(msi->msi_dev, msi->msi_index)); -} - -static void -msix_assign_cpu(struct intsrc *isrc, u_int apic_id) -{ - struct msi_intsrc *msi = (struct msi_intsrc *)isrc; - - msi->msi_cpu = apic_id; - if (bootverbose) - printf("msi: Assigning MSI-X IRQ %d to local APIC %u\n", - msi->msi_irq, msi->msi_cpu); - mtx_lock_spin(&icu_lock); - if (isrc->is_enabled) - pci_enable_msix(msi->msi_dev, msi->msi_index, INTEL_ADDR(msi), - INTEL_DATA(msi)); - mtx_unlock_spin(&icu_lock); -} - void msi_init(void) { @@ -262,10 +206,21 @@ msi_enabled = 1; intr_register_pic(&msi_pic); - intr_register_pic(&msix_pic); sx_init(&msi_sx, "msi"); } +struct msi_intsrc * +msi_create_source(u_int irq) +{ + struct msi_intsrc *msi; + + msi = malloc(sizeof(struct msi_intsrc), M_MSI, M_WAITOK | M_ZERO); + msi->msi_intsrc.is_pic = &msi_pic; + msi->msi_irq = irq; + intr_register_source(&msi->msi_intsrc); + return (msi); +} + /* * Try to allocate 'count' interrupt sources with contiguous IDT values. If * we allocate any new sources, then their IRQ values will be at the end of @@ -317,14 +272,8 @@ *newcount = count - cnt; for (j = 0; j < *newcount; j++) { - /* Create a new MSI source. */ - msi = malloc(sizeof(struct msi_intsrc), M_MSI, - M_WAITOK | M_ZERO); - msi->msi_intsrc.is_pic = &msi_pic; - msi->msi_irq = i + j; - intr_register_source(&msi->msi_intsrc); - - /* Add it to our array. */ + /* Create a new MSI source and add it to our array. */ + msi_create_source(i + j); irqs[cnt] = i + j; cnt++; } @@ -344,13 +293,11 @@ fsrc = (struct msi_intsrc *)intr_lookup_source(irqs[0]); for (i = 0; i < count; i++) { msi = (struct msi_intsrc *)intr_lookup_source(irqs[i]); - msi->msi_intsrc.is_pic = &msi_pic; msi->msi_dev = dev; msi->msi_vector = vector + i; if (bootverbose) printf("msi: routing MSI IRQ %d to vector %u\n", msi->msi_irq, msi->msi_vector); - msi->msi_index = i; msi->msi_first = fsrc; /* XXX: Somewhat gross. */ @@ -395,8 +342,6 @@ sx_xunlock(&msi_sx); return (EINVAL); } - KASSERT(first->msi_index == 0, ("index mismatch")); - KASSERT(first->msi_dev != NULL, ("unowned group")); /* Clear all the extra messages in the group. */ @@ -408,7 +353,6 @@ msi->msi_dev = NULL; apic_free_vector(msi->msi_vector, msi->msi_irq); msi->msi_vector = 0; - msi->msi_index = 0; } /* Clear out the first message. */ @@ -423,7 +367,44 @@ } int -msix_alloc(device_t dev, int index, int *irq, int *new) +msi_map(int irq, uint64_t *addr, uint32_t *data) +{ + struct msi_intsrc *msi; + + sx_slock(&msi_sx); + msi = (struct msi_intsrc *)intr_lookup_source(irq); + if (msi == NULL) { + sx_sunlock(&msi_sx); + return (ENOENT); + } + + /* Make sure this message is allocated to a device. */ + if (msi->msi_dev == NULL) { + sx_sunlock(&msi_sx); + return (ENXIO); + } + + /* + * If this message isn't an MSI-X message, make sure it's part + * of a gruop, and switch to the first message in the + * group. + */ + if (!msi->msi_msix) { + if (msi->msi_first == NULL) { + sx_sunlock(&msi_sx); + return (ENXIO); + } + msi = msi->msi_first; + } + + *addr = INTEL_ADDR(msi); + *data = INTEL_DATA(msi); + sx_sunlock(&msi_sx); + return (0); +} + +int +msix_alloc(device_t dev, int *irq, int *new) { struct msi_intsrc *msi; int i, vector; @@ -457,11 +438,7 @@ /* Create a new source. */ *new = 1; - msi = malloc(sizeof(struct msi_intsrc), M_MSI, - M_WAITOK | M_ZERO); - msi->msi_intsrc.is_pic = &msix_pic; - msi->msi_irq = i; - intr_register_source(&msi->msi_intsrc); + msi = msi_create_source(i); } /* Allocate an IDT vector. */ @@ -471,10 +448,8 @@ vector); /* Setup source. */ - msi->msi_intsrc.is_pic = &msix_pic; msi->msi_dev = dev; msi->msi_vector = vector; - msi->msi_index = index; msi->msi_msix = 1; /* XXX: Somewhat gross. */ @@ -486,30 +461,6 @@ } int -msix_remap(int index, int irq) -{ - struct msi_intsrc *msi; - - sx_xlock(&msi_sx); - msi = (struct msi_intsrc *)intr_lookup_source(irq); - if (msi == NULL) { - sx_xunlock(&msi_sx); - return (ENOENT); - } - - /* Make sure this is an MSI-X message. */ - if (!msi->msi_msix) { - sx_xunlock(&msi_sx); - return (EINVAL); - } - - KASSERT(msi->msi_dev != NULL, ("unowned message")); - msi->msi_index = index; - sx_xunlock(&msi_sx); - return (0); -} - -int msix_release(int irq) { struct msi_intsrc *msi; @@ -533,7 +484,6 @@ msi->msi_dev = NULL; apic_free_vector(msi->msi_vector, msi->msi_irq); msi->msi_vector = 0; - msi->msi_index = 0; msi->msi_msix = 0; sx_xunlock(&msi_sx); ==== //depot/projects/vimage/src/sys/amd64/amd64/nexus.c#4 (text+ko) ==== @@ -28,7 +28,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/amd64/amd64/nexus.c,v 1.75 2007/03/21 15:36:38 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/nexus.c,v 1.76 2007/05/02 17:50:34 jhb Exp $"); /* * This code implements a `root nexus' for Intel Architecture @@ -108,9 +108,9 @@ static void nexus_delete_resource(device_t, device_t, int, int); static int nexus_alloc_msi(device_t pcib, device_t dev, int count, int maxcount, int *irqs); static int nexus_release_msi(device_t pcib, device_t dev, int count, int *irqs); -static int nexus_alloc_msix(device_t pcib, device_t dev, int index, int *irq); -static int nexus_remap_msix(device_t pcib, device_t dev, int index, int irq); +static int nexus_alloc_msix(device_t pcib, device_t dev, int *irq); static int nexus_release_msix(device_t pcib, device_t dev, int irq); +static int nexus_map_msi(device_t pcib, device_t dev, int irq, uint64_t *addr, uint32_t *data); static device_method_t nexus_methods[] = { /* Device interface */ @@ -140,8 +140,8 @@ DEVMETHOD(pcib_alloc_msi, nexus_alloc_msi), DEVMETHOD(pcib_release_msi, nexus_release_msi), DEVMETHOD(pcib_alloc_msix, nexus_alloc_msix), - DEVMETHOD(pcib_remap_msix, nexus_remap_msix), DEVMETHOD(pcib_release_msix, nexus_release_msix), + DEVMETHOD(pcib_map_msi, nexus_map_msi), { 0, 0 } }; @@ -504,24 +504,17 @@ } static int -nexus_alloc_msix(device_t pcib, device_t dev, int index, int *irq) +nexus_alloc_msix(device_t pcib, device_t dev, int *irq) { int error, new; - error = msix_alloc(dev, index, irq, &new); + error = msix_alloc(dev, irq, &new); if (new) rman_manage_region(&irq_rman, *irq, *irq); return (error); } static int -nexus_remap_msix(device_t pcib, device_t dev, int index, int irq) -{ - - return (msix_remap(index, irq)); -} - -static int nexus_release_msix(device_t pcib, device_t dev, int irq) { @@ -551,6 +544,13 @@ return (msi_release(irqs, count)); } +static int +nexus_map_msi(device_t pcib, device_t dev, int irq, uint64_t *addr, uint32_t *data) +{ + + return (msi_map(irq, addr, data)); +} + /* Placeholder for system RAM. */ static void ram_identify(driver_t *driver, device_t parent) ==== //depot/projects/vimage/src/sys/amd64/amd64/pmap.c#5 (text+ko) ==== @@ -77,7 +77,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.582 2007/04/13 16:07:29 alc Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.584 2007/04/25 18:10:43 ups Exp $"); /* * Manages physical address maps. @@ -209,7 +209,7 @@ 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); + vm_offset_t sva, pd_entry_t ptepde, vm_page_t *free); static void pmap_remove_page(pmap_t pmap, vm_offset_t va, pd_entry_t *pde); static void pmap_remove_entry(struct pmap *pmap, vm_page_t m, vm_offset_t va); @@ -221,8 +221,9 @@ static vm_page_t pmap_allocpte(pmap_t pmap, vm_offset_t va, int flags); static vm_page_t _pmap_allocpte(pmap_t pmap, vm_pindex_t ptepindex, int flags); -static int _pmap_unwire_pte_hold(pmap_t pmap, vm_offset_t va, vm_page_t m); -static int pmap_unuse_pt(pmap_t, vm_offset_t, pd_entry_t); +static int _pmap_unwire_pte_hold(pmap_t pmap, vm_offset_t va, vm_page_t m, + vm_page_t* free); +static int pmap_unuse_pt(pmap_t, vm_offset_t, pd_entry_t, vm_page_t *); static vm_offset_t pmap_kmem_choose(vm_offset_t addr); CTASSERT(1 << PDESHIFT == sizeof(pd_entry_t)); @@ -1065,24 +1066,36 @@ /*************************************************** * Page table page management routines..... ***************************************************/ +static PMAP_INLINE void +pmap_free_zero_pages(vm_page_t free) +{ + vm_page_t m; + while (free != NULL) { + m = free; + free = m->right; + vm_page_free_zero(m); + } +} + /* * This routine unholds page table pages, and if the hold count * drops to zero, then it decrements the wire count. */ static PMAP_INLINE int -pmap_unwire_pte_hold(pmap_t pmap, vm_offset_t va, vm_page_t m) +pmap_unwire_pte_hold(pmap_t pmap, vm_offset_t va, vm_page_t m, vm_page_t *free) { --m->wire_count; if (m->wire_count == 0) - return _pmap_unwire_pte_hold(pmap, va, m); + return _pmap_unwire_pte_hold(pmap, va, m, free); else return 0; } static int -_pmap_unwire_pte_hold(pmap_t pmap, vm_offset_t va, vm_page_t m) +_pmap_unwire_pte_hold(pmap_t pmap, vm_offset_t va, vm_page_t m, + vm_page_t *free) { vm_offset_t pteva; @@ -1114,14 +1127,14 @@ vm_page_t pdpg; pdpg = PHYS_TO_VM_PAGE(*pmap_pdpe(pmap, va) & PG_FRAME); - pmap_unwire_pte_hold(pmap, va, pdpg); + pmap_unwire_pte_hold(pmap, va, pdpg, free); } if (m->pindex >= NUPDE && m->pindex < (NUPDE + NUPDPE)) { /* We just released a PD, unhold the matching PDP */ vm_page_t pdppg; pdppg = PHYS_TO_VM_PAGE(*pmap_pml4e(pmap, va) & PG_FRAME); - pmap_unwire_pte_hold(pmap, va, pdppg); + pmap_unwire_pte_hold(pmap, va, pdppg, free); } /* @@ -1130,7 +1143,13 @@ */ pmap_invalidate_page(pmap, pteva); - vm_page_free_zero(m); + /* + * Put page on a list so that it is released after + * *ALL* TLB shootdown is done + */ + m->right = *free; + *free = m; + atomic_subtract_int(&cnt.v_wire_count, 1); return 1; } @@ -1140,7 +1159,7 @@ * conditionally free the page, and manage the hold/wire counts. */ static int -pmap_unuse_pt(pmap_t pmap, vm_offset_t va, pd_entry_t ptepde) +pmap_unuse_pt(pmap_t pmap, vm_offset_t va, pd_entry_t ptepde, vm_page_t *free) { vm_page_t mpte; @@ -1148,7 +1167,7 @@ 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); + return pmap_unwire_pte_hold(pmap, va, mpte, free); } void @@ -1366,7 +1385,7 @@ { vm_pindex_t ptepindex; pd_entry_t *pd; - vm_page_t m; + vm_page_t m, free; KASSERT((flags & (M_NOWAIT | M_WAITOK)) == M_NOWAIT || (flags & (M_NOWAIT | M_WAITOK)) == M_WAITOK, @@ -1390,8 +1409,10 @@ *pd = 0; pd = 0; pmap->pm_stats.resident_count -= NBPDR / PAGE_SIZE; - pmap_unuse_pt(pmap, va, *pmap_pdpe(pmap, va)); + free = NULL; + pmap_unuse_pt(pmap, va, *pmap_pdpe(pmap, va), &free); pmap_invalidate_all(kernel_pmap); + pmap_free_zero_pages(free); } /* @@ -1609,7 +1630,7 @@ pt_entry_t *pte, tpte; pv_entry_t next_pv, pv; vm_offset_t va; - vm_page_t m; + vm_page_t m, free; TAILQ_FOREACH(m, &vpq->pl, pageq) { if (m->hold_count || m->busy) @@ -1635,12 +1656,14 @@ va, tpte)); vm_page_dirty(m); } + free = NULL; + pmap_unuse_pt(pmap, va, ptepde, &free); pmap_invalidate_page(pmap, va); + pmap_free_zero_pages(free); TAILQ_REMOVE(&m->md.pv_list, pv, pv_list); if (TAILQ_EMPTY(&m->md.pv_list)) vm_page_flag_clear(m, PG_WRITEABLE); m->md.pv_list_count--; - pmap_unuse_pt(pmap, va, ptepde); free_pv_entry(pmap, pv); if (pmap != locked_pmap) PMAP_UNLOCK(pmap); @@ -1833,7 +1856,8 @@ * pmap_remove_pte: do the things to unmap a page in a process */ static int -pmap_remove_pte(pmap_t pmap, pt_entry_t *ptq, vm_offset_t va, pd_entry_t ptepde) +pmap_remove_pte(pmap_t pmap, pt_entry_t *ptq, vm_offset_t va, + pd_entry_t ptepde, vm_page_t *free) { pt_entry_t oldpte; vm_page_t m; @@ -1861,7 +1885,7 @@ vm_page_flag_set(m, PG_REFERENCED); pmap_remove_entry(pmap, m, va); } - return (pmap_unuse_pt(pmap, va, ptepde)); + return (pmap_unuse_pt(pmap, va, ptepde, free)); } /* @@ -1871,6 +1895,7 @@ pmap_remove_page(pmap_t pmap, vm_offset_t va, pd_entry_t *pde) { pt_entry_t *pte; + vm_page_t free = NULL; PMAP_LOCK_ASSERT(pmap, MA_OWNED); if ((*pde & PG_V) == 0) @@ -1878,8 +1903,9 @@ pte = pmap_pde_to_pte(pde, va); if ((*pte & PG_V) == 0) return; - pmap_remove_pte(pmap, pte, va, *pde); + pmap_remove_pte(pmap, pte, va, *pde, &free); pmap_invalidate_page(pmap, va); + pmap_free_zero_pages(free); } /* @@ -1896,6 +1922,7 @@ pdp_entry_t *pdpe; pd_entry_t ptpaddr, *pde; pt_entry_t *pte; + vm_page_t free = NULL; int anyvalid; /* @@ -1959,7 +1986,7 @@ if ((ptpaddr & PG_PS) != 0) { *pde = 0; pmap->pm_stats.resident_count -= NBPDR / PAGE_SIZE; >>> TRUNCATED FOR MAIL (1000 lines) <<<
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200705061133.l46BXGPn079978>