Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 31 Oct 2014 22:55:05 GMT
From:      John-Mark Gurney <jmg@FreeBSD.org>
To:        Perforce Change Reviews <perforce@FreeBSD.org>
Subject:   PERFORCE change 1202335 for review
Message-ID:  <201410312255.s9VMt5XI067922@skunkworks.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://p4web.freebsd.org/@@1202335?ac=10

Change 1202335 by jmg@jmg_carbon2 on 2014/10/31 22:54:23

	IFC @ 1202232

Affected files ...

.. //depot/projects/opencrypto/share/man/man3/pthread_cleanup_pop.3#2 integrate
.. //depot/projects/opencrypto/share/man/man3/pthread_cleanup_push.3#2 integrate
.. //depot/projects/opencrypto/share/man/man4/Makefile#5 integrate
.. //depot/projects/opencrypto/share/man/man4/ada.4#3 integrate
.. //depot/projects/opencrypto/share/man/man4/ctl.4#2 integrate
.. //depot/projects/opencrypto/share/man/man4/da.4#2 integrate
.. //depot/projects/opencrypto/share/man/man4/urtwn.4#4 integrate
.. //depot/projects/opencrypto/share/man/man4/virtio.4#2 integrate
.. //depot/projects/opencrypto/share/man/man4/virtio_console.4#1 branch
.. //depot/projects/opencrypto/share/man/man5/src.conf.5#5 integrate
.. //depot/projects/opencrypto/share/man/man8/Makefile#3 integrate
.. //depot/projects/opencrypto/share/man/man8/hv_kvp_daemon.8#2 delete
.. //depot/projects/opencrypto/share/man/man9/Makefile#5 integrate
.. //depot/projects/opencrypto/share/man/man9/casuword.9#1 branch
.. //depot/projects/opencrypto/share/man/man9/fetch.9#2 integrate
.. //depot/projects/opencrypto/share/man/man9/fpu_kern.9#2 integrate
.. //depot/projects/opencrypto/share/man/man9/mbuf.9#3 integrate
.. //depot/projects/opencrypto/sys/amd64/amd64/pmap.c#6 integrate
.. //depot/projects/opencrypto/sys/amd64/amd64/support.S#3 integrate
.. //depot/projects/opencrypto/sys/amd64/amd64/uio_machdep.c#2 integrate
.. //depot/projects/opencrypto/sys/amd64/conf/GENERIC#4 integrate
.. //depot/projects/opencrypto/sys/amd64/ia32/ia32_syscall.c#2 integrate
.. //depot/projects/opencrypto/sys/amd64/include/md_var.h#4 integrate
.. //depot/projects/opencrypto/sys/amd64/include/pmap.h#3 integrate
.. //depot/projects/opencrypto/sys/amd64/include/vmm.h#5 integrate
.. //depot/projects/opencrypto/sys/amd64/include/vmparam.h#3 integrate
.. //depot/projects/opencrypto/sys/amd64/include/xen/hypercall.h#2 integrate
.. //depot/projects/opencrypto/sys/amd64/vmm/amd/svm.c#2 integrate
.. //depot/projects/opencrypto/sys/amd64/vmm/amd/vmcb.c#2 integrate
.. //depot/projects/opencrypto/sys/amd64/vmm/io/vatpic.c#5 integrate
.. //depot/projects/opencrypto/sys/amd64/vmm/io/vatpic.h#2 integrate
.. //depot/projects/opencrypto/sys/amd64/vmm/io/vatpit.c#2 integrate
.. //depot/projects/opencrypto/sys/amd64/vmm/io/vatpit.h#2 integrate
.. //depot/projects/opencrypto/sys/amd64/vmm/io/vpmtmr.c#1 branch
.. //depot/projects/opencrypto/sys/amd64/vmm/io/vpmtmr.h#1 branch
.. //depot/projects/opencrypto/sys/amd64/vmm/vmm.c#5 integrate
.. //depot/projects/opencrypto/sys/amd64/vmm/vmm_ioport.c#2 integrate
.. //depot/projects/opencrypto/sys/amd64/vmm/vmm_ioport.h#2 integrate
.. //depot/projects/opencrypto/sys/arm/allwinner/a10_gpio.c#2 integrate
.. //depot/projects/opencrypto/sys/arm/altera/socfpga/files.socfpga#4 integrate
.. //depot/projects/opencrypto/sys/arm/arm/busdma_machdep-v6.c#3 integrate
.. //depot/projects/opencrypto/sys/arm/arm/nexus.c#6 integrate
.. //depot/projects/opencrypto/sys/arm/arm/pl310.c#3 integrate
.. //depot/projects/opencrypto/sys/arm/arm/pmap-v6.c#4 integrate
.. //depot/projects/opencrypto/sys/arm/at91/std.atmel#3 integrate
.. //depot/projects/opencrypto/sys/arm/broadcom/bcm2835/bcm2835_bsc.c#3 integrate
.. //depot/projects/opencrypto/sys/arm/broadcom/bcm2835/bcm2835_bscvar.h#2 integrate
.. //depot/projects/opencrypto/sys/arm/broadcom/bcm2835/bcm2835_gpio.c#2 integrate
.. //depot/projects/opencrypto/sys/arm/conf/ATMEL#2 integrate
.. //depot/projects/opencrypto/sys/arm/conf/SOCKIT-BERI#2 integrate
.. //depot/projects/opencrypto/sys/arm/freescale/imx/imx6_ccm.c#4 integrate
.. //depot/projects/opencrypto/sys/arm/freescale/imx/imx6_machdep.c#4 integrate
.. //depot/projects/opencrypto/sys/arm/freescale/imx/imx_gpio.c#2 integrate
.. //depot/projects/opencrypto/sys/arm/freescale/vybrid/vf_gpio.c#2 integrate
.. //depot/projects/opencrypto/sys/arm/include/param.h#3 integrate
.. //depot/projects/opencrypto/sys/arm/lpc/lpc_gpio.c#2 integrate
.. //depot/projects/opencrypto/sys/arm/rockchip/rk30xx_gpio.c#3 integrate
.. //depot/projects/opencrypto/sys/arm/samsung/exynos/exynos5_pad.c#3 integrate
.. //depot/projects/opencrypto/sys/arm/ti/cpsw/if_cpsw.c#3 integrate
.. //depot/projects/opencrypto/sys/arm/ti/ti_gpio.c#4 integrate
.. //depot/projects/opencrypto/sys/arm/xilinx/zy7_gpio.c#2 integrate
.. //depot/projects/opencrypto/sys/arm/xscale/ixp425/avila_gpio.c#2 integrate
.. //depot/projects/opencrypto/sys/arm/xscale/ixp425/cambria_gpio.c#2 integrate
.. //depot/projects/opencrypto/sys/boot/fdt/dts/arm/socfpga-sockit-beri.dts#2 integrate
.. //depot/projects/opencrypto/sys/cam/ata/ata_da.c#5 integrate
.. //depot/projects/opencrypto/sys/cam/ctl/ctl.c#6 integrate
.. //depot/projects/opencrypto/sys/cam/ctl/ctl.h#4 integrate
.. //depot/projects/opencrypto/sys/cam/ctl/ctl_cmd_table.c#4 integrate
.. //depot/projects/opencrypto/sys/cam/ctl/ctl_private.h#6 integrate
.. //depot/projects/opencrypto/sys/cddl/compat/opensolaris/kern/opensolaris_lookup.c#2 integrate
.. //depot/projects/opencrypto/sys/cddl/contrib/opensolaris/uts/common/fs/gfs.c#2 integrate
.. //depot/projects/opencrypto/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ctldir.c#2 integrate
.. //depot/projects/opencrypto/sys/cddl/contrib/opensolaris/uts/common/sys/gfs.h#2 integrate
.. //depot/projects/opencrypto/sys/cddl/dev/fbt/powerpc/fbt_isa.c#3 integrate
.. //depot/projects/opencrypto/sys/compat/freebsd32/freebsd32_misc.c#4 integrate
.. //depot/projects/opencrypto/sys/compat/freebsd32/freebsd32_util.h#2 integrate
.. //depot/projects/opencrypto/sys/conf/NOTES#5 integrate
.. //depot/projects/opencrypto/sys/conf/files#10 integrate
.. //depot/projects/opencrypto/sys/conf/options#6 integrate
.. //depot/projects/opencrypto/sys/conf/options.arm#3 integrate
.. //depot/projects/opencrypto/sys/contrib/rdma/krping/krping.c#4 integrate
.. //depot/projects/opencrypto/sys/dev/acpi_support/acpi_ibm.c#3 integrate
.. //depot/projects/opencrypto/sys/dev/acpica/acpi.c#5 integrate
.. //depot/projects/opencrypto/sys/dev/acpica/acpi_hpet.c#3 integrate
.. //depot/projects/opencrypto/sys/dev/asmc/asmc.c#4 integrate
.. //depot/projects/opencrypto/sys/dev/beri/beri_mem.c#1 branch
.. //depot/projects/opencrypto/sys/dev/cxgbe/firmware/t4fw_cfg.txt#2 integrate
.. //depot/projects/opencrypto/sys/dev/cxgbe/firmware/t5fw_cfg.txt#2 integrate
.. //depot/projects/opencrypto/sys/dev/cxgbe/iw_cxgbe/cm.c#3 integrate
.. //depot/projects/opencrypto/sys/dev/cxgbe/iw_cxgbe/qp.c#3 integrate
.. //depot/projects/opencrypto/sys/dev/cxgbe/tom/t4_cpl_io.c#2 integrate
.. //depot/projects/opencrypto/sys/dev/gpio/gpiobus.c#2 integrate
.. //depot/projects/opencrypto/sys/dev/gpio/gpiobusvar.h#2 integrate
.. //depot/projects/opencrypto/sys/dev/gpio/ofw_gpiobus.c#3 integrate
.. //depot/projects/opencrypto/sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c#4 integrate
.. //depot/projects/opencrypto/sys/dev/hyperv/stordisengage/hv_ata_pci_disengage.c#2 integrate
.. //depot/projects/opencrypto/sys/dev/hyperv/storvsc/hv_storvsc_drv_freebsd.c#2 integrate
.. //depot/projects/opencrypto/sys/dev/hyperv/utilities/hv_util.c#3 integrate
.. //depot/projects/opencrypto/sys/dev/iicbus/iicbus.h#2 integrate
.. //depot/projects/opencrypto/sys/dev/iicbus/iiconf.c#2 integrate
.. //depot/projects/opencrypto/sys/dev/ixl/i40e_register_x710_int.h#2 delete
.. //depot/projects/opencrypto/sys/dev/puc/pucdata.c#2 integrate
.. //depot/projects/opencrypto/sys/dev/uart/uart_subr.c#3 integrate
.. //depot/projects/opencrypto/sys/dev/usb/net/if_smsc.c#3 integrate
.. //depot/projects/opencrypto/sys/dev/usb/usb.h#2 integrate
.. //depot/projects/opencrypto/sys/dev/usb/usbdevs#6 integrate
.. //depot/projects/opencrypto/sys/dev/usb/wlan/if_run.c#4 integrate
.. //depot/projects/opencrypto/sys/dev/usb/wlan/if_urtwn.c#4 integrate
.. //depot/projects/opencrypto/sys/dev/virtio/console/virtio_console.c#1 branch
.. //depot/projects/opencrypto/sys/dev/virtio/console/virtio_console.h#1 branch
.. //depot/projects/opencrypto/sys/dev/vt/vt_core.c#6 integrate
.. //depot/projects/opencrypto/sys/dev/xen/evtchn/evtchn_dev.c#1 branch
.. //depot/projects/opencrypto/sys/dev/xen/netback/netback.c#4 integrate
.. //depot/projects/opencrypto/sys/dev/xen/privcmd/privcmd.c#1 branch
.. //depot/projects/opencrypto/sys/fs/nfsclient/nfs_clvfsops.c#3 integrate
.. //depot/projects/opencrypto/sys/fs/nfsserver/nfs_nfsdkrpc.c#2 integrate
.. //depot/projects/opencrypto/sys/fs/tmpfs/tmpfs_vfsops.c#3 integrate
.. //depot/projects/opencrypto/sys/geom/eli/g_eli.c#3 integrate
.. //depot/projects/opencrypto/sys/geom/geom_disk.c#2 integrate
.. //depot/projects/opencrypto/sys/i386/conf/GENERIC#3 integrate
.. //depot/projects/opencrypto/sys/i386/conf/XEN#2 integrate
.. //depot/projects/opencrypto/sys/i386/i386/machdep.c#5 integrate
.. //depot/projects/opencrypto/sys/i386/i386/pmap.c#5 integrate
.. //depot/projects/opencrypto/sys/i386/i386/support.s#3 integrate
.. //depot/projects/opencrypto/sys/i386/i386/trap.c#3 integrate
.. //depot/projects/opencrypto/sys/i386/ibcs2/ibcs2_misc.c#2 integrate
.. //depot/projects/opencrypto/sys/i386/include/md_var.h#4 integrate
.. //depot/projects/opencrypto/sys/i386/include/xen/hypercall.h#2 integrate
.. //depot/projects/opencrypto/sys/kern/kern_descrip.c#5 integrate
.. //depot/projects/opencrypto/sys/kern/kern_environment.c#3 integrate
.. //depot/projects/opencrypto/sys/kern/kern_exec.c#5 integrate
.. //depot/projects/opencrypto/sys/kern/kern_ffclock.c#2 integrate
.. //depot/projects/opencrypto/sys/kern/kern_linker.c#3 integrate
.. //depot/projects/opencrypto/sys/kern/kern_loginclass.c#2 integrate
.. //depot/projects/opencrypto/sys/kern/kern_prot.c#4 integrate
.. //depot/projects/opencrypto/sys/kern/kern_resource.c#2 integrate
.. //depot/projects/opencrypto/sys/kern/kern_syscalls.c#2 integrate
.. //depot/projects/opencrypto/sys/kern/kern_sysctl.c#3 integrate
.. //depot/projects/opencrypto/sys/kern/kern_umtx.c#3 integrate
.. //depot/projects/opencrypto/sys/kern/subr_param.c#3 integrate
.. //depot/projects/opencrypto/sys/kern/subr_uio.c#3 integrate
.. //depot/projects/opencrypto/sys/kern/sys_generic.c#2 integrate
.. //depot/projects/opencrypto/sys/kern/sys_process.c#4 integrate
.. //depot/projects/opencrypto/sys/kern/sysv_msg.c#2 integrate
.. //depot/projects/opencrypto/sys/kern/sysv_sem.c#2 integrate
.. //depot/projects/opencrypto/sys/kern/sysv_shm.c#3 integrate
.. //depot/projects/opencrypto/sys/kern/uipc_mqueue.c#3 integrate
.. //depot/projects/opencrypto/sys/kern/uipc_sem.c#3 integrate
.. //depot/projects/opencrypto/sys/kern/vfs_acl.c#2 integrate
.. //depot/projects/opencrypto/sys/kern/vfs_aio.c#2 integrate
.. //depot/projects/opencrypto/sys/kern/vfs_bio.c#6 integrate
.. //depot/projects/opencrypto/sys/kern/vfs_init.c#3 integrate
.. //depot/projects/opencrypto/sys/kern/vfs_syscalls.c#3 integrate
.. //depot/projects/opencrypto/sys/kgssapi/gss_impl.c#2 integrate
.. //depot/projects/opencrypto/sys/mips/atheros/ar71xx_gpio.c#2 integrate
.. //depot/projects/opencrypto/sys/mips/cavium/octeon_gpio.c#2 integrate
.. //depot/projects/opencrypto/sys/mips/include/param.h#2 integrate
.. //depot/projects/opencrypto/sys/mips/rt305x/rt305x_gpio.c#2 integrate
.. //depot/projects/opencrypto/sys/modules/dtrace/dtraceall/dtraceall.c#2 integrate
.. //depot/projects/opencrypto/sys/modules/linux/Makefile#5 integrate
.. //depot/projects/opencrypto/sys/modules/virtio/Makefile#2 integrate
.. //depot/projects/opencrypto/sys/modules/virtio/console/Makefile#1 branch
.. //depot/projects/opencrypto/sys/modules/vmm/Makefile#4 integrate
.. //depot/projects/opencrypto/sys/net/bpf.c#2 integrate
.. //depot/projects/opencrypto/sys/net/if.c#4 integrate
.. //depot/projects/opencrypto/sys/net/if_gif.c#3 integrate
.. //depot/projects/opencrypto/sys/net/if_spppsubr.c#3 integrate
.. //depot/projects/opencrypto/sys/net/radix.c#3 integrate
.. //depot/projects/opencrypto/sys/netinet/cc/cc.c#3 integrate
.. //depot/projects/opencrypto/sys/netinet/in_gif.c#5 integrate
.. //depot/projects/opencrypto/sys/netinet/sctp_output.c#6 integrate
.. //depot/projects/opencrypto/sys/netinet/sctp_syscalls.c#2 integrate
.. //depot/projects/opencrypto/sys/netinet/sctp_sysctl.c#4 integrate
.. //depot/projects/opencrypto/sys/netinet/siftr.c#2 integrate
.. //depot/projects/opencrypto/sys/netinet6/in6.c#4 integrate
.. //depot/projects/opencrypto/sys/netinet6/in6_gif.c#5 integrate
.. //depot/projects/opencrypto/sys/netinet6/in6_var.h#4 integrate
.. //depot/projects/opencrypto/sys/netipsec/key.c#2 integrate
.. //depot/projects/opencrypto/sys/netipsec/key.h#2 integrate
.. //depot/projects/opencrypto/sys/netpfil/ipfw/ip_dn_io.c#3 integrate
.. //depot/projects/opencrypto/sys/netpfil/ipfw/ip_fw_dynamic.c#3 integrate
.. //depot/projects/opencrypto/sys/netpfil/ipfw/ip_fw_private.h#4 integrate
.. //depot/projects/opencrypto/sys/netpfil/ipfw/ip_fw_sockopt.c#5 integrate
.. //depot/projects/opencrypto/sys/netpfil/ipfw/ip_fw_table_algo.c#2 integrate
.. //depot/projects/opencrypto/sys/nfs/nfs_nfssvc.c#2 integrate
.. //depot/projects/opencrypto/sys/nlm/nlm_prot_impl.c#2 integrate
.. //depot/projects/opencrypto/sys/ofed/drivers/net/mlx4/en_netdev.c#5 integrate
.. //depot/projects/opencrypto/sys/pc98/conf/GENERIC#3 integrate
.. //depot/projects/opencrypto/sys/powerpc/conf/GENERIC#3 integrate
.. //depot/projects/opencrypto/sys/powerpc/conf/GENERIC64#2 integrate
.. //depot/projects/opencrypto/sys/powerpc/powerpc/busdma_machdep.c#2 integrate
.. //depot/projects/opencrypto/sys/powerpc/powerpc/copyinout.c#2 integrate
.. //depot/projects/opencrypto/sys/powerpc/wii/wii_gpio.c#2 integrate
.. //depot/projects/opencrypto/sys/sparc64/conf/GENERIC#2 integrate
.. //depot/projects/opencrypto/sys/sparc64/include/param.h#2 integrate
.. //depot/projects/opencrypto/sys/sparc64/sparc64/mem.c#2 integrate
.. //depot/projects/opencrypto/sys/sys/_umtx.h#2 integrate
.. //depot/projects/opencrypto/sys/sys/ata.h#3 integrate
.. //depot/projects/opencrypto/sys/sys/consio.h#2 integrate
.. //depot/projects/opencrypto/sys/sys/filedesc.h#3 integrate
.. //depot/projects/opencrypto/sys/sys/mbuf.h#4 integrate
.. //depot/projects/opencrypto/sys/sys/param.h#5 integrate
.. //depot/projects/opencrypto/sys/sys/syscallsubr.h#5 integrate
.. //depot/projects/opencrypto/sys/sys/sysctl.h#3 integrate
.. //depot/projects/opencrypto/sys/sys/sysent.h#2 integrate
.. //depot/projects/opencrypto/sys/sys/systm.h#5 integrate
.. //depot/projects/opencrypto/sys/sys/umtx.h#2 integrate
.. //depot/projects/opencrypto/sys/x86/include/vmware.h#1 branch
.. //depot/projects/opencrypto/sys/x86/isa/orm.c#2 integrate
.. //depot/projects/opencrypto/sys/x86/x86/identcpu.c#3 integrate
.. //depot/projects/opencrypto/sys/x86/x86/tsc.c#4 integrate
.. //depot/projects/opencrypto/sys/x86/xen/hvm.c#2 integrate
.. //depot/projects/opencrypto/sys/x86/xen/pv.c#4 integrate
.. //depot/projects/opencrypto/sys/x86/xen/xen_intr.c#4 integrate
.. //depot/projects/opencrypto/sys/xen/error.h#1 branch
.. //depot/projects/opencrypto/sys/xen/evtchn/evtchn_dev.c#2 delete
.. //depot/projects/opencrypto/sys/xen/interface/memory.h#2 integrate
.. //depot/projects/opencrypto/sys/xen/interface/xen.h#2 integrate
.. //depot/projects/opencrypto/sys/xen/privcmd.h#1 branch
.. //depot/projects/opencrypto/sys/xen/xen_intr.h#4 integrate

