svn commit: r294096 - in projects/clang380-import: cddl/contrib/opensolaris/tools/ctf/cvt crypto/openssh etc etc/rc.d lib/clang lib/libc++ lib/libc/stdlib lib/libc/string lib/libc/sys lib/libdpv li...

Dimitry Andric dim at FreeBSD.org
Fri Jan 15 17:55:06 UTC 2016


Author: dim
Date: Fri Jan 15 17:55:00 2016
New Revision: 294096
URL: https://svnweb.freebsd.org/changeset/base/294096

Log:
  Merge ^/head r293850 through r294089.

Added:
  projects/clang380-import/sys/boot/efi/boot1/boot_module.h
     - copied unchanged from r294089, head/sys/boot/efi/boot1/boot_module.h
  projects/clang380-import/sys/boot/efi/boot1/ufs_module.c
     - copied unchanged from r294089, head/sys/boot/efi/boot1/ufs_module.c
  projects/clang380-import/sys/boot/efi/boot1/zfs_module.c
     - copied unchanged from r294089, head/sys/boot/efi/boot1/zfs_module.c
  projects/clang380-import/sys/dev/hyperv/vmbus/hv_et.c
     - copied unchanged from r294089, head/sys/dev/hyperv/vmbus/hv_et.c
  projects/clang380-import/sys/dev/sfxge/common/efx_lic.c
     - copied unchanged from r294089, head/sys/dev/sfxge/common/efx_lic.c
  projects/clang380-import/usr.sbin/kldxref/ef_aarch64.c
     - copied unchanged from r294089, head/usr.sbin/kldxref/ef_aarch64.c
Modified:
  projects/clang380-import/cddl/contrib/opensolaris/tools/ctf/cvt/merge.c
  projects/clang380-import/crypto/openssh/readconf.c
  projects/clang380-import/etc/Makefile
  projects/clang380-import/etc/rc.d/mountcritlocal
  projects/clang380-import/lib/clang/clang.lib.mk
  projects/clang380-import/lib/libc++/Makefile
  projects/clang380-import/lib/libc/stdlib/tdelete.c
  projects/clang380-import/lib/libc/string/wcslcat.c
  projects/clang380-import/lib/libc/string/wcsncat.c
  projects/clang380-import/lib/libc/sys/stat.2
  projects/clang380-import/lib/libdpv/dpv.c
  projects/clang380-import/lib/libdpv/dpv.h
  projects/clang380-import/lib/libkvm/kvm_i386.h
  projects/clang380-import/lib/libmd/mdXhl.c
  projects/clang380-import/lib/libthr/thread/thr_umtx.c
  projects/clang380-import/share/examples/pf/pf.conf
  projects/clang380-import/share/man/man4/ddb.4
  projects/clang380-import/share/man/man4/ioat.4
  projects/clang380-import/share/man/man4/sfxge.4
  projects/clang380-import/share/mk/bsd.sys.mk
  projects/clang380-import/sys/amd64/linux/linux_proto.h
  projects/clang380-import/sys/amd64/linux/linux_syscall.h
  projects/clang380-import/sys/amd64/linux/linux_syscalls.c
  projects/clang380-import/sys/amd64/linux/linux_sysent.c
  projects/clang380-import/sys/amd64/linux/linux_systrace_args.c
  projects/clang380-import/sys/amd64/linux/syscalls.master
  projects/clang380-import/sys/amd64/linux32/linux32_proto.h
  projects/clang380-import/sys/amd64/linux32/linux32_syscall.h
  projects/clang380-import/sys/amd64/linux32/linux32_syscalls.c
  projects/clang380-import/sys/amd64/linux32/linux32_sysent.c
  projects/clang380-import/sys/amd64/linux32/linux32_systrace_args.c
  projects/clang380-import/sys/amd64/linux32/syscalls.master
  projects/clang380-import/sys/arm/at91/at91_mci.c
  projects/clang380-import/sys/arm/conf/IMX53
  projects/clang380-import/sys/arm/conf/IMX6
  projects/clang380-import/sys/boot/common/bootstrap.h
  projects/clang380-import/sys/boot/common/module.c
  projects/clang380-import/sys/boot/common/ufsread.c
  projects/clang380-import/sys/boot/efi/Makefile
  projects/clang380-import/sys/boot/efi/boot1/Makefile
  projects/clang380-import/sys/boot/efi/boot1/boot1.c
  projects/clang380-import/sys/boot/efi/include/efilib.h
  projects/clang380-import/sys/boot/efi/libefi/handles.c
  projects/clang380-import/sys/boot/efi/loader/Makefile
  projects/clang380-import/sys/boot/efi/loader/conf.c
  projects/clang380-import/sys/boot/efi/loader/devicename.c
  projects/clang380-import/sys/boot/efi/loader/main.c
  projects/clang380-import/sys/boot/fdt/fdt_loader_cmd.c
  projects/clang380-import/sys/boot/i386/loader/main.c
  projects/clang380-import/sys/boot/userboot/test/test.c
  projects/clang380-import/sys/boot/userboot/userboot/main.c
  projects/clang380-import/sys/boot/zfs/libzfs.h
  projects/clang380-import/sys/boot/zfs/zfs.c
  projects/clang380-import/sys/boot/zfs/zfsimpl.c
  projects/clang380-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c
  projects/clang380-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c
  projects/clang380-import/sys/compat/linux/linux_futex.c
  projects/clang380-import/sys/compat/linux/linux_misc.c
  projects/clang380-import/sys/compat/linuxkpi/common/include/linux/pci.h
  projects/clang380-import/sys/compat/linuxkpi/common/src/linux_pci.c
  projects/clang380-import/sys/conf/files.amd64
  projects/clang380-import/sys/conf/files.i386
  projects/clang380-import/sys/contrib/vchiq/interface/vchiq_arm/vchiq_kmod.c
  projects/clang380-import/sys/dev/drm2/drm_crtc.c
  projects/clang380-import/sys/dev/drm2/drm_pci.c
  projects/clang380-import/sys/dev/e1000/if_em.c
  projects/clang380-import/sys/dev/e1000/if_em.h
  projects/clang380-import/sys/dev/e1000/if_igb.c
  projects/clang380-import/sys/dev/e1000/if_igb.h
  projects/clang380-import/sys/dev/e1000/if_lem.c
  projects/clang380-import/sys/dev/e1000/if_lem.h
  projects/clang380-import/sys/dev/gpio/gpiobus.c
  projects/clang380-import/sys/dev/hyperv/include/hyperv.h
  projects/clang380-import/sys/dev/hyperv/netvsc/hv_net_vsc.c
  projects/clang380-import/sys/dev/hyperv/netvsc/hv_net_vsc.h
  projects/clang380-import/sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c
  projects/clang380-import/sys/dev/hyperv/vmbus/hv_connection.c
  projects/clang380-import/sys/dev/hyperv/vmbus/hv_hv.c
  projects/clang380-import/sys/dev/hyperv/vmbus/hv_vmbus_drv_freebsd.c
  projects/clang380-import/sys/dev/hyperv/vmbus/hv_vmbus_priv.h
  projects/clang380-import/sys/dev/ioat/ioat.c
  projects/clang380-import/sys/dev/ioat/ioat.h
  projects/clang380-import/sys/dev/sfxge/common/ef10_impl.h
  projects/clang380-import/sys/dev/sfxge/common/efsys.h
  projects/clang380-import/sys/dev/sfxge/common/efx.h
  projects/clang380-import/sys/dev/sfxge/common/efx_check.h
  projects/clang380-import/sys/dev/sfxge/common/efx_impl.h
  projects/clang380-import/sys/dev/sfxge/common/efx_mcdi.c
  projects/clang380-import/sys/dev/sfxge/common/efx_mcdi.h
  projects/clang380-import/sys/dev/sfxge/common/efx_nic.c
  projects/clang380-import/sys/dev/sfxge/common/efx_nvram.c
  projects/clang380-import/sys/dev/sfxge/common/efx_rx.c
  projects/clang380-import/sys/dev/sfxge/common/efx_tx.c
  projects/clang380-import/sys/dev/sfxge/common/efx_vpd.c
  projects/clang380-import/sys/dev/sfxge/common/hunt_ev.c
  projects/clang380-import/sys/dev/sfxge/common/hunt_impl.h
  projects/clang380-import/sys/dev/sfxge/common/hunt_mac.c
  projects/clang380-import/sys/dev/sfxge/common/hunt_mcdi.c
  projects/clang380-import/sys/dev/sfxge/common/hunt_nic.c
  projects/clang380-import/sys/dev/sfxge/common/hunt_nvram.c
  projects/clang380-import/sys/dev/sfxge/common/hunt_phy.c
  projects/clang380-import/sys/dev/sfxge/common/hunt_tx.c
  projects/clang380-import/sys/dev/sfxge/common/hunt_vpd.c
  projects/clang380-import/sys/dev/sfxge/common/medford_impl.h
  projects/clang380-import/sys/dev/sfxge/common/medford_nic.c
  projects/clang380-import/sys/dev/sfxge/common/siena_impl.h
  projects/clang380-import/sys/dev/sfxge/common/siena_mcdi.c
  projects/clang380-import/sys/dev/sfxge/common/siena_nic.c
  projects/clang380-import/sys/dev/sfxge/common/siena_nvram.c
  projects/clang380-import/sys/dev/sfxge/common/siena_vpd.c
  projects/clang380-import/sys/dev/sfxge/sfxge.h
  projects/clang380-import/sys/dev/sfxge/sfxge_tx.c
  projects/clang380-import/sys/dev/sfxge/sfxge_tx.h
  projects/clang380-import/sys/dev/usb/usb_device.c
  projects/clang380-import/sys/fs/nfs/nfs_var.h
  projects/clang380-import/sys/fs/nfsclient/nfs_clport.c
  projects/clang380-import/sys/fs/nfsclient/nfs_clrpcops.c
  projects/clang380-import/sys/geom/geom_disk.c
  projects/clang380-import/sys/i386/linux/linux_proto.h
  projects/clang380-import/sys/i386/linux/linux_syscall.h
  projects/clang380-import/sys/i386/linux/linux_syscalls.c
  projects/clang380-import/sys/i386/linux/linux_sysent.c
  projects/clang380-import/sys/i386/linux/syscalls.master
  projects/clang380-import/sys/kern/kern_prot.c
  projects/clang380-import/sys/kern/vfs_aio.c
  projects/clang380-import/sys/modules/hyperv/vmbus/Makefile
  projects/clang380-import/sys/modules/sfxge/Makefile
  projects/clang380-import/sys/net/radix_mpath.c
  projects/clang380-import/sys/net/route.c
  projects/clang380-import/sys/net/route.h
  projects/clang380-import/sys/netgraph/netflow/netflow.c
  projects/clang380-import/sys/netinet/in_rmx.c
  projects/clang380-import/sys/netinet/in_var.h
  projects/clang380-import/sys/netinet/ip_mroute.c
  projects/clang380-import/sys/netinet/sctp_pcb.c
  projects/clang380-import/sys/netinet/sctp_usrreq.c
  projects/clang380-import/sys/netinet/tcp_output.c
  projects/clang380-import/sys/netinet6/sctp6_usrreq.c
  projects/clang380-import/sys/powerpc/include/vmparam.h
  projects/clang380-import/sys/sys/param.h
  projects/clang380-import/sys/sys/ucred.h
  projects/clang380-import/sys/x86/x86/identcpu.c
  projects/clang380-import/tests/sys/geom/class/gate/1_test.sh
  projects/clang380-import/tests/sys/geom/class/gate/conf.sh
  projects/clang380-import/usr.bin/clang/clang/Makefile
  projects/clang380-import/usr.bin/clang/lldb/Makefile
  projects/clang380-import/usr.bin/numactl/numactl.c
  projects/clang380-import/usr.sbin/boot0cfg/boot0cfg.c
  projects/clang380-import/usr.sbin/bsdinstall/scripts/auto
