From owner-svn-src-projects@freebsd.org Mon Jun 12 23:50:34 2017 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id D829CD86CA1 for ; Mon, 12 Jun 2017 23:50:34 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 759B484C15; Mon, 12 Jun 2017 23:50:34 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v5CNoXpR058891; Mon, 12 Jun 2017 23:50:33 GMT (envelope-from rmacklem@FreeBSD.org) Received: (from rmacklem@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v5CNoUDS058859; Mon, 12 Jun 2017 23:50:30 GMT (envelope-from rmacklem@FreeBSD.org) Message-Id: <201706122350.v5CNoUDS058859@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: rmacklem set sender to rmacklem@FreeBSD.org using -f From: Rick Macklem Date: Mon, 12 Jun 2017 23:50:30 +0000 (UTC) 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 ... X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Jun 2017 23:50:34 -0000 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 + * 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 +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include + +#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 + * 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 +__FBSDID("$FreeBSD$"); + +#include "opt_platform.h" + +#include +#include +#include +#include + +#include +#include + +#include +#include +#include + +#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 #include +#ifdef MULTIDELAY +#include /* For arm_set_delay */ +#endif + #include #include #include @@ -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 +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include + +/* 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 ***