PERFORCE change 1202335 for review
John-Mark Gurney
jmg at FreeBSD.org
Fri Oct 31 22:55:07 UTC 2014
http://p4web.freebsd.org/@@1202335?ac=10
Change 1202335 by jmg at 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) <<<
More information about the p4-projects
mailing list