Differences ...

==== //depot/projects/opencrypto/share/man/man3/pthread_cleanup_pop.3#2 (text+ko) ====

@@ -25,9 +25,9 @@
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
-.\" $FreeBSD: head/share/man/man3/pthread_cleanup_pop.3 172880 2007-10-22 10:08:01Z ru $
+.\" $FreeBSD: head/share/man/man3/pthread_cleanup_pop.3 273738 2014-10-27 15:45:37Z jhb $
 .\"
-.Dd July 30, 1998
+.Dd October 25, 2014
 .Dt PTHREAD_CLEANUP_POP 3
 .Os
 .Sh NAME
@@ -50,6 +50,14 @@
 then
 .Fn pthread_cleanup_pop
 does nothing.
+.Pp
+The
+.Fn pthread_cleanup_pop
+function is implemented as a macro that closes a block.
+Invocations of this function must appear as standalone statements that are
+paired with an earlier call of
+.Xr pthread_cleanup_push 3
+in the same lexical scope.
 .Sh RETURN VALUES
 The
 .Fn pthread_cleanup_pop

==== //depot/projects/opencrypto/share/man/man3/pthread_cleanup_push.3#2 (text+ko) ====

@@ -25,9 +25,9 @@
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
-.\" $FreeBSD: head/share/man/man3/pthread_cleanup_push.3 172880 2007-10-22 10:08:01Z ru $
+.\" $FreeBSD: head/share/man/man3/pthread_cleanup_push.3 273644 2014-10-25 19:31:34Z jhb $
 .\"