Directory Properties:
  projects/clang380-import/   (props changed)
  projects/clang380-import/cddl/   (props changed)
  projects/clang380-import/cddl/contrib/opensolaris/   (props changed)
  projects/clang380-import/crypto/openssh/   (props changed)
  projects/clang380-import/lib/libc/   (props changed)
  projects/clang380-import/share/   (props changed)
  projects/clang380-import/share/man/man4/   (props changed)
  projects/clang380-import/sys/   (props changed)
  projects/clang380-import/sys/boot/   (props changed)
  projects/clang380-import/sys/cddl/contrib/opensolaris/   (props changed)
  projects/clang380-import/sys/conf/   (props changed)
  projects/clang380-import/sys/dev/hyperv/   (props changed)
  projects/clang380-import/sys/modules/hyperv/   (props changed)

Modified: projects/clang380-import/cddl/contrib/opensolaris/tools/ctf/cvt/merge.c
==============================================================================
--- projects/clang380-import/cddl/contrib/opensolaris/tools/ctf/cvt/merge.c	Fri Jan 15 16:45:36 2016	(r294095)
+++ projects/clang380-import/cddl/contrib/opensolaris/tools/ctf/cvt/merge.c	Fri Jan 15 17:55:00 2016	(r294096)
@@ -283,7 +283,6 @@ static int
 equiv_su(tdesc_t *stdp, tdesc_t *ttdp, equiv_data_t *ed)
 {
 	mlist_t *ml1 = stdp->t_members, *ml2 = ttdp->t_members;
-	mlist_t *olm1 = NULL;
 
 	while (ml1 && ml2) {
 		if (ml1->ml_offset != ml2->ml_offset ||
@@ -292,7 +291,6 @@ equiv_su(tdesc_t *stdp, tdesc_t *ttdp, e
 		    !equiv_node(ml1->ml_type, ml2->ml_type, ed))
 			return (0);
 
-		olm1 = ml1;
 		ml1 = ml1->ml_next;
 		ml2 = ml2->ml_next;
 	}

Modified: projects/clang380-import/crypto/openssh/readconf.c
==============================================================================
--- projects/clang380-import/crypto/openssh/readconf.c	Fri Jan 15 16:45:36 2016	(r294095)
+++ projects/clang380-import/crypto/openssh/readconf.c	Fri Jan 15 17:55:00 2016	(r294096)
@@ -1610,7 +1610,7 @@ initialize_options(Options * options)
 	options->tun_remote = -1;
 	options->local_command = NULL;
 	options->permit_local_command = -1;
-	options->use_roaming = -1;
+	options->use_roaming = 0;
 	options->visual_host_key = -1;
 	options->ip_qos_interactive = -1;
 	options->ip_qos_bulk = -1;
@@ -1788,8 +1788,7 @@ fill_default_options(Options * options)
 		options->tun_remote = SSH_TUNID_ANY;
 	if (options->permit_local_command == -1)
 		options->permit_local_command = 0;
-	if (options->use_roaming == -1)
-		options->use_roaming = 1;
+	options->use_roaming = 0;
 	if (options->visual_host_key == -1)
 		options->visual_host_key = 0;
 	if (options->ip_qos_interactive == -1)

Modified: projects/clang380-import/etc/Makefile
==============================================================================
--- projects/clang380-import/etc/Makefile	Fri Jan 15 16:45:36 2016	(r294095)
+++ projects/clang380-import/etc/Makefile	Fri Jan 15 17:55:00 2016	(r294096)
@@ -82,10 +82,6 @@ BIN1+= apmd.conf
 BIN1+= auto_master
 .endif
 
-.if ${MK_BSNMP} != "no"
-BIN1+= snmpd.config
-.endif
-
 .if ${MK_FREEBSD_UPDATE} != "no"
 BIN1+= freebsd-update.conf
 .endif
@@ -219,6 +215,11 @@ distribution:
 		${BIN2} ${DESTDIR}/etc; \
 	    ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m 600 \
 		master.passwd nsmb.conf opieaccess ${DESTDIR}/etc;
+.if ${MK_BSNMP} != "no"
+	cd ${.CURDIR}; \
+	    ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m 600 \
+		snmpd.config ${DESTDIR}/etc;
+.endif
 .if ${MK_AT} == "no"
 	sed -i "" -e 's;.*/usr/libexec/atrun;#&;' ${DESTDIR}/etc/crontab
 .endif

Modified: projects/clang380-import/etc/rc.d/mountcritlocal
==============================================================================
--- projects/clang380-import/etc/rc.d/mountcritlocal	Fri Jan 15 16:45:36 2016	(r294095)
+++ projects/clang380-import/etc/rc.d/mountcritlocal	Fri Jan 15 17:55:00 2016	(r294096)
@@ -36,15 +36,15 @@ mountcritlocal_start()
 	done
 	mount_excludes=${mount_excludes%,}
 
-	# Originally, root mount hold had to be released before mounting the root
-	# filesystem.  This delayed the boot, so it was changed to only wait if
-	# the root device isn't readily available.  This can result in this script
-	# executing before all the devices - such as graid(8) - are available.
-	# Thus, should the mount fail, we will wait for the root mount hold release
-	# and retry.
+	# Originally, root mount hold had to be released before mounting
+	# the root filesystem.  This delayed the boot, so it was changed
+	# to only wait if the root device isn't readily available.  This
+	# can result in this script executing before all the devices - such
+	# as graid(8) - are available.  Thus, should the mount fail,
+	# we will wait for the root mount hold release and retry.
 	mount -a -t ${mount_excludes}
 	err=$?
-	if [ $? -ne 0 ]; then
+	if [ ${err} -ne 0 ]; then
 		echo
 		echo 'Mounting /etc/fstab filesystems failed,' \
 		    'will retry after root mount hold release'

Modified: projects/clang380-import/lib/clang/clang.lib.mk
==============================================================================
--- projects/clang380-import/lib/clang/clang.lib.mk	Fri Jan 15 16:45:36 2016	(r294095)
+++ projects/clang380-import/lib/clang/clang.lib.mk	Fri Jan 15 17:55:00 2016	(r294096)
@@ -6,4 +6,8 @@ LLVM_SRCS= ${.CURDIR}/../../../contrib/l
 
 INTERNALLIB=
 
+.if ${MACHINE_CPUARCH} == "arm"
+STATIC_CXXFLAGS+= -mlong-calls
+.endif
+
 .include <bsd.lib.mk>

Modified: projects/clang380-import/lib/libc++/Makefile
==============================================================================
--- projects/clang380-import/lib/libc++/Makefile	Fri Jan 15 16:45:36 2016	(r294095)
+++ projects/clang380-import/lib/libc++/Makefile	Fri Jan 15 17:55:00 2016	(r294096)
@@ -6,6 +6,9 @@ _LIBCXXRTDIR=	${.CURDIR}/../../contrib/l
 HDRDIR=		${.CURDIR}/../../contrib/libc++/include
 SRCDIR=		${.CURDIR}/../../contrib/libc++/src
 CXXINCLUDEDIR=	${INCLUDEDIR}/c++/v${SHLIB_MAJOR}
+.if ${MACHINE_CPUARCH} == "arm"
+STATIC_CXXFLAGS+= -mlong-calls
+.endif
 
 .PATH: ${SRCDIR}
 

Modified: projects/clang380-import/lib/libc/stdlib/tdelete.c
==============================================================================
--- projects/clang380-import/lib/libc/stdlib/tdelete.c	Fri Jan 15 16:45:36 2016	(r294095)
+++ projects/clang380-import/lib/libc/stdlib/tdelete.c	Fri Jan 15 17:55:00 2016	(r294096)
@@ -62,7 +62,6 @@ __FBSDID("$FreeBSD$");
 		base = leaf;						\
 		path_init(&path);					\
 	}								\
-	result = &(*leaf)->key;						\
 	path_taking_right(&path);					\
 	leaf = &(*leaf)->rlink;						\
 } while (0)

