Date: Tue, 2 Apr 2013 14:27:45 +0000 (UTC) From: Andre Oppermann <andre@FreeBSD.org> To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r249024 - in user/andre/tcp-ao/sys: amd64/amd64 amd64/include amd64/vmm amd64/vmm/intel amd64/vmm/io arm/arm arm/at91 arm/broadcom/bcm2835 arm/conf arm/freescale arm/include arm/s3c2xx0... Message-ID: <201304021427.r32ERjhN020810@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: andre Date: Tue Apr 2 14:27:44 2013 New Revision: 249024 URL: http://svnweb.freebsd.org/changeset/base/249024 Log: Integrate from HEAD @r294922. Added: user/andre/tcp-ao/sys/arm/conf/EFIKA_MX - copied unchanged from r249021, head/sys/arm/conf/EFIKA_MX user/andre/tcp-ao/sys/arm/freescale/ - copied from r249021, head/sys/arm/freescale/ user/andre/tcp-ao/sys/arm/include/at91_gpio.h - copied unchanged from r249021, head/sys/arm/include/at91_gpio.h user/andre/tcp-ao/sys/boot/fdt/dts/efikamx.dts - copied unchanged from r249021, head/sys/boot/fdt/dts/efikamx.dts user/andre/tcp-ao/sys/boot/fdt/dts/imx51x.dtsi - copied unchanged from r249021, head/sys/boot/fdt/dts/imx51x.dtsi user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_destroy.c - copied unchanged from r249021, head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_destroy.c user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_userhold.c - copied unchanged from r249021, head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_userhold.c user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_send.h - copied unchanged from r249021, head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_send.h user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_destroy.h - copied unchanged from r249021, head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_destroy.h user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_userhold.h - copied unchanged from r249021, head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_userhold.h user/andre/tcp-ao/sys/cddl/dev/fbt/fbt_powerpc.c - copied unchanged from r249021, head/sys/cddl/dev/fbt/fbt_powerpc.c user/andre/tcp-ao/sys/dev/ata/chipsets/ata-fsl.c - copied unchanged from r249021, head/sys/dev/ata/chipsets/ata-fsl.c user/andre/tcp-ao/sys/dev/uart/uart_dev_imx.c - copied unchanged from r249021, head/sys/dev/uart/uart_dev_imx.c user/andre/tcp-ao/sys/dev/uart/uart_dev_imx5xx.h - copied unchanged from r249021, head/sys/dev/uart/uart_dev_imx5xx.h user/andre/tcp-ao/sys/dev/usb/controller/ehci_imx.c - copied unchanged from r249021, head/sys/dev/usb/controller/ehci_imx.c user/andre/tcp-ao/sys/libkern/arm/aeabi_unwind.c - copied unchanged from r249021, head/sys/libkern/arm/aeabi_unwind.c user/andre/tcp-ao/sys/libkern/arm/memset.S - copied unchanged from r249021, head/sys/libkern/arm/memset.S user/andre/tcp-ao/sys/mips/atheros/ar933x_chip.c - copied unchanged from r249021, head/sys/mips/atheros/ar933x_chip.c user/andre/tcp-ao/sys/mips/atheros/ar933x_chip.h - copied unchanged from r249021, head/sys/mips/atheros/ar933x_chip.h user/andre/tcp-ao/sys/mips/atheros/ar933x_uart.h - copied unchanged from r249021, head/sys/mips/atheros/ar933x_uart.h user/andre/tcp-ao/sys/mips/atheros/ar933xreg.h - copied unchanged from r249021, head/sys/mips/atheros/ar933xreg.h user/andre/tcp-ao/sys/mips/atheros/uart_bus_ar933x.c - copied unchanged from r249021, head/sys/mips/atheros/uart_bus_ar933x.c user/andre/tcp-ao/sys/mips/atheros/uart_cpu_ar933x.c - copied unchanged from r249021, head/sys/mips/atheros/uart_cpu_ar933x.c user/andre/tcp-ao/sys/mips/atheros/uart_dev_ar933x.c - copied unchanged from r249021, head/sys/mips/atheros/uart_dev_ar933x.c user/andre/tcp-ao/sys/mips/atheros/uart_dev_ar933x.h - copied unchanged from r249021, head/sys/mips/atheros/uart_dev_ar933x.h user/andre/tcp-ao/sys/mips/conf/AP121 - copied unchanged from r249021, head/sys/mips/conf/AP121 user/andre/tcp-ao/sys/mips/conf/AP121.hints - copied unchanged from r249021, head/sys/mips/conf/AP121.hints user/andre/tcp-ao/sys/mips/conf/AR933X_BASE - copied unchanged from r249021, head/sys/mips/conf/AR933X_BASE user/andre/tcp-ao/sys/mips/conf/AR933X_BASE.hints - copied unchanged from r249021, head/sys/mips/conf/AR933X_BASE.hints user/andre/tcp-ao/sys/modules/ctl/ - copied from r249021, head/sys/modules/ctl/ user/andre/tcp-ao/sys/modules/cxgbe/t4_firmware/ - copied from r249021, head/sys/modules/cxgbe/t4_firmware/ user/andre/tcp-ao/sys/vm/_vm_radix.h - copied unchanged from r249021, head/sys/vm/_vm_radix.h user/andre/tcp-ao/sys/vm/vm_radix.c - copied unchanged from r249021, head/sys/vm/vm_radix.c user/andre/tcp-ao/sys/vm/vm_radix.h - copied unchanged from r249021, head/sys/vm/vm_radix.h Deleted: user/andre/tcp-ao/sys/modules/cxgbe/firmware/ Modified: user/andre/tcp-ao/sys/amd64/amd64/pmap.c user/andre/tcp-ao/sys/amd64/include/pmap.h user/andre/tcp-ao/sys/amd64/include/vmm_instruction_emul.h (contents, props changed) user/andre/tcp-ao/sys/amd64/vmm/intel/vmx.c user/andre/tcp-ao/sys/amd64/vmm/io/vlapic.c user/andre/tcp-ao/sys/amd64/vmm/vmm.c user/andre/tcp-ao/sys/amd64/vmm/vmm_instruction_emul.c user/andre/tcp-ao/sys/amd64/vmm/vmm_stat.c user/andre/tcp-ao/sys/amd64/vmm/vmm_stat.h user/andre/tcp-ao/sys/arm/arm/bcopy_page.S user/andre/tcp-ao/sys/arm/arm/bcopyinout.S user/andre/tcp-ao/sys/arm/arm/bcopyinout_xscale.S user/andre/tcp-ao/sys/arm/arm/blockio.S user/andre/tcp-ao/sys/arm/arm/bus_space_asm_generic.S user/andre/tcp-ao/sys/arm/arm/busdma_machdep-v6.c user/andre/tcp-ao/sys/arm/arm/copystr.S user/andre/tcp-ao/sys/arm/arm/cpufunc_asm.S user/andre/tcp-ao/sys/arm/arm/cpufunc_asm_arm10.S user/andre/tcp-ao/sys/arm/arm/cpufunc_asm_arm11.S user/andre/tcp-ao/sys/arm/arm/cpufunc_asm_arm11x6.S user/andre/tcp-ao/sys/arm/arm/cpufunc_asm_arm7tdmi.S user/andre/tcp-ao/sys/arm/arm/cpufunc_asm_arm8.S user/andre/tcp-ao/sys/arm/arm/cpufunc_asm_arm9.S user/andre/tcp-ao/sys/arm/arm/cpufunc_asm_armv4.S user/andre/tcp-ao/sys/arm/arm/cpufunc_asm_armv5.S user/andre/tcp-ao/sys/arm/arm/cpufunc_asm_armv5_ec.S user/andre/tcp-ao/sys/arm/arm/cpufunc_asm_armv6.S user/andre/tcp-ao/sys/arm/arm/cpufunc_asm_armv7.S user/andre/tcp-ao/sys/arm/arm/cpufunc_asm_fa526.S user/andre/tcp-ao/sys/arm/arm/cpufunc_asm_ixp12x0.S user/andre/tcp-ao/sys/arm/arm/cpufunc_asm_pj4b.S user/andre/tcp-ao/sys/arm/arm/cpufunc_asm_sa1.S user/andre/tcp-ao/sys/arm/arm/cpufunc_asm_sa11x0.S user/andre/tcp-ao/sys/arm/arm/cpufunc_asm_sheeva.S user/andre/tcp-ao/sys/arm/arm/cpufunc_asm_xscale.S user/andre/tcp-ao/sys/arm/arm/cpufunc_asm_xscale_c3.S user/andre/tcp-ao/sys/arm/arm/db_trace.c user/andre/tcp-ao/sys/arm/arm/elf_trampoline.c user/andre/tcp-ao/sys/arm/arm/exception.S user/andre/tcp-ao/sys/arm/arm/fiq_subr.S user/andre/tcp-ao/sys/arm/arm/fusu.S user/andre/tcp-ao/sys/arm/arm/in_cksum_arm.S user/andre/tcp-ao/sys/arm/arm/irq_dispatch.S user/andre/tcp-ao/sys/arm/arm/locore.S user/andre/tcp-ao/sys/arm/arm/pmap-v6.c user/andre/tcp-ao/sys/arm/arm/pmap.c user/andre/tcp-ao/sys/arm/arm/setcpsr.S user/andre/tcp-ao/sys/arm/arm/support.S user/andre/tcp-ao/sys/arm/arm/swtch.S user/andre/tcp-ao/sys/arm/at91/at91_machdep.c user/andre/tcp-ao/sys/arm/at91/at91_mci.c user/andre/tcp-ao/sys/arm/at91/at91_pio.c user/andre/tcp-ao/sys/arm/at91/at91_piovar.h user/andre/tcp-ao/sys/arm/at91/at91_pmc.c user/andre/tcp-ao/sys/arm/at91/at91rm9200.c user/andre/tcp-ao/sys/arm/at91/at91rm9200_devices.c user/andre/tcp-ao/sys/arm/at91/uart_dev_at91usart.c user/andre/tcp-ao/sys/arm/broadcom/bcm2835/bcm2835_sdhci.c user/andre/tcp-ao/sys/arm/broadcom/bcm2835/bcm2835_systimer.c user/andre/tcp-ao/sys/arm/include/asm.h user/andre/tcp-ao/sys/arm/include/bus.h user/andre/tcp-ao/sys/arm/include/machdep.h user/andre/tcp-ao/sys/arm/include/pmap.h user/andre/tcp-ao/sys/arm/s3c2xx0/uart_dev_s3c2410.c user/andre/tcp-ao/sys/arm/sa11x0/uart_dev_sa1110.c user/andre/tcp-ao/sys/arm/ti/cpsw/if_cpsw.c user/andre/tcp-ao/sys/arm/ti/ti_mmchs.c user/andre/tcp-ao/sys/boot/arm/uboot/start.S user/andre/tcp-ao/sys/boot/fdt/fdt_loader_cmd.c user/andre/tcp-ao/sys/bsm/audit_kevents.h user/andre/tcp-ao/sys/cam/ata/ata_all.c user/andre/tcp-ao/sys/cam/ata/ata_da.c user/andre/tcp-ao/sys/cam/cam.c user/andre/tcp-ao/sys/cam/cam.h user/andre/tcp-ao/sys/cam/cam_ccb.h user/andre/tcp-ao/sys/cam/cam_periph.c user/andre/tcp-ao/sys/cam/cam_periph.h user/andre/tcp-ao/sys/cam/cam_sim.c user/andre/tcp-ao/sys/cam/ctl/README.ctl.txt user/andre/tcp-ao/sys/cam/ctl/ctl.c user/andre/tcp-ao/sys/cam/ctl/ctl_frontend_cam_sim.c user/andre/tcp-ao/sys/cam/ctl/ctl_frontend_internal.c user/andre/tcp-ao/sys/cam/ctl/scsi_ctl.c user/andre/tcp-ao/sys/cam/scsi/scsi_all.c user/andre/tcp-ao/sys/cam/scsi/scsi_all.h user/andre/tcp-ao/sys/cam/scsi/scsi_cd.c user/andre/tcp-ao/sys/cam/scsi/scsi_da.c user/andre/tcp-ao/sys/cddl/compat/opensolaris/sys/cred.h user/andre/tcp-ao/sys/cddl/compat/opensolaris/sys/sig.h user/andre/tcp-ao/sys/cddl/compat/opensolaris/sys/time.h user/andre/tcp-ao/sys/cddl/contrib/opensolaris/common/nvpair/fnvpair.c user/andre/tcp-ao/sys/cddl/contrib/opensolaris/common/zfs/zfs_comutil.c user/andre/tcp-ao/sys/cddl/contrib/opensolaris/common/zfs/zfs_comutil.h user/andre/tcp-ao/sys/cddl/contrib/opensolaris/common/zfs/zfs_ioctl_compat.c user/andre/tcp-ao/sys/cddl/contrib/opensolaris/common/zfs/zfs_ioctl_compat.h user/andre/tcp-ao/sys/cddl/contrib/opensolaris/common/zfs/zprop_common.c user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/Makefile.files user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/dtrace/fasttrap.c user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/bplist.c user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/bpobj.c user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_diff.c user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_objset.c user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_traverse.c user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_tx.c user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode_sync.c user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_deleg.c user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dir.c user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_prop.c user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_scan.c user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_synctask.c user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/metaslab.c user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/refcount.c user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/rrwlock.c user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sa.c user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_history.c user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/space_map.c user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/arc.h user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dbuf.h user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_objset.h user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_tx.h user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_dataset.h user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_deleg.h user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_dir.h user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_pool.h user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_prop.h user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_synctask.h user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/metaslab.h user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/refcount.h user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/rrwlock.h user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa.h user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/space_map.h user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/trim_map.h user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/txg.h user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfeature.h user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_debug.h user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_ioctl.h user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_znode.h user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zil.h user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/trim_map.c user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/txg.c user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ctldir.c user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zil.c user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/sys/dtrace.h user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/sys/dtrace_impl.h user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/sys/feature_tests.h user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/sys/fs/zfs.h user/andre/tcp-ao/sys/cddl/contrib/opensolaris/uts/common/sys/nvpair.h user/andre/tcp-ao/sys/cddl/dev/dtrace/powerpc/dtrace_asm.S user/andre/tcp-ao/sys/cddl/dev/dtrace/powerpc/dtrace_isa.c user/andre/tcp-ao/sys/cddl/dev/dtrace/powerpc/dtrace_subr.c user/andre/tcp-ao/sys/cddl/dev/fbt/fbt.c user/andre/tcp-ao/sys/compat/freebsd32/freebsd32_proto.h user/andre/tcp-ao/sys/compat/freebsd32/freebsd32_syscall.h user/andre/tcp-ao/sys/compat/freebsd32/freebsd32_syscalls.c user/andre/tcp-ao/sys/compat/freebsd32/freebsd32_sysent.c user/andre/tcp-ao/sys/compat/freebsd32/freebsd32_systrace_args.c user/andre/tcp-ao/sys/compat/freebsd32/syscalls.master user/andre/tcp-ao/sys/compat/linux/linux_file.c user/andre/tcp-ao/sys/compat/ndis/kern_ndis.c user/andre/tcp-ao/sys/conf/Makefile.arm user/andre/tcp-ao/sys/conf/NOTES user/andre/tcp-ao/sys/conf/files user/andre/tcp-ao/sys/conf/files.arm user/andre/tcp-ao/sys/dev/acpica/acpi_powerres.c user/andre/tcp-ao/sys/dev/ahci/ahci.c user/andre/tcp-ao/sys/dev/ath/ath_hal/ah_regdomain/ah_rd_domains.h user/andre/tcp-ao/sys/dev/ath/ath_hal/ah_regdomain/ah_rd_regmap.h user/andre/tcp-ao/sys/dev/ath/ath_hal/ar5416/ar5416_xmit.c user/andre/tcp-ao/sys/dev/ath/if_ath.c user/andre/tcp-ao/sys/dev/ath/if_ath_beacon.c user/andre/tcp-ao/sys/dev/ath/if_ath_beacon.h user/andre/tcp-ao/sys/dev/ath/if_ath_misc.h user/andre/tcp-ao/sys/dev/ath/if_ath_rx.c user/andre/tcp-ao/sys/dev/ath/if_ath_rx_edma.c user/andre/tcp-ao/sys/dev/ath/if_ath_sysctl.c user/andre/tcp-ao/sys/dev/ath/if_ath_tdma.c user/andre/tcp-ao/sys/dev/ath/if_ath_tx.c user/andre/tcp-ao/sys/dev/ath/if_ath_tx_edma.c user/andre/tcp-ao/sys/dev/ath/if_athvar.h user/andre/tcp-ao/sys/dev/atkbdc/psm.c user/andre/tcp-ao/sys/dev/bge/if_bge.c user/andre/tcp-ao/sys/dev/ciss/ciss.c user/andre/tcp-ao/sys/dev/cxgbe/adapter.h user/andre/tcp-ao/sys/dev/cxgbe/common/common.h user/andre/tcp-ao/sys/dev/cxgbe/common/t4_hw.c user/andre/tcp-ao/sys/dev/cxgbe/common/t4_hw.h user/andre/tcp-ao/sys/dev/cxgbe/common/t4_msg.h user/andre/tcp-ao/sys/dev/cxgbe/common/t4_regs.h user/andre/tcp-ao/sys/dev/cxgbe/osdep.h user/andre/tcp-ao/sys/dev/cxgbe/t4_ioctl.h user/andre/tcp-ao/sys/dev/cxgbe/t4_main.c user/andre/tcp-ao/sys/dev/cxgbe/t4_sge.c user/andre/tcp-ao/sys/dev/cxgbe/tom/t4_connect.c user/andre/tcp-ao/sys/dev/cxgbe/tom/t4_cpl_io.c user/andre/tcp-ao/sys/dev/cxgbe/tom/t4_ddp.c user/andre/tcp-ao/sys/dev/cxgbe/tom/t4_listen.c user/andre/tcp-ao/sys/dev/cxgbe/tom/t4_tom.c user/andre/tcp-ao/sys/dev/cxgbe/tom/t4_tom.h user/andre/tcp-ao/sys/dev/drm2/ttm/ttm_bo_util.c user/andre/tcp-ao/sys/dev/drm2/ttm/ttm_bo_vm.c user/andre/tcp-ao/sys/dev/drm2/ttm/ttm_memory.c user/andre/tcp-ao/sys/dev/e1000/if_igb.c user/andre/tcp-ao/sys/dev/e1000/if_igb.h user/andre/tcp-ao/sys/dev/fb/vesa.c user/andre/tcp-ao/sys/dev/fdt/fdt_common.c user/andre/tcp-ao/sys/dev/fdt/fdtbus.c user/andre/tcp-ao/sys/dev/fdt/simplebus.c user/andre/tcp-ao/sys/dev/hwpmc/hwpmc_core.c user/andre/tcp-ao/sys/dev/hwpmc/hwpmc_intel.c user/andre/tcp-ao/sys/dev/hwpmc/hwpmc_uncore.c user/andre/tcp-ao/sys/dev/hwpmc/pmc_events.h user/andre/tcp-ao/sys/dev/ipmi/ipmi_kcs.c user/andre/tcp-ao/sys/dev/ipmi/ipmi_smic.c user/andre/tcp-ao/sys/dev/isci/isci_controller.c user/andre/tcp-ao/sys/dev/isci/isci_io_request.c user/andre/tcp-ao/sys/dev/ixgbe/ixgbe.c user/andre/tcp-ao/sys/dev/md/md.c user/andre/tcp-ao/sys/dev/mfi/mfi_disk.c user/andre/tcp-ao/sys/dev/mii/rgephy.c user/andre/tcp-ao/sys/dev/mii/rgephyreg.h user/andre/tcp-ao/sys/dev/mmc/mmc.c user/andre/tcp-ao/sys/dev/mmc/mmcsd.c user/andre/tcp-ao/sys/dev/mps/mps_sas.c user/andre/tcp-ao/sys/dev/nvd/nvd.c user/andre/tcp-ao/sys/dev/nvme/nvme.c user/andre/tcp-ao/sys/dev/nvme/nvme.h user/andre/tcp-ao/sys/dev/nvme/nvme_ctrlr.c user/andre/tcp-ao/sys/dev/nvme/nvme_ctrlr_cmd.c user/andre/tcp-ao/sys/dev/nvme/nvme_ns.c user/andre/tcp-ao/sys/dev/nvme/nvme_ns_cmd.c user/andre/tcp-ao/sys/dev/nvme/nvme_private.h user/andre/tcp-ao/sys/dev/nvme/nvme_qpair.c user/andre/tcp-ao/sys/dev/nvme/nvme_sysctl.c user/andre/tcp-ao/sys/dev/nvme/nvme_test.c user/andre/tcp-ao/sys/dev/nvme/nvme_uio.c user/andre/tcp-ao/sys/dev/puc/pucdata.c user/andre/tcp-ao/sys/dev/siis/siis.c user/andre/tcp-ao/sys/dev/sis/if_sis.c user/andre/tcp-ao/sys/dev/sis/if_sisreg.h user/andre/tcp-ao/sys/dev/sound/pci/hda/hdaa_patches.c user/andre/tcp-ao/sys/dev/sound/pci/hda/hdac.h user/andre/tcp-ao/sys/dev/sound/pcm/sndstat.c user/andre/tcp-ao/sys/dev/twa/tw_osl_cam.c user/andre/tcp-ao/sys/dev/twa/tw_osl_freebsd.c user/andre/tcp-ao/sys/dev/tws/tws_cam.c user/andre/tcp-ao/sys/dev/tws/tws_user.c user/andre/tcp-ao/sys/dev/uart/uart.h user/andre/tcp-ao/sys/dev/uart/uart_bus_fdt.c user/andre/tcp-ao/sys/dev/uart/uart_core.c user/andre/tcp-ao/sys/dev/uart/uart_dev_pl011.c user/andre/tcp-ao/sys/dev/uart/uart_dev_quicc.c user/andre/tcp-ao/sys/dev/uart/uart_dev_sab82532.c user/andre/tcp-ao/sys/dev/uart/uart_dev_z8530.c user/andre/tcp-ao/sys/dev/usb/controller/xhci.c user/andre/tcp-ao/sys/dev/usb/serial/u3g.c user/andre/tcp-ao/sys/dev/usb/usb_device.c user/andre/tcp-ao/sys/dev/usb/usb_request.c user/andre/tcp-ao/sys/dev/usb/usbdevs user/andre/tcp-ao/sys/dev/usb/wlan/if_rum.c user/andre/tcp-ao/sys/dev/usb/wlan/if_run.c user/andre/tcp-ao/sys/fs/cd9660/cd9660_vnops.c user/andre/tcp-ao/sys/fs/ext2fs/ext2_balloc.c user/andre/tcp-ao/sys/fs/ext2fs/ext2_vnops.c user/andre/tcp-ao/sys/fs/msdosfs/msdosfs_vnops.c user/andre/tcp-ao/sys/fs/nfs/nfsport.h user/andre/tcp-ao/sys/fs/nfsclient/nfs_clbio.c user/andre/tcp-ao/sys/fs/nfsclient/nfs_clport.c user/andre/tcp-ao/sys/fs/nfsclient/nfs_clvnops.c user/andre/tcp-ao/sys/fs/tmpfs/tmpfs.h user/andre/tcp-ao/sys/fs/tmpfs/tmpfs_subr.c user/andre/tcp-ao/sys/fs/tmpfs/tmpfs_vnops.c user/andre/tcp-ao/sys/fs/udf/udf_vnops.c user/andre/tcp-ao/sys/geom/gate/g_gate.c user/andre/tcp-ao/sys/geom/geom.h user/andre/tcp-ao/sys/geom/geom_dev.c user/andre/tcp-ao/sys/geom/geom_disk.c user/andre/tcp-ao/sys/geom/geom_disk.h user/andre/tcp-ao/sys/geom/geom_event.c user/andre/tcp-ao/sys/geom/geom_int.h user/andre/tcp-ao/sys/geom/geom_io.c user/andre/tcp-ao/sys/geom/geom_slice.c user/andre/tcp-ao/sys/geom/geom_subr.c user/andre/tcp-ao/sys/geom/geom_vfs.c user/andre/tcp-ao/sys/geom/multipath/g_multipath.c user/andre/tcp-ao/sys/geom/nop/g_nop.c user/andre/tcp-ao/sys/geom/part/g_part.c user/andre/tcp-ao/sys/geom/raid/tr_raid1e.c user/andre/tcp-ao/sys/i386/i386/pmap.c user/andre/tcp-ao/sys/i386/include/param.h user/andre/tcp-ao/sys/i386/include/pmap.h user/andre/tcp-ao/sys/i386/xen/pmap.c user/andre/tcp-ao/sys/ia64/ia64/pmap.c user/andre/tcp-ao/sys/kern/capabilities.conf user/andre/tcp-ao/sys/kern/imgact_elf.c user/andre/tcp-ao/sys/kern/init_sysent.c user/andre/tcp-ao/sys/kern/kern_physio.c user/andre/tcp-ao/sys/kern/kern_racct.c user/andre/tcp-ao/sys/kern/kern_sig.c user/andre/tcp-ao/sys/kern/kern_synch.c user/andre/tcp-ao/sys/kern/kern_thread.c user/andre/tcp-ao/sys/kern/kern_timeout.c user/andre/tcp-ao/sys/kern/kern_umtx.c user/andre/tcp-ao/sys/kern/subr_bus_dma.c user/andre/tcp-ao/sys/kern/subr_param.c user/andre/tcp-ao/sys/kern/subr_sleepqueue.c user/andre/tcp-ao/sys/kern/subr_taskqueue.c user/andre/tcp-ao/sys/kern/subr_trap.c user/andre/tcp-ao/sys/kern/sys_pipe.c user/andre/tcp-ao/sys/kern/syscalls.c user/andre/tcp-ao/sys/kern/syscalls.master user/andre/tcp-ao/sys/kern/systrace_args.c user/andre/tcp-ao/sys/kern/tty_pts.c user/andre/tcp-ao/sys/kern/uipc_mbuf.c user/andre/tcp-ao/sys/kern/uipc_sockbuf.c user/andre/tcp-ao/sys/kern/uipc_socket.c user/andre/tcp-ao/sys/kern/uipc_syscalls.c user/andre/tcp-ao/sys/kern/uipc_usrreq.c user/andre/tcp-ao/sys/kern/vfs_aio.c user/andre/tcp-ao/sys/kern/vfs_bio.c user/andre/tcp-ao/sys/kern/vfs_cache.c user/andre/tcp-ao/sys/kern/vfs_cluster.c user/andre/tcp-ao/sys/kern/vfs_extattr.c user/andre/tcp-ao/sys/kern/vfs_lookup.c user/andre/tcp-ao/sys/kern/vfs_mount.c user/andre/tcp-ao/sys/kern/vfs_mountroot.c user/andre/tcp-ao/sys/kern/vfs_syscalls.c user/andre/tcp-ao/sys/kern/vfs_vnops.c user/andre/tcp-ao/sys/libkern/arm/divsi3.S user/andre/tcp-ao/sys/libkern/arm/ffs.S user/andre/tcp-ao/sys/libkern/arm/ldivmod.S user/andre/tcp-ao/sys/libkern/arm/memcpy.S user/andre/tcp-ao/sys/mips/adm5120/uart_dev_adm5120.c user/andre/tcp-ao/sys/mips/atheros/ar71xx_chip.c user/andre/tcp-ao/sys/mips/atheros/ar71xx_cpudef.h user/andre/tcp-ao/sys/mips/atheros/ar71xx_machdep.c user/andre/tcp-ao/sys/mips/atheros/ar71xx_setup.c user/andre/tcp-ao/sys/mips/atheros/ar724x_chip.c user/andre/tcp-ao/sys/mips/atheros/ar91xx_chip.c user/andre/tcp-ao/sys/mips/atheros/files.ar71xx user/andre/tcp-ao/sys/mips/mips/pmap.c user/andre/tcp-ao/sys/mips/rt305x/uart_dev_rt305x.c user/andre/tcp-ao/sys/modules/Makefile user/andre/tcp-ao/sys/modules/ath/Makefile user/andre/tcp-ao/sys/modules/cxgbe/Makefile user/andre/tcp-ao/sys/modules/dtrace/Makefile user/andre/tcp-ao/sys/modules/dtrace/dtrace/Makefile user/andre/tcp-ao/sys/modules/dtrace/dtraceall/dtraceall.c user/andre/tcp-ao/sys/modules/dtrace/fbt/Makefile user/andre/tcp-ao/sys/modules/igb/Makefile user/andre/tcp-ao/sys/modules/uart/Makefile user/andre/tcp-ao/sys/net/bridgestp.c user/andre/tcp-ao/sys/net/if_arcsubr.c user/andre/tcp-ao/sys/net/if_bridge.c user/andre/tcp-ao/sys/net/if_gre.c user/andre/tcp-ao/sys/net/if_lagg.c user/andre/tcp-ao/sys/net/if_lagg.h user/andre/tcp-ao/sys/net/pfil.c user/andre/tcp-ao/sys/net/pfil.h user/andre/tcp-ao/sys/net/rtsock.c user/andre/tcp-ao/sys/net80211/ieee80211_freebsd.c user/andre/tcp-ao/sys/netgraph/netflow/netflow.c user/andre/tcp-ao/sys/netgraph/netflow/ng_netflow.c user/andre/tcp-ao/sys/netgraph/ng_ksocket.c user/andre/tcp-ao/sys/netgraph/ng_nat.c user/andre/tcp-ao/sys/netgraph/ng_nat.h user/andre/tcp-ao/sys/netinet/igmp.c user/andre/tcp-ao/sys/netinet/ip_carp.c user/andre/tcp-ao/sys/netinet/ip_fw.h user/andre/tcp-ao/sys/netinet/ip_input.c user/andre/tcp-ao/sys/netinet/ip_mroute.c user/andre/tcp-ao/sys/netinet/ip_options.c user/andre/tcp-ao/sys/netinet/ip_output.c user/andre/tcp-ao/sys/netinet/libalias/alias.c user/andre/tcp-ao/sys/netinet/sctp_constants.h user/andre/tcp-ao/sys/netinet/tcp_input.c user/andre/tcp-ao/sys/netinet/tcp_output.c user/andre/tcp-ao/sys/netinet/tcp_subr.c user/andre/tcp-ao/sys/netinet6/icmp6.c user/andre/tcp-ao/sys/netinet6/in6_proto.c user/andre/tcp-ao/sys/netinet6/ip6_input.c user/andre/tcp-ao/sys/netinet6/ip6_mroute.c user/andre/tcp-ao/sys/netinet6/ip6_output.c user/andre/tcp-ao/sys/netinet6/mld6.c user/andre/tcp-ao/sys/netinet6/nd6.c user/andre/tcp-ao/sys/netinet6/nd6_nbr.c user/andre/tcp-ao/sys/netipsec/key.c user/andre/tcp-ao/sys/netpfil/ipfw/ip_fw2.c user/andre/tcp-ao/sys/netpfil/ipfw/ip_fw_log.c user/andre/tcp-ao/sys/netpfil/ipfw/ip_fw_private.h user/andre/tcp-ao/sys/netpfil/ipfw/ip_fw_sockopt.c user/andre/tcp-ao/sys/netpfil/pf/pf.c user/andre/tcp-ao/sys/nfs/nfs_common.c user/andre/tcp-ao/sys/nfsclient/nfs_bio.c user/andre/tcp-ao/sys/nfsclient/nfs_vnops.c user/andre/tcp-ao/sys/nfsclient/nfsmount.h user/andre/tcp-ao/sys/powerpc/aim/mmu_oea.c user/andre/tcp-ao/sys/powerpc/aim/mmu_oea64.c user/andre/tcp-ao/sys/powerpc/aim/trap.c user/andre/tcp-ao/sys/powerpc/aim/trap_subr32.S user/andre/tcp-ao/sys/powerpc/aim/trap_subr64.S user/andre/tcp-ao/sys/powerpc/booke/pmap.c user/andre/tcp-ao/sys/powerpc/powerpc/mmu_if.m user/andre/tcp-ao/sys/powerpc/powerpc/pmap_dispatch.c user/andre/tcp-ao/sys/rpc/clnt_rc.c user/andre/tcp-ao/sys/rpc/clnt_vc.c user/andre/tcp-ao/sys/sparc64/pci/sbbc.c user/andre/tcp-ao/sys/sparc64/sparc64/pmap.c user/andre/tcp-ao/sys/sys/bio.h user/andre/tcp-ao/sys/sys/buf.h user/andre/tcp-ao/sys/sys/bus_dma.h user/andre/tcp-ao/sys/sys/capability.h user/andre/tcp-ao/sys/sys/conf.h user/andre/tcp-ao/sys/sys/domain.h user/andre/tcp-ao/sys/sys/extattr.h user/andre/tcp-ao/sys/sys/mbuf.h user/andre/tcp-ao/sys/sys/mount.h user/andre/tcp-ao/sys/sys/mouse.h user/andre/tcp-ao/sys/sys/param.h user/andre/tcp-ao/sys/sys/pmc.h user/andre/tcp-ao/sys/sys/signalvar.h user/andre/tcp-ao/sys/sys/sleepqueue.h user/andre/tcp-ao/sys/sys/socket.h user/andre/tcp-ao/sys/sys/stat.h user/andre/tcp-ao/sys/sys/syscall.h user/andre/tcp-ao/sys/sys/syscall.mk user/andre/tcp-ao/sys/sys/syscallsubr.h user/andre/tcp-ao/sys/sys/sysproto.h user/andre/tcp-ao/sys/sys/systm.h user/andre/tcp-ao/sys/sys/taskqueue.h user/andre/tcp-ao/sys/sys/vnode.h user/andre/tcp-ao/sys/ufs/ffs/ffs_alloc.c user/andre/tcp-ao/sys/ufs/ffs/ffs_balloc.c user/andre/tcp-ao/sys/ufs/ffs/ffs_rawread.c user/andre/tcp-ao/sys/ufs/ffs/ffs_vfsops.c user/andre/tcp-ao/sys/ufs/ffs/ffs_vnops.c user/andre/tcp-ao/sys/ufs/ffs/fs.h user/andre/tcp-ao/sys/ufs/ufs/ufs_extern.h user/andre/tcp-ao/sys/ufs/ufs/ufs_lookup.c user/andre/tcp-ao/sys/ufs/ufs/ufs_vnops.c user/andre/tcp-ao/sys/vm/pmap.h user/andre/tcp-ao/sys/vm/swap_pager.c user/andre/tcp-ao/sys/vm/swap_pager.h user/andre/tcp-ao/sys/vm/vm.h user/andre/tcp-ao/sys/vm/vm_init.c user/andre/tcp-ao/sys/vm/vm_kern.c user/andre/tcp-ao/sys/vm/vm_mmap.c user/andre/tcp-ao/sys/vm/vm_object.c user/andre/tcp-ao/sys/vm/vm_object.h user/andre/tcp-ao/sys/vm/vm_page.c user/andre/tcp-ao/sys/vm/vm_page.h user/andre/tcp-ao/sys/vm/vm_reserv.c user/andre/tcp-ao/sys/vm/vnode_pager.c user/andre/tcp-ao/sys/x86/x86/busdma_machdep.c user/andre/tcp-ao/sys/xdr/xdr_mbuf.c Directory Properties: user/andre/tcp-ao/sys/ (props changed) user/andre/tcp-ao/sys/amd64/vmm/ (props changed) user/andre/tcp-ao/sys/boot/ (props changed) user/andre/tcp-ao/sys/cddl/contrib/opensolaris/ (props changed) user/andre/tcp-ao/sys/conf/ (props changed) Modified: user/andre/tcp-ao/sys/amd64/amd64/pmap.c ============================================================================== --- user/andre/tcp-ao/sys/amd64/amd64/pmap.c Tue Apr 2 14:10:22 2013 (r249023) +++ user/andre/tcp-ao/sys/amd64/amd64/pmap.c Tue Apr 2 14:27:44 2013 (r249024) @@ -131,6 +131,7 @@ __FBSDID("$FreeBSD$"); #include <vm/vm_extern.h> #include <vm/vm_pageout.h> #include <vm/vm_pager.h> +#include <vm/vm_radix.h> #include <vm/vm_reserv.h> #include <vm/uma.h> @@ -1497,7 +1498,8 @@ pmap_free_zero_pages(vm_page_t free) while (free != NULL) { m = free; - free = m->right; + free = (void *)m->object; + m->object = NULL; /* Preserve the page's PG_ZERO setting. */ vm_page_free_toq(m); } @@ -1516,7 +1518,7 @@ pmap_add_delayed_free_list(vm_page_t m, m->flags |= PG_ZERO; else m->flags &= ~PG_ZERO; - m->right = *free; + m->object = (void *)*free; *free = m; } @@ -1526,31 +1528,12 @@ pmap_add_delayed_free_list(vm_page_t m, * for mapping a distinct range of virtual addresses. The pmap's collection is * ordered by this virtual address range. */ -static void +static __inline void pmap_insert_pt_page(pmap_t pmap, vm_page_t mpte) { - vm_page_t root; PMAP_LOCK_ASSERT(pmap, MA_OWNED); - root = pmap->pm_root; - if (root == NULL) { - mpte->left = NULL; - mpte->right = NULL; - } else { - root = vm_page_splay(mpte->pindex, root); - if (mpte->pindex < root->pindex) { - mpte->left = root->left; - mpte->right = root; - root->left = NULL; - } else if (mpte->pindex == root->pindex) - panic("pmap_insert_pt_page: pindex already inserted"); - else { - mpte->right = root->right; - mpte->left = root; - root->right = NULL; - } - } - pmap->pm_root = mpte; + vm_radix_insert(&pmap->pm_root, mpte); } /* @@ -1558,19 +1541,12 @@ pmap_insert_pt_page(pmap_t pmap, vm_page * specified pmap's collection of idle page table pages. Returns NULL if there * is no page table page corresponding to the specified virtual address. */ -static vm_page_t +static __inline vm_page_t pmap_lookup_pt_page(pmap_t pmap, vm_offset_t va) { - vm_page_t mpte; - vm_pindex_t pindex = pmap_pde_pindex(va); PMAP_LOCK_ASSERT(pmap, MA_OWNED); - if ((mpte = pmap->pm_root) != NULL && mpte->pindex != pindex) { - mpte = vm_page_splay(pindex, mpte); - if ((pmap->pm_root = mpte)->pindex != pindex) - mpte = NULL; - } - return (mpte); + return (vm_radix_lookup(&pmap->pm_root, pmap_pde_pindex(va))); } /* @@ -1578,25 +1554,12 @@ pmap_lookup_pt_page(pmap_t pmap, vm_offs * of idle page table pages. The specified page table page must be a member of * the pmap's collection. */ -static void +static __inline void pmap_remove_pt_page(pmap_t pmap, vm_page_t mpte) { - vm_page_t root; PMAP_LOCK_ASSERT(pmap, MA_OWNED); - if (mpte != pmap->pm_root) { - root = vm_page_splay(mpte->pindex, pmap->pm_root); - KASSERT(mpte == root, - ("pmap_remove_pt_page: mpte %p is missing from pmap %p", - mpte, pmap)); - } - if (mpte->left == NULL) - root = mpte->right; - else { - root = vm_page_splay(mpte->pindex, mpte->left); - root->right = mpte->right; - } - pmap->pm_root = root; + vm_radix_remove(&pmap->pm_root, mpte->pindex); } /* @@ -1693,7 +1656,7 @@ pmap_pinit0(pmap_t pmap) PMAP_LOCK_INIT(pmap); pmap->pm_pml4 = (pml4_entry_t *)PHYS_TO_DMAP(KPML4phys); - pmap->pm_root = NULL; + pmap->pm_root.rt_root = 0; CPU_ZERO(&pmap->pm_active); PCPU_SET(curpmap, pmap); TAILQ_INIT(&pmap->pm_pvchunk); @@ -1734,7 +1697,7 @@ pmap_pinit(pmap_t pmap) /* install self-referential address mapping entry(s) */ pmap->pm_pml4[PML4PML4I] = VM_PAGE_TO_PHYS(pml4pg) | PG_V | PG_RW | PG_A | PG_M; - pmap->pm_root = NULL; + pmap->pm_root.rt_root = 0; CPU_ZERO(&pmap->pm_active); TAILQ_INIT(&pmap->pm_pvchunk); bzero(&pmap->pm_stats, sizeof pmap->pm_stats); @@ -1976,7 +1939,7 @@ pmap_release(pmap_t pmap) KASSERT(pmap->pm_stats.resident_count == 0, ("pmap_release: pmap resident count %ld != 0", pmap->pm_stats.resident_count)); - KASSERT(pmap->pm_root == NULL, + KASSERT(vm_radix_is_empty(&pmap->pm_root), ("pmap_release: pmap has reserved page table page(s)")); m = PHYS_TO_VM_PAGE(pmap->pm_pml4[PML4PML4I] & PG_FRAME); @@ -2273,7 +2236,7 @@ reclaim_pv_chunk(pmap_t locked_pmap, str } if (m_pc == NULL && free != NULL) { m_pc = free; - free = m_pc->right; + free = (void *)m_pc->object; /* Recycle a freed page table page. */ m_pc->wire_count = 1; atomic_add_int(&cnt.v_wire_count, 1); @@ -4272,6 +4235,32 @@ pmap_copy_page(vm_page_t msrc, vm_page_t pagecopy((void *)src, (void *)dst); } +int unmapped_buf_allowed = 1; + +void +pmap_copy_pages(vm_page_t ma[], vm_offset_t a_offset, vm_page_t mb[], + vm_offset_t b_offset, int xfersize) +{ + void *a_cp, *b_cp; + vm_offset_t a_pg_offset, b_pg_offset; + int cnt; + + while (xfersize > 0) { + a_pg_offset = a_offset & PAGE_MASK; + cnt = min(xfersize, PAGE_SIZE - a_pg_offset); + a_cp = (char *)PHYS_TO_DMAP(ma[a_offset >> PAGE_SHIFT]-> + phys_addr) + a_pg_offset; + b_pg_offset = b_offset & PAGE_MASK; + cnt = min(cnt, PAGE_SIZE - b_pg_offset); + b_cp = (char *)PHYS_TO_DMAP(mb[b_offset >> PAGE_SHIFT]-> + phys_addr) + b_pg_offset; + bcopy(a_cp, b_cp, cnt); + a_offset += cnt; + b_offset += cnt; + xfersize -= cnt; + } +} + /* * Returns true if the pmap's pv is one of the first * 16 pvs linked to from this page. This count may Modified: user/andre/tcp-ao/sys/amd64/include/pmap.h ============================================================================== --- user/andre/tcp-ao/sys/amd64/include/pmap.h Tue Apr 2 14:10:22 2013 (r249023) +++ user/andre/tcp-ao/sys/amd64/include/pmap.h Tue Apr 2 14:27:44 2013 (r249024) @@ -150,6 +150,8 @@ #include <sys/_lock.h> #include <sys/_mutex.h> +#include <vm/_vm_radix.h> + typedef u_int64_t pd_entry_t; typedef u_int64_t pt_entry_t; typedef u_int64_t pdp_entry_t; @@ -250,7 +252,7 @@ struct pmap { cpuset_t pm_active; /* active on cpus */ /* spare u_int here due to padding */ struct pmap_statistics pm_stats; /* pmap statistics */ - vm_page_t pm_root; /* spare page table pages */ + struct vm_radix pm_root; /* spare page table pages */ }; typedef struct pmap *pmap_t; Modified: user/andre/tcp-ao/sys/amd64/include/vmm_instruction_emul.h ============================================================================== --- user/andre/tcp-ao/sys/amd64/include/vmm_instruction_emul.h Tue Apr 2 14:10:22 2013 (r249023) +++ user/andre/tcp-ao/sys/amd64/include/vmm_instruction_emul.h Tue Apr 2 14:27:44 2013 (r249024) @@ -107,6 +107,18 @@ int vmm_fetch_instruction(struct vm *vm, uint64_t rip, int inst_length, uint64_t cr3, struct vie *vie); +/* + * Decode the instruction fetched into 'vie' so it can be emulated. + * + * 'gla' is the guest linear address provided by the hardware assist + * that caused the nested page table fault. It is used to verify that + * the software instruction decoding is in agreement with the hardware. + * + * Some hardware assists do not provide the 'gla' to the hypervisor. + * To skip the 'gla' verification for this or any other reason pass + * in VIE_INVALID_GLA instead. + */ +#define VIE_INVALID_GLA (1UL << 63) /* a non-canonical address */ int vmm_decode_instruction(struct vm *vm, int cpuid, uint64_t gla, struct vie *vie); #endif /* _KERNEL */ Modified: user/andre/tcp-ao/sys/amd64/vmm/intel/vmx.c ============================================================================== --- user/andre/tcp-ao/sys/amd64/vmm/intel/vmx.c Tue Apr 2 14:10:22 2013 (r249023) +++ user/andre/tcp-ao/sys/amd64/vmm/intel/vmx.c Tue Apr 2 14:27:44 2013 (r249024) @@ -153,10 +153,7 @@ static int cap_unrestricted_guest; static int cap_monitor_trap; /* statistics */ -static VMM_STAT_DEFINE(VCPU_MIGRATIONS, "vcpu migration across host cpus"); -static VMM_STAT_DEFINE(VMEXIT_EXTINT, "vm exits due to external interrupt"); -static VMM_STAT_DEFINE(VMEXIT_HLT_IGNORED, "number of times hlt was ignored"); -static VMM_STAT_DEFINE(VMEXIT_HLT, "number of times hlt was intercepted"); +static VMM_STAT_INTEL(VMEXIT_HLT_IGNORED, "number of times hlt was ignored"); #ifdef KTR static const char * @@ -1216,11 +1213,15 @@ vmx_exit_process(struct vmx *vmx, int vc qual = vmexit->u.vmx.exit_qualification; vmexit->exitcode = VM_EXITCODE_BOGUS; + vmm_stat_incr(vmx->vm, vcpu, VMEXIT_COUNT, 1); + switch (vmexit->u.vmx.exit_reason) { case EXIT_REASON_CR_ACCESS: + vmm_stat_incr(vmx->vm, vcpu, VMEXIT_CR_ACCESS, 1); handled = vmx_emulate_cr_access(vmx, vcpu, qual); break; case EXIT_REASON_RDMSR: + vmm_stat_incr(vmx->vm, vcpu, VMEXIT_RDMSR, 1); ecx = vmxctx->guest_rcx; error = emulate_rdmsr(vmx->vm, vcpu, ecx); if (error) { @@ -1230,6 +1231,7 @@ vmx_exit_process(struct vmx *vmx, int vc handled = 1; break; case EXIT_REASON_WRMSR: + vmm_stat_incr(vmx->vm, vcpu, VMEXIT_WRMSR, 1); eax = vmxctx->guest_rax; ecx = vmxctx->guest_rcx; edx = vmxctx->guest_rdx; @@ -1259,15 +1261,18 @@ vmx_exit_process(struct vmx *vmx, int vc vmexit->exitcode = VM_EXITCODE_HLT; break; case EXIT_REASON_MTF: + vmm_stat_incr(vmx->vm, vcpu, VMEXIT_MTRAP, 1); vmexit->exitcode = VM_EXITCODE_MTRAP; break; case EXIT_REASON_PAUSE: + vmm_stat_incr(vmx->vm, vcpu, VMEXIT_PAUSE, 1); vmexit->exitcode = VM_EXITCODE_PAUSE; break; case EXIT_REASON_INTR_WINDOW: + vmm_stat_incr(vmx->vm, vcpu, VMEXIT_INTR_WINDOW, 1); vmx_clear_int_window_exiting(vmx, vcpu); VMM_CTR0(vmx->vm, vcpu, "Disabling interrupt window exiting"); - /* FALLTHRU */ + return (1); case EXIT_REASON_EXT_INTR: /* * External interrupts serve only to cause VM exits and allow @@ -1287,10 +1292,12 @@ vmx_exit_process(struct vmx *vmx, int vc return (1); case EXIT_REASON_NMI_WINDOW: /* Exit to allow the pending virtual NMI to be injected */ + vmm_stat_incr(vmx->vm, vcpu, VMEXIT_NMI_WINDOW, 1); vmx_clear_nmi_window_exiting(vmx, vcpu); VMM_CTR0(vmx->vm, vcpu, "Disabling NMI window exiting"); return (1); case EXIT_REASON_INOUT: + vmm_stat_incr(vmx->vm, vcpu, VMEXIT_INOUT, 1); vmexit->exitcode = VM_EXITCODE_INOUT; vmexit->u.inout.bytes = (qual & 0x7) + 1; vmexit->u.inout.in = (qual & 0x8) ? 1 : 0; @@ -1300,9 +1307,11 @@ vmx_exit_process(struct vmx *vmx, int vc vmexit->u.inout.eax = (uint32_t)(vmxctx->guest_rax); break; case EXIT_REASON_CPUID: + vmm_stat_incr(vmx->vm, vcpu, VMEXIT_CPUID, 1); handled = vmx_handle_cpuid(vmx->vm, vcpu, vmxctx); break; case EXIT_REASON_EPT_FAULT: + vmm_stat_incr(vmx->vm, vcpu, VMEXIT_EPT_FAULT, 1); gla = vmcs_gla(); gpa = vmcs_gpa(); cr3 = vmcs_guest_cr3(); @@ -1315,6 +1324,7 @@ vmx_exit_process(struct vmx *vmx, int vc } break; default: + vmm_stat_incr(vmx->vm, vcpu, VMEXIT_UNKNOWN, 1); break; } @@ -1456,6 +1466,7 @@ vmx_run(void *arg, int vcpu, register_t vmexit->inst_length = 0; vmexit->exitcode = VM_EXITCODE_BOGUS; vmx_astpending_trace(vmx, vcpu, rip); + vmm_stat_incr(vmx->vm, vcpu, VMEXIT_ASTPENDING, 1); break; } @@ -1474,6 +1485,9 @@ vmx_run(void *arg, int vcpu, register_t handled, vmexit->exitcode); } + if (!handled) + vmm_stat_incr(vmx->vm, vcpu, VMEXIT_USERSPACE, 1); + VMM_CTR1(vmx->vm, vcpu, "goto userland: exitcode %d",vmexit->exitcode); /* Modified: user/andre/tcp-ao/sys/amd64/vmm/io/vlapic.c ============================================================================== --- user/andre/tcp-ao/sys/amd64/vmm/io/vlapic.c Tue Apr 2 14:10:22 2013 (r249023) +++ user/andre/tcp-ao/sys/amd64/vmm/io/vlapic.c Tue Apr 2 14:27:44 2013 (r249024) @@ -41,6 +41,7 @@ __FBSDID("$FreeBSD$"); #include <machine/vmm.h> +#include "vmm_stat.h" #include "vmm_lapic.h" #include "vmm_ktr.h" #include "vdev.h" @@ -410,6 +411,8 @@ vlapic_periodic_timer(struct vlapic *vla return (vlapic_get_lvt_field(lvt, APIC_LVTT_TM_PERIODIC)); } +static VMM_STAT(VLAPIC_INTR_TIMER, "timer interrupts generated by vlapic"); + static void vlapic_fire_timer(struct vlapic *vlapic) { @@ -419,6 +422,7 @@ vlapic_fire_timer(struct vlapic *vlapic) lvt = vlapic_get_lvt(vlapic, APIC_OFFSET_TIMER_LVT); if (!vlapic_get_lvt_field(lvt, APIC_LVTT_M)) { + vmm_stat_incr(vlapic->vm, vlapic->vcpuid, VLAPIC_INTR_TIMER, 1); vector = vlapic_get_lvt_field(lvt,APIC_LVTT_VECTOR); vlapic_set_intr_ready(vlapic, vector); } Modified: user/andre/tcp-ao/sys/amd64/vmm/vmm.c ============================================================================== --- user/andre/tcp-ao/sys/amd64/vmm/vmm.c Tue Apr 2 14:10:22 2013 (r249023) +++ user/andre/tcp-ao/sys/amd64/vmm/vmm.c Tue Apr 2 14:27:44 2013 (r249024) @@ -139,7 +139,7 @@ static MALLOC_DEFINE(M_VM, "vm", "vm"); CTASSERT(VMM_MSR_NUM <= 64); /* msr_mask can keep track of up to 64 msrs */ /* statistics */ -static VMM_STAT_DEFINE(VCPU_TOTAL_RUNTIME, "vcpu total runtime"); +static VMM_STAT(VCPU_TOTAL_RUNTIME, "vcpu total runtime"); static void vcpu_cleanup(struct vcpu *vcpu) @@ -612,7 +612,7 @@ save_guest_fpustate(struct vcpu *vcpu) fpu_start_emulating(); } -static VMM_STAT_DEFINE(VCPU_IDLE_TICKS, "number of ticks vcpu was idle"); +static VMM_STAT(VCPU_IDLE_TICKS, "number of ticks vcpu was idle"); int vm_run(struct vm *vm, struct vm_run *vmrun) @@ -717,7 +717,7 @@ vm_inject_event(struct vm *vm, int vcpui return (VMINJECT(vm->cookie, vcpuid, type, vector, code, code_valid)); } -static VMM_STAT_DEFINE(VCPU_NMI_COUNT, "number of NMIs delivered to vcpu"); +static VMM_STAT(VCPU_NMI_COUNT, "number of NMIs delivered to vcpu"); int vm_inject_nmi(struct vm *vm, int vcpuid) @@ -937,7 +937,7 @@ vm_set_x2apic_state(struct vm *vm, int v if (vcpuid < 0 || vcpuid >= VM_MAXCPU) return (EINVAL); - if (state < 0 || state >= X2APIC_STATE_LAST) + if (state >= X2APIC_STATE_LAST) return (EINVAL); vm->vcpu[vcpuid].x2apic_state = state; Modified: user/andre/tcp-ao/sys/amd64/vmm/vmm_instruction_emul.c ============================================================================== --- user/andre/tcp-ao/sys/amd64/vmm/vmm_instruction_emul.c Tue Apr 2 14:10:22 2013 (r249023) +++ user/andre/tcp-ao/sys/amd64/vmm/vmm_instruction_emul.c Tue Apr 2 14:27:44 2013 (r249024) @@ -790,18 +790,20 @@ decode_immediate(struct vie *vie) return (0); } -#define VERIFY_GLA /* * Verify that the 'guest linear address' provided as collateral of the nested * page table fault matches with our instruction decoding. */ -#ifdef VERIFY_GLA static int verify_gla(struct vm *vm, int cpuid, uint64_t gla, struct vie *vie) { int error; uint64_t base, idx; + /* Skip 'gla' verification */ + if (gla == VIE_INVALID_GLA) + return (0); + base = 0; if (vie->base_register != VM_REG_LAST) { error = vm_get_register(vm, cpuid, vie->base_register, &base); @@ -832,7 +834,6 @@ verify_gla(struct vm *vm, int cpuid, uin return (0); } -#endif /* VERIFY_GLA */ int vmm_decode_instruction(struct vm *vm, int cpuid, uint64_t gla, struct vie *vie) @@ -856,10 +857,8 @@ vmm_decode_instruction(struct vm *vm, in if (decode_immediate(vie)) return (-1); -#ifdef VERIFY_GLA if (verify_gla(vm, cpuid, gla, vie)) return (-1); -#endif vie->decoded = 1; /* success */ Modified: user/andre/tcp-ao/sys/amd64/vmm/vmm_stat.c ============================================================================== --- user/andre/tcp-ao/sys/amd64/vmm/vmm_stat.c Tue Apr 2 14:10:22 2013 (r249023) +++ user/andre/tcp-ao/sys/amd64/vmm/vmm_stat.c Tue Apr 2 14:27:44 2013 (r249024) @@ -36,6 +36,7 @@ __FBSDID("$FreeBSD$"); #include <sys/smp.h> #include <machine/vmm.h> +#include "vmm_util.h" #include "vmm_stat.h" static int vstnum; @@ -52,6 +53,12 @@ vmm_stat_init(void *arg) if (vst->desc == NULL) return; + if (vst->scope == VMM_STAT_SCOPE_INTEL && !vmm_is_intel()) + return; + + if (vst->scope == VMM_STAT_SCOPE_AMD && !vmm_is_amd()) + return; + if (vstnum >= MAX_VMM_STAT_TYPES) { printf("Cannot accomodate vmm stat type \"%s\"!\n", vst->desc); return; @@ -102,3 +109,22 @@ vmm_stat_desc(int index) else return (NULL); } + +/* global statistics */ +VMM_STAT(VCPU_MIGRATIONS, "vcpu migration across host cpus"); +VMM_STAT(VMEXIT_COUNT, "total number of vm exits"); +VMM_STAT(VMEXIT_EXTINT, "vm exits due to external interrupt"); +VMM_STAT(VMEXIT_HLT, "number of times hlt was intercepted"); +VMM_STAT(VMEXIT_CR_ACCESS, "number of times %cr access was intercepted"); +VMM_STAT(VMEXIT_RDMSR, "number of times rdmsr was intercepted"); +VMM_STAT(VMEXIT_WRMSR, "number of times wrmsr was intercepted"); +VMM_STAT(VMEXIT_MTRAP, "number of monitor trap exits"); +VMM_STAT(VMEXIT_PAUSE, "number of times pause was intercepted"); +VMM_STAT(VMEXIT_INTR_WINDOW, "vm exits due to interrupt window opening"); +VMM_STAT(VMEXIT_NMI_WINDOW, "vm exits due to nmi window opening"); +VMM_STAT(VMEXIT_INOUT, "number of times in/out was intercepted"); +VMM_STAT(VMEXIT_CPUID, "number of times cpuid was intercepted"); +VMM_STAT(VMEXIT_EPT_FAULT, "vm exits due to nested page fault"); +VMM_STAT(VMEXIT_UNKNOWN, "number of vm exits for unknown reason"); +VMM_STAT(VMEXIT_ASTPENDING, "number of times astpending at exit"); +VMM_STAT(VMEXIT_USERSPACE, "number of vm exits handled in userspace"); Modified: user/andre/tcp-ao/sys/amd64/vmm/vmm_stat.h ============================================================================== --- user/andre/tcp-ao/sys/amd64/vmm/vmm_stat.h Tue Apr 2 14:10:22 2013 (r249023) +++ user/andre/tcp-ao/sys/amd64/vmm/vmm_stat.h Tue Apr 2 14:27:44 2013 (r249024) @@ -36,19 +36,36 @@ struct vm; #define MAX_VMM_STAT_TYPES 64 /* arbitrary */ +enum vmm_stat_scope { + VMM_STAT_SCOPE_ANY, + VMM_STAT_SCOPE_INTEL, /* Intel VMX specific statistic */ + VMM_STAT_SCOPE_AMD, /* AMD SVM specific statistic */ +}; + struct vmm_stat_type { - const char *desc; /* description of statistic */ int index; /* position in the stats buffer */ + const char *desc; /* description of statistic */ + enum vmm_stat_scope scope; }; void vmm_stat_init(void *arg); -#define VMM_STAT_DEFINE(type, desc) \ +#define VMM_STAT_DEFINE(type, desc, scope) \ struct vmm_stat_type type[1] = { \ - { desc, -1 } \ + { -1, desc, scope } \ }; \ SYSINIT(type##_stat, SI_SUB_KLD, SI_ORDER_ANY, vmm_stat_init, type) +#define VMM_STAT_DECLARE(type) \ + extern struct vmm_stat_type type[1] + +#define VMM_STAT(type, desc) \ + VMM_STAT_DEFINE(type, desc, VMM_STAT_SCOPE_ANY) +#define VMM_STAT_INTEL(type, desc) \ + VMM_STAT_DEFINE(type, desc, VMM_STAT_SCOPE_INTEL) +#define VMM_STAT_AMD(type, desc) \ + VMM_STAT_DEFINE(type, desc, VMM_STAT_SCOPE_AMD) + void *vmm_stat_alloc(void); void vmm_stat_free(void *vp); @@ -68,4 +85,21 @@ vmm_stat_incr(struct vm *vm, int vcpu, s #endif } +VMM_STAT_DECLARE(VCPU_MIGRATIONS); +VMM_STAT_DECLARE(VMEXIT_COUNT); +VMM_STAT_DECLARE(VMEXIT_EXTINT); +VMM_STAT_DECLARE(VMEXIT_HLT); +VMM_STAT_DECLARE(VMEXIT_CR_ACCESS); +VMM_STAT_DECLARE(VMEXIT_RDMSR); +VMM_STAT_DECLARE(VMEXIT_WRMSR); +VMM_STAT_DECLARE(VMEXIT_MTRAP); +VMM_STAT_DECLARE(VMEXIT_PAUSE); +VMM_STAT_DECLARE(VMEXIT_INTR_WINDOW); +VMM_STAT_DECLARE(VMEXIT_NMI_WINDOW); +VMM_STAT_DECLARE(VMEXIT_INOUT); +VMM_STAT_DECLARE(VMEXIT_CPUID); +VMM_STAT_DECLARE(VMEXIT_EPT_FAULT); +VMM_STAT_DECLARE(VMEXIT_UNKNOWN); +VMM_STAT_DECLARE(VMEXIT_ASTPENDING); +VMM_STAT_DECLARE(VMEXIT_USERSPACE); #endif Modified: user/andre/tcp-ao/sys/arm/arm/bcopy_page.S ============================================================================== --- user/andre/tcp-ao/sys/arm/arm/bcopy_page.S Tue Apr 2 14:10:22 2013 (r249023) +++ user/andre/tcp-ao/sys/arm/arm/bcopy_page.S Tue Apr 2 14:27:44 2013 (r249024) @@ -117,6 +117,7 @@ ENTRY(bcopy_page) bne 1b RESTORE_REGS /* ...and return. */ +END(bcopy_page) /* * bzero_page(dest) @@ -178,6 +179,7 @@ ENTRY(bzero_page) bne 1b ldmfd sp!, {r4-r8, pc} +END(bzero_page) #else /* _ARM_ARCH_5E */ @@ -246,6 +248,7 @@ ENTRY(bcopy_page) bgt 1b ldmfd sp!, {r4, r5} RET +END(bcopy_page) /* * armv5e version of bzero_page @@ -273,4 +276,5 @@ ENTRY(bzero_page) subs r1, r1, #128 bne 1b RET +END(bzero_page) #endif /* _ARM_ARCH_5E */ Modified: user/andre/tcp-ao/sys/arm/arm/bcopyinout.S ============================================================================== --- user/andre/tcp-ao/sys/arm/arm/bcopyinout.S Tue Apr 2 14:10:22 2013 (r249023) +++ user/andre/tcp-ao/sys/arm/arm/bcopyinout.S Tue Apr 2 14:27:44 2013 (r249024) @@ -312,6 +312,7 @@ ENTRY(copyin) RESTORE_REGS RET +END(copyin) /* * r0 = kernel space address @@ -538,6 +539,7 @@ ENTRY(copyout) RESTORE_REGS RET +END(copyout) #endif /* @@ -564,6 +566,7 @@ ENTRY(badaddr_read_1) mov r0, #0 /* No fault */ 1: str ip, [r2, #PCB_ONFAULT] RET +END(badaddr_read_1) /* * int badaddr_read_2(const uint16_t *src, uint16_t *dest) @@ -589,6 +592,7 @@ ENTRY(badaddr_read_2) mov r0, #0 /* No fault */ 1: str ip, [r2, #PCB_ONFAULT] RET +END(badaddr_read_2) /* * int badaddr_read_4(const uint32_t *src, uint32_t *dest) @@ -614,4 +618,5 @@ ENTRY(badaddr_read_4) mov r0, #0 /* No fault */ 1: str ip, [r2, #PCB_ONFAULT] RET +END(badaddr_read_4) Modified: user/andre/tcp-ao/sys/arm/arm/bcopyinout_xscale.S ============================================================================== --- user/andre/tcp-ao/sys/arm/arm/bcopyinout_xscale.S Tue Apr 2 14:10:22 2013 (r249023) +++ user/andre/tcp-ao/sys/arm/arm/bcopyinout_xscale.S Tue Apr 2 14:27:44 2013 (r249024) @@ -492,7 +492,7 @@ ENTRY(copyin) ldrbt ip, [r0] strb ip, [r1] RET - +END(copyin) /* * r0 = kernel space address @@ -935,3 +935,5 @@ ENTRY(copyout) ldrb ip, [r0] strbt ip, [r1] RET +END(copyout) + Modified: user/andre/tcp-ao/sys/arm/arm/blockio.S ============================================================================== --- user/andre/tcp-ao/sys/arm/arm/blockio.S Tue Apr 2 14:10:22 2013 (r249023) +++ user/andre/tcp-ao/sys/arm/arm/blockio.S Tue Apr 2 14:27:44 2013 (r249024) @@ -101,6 +101,7 @@ ENTRY(read_multi_1) ldrgtb r3, [r0] strgtb r3, [r1], #1 ldmdb fp, {fp, sp, pc} +END(read_multi_1) /* * Write bytes to an I/O address from a block of memory @@ -152,6 +153,7 @@ ENTRY(write_multi_1) ldrgtb r3, [r1], #1 strgtb r3, [r0] ldmdb fp, {fp, sp, pc} +END(write_multi_1) /* * Reads short ints (16 bits) from an I/O address into a block of memory @@ -199,7 +201,7 @@ ENTRY(insw) bgt .Lfastinswloop RET - +END(insw) /* * Writes short ints (16 bits) from a block of memory to an I/O address @@ -260,6 +262,7 @@ ENTRY(outsw) bgt .Lfastoutswloop RET +END(outsw) /* * reads short ints (16 bits) from an I/O address into a block of memory @@ -318,7 +321,7 @@ ENTRY(insw16) bgt .Linsw16loop ldmfd sp!, {r4,r5,pc} /* Restore regs and go home */ - +END(insw16) /* * Writes short ints (16 bits) from a block of memory to an I/O address @@ -385,6 +388,7 @@ ENTRY(outsw16) bgt .Loutsw16loop ldmfd sp!, {r4,r5,pc} /* and go home */ +END(outsw16) /* * reads short ints (16 bits) from an I/O address into a block of memory @@ -481,6 +485,7 @@ ENTRY(inswm8) .Linswm8_l1: ldmfd sp!, {r4-r9,pc} /* And go home */ +END(inswm8) /* * write short ints (16 bits) to an I/O address from a block of memory @@ -585,3 +590,5 @@ ENTRY(outswm8) .Loutswm8_l1: ldmfd sp!, {r4-r8,pc} /* And go home */ +END(outswm8) + Modified: user/andre/tcp-ao/sys/arm/arm/bus_space_asm_generic.S ============================================================================== --- user/andre/tcp-ao/sys/arm/arm/bus_space_asm_generic.S Tue Apr 2 14:10:22 2013 (r249023) +++ user/andre/tcp-ao/sys/arm/arm/bus_space_asm_generic.S Tue Apr 2 14:27:44 2013 (r249024) @@ -50,14 +50,17 @@ __FBSDID("$FreeBSD$"); ENTRY(generic_bs_r_1) ldrb r0, [r1, r2] RET +END(generic_bs_r_1) ENTRY(generic_armv4_bs_r_2) ldrh r0, [r1, r2] RET +END(generic_armv4_bs_r_2) ENTRY(generic_bs_r_4) ldr r0, [r1, r2] RET +END(generic_bs_r_4) /* * write single @@ -66,14 +69,17 @@ ENTRY(generic_bs_r_4) ENTRY(generic_bs_w_1) strb r3, [r1, r2] RET +END(generic_bs_w_1) ENTRY(generic_armv4_bs_w_2) strh r3, [r1, r2] RET +END(generic_armv4_bs_w_2) ENTRY(generic_bs_w_4) str r3, [r1, r2] RET +END(generic_bs_w_4) /* * read multiple @@ -92,6 +98,7 @@ ENTRY(generic_bs_rm_1) bne 1b RET +END(generic_bs_rm_1) ENTRY(generic_armv4_bs_rm_2) add r0, r1, r2 @@ -106,6 +113,7 @@ ENTRY(generic_armv4_bs_rm_2) bne 1b RET +END(generic_armv4_bs_rm_2) ENTRY(generic_bs_rm_4) add r0, r1, r2 @@ -120,6 +128,7 @@ ENTRY(generic_bs_rm_4) bne 1b RET +END(generic_bs_rm_4) /* * write multiple @@ -138,6 +147,7 @@ ENTRY(generic_bs_wm_1) bne 1b RET +END(generic_bs_wm_1) ENTRY(generic_armv4_bs_wm_2) add r0, r1, r2 @@ -152,6 +162,7 @@ ENTRY(generic_armv4_bs_wm_2) bne 1b RET +END(generic_armv4_bs_wm_2) ENTRY(generic_bs_wm_4) add r0, r1, r2 @@ -166,6 +177,7 @@ ENTRY(generic_bs_wm_4) bne 1b RET +END(generic_bs_wm_4) /* * read region @@ -184,6 +196,7 @@ ENTRY(generic_bs_rr_1) bne 1b RET +END(generic_bs_rr_1) ENTRY(generic_armv4_bs_rr_2) add r0, r1, r2 @@ -198,6 +211,7 @@ ENTRY(generic_armv4_bs_rr_2) bne 1b RET +END(generic_armv4_bs_rr_2) ENTRY(generic_bs_rr_4) add r0, r1, r2 @@ -212,6 +226,7 @@ ENTRY(generic_bs_rr_4) bne 1b RET +END(generic_bs_rr_4) /* * write region. @@ -230,6 +245,7 @@ ENTRY(generic_bs_wr_1) bne 1b RET +END(generic_bs_wr_1) ENTRY(generic_armv4_bs_wr_2) add r0, r1, r2 @@ -244,6 +260,7 @@ ENTRY(generic_armv4_bs_wr_2) bne 1b RET +END(generic_armv4_bs_wr_2) ENTRY(generic_bs_wr_4) add r0, r1, r2 @@ -258,6 +275,7 @@ ENTRY(generic_bs_wr_4) bne 1b RET +END(generic_bs_wr_4) /* * set region @@ -275,6 +293,7 @@ ENTRY(generic_bs_sr_1) bne 1b RET +END(generic_bs_sr_1) ENTRY(generic_armv4_bs_sr_2) add r0, r1, r2 @@ -288,6 +307,7 @@ ENTRY(generic_armv4_bs_sr_2) bne 1b RET +END(generic_armv4_bs_sr_2) ENTRY(generic_bs_sr_4) add r0, r1, r2 @@ -301,6 +321,7 @@ ENTRY(generic_bs_sr_4) bne 1b RET +END(generic_bs_sr_4) /* * copy region @@ -335,3 +356,5 @@ ENTRY(generic_armv4_bs_c_2) bne 3b RET +END(generic_armv4_bs_c_2) + Modified: user/andre/tcp-ao/sys/arm/arm/busdma_machdep-v6.c ============================================================================== --- user/andre/tcp-ao/sys/arm/arm/busdma_machdep-v6.c Tue Apr 2 14:10:22 2013 (r249023) +++ user/andre/tcp-ao/sys/arm/arm/busdma_machdep-v6.c Tue Apr 2 14:27:44 2013 (r249024) @@ -1150,19 +1150,16 @@ _bus_dmamap_sync(bus_dma_tag_t dmat, bus vm_offset_t bbuf; char _tmp_cl[arm_dcache_align], _tmp_clend[arm_dcache_align]; #endif - /* if buffer was from user space, it it possible that this - * is not the same vm map. The fix is to map each page in - * the buffer into the current address space (KVM) and then - * do the bounce copy or sync list cache operation. - * - * The sync list entries are already broken into - * their respective physical pages. - */ - if (!pmap_dmap_iscurrent(map->pmap)) - printf("_bus_dmamap_sync: wrong user map: %p %x\n", map->pmap, op); - + /* + * If the buffer was from user space, it is possible that this is not + * the same vm map, especially on a POST operation. It's not clear that + * dma on userland buffers can work at all right now, certainly not if a + * partial cacheline flush has to be handled. To be safe, until we're + * able to test direct userland dma, panic on a map mismatch. + */ if ((bpage = STAILQ_FIRST(&map->bpages)) != NULL) { - + if (!pmap_dmap_iscurrent(map->pmap)) + panic("_bus_dmamap_sync: wrong user map for bounce sync."); /* Handle data bouncing. */ CTR4(KTR_BUSDMA, "%s: tag %p tag flags 0x%x op 0x%x " "performing bounce", __func__, dmat, dmat->flags, op); @@ -1188,9 +1185,6 @@ _bus_dmamap_sync(bus_dma_tag_t dmat, bus } if (op & BUS_DMASYNC_POSTREAD) { - if (!pmap_dmap_iscurrent(map->pmap)) - panic("_bus_dmamap_sync: wrong user map. apply fix"); - cpu_dcache_inv_range((vm_offset_t)bpage->vaddr, bpage->datacount); l2cache_inv_range((vm_offset_t)bpage->vaddr, @@ -1230,6 +1224,8 @@ _bus_dmamap_sync(bus_dma_tag_t dmat, bus return; if (map->sync_count != 0) { + if (!pmap_dmap_iscurrent(map->pmap)) + panic("_bus_dmamap_sync: wrong user map for sync."); /* ARM caches are not self-snooping for dma */ sl = &map->slist[0]; @@ -1303,8 +1299,6 @@ _bus_dmamap_sync(bus_dma_tag_t dmat, bus #ifdef FIX_DMAP_BUS_DMASYNC_POSTREAD case BUS_DMASYNC_POSTREAD: - if (!pmap_dmap_iscurrent(map->pmap)) - panic("_bus_dmamap_sync: wrong user map. apply fix"); while (sl != end) { /* write back the unaligned portions */ vm_paddr_t physaddr; Modified: user/andre/tcp-ao/sys/arm/arm/copystr.S ============================================================================== --- user/andre/tcp-ao/sys/arm/arm/copystr.S Tue Apr 2 14:10:22 2013 (r249023) +++ user/andre/tcp-ao/sys/arm/arm/copystr.S Tue Apr 2 14:27:44 2013 (r249024) @@ -93,6 +93,7 @@ ENTRY(copystr) ldmfd sp!, {r4-r5} /* stack is 8 byte aligned */ RET +END(copystr) #define SAVE_REGS stmfd sp!, {r4-r6} #define RESTORE_REGS ldmfd sp!, {r4-r6} @@ -143,6 +144,7 @@ ENTRY(copyinstr) RESTORE_REGS RET +END(copyinstr) /* * r0 - kernel space address @@ -190,6 +192,7 @@ ENTRY(copyoutstr) RESTORE_REGS RET +END(copyoutstr) /* A fault occurred during the copy */ .Lcopystrfault: Modified: user/andre/tcp-ao/sys/arm/arm/cpufunc_asm.S ============================================================================== --- user/andre/tcp-ao/sys/arm/arm/cpufunc_asm.S Tue Apr 2 14:10:22 2013 (r249023) +++ user/andre/tcp-ao/sys/arm/arm/cpufunc_asm.S Tue Apr 2 14:27:44 2013 (r249024) @@ -50,6 +50,7 @@ __FBSDID("$FreeBSD$"); ENTRY(cpufunc_nullop) RET +END(cpufunc_nullop) /* * Generic functions to read the internal coprocessor registers @@ -64,27 +65,32 @@ ENTRY(cpufunc_nullop) ENTRY(cpufunc_id) mrc p15, 0, r0, c0, c0, 0 RET +END(cpufunc_id) ENTRY(cpufunc_cpuid) mrc p15, 0, r0, c0, c0, 0 RET +END(cpufunc_cpuid) ENTRY(cpu_get_control) mrc p15, 0, r0, c1, c0, 0 RET +END(cpu_get_control) ENTRY(cpu_read_cache_config) mrc p15, 0, r0, c0, c0, 1 RET +END(cpu_read_cache_config) ENTRY(cpufunc_faultstatus) mrc p15, 0, r0, c5, c0, 0 RET +END(cpufunc_faultstatus) ENTRY(cpufunc_faultaddress) mrc p15, 0, r0, c6, c0, 0 RET - +END(cpufunc_faultaddress) /* * Generic functions to write the internal coprocessor registers @@ -101,11 +107,13 @@ ENTRY(cpufunc_faultaddress) *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201304021427.r32ERjhN020810>