-.Dd July 30, 1998
+.Dd October 25, 2014
 .Dt PTHREAD_CLEANUP_PUSH 3
 .Os
 .Sh NAME
@@ -52,6 +52,14 @@
 is called, it is passed
 .Fa arg
 as its only argument.
+.Pp
+The
+.Fn pthread_cleanup_push
+function is implemented as a macro that opens a new block.
+Invocations of this function must appear as standalone statements that are
+paired with a later call of
+.Xr pthread_cleanup_pop 3
+in the same lexical scope.
 .Sh RETURN VALUES
 The
 .Fn pthread_cleanup_push

==== //depot/projects/opencrypto/share/man/man4/Makefile#5 (text+ko) ====

@@ -1,5 +1,5 @@
 #	@(#)Makefile	8.1 (Berkeley) 6/18/93
-# $FreeBSD: head/share/man/man4/Makefile 273331 2014-10-20 14:42:42Z bryanv $
+# $FreeBSD: head/share/man/man4/Makefile 273515 2014-10-23 04:47:32Z bryanv $
 
 .include <src.opts.mk>
 
@@ -563,6 +563,7 @@
 	${_virtio.4} \
 	${_virtio_balloon.4} \
 	${_virtio_blk.4} \
+	${_virtio_console.4} \
 	${_virtio_random.4} \
 	${_virtio_scsi.4} \
 	vkbd.4 \
