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