Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 12 Jun 2017 23:50:30 +0000 (UTC)
From:      Rick Macklem <rmacklem@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r319883 - in projects/pnfs-planb-server/sys: amd64/amd64 amd64/cloudabi32 amd64/cloudabi64 amd64/ia32 amd64/include amd64/linux amd64/linux32 arm/allwinner arm/annapurna/alpine arm/arm ...
Message-ID:  <201706122350.v5CNoUDS058859@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: rmacklem
Date: Mon Jun 12 23:50:30 2017
New Revision: 319883
URL: https://svnweb.freebsd.org/changeset/base/319883

Log:
  Update the kernel in the pNFS project to head.

Added:
  projects/pnfs-planb-server/sys/arm/allwinner/aw_console.c
     - copied unchanged from r319882, head/sys/arm/allwinner/aw_console.c
  projects/pnfs-planb-server/sys/arm/annapurna/alpine/alpine_common.c
     - copied unchanged from r319882, head/sys/arm/annapurna/alpine/alpine_common.c
  projects/pnfs-planb-server/sys/arm/freescale/imx/imx_console.c
     - copied unchanged from r319882, head/sys/arm/freescale/imx/imx_console.c
  projects/pnfs-planb-server/sys/arm/mv/mv_pci_ctrl.c
     - copied unchanged from r319882, head/sys/arm/mv/mv_pci_ctrl.c
  projects/pnfs-planb-server/sys/arm/samsung/exynos/exynos5_mp.h
     - copied unchanged from r319882, head/sys/arm/samsung/exynos/exynos5_mp.h
  projects/pnfs-planb-server/sys/arm/xilinx/zy7_mp.h
     - copied unchanged from r319882, head/sys/arm/xilinx/zy7_mp.h
  projects/pnfs-planb-server/sys/compat/linuxkpi/common/src/linux_schedule.c
     - copied unchanged from r319882, head/sys/compat/linuxkpi/common/src/linux_schedule.c
  projects/pnfs-planb-server/sys/conf/kmod_syms_prefix.awk
     - copied unchanged from r319882, head/sys/conf/kmod_syms_prefix.awk
  projects/pnfs-planb-server/sys/contrib/dev/iwm/iwm-7265D-22.fw.uu
     - copied unchanged from r319882, head/sys/contrib/dev/iwm/iwm-7265D-22.fw.uu
  projects/pnfs-planb-server/sys/contrib/dev/iwm/iwm-8000C-22.fw.uu
     - copied unchanged from r319882, head/sys/contrib/dev/iwm/iwm-8000C-22.fw.uu
  projects/pnfs-planb-server/sys/dev/iwm/if_iwm_sf.c
     - copied unchanged from r319882, head/sys/dev/iwm/if_iwm_sf.c
  projects/pnfs-planb-server/sys/dev/iwm/if_iwm_sf.h
     - copied unchanged from r319882, head/sys/dev/iwm/if_iwm_sf.h
  projects/pnfs-planb-server/sys/dev/mii/mii_fdt.c
     - copied unchanged from r319882, head/sys/dev/mii/mii_fdt.c
  projects/pnfs-planb-server/sys/dev/mii/mii_fdt.h
     - copied unchanged from r319882, head/sys/dev/mii/mii_fdt.h
  projects/pnfs-planb-server/sys/dev/mii/vscphy.c
     - copied unchanged from r319882, head/sys/dev/mii/vscphy.c
  projects/pnfs-planb-server/sys/modules/ffec/
     - copied from r319882, head/sys/modules/ffec/
Deleted:
  projects/pnfs-planb-server/sys/arm/allwinner/console.c
  projects/pnfs-planb-server/sys/arm/annapurna/alpine/common.c
  projects/pnfs-planb-server/sys/arm/freescale/imx/console.c
  projects/pnfs-planb-server/sys/arm/freescale/vybrid/vf_common.c
  projects/pnfs-planb-server/sys/arm/samsung/exynos/exynos5_common.c
  projects/pnfs-planb-server/sys/arm/versatile/versatile_timer.c
  projects/pnfs-planb-server/sys/fs/msdosfs/msdosfs_fileno.c