@@ -814,6 +815,7 @@
 _virtio.4=	virtio.4
 _virtio_balloon.4=virtio_balloon.4
 _virtio_blk.4=	virtio_blk.4
+_virtio_console.4=virtio_console.4
 _virtio_random.4= virtio_random.4
 _virtio_scsi.4= virtio_scsi.4
 _vmx.4=		vmx.4

==== //depot/projects/opencrypto/share/man/man4/ada.4#3 (text+ko) ====

@@ -23,9 +23,9 @@
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
-.\" $FreeBSD: head/share/man/man4/ada.4 271926 2014-09-21 10:05:27Z mav $
+.\" $FreeBSD: head/share/man/man4/ada.4 273457 2014-10-22 08:54:10Z mav $
 .\"
-.Dd September 21, 2014
+.Dd October 22, 2014
 .Dt ADA 4
 .Os
 .Sh NAME
@@ -123,6 +123,13 @@
 This variable determines whether to spin-down disks when shutting down.
 Set to 1 to enable spin-down, 0 to disable.
 The default is currently enabled.
+.It Va kern.cam.sort_io_queue
+.It Va kern.cam.ada. Ns Ar X Ns Va .sort_io_queue
+.Pp
+These variables determine whether request queue should be sorted trying
+to optimize head seeks.
+Set to 1 to enable sorting, 0 to disable, -1 to leave it as-is.
+The default is sorting enabled for HDDs and disabled SSDs.
 .It Va kern.cam.ada.read_ahead
 .It Va kern.cam.ada. Ns Ar X Ns Va .read_ahead
 .It Va kern.cam.ada.write_cache

==== //depot/projects/opencrypto/share/man/man4/ctl.4#2 (text+ko) ====

@@ -22,8 +22,8 @@
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
-.\" $FreeBSD: head/share/man/man4/ctl.4 267938 2014-06-26 21:46:14Z bapt $
-.Dd April 2, 2013
+.\" $FreeBSD: head/share/man/man4/ctl.4 273690 2014-10-26 13:30:53Z trasz $
+.Dd October 23, 2014
 .Dt CTL 4
 .Os
 .Sh NAME
