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 ...
Rick Macklem
rmacklem at FreeBSD.org
Mon Jun 12 23:50:34 UTC 2017
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 at 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 at 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 ***
More information about the svn-src-projects
mailing list