Modified:
  projects/pnfs-planb-server/sys/amd64/amd64/pmap.c
  projects/pnfs-planb-server/sys/amd64/amd64/trap.c
  projects/pnfs-planb-server/sys/amd64/cloudabi32/cloudabi32_sysvec.c
  projects/pnfs-planb-server/sys/amd64/cloudabi64/cloudabi64_sysvec.c
  projects/pnfs-planb-server/sys/amd64/ia32/ia32_syscall.c
  projects/pnfs-planb-server/sys/amd64/include/proc.h
  projects/pnfs-planb-server/sys/amd64/linux/linux_sysvec.c
  projects/pnfs-planb-server/sys/amd64/linux32/linux32_sysvec.c
  projects/pnfs-planb-server/sys/arm/allwinner/files.allwinner
  projects/pnfs-planb-server/sys/arm/annapurna/alpine/files.alpine
  projects/pnfs-planb-server/sys/arm/arm/machdep.c
  projects/pnfs-planb-server/sys/arm/arm/mpcore_timer.c
  projects/pnfs-planb-server/sys/arm/arm/syscall.c
  projects/pnfs-planb-server/sys/arm/cloudabi32/cloudabi32_sysvec.c
  projects/pnfs-planb-server/sys/arm/conf/AML8726
  projects/pnfs-planb-server/sys/arm/conf/ARMADAXP
  projects/pnfs-planb-server/sys/arm/conf/BEAGLEBONE
  projects/pnfs-planb-server/sys/arm/conf/EFIKA_MX
  projects/pnfs-planb-server/sys/arm/conf/EXYNOS5.common
  projects/pnfs-planb-server/sys/arm/conf/IMX53
  projects/pnfs-planb-server/sys/arm/conf/RT1310
  projects/pnfs-planb-server/sys/arm/conf/VYBRID
  projects/pnfs-planb-server/sys/arm/conf/ZEDBOARD
  projects/pnfs-planb-server/sys/arm/freescale/imx/files.imx5
  projects/pnfs-planb-server/sys/arm/freescale/imx/files.imx6
  projects/pnfs-planb-server/sys/arm/freescale/imx/imx51_machdep.c
  projects/pnfs-planb-server/sys/arm/freescale/imx/imx53_machdep.c
  projects/pnfs-planb-server/sys/arm/freescale/vybrid/files.vybrid
  projects/pnfs-planb-server/sys/arm/freescale/vybrid/vf_machdep.c
  projects/pnfs-planb-server/sys/arm/mv/armada38x/rtc.c
  projects/pnfs-planb-server/sys/arm/mv/files.mv
  projects/pnfs-planb-server/sys/arm/mv/mv_common.c
  projects/pnfs-planb-server/sys/arm/mv/mv_pci.c
  projects/pnfs-planb-server/sys/arm/samsung/exynos/exynos5_machdep.c
  projects/pnfs-planb-server/sys/arm/samsung/exynos/exynos5_mp.c
  projects/pnfs-planb-server/sys/arm/samsung/exynos/files.exynos5
  projects/pnfs-planb-server/sys/arm/versatile/files.versatile
  projects/pnfs-planb-server/sys/arm/versatile/sp804.c
  projects/pnfs-planb-server/sys/arm/xilinx/zy7_machdep.c
  projects/pnfs-planb-server/sys/arm/xilinx/zy7_mp.c
  projects/pnfs-planb-server/sys/arm64/arm64/genassym.c
  projects/pnfs-planb-server/sys/arm64/arm64/pmap.c
  projects/pnfs-planb-server/sys/arm64/arm64/swtch.S
  projects/pnfs-planb-server/sys/arm64/arm64/trap.c
  projects/pnfs-planb-server/sys/arm64/cloudabi64/cloudabi64_sysvec.c
  projects/pnfs-planb-server/sys/arm64/include/pcb.h
  projects/pnfs-planb-server/sys/arm64/include/proc.h
  projects/pnfs-planb-server/sys/arm64/include/vfp.h
  projects/pnfs-planb-server/sys/boot/fdt/dts/arm/armada-380.dtsi
  projects/pnfs-planb-server/sys/boot/fdt/dts/arm/armada-385.dtsi
  projects/pnfs-planb-server/sys/boot/fdt/dts/arm/armada-388-gp.dts
  projects/pnfs-planb-server/sys/boot/fdt/dts/arm/armada-38x.dtsi
  projects/pnfs-planb-server/sys/boot/forth/loader.conf
  projects/pnfs-planb-server/sys/cam/ctl/ctl_ha.c
  projects/pnfs-planb-server/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c
  projects/pnfs-planb-server/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c
  projects/pnfs-planb-server/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c
  projects/pnfs-planb-server/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_objset.c
  projects/pnfs-planb-server/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h
  projects/pnfs-planb-server/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_queue.c
  projects/pnfs-planb-server/sys/cddl/dev/dtrace/powerpc/dtrace_subr.c
  projects/pnfs-planb-server/sys/compat/freebsd32/freebsd32_misc.c
  projects/pnfs-planb-server/sys/compat/ia32/ia32_util.h
  projects/pnfs-planb-server/sys/compat/linux/linux_file.c
  projects/pnfs-planb-server/sys/compat/linux/linux_misc.c
  projects/pnfs-planb-server/sys/compat/linuxkpi/common/include/asm/atomic.h
  projects/pnfs-planb-server/sys/compat/linuxkpi/common/include/asm/atomic64.h
  projects/pnfs-planb-server/sys/compat/linuxkpi/common/include/linux/io.h
  projects/pnfs-planb-server/sys/compat/linuxkpi/common/include/linux/pci.h
  projects/pnfs-planb-server/sys/compat/linuxkpi/common/include/linux/sched.h
  projects/pnfs-planb-server/sys/compat/linuxkpi/common/include/linux/wait.h
  projects/pnfs-planb-server/sys/compat/linuxkpi/common/src/linux_compat.c
  projects/pnfs-planb-server/sys/compat/linuxkpi/common/src/linux_idr.c
  projects/pnfs-planb-server/sys/compat/linuxkpi/common/src/linux_kthread.c
  projects/pnfs-planb-server/sys/conf/NOTES
  projects/pnfs-planb-server/sys/conf/config.mk
  projects/pnfs-planb-server/sys/conf/files
  projects/pnfs-planb-server/sys/conf/files.amd64
  projects/pnfs-planb-server/sys/conf/files.i386
  projects/pnfs-planb-server/sys/conf/kmod.mk
  projects/pnfs-planb-server/sys/contrib/dev/ath/ath_hal/ar9300/ar9300_reset.c
  projects/pnfs-planb-server/sys/dev/cxgbe/common/t4_hw.c
  projects/pnfs-planb-server/sys/dev/cxgbe/crypto/t4_crypto.c
  projects/pnfs-planb-server/sys/dev/cxgbe/t4_sge.c
  projects/pnfs-planb-server/sys/dev/etherswitch/e6000sw/e6000sw.c
  projects/pnfs-planb-server/sys/dev/etherswitch/e6000sw/e6000swreg.h
  projects/pnfs-planb-server/sys/dev/ffec/if_ffec.c
  projects/pnfs-planb-server/sys/dev/hyperv/pcib/vmbus_pcib.c
  projects/pnfs-planb-server/sys/dev/iscsi/icl_soft_proxy.c
  projects/pnfs-planb-server/sys/dev/iwm/if_iwm.c
  projects/pnfs-planb-server/sys/dev/iwm/if_iwm_binding.c
  projects/pnfs-planb-server/sys/dev/iwm/if_iwm_debug.h
  projects/pnfs-planb-server/sys/dev/iwm/if_iwm_phy_db.c
  projects/pnfs-planb-server/sys/dev/iwm/if_iwmreg.h
  projects/pnfs-planb-server/sys/dev/iwm/if_iwmvar.h
  projects/pnfs-planb-server/sys/dev/ixl/ixl_txrx.c
  projects/pnfs-planb-server/sys/dev/mii/miidevs
  projects/pnfs-planb-server/sys/dev/mii/miivar.h
  projects/pnfs-planb-server/sys/dev/netmap/if_ixl_netmap.h
  projects/pnfs-planb-server/sys/dev/netmap/netmap.c
  projects/pnfs-planb-server/sys/dev/netmap/netmap_freebsd.c
  projects/pnfs-planb-server/sys/dev/netmap/netmap_generic.c
  projects/pnfs-planb-server/sys/dev/netmap/netmap_kern.h
  projects/pnfs-planb-server/sys/dev/netmap/netmap_mbq.h
  projects/pnfs-planb-server/sys/dev/netmap/netmap_mem2.c
  projects/pnfs-planb-server/sys/dev/netmap/netmap_mem2.h
  projects/pnfs-planb-server/sys/dev/netmap/netmap_monitor.c
  projects/pnfs-planb-server/sys/dev/netmap/netmap_pipe.c
  projects/pnfs-planb-server/sys/dev/netmap/netmap_pt.c
  projects/pnfs-planb-server/sys/dev/netmap/netmap_vale.c
  projects/pnfs-planb-server/sys/dev/rtwn/rtl8188e/r88e_rom_defs.h
  projects/pnfs-planb-server/sys/dev/uart/uart_bus_fdt.c
  projects/pnfs-planb-server/sys/dev/vt/vt_core.c
  projects/pnfs-planb-server/sys/dev/xen/netfront/netfront.c
  projects/pnfs-planb-server/sys/fs/ext2fs/ext2_acl.c
  projects/pnfs-planb-server/sys/fs/ext2fs/ext2_extattr.c
  projects/pnfs-planb-server/sys/fs/ext2fs/ext2_vnops.c
  projects/pnfs-planb-server/sys/fs/msdosfs/denode.h
  projects/pnfs-planb-server/sys/fs/msdosfs/direntry.h
  projects/pnfs-planb-server/sys/fs/msdosfs/fat.h
  projects/pnfs-planb-server/sys/fs/msdosfs/msdosfs_conv.c
  projects/pnfs-planb-server/sys/fs/msdosfs/msdosfs_denode.c
  projects/pnfs-planb-server/sys/fs/msdosfs/msdosfs_fat.c
  projects/pnfs-planb-server/sys/fs/msdosfs/msdosfs_vfsops.c
  projects/pnfs-planb-server/sys/fs/msdosfs/msdosfs_vnops.c
  projects/pnfs-planb-server/sys/fs/msdosfs/msdosfsmount.h
  projects/pnfs-planb-server/sys/i386/cloudabi32/cloudabi32_sysvec.c
  projects/pnfs-planb-server/sys/i386/i386/trap.c
  projects/pnfs-planb-server/sys/i386/include/proc.h
  projects/pnfs-planb-server/sys/i386/linux/linux_sysvec.c
  projects/pnfs-planb-server/sys/kern/init_main.c
  projects/pnfs-planb-server/sys/kern/kern_descrip.c
  projects/pnfs-planb-server/sys/kern/kern_fork.c
  projects/pnfs-planb-server/sys/kern/kern_jail.c
  projects/pnfs-planb-server/sys/kern/kern_proc.c
  projects/pnfs-planb-server/sys/kern/kern_sendfile.c
  projects/pnfs-planb-server/sys/kern/kern_sig.c
  projects/pnfs-planb-server/sys/kern/kern_thread.c
  projects/pnfs-planb-server/sys/kern/kern_uuid.c
  projects/pnfs-planb-server/sys/kern/subr_blist.c
  projects/pnfs-planb-server/sys/kern/subr_param.c
  projects/pnfs-planb-server/sys/kern/subr_syscall.c
  projects/pnfs-planb-server/sys/kern/sys_process.c
  projects/pnfs-planb-server/sys/kern/sys_socket.c
  projects/pnfs-planb-server/sys/kern/uipc_accf.c
  projects/pnfs-planb-server/sys/kern/uipc_debug.c
  projects/pnfs-planb-server/sys/kern/uipc_sockbuf.c
  projects/pnfs-planb-server/sys/kern/uipc_socket.c
  projects/pnfs-planb-server/sys/kern/uipc_syscalls.c
  projects/pnfs-planb-server/sys/kern/uipc_usrreq.c
  projects/pnfs-planb-server/sys/kern/vfs_default.c
  projects/pnfs-planb-server/sys/kern/vfs_subr.c
  projects/pnfs-planb-server/sys/kern/vfs_syscalls.c
  projects/pnfs-planb-server/sys/kern/vnode_if.src
  projects/pnfs-planb-server/sys/libkern/arm64/crc32c_armv8.S
  projects/pnfs-planb-server/sys/mips/include/proc.h
  projects/pnfs-planb-server/sys/mips/mips/stack_machdep.c
  projects/pnfs-planb-server/sys/mips/mips/tlb.c
  projects/pnfs-planb-server/sys/mips/mips/trap.c
  projects/pnfs-planb-server/sys/modules/Makefile
  projects/pnfs-planb-server/sys/modules/iwm/Makefile
  projects/pnfs-planb-server/sys/modules/iwmfw/iwm7265Dfw/Makefile
  projects/pnfs-planb-server/sys/modules/iwmfw/iwm8000Cfw/Makefile
  projects/pnfs-planb-server/sys/modules/linux/Makefile
  projects/pnfs-planb-server/sys/modules/linux64/Makefile
  projects/pnfs-planb-server/sys/modules/linuxkpi/Makefile
  projects/pnfs-planb-server/sys/modules/msdosfs/Makefile
  projects/pnfs-planb-server/sys/modules/rtwn/Makefile
  projects/pnfs-planb-server/sys/netgraph/bluetooth/socket/ng_btsocket_l2cap.c
  projects/pnfs-planb-server/sys/netgraph/bluetooth/socket/ng_btsocket_rfcomm.c
  projects/pnfs-planb-server/sys/netgraph/bluetooth/socket/ng_btsocket_sco.c
  projects/pnfs-planb-server/sys/netgraph/ng_ksocket.c
  projects/pnfs-planb-server/sys/netinet/sctp_input.c
  projects/pnfs-planb-server/sys/netinet/sctp_pcb.c
  projects/pnfs-planb-server/sys/netinet/sctp_syscalls.c
  projects/pnfs-planb-server/sys/netinet/sctp_sysctl.c
  projects/pnfs-planb-server/sys/netinet/sctp_usrreq.c
  projects/pnfs-planb-server/sys/netinet/sctputil.c
  projects/pnfs-planb-server/sys/netinet/tcp_subr.c
  projects/pnfs-planb-server/sys/netinet/tcp_syncache.c
  projects/pnfs-planb-server/sys/netinet/tcp_syncache.h
  projects/pnfs-planb-server/sys/netinet/tcp_timewait.c
  projects/pnfs-planb-server/sys/netinet/tcp_var.h
  projects/pnfs-planb-server/sys/ofed/drivers/infiniband/core/iwcm.c
  projects/pnfs-planb-server/sys/ofed/drivers/infiniband/ulp/sdp/sdp_main.c
  projects/pnfs-planb-server/sys/powerpc/include/proc.h
  projects/pnfs-planb-server/sys/powerpc/powerpc/trap.c
  projects/pnfs-planb-server/sys/riscv/include/proc.h
  projects/pnfs-planb-server/sys/riscv/riscv/trap.c
  projects/pnfs-planb-server/sys/rpc/svc_vc.c
  projects/pnfs-planb-server/sys/sparc64/include/proc.h
  projects/pnfs-planb-server/sys/sparc64/sparc64/trap.c
  projects/pnfs-planb-server/sys/sys/blist.h
  projects/pnfs-planb-server/sys/sys/jail.h
  projects/pnfs-planb-server/sys/sys/module.h
  projects/pnfs-planb-server/sys/sys/param.h
  projects/pnfs-planb-server/sys/sys/proc.h
  projects/pnfs-planb-server/sys/sys/ptrace.h
  projects/pnfs-planb-server/sys/sys/sockbuf.h
  projects/pnfs-planb-server/sys/sys/socket.h
  projects/pnfs-planb-server/sys/sys/socketvar.h
  projects/pnfs-planb-server/sys/sys/sockopt.h
  projects/pnfs-planb-server/sys/sys/sysent.h
  projects/pnfs-planb-server/sys/sys/systm.h
  projects/pnfs-planb-server/sys/sys/unpcb.h
  projects/pnfs-planb-server/sys/sys/uuid.h
  projects/pnfs-planb-server/sys/sys/vnode.h
  projects/pnfs-planb-server/sys/ufs/ffs/ffs_softdep.c
  projects/pnfs-planb-server/sys/ufs/ffs/ffs_vfsops.c
  projects/pnfs-planb-server/sys/ufs/ffs/softdep.h
  projects/pnfs-planb-server/sys/vm/swap_pager.c
  projects/pnfs-planb-server/sys/vm/uma_core.c
  projects/pnfs-planb-server/sys/vm/vm_page.c
  projects/pnfs-planb-server/sys/vm/vm_pageout.c
  projects/pnfs-planb-server/sys/x86/acpica/acpi_wakeup.c
  projects/pnfs-planb-server/sys/x86/x86/identcpu.c