@@ -57,7 +57,7 @@
 .It
 SCSI task attribute support (ordered, head of queue, simple tags)
 .It
-SCSI implicit command ordering support.
+SCSI implicit command ordering support
 .It
 Full task management support (abort, LUN reset, target reset, etc.)
 .It
@@ -67,6 +67,12 @@
 .It
 Support for multiple simultaneous backing stores
 .It
+Support for VMWare VAAI: COMPARE AND WRITE, XCOPY, WRITE SAME,
+and UNMAP commands
+.It
+Support for Microsoft ODX: POPULATE TOKEN/WRITE USING TOKEN,
+WRITE SAME, and UNMAP commands
+.It
 Persistent reservation support
 .It
 Mode sense/select support

==== //depot/projects/opencrypto/share/man/man4/da.4#2 (text+ko) ====

@@ -23,9 +23,9 @@
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
-.\" $FreeBSD: head/share/man/man4/da.4 231244 2012-02-09 04:37:30Z gjb $
+.\" $FreeBSD: head/share/man/man4/da.4 273457 2014-10-22 08:54:10Z mav $
 .\"
-.Dd February 8, 2012
+.Dd October 22, 2014
 .Dt DA 4
 .Os
 .Sh NAME
@@ -150,6 +150,13 @@
 driver will wait before timing out an outstanding command.
 The units for this value are seconds, and the default is currently 60
 seconds.
+.It Va kern.cam.sort_io_queue
+.It Va kern.cam.da. Ns Ar X Ns Va .sort_io_queue
+.Pp
+These variables determine whether request queue should be sorted trying
+to optimize head seeks.
+Set to 1 to enable sorting, 0 to disable, -1 to leave it as-is.
+The default is sorting enabled for HDDs and disabled for SSDs.
 .It kern.cam.da.%d.minimum_cmd_size
 .Pp
 This variable determines what the minimum READ/WRITE CDB size is for a

==== //depot/projects/opencrypto/share/man/man4/urtwn.4#4 (text+ko) ====

@@ -12,9 +12,9 @@
 .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 .\"
-.\" $FreeBSD: head/share/man/man4/urtwn.4 272410 2014-10-02 12:27:41Z hselasky $
+.\" $FreeBSD: head/share/man/man4/urtwn.4 273589 2014-10-24 15:36:30Z kevlo $
 .\"
-.Dd May 3, 2014
+.Dd October 24, 2014
 .Dt URTWN 4
 .Os
 .Sh NAME
@@ -89,9 +89,11 @@
 .It Alfa AWUS036NHR v2
 .It ASUS USB-N10 NANO
 .It Belkin F7D1102 Surf Wireless Micro
+.It D-Link DWA-123 rev D1
 .It D-Link DWA-125 rev D1
 .It D-Link DWA-131
 .It Edimax EW-7811Un
+.It Elecom WDC-150SU2M
 .It Netgear WNA1000M
 .It Realtek RTL8192CU
 .It Realtek RTL8188CUS

==== //depot/projects/opencrypto/share/man/man4/virtio.4#2 (text+ko) ====

@@ -22,7 +22,7 @@
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
-.\" $FreeBSD: head/share/man/man4/virtio.4 267938 2014-06-26 21:46:14Z bapt $
+.\" $FreeBSD: head/share/man/man4/virtio.4 273515 2014-10-23 04:47:32Z bryanv $
 .\"
 .Dd January 22, 2012
 .Dt VIRTIO 4
@@ -85,6 +85,7 @@
 .Sh SEE ALSO
 .Xr virtio_balloon 4 ,
 .Xr virtio_blk 4 ,
+.Xr virtio_console 4 ,
 .Xr virtio_scsi 4 ,
 .Xr vtnet 4
 .Sh HISTORY

==== //depot/projects/opencrypto/share/man/man5/src.conf.5#5 (text) ====

@@ -1,7 +1,7 @@
 .\" DO NOT EDIT-- this file is automatically generated.
 .\" from FreeBSD: head/tools/build/options/makeman 255964 2013-10-01 07:22:04Z des
-.\" $FreeBSD: head/share/man/man5/src.conf.5 273173 2014-10-16 15:59:00Z brooks $
-.Dd October 16, 2014
+.\" $FreeBSD: head/share/man/man5/src.conf.5 273420 2014-10-21 20:41:19Z emaste $
+.Dd October 21, 2014
 .Dt SRC.CONF 5
 .Os
 .Sh NAME
@@ -211,10 +211,10 @@
 It is a default setting on
 amd64/amd64, arm/arm, arm/armv6, arm/armv6hf, i386/i386, pc98/i386, powerpc/powerpc and powerpc/powerpc64.
 .It Va WITHOUT_CLANG_BOOTSTRAP
-.\" from FreeBSD: head/tools/build/options/WITHOUT_CLANG_BOOTSTRAP 264660 2014-04-18 17:03:58Z imp
+.\" from FreeBSD: head/tools/build/options/WITHOUT_CLANG_BOOTSTRAP 273177 2014-10-16 18:28:11Z skreuzer
 Set to not build the Clang C/C++ compiler during the bootstrap phase of the build.
-You must enable wither gcc or clang bootstrap to be able to build the system,
-unless an alternative compiiler is provided via
+You must enable either gcc or clang bootstrap to be able to build the system,
+unless an alternative compiler is provided via
 XCC.
 .Pp
 It is a default setting on
@@ -404,6 +404,12 @@
 .\" from FreeBSD: head/tools/build/options/WITHOUT_FMTREE 261299 2014-01-30 21:37:43Z brooks
 Set to not build and install
 .Pa /usr/sbin/fmtree .
+.It Va WITHOUT_FORMAT_EXTENSIONS
+.\" from FreeBSD: head/tools/build/options/WITHOUT_FORMAT_EXTENSIONS 250658 2013-05-15 13:04:10Z brooks
+Set to not enable
+.Fl fformat-extensions
+when compiling the kernel.
+Also disables all format checking.
 .It Va WITHOUT_FORTH
 .\" from FreeBSD: head/tools/build/options/WITHOUT_FORTH 156932 2006-03-21 07:50:50Z ru
 Set to build bootloaders without Forth support.
@@ -432,10 +438,10 @@
 It is a default setting on
 arm/armeb, mips/mipsel, mips/mips, mips/mips64el, mips/mips64, mips/mipsn32, powerpc/powerpc, powerpc/powerpc64 and sparc64/sparc64.
 .It Va WITHOUT_GCC_BOOTSTRAP
-.\" from FreeBSD: head/tools/build/options/WITHOUT_GCC_BOOTSTRAP 264660 2014-04-18 17:03:58Z imp
+.\" from FreeBSD: head/tools/build/options/WITHOUT_GCC_BOOTSTRAP 273177 2014-10-16 18:28:11Z skreuzer
 Set to not build gcc and g++ as part of the bootstrap process.
