From owner-p4-projects@FreeBSD.ORG Fri Aug 15 16:24:38 2008 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 3C38F1065677; Fri, 15 Aug 2008 16:24:38 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id F1D29106567A for ; Fri, 15 Aug 2008 16:24:37 +0000 (UTC) (envelope-from julian@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 9FCB38FC1A for ; Fri, 15 Aug 2008 16:24:36 +0000 (UTC) (envelope-from julian@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.2/8.14.2) with ESMTP id m7FGOaUU010548 for ; Fri, 15 Aug 2008 16:24:36 GMT (envelope-from julian@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.2/8.14.1/Submit) id m7FGOZlT010546 for perforce@freebsd.org; Fri, 15 Aug 2008 16:24:35 GMT (envelope-from julian@freebsd.org) Date: Fri, 15 Aug 2008 16:24:35 GMT Message-Id: <200808151624.m7FGOZlT010546@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to julian@freebsd.org using -f From: Julian Elischer To: Perforce Change Reviews Cc: Subject: PERFORCE change 147467 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 15 Aug 2008 16:24:38 -0000 http://perforce.freebsd.org/chv.cgi?CH=147467 Change 147467 by julian@julian_trafmon1 on 2008/08/15 16:23:57 IFC@147453 Affected files ... .. //depot/projects/vimage-commit3/src/sys/Makefile#3 integrate .. //depot/projects/vimage-commit3/src/sys/amd64/amd64/cpu_switch.S#2 integrate .. //depot/projects/vimage-commit3/src/sys/amd64/amd64/genassym.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/amd64/amd64/pmap.c#4 integrate .. //depot/projects/vimage-commit3/src/sys/amd64/conf/GENERIC#4 integrate .. //depot/projects/vimage-commit3/src/sys/amd64/ia32/ia32_signal.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/amd64/include/param.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/amd64/include/pcb.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/amd64/include/pmap.h#4 integrate .. //depot/projects/vimage-commit3/src/sys/amd64/linux32/linux32_machdep.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/arm/arm/db_interface.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/arm/arm/swtch.S#2 integrate .. //depot/projects/vimage-commit3/src/sys/arm/at91/at91_pmc.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/arm/at91/uart_dev_at91usart.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/arm/conf/AVILA#2 integrate .. //depot/projects/vimage-commit3/src/sys/arm/include/db_machdep.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/boot/Makefile#2 integrate .. //depot/projects/vimage-commit3/src/sys/boot/forth/loader.conf#3 integrate .. //depot/projects/vimage-commit3/src/sys/bsm/audit.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/bsm/audit_internal.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/bsm/audit_kevents.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/bsm/audit_record.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/cam/cam_xpt.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/cddl/compat/opensolaris/kern/opensolaris_vfs.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_zfetch.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/compat/linux/linux_ioctl.c#3 integrate .. //depot/projects/vimage-commit3/src/sys/compat/linux/linux_ioctl.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/compat/linux/linux_misc.c#4 integrate .. //depot/projects/vimage-commit3/src/sys/compat/ndis/kern_ndis.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/conf/NOTES#4 integrate .. //depot/projects/vimage-commit3/src/sys/conf/files#4 integrate .. //depot/projects/vimage-commit3/src/sys/conf/kern.mk#3 integrate .. //depot/projects/vimage-commit3/src/sys/conf/options#2 integrate .. //depot/projects/vimage-commit3/src/sys/contrib/ipfilter/netinet/ip_compat.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/contrib/ipfilter/netinet/ip_fil.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/contrib/ipfilter/netinet/ip_nat.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/contrib/ipfilter/netinet/ip_nat.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/contrib/ipfilter/netinet/ip_state.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/contrib/pf/net/pf_ioctl.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/crypto/via/padlock.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/ddb/db_run.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/acpica/acpi.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/agp/agp_i810.c#3 integrate .. //depot/projects/vimage-commit3/src/sys/dev/amr/amr.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/atkbdc/psm.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/bfe/if_bfe.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/bfe/if_bfereg.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/ciss/ciss.c#3 integrate .. //depot/projects/vimage-commit3/src/sys/dev/ciss/cissreg.h#3 integrate .. //depot/projects/vimage-commit3/src/sys/dev/cxgb/ulp/tom/cxgb_cpl_io.c#3 integrate .. //depot/projects/vimage-commit3/src/sys/dev/cxgb/ulp/tom/cxgb_cpl_socket.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/cxgb/ulp/tom/cxgb_ddp.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/cxgb/ulp/tom/cxgb_l2t.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/cxgb/ulp/tom/cxgb_listen.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/cxgb/ulp/tom/cxgb_tcp_offload.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/cxgb/ulp/tom/cxgb_tcp_offload.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/cxgb/ulp/tom/cxgb_tom.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/cxgb/ulp/tom/cxgb_tom_sysctl.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/e1000/LICENSE#1 branch .. //depot/projects/vimage-commit3/src/sys/dev/e1000/README#1 branch .. //depot/projects/vimage-commit3/src/sys/dev/e1000/e1000_80003es2lan.c#1 branch .. //depot/projects/vimage-commit3/src/sys/dev/e1000/e1000_80003es2lan.h#1 branch .. //depot/projects/vimage-commit3/src/sys/dev/e1000/e1000_82540.c#1 branch .. //depot/projects/vimage-commit3/src/sys/dev/e1000/e1000_82541.c#1 branch .. //depot/projects/vimage-commit3/src/sys/dev/e1000/e1000_82541.h#1 branch .. //depot/projects/vimage-commit3/src/sys/dev/e1000/e1000_82542.c#1 branch .. //depot/projects/vimage-commit3/src/sys/dev/e1000/e1000_82543.c#1 branch .. //depot/projects/vimage-commit3/src/sys/dev/e1000/e1000_82543.h#1 branch .. //depot/projects/vimage-commit3/src/sys/dev/e1000/e1000_82571.c#1 branch .. //depot/projects/vimage-commit3/src/sys/dev/e1000/e1000_82571.h#1 branch .. //depot/projects/vimage-commit3/src/sys/dev/e1000/e1000_82575.c#1 branch .. //depot/projects/vimage-commit3/src/sys/dev/e1000/e1000_82575.h#1 branch .. //depot/projects/vimage-commit3/src/sys/dev/e1000/e1000_api.c#1 branch .. //depot/projects/vimage-commit3/src/sys/dev/e1000/e1000_api.h#1 branch .. //depot/projects/vimage-commit3/src/sys/dev/e1000/e1000_defines.h#1 branch .. //depot/projects/vimage-commit3/src/sys/dev/e1000/e1000_hw.h#1 branch .. //depot/projects/vimage-commit3/src/sys/dev/e1000/e1000_ich8lan.c#1 branch .. //depot/projects/vimage-commit3/src/sys/dev/e1000/e1000_ich8lan.h#1 branch .. //depot/projects/vimage-commit3/src/sys/dev/e1000/e1000_mac.c#1 branch .. //depot/projects/vimage-commit3/src/sys/dev/e1000/e1000_mac.h#1 branch .. //depot/projects/vimage-commit3/src/sys/dev/e1000/e1000_manage.c#1 branch .. //depot/projects/vimage-commit3/src/sys/dev/e1000/e1000_manage.h#1 branch .. //depot/projects/vimage-commit3/src/sys/dev/e1000/e1000_nvm.c#1 branch .. //depot/projects/vimage-commit3/src/sys/dev/e1000/e1000_nvm.h#1 branch .. //depot/projects/vimage-commit3/src/sys/dev/e1000/e1000_osdep.c#1 branch .. //depot/projects/vimage-commit3/src/sys/dev/e1000/e1000_osdep.h#1 branch .. //depot/projects/vimage-commit3/src/sys/dev/e1000/e1000_phy.c#1 branch .. //depot/projects/vimage-commit3/src/sys/dev/e1000/e1000_phy.h#1 branch .. //depot/projects/vimage-commit3/src/sys/dev/e1000/e1000_regs.h#1 branch .. //depot/projects/vimage-commit3/src/sys/dev/e1000/if_em.c#1 branch .. //depot/projects/vimage-commit3/src/sys/dev/e1000/if_em.h#1 branch .. //depot/projects/vimage-commit3/src/sys/dev/e1000/if_igb.c#1 branch .. //depot/projects/vimage-commit3/src/sys/dev/e1000/if_igb.h#1 branch .. //depot/projects/vimage-commit3/src/sys/dev/em/LICENSE#2 delete .. //depot/projects/vimage-commit3/src/sys/dev/em/README#2 delete .. //depot/projects/vimage-commit3/src/sys/dev/em/e1000_80003es2lan.c#2 delete .. //depot/projects/vimage-commit3/src/sys/dev/em/e1000_80003es2lan.h#2 delete .. //depot/projects/vimage-commit3/src/sys/dev/em/e1000_82540.c#2 delete .. //depot/projects/vimage-commit3/src/sys/dev/em/e1000_82541.c#2 delete .. //depot/projects/vimage-commit3/src/sys/dev/em/e1000_82541.h#2 delete .. //depot/projects/vimage-commit3/src/sys/dev/em/e1000_82542.c#2 delete .. //depot/projects/vimage-commit3/src/sys/dev/em/e1000_82543.c#2 delete .. //depot/projects/vimage-commit3/src/sys/dev/em/e1000_82543.h#2 delete .. //depot/projects/vimage-commit3/src/sys/dev/em/e1000_82571.c#2 delete .. //depot/projects/vimage-commit3/src/sys/dev/em/e1000_82571.h#2 delete .. //depot/projects/vimage-commit3/src/sys/dev/em/e1000_api.c#2 delete .. //depot/projects/vimage-commit3/src/sys/dev/em/e1000_api.h#2 delete .. //depot/projects/vimage-commit3/src/sys/dev/em/e1000_defines.h#2 delete .. //depot/projects/vimage-commit3/src/sys/dev/em/e1000_hw.h#2 delete .. //depot/projects/vimage-commit3/src/sys/dev/em/e1000_ich8lan.c#2 delete .. //depot/projects/vimage-commit3/src/sys/dev/em/e1000_ich8lan.h#2 delete .. //depot/projects/vimage-commit3/src/sys/dev/em/e1000_mac.c#2 delete .. //depot/projects/vimage-commit3/src/sys/dev/em/e1000_mac.h#2 delete .. //depot/projects/vimage-commit3/src/sys/dev/em/e1000_manage.c#2 delete .. //depot/projects/vimage-commit3/src/sys/dev/em/e1000_manage.h#2 delete .. //depot/projects/vimage-commit3/src/sys/dev/em/e1000_nvm.c#2 delete .. //depot/projects/vimage-commit3/src/sys/dev/em/e1000_nvm.h#2 delete .. //depot/projects/vimage-commit3/src/sys/dev/em/e1000_osdep.c#2 delete .. //depot/projects/vimage-commit3/src/sys/dev/em/e1000_osdep.h#2 delete .. //depot/projects/vimage-commit3/src/sys/dev/em/e1000_phy.c#2 delete .. //depot/projects/vimage-commit3/src/sys/dev/em/e1000_phy.h#2 delete .. //depot/projects/vimage-commit3/src/sys/dev/em/e1000_regs.h#2 delete .. //depot/projects/vimage-commit3/src/sys/dev/em/if_em.c#2 delete .. //depot/projects/vimage-commit3/src/sys/dev/em/if_em.h#2 delete .. //depot/projects/vimage-commit3/src/sys/dev/esp/esp_sbus.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/esp/ncr53c9x.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/esp/ncr53c9xvar.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/hwpmc/hwpmc_mod.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/ie/if_ie.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/ie/if_ie_isa.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/ie/if_ievar.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/igb/e1000_82575.c#2 delete .. //depot/projects/vimage-commit3/src/sys/dev/igb/e1000_82575.h#2 delete .. //depot/projects/vimage-commit3/src/sys/dev/igb/e1000_api.c#2 delete .. //depot/projects/vimage-commit3/src/sys/dev/igb/e1000_api.h#2 delete .. //depot/projects/vimage-commit3/src/sys/dev/igb/e1000_defines.h#2 delete .. //depot/projects/vimage-commit3/src/sys/dev/igb/e1000_hw.h#2 delete .. //depot/projects/vimage-commit3/src/sys/dev/igb/e1000_mac.c#2 delete .. //depot/projects/vimage-commit3/src/sys/dev/igb/e1000_mac.h#2 delete .. //depot/projects/vimage-commit3/src/sys/dev/igb/e1000_manage.c#2 delete .. //depot/projects/vimage-commit3/src/sys/dev/igb/e1000_manage.h#2 delete .. //depot/projects/vimage-commit3/src/sys/dev/igb/e1000_nvm.c#2 delete .. //depot/projects/vimage-commit3/src/sys/dev/igb/e1000_nvm.h#2 delete .. //depot/projects/vimage-commit3/src/sys/dev/igb/e1000_osdep.c#2 delete .. //depot/projects/vimage-commit3/src/sys/dev/igb/e1000_osdep.h#2 delete .. //depot/projects/vimage-commit3/src/sys/dev/igb/e1000_phy.c#2 delete .. //depot/projects/vimage-commit3/src/sys/dev/igb/e1000_phy.h#2 delete .. //depot/projects/vimage-commit3/src/sys/dev/igb/e1000_regs.h#2 delete .. //depot/projects/vimage-commit3/src/sys/dev/igb/if_igb.c#2 delete .. //depot/projects/vimage-commit3/src/sys/dev/igb/if_igb.h#2 delete .. //depot/projects/vimage-commit3/src/sys/dev/iicbus/ds1339.c#1 branch .. //depot/projects/vimage-commit3/src/sys/dev/ixgbe/ixgbe.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/ixgbe/ixgbe.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/ixgbe/ixgbe_82598.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/ixgbe/ixgbe_api.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/ixgbe/ixgbe_api.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/ixgbe/ixgbe_common.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/ixgbe/ixgbe_common.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/ixgbe/ixgbe_phy.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/ixgbe/ixgbe_phy.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/ixgbe/ixgbe_type.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/jme/if_jme.c#3 integrate .. //depot/projects/vimage-commit3/src/sys/dev/kbd/kbd.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/kbdmux/kbdmux.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/lmc/if_lmc.c#4 integrate .. //depot/projects/vimage-commit3/src/sys/dev/mpt/mpt_raid.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/nvram/nvram.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/pccard/pccarddevs#3 integrate .. //depot/projects/vimage-commit3/src/sys/dev/pci/pci.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/pci/pci_pci.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/pci/pcivar.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/usb/ehci_pci.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/usb/ehcireg.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/usb/if_rum.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/usb/if_ural.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/usb/ugen.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/usb/uhid.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/usb/uipaq.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/usb/usbdevs#3 integrate .. //depot/projects/vimage-commit3/src/sys/dev/wi/if_wi.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/wi/if_wi_pccard.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/wi/if_wi_pci.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/wi/if_wireg.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/dev/wi/if_wivar.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/geom/eli/g_eli.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/geom/part/g_part_apm.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/geom/vinum/geom_vinum_rename.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/gnu/fs/xfs/FreeBSD/xfs_mountops.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/gnu/fs/xfs/FreeBSD/xfs_vnode.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/i386/conf/GENERIC#4 integrate .. //depot/projects/vimage-commit3/src/sys/i386/conf/NOTES#4 integrate .. //depot/projects/vimage-commit3/src/sys/i386/i386/mp_machdep.c#3 integrate .. //depot/projects/vimage-commit3/src/sys/i386/i386/pmap.c#3 integrate .. //depot/projects/vimage-commit3/src/sys/i386/include/profile.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/kern/kern_environment.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/kern/kern_exec.c#3 integrate .. //depot/projects/vimage-commit3/src/sys/kern/kern_fork.c#3 integrate .. //depot/projects/vimage-commit3/src/sys/kern/kern_lock.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/kern/kern_proc.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/kern/kern_timeout.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/kern/sched_4bsd.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/kern/sched_ule.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/kern/subr_autoconf.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/kern/subr_clist.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/kern/subr_lock.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/kern/subr_sleepqueue.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/kern/subr_witness.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/kern/tty.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/kern/tty_info.c#1 branch .. //depot/projects/vimage-commit3/src/sys/kern/uipc_socket.c#4 integrate .. //depot/projects/vimage-commit3/src/sys/kern/uipc_usrreq.c#3 integrate .. //depot/projects/vimage-commit3/src/sys/kern/vfs_bio.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/kern/vfs_cache.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/kern/vfs_subr.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/libkern/arc4random.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/modules/Makefile#4 integrate .. //depot/projects/vimage-commit3/src/sys/modules/accf_dns/Makefile#1 branch .. //depot/projects/vimage-commit3/src/sys/modules/em/Makefile#2 integrate .. //depot/projects/vimage-commit3/src/sys/modules/et/Makefile#2 integrate .. //depot/projects/vimage-commit3/src/sys/modules/igb/Makefile#2 integrate .. //depot/projects/vimage-commit3/src/sys/modules/mem/Makefile#2 integrate .. //depot/projects/vimage-commit3/src/sys/modules/netgraph/bluetooth/socket/Makefile#2 integrate .. //depot/projects/vimage-commit3/src/sys/modules/nfslockd/Makefile#3 integrate .. //depot/projects/vimage-commit3/src/sys/net/bpf.c#3 integrate .. //depot/projects/vimage-commit3/src/sys/net/bpf_buffer.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/net/bpfdesc.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/net/if.h#4 integrate .. //depot/projects/vimage-commit3/src/sys/net/if_gre.c#4 integrate .. //depot/projects/vimage-commit3/src/sys/net/if_loop.c#4 integrate .. //depot/projects/vimage-commit3/src/sys/net/if_media.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/net/route.c#3 integrate .. //depot/projects/vimage-commit3/src/sys/net80211/ieee80211_dfs.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/net80211/ieee80211_freebsd.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/net80211/ieee80211_hostap.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/net80211/ieee80211_ht.c#3 integrate .. //depot/projects/vimage-commit3/src/sys/net80211/ieee80211_input.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/netgraph/bluetooth/drivers/ubt/ng_ubt.c#3 integrate .. //depot/projects/vimage-commit3/src/sys/netgraph/bluetooth/include/ng_btsocket_sco.h#1 branch .. //depot/projects/vimage-commit3/src/sys/netgraph/bluetooth/socket/ng_btsocket.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/netgraph/bluetooth/socket/ng_btsocket_hci_raw.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/netgraph/bluetooth/socket/ng_btsocket_l2cap.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/netgraph/bluetooth/socket/ng_btsocket_l2cap_raw.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/netgraph/bluetooth/socket/ng_btsocket_rfcomm.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/netgraph/bluetooth/socket/ng_btsocket_sco.c#1 branch .. //depot/projects/vimage-commit3/src/sys/netgraph/ng_l2tp.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/netinet/accf_dns.c#1 branch .. //depot/projects/vimage-commit3/src/sys/netinet/in_pcb.c#4 integrate .. //depot/projects/vimage-commit3/src/sys/netinet/in_pcb.h#3 integrate .. //depot/projects/vimage-commit3/src/sys/netinet/ip_divert.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/netinet/ip_fw2.c#3 integrate .. //depot/projects/vimage-commit3/src/sys/netinet/raw_ip.c#4 integrate .. //depot/projects/vimage-commit3/src/sys/netinet/sctp.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/netinet/sctp_asconf.c#3 integrate .. //depot/projects/vimage-commit3/src/sys/netinet/sctp_bsd_addr.c#3 integrate .. //depot/projects/vimage-commit3/src/sys/netinet/sctp_constants.h#3 integrate .. //depot/projects/vimage-commit3/src/sys/netinet/sctp_input.c#3 integrate .. //depot/projects/vimage-commit3/src/sys/netinet/sctp_output.c#3 integrate .. //depot/projects/vimage-commit3/src/sys/netinet/sctp_pcb.c#3 integrate .. //depot/projects/vimage-commit3/src/sys/netinet/sctp_pcb.h#3 integrate .. //depot/projects/vimage-commit3/src/sys/netinet/sctp_timer.c#3 integrate .. //depot/projects/vimage-commit3/src/sys/netinet/sctp_usrreq.c#3 integrate .. //depot/projects/vimage-commit3/src/sys/netinet/sctp_var.h#3 integrate .. //depot/projects/vimage-commit3/src/sys/netinet/sctputil.c#3 integrate .. //depot/projects/vimage-commit3/src/sys/netinet/tcp_input.c#3 integrate .. //depot/projects/vimage-commit3/src/sys/netinet/tcp_offload.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/netinet/tcp_offload.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/netinet/tcp_output.c#4 integrate .. //depot/projects/vimage-commit3/src/sys/netinet/tcp_syncache.c#3 integrate .. //depot/projects/vimage-commit3/src/sys/netinet/tcp_syncache.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/netinet/tcp_timer.c#3 integrate .. //depot/projects/vimage-commit3/src/sys/netinet/tcp_usrreq.c#3 integrate .. //depot/projects/vimage-commit3/src/sys/netinet/tcp_var.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/netinet/toedev.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/netinet/udp_usrreq.c#6 integrate .. //depot/projects/vimage-commit3/src/sys/netinet6/icmp6.c#4 integrate .. //depot/projects/vimage-commit3/src/sys/netinet6/ip6_output.c#3 integrate .. //depot/projects/vimage-commit3/src/sys/netinet6/raw_ip6.c#4 integrate .. //depot/projects/vimage-commit3/src/sys/netipsec/ipsec.c#3 integrate .. //depot/projects/vimage-commit3/src/sys/netipsec/ipsec6.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/netipx/ipx_input.c#3 integrate .. //depot/projects/vimage-commit3/src/sys/netipx/ipx_usrreq.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/nfs4client/nfs4_socket.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/nfs4client/nfs4_vfsops.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/nfsclient/nfs_socket.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/nfsclient/nfs_vfsops.c#5 integrate .. //depot/projects/vimage-commit3/src/sys/pci/if_sis.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/rpc/auth_unix.c#3 integrate .. //depot/projects/vimage-commit3/src/sys/rpc/rpcclnt.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/security/audit/audit.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/security/audit/audit.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/security/audit/audit_arg.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/security/audit/audit_bsm.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/security/audit/audit_bsm_klib.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/security/audit/audit_bsm_token.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/security/audit/audit_pipe.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/security/audit/audit_private.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/security/audit/audit_syscalls.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/security/audit/audit_trigger.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/security/audit/audit_worker.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/security/mac_biba/mac_biba.c#3 integrate .. //depot/projects/vimage-commit3/src/sys/security/mac_bsdextended/mac_bsdextended.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/security/mac_lomac/mac_lomac.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/security/mac_mls/mac_mls.c#3 integrate .. //depot/projects/vimage-commit3/src/sys/security/mac_partition/mac_partition.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/sparc64/sparc64/autoconf.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/sparc64/sparc64/mem.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/sys/callout.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/sys/elf_common.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/sys/kernel.h#3 integrate .. //depot/projects/vimage-commit3/src/sys/sys/param.h#3 integrate .. //depot/projects/vimage-commit3/src/sys/sys/proc.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/sys/procfs.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/sys/refcount.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/sys/sockbuf.h#1 branch .. //depot/projects/vimage-commit3/src/sys/sys/socket.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/sys/socketvar.h#3 integrate .. //depot/projects/vimage-commit3/src/sys/sys/sockio.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/sys/sockopt.h#1 branch .. //depot/projects/vimage-commit3/src/sys/sys/sockstate.h#1 branch .. //depot/projects/vimage-commit3/src/sys/sys/sysctl.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/sys/vimage.h#4 integrate .. //depot/projects/vimage-commit3/src/sys/sys/vmmeter.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/sys/vnode.h#2 integrate .. //depot/projects/vimage-commit3/src/sys/ufs/ffs/ffs_balloc.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/ufs/ffs/ffs_vfsops.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/ufs/ufs/ufs_lookup.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/vm/swap_pager.c#3 integrate .. //depot/projects/vimage-commit3/src/sys/vm/vm_kern.c#3 integrate .. //depot/projects/vimage-commit3/src/sys/vm/vm_object.c#2 integrate .. //depot/projects/vimage-commit3/src/sys/vm/vnode_pager.c#2 integrate Differences ... ==== //depot/projects/vimage-commit3/src/sys/Makefile#3 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/Makefile,v 1.50 2008/07/10 16:03:24 obrien Exp $ +# $FreeBSD: src/sys/Makefile,v 1.51 2008/07/20 09:16:00 maxim Exp $ .include @@ -8,13 +8,13 @@ .endif # Directories to include in cscope name file and TAGS. -CSCOPEDIRS= boot bsm cam compat conf contrib crypto ddb dev fs gdb geom \ - gnu isa kern libkern modules net net80211 netatalk \ +CSCOPEDIRS= boot bsm cam cddl compat conf contrib crypto ddb dev fs gdb \ + geom gnu isa kern libkern modules net net80211 netatalk \ netgraph netinet netinet6 netipsec netipx netnatm netncp \ - netsmb nfs nfs4client nfsclient nfsserver opencrypto pccard \ - pci rpc security sys ufs vm ${CSCOPE_ARCHDIR} + netsmb nfs nfs4client nfsclient nfsserver nlm opencrypto \ + pccard pci rpc security sys ufs vm xdr ${CSCOPE_ARCHDIR} .if defined(ALL_ARCH) -CSCOPE_ARCHDIR ?= amd64 arm i386 ia64 mips powerpc sparc64 +CSCOPE_ARCHDIR ?= amd64 arm i386 ia64 mips pc98 powerpc sparc64 sun4v .else CSCOPE_ARCHDIR ?= ${MACHINE} .endif ==== //depot/projects/vimage-commit3/src/sys/amd64/amd64/cpu_switch.S#2 (text+ko) ==== @@ -30,7 +30,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/amd64/amd64/cpu_switch.S,v 1.161 2008/03/23 23:09:06 peter Exp $ + * $FreeBSD: src/sys/amd64/amd64/cpu_switch.S,v 1.162 2008/07/30 11:30:55 kib Exp $ */ #include @@ -113,8 +113,8 @@ movq PCB_GSBASE(%r8),%r10 testl $PCB_32BIT,PCB_FLAGS(%r8) - jnz store_gs /* static predict not taken */ -done_store_gs: + jnz store_seg +done_store_seg: testl $PCB_DBREGS,PCB_FLAGS(%r8) jnz store_dr /* static predict not taken */ @@ -176,6 +176,10 @@ testl $TDP_KTHREAD,TD_PFLAGS(%rsi) jnz do_kthread + testl $PCB_32BIT,PCB_FLAGS(%r8) + jnz load_seg +done_load_seg: + cmpq PCB_FSBASE(%r8),%r9 jz 1f /* Restore userland %fs */ @@ -184,7 +188,6 @@ movl PCB_FSBASE+4(%r8),%edx wrmsr 1: - cmpq PCB_GSBASE(%r8),%r10 jz 2f /* Restore userland %gs */ @@ -193,8 +196,8 @@ movl PCB_GSBASE+4(%r8),%edx wrmsr 2: + do_tss: - /* Update the TSS_RSP0 pointer for the next interrupt */ movq PCPU(TSSP), %rax movq %r8, PCPU(RSP0) @@ -208,10 +211,6 @@ jnz load_dr /* static predict not taken */ done_load_dr: - testl $PCB_32BIT,PCB_FLAGS(%r8) - jnz load_gs /* static predict not taken */ -done_load_gs: - /* Restore context. */ movq PCB_R15(%r8),%r15 movq PCB_R14(%r8),%r14 @@ -243,23 +242,35 @@ movq %r10,PCB_GSBASE(%r8) jmp do_tss -store_gs: +store_seg: movl %gs,PCB_GS(%r8) - movq PCB_GS32P(%r8),%rax + testl $PCB_GS32BIT,PCB_FLAGS(%r8) + jnz 2f +1: movl %ds,PCB_DS(%r8) + movl %es,PCB_ES(%r8) + movl %fs,PCB_FS(%r8) + jmp done_store_seg +2: movq PCB_GS32P(%r8),%rax movq (%rax),%rax movq %rax,PCB_GS32SD(%r8) - jmp done_store_gs + jmp 1b -load_gs: +load_seg: + testl $PCB_GS32BIT,PCB_FLAGS(%r8) + jnz 2f +1: movl $MSR_GSBASE,%ecx + rdmsr + movl PCB_GS(%r8),%gs + wrmsr + movl PCB_DS(%r8),%ds + movl PCB_ES(%r8),%es + movl PCB_FS(%r8),%fs + jmp done_load_seg /* Restore userland %gs while preserving kernel gsbase */ - movq PCB_GS32P(%r8),%rax +2: movq PCB_GS32P(%r8),%rax movq PCB_GS32SD(%r8),%rcx movq %rcx,(%rax) - movl $MSR_GSBASE,%ecx - rdmsr - movl PCB_GS(%r8),%gs - wrmsr - jmp done_load_gs + jmp 1b store_dr: movq %dr7,%rax /* yes, do the save */ ==== //depot/projects/vimage-commit3/src/sys/amd64/amd64/genassym.c#2 (text+ko) ==== @@ -33,7 +33,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/genassym.c,v 1.168 2008/05/16 13:23:47 attilio Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/genassym.c,v 1.169 2008/07/30 11:30:55 kib Exp $"); #include "opt_compat.h" #include "opt_kstack_pages.h" @@ -140,6 +140,7 @@ ASSYM(PCB_DR7, offsetof(struct pcb, pcb_dr7)); ASSYM(PCB_DBREGS, PCB_DBREGS); ASSYM(PCB_32BIT, PCB_32BIT); +ASSYM(PCB_GS32BIT, PCB_GS32BIT); ASSYM(PCB_FULLCTX, PCB_FULLCTX); ASSYM(PCB_FLAGS, offsetof(struct pcb, pcb_flags)); ==== //depot/projects/vimage-commit3/src/sys/amd64/amd64/pmap.c#4 (text+ko) ==== @@ -77,7 +77,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.632 2008/07/13 18:19:53 alc Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.642 2008/08/02 03:43:54 alc Exp $"); /* * Manages physical address maps. @@ -222,6 +222,8 @@ static int pmap_pvh_wired_mappings(struct md_page *pvh, int count); static boolean_t pmap_demote_pde(pmap_t pmap, pd_entry_t *pde, vm_offset_t va); +static boolean_t pmap_demote_pdpe(pmap_t pmap, pdp_entry_t *pdpe, + vm_offset_t va); static boolean_t pmap_enter_pde(pmap_t pmap, vm_offset_t va, vm_page_t m, vm_prot_t prot); static vm_page_t pmap_enter_quick_locked(pmap_t pmap, vm_offset_t va, @@ -230,9 +232,11 @@ static void pmap_insert_pt_page(pmap_t pmap, vm_page_t mpte); static boolean_t pmap_is_modified_pvh(struct md_page *pvh); 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); static void pmap_promote_pde(pmap_t pmap, pd_entry_t *pde, vm_offset_t va); static boolean_t pmap_protect_pde(pmap_t pmap, pd_entry_t *pde, vm_offset_t sva, vm_prot_t prot); +static void pmap_pte_attr(pt_entry_t *pte, int cache_bits); static int pmap_remove_pde(pmap_t pmap, pd_entry_t *pdq, vm_offset_t sva, vm_page_t *free); static int pmap_remove_pte(pmap_t pmap, pt_entry_t *ptq, @@ -739,7 +743,14 @@ SYSCTL_ULONG(_vm_pmap_pde, OID_AUTO, promotions, CTLFLAG_RD, &pmap_pde_promotions, 0, "2MB page promotions"); +SYSCTL_NODE(_vm_pmap, OID_AUTO, pdpe, CTLFLAG_RD, 0, + "1GB page mapping counters"); +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..... ***************************************************/ @@ -986,13 +997,12 @@ if (pdep != NULL) { pde = *pdep; if (pde) { - if ((pde & PG_PS) != 0) { + if ((pde & PG_PS) != 0) rtval = (pde & PG_PS_FRAME) | (va & PDRMASK); - PMAP_UNLOCK(pmap); - return rtval; + else { + pte = pmap_pde_to_pte(pdep, va); + rtval = (*pte & PG_FRAME) | (va & PAGE_MASK); } - pte = pmap_pde_to_pte(pdep, va); - rtval = (*pte & PG_FRAME) | (va & PAGE_MASK); } } PMAP_UNLOCK(pmap); @@ -3351,9 +3361,8 @@ * are taken, but the code works. */ void -pmap_object_init_pt(pmap_t pmap, vm_offset_t addr, - vm_object_t object, vm_pindex_t pindex, - vm_size_t size) +pmap_object_init_pt(pmap_t pmap, vm_offset_t addr, vm_object_t object, + vm_pindex_t pindex, vm_size_t size) { vm_offset_t va; vm_page_t p, pdpg; @@ -3501,7 +3510,7 @@ void pmap_copy(pmap_t dst_pmap, pmap_t src_pmap, vm_offset_t dst_addr, vm_size_t len, - vm_offset_t src_addr) + vm_offset_t src_addr) { vm_page_t free; vm_offset_t addr; @@ -4252,41 +4261,35 @@ /* Adjust the cache mode for a 4KB page mapped via a PTE. */ static __inline void -pmap_pte_attr(vm_offset_t va, int mode) +pmap_pte_attr(pt_entry_t *pte, int cache_bits) { - pt_entry_t *pte; u_int opte, npte; - pte = vtopte(va); - /* * The cache mode bits are all in the low 32-bits of the * PTE, so we can just spin on updating the low 32-bits. */ do { opte = *(u_int *)pte; - npte = opte & ~(PG_PTE_PAT | PG_NC_PCD | PG_NC_PWT); - npte |= pmap_cache_bits(mode, 0); + npte = opte & ~PG_PTE_CACHE; + npte |= cache_bits; } while (npte != opte && !atomic_cmpset_int((u_int *)pte, opte, npte)); } /* Adjust the cache mode for a 2MB page mapped via a PDE. */ static __inline void -pmap_pde_attr(vm_offset_t va, int mode) +pmap_pde_attr(pd_entry_t *pde, int cache_bits) { - pd_entry_t *pde; u_int opde, npde; - pde = pmap_pde(kernel_pmap, va); - /* * The cache mode bits are all in the low 32-bits of the * PDE, so we can just spin on updating the low 32-bits. */ do { opde = *(u_int *)pde; - npde = opde & ~(PG_PDE_PAT | PG_NC_PCD | PG_NC_PWT); - npde |= pmap_cache_bits(mode, 1); + npde = opde & ~PG_PDE_CACHE; + npde |= cache_bits; } while (npde != opde && !atomic_cmpset_int((u_int *)pde, opde, npde)); } @@ -4302,11 +4305,14 @@ vm_offset_t va, tmpva, offset; /* - * If this fits within the direct map window and use WB caching - * mode, use the direct map. + * If the specified range of physical addresses fits within the direct + * map window, use the direct map. */ - if (pa < dmaplimit && (pa + size) < dmaplimit && mode == PAT_WRITE_BACK) - return ((void *)PHYS_TO_DMAP(pa)); + if (pa < dmaplimit && pa + size < dmaplimit) { + va = PHYS_TO_DMAP(pa); + if (!pmap_change_attr(va, size, mode)) + return ((void *)va); + } offset = pa & PAGE_MASK; size = roundup(offset + size, PAGE_SIZE); va = kmem_alloc_nofault(kernel_map, size); @@ -4355,70 +4361,213 @@ kmem_free(kernel_map, base, size); } +/* + * Tries to demote a 1GB page mapping. + */ +static boolean_t +pmap_demote_pdpe(pmap_t pmap, pdp_entry_t *pdpe, vm_offset_t va) +{ + pdp_entry_t newpdpe, oldpdpe; + pd_entry_t *firstpde, newpde, *pde; + vm_paddr_t mpdepa; + vm_page_t mpde; + + PMAP_LOCK_ASSERT(pmap, MA_OWNED); + oldpdpe = *pdpe; + KASSERT((oldpdpe & (PG_PS | PG_V)) == (PG_PS | PG_V), + ("pmap_demote_pdpe: oldpdpe is missing PG_PS and/or PG_V")); + if ((mpde = vm_page_alloc(NULL, va >> PDPSHIFT, VM_ALLOC_INTERRUPT | + VM_ALLOC_NOOBJ | VM_ALLOC_WIRED)) == NULL) { + CTR2(KTR_PMAP, "pmap_demote_pdpe: failure for va %#lx" + " in pmap %p", va, pmap); + return (FALSE); + } + mpdepa = VM_PAGE_TO_PHYS(mpde); + firstpde = (pd_entry_t *)PHYS_TO_DMAP(mpdepa); + newpdpe = mpdepa | PG_M | PG_A | (oldpdpe & PG_U) | PG_RW | PG_V; + KASSERT((oldpdpe & PG_A) != 0, + ("pmap_demote_pdpe: oldpdpe is missing PG_A")); + KASSERT((oldpdpe & (PG_M | PG_RW)) != PG_RW, + ("pmap_demote_pdpe: oldpdpe is missing PG_M")); + newpde = oldpdpe; + + /* + * Initialize the page directory page. + */ + for (pde = firstpde; pde < firstpde + NPDEPG; pde++) { + *pde = newpde; + newpde += NBPDR; + } + + /* + * Demote the mapping. + */ + *pdpe = newpdpe; + + /* + * Invalidate a stale recursive mapping of the page directory page. + */ + pmap_invalidate_page(pmap, (vm_offset_t)vtopde(va)); + + pmap_pdpe_demotions++; + CTR2(KTR_PMAP, "pmap_demote_pdpe: success for va %#lx" + " in pmap %p", va, pmap); + return (TRUE); +} + int -pmap_change_attr(va, size, mode) - vm_offset_t va; - vm_size_t size; - int mode; +pmap_change_attr(vm_offset_t va, vm_size_t size, int mode) { vm_offset_t base, offset, tmpva; + pdp_entry_t *pdpe; pd_entry_t *pde; pt_entry_t *pte; + int cache_bits_pte, cache_bits_pde; + boolean_t changed; base = trunc_page(va); offset = va & PAGE_MASK; size = roundup(offset + size, PAGE_SIZE); - /* Only supported on kernel virtual addresses. */ - if (base <= VM_MAXUSER_ADDRESS) + /* + * Only supported on kernel virtual addresses, including the direct + * map but excluding the recursive map. + */ + if (base < DMAP_MIN_ADDRESS) return (EINVAL); + cache_bits_pde = cache_bits_pte = -1; + changed = FALSE; + /* - * XXX: We have to support tearing 2MB pages down into 4k pages if - * needed here. + * Pages that aren't mapped aren't supported. Also break down 2MB pages + * into 4KB pages if required. */ - /* Pages that aren't mapped aren't supported. */ - for (tmpva = base; tmpva < (base + size); ) { - pde = pmap_pde(kernel_pmap, tmpva); - if (*pde == 0) + PMAP_LOCK(kernel_pmap); + for (tmpva = base; tmpva < base + size; ) { + pdpe = pmap_pdpe(kernel_pmap, tmpva); + if (*pdpe == 0) { + PMAP_UNLOCK(kernel_pmap); + return (EINVAL); + } + if (*pdpe & PG_PS) { + /* + * If the current 1GB page already has the required + * memory type, then we need not demote this page. Just + * increment tmpva to the next 1GB page frame. + */ + if (cache_bits_pde < 0) + cache_bits_pde = pmap_cache_bits(mode, 1); + if ((*pdpe & PG_PDE_CACHE) == cache_bits_pde) { + tmpva = trunc_1gpage(tmpva) + NBPDP; + continue; + } + + /* + * If the current offset aligns with a 1GB page frame + * and there is at least 1GB left within the range, then + * we need not break down this page into 2MB pages. + */ + if ((tmpva & PDPMASK) == 0 && + tmpva + PDPMASK < base + size) { + tmpva += NBPDP; + continue; + } + if (!pmap_demote_pdpe(kernel_pmap, pdpe, tmpva)) { + PMAP_UNLOCK(kernel_pmap); + return (ENOMEM); + } + } + pde = pmap_pdpe_to_pde(pdpe, tmpva); + if (*pde == 0) { + PMAP_UNLOCK(kernel_pmap); return (EINVAL); + } if (*pde & PG_PS) { - /* Handle 2MB pages that are completely contained. */ - if (size >= NBPDR) { + /* + * If the current 2MB page already has the required + * memory type, then we need not demote this page. Just + * increment tmpva to the next 2MB page frame. + */ + if (cache_bits_pde < 0) + cache_bits_pde = pmap_cache_bits(mode, 1); + if ((*pde & PG_PDE_CACHE) == cache_bits_pde) { + tmpva = trunc_2mpage(tmpva) + NBPDR; + continue; + } + + /* + * If the current offset aligns with a 2MB page frame + * and there is at least 2MB left within the range, then + * we need not break down this page into 4KB pages. + */ + if ((tmpva & PDRMASK) == 0 && + tmpva + PDRMASK < base + size) { tmpva += NBPDR; continue; } + if (!pmap_demote_pde(kernel_pmap, pde, tmpva)) { + PMAP_UNLOCK(kernel_pmap); + return (ENOMEM); + } + } + pte = vtopte(tmpva); + if (*pte == 0) { + PMAP_UNLOCK(kernel_pmap); return (EINVAL); } - pte = vtopte(va); - if (*pte == 0) - return (EINVAL); tmpva += PAGE_SIZE; } + PMAP_UNLOCK(kernel_pmap); /* * Ok, all the pages exist, so run through them updating their - * cache mode. + * cache mode if required. */ - for (tmpva = base; size > 0; ) { - pde = pmap_pde(kernel_pmap, tmpva); + for (tmpva = base; tmpva < base + size; ) { + pdpe = pmap_pdpe(kernel_pmap, tmpva); + if (*pdpe & PG_PS) { + if (cache_bits_pde < 0) + cache_bits_pde = pmap_cache_bits(mode, 1); + if ((*pdpe & PG_PDE_CACHE) != cache_bits_pde) { + pmap_pde_attr(pdpe, cache_bits_pde); + if (!changed) + changed = TRUE; + } + tmpva = trunc_1gpage(tmpva) + NBPDP; + continue; + } + pde = pmap_pdpe_to_pde(pdpe, tmpva); if (*pde & PG_PS) { - pmap_pde_attr(tmpva, mode); - tmpva += NBPDR; - size -= NBPDR; + if (cache_bits_pde < 0) + cache_bits_pde = pmap_cache_bits(mode, 1); + if ((*pde & PG_PDE_CACHE) != cache_bits_pde) { + pmap_pde_attr(pde, cache_bits_pde); + if (!changed) + changed = TRUE; + } + tmpva = trunc_2mpage(tmpva) + NBPDR; } else { - pmap_pte_attr(tmpva, mode); + if (cache_bits_pte < 0) + cache_bits_pte = pmap_cache_bits(mode, 0); + pte = vtopte(tmpva); + if ((*pte & PG_PTE_CACHE) != cache_bits_pte) { + pmap_pte_attr(pte, cache_bits_pte); + if (!changed) + changed = TRUE; + } tmpva += PAGE_SIZE; - size -= PAGE_SIZE; } } /* - * Flush CPU caches to make sure any data isn't cached that shouldn't - * be, etc. - */ - pmap_invalidate_range(kernel_pmap, base, tmpva); - pmap_invalidate_cache(); + * Flush CPU caches if required to make sure any data isn't cached that + * shouldn't be, etc. + */ + if (changed) { + pmap_invalidate_range(kernel_pmap, base, tmpva); + pmap_invalidate_cache(); + } return (0); } ==== //depot/projects/vimage-commit3/src/sys/amd64/conf/GENERIC#4 (text+ko) ==== @@ -16,7 +16,7 @@ # If you are in doubt as to the purpose or necessity of a line, check first # in NOTES. # -# $FreeBSD: src/sys/amd64/conf/GENERIC,v 1.504 2008/07/13 07:20:14 ed Exp $ +# $FreeBSD: src/sys/amd64/conf/GENERIC,v 1.505 2008/07/30 22:27:38 jfv Exp $ cpu HAMMER ident GENERIC @@ -189,7 +189,8 @@ # PCI Ethernet NICs. device de # DEC/Intel DC21x4x (``Tulip'') -device em # Intel PRO/1000 adapter Gigabit Ethernet Card +device em # Intel PRO/1000 Gigabit Ethernet Family +device igb # Intel PRO/1000 PCIE Server Gigabit Family device ixgb # Intel PRO/10GbE Ethernet Card device le # AMD Am7900 LANCE and Am79C9xx PCnet device ti # Alteon Networks Tigon I/II gigabit Ethernet ==== //depot/projects/vimage-commit3/src/sys/amd64/ia32/ia32_signal.c#2 (text+ko) ==== @@ -32,7 +32,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/ia32/ia32_signal.c,v 1.17 2008/03/23 22:44:56 peter Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/ia32/ia32_signal.c,v 1.18 2008/07/30 11:30:55 kib Exp $"); #include "opt_compat.h" @@ -741,6 +741,6 @@ fpstate_drop(td); /* Return via doreti so that we can change to a different %cs */ - pcb->pcb_flags |= PCB_FULLCTX; + pcb->pcb_flags |= PCB_FULLCTX | PCB_32BIT; td->td_retval[1] = 0; } ==== //depot/projects/vimage-commit3/src/sys/amd64/include/param.h#2 (text+ko) ==== @@ -36,7 +36,7 @@ * SUCH DAMAGE. * * @(#)param.h 8.1 (Berkeley) 6/10/93 - * $FreeBSD: src/sys/amd64/include/param.h,v 1.21 2008/03/27 05:03:24 jb Exp $ + * $FreeBSD: src/sys/amd64/include/param.h,v 1.23 2008/08/01 04:55:38 alc Exp $ */ /* @@ -136,7 +136,7 @@ * the kern.maxbcache /boot/loader.conf variable. */ #ifndef VM_BCACHE_SIZE_MAX -#define VM_BCACHE_SIZE_MAX (400 * 1024 * 1024) +#define VM_BCACHE_SIZE_MAX (1024 * 1024 * 1024) #endif /* @@ -146,6 +146,7 @@ #define trunc_page(x) ((unsigned long)(x) & ~(PAGE_MASK)) #define trunc_2mpage(x) ((unsigned long)(x) & ~PDRMASK) #define round_2mpage(x) ((((unsigned long)(x)) + PDRMASK) & ~PDRMASK) +#define trunc_1gpage(x) ((unsigned long)(x) & ~PDPMASK) #define atop(x) ((unsigned long)(x) >> PAGE_SHIFT) #define ptoa(x) ((unsigned long)(x) << PAGE_SHIFT) ==== //depot/projects/vimage-commit3/src/sys/amd64/include/pcb.h#2 (text+ko) ==== @@ -31,7 +31,7 @@ * SUCH DAMAGE. * * from: @(#)pcb.h 5.10 (Berkeley) 5/12/91 - * $FreeBSD: src/sys/amd64/include/pcb.h,v 1.64 2008/03/23 22:45:51 peter Exp $ + * $FreeBSD: src/sys/amd64/include/pcb.h,v 1.65 2008/07/30 11:30:55 kib Exp $ */ #ifndef _AMD64_PCB_H_ @@ -70,6 +70,7 @@ struct savefpu pcb_save; #define PCB_DBREGS 0x02 /* process using debug registers */ #define PCB_FPUINITDONE 0x08 /* fpu state is initialized */ +#define PCB_GS32BIT 0x20 /* linux gs switch */ #define PCB_32BIT 0x40 /* process has 32 bit context (segs etc) */ #define PCB_FULLCTX 0x80 /* full context restore on sysret */ ==== //depot/projects/vimage-commit3/src/sys/amd64/include/pmap.h#4 (text+ko) ==== @@ -39,7 +39,7 @@ * * from: hp300: @(#)pmap.h 7.2 (Berkeley) 12/16/90 * from: @(#)pmap.h 7.4 (Berkeley) 5/12/91 - * $FreeBSD: src/sys/amd64/include/pmap.h,v 1.146 2008/07/08 22:59:17 alc Exp $ + * $FreeBSD: src/sys/amd64/include/pmap.h,v 1.147 2008/07/31 22:45:28 alc Exp $ */ #ifndef _MACHINE_PMAP_H_ @@ -75,6 +75,10 @@ #define PG_PROT (PG_RW|PG_U) /* all protection bits . */ #define PG_N (PG_NC_PWT|PG_NC_PCD) /* Non-cacheable */ >>> TRUNCATED FOR MAIL (1000 lines) <<<