Modified: projects/clang380-import/lib/libc/string/wcslcat.c
==============================================================================
--- projects/clang380-import/lib/libc/string/wcslcat.c	Fri Jan 15 16:45:36 2016	(r294095)
+++ projects/clang380-import/lib/libc/string/wcslcat.c	Fri Jan 15 17:55:00 2016	(r294096)
@@ -54,7 +54,7 @@ wcslcat(wchar_t *dst, const wchar_t *src
 	size_t dlen;
 
 	/* Find the end of dst and adjust bytes left but don't go past end */
-	while (*d != '\0' && n-- != 0)
+	while (n-- != 0 && *d != '\0')
 		d++;
 	dlen = d - dst;
 	n = siz - dlen;

Modified: projects/clang380-import/lib/libc/string/wcsncat.c
==============================================================================
--- projects/clang380-import/lib/libc/string/wcsncat.c	Fri Jan 15 16:45:36 2016	(r294095)
+++ projects/clang380-import/lib/libc/string/wcsncat.c	Fri Jan 15 17:55:00 2016	(r294096)
@@ -48,7 +48,7 @@ wcsncat(wchar_t * __restrict s1, const w
 		p++;
 	q = p;
 	r = s2;
-	while (*r && n) {
+	while (n && *r) {
 		*q++ = *r++;
 		n--;
 	}

Modified: projects/clang380-import/lib/libc/sys/stat.2
==============================================================================
--- projects/clang380-import/lib/libc/sys/stat.2	Fri Jan 15 16:45:36 2016	(r294095)
+++ projects/clang380-import/lib/libc/sys/stat.2	Fri Jan 15 17:55:00 2016	(r294096)
@@ -28,7 +28,7 @@
 .\"     @(#)stat.2	8.4 (Berkeley) 5/1/95
 .\" $FreeBSD$
 .\"
-.Dd June 2, 2012
+.Dd January 14, 2016
 .Dt STAT 2
 .Os
 .Sh NAME
@@ -40,12 +40,11 @@
 .Sh LIBRARY
 .Lb libc
 .Sh SYNOPSIS
-.In sys/types.h
 .In sys/stat.h
 .Ft int
-.Fn stat "const char *path" "struct stat *sb"
+.Fn stat "const char * restrict path" "struct stat * restrict sb"
 .Ft int
-.Fn lstat "const char *path" "struct stat *sb"
+.Fn lstat "const char * restrict path" "struct stat * restrict sb"
 .Ft int
 .Fn fstat "int fd" "struct stat *sb"
 .Ft int

Modified: projects/clang380-import/lib/libdpv/dpv.c
==============================================================================
--- projects/clang380-import/lib/libdpv/dpv.c	Fri Jan 15 16:45:36 2016	(r294095)
+++ projects/clang380-import/lib/libdpv/dpv.c	Fri Jan 15 17:55:00 2016	(r294096)
@@ -36,6 +36,7 @@ __FBSDID("$FreeBSD$");
 #include <dialog.h>
 #include <err.h>
 #include <limits.h>
+#include <locale.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -482,6 +483,11 @@ dpv(struct dpv_config *config, struct dp
 		/* Reads: label_size pbar_size pprompt aprompt dpv_nfiles */
 		/* Inits: dheight and dwidth */
 
+	/* Default localeconv(3) settings for dialog(3) status */
+	setlocale(LC_NUMERIC,
+		getenv("LC_ALL") == NULL && getenv("LC_NUMERIC") == NULL ?
+		LC_NUMERIC_DEFAULT : "");
+
 	if (!debug) {
 		/* Internally create the initial `--gauge' prompt text */
 		dprompt_recreate(file_list, (struct dpv_file_node *)NULL, 0);

Modified: projects/clang380-import/lib/libdpv/dpv.h
==============================================================================
--- projects/clang380-import/lib/libdpv/dpv.h	Fri Jan 15 16:45:36 2016	(r294095)
+++ projects/clang380-import/lib/libdpv/dpv.h	Fri Jan 15 17:55:00 2016	(r294096)
@@ -38,6 +38,9 @@
 #define FALSE 0
 #endif
 
+/* localeconv(3) */
+#define LC_NUMERIC_DEFAULT	"en_US.ISO8859-1"
+
 /* Data to process */
 extern long long dpv_overall_read;
 

Modified: projects/clang380-import/lib/libkvm/kvm_i386.h
==============================================================================
--- projects/clang380-import/lib/libkvm/kvm_i386.h	Fri Jan 15 16:45:36 2016	(r294095)
+++ projects/clang380-import/lib/libkvm/kvm_i386.h	Fri Jan 15 17:55:00 2016	(r294096)
@@ -70,7 +70,7 @@ _Static_assert(NBPDR == I386_NBPDR, "NBP
 
 _Static_assert(PG_V == I386_PG_V, "PG_V mismatch");
 _Static_assert(PG_PS == I386_PG_PS, "PG_PS mismatch");
-_Static_assert(PG_FRAME == I386_PG_FRAME, "PG_FRAME mismatch");
+_Static_assert((u_int)PG_FRAME == I386_PG_FRAME, "PG_FRAME mismatch");
 _Static_assert(PG_PS_FRAME == I386_PG_PS_FRAME, "PG_PS_FRAME mismatch");
 #endif
 

Modified: projects/clang380-import/lib/libmd/mdXhl.c
==============================================================================
--- projects/clang380-import/lib/libmd/mdXhl.c	Fri Jan 15 16:45:36 2016	(r294095)
+++ projects/clang380-import/lib/libmd/mdXhl.c	Fri Jan 15 17:55:00 2016	(r294096)
@@ -1,4 +1,5 @@
-/* mdXhl.c * ----------------------------------------------------------------------------
+/* mdXhl.c
+ * ----------------------------------------------------------------------------
  * "THE BEER-WARE LICENSE" (Revision 42):
  * <phk at FreeBSD.org> wrote this file.  As long as you retain this notice you
  * can do whatever you want with this stuff. If we meet some day, and you think
@@ -52,43 +53,44 @@ MDXFileChunk(const char *filename, char 
 	unsigned char buffer[16*1024];
 	MDX_CTX ctx;
 	struct stat stbuf;
-	int f, i, e;
-	off_t n;
+	int fd, readrv, e;
+	off_t remain;
 
-	MDXInit(&ctx);
-	f = open(filename, O_RDONLY);
-	if (f < 0)
-		return 0;
-	if (fstat(f, &stbuf) < 0) {
-		i = -1;
-		goto error;
+	if (len < 0) {
+		errno = EINVAL;
+		return NULL;
 	}
-	if (ofs > stbuf.st_size)
-		ofs = stbuf.st_size;
-	if ((len == 0) || (len > stbuf.st_size - ofs))
-		len = stbuf.st_size - ofs;
-	if (lseek(f, ofs, SEEK_SET) < 0) {
-		i = -1;
-		goto error;
+
+	MDXInit(&ctx);
+	fd = open(filename, O_RDONLY);
+	if (fd < 0)
+		return NULL;
+	if (ofs != 0) {
+		errno = 0;
+		if (lseek(fd, ofs, SEEK_SET) != ofs ||
+		    (ofs == -1 && errno != 0)) {
+			readrv = -1;
+			goto error;
+		}
 	}
-	n = len;
-	i = 0;
-	while (n > 0) {
-		if (n > sizeof(buffer))
-			i = read(f, buffer, sizeof(buffer));
+	remain = len;
+	readrv = 0;
+	while (len == 0 || remain > 0) {
+		if (len == 0 || remain > sizeof(buffer))
+			readrv = read(fd, buffer, sizeof(buffer));
 		else
-			i = read(f, buffer, n);
-		if (i <= 0) 
+			readrv = read(fd, buffer, remain);
+		if (readrv <= 0) 
 			break;
-		MDXUpdate(&ctx, buffer, i);
-		n -= i;
+		MDXUpdate(&ctx, buffer, readrv);
+		remain -= readrv;
 	} 
 error:
 	e = errno;
-	close(f);
+	close(fd);
 	errno = e;
-	if (i < 0)
-		return 0;
+	if (readrv < 0)
+		return NULL;
 	return (MDXEnd(&ctx, buf));
 }
 

Modified: projects/clang380-import/lib/libthr/thread/thr_umtx.c
==============================================================================
--- projects/clang380-import/lib/libthr/thread/thr_umtx.c	Fri Jan 15 16:45:36 2016	(r294095)
+++ projects/clang380-import/lib/libthr/thread/thr_umtx.c	Fri Jan 15 17:55:00 2016	(r294096)
@@ -42,7 +42,7 @@ int _umtx_op_err(void *obj, int op, u_lo
 void
 _thr_umutex_init(struct umutex *mtx)
 {
-	static struct umutex default_mtx = DEFAULT_UMUTEX;
+	static const struct umutex default_mtx = DEFAULT_UMUTEX;
 
 	*mtx = default_mtx;
 }
@@ -50,7 +50,8 @@ _thr_umutex_init(struct umutex *mtx)
 void
 _thr_urwlock_init(struct urwlock *rwl)
 {
-	static struct urwlock default_rwl = DEFAULT_URWLOCK;
+	static const struct urwlock default_rwl = DEFAULT_URWLOCK;
+
 	*rwl = default_rwl;
 }
 

Modified: projects/clang380-import/share/examples/pf/pf.conf
==============================================================================
--- projects/clang380-import/share/examples/pf/pf.conf	Fri Jan 15 16:45:36 2016	(r294095)
+++ projects/clang380-import/share/examples/pf/pf.conf	Fri Jan 15 17:55:00 2016	(r294096)
@@ -2,8 +2,8 @@
 #	$OpenBSD: pf.conf,v 1.34 2007/02/24 19:30:59 millert Exp $
 #
 # See pf.conf(5) and /usr/share/examples/pf for syntax and examples.
-# Remember to set net.inet.ip.forwarding=1 and/or net.inet6.ip6.forwarding=1
-# in /etc/sysctl.conf if packets are to be forwarded between interfaces.
+# Remember to set gateway_enable="YES" and/or ipv6_gateway_enable="YES"
+# in /etc/rc.conf if packets are to be forwarded between interfaces.
 
 #ext_if="ext0"
 #int_if="int0"

Modified: projects/clang380-import/share/man/man4/ddb.4
==============================================================================
--- projects/clang380-import/share/man/man4/ddb.4	Fri Jan 15 16:45:36 2016	(r294095)
+++ projects/clang380-import/share/man/man4/ddb.4	Fri Jan 15 17:55:00 2016	(r294096)
@@ -60,7 +60,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd November 5, 2015
+.Dd January 14, 2016
 .Dt DDB 4
 .Os
 .Sh NAME
@@ -1435,6 +1435,47 @@ The NMI allows one to break into the deb
 diagnose problems.
 Other bus' bridge chipsets may be able to generate NMI using bus specific
 methods.
+There are many PCI and PCIe add-in cards which can generate NMI for
+debugging.
+Modern systems typically use IPMI to generate signals to enter the
+debugger.
+The
+.Dv devel/ipmitool
+port can be used to send the
+.Cd chassis power diag
+command which delivers an NMI to the processor.
+.Pp
+For serial consoles, you can break to the debugger by sending a BREAK
+condition on the serial line if
+.Cd options BREAK_TO_DEBUGGER
+is specified in the kernel.
+Most terminal emulation programs can send a break sequence with a
+special key sequence or via a menu item.
+However, in some setups, sending the break can be difficult to arrange
+or happens spuriously, so if the kernel contains
+.Cd options ALT_BREAK_TO_DEBUGGER
+then the sequence of CR TILDE CTRL-B enters the debugger;
+CR TILDE CTRL-P causes a panic instead of entering the
+debugger; and
+CR TILDE CTRL-R causes an immediate reboot.
+In all the above sequences, CR is a Carriage Return and is usually
+sent by hitting the Enter or Return key.
+TILDE is the ASCII tilde character (~).
+CTRL-x is Control x created by hitting the control key and then x
+and then releasing both.
+.Pp
+The break to debugger behavior may also be enabled by setting the
+.Xr sysctl 8
+.Dv debug.kdb.break_to_debugger
+to 1.
+The alt break to debugger behavior may also be enabled by setting the
+.Xr sysctl 8
+.Dv debug.kdb.alt_break_to_debugger
+to 1.
+The debugger may be entered by setting the
+.Xr sysctl 8
+.Dv debug.kdb.enter
+to 1.
 .Sh FILES
 Header files mentioned in this manual page can be found below
 .Pa /usr/include

Modified: projects/clang380-import/share/man/man4/ioat.4
==============================================================================
--- projects/clang380-import/share/man/man4/ioat.4	Fri Jan 15 16:45:36 2016	(r294095)
+++ projects/clang380-import/share/man/man4/ioat.4	Fri Jan 15 17:55:00 2016	(r294096)
@@ -24,7 +24,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd January 7, 2016
+.Dd January 14, 2016
 .Dt IOAT 4
 .Os
 .Sh NAME
@@ -134,7 +134,7 @@ Null operations do nothing, but may be u
 mechanism.
 .Pp
 All operations can optionally trigger an interrupt at completion with the
-.Ar DMA_EN_INT
+.Ar DMA_INT_EN
 flag.
 For example, a user might submit multiple operations to the same channel and
 only enable an interrupt and callback for the last operation.
@@ -160,6 +160,17 @@ flag.
 .Ar DMA_NO_WAIT
 may return NULL.)
 .Pp
+Operations that depend on the result of prior operations should use
+.Ar DMA_FENCE .
+For example, such a scenario can happen when two related DMA operations are
+queued.
+First, a DMA copy to one location (A), followed directly by a DMA copy
+from A to B.
+In this scenario, some classes of I/OAT hardware may prefetch A for the second
+operation before it is written by the first operation.
+To avoid reading a stale value in sequences of dependent operations, use
+.Ar DMA_FENCE .
+.Pp
 All operations, as well as
 .Fn ioat_get_dmaengine ,
 can return NULL in special circumstances.

Modified: projects/clang380-import/share/man/man4/sfxge.4
==============================================================================
--- projects/clang380-import/share/man/man4/sfxge.4	Fri Jan 15 16:45:36 2016	(r294095)
+++ projects/clang380-import/share/man/man4/sfxge.4	Fri Jan 15 17:55:00 2016	(r294096)
@@ -121,8 +121,10 @@ If a packet is dropped, the
 counter is incremented and the local sender receives ENOBUFS.
 The value must be greater than or equal to 0.
 .It Va hw.sfxge.tso_fw_assisted
-Enable/disable usage of FW-assisted TSO if supported by NIC firmware.
-Enabled by default.
+Bitmask to enable/disable usage of FW-assisted TSO version if supported
+by NIC firmware.
+FATSOv1 (bit 0) and FATSOv2 (bit 1) are supported.
+All enabled by default.
 .It Va hw.sfxge.N.max_rss_channels
 The maximum number of allocated RSS channels for the Nth adapter.
 If set to 0 or unset, the number of channels is determined by the number

Modified: projects/clang380-import/share/mk/bsd.sys.mk
==============================================================================
--- projects/clang380-import/share/mk/bsd.sys.mk	Fri Jan 15 16:45:36 2016	(r294095)
+++ projects/clang380-import/share/mk/bsd.sys.mk	Fri Jan 15 17:55:00 2016	(r294096)
@@ -164,10 +164,11 @@ SSP_CFLAGS?=	-fstack-protector
 CFLAGS+=	${SSP_CFLAGS}
 .endif # SSP && !ARM && !MIPS
 
-# Allow user-specified additional warning flags, plus compiler specific flag overrides.
-# Unless we've overriden this...
+# Allow user-specified additional warning flags, plus compiler and file
+# specific flag overrides, unless we've overriden this...
 .if ${MK_WARNS} != "no"
 CFLAGS+=	${CWARNFLAGS} ${CWARNFLAGS.${COMPILER_TYPE}}
+CFLAGS+=	${CWARNFLAGS.${.IMPSRC:T}}
 .endif
 
 CFLAGS+=	 ${CFLAGS.${COMPILER_TYPE}}

Modified: projects/clang380-import/sys/amd64/linux/linux_proto.h
==============================================================================
--- projects/clang380-import/sys/amd64/linux/linux_proto.h	Fri Jan 15 16:45:36 2016	(r294095)
+++ projects/clang380-import/sys/amd64/linux/linux_proto.h	Fri Jan 15 17:55:00 2016	(r294096)
@@ -3,7 +3,7 @@
  *
  * DO NOT EDIT-- this file is automatically generated.
  * $FreeBSD$
- * created from FreeBSD: head/sys/amd64/linux/syscalls.master 289769 2015-10-22 21:28:20Z jhb 
+ * created from FreeBSD: head/sys/amd64/linux/syscalls.master 293907 2016-01-14 10:13:58Z glebius 
  */
 
 #ifndef _LINUX_SYSPROTO_H_
@@ -966,7 +966,7 @@ struct linux_set_robust_list_args {
 };
 struct linux_get_robust_list_args {
 	char pid_l_[PADL_(l_int)]; l_int pid; char pid_r_[PADR_(l_int)];
-	char head_l_[PADL_(struct linux_robust_list_head *)]; struct linux_robust_list_head * head; char head_r_[PADR_(struct linux_robust_list_head *)];
+	char head_l_[PADL_(struct linux_robust_list_head **)]; struct linux_robust_list_head ** head; char head_r_[PADR_(struct linux_robust_list_head **)];
 	char len_l_[PADL_(l_size_t *)]; l_size_t * len; char len_r_[PADR_(l_size_t *)];
 };
 struct linux_splice_args {

Modified: projects/clang380-import/sys/amd64/linux/linux_syscall.h
==============================================================================
--- projects/clang380-import/sys/amd64/linux/linux_syscall.h	Fri Jan 15 16:45:36 2016	(r294095)
+++ projects/clang380-import/sys/amd64/linux/linux_syscall.h	Fri Jan 15 17:55:00 2016	(r294096)
@@ -3,7 +3,7 @@
  *
  * DO NOT EDIT-- this file is automatically generated.
  * $FreeBSD$
- * created from FreeBSD: head/sys/amd64/linux/syscalls.master 289769 2015-10-22 21:28:20Z jhb 
+ * created from FreeBSD: head/sys/amd64/linux/syscalls.master 293907 2016-01-14 10:13:58Z glebius 
  */
 
 #define	LINUX_SYS_read	0

Modified: projects/clang380-import/sys/amd64/linux/linux_syscalls.c
==============================================================================
--- projects/clang380-import/sys/amd64/linux/linux_syscalls.c	Fri Jan 15 16:45:36 2016	(r294095)
+++ projects/clang380-import/sys/amd64/linux/linux_syscalls.c	Fri Jan 15 17:55:00 2016	(r294096)
@@ -3,7 +3,7 @@
  *
  * DO NOT EDIT-- this file is automatically generated.
  * $FreeBSD$
- * created from FreeBSD: head/sys/amd64/linux/syscalls.master 289769 2015-10-22 21:28:20Z jhb 
+ * created from FreeBSD: head/sys/amd64/linux/syscalls.master 293907 2016-01-14 10:13:58Z glebius 
  */
 
 const char *linux_syscallnames[] = {

Modified: projects/clang380-import/sys/amd64/linux/linux_sysent.c
==============================================================================
--- projects/clang380-import/sys/amd64/linux/linux_sysent.c	Fri Jan 15 16:45:36 2016	(r294095)
+++ projects/clang380-import/sys/amd64/linux/linux_sysent.c	Fri Jan 15 17:55:00 2016	(r294096)
@@ -3,7 +3,7 @@
  *
  * DO NOT EDIT-- this file is automatically generated.
  * $FreeBSD$
- * created from FreeBSD: head/sys/amd64/linux/syscalls.master 289769 2015-10-22 21:28:20Z jhb 
+ * created from FreeBSD: head/sys/amd64/linux/syscalls.master 293907 2016-01-14 10:13:58Z glebius 
  */
 
 #include <sys/param.h>

Modified: projects/clang380-import/sys/amd64/linux/linux_systrace_args.c
==============================================================================
--- projects/clang380-import/sys/amd64/linux/linux_systrace_args.c	Fri Jan 15 16:45:36 2016	(r294095)
+++ projects/clang380-import/sys/amd64/linux/linux_systrace_args.c	Fri Jan 15 17:55:00 2016	(r294096)
@@ -2020,7 +2020,7 @@ systrace_args(int sysnum, void *params, 
 	case 274: {
 		struct linux_get_robust_list_args *p = params;
 		iarg[0] = p->pid; /* l_int */
-		uarg[1] = (intptr_t) p->head; /* struct linux_robust_list_head * */
+		uarg[1] = (intptr_t) p->head; /* struct linux_robust_list_head ** */
 		uarg[2] = (intptr_t) p->len; /* l_size_t * */
 		*n_args = 3;
 		break;
@@ -5347,7 +5347,7 @@ systrace_entry_setargdesc(int sysnum, in
 			p = "l_int";
 			break;
 		case 1:
-			p = "struct linux_robust_list_head *";
+			p = "struct linux_robust_list_head **";
 			break;
 		case 2:
 			p = "l_size_t *";

Modified: projects/clang380-import/sys/amd64/linux/syscalls.master
==============================================================================
--- projects/clang380-import/sys/amd64/linux/syscalls.master	Fri Jan 15 16:45:36 2016	(r294095)
+++ projects/clang380-import/sys/amd64/linux/syscalls.master	Fri Jan 15 17:55:00 2016	(r294096)
@@ -461,8 +461,8 @@
 272	AUE_NULL	STD	{ int linux_unshare(void); }
 273	AUE_NULL	STD	{ int linux_set_robust_list(struct linux_robust_list_head *head, \
 				    l_size_t len); }
-274	AUE_NULL	STD	{ int linux_get_robust_list(l_int pid, struct linux_robust_list_head *head, \
-				    l_size_t *len); }
+274	AUE_NULL	STD	{ int linux_get_robust_list(l_int pid, \
+				    struct linux_robust_list_head **head, l_size_t *len); }
 275	AUE_NULL	STD	{ int linux_splice(void); }
 276	AUE_NULL	STD	{ int linux_tee(void); }
 277	AUE_NULL	STD	{ int linux_sync_file_range(void); }

Modified: projects/clang380-import/sys/amd64/linux32/linux32_proto.h
==============================================================================
--- projects/clang380-import/sys/amd64/linux32/linux32_proto.h	Fri Jan 15 16:45:36 2016	(r294095)
+++ projects/clang380-import/sys/amd64/linux32/linux32_proto.h	Fri Jan 15 17:55:00 2016	(r294096)
@@ -3,7 +3,7 @@
  *
  * DO NOT EDIT-- this file is automatically generated.
  * $FreeBSD$
- * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 289769 2015-10-22 21:28:20Z jhb 
+ * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 293907 2016-01-14 10:13:58Z glebius 
  */
 
 #ifndef _LINUX32_SYSPROTO_H_
@@ -1023,7 +1023,7 @@ struct linux_set_robust_list_args {
 };
 struct linux_get_robust_list_args {
 	char pid_l_[PADL_(l_int)]; l_int pid; char pid_r_[PADR_(l_int)];
-	char head_l_[PADL_(struct linux_robust_list_head *)]; struct linux_robust_list_head * head; char head_r_[PADR_(struct linux_robust_list_head *)];
+	char head_l_[PADL_(struct linux_robust_list_head **)]; struct linux_robust_list_head ** head; char head_r_[PADR_(struct linux_robust_list_head **)];
 	char len_l_[PADL_(l_size_t *)]; l_size_t * len; char len_r_[PADR_(l_size_t *)];
 };
 struct linux_splice_args {

Modified: projects/clang380-import/sys/amd64/linux32/linux32_syscall.h
==============================================================================
--- projects/clang380-import/sys/amd64/linux32/linux32_syscall.h	Fri Jan 15 16:45:36 2016	(r294095)
+++ projects/clang380-import/sys/amd64/linux32/linux32_syscall.h	Fri Jan 15 17:55:00 2016	(r294096)
@@ -3,7 +3,7 @@
  *
  * DO NOT EDIT-- this file is automatically generated.
  * $FreeBSD$
- * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 289769 2015-10-22 21:28:20Z jhb 
+ * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 293907 2016-01-14 10:13:58Z glebius 
  */
 
 #define	LINUX32_SYS_linux_exit	1

Modified: projects/clang380-import/sys/amd64/linux32/linux32_syscalls.c
==============================================================================
--- projects/clang380-import/sys/amd64/linux32/linux32_syscalls.c	Fri Jan 15 16:45:36 2016	(r294095)
+++ projects/clang380-import/sys/amd64/linux32/linux32_syscalls.c	Fri Jan 15 17:55:00 2016	(r294096)
@@ -3,7 +3,7 @@
  *
  * DO NOT EDIT-- this file is automatically generated.
  * $FreeBSD$
- * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 289769 2015-10-22 21:28:20Z jhb 
+ * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 293907 2016-01-14 10:13:58Z glebius 
  */
 
 const char *linux32_syscallnames[] = {

Modified: projects/clang380-import/sys/amd64/linux32/linux32_sysent.c
==============================================================================
--- projects/clang380-import/sys/amd64/linux32/linux32_sysent.c	Fri Jan 15 16:45:36 2016	(r294095)
+++ projects/clang380-import/sys/amd64/linux32/linux32_sysent.c	Fri Jan 15 17:55:00 2016	(r294096)
@@ -3,7 +3,7 @@
  *
  * DO NOT EDIT-- this file is automatically generated.
  * $FreeBSD$
- * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 289769 2015-10-22 21:28:20Z jhb 
+ * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 293907 2016-01-14 10:13:58Z glebius 
  */
 
 #include "opt_compat.h"

Modified: projects/clang380-import/sys/amd64/linux32/linux32_systrace_args.c
==============================================================================
--- projects/clang380-import/sys/amd64/linux32/linux32_systrace_args.c	Fri Jan 15 16:45:36 2016	(r294095)
+++ projects/clang380-import/sys/amd64/linux32/linux32_systrace_args.c	Fri Jan 15 17:55:00 2016	(r294096)
@@ -2122,7 +2122,7 @@ systrace_args(int sysnum, void *params, 
 	case 312: {
 		struct linux_get_robust_list_args *p = params;
 		iarg[0] = p->pid; /* l_int */
-		uarg[1] = (intptr_t) p->head; /* struct linux_robust_list_head * */
+		uarg[1] = (intptr_t) p->head; /* struct linux_robust_list_head ** */
 		uarg[2] = (intptr_t) p->len; /* l_size_t * */
 		*n_args = 3;
 		break;
@@ -5551,7 +5551,7 @@ systrace_entry_setargdesc(int sysnum, in
 			p = "l_int";
 			break;
 		case 1:
-			p = "struct linux_robust_list_head *";
+			p = "struct linux_robust_list_head **";
 			break;
 		case 2:
 			p = "l_size_t *";

Modified: projects/clang380-import/sys/amd64/linux32/syscalls.master
==============================================================================
--- projects/clang380-import/sys/amd64/linux32/syscalls.master	Fri Jan 15 16:45:36 2016	(r294095)
+++ projects/clang380-import/sys/amd64/linux32/syscalls.master	Fri Jan 15 17:55:00 2016	(r294096)
@@ -520,8 +520,8 @@
 ; linux 2.6.17:
 311	AUE_NULL	STD	{ int linux_set_robust_list(struct linux_robust_list_head *head, \
 					l_size_t len); }
-312	AUE_NULL	STD	{ int linux_get_robust_list(l_int pid, struct linux_robust_list_head *head, \
-					l_size_t *len); }
+312	AUE_NULL	STD	{ int linux_get_robust_list(l_int pid, \
+				    struct linux_robust_list_head **head, l_size_t *len); }
 313	AUE_NULL	STD	{ int linux_splice(void); }
 314	AUE_NULL	STD	{ int linux_sync_file_range(void); }
 315	AUE_NULL	STD	{ int linux_tee(void); }

Modified: projects/clang380-import/sys/arm/at91/at91_mci.c
==============================================================================
--- projects/clang380-import/sys/arm/at91/at91_mci.c	Fri Jan 15 16:45:36 2016	(r294095)
+++ projects/clang380-import/sys/arm/at91/at91_mci.c	Fri Jan 15 17:55:00 2016	(r294096)
@@ -446,6 +446,9 @@ at91_mci_attach(device_t dev)
 	    CTLFLAG_RW, &sc->allow_overclock, 0,
 	    "Allow up to 30MHz clock for 25MHz request when next highest speed 15MHz or less.");
 
+	SYSCTL_ADD_UINT(sctx, SYSCTL_CHILDREN(soid), OID_AUTO, "debug",
+	    CTLFLAG_RWTUN, &mci_debug, 0, "enable debug output");
+
 	/*
 	 * Our real min freq is master_clock/512, but upper driver layers are
 	 * going to set the min speed during card discovery, and the right speed
@@ -783,15 +786,6 @@ at91_mci_start_cmd(struct at91_mci_softc
 			WR4(sc, PDC_PTCR, PDC_PTCR_RXTEN);
 		} else {
 			len = min(BBSIZE, remaining);
-			/*
-			 * If this is MCI1 revision 2xx controller, apply
-			 * a work-around for the "Data Write Operation and
-			 * number of bytes" erratum.
-			 */
-			if ((sc->sc_cap & CAP_MCI1_REV2XX) && len < 12) {
-				len = 12;
-				memset(sc->bbuf_vaddr[0], 0, 12);
-			}
 			at91_bswap_buf(sc, sc->bbuf_vaddr[0], data->data, len);
 			err = bus_dmamap_load(sc->dmatag, sc->bbuf_map[0],
 			    sc->bbuf_vaddr[0], len, at91_mci_getaddr,
@@ -800,8 +794,13 @@ at91_mci_start_cmd(struct at91_mci_softc
 				panic("IO write dmamap_load failed\n");
 			bus_dmamap_sync(sc->dmatag, sc->bbuf_map[0],
 			    BUS_DMASYNC_PREWRITE);
+			/*
+			 * Erratum workaround:  PDC transfer length on a write
+			 * must not be smaller than 12 bytes (3 words); only
+			 * blklen bytes (set above) are actually transferred.
+			 */
 			WR4(sc, PDC_TPR,paddr);
-			WR4(sc, PDC_TCR, len / 4);
+			WR4(sc, PDC_TCR, (len < 12) ? 3 : len / 4);
 			sc->bbuf_len[0] = len;
 			remaining -= len;
 			if (remaining == 0) {
@@ -818,7 +817,7 @@ at91_mci_start_cmd(struct at91_mci_softc
 				bus_dmamap_sync(sc->dmatag, sc->bbuf_map[1],
 				    BUS_DMASYNC_PREWRITE);
 				WR4(sc, PDC_TNPR, paddr);
-				WR4(sc, PDC_TNCR, len / 4);
+				WR4(sc, PDC_TNCR, (len < 12) ? 3 : len / 4);
 				sc->bbuf_len[1] = len;
 				remaining -= len;
 			}

Modified: projects/clang380-import/sys/arm/conf/IMX53
==============================================================================
--- projects/clang380-import/sys/arm/conf/IMX53	Fri Jan 15 16:45:36 2016	(r294095)
+++ projects/clang380-import/sys/arm/conf/IMX53	Fri Jan 15 17:55:00 2016	(r294096)
@@ -136,11 +136,3 @@ device		wlan_amrr		# AMRR transmit rate 
 
 # Flattened Device Tree
 options 	FDT			# Configure using FDT/DTB data
-
-# NOTE: serial console will be disabled if syscons enabled
-# Uncomment following lines for framebuffer/syscons support
-#device		sc
-#device		vt
-#device		kbdmux
-#options 	SC_DFLT_FONT		# compile font in
-#makeoptions	SC_DFLT_FONT=cp437

Modified: projects/clang380-import/sys/arm/conf/IMX6
==============================================================================
--- projects/clang380-import/sys/arm/conf/IMX6	Fri Jan 15 16:45:36 2016	(r294095)
+++ projects/clang380-import/sys/arm/conf/IMX6	Fri Jan 15 17:55:00 2016	(r294096)
@@ -125,14 +125,6 @@ device		u3g			# USB modems
 #device		wlan_tkip		# 802.11 TKIP support
 #device		wlan_amrr		# AMRR transmit rate control algorithm
 
-# NOTE: serial console will be disabled if syscons enabled
-# Uncomment following lines for framebuffer/syscons support
-# Wandboard has no video console support yet.
-#device		sc
-#device		kbdmux
-#options 	SC_DFLT_FONT		# compile font in
-#makeoptions	SC_DFLT_FONT=cp437
-
 device		vt
 device		kbdmux
 device		ukbd

Modified: projects/clang380-import/sys/boot/common/bootstrap.h
==============================================================================
--- projects/clang380-import/sys/boot/common/bootstrap.h	Fri Jan 15 16:45:36 2016	(r294095)
+++ projects/clang380-import/sys/boot/common/bootstrap.h	Fri Jan 15 17:55:00 2016	(r294096)
@@ -237,7 +237,7 @@ void			unload(void);
 struct preloaded_file *file_alloc(void);
 struct preloaded_file *file_findfile(const char *name, const char *type);
 struct file_metadata *file_findmetadata(struct preloaded_file *fp, int type);
-struct preloaded_file *file_loadraw(char *name, char *type, int insert);
+struct preloaded_file *file_loadraw(const char *name, char *type, int insert);
 void file_discard(struct preloaded_file *fp);
 void file_addmetadata(struct preloaded_file *fp, int type, size_t size, void *p);
 int  file_addmodule(struct preloaded_file *fp, char *modname, int version,

Modified: projects/clang380-import/sys/boot/common/module.c
==============================================================================
--- projects/clang380-import/sys/boot/common/module.c	Fri Jan 15 16:45:36 2016	(r294095)
+++ projects/clang380-import/sys/boot/common/module.c	Fri Jan 15 17:55:00 2016	(r294096)
@@ -388,14 +388,14 @@ file_load_dependencies(struct preloaded_
 }
 
 /*
- * We've been asked to load (name) as (type), so just suck it in,
+ * We've been asked to load (fname) as (type), so just suck it in,
  * no arguments or anything.
  */
 struct preloaded_file *
-file_loadraw(char *name, char *type, int insert)
+file_loadraw(const char *fname, char *type, int insert)
 {
     struct preloaded_file	*fp;
-    char			*cp;
+    char			*name;
     int				fd, got;
     vm_offset_t			laddr;
 
@@ -406,12 +406,11 @@ file_loadraw(char *name, char *type, int
     }
 
     /* locate the file on the load path */
-    cp = file_search(name, NULL);
-    if (cp == NULL) {
-	sprintf(command_errbuf, "can't find '%s'", name);
+    name = file_search(fname, NULL);
+    if (name == NULL) {
+	sprintf(command_errbuf, "can't find '%s'", fname);
 	return(NULL);
     }
-    name = cp;
 
     if ((fd = open(name, O_RDONLY)) < 0) {
 	sprintf(command_errbuf, "can't open '%s': %s", name, strerror(errno));

Modified: projects/clang380-import/sys/boot/common/ufsread.c
==============================================================================
--- projects/clang380-import/sys/boot/common/ufsread.c	Fri Jan 15 16:45:36 2016	(r294095)
+++ projects/clang380-import/sys/boot/common/ufsread.c	Fri Jan 15 17:55:00 2016	(r294096)
@@ -187,8 +187,15 @@ fsread(ufs_ino_t inode, void *buf, size_
 
 	blkbuf = dmadat->blkbuf;
 	indbuf = dmadat->indbuf;
-	if (!dsk_meta) {
+
+	/*
+	 * Force probe if inode is zero to ensure we have a valid fs, otherwise
+	 * when probing multiple paritions, reads from subsequent parititions
+	 * will incorrectly succeed.
+	 */
+	if (!dsk_meta || inode == 0) {
 		inomap = 0;
+		dsk_meta = 0;
 		for (n = 0; sblock_try[n] != -1; n++) {
 			if (dskread(dmadat->sbbuf, sblock_try[n] / DEV_BSIZE,
 			    SBLOCKSIZE / DEV_BSIZE))

Modified: projects/clang380-import/sys/boot/efi/Makefile
==============================================================================
--- projects/clang380-import/sys/boot/efi/Makefile	Fri Jan 15 16:45:36 2016	(r294095)
+++ projects/clang380-import/sys/boot/efi/Makefile	Fri Jan 15 17:55:00 2016	(r294096)
@@ -2,7 +2,8 @@
 
 .include <src.opts.mk>
 
-SUBDIR=		libefi
+# In-tree GCC does not support __attribute__((ms_abi)).
+.if ${COMPILER_TYPE} != "gcc"
 
 .if ${MACHINE_CPUARCH} == "aarch64" || ${MACHINE_CPUARCH} == "arm"
 .if ${MK_FDT} != "no"
@@ -13,7 +14,10 @@ SUBDIR+=	fdt
 .if ${MACHINE_CPUARCH} == "aarch64" || \
     ${MACHINE_CPUARCH} == "amd64" || \
     ${MACHINE_CPUARCH} == "arm"
-SUBDIR+=	loader boot1
+SUBDIR+=	libefi loader boot1
 .endif
 
+.endif # ${COMPILER_TYPE} != "gcc"
+
 .include <bsd.subdir.mk>
+

Modified: projects/clang380-import/sys/boot/efi/boot1/Makefile
==============================================================================
--- projects/clang380-import/sys/boot/efi/boot1/Makefile	Fri Jan 15 16:45:36 2016	(r294095)
+++ projects/clang380-import/sys/boot/efi/boot1/Makefile	Fri Jan 15 17:55:00 2016	(r294096)
@@ -2,10 +2,7 @@
 
 MAN=
 
-.include <bsd.own.mk>
-
-# In-tree GCC does not support __attribute__((ms_abi)).
-.if ${COMPILER_TYPE} != "gcc"
+.include <src.opts.mk>
 
 MK_SSP=		no
 
@@ -13,14 +10,35 @@ PROG=		boot1.sym
 INTERNALPROG=
 WARNS?=		6
 
+.if ${MK_ZFS} != "no"
+# Disable warnings that are currently incompatible with the zfs boot code
+CWARNFLAGS.zfs_module.c += -Wno-array-bounds
+CWARNFLAGS.zfs_module.c += -Wno-cast-align
+CWARNFLAGS.zfs_module.c += -Wno-cast-qual
+CWARNFLAGS.zfs_module.c += -Wno-missing-prototypes
+CWARNFLAGS.zfs_module.c += -Wno-sign-compare
+CWARNFLAGS.zfs_module.c += -Wno-unused-parameter
+CWARNFLAGS.zfs_module.c += -Wno-unused-function
+.endif
+
 # architecture-specific loader code
-SRCS=	boot1.c self_reloc.c start.S
+SRCS=	boot1.c self_reloc.c start.S ufs_module.c
+.if ${MK_ZFS} != "no"
+SRCS+=		zfs_module.c
+.endif
 
 CFLAGS+=	-I.
 CFLAGS+=	-I${.CURDIR}/../include
 CFLAGS+=	-I${.CURDIR}/../include/${MACHINE}
 CFLAGS+=	-I${.CURDIR}/../../../contrib/dev/acpica/include
 CFLAGS+=	-I${.CURDIR}/../../..
+CFLAGS+=	-DEFI_UFS_BOOT
+
+.if ${MK_ZFS} != "no"
+CFLAGS+=	-I${.CURDIR}/../../zfs/
+CFLAGS+=	-I${.CURDIR}/../../../cddl/boot/zfs/
+CFLAGS+=	-DEFI_ZFS_BOOT
+.endif
 
 # Always add MI sources and REGULAR efi loader bits
 .PATH:		${.CURDIR}/../loader/arch/${MACHINE}
@@ -96,8 +114,6 @@ boot1.efifat: boot1.efi
 
 CLEANFILES= boot1.efi boot1.efifat
 
-.endif # ${COMPILER_TYPE} != "gcc"
-
 .include <bsd.prog.mk>
 
 beforedepend ${OBJS}: machine

Modified: projects/clang380-import/sys/boot/efi/boot1/boot1.c
==============================================================================
--- projects/clang380-import/sys/boot/efi/boot1/boot1.c	Fri Jan 15 16:45:36 2016	(r294095)
+++ projects/clang380-import/sys/boot/efi/boot1/boot1.c	Fri Jan 15 17:55:00 2016	(r294096)
@@ -5,6 +5,8 @@
  * All rights reserved.
  * Copyright (c) 2014 Nathan Whitehorn
  * All rights reserved.
+ * Copyright (c) 2015 Eric McCorkle
+ * All rights reserved.
  *
  * Redistribution and use in source and binary forms are freely
  * permitted provided that the above copyright notice and this
@@ -21,7 +23,6 @@
 __FBSDID("$FreeBSD$");
 
 #include <sys/param.h>
-#include <sys/dirent.h>
 #include <machine/elf.h>
 #include <machine/stdarg.h>
 #include <stand.h>
@@ -29,19 +30,32 @@ __FBSDID("$FreeBSD$");
 #include <efi.h>
 #include <eficonsctl.h>
 
+#include "boot_module.h"
+
 #define _PATH_LOADER	"/boot/loader.efi"
-#define _PATH_KERNEL	"/boot/kernel/kernel"
 
-#define BSIZEMAX	16384
+static const boot_module_t *boot_modules[] =
+{
+#ifdef EFI_ZFS_BOOT
+	&zfs_module,
+#endif
+#ifdef EFI_UFS_BOOT
+	&ufs_module
+#endif
+};
+
+#define NUM_BOOT_MODULES (sizeof(boot_modules) / sizeof(boot_module_t*))
+/* The initial number of handles used to query EFI for partitions. */
+#define NUM_HANDLES_INIT	24
 
-void panic(const char *fmt, ...) __dead2;
 void putchar(int c);
 EFI_STATUS efi_main(EFI_HANDLE Ximage, EFI_SYSTEM_TABLE* Xsystab);
 
-static int domount(EFI_DEVICE_PATH *device, EFI_BLOCK_IO *blkio, int quiet);
-static void load(const char *fname);
+static void try_load(const boot_module_t* mod);
+static EFI_STATUS probe_handle(EFI_HANDLE h);
 
-static EFI_SYSTEM_TABLE *systab;
+EFI_SYSTEM_TABLE *systab;
+EFI_BOOT_SERVICES *bs;
 static EFI_HANDLE *image;
 
 static EFI_GUID BlockIoProtocolGUID = BLOCK_IO_PROTOCOL;
@@ -49,27 +63,92 @@ static EFI_GUID DevicePathGUID = DEVICE_
 static EFI_GUID LoadedImageGUID = LOADED_IMAGE_PROTOCOL;
 static EFI_GUID ConsoleControlGUID = EFI_CONSOLE_CONTROL_PROTOCOL_GUID;
 
-static EFI_BLOCK_IO *bootdev;
-static EFI_DEVICE_PATH *bootdevpath;
-static EFI_HANDLE *bootdevhandle;
+/*
+ * Provide Malloc / Free backed by EFIs AllocatePool / FreePool which ensures
+ * memory is correctly aligned avoiding EFI_INVALID_PARAMETER returns from
+ * EFI methods.
+ */
+void *
+Malloc(size_t len, const char *file __unused, int line __unused)
+{
+	void *out;
+
+	if (bs->AllocatePool(EfiLoaderData, len, &out) == EFI_SUCCESS)
+		return (out);
 
-EFI_STATUS efi_main(EFI_HANDLE Ximage, EFI_SYSTEM_TABLE* Xsystab)
+	return (NULL);
+}
+
+void
+Free(void *buf, const char *file __unused, int line __unused)
 {
-	EFI_HANDLE handles[128];
-	EFI_BLOCK_IO *blkio;
-	UINTN i, nparts = sizeof(handles), cols, rows, max_dim, best_mode;
+	(void)bs->FreePool(buf);
+}
+
+/*
+ * This function only returns if it fails to load the kernel. If it
+ * succeeds, it simply boots the kernel.
+ */
+void
+try_load(const boot_module_t *mod)
+{
+	size_t bufsize;
+	void *buf;
+	dev_info_t *dev;
+	EFI_HANDLE loaderhandle;
+	EFI_LOADED_IMAGE *loaded_image;
+	EFI_STATUS status;
+
+	status = mod->load(_PATH_LOADER, &dev, &buf, &bufsize);
+	if (status == EFI_NOT_FOUND)
+		return;
+
+	if (status != EFI_SUCCESS) {
+		printf("%s failed to load %s (%lu)\n", mod->name, _PATH_LOADER,
+		    EFI_ERROR_CODE(status));
+		return;
+	}
+
+	if ((status = bs->LoadImage(TRUE, image, dev->devpath, buf, bufsize,
+	    &loaderhandle)) != EFI_SUCCESS) {
+		printf("Failed to load image provided by %s, size: %zu, (%lu)\n",
+		     mod->name, bufsize, EFI_ERROR_CODE(status));
+		return;
+	}
+
+	if ((status = bs->HandleProtocol(loaderhandle, &LoadedImageGUID,
+	    (VOID**)&loaded_image)) != EFI_SUCCESS) {
+		printf("Failed to query LoadedImage provided by %s (%lu)\n",
+		    mod->name, EFI_ERROR_CODE(status));
+		return;
+	}
+
+	loaded_image->DeviceHandle = dev->devhandle;
+
+	if ((status = bs->StartImage(loaderhandle, NULL, NULL)) !=
+	    EFI_SUCCESS) {
+		printf("Failed start image provided by %s (%lu)\n", mod->name,
+		    EFI_ERROR_CODE(status));
+		return;

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***


More information about the svn-src-projects mailing list