-You must enable wither gcc or clang bootstrap to be able to build the system,
-unless an alternative compiiler is provided via
+You must enable either gcc or clang bootstrap to be able to build the system,
+unless an alternative compiler is provided via
 XCC.
 .Pp
 It is a default setting on
@@ -613,6 +619,12 @@
 .Xr sshd 8 ,
 and
 .Xr telnetd 8 .
+.It Va WITHOUT_KERNEL_SYMBOLS
+.\" from FreeBSD: head/tools/build/options/WITHOUT_KERNEL_SYMBOLS 222189 2011-05-22 18:23:17Z imp
+Set to not install kernel symbol files.
+.Bf -symbolic
+This option is recommended for those people who have small root partitions.
+.Ef
 .It Va WITHOUT_KVM
 .\" from FreeBSD: head/tools/build/options/WITHOUT_KVM 174550 2007-12-12 16:43:17Z ru
 Set to not build the
@@ -1077,9 +1089,6 @@
 .It Va WITHOUT_USB
 .\" from FreeBSD: head/tools/build/options/WITHOUT_USB 156932 2006-03-21 07:50:50Z ru
 Set to not build USB-related programs and libraries.
-.It Va WITH_USB_GADGET_EXAMPLES
-.\" from FreeBSD: head/tools/build/options/WITH_USB_GADGET_EXAMPLES 254919 2013-08-26 17:15:56Z antoine
-Set to build USB gadget kernel modules.
 .It Va WITHOUT_UTMPX
 .\" from FreeBSD: head/tools/build/options/WITHOUT_UTMPX 231530 2012-02-11 20:28:42Z ed
 Set to not build user accounting tools such as

==== //depot/projects/opencrypto/share/man/man8/Makefile#3 (text+ko) ====

@@ -1,9 +1,8 @@
 #	@(#)Makefile	8.1 (Berkeley) 6/5/93
-# $FreeBSD: head/share/man/man8/Makefile 273235 2014-10-17 18:16:40Z emaste $
+# $FreeBSD: head/share/man/man8/Makefile 273747 2014-10-27 21:29:42Z delphij $
 
 MAN=	crash.8 \
 	diskless.8 \
-	hv_kvp_daemon.8 \
 	intro.8 \
 	nanobsd.8 \
 	picobsd.8 \

==== //depot/projects/opencrypto/share/man/man9/Makefile#5 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: head/share/man/man9/Makefile 273377 2014-10-21 07:31:21Z hselasky $
+# $FreeBSD: head/share/man/man9/Makefile 273788 2014-10-28 16:19:02Z jkim $
 
 MAN=	accept_filter.9 \
 	accf_data.9 \
@@ -46,6 +46,7 @@
 	BUS_SETUP_INTR.9 \
 	bus_space.9 \
 	byteorder.9 \
+	casuword.9 \
 	cd.9 \
 	condvar.9 \
 	config_intrhook.9 \
@@ -581,6 +582,9 @@
 MLINKS+=config_intrhook.9 config_intrhook_disestablish.9 \
 	config_intrhook.9 config_intrhook_establish.9
 MLINKS+=contigmalloc.9 contigfree.9
+MLINKS+=casuword.9 casueword.9 \
+	casuword.9 casueword32.9 \
+	casuword.9 casuword32.9
 MLINKS+=copy.9 copyin.9 \
 	copy.9 copyin_nofault.9 \
 	copy.9 copyinstr.9 \
@@ -688,7 +692,10 @@
 	fetch.9 fuword.9 \
 	fetch.9 fuword16.9 \
 	fetch.9 fuword32.9 \
-	fetch.9 fuword64.9
+	fetch.9 fuword64.9 \
+	fetch.9 fueword.9 \
+	fetch.9 fueword32.9 \
+	fetch.9 fueword64.9
 MLINKS+=firmware.9 firmware_get.9 \
 	firmware.9 firmware_put.9 \
 	firmware.9 firmware_register.9 \

==== //depot/projects/opencrypto/share/man/man9/fetch.9#2 (text+ko) ====

@@ -32,9 +32,9 @@
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
-.\" $FreeBSD: head/share/man/man9/fetch.9 197780 2009-10-05 15:16:28Z trasz $
+.\" $FreeBSD: head/share/man/man9/fetch.9 273783 2014-10-28 15:22:13Z kib $
 .\"
-.Dd October 5, 2009
+.Dd October 21, 2014
 .Dt FETCH 9
 .Os
 .Sh NAME
@@ -44,11 +44,13 @@
 .Nm fuword ,
 .Nm fuword16 ,
 .Nm fuword32 ,
-.Nm fuword64
+.Nm fuword64 ,
+.Nm fueword ,
+.Nm fueword32 ,
+.Nm fueword64
 .Nd fetch data from user-space
 .Sh SYNOPSIS
 .In sys/types.h
-.In sys/time.h
 .In sys/systm.h
 .Ft int
 .Fn fubyte "const void *base"
@@ -60,27 +62,38 @@
 .Fn fuword32 "const void *base"
 .Ft int64_t
 .Fn fuword64 "const void *base"
+.Ft long
+.Fn fueword "const void *base" "long *val"
+.Ft int32_t
+.Fn fueword32 "const void *base" "int32_t *val"
+.Ft int64_t
+.Fn fueword64 "const void *base" "int64_t *val"
 .In sys/resourcevar.h
 .Ft int
 .Fn fuswintr "void *base"
 .Sh DESCRIPTION
 The
 .Nm
-functions are designed to copy small amounts of data from user-space.
+functions are designed to copy small amounts of data from user-space
+of the current process.
+If read is successful, it is performed atomically.
+The data read must be naturally aligned.
 .Pp
 The
 .Nm
 routines provide the following functionality:
-.Bl -tag -width "fuswintr()"
+.Bl -tag -width "fueword32()"
 .It Fn fubyte
 Fetches a byte of data from the user-space address
 .Pa base .
+The byte read is zero-extended into the results variable.
 .It Fn fuword
-Fetches a word of data from the user-space address
+Fetches a word of data (long) from the user-space address
 .Pa base .
 .It Fn fuword16
 Fetches 16 bits of data from the user-space address
 .Pa base .
+The half-word read is zero-extended into the results variable.
 .It Fn fuword32
 Fetches 32 bits of data from the user-space address
 .Pa base .
@@ -91,11 +104,46 @@
 Fetches a short word of data from the user-space address
 .Pa base .
 This function is safe to call during an interrupt context.