Directory Properties:
  projects/pnfs-planb-server/sys/   (props changed)
  projects/pnfs-planb-server/sys/cddl/contrib/opensolaris/   (props changed)

Modified: projects/pnfs-planb-server/sys/amd64/amd64/pmap.c
==============================================================================
--- projects/pnfs-planb-server/sys/amd64/amd64/pmap.c	Mon Jun 12 23:41:20 2017	(r319882)
+++ projects/pnfs-planb-server/sys/amd64/amd64/pmap.c	Mon Jun 12 23:50:30 2017	(r319883)
@@ -4313,6 +4313,7 @@ pmap_enter(pmap_t pmap, vm_offset_t va, vm_page_t m, v
 	pv_entry_t pv;
 	vm_paddr_t opa, pa;
 	vm_page_t mpte, om;
+	int rv;
 	boolean_t nosleep;
 
 	PG_A = pmap_accessed_bit(pmap);
@@ -4387,10 +4388,8 @@ retry:
 		mpte = _pmap_allocpte(pmap, pmap_pde_pindex(va),
 		    nosleep ? NULL : &lock);
 		if (mpte == NULL && nosleep) {
-			if (lock != NULL)
-				rw_wunlock(lock);
-			PMAP_UNLOCK(pmap);
-			return (KERN_RESOURCE_SHORTAGE);
+			rv = KERN_RESOURCE_SHORTAGE;
+			goto out;
 		}
 		goto retry;
 	} else
@@ -4516,10 +4515,12 @@ unchanged:
 	    vm_reserv_level_iffullpop(m) == 0)
 		pmap_promote_pde(pmap, pde, va, &lock);
 
+	rv = KERN_SUCCESS;
+out:
 	if (lock != NULL)
 		rw_wunlock(lock);
 	PMAP_UNLOCK(pmap);
-	return (KERN_SUCCESS);
+	return (rv);
 }
 
 /*

Modified: projects/pnfs-planb-server/sys/amd64/amd64/trap.c
==============================================================================
--- projects/pnfs-planb-server/sys/amd64/amd64/trap.c	Mon Jun 12 23:41:20 2017	(r319882)
+++ projects/pnfs-planb-server/sys/amd64/amd64/trap.c	Mon Jun 12 23:50:30 2017	(r319883)
@@ -829,16 +829,18 @@ dblfault_handler(struct trapframe *frame)
 }
 
 int
-cpu_fetch_syscall_args(struct thread *td, struct syscall_args *sa)
+cpu_fetch_syscall_args(struct thread *td)
 {
 	struct proc *p;
 	struct trapframe *frame;
 	register_t *argp;
+	struct syscall_args *sa;
 	caddr_t params;
 	int reg, regcnt, error;
 
 	p = td->td_proc;
 	frame = td->td_frame;
+	sa = &td->td_sa;
 	reg = 0;
 	regcnt = 6;
 
@@ -889,7 +891,6 @@ cpu_fetch_syscall_args(struct thread *td, struct sysca
 void
 amd64_syscall(struct thread *td, int traced)
 {
-	struct syscall_args sa;
 	int error;
 	ksiginfo_t ksi;
 
@@ -899,7 +900,7 @@ amd64_syscall(struct thread *td, int traced)
 		/* NOT REACHED */
 	}
 #endif
