From owner-p4-projects@FreeBSD.ORG Sat Dec 28 17:37:08 2013 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 8066061F; Sat, 28 Dec 2013 17:37:08 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 2A20961D for ; Sat, 28 Dec 2013 17:37:08 +0000 (UTC) Received: from skunkworks.freebsd.org (skunkworks.freebsd.org [IPv6:2001:1900:2254:2068::682:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 120371D27 for ; Sat, 28 Dec 2013 17:37:08 +0000 (UTC) Received: from skunkworks.freebsd.org ([127.0.1.74]) by skunkworks.freebsd.org (8.14.7/8.14.7) with ESMTP id rBSHb8jl026366 for ; Sat, 28 Dec 2013 17:37:08 GMT (envelope-from jhb@freebsd.org) Received: (from perforce@localhost) by skunkworks.freebsd.org (8.14.7/8.14.7/Submit) id rBSHb7Zl026363 for perforce@freebsd.org; Sat, 28 Dec 2013 17:37:07 GMT (envelope-from jhb@freebsd.org) Date: Sat, 28 Dec 2013 17:37:07 GMT Message-Id: <201312281737.rBSHb7Zl026363@skunkworks.freebsd.org> X-Authentication-Warning: skunkworks.freebsd.org: perforce set sender to jhb@freebsd.org using -f From: John Baldwin Subject: PERFORCE change 1189570 for review To: Perforce Change Reviews Precedence: bulk X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.17 List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 28 Dec 2013 17:37:08 -0000 http://p4web.freebsd.org/@@1189570?ac=10 Change 1189570 by jhb@jhb_pippin on 2013/12/28 17:36:48 IFC @1189568 Affected files ... .. //depot/projects/pci/sys/amd64/amd64/machdep.c#12 integrate .. //depot/projects/pci/sys/amd64/amd64/mp_machdep.c#10 integrate .. //depot/projects/pci/sys/amd64/amd64/pmap.c#12 integrate .. //depot/projects/pci/sys/amd64/include/cpu.h#6 integrate .. //depot/projects/pci/sys/amd64/include/pmap.h#9 integrate .. //depot/projects/pci/sys/amd64/include/vmm.h#6 integrate .. //depot/projects/pci/sys/amd64/include/vmm_dev.h#5 integrate .. //depot/projects/pci/sys/amd64/vmm/amd/amdv.c#3 integrate .. //depot/projects/pci/sys/amd64/vmm/intel/ept.c#4 integrate .. //depot/projects/pci/sys/amd64/vmm/intel/vmcs.c#5 integrate .. //depot/projects/pci/sys/amd64/vmm/intel/vmcs.h#5 integrate .. //depot/projects/pci/sys/amd64/vmm/intel/vmx.c#7 integrate .. //depot/projects/pci/sys/amd64/vmm/intel/vmx.h#4 integrate .. //depot/projects/pci/sys/amd64/vmm/intel/vmx_genassym.c#4 integrate .. //depot/projects/pci/sys/amd64/vmm/io/ppt.c#5 integrate .. //depot/projects/pci/sys/amd64/vmm/io/ppt.h#3 integrate .. //depot/projects/pci/sys/amd64/vmm/io/vhpet.c#2 integrate .. //depot/projects/pci/sys/amd64/vmm/io/vioapic.c#2 integrate .. //depot/projects/pci/sys/amd64/vmm/io/vlapic.c#4 integrate .. //depot/projects/pci/sys/amd64/vmm/io/vlapic.h#3 integrate .. //depot/projects/pci/sys/amd64/vmm/io/vlapic_priv.h#1 branch .. //depot/projects/pci/sys/amd64/vmm/vmm.c#6 integrate .. //depot/projects/pci/sys/amd64/vmm/vmm_dev.c#6 integrate .. //depot/projects/pci/sys/amd64/vmm/vmm_lapic.c#3 integrate .. //depot/projects/pci/sys/amd64/vmm/vmm_lapic.h#3 integrate .. //depot/projects/pci/sys/amd64/vmm/vmm_msr.c#3 integrate .. //depot/projects/pci/sys/amd64/vmm/vmm_msr.h#2 integrate .. //depot/projects/pci/sys/arm/arm/bus_space-v6.c#2 integrate .. //depot/projects/pci/sys/arm/arm/cpufunc.c#8 integrate .. //depot/projects/pci/sys/arm/arm/elf_trampoline.c#6 integrate .. //depot/projects/pci/sys/arm/arm/identcpu.c#8 integrate .. //depot/projects/pci/sys/arm/arm/locore.S#6 integrate .. //depot/projects/pci/sys/arm/arm/pmap-v6.c#8 integrate .. //depot/projects/pci/sys/arm/arm/swtch.S#6 integrate .. //depot/projects/pci/sys/arm/at91/if_ate.c#5 integrate .. //depot/projects/pci/sys/arm/at91/uart_dev_at91usart.c#5 integrate .. //depot/projects/pci/sys/arm/broadcom/bcm2835/bcm2835_fbd.c#1 branch .. //depot/projects/pci/sys/arm/broadcom/bcm2835/files.bcm2835#5 integrate .. //depot/projects/pci/sys/arm/conf/RPI-B#6 integrate .. //depot/projects/pci/sys/arm/freescale/imx/files.imx51#3 integrate .. //depot/projects/pci/sys/arm/freescale/imx/files.imx53#3 integrate .. //depot/projects/pci/sys/arm/freescale/imx/files.imx6#2 integrate .. //depot/projects/pci/sys/arm/freescale/imx/imx51_ipuv3_fbd.c#1 branch .. //depot/projects/pci/sys/arm/include/armreg.h#8 integrate .. //depot/projects/pci/sys/arm/include/cpuconf.h#3 integrate .. //depot/projects/pci/sys/arm/include/cpufunc.h#4 integrate .. //depot/projects/pci/sys/arm/include/intr.h#4 integrate .. //depot/projects/pci/sys/arm/include/md_var.h#3 integrate .. //depot/projects/pci/sys/arm/mv/mv_pci.c#5 integrate .. //depot/projects/pci/sys/arm/ti/am335x/am335x_dmtimer.c#4 integrate .. //depot/projects/pci/sys/arm/ti/files.ti#4 integrate .. //depot/projects/pci/sys/arm/versatile/bus_space.c#2 integrate .. //depot/projects/pci/sys/arm/xilinx/zy7_bus_space.c#2 integrate .. //depot/projects/pci/sys/boot/fdt/dts/beri-netfpga.dts#1 branch .. //depot/projects/pci/sys/boot/ficl/Makefile#3 integrate .. //depot/projects/pci/sys/boot/i386/Makefile.inc#4 integrate .. //depot/projects/pci/sys/boot/i386/boot2/Makefile#9 integrate .. //depot/projects/pci/sys/boot/ia64/efi/version#5 integrate .. //depot/projects/pci/sys/boot/pc98/Makefile.inc#3 integrate .. //depot/projects/pci/sys/boot/pc98/boot2/Makefile#4 integrate .. //depot/projects/pci/sys/boot/usb/Makefile#2 integrate .. //depot/projects/pci/sys/boot/usb/Makefile.test#2 integrate .. //depot/projects/pci/sys/boot/userboot/ficl/Makefile#3 integrate .. //depot/projects/pci/sys/boot/userboot/libstand/Makefile#5 integrate .. //depot/projects/pci/sys/boot/zfs/Makefile#3 integrate .. //depot/projects/pci/sys/cam/cam.h#7 integrate .. //depot/projects/pci/sys/cam/cam_ccb.h#11 integrate .. //depot/projects/pci/sys/cam/cam_compat.c#3 integrate .. //depot/projects/pci/sys/cam/cam_compat.h#3 integrate .. //depot/projects/pci/sys/cam/scsi/scsi_xpt.c#9 integrate .. //depot/projects/pci/sys/cddl/contrib/opensolaris/common/zfs/zfeature_common.c#5 integrate .. //depot/projects/pci/sys/cddl/contrib/opensolaris/common/zfs/zfeature_common.h#5 integrate .. //depot/projects/pci/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/bpobj.c#5 integrate .. //depot/projects/pci/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c#9 integrate .. //depot/projects/pci/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_object.c#3 integrate .. //depot/projects/pci/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_traverse.c#4 integrate .. //depot/projects/pci/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_tx.c#8 integrate .. //depot/projects/pci/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode_sync.c#4 integrate .. //depot/projects/pci/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c#9 integrate .. //depot/projects/pci/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_destroy.c#4 integrate .. //depot/projects/pci/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dir.c#9 integrate .. //depot/projects/pci/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c#7 integrate .. //depot/projects/pci/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_scan.c#7 integrate .. //depot/projects/pci/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c#7 integrate .. //depot/projects/pci/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c#9 integrate .. //depot/projects/pci/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/space_map.c#6 integrate .. //depot/projects/pci/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_impl.h#4 integrate .. //depot/projects/pci/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dnode.h#5 integrate .. //depot/projects/pci/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_dataset.h#6 integrate .. //depot/projects/pci/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zap.h#4 integrate .. //depot/projects/pci/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfeature.h#4 integrate .. //depot/projects/pci/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c#7 integrate .. //depot/projects/pci/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zap_micro.c#5 integrate .. //depot/projects/pci/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfeature.c#4 integrate .. //depot/projects/pci/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c#10 integrate .. //depot/projects/pci/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c#8 integrate .. //depot/projects/pci/sys/cddl/contrib/opensolaris/uts/intel/dtrace/fasttrap_isa.c#6 integrate .. //depot/projects/pci/sys/cddl/contrib/opensolaris/uts/powerpc/dtrace/fasttrap_isa.c#3 integrate .. //depot/projects/pci/sys/cddl/dev/fbt/fbt_powerpc.c#4 integrate .. //depot/projects/pci/sys/conf/Makefile.arm#7 integrate .. //depot/projects/pci/sys/conf/files#18 integrate .. //depot/projects/pci/sys/conf/files.arm#9 integrate .. //depot/projects/pci/sys/conf/files.powerpc#12 integrate .. //depot/projects/pci/sys/conf/kern.mk#10 integrate .. //depot/projects/pci/sys/conf/options.arm#6 integrate .. //depot/projects/pci/sys/dev/advansys/adwcam.c#4 integrate .. //depot/projects/pci/sys/dev/ae/if_ae.c#8 integrate .. //depot/projects/pci/sys/dev/ahci/ahciem.c#3 integrate .. //depot/projects/pci/sys/dev/aic7xxx/aic79xx.c#5 integrate .. //depot/projects/pci/sys/dev/aic7xxx/aic7xxx.c#5 integrate .. //depot/projects/pci/sys/dev/an/if_an.c#6 integrate .. //depot/projects/pci/sys/dev/an/if_an_pccard.c#3 integrate .. //depot/projects/pci/sys/dev/arcmsr/arcmsr.c#10 integrate .. //depot/projects/pci/sys/dev/arcmsr/arcmsr.h#6 integrate .. //depot/projects/pci/sys/dev/bxe/bxe.c#4 integrate .. //depot/projects/pci/sys/dev/cxgb/common/cxgb_mc5.c#3 integrate .. //depot/projects/pci/sys/dev/cxgb/ulp/tom/cxgb_cpl_io.c#4 integrate .. //depot/projects/pci/sys/dev/cxgbe/common/common.h#10 integrate .. //depot/projects/pci/sys/dev/cxgbe/offload.h#8 integrate .. //depot/projects/pci/sys/dev/cxgbe/t4_main.c#13 integrate .. //depot/projects/pci/sys/dev/cxgbe/t4_sge.c#13 integrate .. //depot/projects/pci/sys/dev/cxgbe/tom/t4_cpl_io.c#5 integrate .. //depot/projects/pci/sys/dev/cxgbe/tom/t4_listen.c#5 integrate .. //depot/projects/pci/sys/dev/cxgbe/tom/t4_tom.h#5 integrate .. //depot/projects/pci/sys/dev/drm/mach64_dma.c#4 integrate .. //depot/projects/pci/sys/dev/drm2/drm_edid.c#4 integrate .. //depot/projects/pci/sys/dev/drm2/drm_fb_helper.c#4 integrate .. //depot/projects/pci/sys/dev/drm2/radeon/radeon_fence.c#2 integrate .. //depot/projects/pci/sys/dev/drm2/radeon/radeon_sa.c#2 integrate .. //depot/projects/pci/sys/dev/drm2/ttm/ttm_bo.c#4 integrate .. //depot/projects/pci/sys/dev/drm2/ttm/ttm_bo_vm.c#5 integrate .. //depot/projects/pci/sys/dev/drm2/ttm/ttm_lock.c#2 integrate .. //depot/projects/pci/sys/dev/e1000/if_lem.c#9 integrate .. //depot/projects/pci/sys/dev/fb/fbd.c#2 integrate .. //depot/projects/pci/sys/dev/fdt/fdt_common.h#6 integrate .. //depot/projects/pci/sys/dev/fdt/fdt_pci.c#5 integrate .. //depot/projects/pci/sys/dev/hwpmc/hwpmc_core.c#9 integrate .. //depot/projects/pci/sys/dev/hwpmc/hwpmc_core.h#3 integrate .. //depot/projects/pci/sys/dev/hwpmc/hwpmc_intel.c#5 integrate .. //depot/projects/pci/sys/dev/hwpmc/hwpmc_powerpc.c#5 integrate .. //depot/projects/pci/sys/dev/ie/if_ie.c#5 integrate .. //depot/projects/pci/sys/dev/iscsi/iscsi.c#3 integrate .. //depot/projects/pci/sys/dev/isp/isp.c#8 integrate .. //depot/projects/pci/sys/dev/isp/isp_freebsd.c#8 integrate .. //depot/projects/pci/sys/dev/iwn/if_iwn_chip_cfg.h#2 integrate .. //depot/projects/pci/sys/dev/ixgbe/ixgbe.c#11 integrate .. //depot/projects/pci/sys/dev/md/md.c#11 integrate .. //depot/projects/pci/sys/dev/mwl/if_mwl.c#7 integrate .. //depot/projects/pci/sys/dev/netmap/if_em_netmap.h#5 integrate .. //depot/projects/pci/sys/dev/netmap/if_igb_netmap.h#6 integrate .. //depot/projects/pci/sys/dev/netmap/if_lem_netmap.h#5 integrate .. //depot/projects/pci/sys/dev/netmap/if_re_netmap.h#5 integrate .. //depot/projects/pci/sys/dev/netmap/ixgbe_netmap.h#5 integrate .. //depot/projects/pci/sys/dev/netmap/netmap.c#5 integrate .. //depot/projects/pci/sys/dev/netmap/netmap_freebsd.c#1 branch .. //depot/projects/pci/sys/dev/netmap/netmap_generic.c#1 branch .. //depot/projects/pci/sys/dev/netmap/netmap_kern.h#5 integrate .. //depot/projects/pci/sys/dev/netmap/netmap_mbq.c#1 branch .. //depot/projects/pci/sys/dev/netmap/netmap_mbq.h#1 branch .. //depot/projects/pci/sys/dev/netmap/netmap_mem2.c#4 integrate .. //depot/projects/pci/sys/dev/netmap/netmap_mem2.h#2 integrate .. //depot/projects/pci/sys/dev/netmap/netmap_vale.c#1 branch .. //depot/projects/pci/sys/dev/nmdm/nmdm.c#4 integrate .. //depot/projects/pci/sys/dev/ofw/ofw_bus_subr.c#5 integrate .. //depot/projects/pci/sys/dev/ofw/ofw_bus_subr.h#4 integrate .. //depot/projects/pci/sys/dev/ofw/ofw_console.c#6 integrate .. //depot/projects/pci/sys/dev/ofw/ofw_fdt.c#5 integrate .. //depot/projects/pci/sys/dev/pci/vga_pci.c#6 integrate .. //depot/projects/pci/sys/dev/sym/sym_hipd.c#7 integrate .. //depot/projects/pci/sys/dev/syscons/scterm-teken.c#5 integrate .. //depot/projects/pci/sys/dev/uart/uart_bus_pci.c#9 integrate .. //depot/projects/pci/sys/dev/uart/uart_cpu.h#3 integrate .. //depot/projects/pci/sys/dev/uart/uart_tty.c#4 integrate .. //depot/projects/pci/sys/dev/usb/controller/at91dci.c#5 integrate .. //depot/projects/pci/sys/dev/usb/controller/atmegadci.c#5 integrate .. //depot/projects/pci/sys/dev/usb/controller/avr32dci.c#5 integrate .. //depot/projects/pci/sys/dev/usb/controller/dwc_otg.c#6 integrate .. //depot/projects/pci/sys/dev/usb/controller/ehci.c#8 integrate .. //depot/projects/pci/sys/dev/usb/controller/musb_otg.c#8 integrate .. //depot/projects/pci/sys/dev/usb/controller/ohci.c#5 integrate .. //depot/projects/pci/sys/dev/usb/controller/uhci.c#5 integrate .. //depot/projects/pci/sys/dev/usb/controller/uss820dci.c#5 integrate .. //depot/projects/pci/sys/dev/usb/controller/xhci.c#9 integrate .. //depot/projects/pci/sys/dev/usb/quirk/usb_quirk.c#7 integrate .. //depot/projects/pci/sys/dev/usb/template/usb_template.c#6 integrate .. //depot/projects/pci/sys/dev/usb/usb_bus.h#6 integrate .. //depot/projects/pci/sys/dev/usb/usb_device.c#7 integrate .. //depot/projects/pci/sys/dev/usb/usb_device.h#7 integrate .. //depot/projects/pci/sys/dev/usb/usb_hub.c#10 integrate .. //depot/projects/pci/sys/dev/usb/usb_transfer.c#7 integrate .. //depot/projects/pci/sys/dev/usb/usbdevs#15 integrate .. //depot/projects/pci/sys/dev/usb/usbdi.h#9 integrate .. //depot/projects/pci/sys/dev/usb/wlan/if_run.c#10 integrate .. //depot/projects/pci/sys/dev/usb/wlan/if_runreg.h#5 integrate .. //depot/projects/pci/sys/dev/usb/wlan/if_runvar.h#6 integrate .. //depot/projects/pci/sys/dev/vt/font/vt_font_default.c#2 integrate .. //depot/projects/pci/sys/dev/vt/hw/fb/vt_fb.c#2 integrate .. //depot/projects/pci/sys/dev/vt/vt.h#2 integrate .. //depot/projects/pci/sys/dev/vt/vt_consolectl.c#2 integrate .. //depot/projects/pci/sys/dev/vt/vt_core.c#2 integrate .. //depot/projects/pci/sys/dev/vt/vt_font.c#2 integrate .. //depot/projects/pci/sys/dev/vt/vt_sysmouse.c#2 integrate .. //depot/projects/pci/sys/fs/devfs/devfs_devs.c#5 integrate .. //depot/projects/pci/sys/fs/ext2fs/ext2_hash.c#3 integrate .. //depot/projects/pci/sys/fs/fifofs/fifo_vnops.c#5 integrate .. //depot/projects/pci/sys/fs/nfs/nfs_commonsubs.c#10 integrate .. //depot/projects/pci/sys/fs/nfs/nfs_var.h#10 integrate .. //depot/projects/pci/sys/fs/nfsclient/nfs_clstate.c#8 integrate .. //depot/projects/pci/sys/fs/nfsserver/nfs_fha_new.c#2 integrate .. //depot/projects/pci/sys/fs/nfsserver/nfs_nfsdcache.c#7 integrate .. //depot/projects/pci/sys/fs/nfsserver/nfs_nfsdport.c#11 integrate .. //depot/projects/pci/sys/fs/nfsserver/nfs_nfsdstate.c#8 integrate .. //depot/projects/pci/sys/geom/eli/g_eli.c#10 integrate .. //depot/projects/pci/sys/geom/eli/g_eli_crypto.c#3 integrate .. //depot/projects/pci/sys/geom/geom_dev.c#11 integrate .. //depot/projects/pci/sys/geom/mirror/g_mirror.c#9 integrate .. //depot/projects/pci/sys/geom/mirror/g_mirror.h#4 integrate .. //depot/projects/pci/sys/geom/mirror/g_mirror_ctl.c#4 integrate .. //depot/projects/pci/sys/geom/part/g_part.c#9 integrate .. //depot/projects/pci/sys/geom/part/g_part.h#4 integrate .. //depot/projects/pci/sys/geom/part/g_part_gpt.c#9 integrate .. //depot/projects/pci/sys/i386/i386/symbols.raw#4 delete .. //depot/projects/pci/sys/ia64/ia64/dump_machdep.c#6 integrate .. //depot/projects/pci/sys/ia64/ia64/pmap.c#13 integrate .. //depot/projects/pci/sys/kern/capabilities.conf#7 integrate .. //depot/projects/pci/sys/kern/init_sysent.c#9 integrate .. //depot/projects/pci/sys/kern/kern_clocksource.c#8 integrate .. //depot/projects/pci/sys/kern/kern_event.c#9 integrate .. //depot/projects/pci/sys/kern/kern_exit.c#11 integrate .. //depot/projects/pci/sys/kern/kern_fork.c#10 integrate .. //depot/projects/pci/sys/kern/kern_jail.c#13 integrate .. //depot/projects/pci/sys/kern/kern_linker.c#9 integrate .. //depot/projects/pci/sys/kern/kern_resource.c#9 integrate .. //depot/projects/pci/sys/kern/kern_rwlock.c#7 integrate .. //depot/projects/pci/sys/kern/makesyscalls.sh#8 integrate .. //depot/projects/pci/sys/kern/sched_ule.c#12 integrate .. //depot/projects/pci/sys/kern/subr_terminal.c#2 integrate .. //depot/projects/pci/sys/kern/subr_trap.c#7 integrate .. //depot/projects/pci/sys/kern/subr_vmem.c#3 integrate .. //depot/projects/pci/sys/kern/subr_witness.c#8 integrate .. //depot/projects/pci/sys/kern/tty.c#7 integrate .. //depot/projects/pci/sys/kern/uipc_syscalls.c#12 integrate .. //depot/projects/pci/sys/kern/vfs_bio.c#13 integrate .. //depot/projects/pci/sys/kern/vfs_cache.c#8 integrate .. //depot/projects/pci/sys/kern/vfs_mountroot.c#8 integrate .. //depot/projects/pci/sys/kern/vfs_vnops.c#11 integrate .. //depot/projects/pci/sys/mips/beri/beri_machdep.c#4 integrate .. //depot/projects/pci/sys/mips/conf/BERI_NETFPGA_MDROOT#1 branch .. //depot/projects/pci/sys/modules/netmap/Makefile#2 integrate .. //depot/projects/pci/sys/net/netmap.h#5 integrate .. //depot/projects/pci/sys/net/netmap_user.h#4 integrate .. //depot/projects/pci/sys/net/radix.c#4 integrate .. //depot/projects/pci/sys/netgraph/ng_ksocket.c#6 integrate .. //depot/projects/pci/sys/netinet/in.h#8 integrate .. //depot/projects/pci/sys/netinet/in_mcast.c#7 integrate .. //depot/projects/pci/sys/netinet/ip_output.c#11 integrate .. //depot/projects/pci/sys/netinet/libalias/alias.c#4 integrate .. //depot/projects/pci/sys/netinet/libalias/alias_cuseeme.c#3 integrate .. //depot/projects/pci/sys/netinet/libalias/alias_db.c#7 integrate .. //depot/projects/pci/sys/netinet/libalias/alias_dummy.c#3 integrate .. //depot/projects/pci/sys/netinet/libalias/alias_irc.c#3 integrate .. //depot/projects/pci/sys/netinet/libalias/alias_mod.c#3 integrate .. //depot/projects/pci/sys/netinet/libalias/alias_mod.h#3 integrate .. //depot/projects/pci/sys/netinet/libalias/alias_nbt.c#3 integrate .. //depot/projects/pci/sys/netinet/libalias/alias_pptp.c#3 integrate .. //depot/projects/pci/sys/netinet/libalias/alias_skinny.c#3 integrate .. //depot/projects/pci/sys/netinet/libalias/alias_smedia.c#3 integrate .. //depot/projects/pci/sys/netinet/libalias/libalias.3#7 integrate .. //depot/projects/pci/sys/netinet/sctp_usrreq.c#11 integrate .. //depot/projects/pci/sys/netinet/sctputil.c#11 integrate .. //depot/projects/pci/sys/netinet/tcp_input.c#13 integrate .. //depot/projects/pci/sys/netinet6/in6_mcast.c#6 integrate .. //depot/projects/pci/sys/netinet6/send.c#7 integrate .. //depot/projects/pci/sys/netpfil/ipfw/ip_fw_dynamic.c#4 integrate .. //depot/projects/pci/sys/netpfil/pf/pf.c#5 integrate .. //depot/projects/pci/sys/netpfil/pf/pf.h#2 integrate .. //depot/projects/pci/sys/nfs/nfs_fha.c#2 integrate .. //depot/projects/pci/sys/nfs/nfs_fha.h#2 integrate .. //depot/projects/pci/sys/nfsserver/nfs_fha_old.c#2 integrate .. //depot/projects/pci/sys/ofed/drivers/net/mlx4/en_netdev.c#7 integrate .. //depot/projects/pci/sys/ofed/drivers/net/mlx4/mlx4_en.h#4 integrate .. //depot/projects/pci/sys/powerpc/aim/mp_cpudep.c#7 integrate .. //depot/projects/pci/sys/powerpc/aim/trap.c#9 integrate .. //depot/projects/pci/sys/powerpc/aim/trap_subr32.S#8 integrate .. //depot/projects/pci/sys/powerpc/aim/trap_subr64.S#9 integrate .. //depot/projects/pci/sys/powerpc/cpufreq/pmufreq.c#1 branch .. //depot/projects/pci/sys/powerpc/include/cpu.h#4 integrate .. //depot/projects/pci/sys/powerpc/include/dbdma.h#3 integrate .. //depot/projects/pci/sys/powerpc/include/openpicreg.h#3 integrate .. //depot/projects/pci/sys/powerpc/include/openpicvar.h#4 integrate .. //depot/projects/pci/sys/powerpc/include/pcpu.h#7 integrate .. //depot/projects/pci/sys/powerpc/include/pmc_mdep.h#5 integrate .. //depot/projects/pci/sys/powerpc/include/spr.h#7 integrate .. //depot/projects/pci/sys/powerpc/ofw/ofw_pci.c#4 integrate .. //depot/projects/pci/sys/powerpc/ofw/ofw_pcib_pci.c#5 integrate .. //depot/projects/pci/sys/powerpc/ofw/openpic_ofw.c#2 integrate .. //depot/projects/pci/sys/powerpc/powermac/ata_macio.c#5 integrate .. //depot/projects/pci/sys/powerpc/powermac/atibl.c#4 integrate .. //depot/projects/pci/sys/powerpc/powermac/cpcht.c#4 integrate .. //depot/projects/pci/sys/powerpc/powermac/dbdma.c#4 integrate .. //depot/projects/pci/sys/powerpc/powermac/dbdmavar.h#3 integrate .. //depot/projects/pci/sys/powerpc/powermac/platform_powermac.c#7 integrate .. //depot/projects/pci/sys/powerpc/powermac/pmu.c#4 integrate .. //depot/projects/pci/sys/powerpc/powermac/pmuvar.h#4 integrate .. //depot/projects/pci/sys/powerpc/powermac/uninorth.c#4 integrate .. //depot/projects/pci/sys/powerpc/powermac/uninorthvar.h#5 integrate .. //depot/projects/pci/sys/powerpc/powermac/viareg.h#3 integrate .. //depot/projects/pci/sys/powerpc/powerpc/mp_machdep.c#9 integrate .. //depot/projects/pci/sys/powerpc/powerpc/openpic.c#4 integrate .. //depot/projects/pci/sys/powerpc/pseries/phyp_vscsi.c#3 integrate .. //depot/projects/pci/sys/powerpc/psim/openpic_iobus.c#3 integrate .. //depot/projects/pci/sys/rpc/clnt_dg.c#8 integrate .. //depot/projects/pci/sys/rpc/clnt_vc.c#6 integrate .. //depot/projects/pci/sys/rpc/rpcb_clnt.c#5 integrate .. //depot/projects/pci/sys/rpc/svc.c#5 integrate .. //depot/projects/pci/sys/rpc/svc.h#4 integrate .. //depot/projects/pci/sys/rpc/svc_vc.c#5 integrate .. //depot/projects/pci/sys/security/mac/mac_framework.c#6 integrate .. //depot/projects/pci/sys/sparc64/ebus/ebus.c#5 integrate .. //depot/projects/pci/sys/sparc64/isa/ofw_isa.c#4 integrate .. //depot/projects/pci/sys/sparc64/pci/fire.c#7 integrate .. //depot/projects/pci/sys/sparc64/pci/ofw_pcib_subr.c#4 integrate .. //depot/projects/pci/sys/sparc64/pci/psycho.c#7 integrate .. //depot/projects/pci/sys/sparc64/pci/schizo.c#7 integrate .. //depot/projects/pci/sys/sys/consio.h#5 integrate .. //depot/projects/pci/sys/sys/dtrace_bsd.h#6 integrate .. //depot/projects/pci/sys/sys/fbio.h#4 integrate .. //depot/projects/pci/sys/sys/gpt.h#3 integrate .. //depot/projects/pci/sys/sys/param.h#16 integrate .. //depot/projects/pci/sys/sys/terminal.h#2 integrate .. //depot/projects/pci/sys/sys/tty.h#5 integrate .. //depot/projects/pci/sys/teken/demo/teken_demo.c#4 integrate .. //depot/projects/pci/sys/teken/teken.h#5 integrate .. //depot/projects/pci/sys/teken/teken_subr.h#6 integrate .. //depot/projects/pci/sys/vm/vm_map.c#12 integrate .. //depot/projects/pci/sys/vm/vm_pageout.c#10 integrate .. //depot/projects/pci/sys/vm/vm_reserv.c#6 integrate .. //depot/projects/pci/sys/x86/acpica/acpi_wakeup.c#3 integrate .. //depot/projects/pci/sys/x86/cpufreq/est.c#4 integrate .. //depot/projects/pci/sys/x86/include/mptable.h#9 integrate .. //depot/projects/pci/sys/x86/x86/mptable.c#13 integrate Differences ... ==== //depot/projects/pci/sys/amd64/amd64/machdep.c#12 (text+ko) ==== @@ -39,7 +39,7 @@ */ #include -__FBSDID("$FreeBSD: head/sys/amd64/amd64/machdep.c 259015 2013-12-05 21:58:02Z jhb $"); +__FBSDID("$FreeBSD: head/sys/amd64/amd64/machdep.c 259782 2013-12-23 19:48:22Z jhb $"); #include "opt_atalk.h" #include "opt_atpic.h" @@ -215,6 +215,8 @@ struct mtx dt_lock; /* lock for GDT and LDT */ +void (*vmm_resume_p)(void); + static void cpu_startup(dummy) void *dummy; ==== //depot/projects/pci/sys/amd64/amd64/mp_machdep.c#10 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: head/sys/amd64/amd64/mp_machdep.c 255744 2013-09-20 22:59:22Z gibbs $"); +__FBSDID("$FreeBSD: head/sys/amd64/amd64/mp_machdep.c 259782 2013-12-23 19:48:22Z jhb $"); #include "opt_cpu.h" #include "opt_ddb.h" @@ -1483,6 +1483,8 @@ if (cpu_ops.cpu_resume) cpu_ops.cpu_resume(); + if (vmm_resume_p) + vmm_resume_p(); /* Resume MCA and local APIC */ mca_resume(); ==== //depot/projects/pci/sys/amd64/amd64/pmap.c#12 (text+ko) ==== @@ -79,7 +79,7 @@ #define AMD64_NPT_AWARE #include -__FBSDID("$FreeBSD: head/sys/amd64/amd64/pmap.c 256645 2013-10-16 18:20:27Z neel $"); +__FBSDID("$FreeBSD: head/sys/amd64/amd64/pmap.c 259641 2013-12-20 05:50:22Z neel $"); /* * Manages physical address maps. @@ -1295,6 +1295,7 @@ static __inline void pmap_invalidate_ept(pmap_t pmap) { + int ipinum; sched_pin(); KASSERT(!CPU_ISSET(curcpu, &pmap->pm_active), @@ -1319,11 +1320,9 @@ /* * Force the vcpu to exit and trap back into the hypervisor. - * - * XXX this is not optimal because IPI_AST builds a trapframe - * whereas all we need is an 'eoi' followed by 'iret'. */ - ipi_selected(pmap->pm_active, IPI_AST); + ipinum = pmap->pm_flags & PMAP_NESTED_IPIMASK; + ipi_selected(pmap->pm_active, ipinum); sched_unpin(); } ==== //depot/projects/pci/sys/amd64/include/cpu.h#6 (text+ko) ==== @@ -30,7 +30,7 @@ * SUCH DAMAGE. * * from: @(#)cpu.h 5.4 (Berkeley) 5/9/91 - * $FreeBSD: head/sys/amd64/include/cpu.h 255744 2013-09-20 22:59:22Z gibbs $ + * $FreeBSD: head/sys/amd64/include/cpu.h 259782 2013-12-23 19:48:22Z jhb $ */ #ifndef _MACHINE_CPU_H_ @@ -70,6 +70,9 @@ extern char btext[]; extern char etext[]; +/* Resume hook for VMM. */ +extern void (*vmm_resume_p)(void); + void cpu_halt(void); void cpu_reset(void); void fork_trampoline(void); ==== //depot/projects/pci/sys/amd64/include/pmap.h#9 (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: head/sys/amd64/include/pmap.h 256072 2013-10-05 21:22:35Z neel $ + * $FreeBSD: head/sys/amd64/include/pmap.h 259641 2013-12-20 05:50:22Z neel $ */ #ifndef _MACHINE_PMAP_H_ @@ -312,9 +312,10 @@ }; /* flags */ -#define PMAP_PDE_SUPERPAGE (1 << 0) /* supports 2MB superpages */ -#define PMAP_EMULATE_AD_BITS (1 << 1) /* needs A/D bits emulation */ -#define PMAP_SUPPORTS_EXEC_ONLY (1 << 2) /* execute only mappings ok */ +#define PMAP_NESTED_IPIMASK 0xff +#define PMAP_PDE_SUPERPAGE (1 << 8) /* supports 2MB superpages */ +#define PMAP_EMULATE_AD_BITS (1 << 9) /* needs A/D bits emulation */ +#define PMAP_SUPPORTS_EXEC_ONLY (1 << 10) /* execute only mappings ok */ typedef struct pmap *pmap_t; ==== //depot/projects/pci/sys/amd64/include/vmm.h#6 (text+ko) ==== @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: head/sys/amd64/include/vmm.h 259081 2013-12-07 22:18:36Z neel $ + * $FreeBSD: head/sys/amd64/include/vmm.h 259863 2013-12-25 06:46:31Z neel $ */ #ifndef _VMM_H_ @@ -49,6 +49,7 @@ typedef int (*vmm_init_func_t)(void); typedef int (*vmm_cleanup_func_t)(void); +typedef void (*vmm_resume_func_t)(void); typedef void * (*vmi_init_func_t)(struct vm *vm, struct pmap *pmap); typedef int (*vmi_run_func_t)(void *vmi, int vcpu, register_t rip, struct pmap *pmap); @@ -68,10 +69,13 @@ typedef int (*vmi_set_cap_t)(void *vmi, int vcpu, int num, int val); typedef struct vmspace * (*vmi_vmspace_alloc)(vm_offset_t min, vm_offset_t max); typedef void (*vmi_vmspace_free)(struct vmspace *vmspace); +typedef struct vlapic * (*vmi_vlapic_init)(void *vmi, int vcpu); +typedef void (*vmi_vlapic_cleanup)(void *vmi, struct vlapic *vlapic); struct vmm_ops { vmm_init_func_t init; /* module wide initialization */ vmm_cleanup_func_t cleanup; + vmm_resume_func_t resume; vmi_init_func_t vminit; /* vm-specific initialization */ vmi_run_func_t vmrun; @@ -85,6 +89,8 @@ vmi_set_cap_t vmsetcap; vmi_vmspace_alloc vmspace_alloc; vmi_vmspace_free vmspace_free; + vmi_vlapic_init vlapic_init; + vmi_vlapic_cleanup vlapic_cleanup; }; extern struct vmm_ops vmm_ops_intel; @@ -146,7 +152,8 @@ VCPU_SLEEPING, }; -int vcpu_set_state(struct vm *vm, int vcpu, enum vcpu_state state); +int vcpu_set_state(struct vm *vm, int vcpu, enum vcpu_state state, + bool from_idle); enum vcpu_state vcpu_get_state(struct vm *vm, int vcpu, int *hostcpu); static int __inline @@ -156,7 +163,7 @@ } void *vcpu_stats(struct vm *vm, int vcpu); -void vcpu_notify_event(struct vm *vm, int vcpuid); +void vcpu_notify_event(struct vm *vm, int vcpuid, bool lapic_intr); struct vmspace *vm_get_vmspace(struct vm *vm); int vm_assign_pptdev(struct vm *vm, int bus, int slot, int func); int vm_unassign_pptdev(struct vm *vm, int bus, int slot, int func); ==== //depot/projects/pci/sys/amd64/include/vmm_dev.h#5 (text+ko) ==== @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: head/sys/amd64/include/vmm_dev.h 258579 2013-11-25 19:04:51Z neel $ + * $FreeBSD: head/sys/amd64/include/vmm_dev.h 259779 2013-12-23 19:29:07Z jhb $ */ #ifndef _VMM_DEV_H_ @@ -66,6 +66,11 @@ int error_code_valid; }; +struct vm_lapic_msi { + uint64_t msg; + uint64_t addr; +}; + struct vm_lapic_irq { int cpuid; int vector; @@ -103,8 +108,8 @@ int slot; int func; int numvec; /* 0 means disabled */ - int vector; - int destcpu; + uint64_t msg; + uint64_t addr; }; struct vm_pptdev_msix { @@ -113,7 +118,7 @@ int slot; int func; int idx; - uint32_t msg; + uint64_t msg; uint32_t vector_control; uint64_t addr; }; @@ -175,6 +180,8 @@ IOCNUM_IOAPIC_ASSERT_IRQ = 33, IOCNUM_IOAPIC_DEASSERT_IRQ = 34, IOCNUM_IOAPIC_PULSE_IRQ = 35, + IOCNUM_LAPIC_MSI = 36, + IOCNUM_LAPIC_LOCAL_IRQ = 37, /* PCI pass-thru */ IOCNUM_BIND_PPTDEV = 40, @@ -211,6 +218,10 @@ _IOW('v', IOCNUM_INJECT_EVENT, struct vm_event) #define VM_LAPIC_IRQ \ _IOW('v', IOCNUM_LAPIC_IRQ, struct vm_lapic_irq) +#define VM_LAPIC_LOCAL_IRQ \ + _IOW('v', IOCNUM_LAPIC_LOCAL_IRQ, struct vm_lapic_irq) +#define VM_LAPIC_MSI \ + _IOW('v', IOCNUM_LAPIC_MSI, struct vm_lapic_msi) #define VM_IOAPIC_ASSERT_IRQ \ _IOW('v', IOCNUM_IOAPIC_ASSERT_IRQ, struct vm_ioapic_irq) #define VM_IOAPIC_DEASSERT_IRQ \ ==== //depot/projects/pci/sys/amd64/vmm/amd/amdv.c#3 (text+ko) ==== @@ -23,11 +23,11 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: head/sys/amd64/vmm/amd/amdv.c 256072 2013-10-05 21:22:35Z neel $ + * $FreeBSD: head/sys/amd64/vmm/amd/amdv.c 259863 2013-12-25 06:46:31Z neel $ */ #include -__FBSDID("$FreeBSD: head/sys/amd64/vmm/amd/amdv.c 256072 2013-10-05 21:22:35Z neel $"); +__FBSDID("$FreeBSD: head/sys/amd64/vmm/amd/amdv.c 259863 2013-12-25 06:46:31Z neel $"); #include #include @@ -53,6 +53,11 @@ return (ENXIO); } +static void +amdv_resume(void) +{ +} + static void * amdv_vminit(struct vm *vm, struct pmap *pmap) { @@ -150,9 +155,24 @@ return; } +static struct vlapic * +amdv_vlapic_init(void *arg, int vcpuid) +{ + + panic("amdv_vlapic_init: not implmented"); +} + +static void +amdv_vlapic_cleanup(void *arg, struct vlapic *vlapic) +{ + + panic("amdv_vlapic_cleanup: not implemented"); +} + struct vmm_ops vmm_ops_amd = { amdv_init, amdv_cleanup, + amdv_resume, amdv_vminit, amdv_vmrun, amdv_vmcleanup, @@ -165,6 +185,8 @@ amdv_setcap, amdv_vmspace_alloc, amdv_vmspace_free, + amdv_vlapic_init, + amdv_vlapic_cleanup, }; static int ==== //depot/projects/pci/sys/amd64/vmm/intel/ept.c#4 (text+ko) ==== @@ -23,11 +23,11 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: head/sys/amd64/vmm/intel/ept.c 256072 2013-10-05 21:22:35Z neel $ + * $FreeBSD: head/sys/amd64/vmm/intel/ept.c 259641 2013-12-20 05:50:22Z neel $ */ #include -__FBSDID("$FreeBSD: head/sys/amd64/vmm/intel/ept.c 256072 2013-10-05 21:22:35Z neel $"); +__FBSDID("$FreeBSD: head/sys/amd64/vmm/intel/ept.c 259641 2013-12-20 05:50:22Z neel $"); #include #include @@ -43,6 +43,7 @@ #include #include "vmx_cpufunc.h" +#include "vmm_ipi.h" #include "vmx_msr.h" #include "ept.h" @@ -98,6 +99,8 @@ !INVEPT_ALL_TYPES_SUPPORTED(cap)) return (EINVAL); + ept_pmap_flags = vmm_ipinum & PMAP_NESTED_IPIMASK; + use_superpages = 1; TUNABLE_INT_FETCH("hw.vmm.ept.use_superpages", &use_superpages); if (use_superpages && EPT_PDE_SUPERPAGE(cap)) ==== //depot/projects/pci/sys/amd64/vmm/intel/vmcs.c#5 (text+ko) ==== @@ -23,13 +23,13 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: head/sys/amd64/vmm/intel/vmcs.c 257297 2013-10-29 02:25:18Z neel $ + * $FreeBSD: head/sys/amd64/vmm/intel/vmcs.c 259542 2013-12-18 06:24:21Z neel $ */ #include "opt_ddb.h" #include -__FBSDID("$FreeBSD: head/sys/amd64/vmm/intel/vmcs.c 257297 2013-10-29 02:25:18Z neel $"); +__FBSDID("$FreeBSD: head/sys/amd64/vmm/intel/vmcs.c 259542 2013-12-18 06:24:21Z neel $"); #include #include @@ -41,8 +41,8 @@ #include #include #include "vmm_host.h" +#include "vmx_cpufunc.h" #include "vmcs.h" -#include "vmx_cpufunc.h" #include "ept.h" #include "vmx.h" @@ -454,19 +454,6 @@ return (error); } -uint64_t -vmcs_read(uint32_t encoding) -{ - int error; - uint64_t val; - - error = vmread(encoding, &val); - if (error != 0) - panic("vmcs_read(%u) error %d", encoding, error); - - return (val); -} - #ifdef DDB extern int vmxon_enabled[]; ==== //depot/projects/pci/sys/amd64/vmm/intel/vmcs.h#5 (text+ko) ==== @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: head/sys/amd64/vmm/intel/vmcs.h 258780 2013-11-30 22:17:27Z eadler $ + * $FreeBSD: head/sys/amd64/vmm/intel/vmcs.h 259542 2013-12-18 06:24:21Z neel $ */ #ifndef _VMCS_H_ @@ -58,7 +58,26 @@ struct seg_desc *desc); int vmcs_setdesc(struct vmcs *vmcs, int ident, struct seg_desc *desc); -uint64_t vmcs_read(uint32_t encoding); + +static __inline uint64_t +vmcs_read(uint32_t encoding) +{ + int error; + uint64_t val; + + error = vmread(encoding, &val); + KASSERT(error == 0, ("vmcs_read(%u) error %d", encoding, error)); + return (val); +} + +static __inline void +vmcs_write(uint32_t encoding, uint64_t val) +{ + int error; + + error = vmwrite(encoding, val); + KASSERT(error == 0, ("vmcs_write(%u) error %d", encoding, error)); +} #define vmexit_instruction_length() vmcs_read(VMCS_EXIT_INSTRUCTION_LENGTH) #define vmcs_guest_rip() vmcs_read(VMCS_GUEST_RIP) ==== //depot/projects/pci/sys/amd64/vmm/intel/vmx.c#7 (text+ko) ==== @@ -23,11 +23,11 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: head/sys/amd64/vmm/intel/vmx.c 259085 2013-12-07 23:11:12Z neel $ + * $FreeBSD: head/sys/amd64/vmm/intel/vmx.c 259942 2013-12-27 12:15:53Z dim $ */ #include -__FBSDID("$FreeBSD: head/sys/amd64/vmm/intel/vmx.c 259085 2013-12-07 23:11:12Z neel $"); +__FBSDID("$FreeBSD: head/sys/amd64/vmm/intel/vmx.c 259942 2013-12-27 12:15:53Z dim $"); #include #include @@ -50,10 +50,11 @@ #include #include "vmm_host.h" -#include "vmm_lapic.h" #include "vmm_msr.h" #include "vmm_ktr.h" #include "vmm_stat.h" +#include "vlapic.h" +#include "vlapic_priv.h" #include "vmx_msr.h" #include "ept.h" @@ -112,7 +113,8 @@ #define HANDLED 1 #define UNHANDLED 0 -MALLOC_DEFINE(M_VMX, "vmx", "vmx"); +static MALLOC_DEFINE(M_VMX, "vmx", "vmx"); +static MALLOC_DEFINE(M_VLAPIC, "vlapic", "vlapic"); SYSCTL_DECL(_hw_vmm); SYSCTL_NODE(_hw_vmm, OID_AUTO, vmx, CTLFLAG_RW, NULL, NULL); @@ -324,9 +326,8 @@ VCPU_CTR2((vmx)->vm, (vcpu), "setjmp return code %s(%d)", vmx_setjmp_rc2str(rc), rc); - host_rsp = host_rip = ~0; - vmread(VMCS_HOST_RIP, &host_rip); - vmread(VMCS_HOST_RSP, &host_rsp); + host_rip = vmcs_read(VMCS_HOST_RIP); + host_rsp = vmcs_read(VMCS_HOST_RSP); VCPU_CTR2((vmx)->vm, (vcpu), "vmcs host_rip 0x%016lx, host_rsp %#lx", host_rip, host_rsp); @@ -525,6 +526,14 @@ vmxon_enabled[curcpu] = 1; } +static void +vmx_restore(void) +{ + + if (vmxon_enabled[curcpu]) + vmxon(vmxon_region[curcpu]); +} + static int vmx_init(void) { @@ -909,10 +918,10 @@ #endif } -static int +static void vmx_set_pcpu_defaults(struct vmx *vmx, int vcpu) { - int error, lastcpu; + int lastcpu; struct vmxstate *vmxstate; struct invvpid_desc invvpid_desc = { 0 }; @@ -920,24 +929,14 @@ lastcpu = vmxstate->lastcpu; vmxstate->lastcpu = curcpu; - if (lastcpu == curcpu) { - error = 0; - goto done; - } + if (lastcpu == curcpu) + return; vmm_stat_incr(vmx->vm, vcpu, VCPU_MIGRATIONS, 1); - error = vmwrite(VMCS_HOST_TR_BASE, vmm_get_host_trbase()); - if (error != 0) - goto done; - - error = vmwrite(VMCS_HOST_GDTR_BASE, vmm_get_host_gdtrbase()); - if (error != 0) - goto done; - - error = vmwrite(VMCS_HOST_GS_BASE, vmm_get_host_gsbase()); - if (error != 0) - goto done; + vmcs_write(VMCS_HOST_TR_BASE, vmm_get_host_trbase()); + vmcs_write(VMCS_HOST_GDTR_BASE, vmm_get_host_gdtrbase()); + vmcs_write(VMCS_HOST_GS_BASE, vmm_get_host_gsbase()); /* * If we are using VPIDs then invalidate all mappings tagged with 'vpid' @@ -958,20 +957,8 @@ invvpid_desc.vpid = vmxstate->vpid; invvpid(INVVPID_TYPE_SINGLE_CONTEXT, invvpid_desc); } -done: - return (error); } -static void -vm_exit_update_rip(struct vm_exit *vmexit) -{ - int error; - - error = vmwrite(VMCS_GUEST_RIP, vmexit->rip + vmexit->inst_length); - if (error) - panic("vmx_run: error %d writing to VMCS_GUEST_RIP", error); -} - /* * We depend on 'procbased_ctls' to have the Interrupt Window Exiting bit set. */ @@ -980,66 +967,45 @@ static void __inline vmx_set_int_window_exiting(struct vmx *vmx, int vcpu) { - int error; vmx->cap[vcpu].proc_ctls |= PROCBASED_INT_WINDOW_EXITING; - - error = vmwrite(VMCS_PRI_PROC_BASED_CTLS, vmx->cap[vcpu].proc_ctls); - if (error) - panic("vmx_set_int_window_exiting: vmwrite error %d", error); + vmcs_write(VMCS_PRI_PROC_BASED_CTLS, vmx->cap[vcpu].proc_ctls); } static void __inline vmx_clear_int_window_exiting(struct vmx *vmx, int vcpu) { - int error; vmx->cap[vcpu].proc_ctls &= ~PROCBASED_INT_WINDOW_EXITING; - - error = vmwrite(VMCS_PRI_PROC_BASED_CTLS, vmx->cap[vcpu].proc_ctls); - if (error) - panic("vmx_clear_int_window_exiting: vmwrite error %d", error); + vmcs_write(VMCS_PRI_PROC_BASED_CTLS, vmx->cap[vcpu].proc_ctls); } static void __inline vmx_set_nmi_window_exiting(struct vmx *vmx, int vcpu) { - int error; vmx->cap[vcpu].proc_ctls |= PROCBASED_NMI_WINDOW_EXITING; - - error = vmwrite(VMCS_PRI_PROC_BASED_CTLS, vmx->cap[vcpu].proc_ctls); - if (error) - panic("vmx_set_nmi_window_exiting: vmwrite error %d", error); + vmcs_write(VMCS_PRI_PROC_BASED_CTLS, vmx->cap[vcpu].proc_ctls); } static void __inline vmx_clear_nmi_window_exiting(struct vmx *vmx, int vcpu) { - int error; vmx->cap[vcpu].proc_ctls &= ~PROCBASED_NMI_WINDOW_EXITING; - - error = vmwrite(VMCS_PRI_PROC_BASED_CTLS, vmx->cap[vcpu].proc_ctls); - if (error) - panic("vmx_clear_nmi_window_exiting: vmwrite error %d", error); + vmcs_write(VMCS_PRI_PROC_BASED_CTLS, vmx->cap[vcpu].proc_ctls); } static int vmx_inject_nmi(struct vmx *vmx, int vcpu) { - int error; uint64_t info, interruptibility; /* Bail out if no NMI requested */ if (!vm_nmi_pending(vmx->vm, vcpu)) return (0); - error = vmread(VMCS_GUEST_INTERRUPTIBILITY, &interruptibility); - if (error) { - panic("vmx_inject_nmi: vmread(interruptibility) %d", - error); - } + interruptibility = vmcs_read(VMCS_GUEST_INTERRUPTIBILITY); if (interruptibility & nmi_blocking_bits) goto nmiblocked; @@ -1049,10 +1015,7 @@ */ info = VMCS_INTERRUPTION_INFO_NMI | VMCS_INTERRUPTION_INFO_VALID; info |= IDT_NMI; - - error = vmwrite(VMCS_ENTRY_INTR_INFO, info); - if (error) - panic("vmx_inject_nmi: vmwrite(intrinfo) %d", error); + vmcs_write(VMCS_ENTRY_INTR_INFO, info); VCPU_CTR0(vmx->vm, vcpu, "Injecting vNMI"); >>> TRUNCATED FOR MAIL (1000 lines) <<<