+.It Fn fueword
+Fetches a word of data (long) from the user-space address
+.Pa base
+and stores the result in the variable pointed by
+.Pa val .
+.It Fn fueword32
+Fetches 32 bits of data from the user-space address
+.Pa base
+and stores the result in the variable pointed by
+.Pa val .
+.It Fn fueword64
+Fetches 64 bits of data from the user-space address
+.Pa base
+and stores the result in the variable pointed by
+.Pa val .
 .El
+.Pp
+The callers of
+.Fn fuword ,
+.Fn fuword32
+and
+.Fn fuword64
+functions cannot distinguish between -1 read from
+userspace and function failure.
 .Sh RETURN VALUES
 The
-.Nm
+.Fn fubyte ,
+.Fn fuword ,
+.Fn fuword16 ,
+.Fn fuword32 ,
+.Fn fuword64 ,
+and
+.Fn fuswintr
 functions return the data fetched or -1 on failure.
+The
+.Fn fueword ,
+.Fn fueword32
+and
+.Fn fueword64
+functions return 0 on success and -1 on failure.
 .Sh SEE ALSO
 .Xr copy 9 ,
 .Xr store 9

==== //depot/projects/opencrypto/share/man/man9/fpu_kern.9#2 (text+ko) ====

@@ -21,9 +21,9 @@
 .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 .\"
-.\" $FreeBSD: head/share/man/man9/fpu_kern.9 267785 2014-06-23 12:43:30Z brueffer $
+.\" $FreeBSD: head/share/man/man9/fpu_kern.9 273550 2014-10-23 17:24:50Z jmg $
 .\"
-.Dd June 23, 2014
+.Dd October 23, 2014
 .Dt FPU_KERN 9
 .Os
 .Sh NAME
@@ -157,12 +157,17 @@
 .Pp
 The
 .Fn fpu_kern_thread
-function provides an optimization for threads which never leave to
+function enables an optimization for threads which never leave to
 the usermode.
-Such thread can reuse the usermode save area for the FPU state,
-which is allowed by the function call.
-There is no flags defined for the function, and no error states
+The current thread will reuse the usermode save area for the kernel FPU state
+instead of requiring an explicitly allocated context.
+There are no flags defined for the function, and no error states
 that the function returns.
+Once this function has been called, neither
+.Fn fpu_kern_enter
+nor
+.Fn fpu_kern_leave
+is required to be called and the fpu is available for use in the calling thread.
 .Pp
 The
 .Fn is_fpu_kern_thread

==== //depot/projects/opencrypto/share/man/man9/mbuf.9#3 (text+ko) ====

@@ -22,7 +22,7 @@
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
-.\" $FreeBSD: head/share/man/man9/mbuf.9 273388 2014-10-21 17:17:40Z jmg $
+.\" $FreeBSD: head/share/man/man9/mbuf.9 273392 2014-10-21 17:59:27Z jmg $
 .\"
 .Dd October 21, 2014
 .Dt MBUF 9
@@ -355,7 +355,7 @@
 Convert an
 .Fa mbuf
 pointer to a data pointer.
-The macro expands to the data pointer cast to the pointer of the specified
+The macro expands to the data pointer cast to the specified
 .Fa type .
 .Sy Note :
 It is advisable to ensure that there is enough contiguous data in

==== //depot/projects/opencrypto/sys/amd64/amd64/pmap.c#6 (text+ko) ====

@@ -79,7 +79,7 @@
 #define	AMD64_NPT_AWARE
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: head/sys/amd64/amd64/pmap.c 273356 2014-10-21 01:06:58Z neel $");
+__FBSDID("$FreeBSD: head/sys/amd64/amd64/pmap.c 273701 2014-10-26 17:56:47Z alc $");
 
 /*
  *	Manages physical address maps.
@@ -115,6 +115,7 @@
 #include <sys/proc.h>
 #include <sys/rwlock.h>
 #include <sys/sx.h>
+#include <sys/vmem.h>
 #include <sys/vmmeter.h>
 #include <sys/sched.h>
 #include <sys/sysctl.h>
@@ -130,6 +131,7 @@
 #include <vm/vm_extern.h>
 #include <vm/vm_pageout.h>
 #include <vm/vm_pager.h>
+#include <vm/vm_phys.h>
 #include <vm/vm_radix.h>
 #include <vm/vm_reserv.h>
 #include <vm/uma.h>
@@ -402,11 +404,6 @@
     CTLFLAG_MPSAFE, NULL, 0, pmap_pcid_save_cnt_proc, "QU",
     "Count of saved TLB context on switch");
 
-/* pmap_copy_pages() over non-DMAP */
-static struct mtx cpage_lock;
-static vm_offset_t cpage_a;
-static vm_offset_t cpage_b;
-
 /*
  * Crashdump maps.
  */
@@ -1060,8 +1057,7 @@
 	/*
 	 * Calculate the size of the pv head table for superpages.
 	 */