-	error = syscallenter(td, &sa);
+	error = syscallenter(td);
 
 	/*
 	 * Traced syscall.
@@ -915,15 +916,16 @@ amd64_syscall(struct thread *td, int traced)
 
 	KASSERT(PCB_USER_FPU(td->td_pcb),
 	    ("System call %s returning with kernel FPU ctx leaked",
-	     syscallname(td->td_proc, sa.code)));
+	     syscallname(td->td_proc, td->td_sa.code)));
 	KASSERT(td->td_pcb->pcb_save == get_pcb_user_save_td(td),
 	    ("System call %s returning with mangled pcb_save",
-	     syscallname(td->td_proc, sa.code)));
+	     syscallname(td->td_proc, td->td_sa.code)));
 	KASSERT(td->td_md.md_invl_gen.gen == 0,
 	    ("System call %s returning with leaked invl_gen %lu",
-	    syscallname(td->td_proc, sa.code), td->td_md.md_invl_gen.gen));
+	    syscallname(td->td_proc, td->td_sa.code),
+	    td->td_md.md_invl_gen.gen));
 
-	syscallret(td, error, &sa);
+	syscallret(td, error);
 
 	/*
 	 * If the user-supplied value of %rip is not a canonical

Modified: projects/pnfs-planb-server/sys/amd64/cloudabi32/cloudabi32_sysvec.c
==============================================================================
--- projects/pnfs-planb-server/sys/amd64/cloudabi32/cloudabi32_sysvec.c	Mon Jun 12 23:41:20 2017	(r319882)
+++ projects/pnfs-planb-server/sys/amd64/cloudabi32/cloudabi32_sysvec.c	Mon Jun 12 23:50:30 2017	(r319883)
@@ -90,10 +90,14 @@ cloudabi32_proc_setregs(struct thread *td, struct imag
 }
 
 static int
-cloudabi32_fetch_syscall_args(struct thread *td, struct syscall_args *sa)
+cloudabi32_fetch_syscall_args(struct thread *td)
 {
-	struct trapframe *frame = td->td_frame;
+	struct trapframe *frame;
+	struct syscall_args *sa;
 	int error;
+
+	frame = td->td_frame;
+	sa = &td->td_sa;
 
 	/* Obtain system call number. */
 	sa->code = frame->tf_rax;

Modified: projects/pnfs-planb-server/sys/amd64/cloudabi64/cloudabi64_sysvec.c
==============================================================================
--- projects/pnfs-planb-server/sys/amd64/cloudabi64/cloudabi64_sysvec.c	Mon Jun 12 23:41:20 2017	(r319882)
+++ projects/pnfs-planb-server/sys/amd64/cloudabi64/cloudabi64_sysvec.c	Mon Jun 12 23:50:30 2017	(r319883)
@@ -87,9 +87,13 @@ cloudabi64_proc_setregs(struct thread *td, struct imag
 }
 
 static int
-cloudabi64_fetch_syscall_args(struct thread *td, struct syscall_args *sa)
+cloudabi64_fetch_syscall_args(struct thread *td)
 {
-	struct trapframe *frame = td->td_frame;
+	struct trapframe *frame;
+	struct syscall_args *sa;
+
+	frame = td->td_frame;
+	sa = &td->td_sa;
 
 	/* Obtain system call number. */
 	sa->code = frame->tf_rax;

Modified: projects/pnfs-planb-server/sys/amd64/ia32/ia32_syscall.c
==============================================================================
--- projects/pnfs-planb-server/sys/amd64/ia32/ia32_syscall.c	Mon Jun 12 23:41:20 2017	(r319882)
+++ projects/pnfs-planb-server/sys/amd64/ia32/ia32_syscall.c	Mon Jun 12 23:50:30 2017	(r319883)
@@ -105,16 +105,18 @@ ia32_set_syscall_retval(struct thread *td, int error)
 }
 
 int
