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...

Andre Oppermann andre at FreeBSD.org
Tue Apr 2 14:27:48 UTC 2013


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 ***


More information about the svn-src-user mailing list