-	for (i = 0; phys_avail[i + 1]; i += 2);
-	pv_npg = round_2mpage(phys_avail[(i - 2) + 1]) / NBPDR;
+	pv_npg = howmany(vm_phys_segs[vm_phys_nsegs - 1].end, NBPDR);
 
 	/*
 	 * Allocate memory for the pv head table for superpages.
@@ -1072,10 +1068,6 @@
 	    M_WAITOK | M_ZERO);
 	for (i = 0; i < pv_npg; i++)
 		TAILQ_INIT(&pv_table[i].pv_list);
-
-	mtx_init(&cpage_lock, "cpage", NULL, MTX_DEF);
-	cpage_a = kva_alloc(PAGE_SIZE);
-	cpage_b = kva_alloc(PAGE_SIZE);
 }
 
 static SYSCTL_NODE(_vm_pmap, OID_AUTO, pde, CTLFLAG_RD, 0,
@@ -5056,66 +5048,24 @@
     vm_offset_t b_offset, int xfersize)
 {
 	void *a_cp, *b_cp;
-	vm_page_t m_a, m_b;
-	vm_paddr_t p_a, p_b;
-	pt_entry_t *pte;
-	vm_offset_t a_pg_offset, b_pg_offset;
+	vm_page_t pages[2];
+	vm_offset_t vaddr[2], a_pg_offset, b_pg_offset;
 	int cnt;
-	boolean_t pinned;
+	boolean_t mapped;
 
-	/*
-	 * NB:  The sequence of updating a page table followed by accesses
-	 * to the corresponding pages used in the !DMAP case is subject to
-	 * the situation described in the "AMD64 Architecture Programmer's
-	 * Manual Volume 2: System Programming" rev. 3.23, "7.3.1 Special
-	 * Coherency Considerations".  Therefore, issuing the INVLPG right
-	 * after modifying the PTE bits is crucial.
-	 */
-	pinned = FALSE;
 	while (xfersize > 0) {
 		a_pg_offset = a_offset & PAGE_MASK;
-		m_a = ma[a_offset >> PAGE_SHIFT];
-		p_a = m_a->phys_addr;
+		pages[0] = ma[a_offset >> PAGE_SHIFT];
 		b_pg_offset = b_offset & PAGE_MASK;
-		m_b = mb[b_offset >> PAGE_SHIFT];
-		p_b = m_b->phys_addr;
+		pages[1] = mb[b_offset >> PAGE_SHIFT];
 		cnt = min(xfersize, PAGE_SIZE - a_pg_offset);
 		cnt = min(cnt, PAGE_SIZE - b_pg_offset);
-		if (__predict_false(p_a < DMAP_MIN_ADDRESS ||
-		    p_a > DMAP_MIN_ADDRESS + dmaplimit)) {
-			mtx_lock(&cpage_lock);
-			sched_pin();
-			pinned = TRUE;
-			pte = vtopte(cpage_a);
-			*pte = p_a | X86_PG_A | X86_PG_V |
-			    pmap_cache_bits(kernel_pmap, m_a->md.pat_mode, 0);
-			invlpg(cpage_a);
-			a_cp = (char *)cpage_a + a_pg_offset;
-		} else {
-			a_cp = (char *)PHYS_TO_DMAP(p_a) + a_pg_offset;
-		}
-		if (__predict_false(p_b < DMAP_MIN_ADDRESS ||
-		    p_b > DMAP_MIN_ADDRESS + dmaplimit)) {
-			if (!pinned) {
-				mtx_lock(&cpage_lock);
-				sched_pin();
-				pinned = TRUE;
-			}
-			pte = vtopte(cpage_b);
-			*pte = p_b | X86_PG_A | X86_PG_M | X86_PG_RW |
-			    X86_PG_V | pmap_cache_bits(kernel_pmap,
-			    m_b->md.pat_mode, 0);
-			invlpg(cpage_b);
-			b_cp = (char *)cpage_b + b_pg_offset;
-		} else {
-			b_cp = (char *)PHYS_TO_DMAP(p_b) + b_pg_offset;
-		}
+		mapped = pmap_map_io_transient(pages, vaddr, 2, FALSE);
+		a_cp = (char *)vaddr[0] + a_pg_offset;
+		b_cp = (char *)vaddr[1] + b_pg_offset;
 		bcopy(a_cp, b_cp, cnt);
-		if (__predict_false(pinned)) {
-			sched_unpin();
-			mtx_unlock(&cpage_lock);
-			pinned = FALSE;
-		}
+		if (__predict_false(mapped))
+			pmap_unmap_io_transient(pages, vaddr, 2, FALSE);
 		a_offset += cnt;
 		b_offset += cnt;
 		xfersize -= cnt;
@@ -6901,6 +6851,107 @@
 	*num = idx;
 }
 
+/**
+ * Get the kernel virtual address of a set of physical pages. If there are
+ * physical addresses not covered by the DMAP perform a transient mapping
+ * that will be removed when calling pmap_unmap_io_transient.
+ *
+ * \param page        The pages the caller wishes to obtain the virtual
+ *                    address on the kernel memory map.
+ * \param vaddr       On return contains the kernel virtual memory address
+ *                    of the pages passed in the page parameter.
+ * \param count       Number of pages passed in.
+ * \param can_fault   TRUE if the thread using the mapped pages can take
+ *                    page faults, FALSE otherwise.
+ *
+ * \returns TRUE if the caller must call pmap_unmap_io_transient when
+ *          finished or FALSE otherwise.
+ *
+ */
+boolean_t
+pmap_map_io_transient(vm_page_t page[], vm_offset_t vaddr[], int count,
+    boolean_t can_fault)
+{
+	vm_paddr_t paddr;
+	boolean_t needs_mapping;
+	pt_entry_t *pte;
+	int cache_bits, error, i;
+
+	/*
+	 * Allocate any KVA space that we need, this is done in a separate
+	 * loop to prevent calling vmem_alloc while pinned.
+	 */
+	needs_mapping = FALSE;
+	for (i = 0; i < count; i++) {
+		paddr = VM_PAGE_TO_PHYS(page[i]);
+		if (__predict_false(paddr >= dmaplimit)) {
+			error = vmem_alloc(kernel_arena, PAGE_SIZE,
+			    M_BESTFIT | M_WAITOK, &vaddr[i]);
+			KASSERT(error == 0, ("vmem_alloc failed: %d", error));
+			needs_mapping = TRUE;
+		} else {
+			vaddr[i] = PHYS_TO_DMAP(paddr);
+		}
+	}
+
+	/* Exit early if everything is covered by the DMAP */
+	if (!needs_mapping)
+		return (FALSE);
+
+	/*
+	 * NB:  The sequence of updating a page table followed by accesses
+	 * to the corresponding pages used in the !DMAP case is subject to
+	 * the situation described in the "AMD64 Architecture Programmer's
+	 * Manual Volume 2: System Programming" rev. 3.23, "7.3.1 Special
+	 * Coherency Considerations".  Therefore, issuing the INVLPG right
+	 * after modifying the PTE bits is crucial.
+	 */
+	if (!can_fault)
+		sched_pin();
+	for (i = 0; i < count; i++) {
+		paddr = VM_PAGE_TO_PHYS(page[i]);
+		if (paddr >= dmaplimit) {
+			if (can_fault) {
+				/*
+				 * Slow path, since we can get page faults
+				 * while mappings are active don't pin the
+				 * thread to the CPU and instead add a global
+				 * mapping visible to all CPUs.
+				 */
+				pmap_qenter(vaddr[i], &page[i], 1);
+			} else {
+				pte = vtopte(vaddr[i]);
+				cache_bits = pmap_cache_bits(kernel_pmap,
+				    page[i]->md.pat_mode, 0);
+				pte_store(pte, paddr | X86_PG_RW | X86_PG_V |
+				    cache_bits);
+				invlpg(vaddr[i]);
+			}
+		}
+	}
+
+	return (needs_mapping);
+}
+
+void
+pmap_unmap_io_transient(vm_page_t page[], vm_offset_t vaddr[], int count,
+    boolean_t can_fault)
+{
+	vm_paddr_t paddr;
+	int i;
+
+	if (!can_fault)
+		sched_unpin();
+	for (i = 0; i < count; i++) {
+		paddr = VM_PAGE_TO_PHYS(page[i]);
+		if (paddr >= dmaplimit) {

>>> TRUNCATED FOR MAIL (1000 lines) <<<



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201410312255.s9VMt5XI067922>