-ia32_fetch_syscall_args(struct thread *td, struct syscall_args *sa)
+ia32_fetch_syscall_args(struct thread *td)
 {
 	struct proc *p;
 	struct trapframe *frame;
+	struct syscall_args *sa;
 	caddr_t params;
 	u_int32_t args[8], tmp;
 	int error, i;
 
 	p = td->td_proc;
 	frame = td->td_frame;
+	sa = &td->td_sa;
 
 	params = (caddr_t)frame->tf_rsp + sizeof(u_int32_t);
 	sa->code = frame->tf_rax;
@@ -175,7 +177,6 @@ void
 ia32_syscall(struct trapframe *frame)
 {
 	struct thread *td;
-	struct syscall_args sa;
 	register_t orig_tf_rflags;
 	int error;
 	ksiginfo_t ksi;
@@ -184,7 +185,7 @@ ia32_syscall(struct trapframe *frame)
 	td = curthread;
 	td->td_frame = frame;
 
-	error = syscallenter(td, &sa);
+	error = syscallenter(td);
 
 	/*
 	 * Traced syscall.
@@ -198,7 +199,7 @@ ia32_syscall(struct trapframe *frame)
 		trapsignal(td, &ksi);
 	}
 
-	syscallret(td, error, &sa);
+	syscallret(td, error);
 }
 
 static void

Modified: projects/pnfs-planb-server/sys/amd64/include/proc.h
==============================================================================
--- projects/pnfs-planb-server/sys/amd64/include/proc.h	Mon Jun 12 23:41:20 2017	(r319882)
+++ projects/pnfs-planb-server/sys/amd64/include/proc.h	Mon Jun 12 23:50:30 2017	(r319883)
@@ -70,6 +70,13 @@ struct mdproc {
 #define	KINFO_PROC_SIZE 1088
 #define	KINFO_PROC32_SIZE 768
 
+struct syscall_args {
+	u_int code;
+	struct sysent *callp;
+	register_t args[8];
+	int narg;
+};
+
 #ifdef	_KERNEL
 
 /* Get the current kernel thread stack usage. */
@@ -92,13 +99,6 @@ int amd64_set_ldt_data(struct thread *td, int start, i
 
 extern struct mtx dt_lock;
 extern int max_ldt_segment;
-
-struct syscall_args {
-	u_int code;
-	struct sysent *callp;
-	register_t args[8];
-	int narg;
-};
 #endif  /* _KERNEL */
 
 #endif /* !_MACHINE_PROC_H_ */

Modified: projects/pnfs-planb-server/sys/amd64/linux/linux_sysvec.c
==============================================================================
--- projects/pnfs-planb-server/sys/amd64/linux/linux_sysvec.c	Mon Jun 12 23:41:20 2017	(r319882)
+++ projects/pnfs-planb-server/sys/amd64/linux/linux_sysvec.c	Mon Jun 12 23:50:30 2017	(r319883)
@@ -126,7 +126,7 @@ static boolean_t linux_trans_osrel(const Elf_Note *not
 static void	linux_vdso_install(void *param);
 static void	linux_vdso_deinstall(void *param);
 static void	linux_set_syscall_retval(struct thread *td, int error);
-static int	linux_fetch_syscall_args(struct thread *td, struct syscall_args *sa);
+static int	linux_fetch_syscall_args(struct thread *td);
 static void	linux_exec_setregs(struct thread *td, struct image_params *imgp,
 		    u_long stack);
 static int	linux_vsyscall(struct thread *td);
@@ -217,13 +217,15 @@ translate_traps(int signal, int trap_code)
 }
 
 static int
-linux_fetch_syscall_args(struct thread *td, struct syscall_args *sa)
+linux_fetch_syscall_args(struct thread *td)
 {
 	struct proc *p;
 	struct trapframe *frame;
+	struct syscall_args *sa;
 
 	p = td->td_proc;
 	frame = td->td_frame;
+	sa = &td->td_sa;
 
 	sa->args[0] = frame->tf_rdi;
 	sa->args[1] = frame->tf_rsi;

Modified: projects/pnfs-planb-server/sys/amd64/linux32/linux32_sysvec.c
==============================================================================
--- projects/pnfs-planb-server/sys/amd64/linux32/linux32_sysvec.c	Mon Jun 12 23:41:20 2017	(r319882)
+++ projects/pnfs-planb-server/sys/amd64/linux32/linux32_sysvec.c	Mon Jun 12 23:50:30 2017	(r319883)
@@ -725,13 +725,15 @@ linux_rt_sigreturn(struct thread *td, struct linux_rt_
 }
 
 static int
-linux32_fetch_syscall_args(struct thread *td, struct syscall_args *sa)
+linux32_fetch_syscall_args(struct thread *td)
 {
 	struct proc *p;
 	struct trapframe *frame;
+	struct syscall_args *sa;
 
 	p = td->td_proc;
 	frame = td->td_frame;
+	sa = &td->td_sa;
 
 	sa->args[0] = frame->tf_rbx;
 	sa->args[1] = frame->tf_rcx;

Copied: projects/pnfs-planb-server/sys/arm/allwinner/aw_console.c (from r319882, head/sys/arm/allwinner/aw_console.c)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/pnfs-planb-server/sys/arm/allwinner/aw_console.c	Mon Jun 12 23:50:30 2017	(r319883, copy of r319882, head/sys/arm/allwinner/aw_console.c)
@@ -0,0 +1,142 @@
+/*-
+ * Copyright (c) 2012 Ganbold Tsagaankhuu <ganbold@freebsd.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/* Simple UART console driver for Allwinner A10 */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <sys/types.h>
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/cons.h>
+#include <sys/consio.h>
+#include <sys/kernel.h>
+
+#ifndef	A10_UART_BASE
+#define	A10_UART_BASE	0xe1c28000 	/* UART0 */
+#endif
+
+#define	REG_SHIFT	2
+
+#define	UART_DLL	0	/* Out: Divisor Latch Low */
+#define	UART_DLM	1	/* Out: Divisor Latch High */
+#define	UART_FCR	2	/* Out: FIFO Control Register */
+#define	UART_LCR	3	/* Out: Line Control Register */
+#define	UART_MCR	4	/* Out: Modem Control Register */
+#define	UART_LSR	5	/* In:  Line Status Register */
+#define	UART_LSR_THRE	0x20	/* Transmit-hold-register empty */
+#define	UART_LSR_DR	0x01	/* Receiver data ready */
+#define	UART_MSR	6	/* In:  Modem Status Register */
+#define	UART_SCR	7	/* I/O: Scratch Register */
+
+static uint32_t
+uart_getreg(uint32_t *bas)
+{
+	return *((volatile uint32_t *)(bas)) & 0xff;
+}
+
+static void
+uart_setreg(uint32_t *bas, uint32_t val)
+{
+	*((volatile uint32_t *)(bas)) = val;
+}
+
+static int
+ub_getc(void)
+{
+	while ((uart_getreg((uint32_t *)(A10_UART_BASE + 
+	    (UART_LSR << REG_SHIFT))) & UART_LSR_DR) == 0);
+		__asm __volatile("nop");
+
+	return (uart_getreg((uint32_t *)A10_UART_BASE) & 0xff);
+}
+
+static void
+ub_putc(unsigned char c)
+{
+	if (c == '\n')
+		ub_putc('\r');
+
+	while ((uart_getreg((uint32_t *)(A10_UART_BASE + 
+	    (UART_LSR << REG_SHIFT))) & UART_LSR_THRE) == 0)
+		__asm __volatile("nop");
+
+	uart_setreg((uint32_t *)A10_UART_BASE, c);
+}
+
+static cn_probe_t	uart_cnprobe;
+static cn_init_t	uart_cninit;
+static cn_term_t	uart_cnterm;
+static cn_getc_t	uart_cngetc;
+static cn_putc_t	uart_cnputc;
+static cn_grab_t	uart_cngrab;
+static cn_ungrab_t	uart_cnungrab;
+
+static void
+uart_cngrab(struct consdev *cp)
+{
+}
+
+static void
+uart_cnungrab(struct consdev *cp)
+{
+}
+
+
+static void
+uart_cnprobe(struct consdev *cp)
+{
+	sprintf(cp->cn_name, "uart");
+	cp->cn_pri = CN_NORMAL;
+}
+
+static void
+uart_cninit(struct consdev *cp)
+{
+	uart_setreg((uint32_t *)(A10_UART_BASE + 
+	    (UART_FCR << REG_SHIFT)), 0x06);
+}
+
+void
+uart_cnputc(struct consdev *cp, int c)
+{
+	ub_putc(c);
+}
+
+int
+uart_cngetc(struct consdev * cp)
+{
+	return ub_getc();
+}
+
+static void
+uart_cnterm(struct consdev * cp)
+{
+}
+
+CONSOLE_DRIVER(uart);
+

Modified: projects/pnfs-planb-server/sys/arm/allwinner/files.allwinner
==============================================================================
--- projects/pnfs-planb-server/sys/arm/allwinner/files.allwinner	Mon Jun 12 23:41:20 2017	(r319882)
+++ projects/pnfs-planb-server/sys/arm/allwinner/files.allwinner	Mon Jun 12 23:50:30 2017	(r319883)
@@ -30,7 +30,7 @@ arm/allwinner/aw_sid.c			standard
 arm/allwinner/aw_thermal.c		standard
 dev/iicbus/sy8106a.c			optional	sy8106a
 arm/allwinner/aw_cir.c			optional	aw_cir evdev
-#arm/allwinner/console.c		standard
+#arm/allwinner/aw_console.c		standard
 
 arm/allwinner/a10_fb.c			optional	vt
 arm/allwinner/a10_hdmi.c		optional	hdmi

Copied: projects/pnfs-planb-server/sys/arm/annapurna/alpine/alpine_common.c (from r319882, head/sys/arm/annapurna/alpine/alpine_common.c)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/pnfs-planb-server/sys/arm/annapurna/alpine/alpine_common.c	Mon Jun 12 23:50:30 2017	(r319883, copy of r319882, head/sys/arm/annapurna/alpine/alpine_common.c)
@@ -0,0 +1,159 @@
+/*-
+ * Copyright (c) 2013 Ruslan Bukin <br@bsdpad.com>
+ * Copyright (c) 2015 Semihalf.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include "opt_platform.h"
+
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/bus.h>
+#include <sys/kernel.h>
+
+#include <dev/fdt/fdt_common.h>
+#include <dev/ofw/openfirm.h>
+
+#include <machine/bus.h>
+#include <machine/fdt.h>
+#include <machine/intr.h>
+
+#define WDTLOAD		0x000
+#define LOAD_MIN	0x00000001
+#define LOAD_MAX	0xFFFFFFFF
+#define WDTVALUE	0x004
+#define WDTCONTROL	0x008
+/* control register masks */
+#define INT_ENABLE	(1 << 0)
+#define RESET_ENABLE	(1 << 1)
+#define WDTLOCK		0xC00
+#define UNLOCK		0x1ACCE551
+#define LOCK		0x00000001
+
+extern bus_addr_t  al_devmap_pa;
+
+static int alpine_get_wdt_base(uint32_t *pbase, uint32_t *psize);
+static int alpine_pic_decode_fdt(uint32_t iparent, uint32_t *intr,
+    int *interrupt, int *trig, int *pol);
+
+int alpine_get_devmap_base(bus_addr_t *pa, bus_addr_t *size);
+
+int alpine_get_devmap_base(bus_addr_t *pa, bus_addr_t *size)
+{
+	phandle_t node;
+
+	if ((node = OF_finddevice("/")) == 0)
+		return (ENXIO);
+
+	if ((node = fdt_find_compatible(node, "simple-bus", 1)) == 0)
+		return (ENXIO);
+
+	return fdt_get_range(node, 0, pa, size);
+}
+
+static int
+alpine_get_wdt_base(uint32_t *pbase, uint32_t *psize)
+{
+	phandle_t node;
+	u_long base = 0;
+	u_long size = 0;
+
+	if (pbase == NULL || psize == NULL)
+		return (EINVAL);
+
+	if ((node = OF_finddevice("/")) == -1)
+		return (EFAULT);
+
+	if ((node = fdt_find_compatible(node, "simple-bus", 1)) == 0)
+		return (EFAULT);
+
+	if ((node =
+	    fdt_find_compatible(node, "arm,sp805", 1)) == 0)
+		return (EFAULT);
+
+	if (fdt_regsize(node, &base, &size))
+		return (EFAULT);
+
+	*pbase = base;
+	*psize = size;
+
+	return (0);
+}
+
+void
+cpu_reset(void)
+{
+	uint32_t wdbase, wdsize;
+	bus_addr_t wdbaddr;
+	int ret;
+
+	ret = alpine_get_wdt_base(&wdbase, &wdsize);
+	if (ret) {
+		printf("Unable to get WDT base, do power down manually...");
+		goto infinite;
+	}
+
+	ret = bus_space_map(fdtbus_bs_tag, al_devmap_pa + wdbase,
+	    wdsize, 0, &wdbaddr);
+	if (ret) {
+		printf("Unable to map WDT base, do power down manually...");
+		goto infinite;
+	}
+
+	bus_space_write_4(fdtbus_bs_tag, wdbaddr, WDTLOCK, UNLOCK);
+	bus_space_write_4(fdtbus_bs_tag, wdbaddr, WDTLOAD, LOAD_MIN);
+	bus_space_write_4(fdtbus_bs_tag, wdbaddr, WDTCONTROL, INT_ENABLE | RESET_ENABLE);
+
+infinite:
+	while (1) {}
+}
+
+#ifndef INTRNG
+static int
+alpine_pic_decode_fdt(uint32_t iparent, uint32_t *intr, int *interrupt,
+    int *trig, int *pol)
+{
+	int rv = 0;
+
+	rv = gic_decode_fdt(iparent, intr, interrupt, trig, pol);
+	if (rv == 0) {
+		/* This was recognized as our PIC and decoded. */
+		interrupt = FDT_MAP_IRQ(iparent, interrupt);
+
+		/* Configure the interrupt if callback provided */
+		if (arm_config_irq)
+			(*arm_config_irq)(*interrupt, *trig, *pol);
+	}
+	return (rv);
+}
+
+fdt_pic_decode_t fdt_pic_table[] = {
+	&alpine_pic_decode_fdt,
+	NULL
+};
+#endif

Modified: projects/pnfs-planb-server/sys/arm/annapurna/alpine/files.alpine
==============================================================================
--- projects/pnfs-planb-server/sys/arm/annapurna/alpine/files.alpine	Mon Jun 12 23:41:20 2017	(r319882)
+++ projects/pnfs-planb-server/sys/arm/annapurna/alpine/files.alpine	Mon Jun 12 23:50:30 2017	(r319883)
@@ -3,9 +3,8 @@
 kern/kern_clocksource.c				standard
 
 arm/versatile/sp804.c				standard
-arm/versatile/versatile_timer.c			standard
 dev/uart/uart_dev_ns8250.c			optional	uart
 
-arm/annapurna/alpine/common.c			standard
+arm/annapurna/alpine/alpine_common.c		standard
 arm/annapurna/alpine/alpine_machdep.c		standard
 arm/annapurna/alpine/alpine_machdep_mp.c	optional	smp

Modified: projects/pnfs-planb-server/sys/arm/arm/machdep.c
==============================================================================
--- projects/pnfs-planb-server/sys/arm/arm/machdep.c	Mon Jun 12 23:41:20 2017	(r319882)
+++ projects/pnfs-planb-server/sys/arm/arm/machdep.c	Mon Jun 12 23:50:30 2017	(r319883)
@@ -103,6 +103,10 @@ __FBSDID("$FreeBSD$");
 #error FreeBSD/arm doesn't provide compatibility with releases prior to 10
 #endif
 
+#if __ARM_ARCH >= 6 && !defined(INTRNG)
+#error armv6 requires INTRNG
+#endif
+
 struct pcpu __pcpu[MAXCPU];
 struct pcpu *pcpup = &__pcpu[0];
 
@@ -297,6 +301,7 @@ cpu_idle_wakeup(int cpu)
 	return (0);
 }
 
+#ifdef NO_EVENTTIMERS
 /*
  * Most ARM platforms don't need to do anything special to init their clocks
  * (they get intialized during normal device attachment), and by not defining a
@@ -307,8 +312,14 @@ cpu_idle_wakeup(int cpu)
 void
 arm_generic_initclocks(void)
 {
+}
+__weak_reference(arm_generic_initclocks, cpu_initclocks);
 
-#ifndef NO_EVENTTIMERS
+#else
+void
+cpu_initclocks(void)
+{
+
 #ifdef SMP
 	if (PCPU_GET(cpuid) == 0)
 		cpu_initclocks_bsp();
@@ -317,9 +328,8 @@ arm_generic_initclocks(void)
 #else
 	cpu_initclocks_bsp();
 #endif
-#endif
 }
-__weak_reference(arm_generic_initclocks, cpu_initclocks);
+#endif
 
 #ifdef MULTIDELAY
 void

Modified: projects/pnfs-planb-server/sys/arm/arm/mpcore_timer.c
==============================================================================
--- projects/pnfs-planb-server/sys/arm/arm/mpcore_timer.c	Mon Jun 12 23:41:20 2017	(r319882)
+++ projects/pnfs-planb-server/sys/arm/arm/mpcore_timer.c	Mon Jun 12 23:50:30 2017	(r319883)
@@ -59,6 +59,10 @@ __FBSDID("$FreeBSD$");
 #include <machine/cpu.h>
 #include <machine/intr.h>
 
+#ifdef MULTIDELAY
+#include <machine/machdep.h> /* For arm_set_delay */
+#endif
+
 #include <dev/ofw/openfirm.h>
 #include <dev/ofw/ofw_bus.h>
 #include <dev/ofw/ofw_bus_subr.h>
@@ -115,6 +119,8 @@ static boolean_t arm_tmr_freq_varies;
 #define	tmr_gbl_read_4(sc, reg)         bus_read_4((sc)->gbl_mem, reg)
 #define	tmr_gbl_write_4(sc, reg, val)   bus_write_4((sc)->gbl_mem, reg, val)
 
+static void arm_tmr_delay(int, void *);
+
 static timecounter_get_t arm_tmr_get_timecount;
 
 static struct timecounter arm_tmr_timecount = {
@@ -431,6 +437,11 @@ arm_tmr_attach(device_t dev)
 	if (tc_err != 0 && et_err != 0) {
 		return (ENXIO);
 	}
+
+#ifdef MULTIDELAY
+	arm_set_delay(arm_tmr_delay, sc);
+#endif
+
 	return (0);
 }
 
@@ -482,37 +493,14 @@ arm_tmr_change_frequency(uint64_t newfreq)
 		et_change_frequency(arm_tmr_et, newfreq);
 }
 
-/**
- *	DELAY - Delay for at least usec microseconds.
- *	@usec: number of microseconds to delay by
- *
- *	This function is called all over the kernel and is suppose to provide a
- *	consistent delay.  This function may also be called before the console
- *	is setup so no printf's can be called here.
- *
- *	RETURNS:
- *	nothing
- */
-static void __used /* Must emit function code for the weak ref below. */
-arm_tmr_DELAY(int usec)
+static void
+arm_tmr_delay(int usec, void *arg)
 {
-	struct arm_tmr_softc *sc;
+	struct arm_tmr_softc *sc = arg;
 	int32_t counts_per_usec;
 	int32_t counts;
 	uint32_t first, last;
 
-	/* Check the timers are setup, if not just use a for loop for the meantime */
-	if (arm_tmr_tc == NULL || arm_tmr_timecount.tc_frequency == 0) {
-		for (; usec > 0; usec--)
-			for (counts = 200; counts > 0; counts--)
-				cpufunc_nullop();	/* Prevent gcc from optimizing
-							 * out the loop
-							 */
-		return;
-	}
-
-	sc = arm_tmr_tc->tc_priv;
-
 	/* Get the number of times to count */
 	counts_per_usec = ((arm_tmr_timecount.tc_frequency / 1000000) + 1);
 
@@ -536,10 +524,34 @@ arm_tmr_DELAY(int usec)
 	}
 }
 
-/*
- * Supply a DELAY() implementation via weak linkage.  A platform may want to use
- * the mpcore per-cpu eventtimers but provide its own DELAY() routine,
- * especially when the core frequency can change on the fly.
+#ifndef MULTIDELAY
+/**
+ *	DELAY - Delay for at least usec microseconds.
+ *	@usec: number of microseconds to delay by
+ *
+ *	This function is called all over the kernel and is suppose to provide a
+ *	consistent delay.  This function may also be called before the console
+ *	is setup so no printf's can be called here.
+ *
+ *	RETURNS:
+ *	nothing
  */
-__weak_reference(arm_tmr_DELAY, DELAY);
+void
+DELAY(int usec)
+{
+	struct arm_tmr_softc *sc;
+	int32_t counts;
 
+	/* Check the timers are setup, if not just use a for loop for the meantime */
+	if (arm_tmr_tc == NULL || arm_tmr_timecount.tc_frequency == 0) {
+		for (; usec > 0; usec--)
+			for (counts = 200; counts > 0; counts--)
+				cpufunc_nullop();	/* Prevent gcc from optimizing
+							 * out the loop
+							 */
+	} else {
+		sc = arm_tmr_tc->tc_priv;
+		arm_tmr_delay(usec, sc);
+	}
+}
+#endif

Modified: projects/pnfs-planb-server/sys/arm/arm/syscall.c
==============================================================================
--- projects/pnfs-planb-server/sys/arm/arm/syscall.c	Mon Jun 12 23:41:20 2017	(r319882)
+++ projects/pnfs-planb-server/sys/arm/arm/syscall.c	Mon Jun 12 23:50:30 2017	(r319883)
@@ -99,12 +99,14 @@ __FBSDID("$FreeBSD$");
 void swi_handler(struct trapframe *);
 
 int
-cpu_fetch_syscall_args(struct thread *td, struct syscall_args *sa)
+cpu_fetch_syscall_args(struct thread *td)
 {
 	struct proc *p;
 	register_t *ap;
+	struct syscall_args *sa;
 	int error;
 
+	sa = &td->td_sa;
 	sa->code = td->td_frame->tf_r7;
 	ap = &td->td_frame->tf_r0;
 	if (sa->code == SYS_syscall) {
@@ -141,15 +143,14 @@ cpu_fetch_syscall_args(struct thread *td, struct sysca
 static void
 syscall(struct thread *td, struct trapframe *frame)
 {
-	struct syscall_args sa;
 	int error;
 
-	sa.nap = 4;
+	td->td_sa.nap = 4;
 
-	error = syscallenter(td, &sa);
+	error = syscallenter(td);
 	KASSERT(error != 0 || td->td_ar == NULL,
 	    ("returning from syscall with td_ar set!"));
-	syscallret(td, error, &sa);
+	syscallret(td, error);
 }
 
 void

Modified: projects/pnfs-planb-server/sys/arm/cloudabi32/cloudabi32_sysvec.c
==============================================================================
--- projects/pnfs-planb-server/sys/arm/cloudabi32/cloudabi32_sysvec.c	Mon Jun 12 23:41:20 2017	(r319882)
+++ projects/pnfs-planb-server/sys/arm/cloudabi32/cloudabi32_sysvec.c	Mon Jun 12 23:50:30 2017	(r319883)
@@ -67,10 +67,14 @@ cloudabi32_proc_setregs(struct thread *td, struct imag
 }
 
 static int
-cloudabi32_fetch_syscall_args(struct thread *td, struct syscall_args *sa)
+cloudabi32_fetch_syscall_args(struct thread *td)
 {
-	struct trapframe *frame = td->td_frame;
+	struct trapframe *frame;
+	struct syscall_args *sa;
 	int error;
+
+	frame = td->td_frame;
+	sa = &td->td_sa;
 
 	/* Obtain system call number. */
 	sa->code = frame->tf_r12;

Modified: projects/pnfs-planb-server/sys/arm/conf/AML8726
==============================================================================
--- projects/pnfs-planb-server/sys/arm/conf/AML8726	Mon Jun 12 23:41:20 2017	(r319882)
+++ projects/pnfs-planb-server/sys/arm/conf/AML8726	Mon Jun 12 23:50:30 2017	(r319883)
@@ -18,6 +18,9 @@
 #
 # $FreeBSD$
 
+# TODO: Port to INTRNG
+#NO_UNIVERSE
+
 ident		AML8726
 
 include 	"std.armv6"

Modified: projects/pnfs-planb-server/sys/arm/conf/ARMADAXP
==============================================================================
--- projects/pnfs-planb-server/sys/arm/conf/ARMADAXP	Mon Jun 12 23:41:20 2017	(r319882)
+++ projects/pnfs-planb-server/sys/arm/conf/ARMADAXP	Mon Jun 12 23:50:30 2017	(r319883)
@@ -18,6 +18,9 @@
 #
 # $FreeBSD$
 
+# TODO: Port to INTRNG
+#NO_UNIVERSE
+
 ident		MV-88F78XX0
 
 include 	"std.armv6"

Modified: projects/pnfs-planb-server/sys/arm/conf/BEAGLEBONE
==============================================================================
--- projects/pnfs-planb-server/sys/arm/conf/BEAGLEBONE	Mon Jun 12 23:41:20 2017	(r319882)
+++ projects/pnfs-planb-server/sys/arm/conf/BEAGLEBONE	Mon Jun 12 23:50:30 2017	(r319883)
@@ -29,6 +29,7 @@ include 	"../ti/am335x/std.am335x"
 makeoptions	MODULES_EXTRA="dtb/am335x am335x_dmtpps"
 
 options 	INTRNG
+options 	MULTIDELAY
 
 options 	SCHED_4BSD		# 4BSD scheduler
 options 	PLATFORM

Modified: projects/pnfs-planb-server/sys/arm/conf/EFIKA_MX
==============================================================================
--- projects/pnfs-planb-server/sys/arm/conf/EFIKA_MX	Mon Jun 12 23:41:20 2017	(r319882)
+++ projects/pnfs-planb-server/sys/arm/conf/EFIKA_MX	Mon Jun 12 23:50:30 2017	(r319883)
@@ -31,6 +31,7 @@ options 	SCHED_4BSD		# 4BSD scheduler
 #options 	MD_ROOT			# MD is a potential root device
 #options 	NFSD			# Network Filesystem Server
 options 	PLATFORM
+options 	MULTIDELAY
 options 	INCLUDE_CONFIG_FILE	# Include this file in kernel
 
 # NFS root from boopt/dhcp

Modified: projects/pnfs-planb-server/sys/arm/conf/EXYNOS5.common
==============================================================================
--- projects/pnfs-planb-server/sys/arm/conf/EXYNOS5.common	Mon Jun 12 23:41:20 2017	(r319882)
+++ projects/pnfs-planb-server/sys/arm/conf/EXYNOS5.common	Mon Jun 12 23:50:30 2017	(r319883)
@@ -22,6 +22,8 @@ makeoptions	WERROR="-Werror"
 
 include 	"std.armv6"
 options 	SCHED_ULE		# ULE scheduler
+options 	PLATFORM		# Platform based SoC
+options 	PLATFORM_SMP
 options 	PREEMPTION		# Enable kernel thread preemption
 options 	INET			# InterNETworking
 options 	INET6			# IPv6 communications protocols

Modified: projects/pnfs-planb-server/sys/arm/conf/IMX53
==============================================================================
--- projects/pnfs-planb-server/sys/arm/conf/IMX53	Mon Jun 12 23:41:20 2017	(r319882)
+++ projects/pnfs-planb-server/sys/arm/conf/IMX53	Mon Jun 12 23:50:30 2017	(r319883)
@@ -28,6 +28,7 @@ options 	SOC_IMX53
 options 	SCHED_4BSD		# 4BSD scheduler
 #options 	NFSD			# Network Filesystem Server
 options 	PLATFORM
+options 	MULTIDELAY
 options 	INCLUDE_CONFIG_FILE	# Include this file in kernel
 
 # kernel/memory size reduction

Modified: projects/pnfs-planb-server/sys/arm/conf/RT1310
==============================================================================
--- projects/pnfs-planb-server/sys/arm/conf/RT1310	Mon Jun 12 23:41:20 2017	(r319882)
+++ projects/pnfs-planb-server/sys/arm/conf/RT1310	Mon Jun 12 23:50:30 2017	(r319883)
@@ -3,6 +3,8 @@
 #
 # $FreeBSD$
 #
+# TODO: This fails to build under universe, irnore it until it's fixed
+#NO_UNIVERSE
 
 ident		RT1310
 include 	"std.arm"

Modified: projects/pnfs-planb-server/sys/arm/conf/VYBRID
==============================================================================
--- projects/pnfs-planb-server/sys/arm/conf/VYBRID	Mon Jun 12 23:41:20 2017	(r319882)
+++ projects/pnfs-planb-server/sys/arm/conf/VYBRID	Mon Jun 12 23:50:30 2017	(r319883)
@@ -25,6 +25,7 @@ include 	"../freescale/vybrid/std.vybrid"
 makeoptions	WERROR="-Werror"
 
 options 	SCHED_4BSD		# 4BSD scheduler
+options 	PLATFORM		# Platform based SoC
 #options 	NANDFS			# NAND Filesystem
 #options 	SMP			# Enable multiple cores
 

Modified: projects/pnfs-planb-server/sys/arm/conf/ZEDBOARD
==============================================================================
--- projects/pnfs-planb-server/sys/arm/conf/ZEDBOARD	Mon Jun 12 23:41:20 2017	(r319882)
+++ projects/pnfs-planb-server/sys/arm/conf/ZEDBOARD	Mon Jun 12 23:50:30 2017	(r319883)
@@ -27,6 +27,8 @@ include 	"../xilinx/std.zynq7"
 makeoptions	MODULES_EXTRA="dtb/zynq"
 
 options 	SCHED_ULE		# ULE scheduler
+options 	PLATFORM		# Platform based SoC
+options 	PLATFORM_SMP
 #options 	NFSSD			# Network Filesystem Server
 options 	SMP			# Enable multiple cores
 

Modified: projects/pnfs-planb-server/sys/arm/freescale/imx/files.imx5
==============================================================================
--- projects/pnfs-planb-server/sys/arm/freescale/imx/files.imx5	Mon Jun 12 23:41:20 2017	(r319882)
+++ projects/pnfs-planb-server/sys/arm/freescale/imx/files.imx5	Mon Jun 12 23:50:30 2017	(r319883)
@@ -8,7 +8,7 @@ arm/freescale/imx/imx51_machdep.c	optional	soc_imx51
 arm/freescale/imx/imx53_machdep.c	optional	soc_imx53
 
 # Special serial console for debuging early boot code
-#arm/freescale/imx/console.c		standard
+#arm/freescale/imx/imx_console.c	standard
 
 # UART driver (includes serial console support)
 dev/uart/uart_dev_imx.c			optional uart

Modified: projects/pnfs-planb-server/sys/arm/freescale/imx/files.imx6
==============================================================================
--- projects/pnfs-planb-server/sys/arm/freescale/imx/files.imx6	Mon Jun 12 23:41:20 2017	(r319882)
+++ projects/pnfs-planb-server/sys/arm/freescale/imx/files.imx6	Mon Jun 12 23:50:30 2017	(r319883)
@@ -47,7 +47,7 @@ arm/freescale/imx/imx6_usbphy.c		optional ehci
 #
 # Low-level serial console for debugging early kernel startup.
 #
-#arm/freescale/imx/console.c  		standard
+#arm/freescale/imx/imx_console.c  	standard
 
 #
 # Not ready yet...

Modified: projects/pnfs-planb-server/sys/arm/freescale/imx/imx51_machdep.c
==============================================================================
--- projects/pnfs-planb-server/sys/arm/freescale/imx/imx51_machdep.c	Mon Jun 12 23:41:20 2017	(r319882)
+++ projects/pnfs-planb-server/sys/arm/freescale/imx/imx51_machdep.c	Mon Jun 12 23:50:30 2017	(r319883)
@@ -99,4 +99,4 @@ static platform_method_t imx51_methods[] = {
 	PLATFORMMETHOD_END,
 };
 
-FDT_PLATFORM_DEF(imx51, "i.MX51", 0, "fsl,imx51", 0);
+FDT_PLATFORM_DEF(imx51, "i.MX51", 0, "fsl,imx51", 100);

Modified: projects/pnfs-planb-server/sys/arm/freescale/imx/imx53_machdep.c
==============================================================================
--- projects/pnfs-planb-server/sys/arm/freescale/imx/imx53_machdep.c	Mon Jun 12 23:41:20 2017	(r319882)
+++ projects/pnfs-planb-server/sys/arm/freescale/imx/imx53_machdep.c	Mon Jun 12 23:50:30 2017	(r319883)
@@ -95,5 +95,4 @@ static platform_method_t imx53_methods[] = {
 	PLATFORMMETHOD_END,
 };
 
-FDT_PLATFORM_DEF(imx53, "i.MX53", 0, "fsl,imx53", 0);
-
+FDT_PLATFORM_DEF(imx53, "i.MX53", 0, "fsl,imx53", 100);

Copied: projects/pnfs-planb-server/sys/arm/freescale/imx/imx_console.c (from r319882, head/sys/arm/freescale/imx/imx_console.c)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/pnfs-planb-server/sys/arm/freescale/imx/imx_console.c	Mon Jun 12 23:50:30 2017	(r319883, copy of r319882, head/sys/arm/freescale/imx/imx_console.c)
@@ -0,0 +1,177 @@
+/*-
+ * Copyright (c) 2012, 2013 The FreeBSD Foundation
+ * All rights reserved.
+ *
+ * This software was developed by Oleksandr Rybalko under sponsorship
+ * from the FreeBSD Foundation.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1.	Redistributions of source code must retain the above copyright
+ *	notice, this list of conditions and the following disclaimer.
+ * 2.	Redistributions in binary form must reproduce the above copyright
+ *	notice, this list of conditions and the following disclaimer in the
+ *	documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/* Simple UART console driver for Freescale i.MX515 */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <sys/types.h>
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/cons.h>
+#include <sys/consio.h>
+#include <sys/kernel.h>
+
+/* Allow it to be predefined, to be able to use another UART for console */
+#ifndef	IMX_UART_BASE
+#define	IMX_UART_BASE	0xe3fbc000 /* imx51 UART1 */
+#endif
+
+#define	IMX_RXD			0x00
+#define	IMX_TXD			0x40
+
+#define	IMX_UFCR		0x90
+#define	IMX_USR1		0x94
+#define	IMX_USR1_TRDY		(1 << 13)

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



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