From owner-svn-src-projects@freebsd.org Sun Sep 11 17:19:31 2016 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 3BAFDBD66C1 for ; Sun, 11 Sep 2016 17:19:31 +0000 (UTC) (envelope-from sbruno@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 0C4DC78F; Sun, 11 Sep 2016 17:19:30 +0000 (UTC) (envelope-from sbruno@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u8BHJUQO083286; Sun, 11 Sep 2016 17:19:30 GMT (envelope-from sbruno@FreeBSD.org) Received: (from sbruno@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u8BHJUv1083285; Sun, 11 Sep 2016 17:19:30 GMT (envelope-from sbruno@FreeBSD.org) Message-Id: <201609111719.u8BHJUv1083285@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: sbruno set sender to sbruno@FreeBSD.org using -f From: Sean Bruno Date: Sun, 11 Sep 2016 17:19:30 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r305698 - projects/mips64-clang/sys/conf 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: Sun, 11 Sep 2016 17:19:31 -0000 Author: sbruno Date: Sun Sep 11 17:19:30 2016 New Revision: 305698 URL: https://svnweb.freebsd.org/changeset/base/305698 Log: Until Clang/LLVM can handle this ASM file, move it to use binutils. mips32 now boots under MALTA, but page faults and explodes. Modified: projects/mips64-clang/sys/conf/Makefile.mips Modified: projects/mips64-clang/sys/conf/Makefile.mips ============================================================================== --- projects/mips64-clang/sys/conf/Makefile.mips Sun Sep 11 16:20:57 2016 (r305697) +++ projects/mips64-clang/sys/conf/Makefile.mips Sun Sep 11 17:19:30 2016 (r305698) @@ -31,6 +31,7 @@ S= ../../.. ASM_CFLAGS.exception.S= ${CLANG_NO_IAS} ASM_CFLAGS.fp.S= ${CLANG_NO_IAS} ASM_CFLAGS.swtch.S= ${CLANG_NO_IAS} +ASM_CFLAGS.support.S= ${CLANG_NO_IAS} INCLUDES+= -I$S/contrib/libfdt From owner-svn-src-projects@freebsd.org Sun Sep 11 18:15:36 2016 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 09E3BBD51B8 for ; Sun, 11 Sep 2016 18:15:36 +0000 (UTC) (envelope-from sbruno@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 CF65FE33; Sun, 11 Sep 2016 18:15:35 +0000 (UTC) (envelope-from sbruno@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u8BIFZ92008214; Sun, 11 Sep 2016 18:15:35 GMT (envelope-from sbruno@FreeBSD.org) Received: (from sbruno@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u8BIFZmn008213; Sun, 11 Sep 2016 18:15:35 GMT (envelope-from sbruno@FreeBSD.org) Message-Id: <201609111815.u8BIFZmn008213@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: sbruno set sender to sbruno@FreeBSD.org using -f From: Sean Bruno Date: Sun, 11 Sep 2016 18:15:35 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r305705 - projects/mips64-clang/sys/conf 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: Sun, 11 Sep 2016 18:15:36 -0000 Author: sbruno Date: Sun Sep 11 18:15:34 2016 New Revision: 305705 URL: https://svnweb.freebsd.org/changeset/base/305705 Log: swtch.S now builds with integrated-as Modified: projects/mips64-clang/sys/conf/Makefile.mips Modified: projects/mips64-clang/sys/conf/Makefile.mips ============================================================================== --- projects/mips64-clang/sys/conf/Makefile.mips Sun Sep 11 18:05:37 2016 (r305704) +++ projects/mips64-clang/sys/conf/Makefile.mips Sun Sep 11 18:15:34 2016 (r305705) @@ -30,7 +30,6 @@ S= ../../.. ASM_CFLAGS.exception.S= ${CLANG_NO_IAS} ASM_CFLAGS.fp.S= ${CLANG_NO_IAS} -ASM_CFLAGS.swtch.S= ${CLANG_NO_IAS} ASM_CFLAGS.support.S= ${CLANG_NO_IAS} INCLUDES+= -I$S/contrib/libfdt From owner-svn-src-projects@freebsd.org Sun Sep 11 22:13:25 2016 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 3329CBD67A9 for ; Sun, 11 Sep 2016 22:13:25 +0000 (UTC) (envelope-from sbruno@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 C61D0AD1; Sun, 11 Sep 2016 22:13:24 +0000 (UTC) (envelope-from sbruno@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u8BMDOvQ000206; Sun, 11 Sep 2016 22:13:24 GMT (envelope-from sbruno@FreeBSD.org) Received: (from sbruno@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u8BMDNjR000195; Sun, 11 Sep 2016 22:13:23 GMT (envelope-from sbruno@FreeBSD.org) Message-Id: <201609112213.u8BMDNjR000195@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: sbruno set sender to sbruno@FreeBSD.org using -f From: Sean Bruno Date: Sun, 11 Sep 2016 22:13:23 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r305712 - in projects/mips64-clang: lib/libc/sys lib/libifconfig share/man/man9 share/mk sys/amd64/amd64 sys/amd64/include sys/arm/allwinner sys/arm/arm sys/arm64/arm64 sys/cddl/compat/... 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: Sun, 11 Sep 2016 22:13:25 -0000 Author: sbruno Date: Sun Sep 11 22:13:22 2016 New Revision: 305712 URL: https://svnweb.freebsd.org/changeset/base/305712 Log: MFC 305705 Added: projects/mips64-clang/tests/sys/kern/waitpid_nohang.c - copied unchanged from r305705, head/tests/sys/kern/waitpid_nohang.c Modified: projects/mips64-clang/lib/libc/sys/cap_enter.2 projects/mips64-clang/lib/libifconfig/Makefile projects/mips64-clang/share/man/man9/fpu_kern.9 projects/mips64-clang/share/mk/bsd.subdir.mk projects/mips64-clang/sys/amd64/amd64/fpu.c projects/mips64-clang/sys/amd64/amd64/pmap.c projects/mips64-clang/sys/amd64/include/fpu.h projects/mips64-clang/sys/amd64/include/pcb.h projects/mips64-clang/sys/arm/allwinner/a10_mmc.c projects/mips64-clang/sys/arm/allwinner/a10_mmc.h projects/mips64-clang/sys/arm/arm/pmap-v6.c projects/mips64-clang/sys/arm64/arm64/pmap.c projects/mips64-clang/sys/cddl/compat/opensolaris/sys/random.h projects/mips64-clang/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/lz4.c projects/mips64-clang/sys/dev/cxgbe/common/t4_hw.c projects/mips64-clang/sys/dev/cxgbe/common/t4vf_hw.c projects/mips64-clang/sys/dev/cxgbe/t4_main.c projects/mips64-clang/sys/dev/cxgbe/t4_netmap.c projects/mips64-clang/sys/dev/cxgbe/t4_sge.c projects/mips64-clang/sys/i386/i386/pmap.c projects/mips64-clang/sys/kern/kern_exit.c projects/mips64-clang/sys/kern/kern_mutex.c projects/mips64-clang/sys/kern/subr_witness.c projects/mips64-clang/sys/kern/uipc_syscalls.c projects/mips64-clang/sys/kern/vfs_cache.c projects/mips64-clang/sys/powerpc/booke/pmap.c projects/mips64-clang/sys/powerpc/conf/MPC85XX projects/mips64-clang/sys/riscv/riscv/pmap.c projects/mips64-clang/sys/sparc64/sparc64/pmap.c projects/mips64-clang/sys/vm/pmap.h projects/mips64-clang/tests/sys/kern/Makefile Directory Properties: projects/mips64-clang/ (props changed) projects/mips64-clang/sys/cddl/contrib/opensolaris/ (props changed) Modified: projects/mips64-clang/lib/libc/sys/cap_enter.2 ============================================================================== --- projects/mips64-clang/lib/libc/sys/cap_enter.2 Sun Sep 11 20:15:41 2016 (r305711) +++ projects/mips64-clang/lib/libc/sys/cap_enter.2 Sun Sep 11 22:13:22 2016 (r305712) @@ -28,7 +28,7 @@ .\" .\" $FreeBSD$ .\" -.Dd March 27, 2014 +.Dd September 10, 2016 .Dt CAP_ENTER 2 .Os .Sh NAME @@ -84,6 +84,11 @@ to create a runtime environment inside t acquired rights as possible. .Sh RETURN VALUES .Rv -std cap_enter cap_getmode +.Pp +When the process is in capability mode, +.Fn cap_getmode +sets the flag to a non-zero value. +A zero value means the process is not in capability mode. .Sh ERRORS The .Fn cap_enter Modified: projects/mips64-clang/lib/libifconfig/Makefile ============================================================================== --- projects/mips64-clang/lib/libifconfig/Makefile Sun Sep 11 20:15:41 2016 (r305711) +++ projects/mips64-clang/lib/libifconfig/Makefile Sun Sep 11 22:13:22 2016 (r305712) @@ -2,6 +2,7 @@ PACKAGE= lib${LIB} LIB= ifconfig +PRIVATELIB= true # Don't build shared library, for now. NO_PIC= Modified: projects/mips64-clang/share/man/man9/fpu_kern.9 ============================================================================== --- projects/mips64-clang/share/man/man9/fpu_kern.9 Sun Sep 11 20:15:41 2016 (r305711) +++ projects/mips64-clang/share/man/man9/fpu_kern.9 Sun Sep 11 22:13:22 2016 (r305712) @@ -120,6 +120,16 @@ could be used from both kernel thread an The .Fn fpu_kern_leave function correctly handles such contexts. +.It Dv FPU_KERN_NOCTX +Avoid nesting save area. +If the flag is specified, the +.Fa ctx +must be passed as +.Va NULL . +The flag should only be used for really short code blocks +which can be executed in a critical section. +It avoids the need to allocate the FPU context by the cost +of increased system latency. .El .El .Pp Modified: projects/mips64-clang/share/mk/bsd.subdir.mk ============================================================================== --- projects/mips64-clang/share/mk/bsd.subdir.mk Sun Sep 11 20:15:41 2016 (r305711) +++ projects/mips64-clang/share/mk/bsd.subdir.mk Sun Sep 11 22:13:22 2016 (r305712) @@ -141,12 +141,13 @@ ${__dir}: all_subdir_${DIRPRFX}${__dir} # Can ordering be skipped for this and SUBDIR_PARALLEL forced? .if ${STANDALONE_SUBDIR_TARGETS:M${__target}} _is_standalone_target= 1 -SUBDIR:= ${SUBDIR:N.WAIT} +_subdir_filter= N.WAIT .else _is_standalone_target= 0 +_subdir_filter= .endif __subdir_targets= -.for __dir in ${SUBDIR} +.for __dir in ${SUBDIR:${_subdir_filter}} .if ${__dir} == .WAIT __subdir_targets+= .WAIT .else Modified: projects/mips64-clang/sys/amd64/amd64/fpu.c ============================================================================== --- projects/mips64-clang/sys/amd64/amd64/fpu.c Sun Sep 11 20:15:41 2016 (r305711) +++ projects/mips64-clang/sys/amd64/amd64/fpu.c Sun Sep 11 22:13:22 2016 (r305712) @@ -633,6 +633,8 @@ fpudna(void) */ critical_enter(); + KASSERT((curpcb->pcb_flags & PCB_FPUNOSAVE) == 0, + ("fpudna while in fpu_kern_enter(FPU_KERN_NOCTX)")); if (PCPU_GET(fpcurthread) == curthread) { printf("fpudna: fpcurthread == curthread\n"); stop_emulating(); @@ -964,13 +966,39 @@ fpu_kern_enter(struct thread *td, struct { struct pcb *pcb; - KASSERT((ctx->flags & FPU_KERN_CTX_INUSE) == 0, ("using inuse ctx")); + pcb = td->td_pcb; + KASSERT((flags & FPU_KERN_NOCTX) != 0 || ctx != NULL, + ("ctx is required when !FPU_KERN_NOCTX")); + KASSERT(ctx == NULL || (ctx->flags & FPU_KERN_CTX_INUSE) == 0, + ("using inuse ctx")); + KASSERT((pcb->pcb_flags & PCB_FPUNOSAVE) == 0, + ("recursive fpu_kern_enter while in PCB_FPUNOSAVE state")); + if ((flags & FPU_KERN_NOCTX) != 0) { + critical_enter(); + stop_emulating(); + if (curthread == PCPU_GET(fpcurthread)) { + fpusave(curpcb->pcb_save); + PCPU_SET(fpcurthread, NULL); + } else { + KASSERT(PCPU_GET(fpcurthread) == NULL, + ("invalid fpcurthread")); + } + + /* + * This breaks XSAVEOPT tracker, but + * PCB_FPUNOSAVE state is supposed to never need to + * save FPU context at all. + */ + fpurestore(fpu_initialstate); + set_pcb_flags(pcb, PCB_KERNFPU | PCB_FPUNOSAVE | + PCB_FPUINITDONE); + return (0); + } if ((flags & FPU_KERN_KTHR) != 0 && is_fpu_kern_thread(0)) { ctx->flags = FPU_KERN_CTX_DUMMY | FPU_KERN_CTX_INUSE; return (0); } - pcb = td->td_pcb; KASSERT(!PCB_USER_FPU(pcb) || pcb->pcb_save == get_pcb_user_save_pcb(pcb), ("mangled pcb_save")); ctx->flags = FPU_KERN_CTX_INUSE; @@ -989,19 +1017,34 @@ fpu_kern_leave(struct thread *td, struct { struct pcb *pcb; - KASSERT((ctx->flags & FPU_KERN_CTX_INUSE) != 0, - ("leaving not inuse ctx")); - ctx->flags &= ~FPU_KERN_CTX_INUSE; - - if (is_fpu_kern_thread(0) && (ctx->flags & FPU_KERN_CTX_DUMMY) != 0) - return (0); - KASSERT((ctx->flags & FPU_KERN_CTX_DUMMY) == 0, ("dummy ctx")); pcb = td->td_pcb; - critical_enter(); - if (curthread == PCPU_GET(fpcurthread)) - fpudrop(); - critical_exit(); - pcb->pcb_save = ctx->prev; + + if ((pcb->pcb_flags & PCB_FPUNOSAVE) != 0) { + KASSERT(ctx == NULL, ("non-null ctx after FPU_KERN_NOCTX")); + KASSERT(PCPU_GET(fpcurthread) == NULL, + ("non-NULL fpcurthread for PCB_FPUNOSAVE")); + CRITICAL_ASSERT(td); + + clear_pcb_flags(pcb, PCB_FPUNOSAVE | PCB_FPUINITDONE); + start_emulating(); + critical_exit(); + } else { + KASSERT((ctx->flags & FPU_KERN_CTX_INUSE) != 0, + ("leaving not inuse ctx")); + ctx->flags &= ~FPU_KERN_CTX_INUSE; + + if (is_fpu_kern_thread(0) && + (ctx->flags & FPU_KERN_CTX_DUMMY) != 0) + return (0); + KASSERT((ctx->flags & FPU_KERN_CTX_DUMMY) == 0, + ("dummy ctx")); + critical_enter(); + if (curthread == PCPU_GET(fpcurthread)) + fpudrop(); + critical_exit(); + pcb->pcb_save = ctx->prev; + } + if (pcb->pcb_save == get_pcb_user_save_pcb(pcb)) { if ((pcb->pcb_flags & PCB_USERFPUINITDONE) != 0) { set_pcb_flags(pcb, PCB_FPUINITDONE); Modified: projects/mips64-clang/sys/amd64/amd64/pmap.c ============================================================================== --- projects/mips64-clang/sys/amd64/amd64/pmap.c Sun Sep 11 20:15:41 2016 (r305711) +++ projects/mips64-clang/sys/amd64/amd64/pmap.c Sun Sep 11 22:13:22 2016 (r305712) @@ -5816,8 +5816,6 @@ safe_to_clear_referenced(pmap_t pmap, pt return (FALSE); } -#define PMAP_TS_REFERENCED_MAX 5 - /* * pmap_ts_referenced: * @@ -5826,10 +5824,6 @@ safe_to_clear_referenced(pmap_t pmap, pt * is necessary that 0 only be returned when there are truly no * reference bits set. * - * XXX: The exact number of bits to check and clear is a matter that - * should be tested and standardized at some point in the future for - * optimal aging of shared pages. - * * As an optimization, update the page's dirty field if a modified bit is * found while counting reference bits. This opportunistic update can be * performed at low cost and can eliminate the need for some future calls @@ -5898,7 +5892,7 @@ retry: */ vm_page_dirty(m); } - if ((*pde & PG_A) != 0) { + if ((oldpde & PG_A) != 0) { /* * Since this reference bit is shared by 512 4KB * pages, it should not be cleared every time it is @@ -5919,7 +5913,7 @@ retry: */ if ((((pa >> PAGE_SHIFT) ^ (pv->pv_va >> PDRSHIFT) ^ (uintptr_t)pmap) & (NPTEPG - 1)) == 0 && - (*pde & PG_W) == 0) { + (oldpde & PG_W) == 0) { if (safe_to_clear_referenced(pmap, oldpde)) { atomic_clear_long(pde, PG_A); pmap_invalidate_page(pmap, pv->pv_va); Modified: projects/mips64-clang/sys/amd64/include/fpu.h ============================================================================== --- projects/mips64-clang/sys/amd64/include/fpu.h Sun Sep 11 20:15:41 2016 (r305711) +++ projects/mips64-clang/sys/amd64/include/fpu.h Sun Sep 11 22:13:22 2016 (r305712) @@ -86,6 +86,7 @@ void fpu_save_area_reset(struct savefpu #define FPU_KERN_NORMAL 0x0000 #define FPU_KERN_NOWAIT 0x0001 #define FPU_KERN_KTHR 0x0002 +#define FPU_KERN_NOCTX 0x0004 #endif Modified: projects/mips64-clang/sys/amd64/include/pcb.h ============================================================================== --- projects/mips64-clang/sys/amd64/include/pcb.h Sun Sep 11 20:15:41 2016 (r305711) +++ projects/mips64-clang/sys/amd64/include/pcb.h Sun Sep 11 22:13:22 2016 (r305712) @@ -83,6 +83,7 @@ struct pcb { #define PCB_FPUINITDONE 0x08 /* fpu state is initialized */ #define PCB_USERFPUINITDONE 0x10 /* fpu user state is initialized */ #define PCB_32BIT 0x40 /* process has 32 bit context (segs etc) */ +#define PCB_FPUNOSAVE 0x80 /* no save area for current FPU ctx */ uint16_t pcb_initial_fpucw; Modified: projects/mips64-clang/sys/arm/allwinner/a10_mmc.c ============================================================================== --- projects/mips64-clang/sys/arm/allwinner/a10_mmc.c Sun Sep 11 20:15:41 2016 (r305711) +++ projects/mips64-clang/sys/arm/allwinner/a10_mmc.c Sun Sep 11 22:13:22 2016 (r305712) @@ -48,7 +48,6 @@ __FBSDID("$FreeBSD$"); #include #include -#include #include #include #include @@ -56,16 +55,12 @@ __FBSDID("$FreeBSD$"); #define A10_MMC_MEMRES 0 #define A10_MMC_IRQRES 1 #define A10_MMC_RESSZ 2 -#define A10_MMC_DMA_SEGS 16 +#define A10_MMC_DMA_SEGS ((MAXPHYS / PAGE_SIZE) + 1) #define A10_MMC_DMA_MAX_SIZE 0x2000 #define A10_MMC_DMA_FTRGLEVEL 0x20070008 #define CARD_ID_FREQUENCY 400000 -static int a10_mmc_pio_mode = 0; - -TUNABLE_INT("hw.a10.mmc.pio_mode", &a10_mmc_pio_mode); - static struct ofw_compat_data compat_data[] = { {"allwinner,sun4i-a10-mmc", 1}, {"allwinner,sun5i-a13-mmc", 1}, @@ -73,14 +68,11 @@ static struct ofw_compat_data compat_dat }; struct a10_mmc_softc { - bus_space_handle_t a10_bsh; - bus_space_tag_t a10_bst; device_t a10_dev; clk_t a10_clk_ahb; clk_t a10_clk_mmc; hwreset_t a10_rst_ahb; int a10_bus_busy; - int a10_id; int a10_resid; int a10_timeout; struct callout a10_timeoutc; @@ -91,7 +83,6 @@ struct a10_mmc_softc { uint32_t a10_intr; uint32_t a10_intr_wait; void * a10_intrhand; - bus_size_t a10_fifo_reg; /* Fields required for DMA access. */ bus_addr_t a10_dma_desc_phys; @@ -100,7 +91,6 @@ struct a10_mmc_softc { void * a10_dma_desc; bus_dmamap_t a10_dma_buf_map; bus_dma_tag_t a10_dma_buf_tag; - int a10_dma_inuse; int a10_dma_map_err; }; @@ -116,7 +106,7 @@ static int a10_mmc_detach(device_t); static int a10_mmc_setup_dma(struct a10_mmc_softc *); static int a10_mmc_reset(struct a10_mmc_softc *); static void a10_mmc_intr(void *); -static int a10_mmc_update_clock(struct a10_mmc_softc *); +static int a10_mmc_update_clock(struct a10_mmc_softc *, uint32_t); static int a10_mmc_update_ios(device_t, device_t); static int a10_mmc_request(device_t, device_t, struct mmc_request *); @@ -127,9 +117,9 @@ static int a10_mmc_release_host(device_t #define A10_MMC_LOCK(_sc) mtx_lock(&(_sc)->a10_mtx) #define A10_MMC_UNLOCK(_sc) mtx_unlock(&(_sc)->a10_mtx) #define A10_MMC_READ_4(_sc, _reg) \ - bus_space_read_4((_sc)->a10_bst, (_sc)->a10_bsh, _reg) + bus_read_4((_sc)->a10_res[A10_MMC_MEMRES], _reg) #define A10_MMC_WRITE_4(_sc, _reg, _value) \ - bus_space_write_4((_sc)->a10_bst, (_sc)->a10_bsh, _reg, _value) + bus_write_4((_sc)->a10_res[A10_MMC_MEMRES], _reg, _value) static int a10_mmc_probe(device_t dev) @@ -160,17 +150,10 @@ a10_mmc_attach(device_t dev) sc = device_get_softc(dev); sc->a10_dev = dev; sc->a10_req = NULL; - sc->a10_id = device_get_unit(dev); - if (sc->a10_id > 3) { - device_printf(dev, "only 4 hosts are supported (0-3)\n"); - return (ENXIO); - } if (bus_alloc_resources(dev, a10_mmc_res_spec, sc->a10_res) != 0) { device_printf(dev, "cannot allocate device resources\n"); return (ENXIO); } - sc->a10_bst = rman_get_bustag(sc->a10_res[A10_MMC_MEMRES]); - sc->a10_bsh = rman_get_bushandle(sc->a10_res[A10_MMC_MEMRES]); if (bus_setup_intr(dev, sc->a10_res[A10_MMC_IRQRES], INTR_TYPE_MISC | INTR_MPSAFE, NULL, a10_mmc_intr, sc, &sc->a10_intrhand)) { @@ -182,31 +165,12 @@ a10_mmc_attach(device_t dev) MTX_DEF); callout_init_mtx(&sc->a10_timeoutc, &sc->a10_mtx, 0); -#if defined(__arm__) - /* - * Later chips use a different FIFO offset. Unfortunately the FDT - * uses the same compatible string for old and new implementations. - */ - switch (allwinner_soc_family()) { - case ALLWINNERSOC_SUN4I: - case ALLWINNERSOC_SUN5I: - case ALLWINNERSOC_SUN7I: - sc->a10_fifo_reg = A10_MMC_FIFO; - break; - default: - sc->a10_fifo_reg = A31_MMC_FIFO; - break; - } -#else /* __aarch64__ */ - sc->a10_fifo_reg = A31_MMC_FIFO; -#endif - /* De-assert reset */ if (hwreset_get_by_ofw_name(dev, 0, "ahb", &sc->a10_rst_ahb) == 0) { error = hwreset_deassert(sc->a10_rst_ahb); if (error != 0) { device_printf(dev, "cannot de-assert reset\n"); - return (error); + goto fail; } } @@ -244,19 +208,22 @@ a10_mmc_attach(device_t dev) SYSCTL_ADD_INT(ctx, tree, OID_AUTO, "req_timeout", CTLFLAG_RW, &sc->a10_timeout, 0, "Request timeout in seconds"); - /* Reset controller. */ + /* Hardware reset */ + A10_MMC_WRITE_4(sc, A10_MMC_HWRST, 1); + DELAY(100); + A10_MMC_WRITE_4(sc, A10_MMC_HWRST, 0); + DELAY(500); + + /* Soft Reset controller. */ if (a10_mmc_reset(sc) != 0) { device_printf(dev, "cannot reset the controller\n"); goto fail; } - if (a10_mmc_pio_mode == 0 && a10_mmc_setup_dma(sc) != 0) { + if (a10_mmc_setup_dma(sc) != 0) { device_printf(sc->a10_dev, "Couldn't setup DMA!\n"); - a10_mmc_pio_mode = 1; + goto fail; } - if (bootverbose) - device_printf(sc->a10_dev, "DMA status: %s\n", - a10_mmc_pio_mode ? "disabled" : "enabled"); if (OF_getencprop(node, "bus-width", &bus_width, sizeof(uint32_t)) <= 0) bus_width = 4; @@ -369,7 +336,6 @@ a10_dma_cb(void *arg, bus_dma_segment_t return; dma_desc = sc->a10_dma_desc; - /* Note nsegs is guaranteed to be zero if err is non-zero. */ for (i = 0; i < nsegs; i++) { dma_desc[i].buf_size = segs[i].ds_len; dma_desc[i].buf_addr = segs[i].ds_addr; @@ -386,7 +352,7 @@ a10_dma_cb(void *arg, bus_dma_segment_t A10_MMC_DMA_CONFIG_ER; dma_desc[i].next = 0; } - } + } } static int @@ -401,13 +367,12 @@ a10_mmc_prepare_dma(struct a10_mmc_softc if (cmd->data->len > A10_MMC_DMA_MAX_SIZE * A10_MMC_DMA_SEGS) return (EFBIG); error = bus_dmamap_load(sc->a10_dma_buf_tag, sc->a10_dma_buf_map, - cmd->data->data, cmd->data->len, a10_dma_cb, sc, BUS_DMA_NOWAIT); + cmd->data->data, cmd->data->len, a10_dma_cb, sc, 0); if (error) return (error); if (sc->a10_dma_map_err) return (sc->a10_dma_map_err); - sc->a10_dma_inuse = 1; if (cmd->data->flags & MMC_DATA_WRITE) sync_op = BUS_DMASYNC_PREWRITE; else @@ -415,27 +380,32 @@ a10_mmc_prepare_dma(struct a10_mmc_softc bus_dmamap_sync(sc->a10_dma_buf_tag, sc->a10_dma_buf_map, sync_op); bus_dmamap_sync(sc->a10_dma_tag, sc->a10_dma_map, BUS_DMASYNC_PREWRITE); - val = A10_MMC_READ_4(sc, A10_MMC_IMASK); - val &= ~(A10_MMC_RX_DATA_REQ | A10_MMC_TX_DATA_REQ); - A10_MMC_WRITE_4(sc, A10_MMC_IMASK, val); - val = A10_MMC_READ_4(sc, A10_MMC_GCTRL); - val &= ~A10_MMC_ACCESS_BY_AHB; - val |= A10_MMC_DMA_ENABLE; - A10_MMC_WRITE_4(sc, A10_MMC_GCTRL, val); - val |= A10_MMC_DMA_RESET; - A10_MMC_WRITE_4(sc, A10_MMC_GCTRL, val); - A10_MMC_WRITE_4(sc, A10_MMC_DMAC, A10_MMC_IDMAC_SOFT_RST); + /* Enable DMA */ + val = A10_MMC_READ_4(sc, A10_MMC_GCTL); + val &= ~A10_MMC_CTRL_FIFO_AC_MOD; + val |= A10_MMC_CTRL_DMA_ENB; + A10_MMC_WRITE_4(sc, A10_MMC_GCTL, val); + + /* Reset DMA */ + val |= A10_MMC_CTRL_DMA_RST; + A10_MMC_WRITE_4(sc, A10_MMC_GCTL, val); + + A10_MMC_WRITE_4(sc, A10_MMC_DMAC, A10_MMC_DMAC_IDMAC_SOFT_RST); A10_MMC_WRITE_4(sc, A10_MMC_DMAC, - A10_MMC_IDMAC_IDMA_ON | A10_MMC_IDMAC_FIX_BURST); - val = A10_MMC_READ_4(sc, A10_MMC_IDIE); - val &= ~(A10_MMC_IDMAC_RECEIVE_INT | A10_MMC_IDMAC_TRANSMIT_INT); + A10_MMC_DMAC_IDMAC_IDMA_ON | A10_MMC_DMAC_IDMAC_FIX_BURST); + + /* Enable RX or TX DMA interrupt */ if (cmd->data->flags & MMC_DATA_WRITE) - val |= A10_MMC_IDMAC_TRANSMIT_INT; + val |= A10_MMC_IDST_TX_INT; else - val |= A10_MMC_IDMAC_RECEIVE_INT; + val |= A10_MMC_IDST_RX_INT; A10_MMC_WRITE_4(sc, A10_MMC_IDIE, val); + + /* Set DMA descritptor list address */ A10_MMC_WRITE_4(sc, A10_MMC_DLBA, sc->a10_dma_desc_phys); - A10_MMC_WRITE_4(sc, A10_MMC_FTRGL, A10_MMC_DMA_FTRGLEVEL); + + /* FIFO trigger level */ + A10_MMC_WRITE_4(sc, A10_MMC_FWLR, A10_MMC_DMA_FTRGLEVEL); return (0); } @@ -445,11 +415,10 @@ a10_mmc_reset(struct a10_mmc_softc *sc) { int timeout; - A10_MMC_WRITE_4(sc, A10_MMC_GCTRL, - A10_MMC_READ_4(sc, A10_MMC_GCTRL) | A10_MMC_RESET); + A10_MMC_WRITE_4(sc, A10_MMC_GCTL, A10_MMC_RESET); timeout = 1000; while (--timeout > 0) { - if ((A10_MMC_READ_4(sc, A10_MMC_GCTRL) & A10_MMC_RESET) == 0) + if ((A10_MMC_READ_4(sc, A10_MMC_GCTL) & A10_MMC_RESET) == 0) break; DELAY(100); } @@ -457,18 +426,20 @@ a10_mmc_reset(struct a10_mmc_softc *sc) return (ETIMEDOUT); /* Set the timeout. */ - A10_MMC_WRITE_4(sc, A10_MMC_TIMEOUT, 0xffffffff); + A10_MMC_WRITE_4(sc, A10_MMC_TMOR, + A10_MMC_TMOR_DTO_LMT_SHIFT(A10_MMC_TMOR_DTO_LMT_MASK) | + A10_MMC_TMOR_RTO_LMT_SHIFT(A10_MMC_TMOR_RTO_LMT_MASK)); /* Clear pending interrupts. */ - A10_MMC_WRITE_4(sc, A10_MMC_RINTR, 0xffffffff); + A10_MMC_WRITE_4(sc, A10_MMC_RISR, 0xffffffff); A10_MMC_WRITE_4(sc, A10_MMC_IDST, 0xffffffff); /* Unmask interrupts. */ - A10_MMC_WRITE_4(sc, A10_MMC_IMASK, - A10_MMC_CMD_DONE | A10_MMC_INT_ERR_BIT | - A10_MMC_DATA_OVER | A10_MMC_AUTOCMD_DONE); + A10_MMC_WRITE_4(sc, A10_MMC_IMKR, + A10_MMC_INT_CMD_DONE | A10_MMC_INT_ERR_BIT | + A10_MMC_INT_DATA_OVER | A10_MMC_INT_AUTO_STOP_DONE); /* Enable interrupts and AHB access. */ - A10_MMC_WRITE_4(sc, A10_MMC_GCTRL, - A10_MMC_READ_4(sc, A10_MMC_GCTRL) | A10_MMC_INT_ENABLE); + A10_MMC_WRITE_4(sc, A10_MMC_GCTL, + A10_MMC_READ_4(sc, A10_MMC_GCTL) | A10_MMC_CTRL_INT_ENB); return (0); } @@ -483,12 +454,6 @@ a10_mmc_req_done(struct a10_mmc_softc *s if (cmd->error != MMC_ERR_NONE) { /* Reset the controller. */ a10_mmc_reset(sc); - a10_mmc_update_clock(sc); - } - if (sc->a10_dma_inuse == 0) { - /* Reset the FIFO. */ - A10_MMC_WRITE_4(sc, A10_MMC_GCTRL, - A10_MMC_READ_4(sc, A10_MMC_GCTRL) | A10_MMC_FIFO_RESET); } req = sc->a10_req; @@ -496,7 +461,6 @@ a10_mmc_req_done(struct a10_mmc_softc *s sc->a10_req = NULL; sc->a10_intr = 0; sc->a10_resid = 0; - sc->a10_dma_inuse = 0; sc->a10_dma_map_err = 0; sc->a10_intr_wait = 0; req->done(req); @@ -511,8 +475,8 @@ a10_mmc_req_ok(struct a10_mmc_softc *sc) timeout = 1000; while (--timeout > 0) { - status = A10_MMC_READ_4(sc, A10_MMC_STAS); - if ((status & A10_MMC_CARD_DATA_BUSY) == 0) + status = A10_MMC_READ_4(sc, A10_MMC_STAR); + if ((status & A10_MMC_STAR_CARD_BUSY) == 0) break; DELAY(1000); } @@ -552,28 +516,6 @@ a10_mmc_timeout(void *arg) "Spurious timeout - no active request\n"); } -static int -a10_mmc_pio_transfer(struct a10_mmc_softc *sc, struct mmc_data *data) -{ - int i, write; - uint32_t bit, *buf; - - buf = (uint32_t *)data->data; - write = (data->flags & MMC_DATA_WRITE) ? 1 : 0; - bit = write ? A10_MMC_FIFO_FULL : A10_MMC_FIFO_EMPTY; - for (i = sc->a10_resid; i < (data->len >> 2); i++) { - if ((A10_MMC_READ_4(sc, A10_MMC_STAS) & bit)) - return (1); - if (write) - A10_MMC_WRITE_4(sc, sc->a10_fifo_reg, buf[i]); - else - buf[i] = A10_MMC_READ_4(sc, sc->a10_fifo_reg); - sc->a10_resid = i + 1; - } - - return (0); -} - static void a10_mmc_intr(void *arg) { @@ -584,9 +526,9 @@ a10_mmc_intr(void *arg) sc = (struct a10_mmc_softc *)arg; A10_MMC_LOCK(sc); - rint = A10_MMC_READ_4(sc, A10_MMC_RINTR); + rint = A10_MMC_READ_4(sc, A10_MMC_RISR); idst = A10_MMC_READ_4(sc, A10_MMC_IDST); - imask = A10_MMC_READ_4(sc, A10_MMC_IMASK); + imask = A10_MMC_READ_4(sc, A10_MMC_IMKR); if (idst == 0 && imask == 0 && rint == 0) { A10_MMC_UNLOCK(sc); return; @@ -603,14 +545,14 @@ a10_mmc_intr(void *arg) } if (rint & A10_MMC_INT_ERR_BIT) { device_printf(sc->a10_dev, "error rint: 0x%08X\n", rint); - if (rint & A10_MMC_RESP_TIMEOUT) + if (rint & A10_MMC_INT_RESP_TIMEOUT) sc->a10_req->cmd->error = MMC_ERR_TIMEOUT; else sc->a10_req->cmd->error = MMC_ERR_FAILED; a10_mmc_req_done(sc); goto end; } - if (idst & A10_MMC_IDMAC_ERROR) { + if (idst & A10_MMC_IDST_ERROR) { device_printf(sc->a10_dev, "error idst: 0x%08x\n", idst); sc->a10_req->cmd->error = MMC_ERR_FAILED; a10_mmc_req_done(sc); @@ -619,8 +561,7 @@ a10_mmc_intr(void *arg) sc->a10_intr |= rint; data = sc->a10_req->cmd->data; - if (data != NULL && sc->a10_dma_inuse == 1 && - (idst & A10_MMC_IDMAC_COMPLETE)) { + if (data != NULL && (idst & A10_MMC_IDST_COMPLETE) != 0) { if (data->flags & MMC_DATA_WRITE) sync_op = BUS_DMASYNC_POSTWRITE; else @@ -631,16 +572,13 @@ a10_mmc_intr(void *arg) BUS_DMASYNC_POSTWRITE); bus_dmamap_unload(sc->a10_dma_buf_tag, sc->a10_dma_buf_map); sc->a10_resid = data->len >> 2; - } else if (data != NULL && sc->a10_dma_inuse == 0 && - (rint & (A10_MMC_DATA_OVER | A10_MMC_RX_DATA_REQ | - A10_MMC_TX_DATA_REQ)) != 0) - a10_mmc_pio_transfer(sc, data); + } if ((sc->a10_intr & sc->a10_intr_wait) == sc->a10_intr_wait) a10_mmc_req_ok(sc); end: A10_MMC_WRITE_4(sc, A10_MMC_IDST, idst); - A10_MMC_WRITE_4(sc, A10_MMC_RINTR, rint); + A10_MMC_WRITE_4(sc, A10_MMC_RISR, rint); A10_MMC_UNLOCK(sc); } @@ -650,7 +588,8 @@ a10_mmc_request(device_t bus, device_t c int blksz; struct a10_mmc_softc *sc; struct mmc_command *cmd; - uint32_t cmdreg, val; + uint32_t cmdreg; + int err; sc = device_get_softc(bus); A10_MMC_LOCK(sc); @@ -660,48 +599,39 @@ a10_mmc_request(device_t bus, device_t c } sc->a10_req = req; cmd = req->cmd; - cmdreg = A10_MMC_START; + cmdreg = A10_MMC_CMDR_LOAD; if (cmd->opcode == MMC_GO_IDLE_STATE) - cmdreg |= A10_MMC_SEND_INIT_SEQ; + cmdreg |= A10_MMC_CMDR_SEND_INIT_SEQ; if (cmd->flags & MMC_RSP_PRESENT) - cmdreg |= A10_MMC_RESP_EXP; + cmdreg |= A10_MMC_CMDR_RESP_RCV; if (cmd->flags & MMC_RSP_136) - cmdreg |= A10_MMC_LONG_RESP; + cmdreg |= A10_MMC_CMDR_LONG_RESP; if (cmd->flags & MMC_RSP_CRC) - cmdreg |= A10_MMC_CHECK_RESP_CRC; + cmdreg |= A10_MMC_CMDR_CHK_RESP_CRC; sc->a10_intr = 0; sc->a10_resid = 0; - sc->a10_intr_wait = A10_MMC_CMD_DONE; + sc->a10_intr_wait = A10_MMC_INT_CMD_DONE; cmd->error = MMC_ERR_NONE; if (cmd->data != NULL) { - sc->a10_intr_wait |= A10_MMC_DATA_OVER; - cmdreg |= A10_MMC_DATA_EXP | A10_MMC_WAIT_PREOVER; + sc->a10_intr_wait |= A10_MMC_INT_DATA_OVER; + cmdreg |= A10_MMC_CMDR_DATA_TRANS | A10_MMC_CMDR_WAIT_PRE_OVER; if (cmd->data->flags & MMC_DATA_MULTI) { - cmdreg |= A10_MMC_SEND_AUTOSTOP; - sc->a10_intr_wait |= A10_MMC_AUTOCMD_DONE; + cmdreg |= A10_MMC_CMDR_STOP_CMD_FLAG; + sc->a10_intr_wait |= A10_MMC_INT_AUTO_STOP_DONE; } if (cmd->data->flags & MMC_DATA_WRITE) - cmdreg |= A10_MMC_WRITE; + cmdreg |= A10_MMC_CMDR_DIR_WRITE; blksz = min(cmd->data->len, MMC_SECTOR_SIZE); - A10_MMC_WRITE_4(sc, A10_MMC_BLKSZ, blksz); - A10_MMC_WRITE_4(sc, A10_MMC_BCNTR, cmd->data->len); + A10_MMC_WRITE_4(sc, A10_MMC_BKSR, blksz); + A10_MMC_WRITE_4(sc, A10_MMC_BYCR, cmd->data->len); - if (a10_mmc_pio_mode == 0) - a10_mmc_prepare_dma(sc); - /* Enable PIO access if sc->a10_dma_inuse is not set. */ - if (sc->a10_dma_inuse == 0) { - val = A10_MMC_READ_4(sc, A10_MMC_GCTRL); - val &= ~A10_MMC_DMA_ENABLE; - val |= A10_MMC_ACCESS_BY_AHB; - A10_MMC_WRITE_4(sc, A10_MMC_GCTRL, val); - val = A10_MMC_READ_4(sc, A10_MMC_IMASK); - val |= A10_MMC_RX_DATA_REQ | A10_MMC_TX_DATA_REQ; - A10_MMC_WRITE_4(sc, A10_MMC_IMASK, val); - } + err = a10_mmc_prepare_dma(sc); + if (err != 0) + device_printf(sc->a10_dev, "prepare_dma failed: %d\n", err); } - A10_MMC_WRITE_4(sc, A10_MMC_CARG, cmd->arg); + A10_MMC_WRITE_4(sc, A10_MMC_CAGR, cmd->arg); A10_MMC_WRITE_4(sc, A10_MMC_CMDR, cmdreg | cmd->opcode); callout_reset(&sc->a10_timeoutc, sc->a10_timeout * hz, a10_mmc_timeout, sc); @@ -811,23 +741,32 @@ a10_mmc_write_ivar(device_t bus, device_ } static int -a10_mmc_update_clock(struct a10_mmc_softc *sc) +a10_mmc_update_clock(struct a10_mmc_softc *sc, uint32_t clkon) { uint32_t cmdreg; int retry; + uint32_t ckcr; - cmdreg = A10_MMC_START | A10_MMC_UPCLK_ONLY | - A10_MMC_WAIT_PREOVER; + ckcr = A10_MMC_READ_4(sc, A10_MMC_CKCR); + ckcr &= ~(A10_MMC_CKCR_CCLK_ENB | A10_MMC_CKCR_CCLK_CTRL); + + if (clkon) + ckcr |= A10_MMC_CKCR_CCLK_ENB; + + A10_MMC_WRITE_4(sc, A10_MMC_CKCR, ckcr); + + cmdreg = A10_MMC_CMDR_LOAD | A10_MMC_CMDR_PRG_CLK | + A10_MMC_CMDR_WAIT_PRE_OVER; A10_MMC_WRITE_4(sc, A10_MMC_CMDR, cmdreg); retry = 0xfffff; while (--retry > 0) { - if ((A10_MMC_READ_4(sc, A10_MMC_CMDR) & A10_MMC_START) == 0) { - A10_MMC_WRITE_4(sc, A10_MMC_RINTR, 0xffffffff); + if ((A10_MMC_READ_4(sc, A10_MMC_CMDR) & A10_MMC_CMDR_LOAD) == 0) { + A10_MMC_WRITE_4(sc, A10_MMC_RISR, 0xffffffff); return (0); } DELAY(10); } - A10_MMC_WRITE_4(sc, A10_MMC_RINTR, 0xffffffff); + A10_MMC_WRITE_4(sc, A10_MMC_RISR, 0xffffffff); device_printf(sc->a10_dev, "timeout updating clock\n"); return (ETIMEDOUT); @@ -839,28 +778,37 @@ a10_mmc_update_ios(device_t bus, device_ int error; struct a10_mmc_softc *sc; struct mmc_ios *ios; - uint32_t clkcr; + uint32_t ckcr; sc = device_get_softc(bus); - clkcr = A10_MMC_READ_4(sc, A10_MMC_CLKCR); - if (clkcr & A10_MMC_CARD_CLK_ON) { - /* Disable clock. */ - clkcr &= ~A10_MMC_CARD_CLK_ON; - A10_MMC_WRITE_4(sc, A10_MMC_CLKCR, clkcr); - error = a10_mmc_update_clock(sc); - if (error != 0) - return (error); - } ios = &sc->a10_host.ios; + + /* Set the bus width. */ + switch (ios->bus_width) { + case bus_width_1: + A10_MMC_WRITE_4(sc, A10_MMC_BWDR, A10_MMC_BWDR1); + break; + case bus_width_4: + A10_MMC_WRITE_4(sc, A10_MMC_BWDR, A10_MMC_BWDR4); + break; + case bus_width_8: + A10_MMC_WRITE_4(sc, A10_MMC_BWDR, A10_MMC_BWDR8); + break; + } + if (ios->clock) { - /* Reset the divider. */ - clkcr &= ~A10_MMC_CLKCR_DIV; - A10_MMC_WRITE_4(sc, A10_MMC_CLKCR, clkcr); - error = a10_mmc_update_clock(sc); + + /* Disable clock */ + error = a10_mmc_update_clock(sc, 0); if (error != 0) return (error); + /* Reset the divider. */ + ckcr = A10_MMC_READ_4(sc, A10_MMC_CKCR); + ckcr &= ~A10_MMC_CKCR_CCLK_DIV; + A10_MMC_WRITE_4(sc, A10_MMC_CKCR, ckcr); + /* Set the MMC clock. */ error = clk_set_freq(sc->a10_clk_mmc, ios->clock, CLK_SET_ROUND_DOWN); @@ -872,25 +820,11 @@ a10_mmc_update_ios(device_t bus, device_ } /* Enable clock. */ - clkcr |= A10_MMC_CARD_CLK_ON; - A10_MMC_WRITE_4(sc, A10_MMC_CLKCR, clkcr); - error = a10_mmc_update_clock(sc); + error = a10_mmc_update_clock(sc, 1); if (error != 0) return (error); } - /* Set the bus width. */ - switch (ios->bus_width) { - case bus_width_1: - A10_MMC_WRITE_4(sc, A10_MMC_WIDTH, A10_MMC_WIDTH1); - break; - case bus_width_4: - A10_MMC_WRITE_4(sc, A10_MMC_WIDTH, A10_MMC_WIDTH4); - break; - case bus_width_8: - A10_MMC_WRITE_4(sc, A10_MMC_WIDTH, A10_MMC_WIDTH8); - break; - } return (0); } Modified: projects/mips64-clang/sys/arm/allwinner/a10_mmc.h ============================================================================== --- projects/mips64-clang/sys/arm/allwinner/a10_mmc.h Sun Sep 11 20:15:41 2016 (r305711) +++ projects/mips64-clang/sys/arm/allwinner/a10_mmc.h Sun Sep 11 22:13:22 2016 (r305712) @@ -29,117 +29,120 @@ #ifndef _A10_MMC_H_ #define _A10_MMC_H_ -#define A10_MMC_GCTRL 0x00 /* Global Control Register */ -#define A10_MMC_CLKCR 0x04 /* Clock Control Register */ -#define A10_MMC_TIMEOUT 0x08 /* Timeout Register */ -#define A10_MMC_WIDTH 0x0C /* Bus Width Register */ -#define A10_MMC_BLKSZ 0x10 /* Block Size Register */ -#define A10_MMC_BCNTR 0x14 /* Byte Count Register */ +#define A10_MMC_GCTL 0x00 /* Control Register */ +#define A10_MMC_CKCR 0x04 /* Clock Control Register */ +#define A10_MMC_TMOR 0x08 /* Timeout Register */ +#define A10_MMC_BWDR 0x0C /* Bus Width Register */ +#define A10_MMC_BKSR 0x10 /* Block Size Register */ +#define A10_MMC_BYCR 0x14 /* Byte Count Register */ #define A10_MMC_CMDR 0x18 /* Command Register */ -#define A10_MMC_CARG 0x1C /* Argument Register */ +#define A10_MMC_CAGR 0x1C /* Argument Register */ #define A10_MMC_RESP0 0x20 /* Response Register 0 */ #define A10_MMC_RESP1 0x24 /* Response Register 1 */ #define A10_MMC_RESP2 0x28 /* Response Register 2 */ #define A10_MMC_RESP3 0x2C /* Response Register 3 */ -#define A10_MMC_IMASK 0x30 /* Interrupt Mask Register */ -#define A10_MMC_MISTA 0x34 /* Masked Interrupt Status Register */ -#define A10_MMC_RINTR 0x38 /* Raw Interrupt Status Register */ -#define A10_MMC_STAS 0x3C /* Status Register */ -#define A10_MMC_FTRGL 0x40 /* FIFO Threshold Watermark Register */ +#define A10_MMC_IMKR 0x30 /* Interrupt Mask Register */ +#define A10_MMC_MISR 0x34 /* Masked Interrupt Status Register */ +#define A10_MMC_RISR 0x38 /* Raw Interrupt Status Register */ +#define A10_MMC_STAR 0x3C /* Status Register */ +#define A10_MMC_FWLR 0x40 /* FIFO Threshold Watermark Register */ #define A10_MMC_FUNS 0x44 /* Function Select Register */ -#define A10_MMC_CBCR 0x48 /* CIU Byte Count Register */ -#define A10_MMC_BBCR 0x4C /* BIU Byte Count Register */ -#define A10_MMC_DBGC 0x50 /* Debug Enable Register */ +#define A10_MMC_HWRST 0x78 /* Hardware reset (not documented) */ #define A10_MMC_DMAC 0x80 /* IDMAC Control Register */ #define A10_MMC_DLBA 0x84 /* IDMAC Desc List Base Address Reg */ #define A10_MMC_IDST 0x88 /* IDMAC Status Register */ #define A10_MMC_IDIE 0x8C /* IDMAC Interrupt Enable Register */ -#define A10_MMC_CHDA 0x90 -#define A10_MMC_CBDA 0x94 -#define A10_MMC_FIFO 0x100 /* FIFO Access Address (A10/A20) */ -#define A31_MMC_FIFO 0x200 /* FIFO Access Address (A31) */ - -/* A10_MMC_GCTRL */ -#define A10_MMC_SOFT_RESET (1U << 0) -#define A10_MMC_FIFO_RESET (1U << 1) -#define A10_MMC_DMA_RESET (1U << 2) -#define A10_MMC_INT_ENABLE (1U << 4) -#define A10_MMC_DMA_ENABLE (1U << 5) -#define A10_MMC_DEBOUNCE_ENABLE (1U << 8) -#define A10_MMC_DDR_MODE (1U << 10) -#define A10_MMC_ACCESS_BY_AHB (1U << 31) +#define A10_MMC_FIFO 0x100 /* FIFO Access Address (A10/A20) */ +#define A31_MMC_FIFO 0x200 /* FIFO Access Address (A31) */ + +/* A10_MMC_GCTL */ +#define A10_MMC_CTRL_SOFT_RST (1U << 0) +#define A10_MMC_CTRL_FIFO_RST (1U << 1) +#define A10_MMC_CTRL_DMA_RST (1U << 2) +#define A10_MMC_CTRL_INT_ENB (1U << 4) +#define A10_MMC_CTRL_DMA_ENB (1U << 5) +#define A10_MMC_CTRL_CD_DBC_ENB (1U << 8) +#define A10_MMC_CTRL_DDR_MOD_SEL (1U << 10) +#define A10_MMC_CTRL_FIFO_AC_MOD (1U << 31) #define A10_MMC_RESET \ - (A10_MMC_SOFT_RESET | A10_MMC_FIFO_RESET | A10_MMC_DMA_RESET) + (A10_MMC_CTRL_SOFT_RST | A10_MMC_CTRL_FIFO_RST | A10_MMC_CTRL_DMA_RST) -/* A10_MMC_CLKCR */ -#define A10_MMC_CARD_CLK_ON (1U << 16) -#define A10_MMC_LOW_POWER_ON (1U << 17) -#define A10_MMC_CLKCR_DIV 0xff - -/* A10_MMC_WIDTH */ -#define A10_MMC_WIDTH1 0 -#define A10_MMC_WIDTH4 1 -#define A10_MMC_WIDTH8 2 +/* A10_MMC_CKCR */ +#define A10_MMC_CKCR_CCLK_ENB (1U << 16) +#define A10_MMC_CKCR_CCLK_CTRL (1U << 17) +#define A10_MMC_CKCR_CCLK_DIV 0xff + +/* A10_MMC_TMOR */ +#define A10_MMC_TMOR_RTO_LMT_SHIFT(x) x /* Response timeout limit */ +#define A10_MMC_TMOR_RTO_LMT_MASK 0xff +#define A10_MMC_TMOR_DTO_LMT_SHIFT(x) (x << 8) /* Data timeout limit */ +#define A10_MMC_TMOR_DTO_LMT_MASK 0xffffff + +/* A10_MMC_BWDR */ +#define A10_MMC_BWDR1 0 +#define A10_MMC_BWDR4 1 +#define A10_MMC_BWDR8 2 /* A10_MMC_CMDR */ -#define A10_MMC_RESP_EXP (1U << 6) -#define A10_MMC_LONG_RESP (1U << 7) -#define A10_MMC_CHECK_RESP_CRC (1U << 8) -#define A10_MMC_DATA_EXP (1U << 9) -#define A10_MMC_WRITE (1U << 10) -#define A10_MMC_SEQ_MODE (1U << 11) -#define A10_MMC_SEND_AUTOSTOP (1U << 12) -#define A10_MMC_WAIT_PREOVER (1U << 13) -#define A10_MMC_STOP_ABORT_CMD (1U << 14) -#define A10_MMC_SEND_INIT_SEQ (1U << 15) -#define A10_MMC_UPCLK_ONLY (1U << 21) -#define A10_MMC_RDCEATADEV (1U << 22) -#define A10_MMC_CCS_EXP (1U << 23) -#define A10_MMC_ENB_BOOT (1U << 24) -#define A10_MMC_ALT_BOOT_OPT (1U << 25) -#define A10_MMC_BOOT_ACK_EXP (1U << 26) -#define A10_MMC_DISABLE_BOOT (1U << 27) -#define A10_MMC_VOL_SWITCH (1U << 28) -#define A10_MMC_START (1U << 31) - -/* A10_MMC_IMASK and A10_MMC_RINTR */ -#define A10_MMC_RESP_ERR (1U << 1) -#define A10_MMC_CMD_DONE (1U << 2) -#define A10_MMC_DATA_OVER (1U << 3) -#define A10_MMC_TX_DATA_REQ (1U << 4) -#define A10_MMC_RX_DATA_REQ (1U << 5) -#define A10_MMC_RESP_CRC_ERR (1U << 6) -#define A10_MMC_DATA_CRC_ERR (1U << 7) -#define A10_MMC_RESP_TIMEOUT (1U << 8) -#define A10_MMC_ACK_RECV (1U << 8) -#define A10_MMC_DATA_TIMEOUT (1U << 9) -#define A10_MMC_BOOT_START (1U << 9) -#define A10_MMC_DATA_STARVE (1U << 10) -#define A10_MMC_VOL_CHG_DONE (1U << 10) -#define A10_MMC_FIFO_RUN_ERR (1U << 11) -#define A10_MMC_HARDW_LOCKED (1U << 12) -#define A10_MMC_START_BIT_ERR (1U << 13) -#define A10_MMC_AUTOCMD_DONE (1U << 14) -#define A10_MMC_END_BIT_ERR (1U << 15) -#define A10_MMC_SDIO_INT (1U << 16) -#define A10_MMC_CARD_INSERT (1U << 30) -#define A10_MMC_CARD_REMOVE (1U << 31) +#define A10_MMC_CMDR_RESP_RCV (1U << 6) +#define A10_MMC_CMDR_LONG_RESP (1U << 7) +#define A10_MMC_CMDR_CHK_RESP_CRC (1U << 8) +#define A10_MMC_CMDR_DATA_TRANS (1U << 9) +#define A10_MMC_CMDR_DIR_WRITE (1U << 10) +#define A10_MMC_CMDR_TRANS_MODE_STREAM (1U << 11) +#define A10_MMC_CMDR_STOP_CMD_FLAG (1U << 12) +#define A10_MMC_CMDR_WAIT_PRE_OVER (1U << 13) +#define A10_MMC_CMDR_STOP_ABT_CMD (1U << 14) +#define A10_MMC_CMDR_SEND_INIT_SEQ (1U << 15) +#define A10_MMC_CMDR_PRG_CLK (1U << 21) +#define A10_MMC_CMDR_RD_CEDATA_DEV (1U << 22) +#define A10_MMC_CMDR_CCS_EXP (1U << 23) +#define A10_MMC_CMDR_BOOT_MOD_SHIFT 24 +#define A10_MMC_CMDR_BOOT_MOD_NORMAL 0 +#define A10_MMC_CMDR_BOOT_MOD_MANDATORY 1 +#define A10_MMC_CMDR_BOOT_MOD_ALT 2 +#define A10_MMC_CMDR_EXP_BOOT_ACK (1U << 26) +#define A10_MMC_CMDR_BOOT_ABT (1U << 27) +#define A10_MMC_CMDR_VOL_SW (1U << 28) +#define A10_MMC_CMDR_LOAD (1U << 31) + +/* A10_MMC_IMKR and A10_MMC_RISR */ +#define A10_MMC_INT_RESP_ERR (1U << 1) +#define A10_MMC_INT_CMD_DONE (1U << 2) +#define A10_MMC_INT_DATA_OVER (1U << 3) +#define A10_MMC_INT_TX_DATA_REQ (1U << 4) +#define A10_MMC_INT_RX_DATA_REQ (1U << 5) +#define A10_MMC_INT_RESP_CRC_ERR (1U << 6) +#define A10_MMC_INT_DATA_CRC_ERR (1U << 7) +#define A10_MMC_INT_RESP_TIMEOUT (1U << 8) +#define A10_MMC_INT_BOOT_ACK_RECV (1U << 8) *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@freebsd.org Wed Sep 14 13:59:19 2016 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 61A38BD9E04 for ; Wed, 14 Sep 2016 13:59:19 +0000 (UTC) (envelope-from sbruno@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 33003185E; Wed, 14 Sep 2016 13:59:19 +0000 (UTC) (envelope-from sbruno@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u8EDxIk8043609; Wed, 14 Sep 2016 13:59:18 GMT (envelope-from sbruno@FreeBSD.org) Received: (from sbruno@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u8EDxIvu043608; Wed, 14 Sep 2016 13:59:18 GMT (envelope-from sbruno@FreeBSD.org) Message-Id: <201609141359.u8EDxIvu043608@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: sbruno set sender to sbruno@FreeBSD.org using -f From: Sean Bruno Date: Wed, 14 Sep 2016 13:59:18 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r305808 - projects/mips64-clang/sys/conf 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: Wed, 14 Sep 2016 13:59:19 -0000 Author: sbruno Date: Wed Sep 14 13:59:18 2016 New Revision: 305808 URL: https://svnweb.freebsd.org/changeset/base/305808 Log: support.S now assembles with inline-as after applying: https://reviews.llvm.org/D24556 Modified: projects/mips64-clang/sys/conf/Makefile.mips Modified: projects/mips64-clang/sys/conf/Makefile.mips ============================================================================== --- projects/mips64-clang/sys/conf/Makefile.mips Wed Sep 14 12:57:40 2016 (r305807) +++ projects/mips64-clang/sys/conf/Makefile.mips Wed Sep 14 13:59:18 2016 (r305808) @@ -30,7 +30,6 @@ S= ../../.. ASM_CFLAGS.exception.S= ${CLANG_NO_IAS} ASM_CFLAGS.fp.S= ${CLANG_NO_IAS} -ASM_CFLAGS.support.S= ${CLANG_NO_IAS} INCLUDES+= -I$S/contrib/libfdt From owner-svn-src-projects@freebsd.org Wed Sep 14 14:05:35 2016 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 AF76DBDA2FE for ; Wed, 14 Sep 2016 14:05:35 +0000 (UTC) (envelope-from sbruno@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 495B2116A; Wed, 14 Sep 2016 14:05:35 +0000 (UTC) (envelope-from sbruno@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u8EE5Yio047354; Wed, 14 Sep 2016 14:05:34 GMT (envelope-from sbruno@FreeBSD.org) Received: (from sbruno@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u8EE5VuL047323; Wed, 14 Sep 2016 14:05:31 GMT (envelope-from sbruno@FreeBSD.org) Message-Id: <201609141405.u8EE5VuL047323@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: sbruno set sender to sbruno@FreeBSD.org using -f From: Sean Bruno Date: Wed, 14 Sep 2016 14:05:31 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r305809 - in projects/mips64-clang: . etc/mtree include lib/libstand release/arm share/man/man9 share/mk sys/amd64/amd64 sys/arm/conf sys/arm/ti sys/arm64/arm64 sys/arm64/include sys/bo... 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: Wed, 14 Sep 2016 14:05:35 -0000 Author: sbruno Date: Wed Sep 14 14:05:31 2016 New Revision: 305809 URL: https://svnweb.freebsd.org/changeset/base/305809 Log: MFC 305808 Added: projects/mips64-clang/sys/dev/evdev/ - copied from r305808, head/sys/dev/evdev/ Deleted: projects/mips64-clang/sys/arm/conf/CUBIEBOARD Modified: projects/mips64-clang/ObsoleteFiles.inc projects/mips64-clang/etc/mtree/BSD.include.dist projects/mips64-clang/include/Makefile projects/mips64-clang/lib/libstand/net.h projects/mips64-clang/release/arm/CUBIEBOARD.conf projects/mips64-clang/share/man/man9/device_quiet.9 projects/mips64-clang/share/mk/meta.sys.mk projects/mips64-clang/sys/amd64/amd64/trap.c projects/mips64-clang/sys/arm/conf/BEAGLEBONE projects/mips64-clang/sys/arm/ti/ti_adc.c projects/mips64-clang/sys/arm/ti/ti_adcreg.h projects/mips64-clang/sys/arm/ti/ti_adcvar.h projects/mips64-clang/sys/arm/ti/ti_cpuid.c projects/mips64-clang/sys/arm64/arm64/db_trace.c projects/mips64-clang/sys/arm64/arm64/debug_monitor.c projects/mips64-clang/sys/arm64/arm64/identcpu.c projects/mips64-clang/sys/arm64/include/debug_monitor.h projects/mips64-clang/sys/boot/common/dev_net.c projects/mips64-clang/sys/boot/kshim/bsd_kernel.c projects/mips64-clang/sys/boot/kshim/bsd_kernel.h projects/mips64-clang/sys/conf/NOTES projects/mips64-clang/sys/conf/files projects/mips64-clang/sys/conf/files.arm64 projects/mips64-clang/sys/conf/options projects/mips64-clang/sys/contrib/dev/ath/ath_hal/ar9300/ar9300_attach.c projects/mips64-clang/sys/dev/ath/if_ath_tx.c projects/mips64-clang/sys/dev/ath/if_ath_tx_edma.c projects/mips64-clang/sys/dev/cxgbe/adapter.h projects/mips64-clang/sys/dev/cxgbe/common/t4_hw.c projects/mips64-clang/sys/dev/cxgbe/firmware/t4fw_interface.h projects/mips64-clang/sys/dev/cxgbe/t4_iov.c projects/mips64-clang/sys/dev/cxgbe/t4_main.c projects/mips64-clang/sys/dev/hyperv/netvsc/hv_net_vsc.c projects/mips64-clang/sys/dev/hyperv/netvsc/hv_net_vsc.h projects/mips64-clang/sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c projects/mips64-clang/sys/dev/hyperv/netvsc/hv_rndis_filter.c projects/mips64-clang/sys/dev/hyperv/netvsc/hv_rndis_filter.h projects/mips64-clang/sys/dev/hyperv/netvsc/if_hnvar.h projects/mips64-clang/sys/dev/hyperv/vmbus/vmbus_chan.c projects/mips64-clang/sys/dev/ioat/ioat.c projects/mips64-clang/sys/dev/urtwn/if_urtwn.c projects/mips64-clang/sys/dev/usb/input/ukbd.c projects/mips64-clang/sys/dev/usb/quirk/usb_quirk.c projects/mips64-clang/sys/dev/usb/serial/usb_serial.c projects/mips64-clang/sys/dev/usb/serial/usb_serial.h projects/mips64-clang/sys/dev/usb/storage/umass.c projects/mips64-clang/sys/dev/usb/usb_busdma.c projects/mips64-clang/sys/dev/usb/usb_core.c projects/mips64-clang/sys/dev/usb/usb_core.h projects/mips64-clang/sys/dev/usb/usb_dev.c projects/mips64-clang/sys/dev/usb/usb_device.c projects/mips64-clang/sys/dev/usb/usb_freebsd.h projects/mips64-clang/sys/dev/usb/usb_freebsd_loader.h projects/mips64-clang/sys/dev/usb/usb_generic.c projects/mips64-clang/sys/dev/usb/usb_hub.c projects/mips64-clang/sys/dev/usb/usb_msctest.c projects/mips64-clang/sys/dev/usb/usb_process.c projects/mips64-clang/sys/dev/usb/usb_request.c projects/mips64-clang/sys/dev/usb/usb_transfer.c projects/mips64-clang/sys/dev/usb/usbdi.h projects/mips64-clang/sys/i386/i386/db_trace.c projects/mips64-clang/sys/i386/i386/trap.c projects/mips64-clang/sys/kern/kern_descrip.c projects/mips64-clang/sys/kern/subr_bus.c projects/mips64-clang/sys/mips/malta/asm_malta.S projects/mips64-clang/sys/mips/malta/malta_mp.c projects/mips64-clang/sys/mips/mips/locore.S projects/mips64-clang/sys/net80211/ieee80211_adhoc.c projects/mips64-clang/sys/net80211/ieee80211_hostap.c projects/mips64-clang/sys/netpfil/ipfw/ip_fw_table.c projects/mips64-clang/sys/sys/filedesc.h projects/mips64-clang/sys/x86/include/frame.h projects/mips64-clang/sys/x86/x86/identcpu.c projects/mips64-clang/sys/x86/x86/intr_machdep.c projects/mips64-clang/usr.bin/bsdiff/bspatch/bspatch.c projects/mips64-clang/usr.sbin/amd/amd/Makefile projects/mips64-clang/usr.sbin/amd/amq/Makefile projects/mips64-clang/usr.sbin/amd/fixmount/Makefile projects/mips64-clang/usr.sbin/amd/fsinfo/Makefile projects/mips64-clang/usr.sbin/amd/hlfsd/Makefile projects/mips64-clang/usr.sbin/amd/include/Makefile projects/mips64-clang/usr.sbin/amd/libamu/Makefile projects/mips64-clang/usr.sbin/amd/mk-amd-map/Makefile projects/mips64-clang/usr.sbin/amd/pawd/Makefile projects/mips64-clang/usr.sbin/amd/scripts/Makefile projects/mips64-clang/usr.sbin/amd/wire-test/Makefile projects/mips64-clang/usr.sbin/autofs/automountd.c projects/mips64-clang/usr.sbin/autofs/autounmountd.c projects/mips64-clang/usr.sbin/autofs/defined.c projects/mips64-clang/usr.sbin/pw/pw.8 projects/mips64-clang/usr.sbin/syslogd/syslogd.c Directory Properties: projects/mips64-clang/ (props changed) Modified: projects/mips64-clang/ObsoleteFiles.inc ============================================================================== --- projects/mips64-clang/ObsoleteFiles.inc Wed Sep 14 13:59:18 2016 (r305808) +++ projects/mips64-clang/ObsoleteFiles.inc Wed Sep 14 14:05:31 2016 (r305809) @@ -41,6 +41,8 @@ # 20160906: libkqueue tests moved to /usr/tests/sys/kqueue/libkqueue OLD_FILES+=usr/tests/sys/kqueue/kqtest OLD_FILES+=usr/tests/sys/kqueue/kqueue_test +# 20160903: idle page zeroing support removed +OLD_FILES+=usr/share/man/man9/pmap_zero_idle.9.gz # 20160901: Remove digi(4) OLD_FILES+=usr/share/man/man4/digi.4.gz # 20160819: Remove ie(4) @@ -59,6 +61,8 @@ OLD_FILES+=usr/share/man/man8/sicontrol. OLD_FILES+=usr/share/man/man4/scd.4.gz # 20160815: Remove mcd(4) OLD_FILES+=usr/share/man/man4/mcd.4.gz +# 20160805: lockmgr_waiters(9) removed +OLD_FILES+=usr/share/man/man9/lockmgr_waiters.9.gz # 20160703: POSIXify locales with variants OLD_FILES+=usr/share/locale/zh_Hant_TW.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/zh_Hant_TW.UTF-8/LC_CTYPE @@ -213,18 +217,23 @@ OLD_LIBS+=usr/lib32/pam_unix.so.5 OLD_FILES+=usr/include/altq/altq_codel.h OLD_FILES+=usr/include/altq/altq_fairq.h # 20160519: remove DTrace Toolkit from base +OLD_FILES+=usr/sbin/dtruss OLD_FILES+=usr/share/dtrace/toolkit/execsnoop OLD_FILES+=usr/share/dtrace/toolkit/hotkernel OLD_FILES+=usr/share/dtrace/toolkit/hotuser OLD_FILES+=usr/share/dtrace/toolkit/opensnoop OLD_FILES+=usr/share/dtrace/toolkit/procsystime OLD_DIRS+=usr/share/dtrace/toolkit +OLD_FILES+=usr/share/man/man1/dtruss.1.gz # 20160519: stale MLINK removed OLD_FILES+=usr/share/man/man9/rman_await_resource.9.gz # 20160517: ReiserFS removed OLD_FILES+=usr/share/man/man5/reiserfs.5.gz +# 20160504: tests rework +OLD_FILES+=usr/tests/lib/libc/regex/data/README # 20160430: kvm_getfiles(3) removed from kvm(3) OLD_LIBS+=lib/libkvm.so.6 +OLD_LIBS+=usr/lib32/libkvm.so.6 OLD_FILES+=usr/share/man/man3/kvm_getfiles.3.gz # 20160423: remove mroute6d OLD_FILES+=etc/rc.d/mroute6d @@ -372,12 +381,18 @@ OLD_LIBS+=usr/lib32/libcapsicum.so.0 OLD_FILES+=usr/lib32/libcapsicum_p.a # 20160223: functionality from mkulzma(1) merged into mkuzip(1) OLD_FILES+=usr/bin/mkulzma +OLD_FILES+=usr/share/man/man4/geom_uncompress.4.gz +OLD_FILES+=usr/share/man/man8/mkulzma.8.gz # 20160211: Remove obsolete unbound-control-setup OLD_FILES+=usr/sbin/unbound-control-setup +# 20160121: cc.h moved +OLD_FILES+=usr/include/netinet/cc.h # 20160116: Update mandoc to cvs snapshot 20160116 OLD_FILES+=usr/share/mdocml/example.style.css OLD_FILES+=usr/share/mdocml/style.css OLD_DIRS+=usr/share/mdocml +# 20160114: SA-16:06.snmpd +OLD_FILES+=usr/share/examples/etc/snmpd.config # 20151225: new clang import which bumps version from 3.7.0 to 3.7.1. OLD_FILES+=usr/lib/clang/3.7.0/include/sanitizer/allocator_interface.h OLD_FILES+=usr/lib/clang/3.7.0/include/sanitizer/asan_interface.h @@ -462,6 +477,9 @@ OLD_FILES+=usr/lib/clang/3.7.0/lib/freeb OLD_DIRS+=usr/lib/clang/3.7.0/lib/freebsd OLD_DIRS+=usr/lib/clang/3.7.0/lib OLD_DIRS+=usr/lib/clang/3.7.0 +# 20151201: mqueue tests 3 and 4 disabled +OLD_FILES+=usr/tests/sys/mqueue/mqtest3 +OLD_FILES+=usr/tests/sys/mqueue/mqtest4 # 20151130: libelf moved from /usr/lib to /lib (libkvm dependency in r291406) OLD_LIBS+=usr/lib/libelf.so.2 # 20151115: Fox bad upgrade scheme @@ -596,6 +614,8 @@ OLD_LIBS+=lib/libcrypto.so.7 OLD_LIBS+=usr/lib/libssl.so.7 OLD_LIBS+=usr/lib32/libcrypto.so.7 OLD_LIBS+=usr/lib32/libssl.so.7 +# 20151029: LinuxKPI moved to sys/compat/linuxkpi +OLD_FILES+=usr/include/dev/usb/usb_compat_linux.h # 20151015: test symbols moved to /usr/lib/debug OLD_DIRS+=usr/tests/lib/atf/libatf-c++/.debug OLD_FILES+=usr/tests/lib/atf/libatf-c++/.debug/atf_c++_test.debug Modified: projects/mips64-clang/etc/mtree/BSD.include.dist ============================================================================== --- projects/mips64-clang/etc/mtree/BSD.include.dist Wed Sep 14 13:59:18 2016 (r305808) +++ projects/mips64-clang/etc/mtree/BSD.include.dist Wed Sep 14 14:05:31 2016 (r305809) @@ -110,6 +110,8 @@ .. ciss .. + evdev + .. filemon .. firewire Modified: projects/mips64-clang/include/Makefile ============================================================================== --- projects/mips64-clang/include/Makefile Wed Sep 14 13:59:18 2016 (r305808) +++ projects/mips64-clang/include/Makefile Wed Sep 14 14:05:31 2016 (r305809) @@ -154,7 +154,7 @@ copies: .PHONY .META done; \ fi .endfor -.for i in ${LDIRS} ${LSUBDIRS:Ndev/agp:Ndev/acpica:Ndev/bktr:Ndev/nand:Ndev/pci} ${LSUBSUBDIRS} +.for i in ${LDIRS} ${LSUBDIRS:Ndev/agp:Ndev/acpica:Ndev/bktr:Ndev/evdev:Ndev/nand:Ndev/pci} ${LSUBSUBDIRS} cd ${.CURDIR}/../sys; \ ${INSTALL} -C ${TAG_ARGS} -o ${BINOWN} -g ${BINGRP} -m 444 $i/*.h \ ${DESTDIR}${INCLUDEDIR}/$i @@ -177,6 +177,13 @@ copies: .PHONY .META ${INSTALL} -C ${TAG_ARGS} -o ${BINOWN} -g ${BINGRP} -m 444 nand_dev.h \ ${DESTDIR}${INCLUDEDIR}/dev/nand .endif + cd ${.CURDIR}/../sys/dev/evdev; \ + ${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 input.h \ + ${DESTDIR}${INCLUDEDIR}/dev/evdev; \ + ${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 input-event-codes.h \ + ${DESTDIR}${INCLUDEDIR}/dev/evdev; \ + ${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 uinput.h \ + ${DESTDIR}${INCLUDEDIR}/dev/evdev cd ${.CURDIR}/../sys/dev/pci; \ ${INSTALL} -C ${TAG_ARGS} -o ${BINOWN} -g ${BINGRP} -m 444 pcireg.h \ ${DESTDIR}${INCLUDEDIR}/dev/pci @@ -238,7 +245,7 @@ symlinks: .PHONY .META ${INSTALL_SYMLINK} ${TAG_ARGS} ../../../sys/$i/$$h ${DESTDIR}${INCLUDEDIR}/$i; \ done .endfor -.for i in ${LSUBDIRS:Ndev/agp:Ndev/acpica:Ndev/bktr:Ndev/nand:Ndev/pci} +.for i in ${LSUBDIRS:Ndev/agp:Ndev/acpica:Ndev/bktr:Ndev/evdev:Ndev/nand:Ndev/pci} cd ${.CURDIR}/../sys/$i; \ for h in *.h; do \ ${INSTALL_SYMLINK} ${TAG_ARGS} ../../../../sys/$i/$$h ${DESTDIR}${INCLUDEDIR}/$i; \ @@ -266,6 +273,11 @@ symlinks: .PHONY .META ${DESTDIR}${INCLUDEDIR}/dev/nand; \ done .endif + cd ${.CURDIR}/../sys/dev/evdev; \ + for h in input.h input-event-codes.h uinput.h; do \ + ln -fs ../../../../sys/dev/evdev/$$h \ + ${DESTDIR}${INCLUDEDIR}/dev/evdev; \ + done cd ${.CURDIR}/../sys/dev/pci; \ for h in pcireg.h; do \ ${INSTALL_SYMLINK} ${TAG_ARGS} ../../../../sys/dev/pci/$$h \ Modified: projects/mips64-clang/lib/libstand/net.h ============================================================================== --- projects/mips64-clang/lib/libstand/net.h Wed Sep 14 13:59:18 2016 (r305808) +++ projects/mips64-clang/lib/libstand/net.h Wed Sep 14 14:05:31 2016 (r305809) @@ -130,4 +130,4 @@ n_long inet_addr(char *); /* Machine-dependent functions: */ time_t getsecs(void); -#endif +#endif /* ! _STAND_NET_H */ Modified: projects/mips64-clang/release/arm/CUBIEBOARD.conf ============================================================================== --- projects/mips64-clang/release/arm/CUBIEBOARD.conf Wed Sep 14 13:59:18 2016 (r305808) +++ projects/mips64-clang/release/arm/CUBIEBOARD.conf Wed Sep 14 14:05:31 2016 (r305809) @@ -7,7 +7,7 @@ EMBEDDEDBUILD=1 EMBEDDED_TARGET="arm" EMBEDDED_TARGET_ARCH="armv6" EMBEDDEDPORTS="sysutils/u-boot-cubieboard" -KERNEL="CUBIEBOARD" +KERNEL="ALLWINNER_UP" WORLD_FLAGS="${WORLD_FLAGS} UBLDR_LOADADDR=0x42000000" IMAGE_SIZE="1G" PART_SCHEME="MBR" Modified: projects/mips64-clang/share/man/man9/device_quiet.9 ============================================================================== --- projects/mips64-clang/share/man/man9/device_quiet.9 Wed Sep 14 13:59:18 2016 (r305808) +++ projects/mips64-clang/share/man/man9/device_quiet.9 Wed Sep 14 14:05:31 2016 (r305809) @@ -28,7 +28,7 @@ .\" .\" $FreeBSD$ .\" -.Dd June 21, 1999 +.Dd September 12, 2016 .Dt DEVICE_QUIET 9 .Os .Sh NAME @@ -49,16 +49,18 @@ Each device has a quiet flag associated with it. A device is verbose by default when it is created but may be quieted to prevent -the device identification string to be printed during probe. +printing of the device identification string during attach +and printing of a message during detach. To quiet a device, call -.Fn device_quiet , -to re-enable to probe message (to make the message appear again, for -example after a -.Xr device_detach 9 ) +.Fn device_quiet +during a device driver probe routine. +To re-enable probe messages, call .Fn device_verbose . To test to see if a device is quieted, call .Fn device_is_quiet . +.Pp +Devices are implicitly marked verbose after a driver detaches. .Sh SEE ALSO .Xr device 9 .Sh AUTHORS Modified: projects/mips64-clang/share/mk/meta.sys.mk ============================================================================== --- projects/mips64-clang/share/mk/meta.sys.mk Wed Sep 14 13:59:18 2016 (r305808) +++ projects/mips64-clang/share/mk/meta.sys.mk Wed Sep 14 14:05:31 2016 (r305809) @@ -114,16 +114,13 @@ _metaError: .NOMETA .NOTMAIN .endif -META_COOKIE_TOUCH= -# some targets need to be .PHONY in non-meta mode -META_NOPHONY= .PHONY # Are we, after all, in meta mode? .if ${.MAKE.MODE:Uno:Mmeta*} != "" MKDEP_MK = meta.autodep.mk # we can afford to use cookies to prevent some targets # re-running needlessly -META_COOKIE_TOUCH= touch ${COOKIE.${.TARGET}:U${.OBJDIR}/${.TARGET:T}} +META_COOKIE_TOUCH?= touch ${COOKIE.${.TARGET}:U${.OBJDIR}/${.TARGET:T}} META_NOPHONY= # some targets involve old pre-built targets @@ -159,5 +156,9 @@ BUILD_AT_LEVEL0 ?= no .endif .endif +.else +META_COOKIE_TOUCH= +# some targets need to be .PHONY in non-meta mode +META_NOPHONY= .PHONY .endif .endif Modified: projects/mips64-clang/sys/amd64/amd64/trap.c ============================================================================== --- projects/mips64-clang/sys/amd64/amd64/trap.c Wed Sep 14 13:59:18 2016 (r305808) +++ projects/mips64-clang/sys/amd64/amd64/trap.c Wed Sep 14 14:05:31 2016 (r305809) @@ -236,7 +236,7 @@ trap(struct trapframe *frame) * interrupts disabled until they are accidentally * enabled later. */ - if (ISPL(frame->tf_cs) == SEL_UPL) + if (TRAPF_USERMODE(frame)) uprintf( "pid %ld (%s): trap %d with interrupts disabled\n", (long)curproc->p_pid, curthread->td_name, type); @@ -260,7 +260,7 @@ trap(struct trapframe *frame) code = frame->tf_err; - if (ISPL(frame->tf_cs) == SEL_UPL) { + if (TRAPF_USERMODE(frame)) { /* user trap */ td->td_pticks = 0; @@ -787,7 +787,7 @@ trap_fatal(frame, eva) else msg = "UNKNOWN"; printf("\n\nFatal trap %d: %s while in %s mode\n", type, msg, - ISPL(frame->tf_cs) == SEL_UPL ? "user" : "kernel"); + TRAPF_USERMODE(frame) ? "user" : "kernel"); #ifdef SMP /* two separate prints in case of a trap on an unmapped page */ printf("cpuid = %d; ", PCPU_GET(cpuid)); @@ -804,7 +804,7 @@ trap_fatal(frame, eva) } printf("instruction pointer = 0x%lx:0x%lx\n", frame->tf_cs & 0xffff, frame->tf_rip); - if (ISPL(frame->tf_cs) == SEL_UPL) { + if (TF_HAS_STACKREGS(frame)) { ss = frame->tf_ss & 0xffff; esp = frame->tf_rsp; } else { @@ -934,7 +934,7 @@ amd64_syscall(struct thread *td, int tra ksiginfo_t ksi; #ifdef DIAGNOSTIC - if (ISPL(td->td_frame->tf_cs) != SEL_UPL) { + if (!TRAPF_USERMODE(frame)) { panic("syscall"); /* NOT REACHED */ } Modified: projects/mips64-clang/sys/arm/conf/BEAGLEBONE ============================================================================== --- projects/mips64-clang/sys/arm/conf/BEAGLEBONE Wed Sep 14 13:59:18 2016 (r305808) +++ projects/mips64-clang/sys/arm/conf/BEAGLEBONE Wed Sep 14 14:05:31 2016 (r305809) @@ -131,3 +131,6 @@ device hdmi device ums device ukbd device kbdmux + +# Uncomment to enable evdev support for ti_adc +# options EVDEV Modified: projects/mips64-clang/sys/arm/ti/ti_adc.c ============================================================================== --- projects/mips64-clang/sys/arm/ti/ti_adc.c Wed Sep 14 13:59:18 2016 (r305808) +++ projects/mips64-clang/sys/arm/ti/ti_adc.c Wed Sep 14 14:05:31 2016 (r305809) @@ -27,6 +27,8 @@ #include __FBSDID("$FreeBSD$"); +#include "opt_evdev.h" + #include #include #include @@ -52,6 +54,11 @@ __FBSDID("$FreeBSD$"); #include #include +#ifdef EVDEV +#include +#include +#endif + #include #include #include @@ -80,6 +87,20 @@ static struct ti_adc_input ti_adc_inputs static int ti_adc_samples[5] = { 0, 2, 4, 8, 16 }; +static int ti_adc_detach(device_t dev); + +#ifdef EVDEV +static void +ti_adc_ev_report(struct ti_adc_softc *sc) +{ + + evdev_push_event(sc->sc_evdev, EV_ABS, ABS_X, sc->sc_x); + evdev_push_event(sc->sc_evdev, EV_ABS, ABS_Y, sc->sc_y); + evdev_push_event(sc->sc_evdev, EV_KEY, BTN_TOUCH, sc->sc_pen_down); + evdev_sync(sc->sc_evdev); +} +#endif /* EVDEV */ + static void ti_adc_enable(struct ti_adc_softc *sc) { @@ -450,7 +471,14 @@ ti_adc_tsc_read_data(struct ti_adc_softc #ifdef DEBUG_TSC device_printf(sc->sc_dev, "touchscreen x: %d, y: %d\n", x, y); #endif - /* TODO: That's where actual event reporting should take place */ + +#ifdef EVDEV + if ((sc->sc_x != x) || (sc->sc_y != y)) { + sc->sc_x = x; + sc->sc_y = y; + ti_adc_ev_report(sc); + } +#endif } static void @@ -488,11 +516,17 @@ ti_adc_intr(void *arg) status |= ADC_IRQ_HW_PEN_ASYNC; ADC_WRITE4(sc, ADC_IRQENABLE_CLR, ADC_IRQ_HW_PEN_ASYNC); +#ifdef EVDEV + ti_adc_ev_report(sc); +#endif } if (rawstatus & ADC_IRQ_PEN_UP) { sc->sc_pen_down = 0; status |= ADC_IRQ_PEN_UP; +#ifdef EVDEV + ti_adc_ev_report(sc); +#endif } if (status & ADC_IRQ_FIFO0_THRES) @@ -840,6 +874,38 @@ ti_adc_attach(device_t dev) ti_adc_setup(sc); TI_ADC_UNLOCK(sc); +#ifdef EVDEV + if (sc->sc_tsc_wires > 0) { + sc->sc_evdev = evdev_alloc(); + evdev_set_name(sc->sc_evdev, device_get_desc(dev)); + evdev_set_phys(sc->sc_evdev, device_get_nameunit(dev)); + evdev_set_id(sc->sc_evdev, BUS_VIRTUAL, 0, 0, 0); + evdev_support_prop(sc->sc_evdev, INPUT_PROP_DIRECT); + evdev_support_event(sc->sc_evdev, EV_SYN); + evdev_support_event(sc->sc_evdev, EV_ABS); + evdev_support_event(sc->sc_evdev, EV_KEY); + + evdev_support_abs(sc->sc_evdev, ABS_X, 0, 0, + ADC_MAX_VALUE, 0, 0, 0); + evdev_support_abs(sc->sc_evdev, ABS_Y, 0, 0, + ADC_MAX_VALUE, 0, 0, 0); + + evdev_support_key(sc->sc_evdev, BTN_TOUCH); + + err = evdev_register(sc->sc_evdev); + if (err) { + device_printf(dev, + "failed to register evdev: error=%d\n", err); + ti_adc_detach(dev); + return (err); + } + + sc->sc_pen_down = 0; + sc->sc_x = -1; + sc->sc_y = -1; + } +#endif /* EVDEV */ + return (0); } @@ -854,6 +920,11 @@ ti_adc_detach(device_t dev) TI_ADC_LOCK(sc); ti_adc_reset(sc); ti_adc_setup(sc); + +#ifdef EVDEV + evdev_free(sc->sc_evdev); +#endif + TI_ADC_UNLOCK(sc); TI_ADC_LOCK_DESTROY(sc); Modified: projects/mips64-clang/sys/arm/ti/ti_adcreg.h ============================================================================== --- projects/mips64-clang/sys/arm/ti/ti_adcreg.h Wed Sep 14 13:59:18 2016 (r305808) +++ projects/mips64-clang/sys/arm/ti/ti_adcreg.h Wed Sep 14 14:05:31 2016 (r305809) @@ -122,5 +122,6 @@ #define ADC_FIFO_STEP_ID_MSK 0x000f0000 #define ADC_FIFO_STEP_ID_SHIFT 16 #define ADC_FIFO_DATA_MSK 0x00000fff +#define ADC_MAX_VALUE 0xfff #endif /* _TI_ADCREG_H_ */ Modified: projects/mips64-clang/sys/arm/ti/ti_adcvar.h ============================================================================== --- projects/mips64-clang/sys/arm/ti/ti_adcvar.h Wed Sep 14 13:59:18 2016 (r305808) +++ projects/mips64-clang/sys/arm/ti/ti_adcvar.h Wed Sep 14 14:05:31 2016 (r305809) @@ -55,6 +55,11 @@ struct ti_adc_softc { int sc_yn_bit, sc_yn_inp; uint32_t sc_tsc_enabled; int sc_pen_down; +#ifdef EVDEV + int sc_x; + int sc_y; + struct evdev_dev *sc_evdev; +#endif }; struct ti_adc_input { Modified: projects/mips64-clang/sys/arm/ti/ti_cpuid.c ============================================================================== --- projects/mips64-clang/sys/arm/ti/ti_cpuid.c Wed Sep 14 13:59:18 2016 (r305808) +++ projects/mips64-clang/sys/arm/ti/ti_cpuid.c Wed Sep 14 14:05:31 2016 (r305809) @@ -201,8 +201,10 @@ static void am335x_get_revision(void) { uint32_t dev_feature; - uint8_t cpu_last_char; + char cpu_last_char; bus_space_handle_t bsh; + int major; + int minor; bus_space_map(fdtbus_bs_tag, AM335X_CONTROL_BASE, AM335X_CONTROL_SIZE, 0, &bsh); chip_revision = bus_space_read_4(fdtbus_bs_tag, bsh, AM335X_CONTROL_DEVICE_ID); @@ -232,8 +234,26 @@ am335x_get_revision(void) cpu_last_char='x'; } - printf("Texas Instruments AM335%c Processor, Revision ES1.%u\n", - cpu_last_char, AM335X_DEVREV(chip_revision)); + switch(AM335X_DEVREV(chip_revision)) { + case 0: + major = 1; + minor = 0; + break; + case 1: + major = 2; + minor = 0; + break; + case 2: + major = 2; + minor = 1; + break; + default: + major = 0; + minor = AM335X_DEVREV(chip_revision); + break; + } + printf("Texas Instruments AM335%c Processor, Revision ES%u.%u\n", + cpu_last_char, major, minor); } /** Modified: projects/mips64-clang/sys/arm64/arm64/db_trace.c ============================================================================== --- projects/mips64-clang/sys/arm64/arm64/db_trace.c Wed Sep 14 13:59:18 2016 (r305808) +++ projects/mips64-clang/sys/arm64/arm64/db_trace.c Wed Sep 14 14:05:31 2016 (r305809) @@ -27,6 +27,8 @@ * SUCH DAMAGE. */ +#include "opt_ddb.h" + #include __FBSDID("$FreeBSD$"); #include Modified: projects/mips64-clang/sys/arm64/arm64/debug_monitor.c ============================================================================== --- projects/mips64-clang/sys/arm64/arm64/debug_monitor.c Wed Sep 14 13:59:18 2016 (r305808) +++ projects/mips64-clang/sys/arm64/arm64/debug_monitor.c Wed Sep 14 14:05:31 2016 (r305809) @@ -27,6 +27,8 @@ * SUCH DAMAGE. */ +#include "opt_ddb.h" + #include __FBSDID("$FreeBSD$"); Modified: projects/mips64-clang/sys/arm64/arm64/identcpu.c ============================================================================== --- projects/mips64-clang/sys/arm64/arm64/identcpu.c Wed Sep 14 13:59:18 2016 (r305808) +++ projects/mips64-clang/sys/arm64/arm64/identcpu.c Wed Sep 14 14:05:31 2016 (r305809) @@ -179,6 +179,28 @@ print_cpu_features(u_int cpu) } printf("\n"); + /* + * There is a hardware errata where, if one CPU is performing a TLB + * invalidation while another is performing a store-exclusive the + * store-exclusive may return the wrong status. A workaround seems + * to be to use an IPI to invalidate on each CPU, however given the + * limited number of affected units (pass 1.1 is the evaluation + * hardware revision), and the lack of information from Cavium + * this has not been implemented. + * + * At the time of writing this the only information is from: + * https://lkml.org/lkml/2016/8/4/722 + */ + /* + * XXX: CPU_MATCH_ERRATA_CAVIUM_THUNDER_1_1 on it's own also + * triggers on pass 2.0+. + */ + if (cpu == 0 && CPU_VAR(PCPU_GET(midr)) == 0 && + CPU_MATCH_ERRATA_CAVIUM_THUNDER_1_1) + printf("WARNING: ThunderX Pass 1.1 detected.\nThis has known " + "hardware bugs that may cause the incorrect operation of " + "atomic operations.\n"); + if (cpu != 0 && cpu_print_regs == 0) return; Modified: projects/mips64-clang/sys/arm64/include/debug_monitor.h ============================================================================== --- projects/mips64-clang/sys/arm64/include/debug_monitor.h Wed Sep 14 13:59:18 2016 (r305808) +++ projects/mips64-clang/sys/arm64/include/debug_monitor.h Wed Sep 14 14:05:31 2016 (r305809) @@ -32,7 +32,7 @@ #ifndef _MACHINE_DEBUG_MONITOR_H_ #define _MACHINE_DEBUG_MONITOR_H_ -#ifdef KDB +#ifdef DDB #include Modified: projects/mips64-clang/sys/boot/common/dev_net.c ============================================================================== --- projects/mips64-clang/sys/boot/common/dev_net.c Wed Sep 14 13:59:18 2016 (r305808) +++ projects/mips64-clang/sys/boot/common/dev_net.c Wed Sep 14 14:05:31 2016 (r305809) @@ -368,7 +368,7 @@ net_print(int verbose) uint32_t net_parse_rootpath() { - int i, ipstart; + int i; n_long addr = INADDR_NONE; netproto = NET_NFS; @@ -383,7 +383,7 @@ net_parse_rootpath() break; if (i && i != FNAME_SIZE && rootpath[i] == ':') { rootpath[i++] = '\0'; - addr = inet_addr(&rootpath[ipstart]); + addr = inet_addr(&rootpath[0]); bcopy(&rootpath[i], rootpath, strlen(&rootpath[i])+1); } Modified: projects/mips64-clang/sys/boot/kshim/bsd_kernel.c ============================================================================== --- projects/mips64-clang/sys/boot/kshim/bsd_kernel.c Wed Sep 14 13:59:18 2016 (r305808) +++ projects/mips64-clang/sys/boot/kshim/bsd_kernel.c Wed Sep 14 14:05:31 2016 (r305809) @@ -432,8 +432,8 @@ callout_callback(struct callout *c) } mtx_unlock(&mtx_callout); - if (c->func) - (c->func) (c->arg); + if (c->c_func != NULL) + (c->c_func) (c->c_arg); if (!(c->flags & CALLOUT_RETURNUNLOCKED)) mtx_unlock(c->mtx); @@ -487,8 +487,8 @@ callout_reset(struct callout *c, int to_ { callout_stop(c); - c->func = func; - c->arg = arg; + c->c_func = func; + c->c_arg = arg; c->timeout = ticks + to_ticks; mtx_lock(&mtx_callout); @@ -507,8 +507,8 @@ callout_stop(struct callout *c) } mtx_unlock(&mtx_callout); - c->func = NULL; - c->arg = NULL; + c->c_func = NULL; + c->c_arg = NULL; } void Modified: projects/mips64-clang/sys/boot/kshim/bsd_kernel.h ============================================================================== --- projects/mips64-clang/sys/boot/kshim/bsd_kernel.h Wed Sep 14 13:59:18 2016 (r305808) +++ projects/mips64-clang/sys/boot/kshim/bsd_kernel.h Wed Sep 14 14:05:31 2016 (r305809) @@ -299,8 +299,8 @@ extern volatile int ticks; struct callout { LIST_ENTRY(callout) entry; - callout_fn_t *func; - void *arg; + callout_fn_t *c_func; + void *c_arg; struct mtx *mtx; int flags; int timeout; Modified: projects/mips64-clang/sys/conf/NOTES ============================================================================== --- projects/mips64-clang/sys/conf/NOTES Wed Sep 14 13:59:18 2016 (r305808) +++ projects/mips64-clang/sys/conf/NOTES Wed Sep 14 14:05:31 2016 (r305809) @@ -3052,3 +3052,8 @@ options GZIO # BHND(4) drivers options BHND_LOGLEVEL # Logging threshold level + +# evdev interface +options EVDEV +options EVDEV_DEBUG +options UINPUT_DEBUG Modified: projects/mips64-clang/sys/conf/files ============================================================================== --- projects/mips64-clang/sys/conf/files Wed Sep 14 13:59:18 2016 (r305808) +++ projects/mips64-clang/sys/conf/files Wed Sep 14 14:05:31 2016 (r305809) @@ -1501,6 +1501,11 @@ dev/etherswitch/ip17x/ip17x_vlans.c opti dev/etherswitch/miiproxy.c optional miiproxy dev/etherswitch/rtl8366/rtl8366rb.c optional rtl8366rb dev/etherswitch/ukswitch/ukswitch.c optional ukswitch +dev/evdev/cdev.c optional evdev +dev/evdev/evdev.c optional evdev +dev/evdev/evdev_mt.c optional evdev +dev/evdev/evdev_utils.c optional evdev +dev/evdev/uinput.c optional evdev uinput dev/ex/if_ex.c optional ex dev/ex/if_ex_isa.c optional ex isa dev/ex/if_ex_pccard.c optional ex pccard Modified: projects/mips64-clang/sys/conf/files.arm64 ============================================================================== --- projects/mips64-clang/sys/conf/files.arm64 Wed Sep 14 13:59:18 2016 (r305808) +++ projects/mips64-clang/sys/conf/files.arm64 Wed Sep 14 14:05:31 2016 (r305809) @@ -62,7 +62,7 @@ arm64/arm64/cpufunc_asm.S standard arm64/arm64/db_disasm.c optional ddb arm64/arm64/db_interface.c optional ddb arm64/arm64/db_trace.c optional ddb -arm64/arm64/debug_monitor.c optional kdb +arm64/arm64/debug_monitor.c optional ddb arm64/arm64/disassem.c optional ddb arm64/arm64/dump_machdep.c standard arm64/arm64/elf_machdep.c standard Modified: projects/mips64-clang/sys/conf/options ============================================================================== --- projects/mips64-clang/sys/conf/options Wed Sep 14 13:59:18 2016 (r305808) +++ projects/mips64-clang/sys/conf/options Wed Sep 14 14:05:31 2016 (r305809) @@ -987,3 +987,8 @@ BHND_LOGLEVEL opt_global.h # GPIO and child devices GPIO_SPI_DEBUG opt_gpio.h + +# evdev protocol support +EVDEV opt_evdev.h +EVDEV_DEBUG opt_evdev.h +UINPUT_DEBUG opt_evdev.h Modified: projects/mips64-clang/sys/contrib/dev/ath/ath_hal/ar9300/ar9300_attach.c ============================================================================== --- projects/mips64-clang/sys/contrib/dev/ath/ath_hal/ar9300/ar9300_attach.c Wed Sep 14 13:59:18 2016 (r305808) +++ projects/mips64-clang/sys/contrib/dev/ath/ath_hal/ar9300/ar9300_attach.c Wed Sep 14 14:05:31 2016 (r305809) @@ -2339,7 +2339,9 @@ ar9300_attach(u_int16_t devid, HAL_SOFTC } else { ar9300_disable_pcie_phy(ah); } +#if 0 ath_hal_printf(ah, "%s: calling ar9300_hw_attach\n", __func__); +#endif ecode = ar9300_hw_attach(ah); if (ecode != HAL_OK) { goto bad; @@ -3234,7 +3236,9 @@ ar9300_hw_attach(struct ath_hal *ah) return HAL_ESELFTEST; } +#if 0 ath_hal_printf(ah, "%s: calling ar9300_eeprom_attach\n", __func__); +#endif ecode = ar9300_eeprom_attach(ah); ath_hal_printf(ah, "%s: ar9300_eeprom_attach returned %d\n", __func__, ecode); if (ecode != HAL_OK) { Modified: projects/mips64-clang/sys/dev/ath/if_ath_tx.c ============================================================================== --- projects/mips64-clang/sys/dev/ath/if_ath_tx.c Wed Sep 14 13:59:18 2016 (r305808) +++ projects/mips64-clang/sys/dev/ath/if_ath_tx.c Wed Sep 14 14:05:31 2016 (r305809) @@ -1042,6 +1042,14 @@ ath_tx_calc_protection(struct ath_softc shortPreamble = bf->bf_state.bfs_shpream; wh = mtod(bf->bf_m, struct ieee80211_frame *); + /* Disable frame protection for TOA probe frames */ + if (bf->bf_flags & ATH_BUF_TOA_PROBE) { + /* XXX count */ + flags &= ~(HAL_TXDESC_CTSENA | HAL_TXDESC_RTSENA); + bf->bf_state.bfs_doprot = 0; + goto finish; + } + /* * If 802.11g protection is enabled, determine whether * to use RTS/CTS or just CTS. Note that this is only @@ -1081,6 +1089,8 @@ ath_tx_calc_protection(struct ath_softc flags |= HAL_TXDESC_RTSENA; sc->sc_stats.ast_tx_htprotect++; } + +finish: bf->bf_state.bfs_txflags = flags; } @@ -1739,6 +1749,34 @@ ath_tx_normal_setup(struct ath_softc *sc } #endif + /* + * If it's a frame to do location reporting on, + * communicate it to the HAL. + */ + if (ieee80211_get_toa_params(m0, NULL)) { + device_printf(sc->sc_dev, + "%s: setting TX positioning bit\n", __func__); + flags |= HAL_TXDESC_POS; + + /* + * Note: The hardware reports timestamps for + * each of the RX'ed packets as part of the packet + * exchange. So this means things like RTS/CTS + * exchanges, as well as the final ACK. + * + * So, if you send a RTS-protected NULL data frame, + * you'll get an RX report for the RTS response, then + * an RX report for the NULL frame, and then the TX + * completion at the end. + * + * NOTE: it doesn't work right for CCK frames; + * there's no channel info data provided unless + * it's OFDM or HT. Will have to dig into it. + */ + flags &= ~(HAL_TXDESC_RTSENA | HAL_TXDESC_CTSENA); + bf->bf_flags |= ATH_BUF_TOA_PROBE; + } + #if 0 /* * Placeholder: if you want to transmit with the azimuth @@ -2175,6 +2213,18 @@ ath_tx_raw_start(struct ath_softc *sc, s try0 = ATH_TXMAXTRY; /* XXX?too many? */ } + /* + * If it's a frame to do location reporting on, + * communicate it to the HAL. + */ + if (ieee80211_get_toa_params(m0, NULL)) { + device_printf(sc->sc_dev, + "%s: setting TX positioning bit\n", __func__); + flags |= HAL_TXDESC_POS; + flags &= ~(HAL_TXDESC_RTSENA | HAL_TXDESC_CTSENA); + bf->bf_flags |= ATH_BUF_TOA_PROBE; + } + txrate = rt->info[rix].rateCode; if (params->ibp_flags & IEEE80211_BPF_SHORTPRE) txrate |= rt->info[rix].shortPreamble; Modified: projects/mips64-clang/sys/dev/ath/if_ath_tx_edma.c ============================================================================== --- projects/mips64-clang/sys/dev/ath/if_ath_tx_edma.c Wed Sep 14 13:59:18 2016 (r305808) +++ projects/mips64-clang/sys/dev/ath/if_ath_tx_edma.c Wed Sep 14 14:05:31 2016 (r305809) @@ -268,7 +268,7 @@ ath_tx_edma_push_staging_list(struct ath /* Bump FIFO queue */ txq->axq_fifo_depth++; - DPRINTF(sc, ATH_DEBUG_XMIT, + DPRINTF(sc, ATH_DEBUG_XMIT | ATH_DEBUG_TX_PROC, "%s: queued %d packets; depth=%d, fifo depth=%d\n", __func__, sqdepth, txq->fifo.axq_depth, txq->axq_fifo_depth); @@ -296,16 +296,21 @@ ath_edma_tx_fifo_fill(struct ath_softc * ATH_TXQ_LOCK_ASSERT(txq); - DPRINTF(sc, ATH_DEBUG_TX_PROC, "%s: Q%d: called\n", + DPRINTF(sc, ATH_DEBUG_TX_PROC, + "%s: Q%d: called; fifo.depth=%d, fifo depth=%d, depth=%d, aggr_depth=%d\n", __func__, - txq->axq_qnum); + txq->axq_qnum, + txq->fifo.axq_depth, + txq->axq_fifo_depth, + txq->axq_depth, + txq->axq_aggr_depth); /* - * For now, push up to 4 frames per TX FIFO slot. + * For now, push up to 32 frames per TX FIFO slot. * If more are in the hardware queue then they'll * get populated when we try to send another frame * or complete a frame - so at most there'll be - * 32 non-AMPDU frames per TXQ. + * 32 non-AMPDU frames per node/TID anyway. * * Note that the hardware staging queue will limit * how many frames in total we will have pushed into @@ -811,10 +816,11 @@ ath_edma_tx_processq(struct ath_softc *s } #if defined(ATH_DEBUG_ALQ) && defined(ATH_DEBUG) - if (if_ath_alq_checkdebug(&sc->sc_alq, ATH_ALQ_EDMA_TXSTATUS)) + if (if_ath_alq_checkdebug(&sc->sc_alq, ATH_ALQ_EDMA_TXSTATUS)) { if_ath_alq_post(&sc->sc_alq, ATH_ALQ_EDMA_TXSTATUS, sc->sc_tx_statuslen, (char *) txstatus); + } #endif /* ATH_DEBUG_ALQ */ /* Modified: projects/mips64-clang/sys/dev/cxgbe/adapter.h ============================================================================== --- projects/mips64-clang/sys/dev/cxgbe/adapter.h Wed Sep 14 13:59:18 2016 (r305808) +++ projects/mips64-clang/sys/dev/cxgbe/adapter.h Wed Sep 14 14:05:31 2016 (r305809) @@ -835,7 +835,7 @@ struct adapter { uint16_t niccaps; uint16_t toecaps; uint16_t rdmacaps; - uint16_t tlscaps; + uint16_t cryptocaps; uint16_t iscsicaps; uint16_t fcoecaps; @@ -1040,12 +1040,26 @@ is_10G_port(const struct port_info *pi) } static inline bool +is_25G_port(const struct port_info *pi) +{ + + return ((pi->link_cfg.supported & FW_PORT_CAP_SPEED_25G) != 0); +} + +static inline bool is_40G_port(const struct port_info *pi) { return ((pi->link_cfg.supported & FW_PORT_CAP_SPEED_40G) != 0); } +static inline bool +is_100G_port(const struct port_info *pi) +{ + + return ((pi->link_cfg.supported & FW_PORT_CAP_SPEED_100G) != 0); +} + static inline int port_top_speed(const struct port_info *pi) { @@ -1054,6 +1068,8 @@ port_top_speed(const struct port_info *p return (100); if (pi->link_cfg.supported & FW_PORT_CAP_SPEED_40G) return (40); + if (pi->link_cfg.supported & FW_PORT_CAP_SPEED_25G) + return (25); if (pi->link_cfg.supported & FW_PORT_CAP_SPEED_10G) return (10); if (pi->link_cfg.supported & FW_PORT_CAP_SPEED_1G) Modified: projects/mips64-clang/sys/dev/cxgbe/common/t4_hw.c ============================================================================== --- projects/mips64-clang/sys/dev/cxgbe/common/t4_hw.c Wed Sep 14 13:59:18 2016 (r305808) +++ projects/mips64-clang/sys/dev/cxgbe/common/t4_hw.c Wed Sep 14 14:05:31 2016 (r305809) @@ -3669,8 +3669,9 @@ void t4_ulprx_read_la(struct adapter *ad } #define ADVERT_MASK (FW_PORT_CAP_SPEED_100M | FW_PORT_CAP_SPEED_1G |\ - FW_PORT_CAP_SPEED_10G | FW_PORT_CAP_SPEED_40G | \ - FW_PORT_CAP_SPEED_100G | FW_PORT_CAP_ANEG) + FW_PORT_CAP_SPEED_10G | FW_PORT_CAP_SPEED_25G | \ + FW_PORT_CAP_SPEED_40G | FW_PORT_CAP_SPEED_100G | \ + FW_PORT_CAP_ANEG) /** * t4_link_l1cfg - apply link configuration to MAC/PHY @@ -5775,6 +5776,11 @@ const char *t4_get_port_type_description "QSA", "QSFP", "BP40_BA", + "KR4_100G", + "CR4_QSFP", + "CR_QSFP", + "CR2_QSFP", + "SFP28", }; if (port_type < ARRAY_SIZE(port_type_description)) @@ -7462,8 +7468,12 @@ int t4_handle_fw_rpl(struct adapter *ada speed = 1000; else if (stat & V_FW_PORT_CMD_LSPEED(FW_PORT_CAP_SPEED_10G)) speed = 10000; + else if (stat & V_FW_PORT_CMD_LSPEED(FW_PORT_CAP_SPEED_25G)) + speed = 25000; else if (stat & V_FW_PORT_CMD_LSPEED(FW_PORT_CAP_SPEED_40G)) speed = 40000; + else if (stat & V_FW_PORT_CMD_LSPEED(FW_PORT_CAP_SPEED_100G)) + speed = 100000; for_each_port(adap, i) { pi = adap2pinfo(adap, i); Modified: projects/mips64-clang/sys/dev/cxgbe/firmware/t4fw_interface.h ============================================================================== --- projects/mips64-clang/sys/dev/cxgbe/firmware/t4fw_interface.h Wed Sep 14 13:59:18 2016 (r305808) +++ projects/mips64-clang/sys/dev/cxgbe/firmware/t4fw_interface.h Wed Sep 14 14:05:31 2016 (r305809) @@ -135,7 +135,9 @@ enum fw_wr_opcodes { FW_POFCOE_ULPTX_WR = 0x43, FW_ISCSI_TX_DATA_WR = 0x45, FW_PTP_TX_PKT_WR = 0x46, - FW_SEC_LOOKASIDE_LPBK_WR= 0x6d, + FW_TLSTX_DATA_WR = 0x68, + FW_TLS_KEYCTX_TX_WR = 0x69, + FW_CRYPTO_LOOKASIDE_WR = 0x6d, FW_COiSCSI_TGT_WR = 0x70, FW_COiSCSI_TGT_CONN_WR = 0x71, FW_COiSCSI_TGT_XMIT_WR = 0x72, @@ -3384,8 +3386,429 @@ struct fw_pi_error { #define G_FW_PI_ERROR_ERR_TYPE(x) \ (((x) >> S_FW_PI_ERROR_ERR_TYPE) & M_FW_PI_ERROR_ERR_TYPE) +struct fw_tlstx_data_wr { + __be32 op_to_immdlen; + __be32 flowid_len16; + __be32 plen; + __be32 lsodisable_to_flags; + __be32 ddraddr; + __be32 ctxloc_to_exp; + __be16 mfs; + __u8 r6[6]; +}; + +#define S_FW_TLSTX_DATA_WR_COMPL 21 +#define M_FW_TLSTX_DATA_WR_COMPL 0x1 +#define V_FW_TLSTX_DATA_WR_COMPL(x) ((x) << S_FW_TLSTX_DATA_WR_COMPL) +#define G_FW_TLSTX_DATA_WR_COMPL(x) \ + (((x) >> S_FW_TLSTX_DATA_WR_COMPL) & M_FW_TLSTX_DATA_WR_COMPL) +#define F_FW_TLSTX_DATA_WR_COMPL V_FW_TLSTX_DATA_WR_COMPL(1U) + +#define S_FW_TLSTX_DATA_WR_IMMDLEN 0 +#define M_FW_TLSTX_DATA_WR_IMMDLEN 0xff +#define V_FW_TLSTX_DATA_WR_IMMDLEN(x) ((x) << S_FW_TLSTX_DATA_WR_IMMDLEN) +#define G_FW_TLSTX_DATA_WR_IMMDLEN(x) \ + (((x) >> S_FW_TLSTX_DATA_WR_IMMDLEN) & M_FW_TLSTX_DATA_WR_IMMDLEN) + +#define S_FW_TLSTX_DATA_WR_FLOWID 8 +#define M_FW_TLSTX_DATA_WR_FLOWID 0xfffff +#define V_FW_TLSTX_DATA_WR_FLOWID(x) ((x) << S_FW_TLSTX_DATA_WR_FLOWID) +#define G_FW_TLSTX_DATA_WR_FLOWID(x) \ + (((x) >> S_FW_TLSTX_DATA_WR_FLOWID) & M_FW_TLSTX_DATA_WR_FLOWID) + +#define S_FW_TLSTX_DATA_WR_LEN16 0 +#define M_FW_TLSTX_DATA_WR_LEN16 0xff +#define V_FW_TLSTX_DATA_WR_LEN16(x) ((x) << S_FW_TLSTX_DATA_WR_LEN16) +#define G_FW_TLSTX_DATA_WR_LEN16(x) \ + (((x) >> S_FW_TLSTX_DATA_WR_LEN16) & M_FW_TLSTX_DATA_WR_LEN16) + +#define S_FW_TLSTX_DATA_WR_LSODISABLE 31 +#define M_FW_TLSTX_DATA_WR_LSODISABLE 0x1 +#define V_FW_TLSTX_DATA_WR_LSODISABLE(x) \ + ((x) << S_FW_TLSTX_DATA_WR_LSODISABLE) +#define G_FW_TLSTX_DATA_WR_LSODISABLE(x) \ + (((x) >> S_FW_TLSTX_DATA_WR_LSODISABLE) & M_FW_TLSTX_DATA_WR_LSODISABLE) +#define F_FW_TLSTX_DATA_WR_LSODISABLE V_FW_TLSTX_DATA_WR_LSODISABLE(1U) + +#define S_FW_TLSTX_DATA_WR_ALIGNPLD 30 +#define M_FW_TLSTX_DATA_WR_ALIGNPLD 0x1 +#define V_FW_TLSTX_DATA_WR_ALIGNPLD(x) ((x) << S_FW_TLSTX_DATA_WR_ALIGNPLD) +#define G_FW_TLSTX_DATA_WR_ALIGNPLD(x) \ + (((x) >> S_FW_TLSTX_DATA_WR_ALIGNPLD) & M_FW_TLSTX_DATA_WR_ALIGNPLD) +#define F_FW_TLSTX_DATA_WR_ALIGNPLD V_FW_TLSTX_DATA_WR_ALIGNPLD(1U) + +#define S_FW_TLSTX_DATA_WR_ALIGNPLDSHOVE 29 +#define M_FW_TLSTX_DATA_WR_ALIGNPLDSHOVE 0x1 +#define V_FW_TLSTX_DATA_WR_ALIGNPLDSHOVE(x) \ + ((x) << S_FW_TLSTX_DATA_WR_ALIGNPLDSHOVE) +#define G_FW_TLSTX_DATA_WR_ALIGNPLDSHOVE(x) \ + (((x) >> S_FW_TLSTX_DATA_WR_ALIGNPLDSHOVE) & \ + M_FW_TLSTX_DATA_WR_ALIGNPLDSHOVE) +#define F_FW_TLSTX_DATA_WR_ALIGNPLDSHOVE V_FW_TLSTX_DATA_WR_ALIGNPLDSHOVE(1U) + +#define S_FW_TLSTX_DATA_WR_FLAGS 0 +#define M_FW_TLSTX_DATA_WR_FLAGS 0xfffffff +#define V_FW_TLSTX_DATA_WR_FLAGS(x) ((x) << S_FW_TLSTX_DATA_WR_FLAGS) +#define G_FW_TLSTX_DATA_WR_FLAGS(x) \ + (((x) >> S_FW_TLSTX_DATA_WR_FLAGS) & M_FW_TLSTX_DATA_WR_FLAGS) + +#define S_FW_TLSTX_DATA_WR_CTXLOC 30 +#define M_FW_TLSTX_DATA_WR_CTXLOC 0x3 +#define V_FW_TLSTX_DATA_WR_CTXLOC(x) ((x) << S_FW_TLSTX_DATA_WR_CTXLOC) +#define G_FW_TLSTX_DATA_WR_CTXLOC(x) \ + (((x) >> S_FW_TLSTX_DATA_WR_CTXLOC) & M_FW_TLSTX_DATA_WR_CTXLOC) + +#define S_FW_TLSTX_DATA_WR_IVDSGL 29 +#define M_FW_TLSTX_DATA_WR_IVDSGL 0x1 +#define V_FW_TLSTX_DATA_WR_IVDSGL(x) ((x) << S_FW_TLSTX_DATA_WR_IVDSGL) +#define G_FW_TLSTX_DATA_WR_IVDSGL(x) \ + (((x) >> S_FW_TLSTX_DATA_WR_IVDSGL) & M_FW_TLSTX_DATA_WR_IVDSGL) +#define F_FW_TLSTX_DATA_WR_IVDSGL V_FW_TLSTX_DATA_WR_IVDSGL(1U) + +#define S_FW_TLSTX_DATA_WR_KEYSIZE 24 +#define M_FW_TLSTX_DATA_WR_KEYSIZE 0x1f +#define V_FW_TLSTX_DATA_WR_KEYSIZE(x) ((x) << S_FW_TLSTX_DATA_WR_KEYSIZE) +#define G_FW_TLSTX_DATA_WR_KEYSIZE(x) \ + (((x) >> S_FW_TLSTX_DATA_WR_KEYSIZE) & M_FW_TLSTX_DATA_WR_KEYSIZE) + +#define S_FW_TLSTX_DATA_WR_NUMIVS 14 +#define M_FW_TLSTX_DATA_WR_NUMIVS 0xff +#define V_FW_TLSTX_DATA_WR_NUMIVS(x) ((x) << S_FW_TLSTX_DATA_WR_NUMIVS) +#define G_FW_TLSTX_DATA_WR_NUMIVS(x) \ + (((x) >> S_FW_TLSTX_DATA_WR_NUMIVS) & M_FW_TLSTX_DATA_WR_NUMIVS) + +#define S_FW_TLSTX_DATA_WR_EXP 0 *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@freebsd.org Thu Sep 15 15:32:41 2016 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 8F994BDC20F for ; Thu, 15 Sep 2016 15:32:41 +0000 (UTC) (envelope-from sbruno@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 5C5F9EE6; Thu, 15 Sep 2016 15:32:41 +0000 (UTC) (envelope-from sbruno@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u8FFWeoK038989; Thu, 15 Sep 2016 15:32:40 GMT (envelope-from sbruno@FreeBSD.org) Received: (from sbruno@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u8FFWeho038988; Thu, 15 Sep 2016 15:32:40 GMT (envelope-from sbruno@FreeBSD.org) Message-Id: <201609151532.u8FFWeho038988@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: sbruno set sender to sbruno@FreeBSD.org using -f From: Sean Bruno Date: Thu, 15 Sep 2016 15:32:40 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r305835 - projects/mips64-clang/sys/conf 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: Thu, 15 Sep 2016 15:32:41 -0000 Author: sbruno Date: Thu Sep 15 15:32:40 2016 New Revision: 305835 URL: https://svnweb.freebsd.org/changeset/base/305835 Log: Allow clang integrated AS to deal with fp.s after an update to llvm: https://reviews.llvm.org/D24607 Modified: projects/mips64-clang/sys/conf/Makefile.mips Modified: projects/mips64-clang/sys/conf/Makefile.mips ============================================================================== --- projects/mips64-clang/sys/conf/Makefile.mips Thu Sep 15 13:57:37 2016 (r305834) +++ projects/mips64-clang/sys/conf/Makefile.mips Thu Sep 15 15:32:40 2016 (r305835) @@ -29,7 +29,6 @@ S= ../../.. .include "$S/conf/kern.pre.mk" ASM_CFLAGS.exception.S= ${CLANG_NO_IAS} -ASM_CFLAGS.fp.S= ${CLANG_NO_IAS} INCLUDES+= -I$S/contrib/libfdt From owner-svn-src-projects@freebsd.org Fri Sep 16 20:49:15 2016 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 3431ABDD596 for ; Fri, 16 Sep 2016 20:49:15 +0000 (UTC) (envelope-from dim@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 E5466CA8; Fri, 16 Sep 2016 20:49:14 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u8GKnEVi003166; Fri, 16 Sep 2016 20:49:14 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u8GKnDU7003157; Fri, 16 Sep 2016 20:49:13 GMT (envelope-from dim@FreeBSD.org) Message-Id: <201609162049.u8GKnDU7003157@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Fri, 16 Sep 2016 20:49:13 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r305891 - in projects/clang390-import: . bin/cat contrib/libarchive/libarchive contrib/libarchive/libarchive/test etc/mtree include lib/libarchive/tests lib/libc/stdlib lib/libc/sys lib... 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: Fri, 16 Sep 2016 20:49:15 -0000 Author: dim Date: Fri Sep 16 20:49:12 2016 New Revision: 305891 URL: https://svnweb.freebsd.org/changeset/base/305891 Log: Merge ^/head r305687 through r305890. Added: projects/clang390-import/sys/dev/cxgbe/if_cc.c - copied unchanged from r305890, head/sys/dev/cxgbe/if_cc.c projects/clang390-import/sys/dev/cxgbe/if_ccv.c - copied unchanged from r305890, head/sys/dev/cxgbe/if_ccv.c projects/clang390-import/sys/dev/evdev/ - copied from r305890, head/sys/dev/evdev/ projects/clang390-import/sys/modules/cxgbe/if_cc/ - copied from r305890, head/sys/modules/cxgbe/if_cc/ projects/clang390-import/sys/modules/cxgbe/if_ccv/ - copied from r305890, head/sys/modules/cxgbe/if_ccv/ Deleted: projects/clang390-import/sys/arm/conf/CUBIEBOARD Modified: projects/clang390-import/ObsoleteFiles.inc projects/clang390-import/bin/cat/cat.c projects/clang390-import/contrib/libarchive/libarchive/archive_platform.h projects/clang390-import/contrib/libarchive/libarchive/archive_read_disk_entry_from_file.c projects/clang390-import/contrib/libarchive/libarchive/archive_read_disk_posix.c projects/clang390-import/contrib/libarchive/libarchive/archive_read_support_format_tar.c projects/clang390-import/contrib/libarchive/libarchive/archive_write_disk_acl.c projects/clang390-import/contrib/libarchive/libarchive/archive_write_disk_posix.c projects/clang390-import/contrib/libarchive/libarchive/test/test_write_disk_secure745.c projects/clang390-import/contrib/libarchive/libarchive/test/test_write_disk_secure746.c projects/clang390-import/contrib/libarchive/libarchive/test/test_write_format_gnutar_filenames.c projects/clang390-import/etc/mtree/BSD.include.dist projects/clang390-import/include/Makefile projects/clang390-import/lib/libarchive/tests/Makefile projects/clang390-import/lib/libc/stdlib/Makefile.inc projects/clang390-import/lib/libc/sys/cap_enter.2 projects/clang390-import/lib/libifconfig/Makefile projects/clang390-import/lib/libstand/net.h projects/clang390-import/release/arm/CUBIEBOARD.conf projects/clang390-import/sbin/geom/class/multipath/gmultipath.8 projects/clang390-import/sbin/ggate/ggatec/ggatec.8 projects/clang390-import/sbin/ggate/ggated/ggated.8 projects/clang390-import/sbin/ggate/ggatel/ggatel.8 projects/clang390-import/sbin/hastctl/hastctl.8 projects/clang390-import/sbin/hastd/hastd.8 projects/clang390-import/sbin/ifconfig/af_link.c projects/clang390-import/sbin/ifconfig/ifconfig.8 projects/clang390-import/sbin/iscontrol/iscontrol.8 projects/clang390-import/sbin/mdmfs/mdmfs.8 projects/clang390-import/sbin/mount_nfs/mount_nfs.8 projects/clang390-import/sbin/nandfs/nandfs.8 projects/clang390-import/sbin/natd/natd.c projects/clang390-import/sbin/nvmecontrol/nvmecontrol.8 projects/clang390-import/sbin/rcorder/rcorder.8 projects/clang390-import/sbin/reboot/reboot.8 projects/clang390-import/sbin/umount/umount.8 projects/clang390-import/share/man/man9/device_quiet.9 projects/clang390-import/share/man/man9/fpu_kern.9 projects/clang390-import/share/mk/meta.sys.mk projects/clang390-import/sys/amd64/amd64/fpu.c projects/clang390-import/sys/amd64/amd64/machdep.c projects/clang390-import/sys/amd64/amd64/trap.c projects/clang390-import/sys/amd64/include/cputypes.h projects/clang390-import/sys/amd64/include/db_machdep.h projects/clang390-import/sys/amd64/include/fpu.h projects/clang390-import/sys/amd64/include/pcb.h projects/clang390-import/sys/arm/allwinner/a10_mmc.c projects/clang390-import/sys/arm/allwinner/a10_mmc.h projects/clang390-import/sys/arm/conf/BEAGLEBONE projects/clang390-import/sys/arm/ti/ti_adc.c projects/clang390-import/sys/arm/ti/ti_adcreg.h projects/clang390-import/sys/arm/ti/ti_adcvar.h projects/clang390-import/sys/arm/ti/ti_cpuid.c projects/clang390-import/sys/arm64/arm64/db_trace.c projects/clang390-import/sys/arm64/arm64/debug_monitor.c projects/clang390-import/sys/arm64/arm64/identcpu.c projects/clang390-import/sys/arm64/include/debug_monitor.h projects/clang390-import/sys/boot/common/dev_net.c projects/clang390-import/sys/boot/common/ufsread.c projects/clang390-import/sys/boot/efi/loader/arch/amd64/ldscript.amd64 projects/clang390-import/sys/boot/efi/loader/arch/arm64/ldscript.arm64 projects/clang390-import/sys/boot/efi/loader/arch/i386/ldscript.i386 projects/clang390-import/sys/boot/kshim/bsd_kernel.c projects/clang390-import/sys/boot/kshim/bsd_kernel.h projects/clang390-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/lz4.c projects/clang390-import/sys/compat/linprocfs/linprocfs.c projects/clang390-import/sys/conf/NOTES projects/clang390-import/sys/conf/files projects/clang390-import/sys/conf/files.arm64 projects/clang390-import/sys/conf/options projects/clang390-import/sys/contrib/dev/ath/ath_hal/ar9300/ar9300_attach.c projects/clang390-import/sys/contrib/ipfilter/netinet/fil.c projects/clang390-import/sys/contrib/ipfilter/netinet/ip_compat.h projects/clang390-import/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c projects/clang390-import/sys/ddb/db_run.c projects/clang390-import/sys/dev/ath/if_ath_tx.c projects/clang390-import/sys/dev/ath/if_ath_tx_edma.c projects/clang390-import/sys/dev/cxgbe/adapter.h projects/clang390-import/sys/dev/cxgbe/common/t4_hw.c projects/clang390-import/sys/dev/cxgbe/common/t4vf_hw.c projects/clang390-import/sys/dev/cxgbe/firmware/t4fw_interface.h projects/clang390-import/sys/dev/cxgbe/t4_iov.c projects/clang390-import/sys/dev/cxgbe/t4_main.c projects/clang390-import/sys/dev/cxgbe/t4_netmap.c projects/clang390-import/sys/dev/cxgbe/t4_sge.c projects/clang390-import/sys/dev/cxgbe/t4_tracer.c projects/clang390-import/sys/dev/cxgbe/t4_vf.c projects/clang390-import/sys/dev/hyperv/netvsc/hv_net_vsc.c projects/clang390-import/sys/dev/hyperv/netvsc/hv_net_vsc.h projects/clang390-import/sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c projects/clang390-import/sys/dev/hyperv/netvsc/hv_rndis_filter.c projects/clang390-import/sys/dev/hyperv/netvsc/hv_rndis_filter.h projects/clang390-import/sys/dev/hyperv/netvsc/if_hnvar.h projects/clang390-import/sys/dev/hyperv/vmbus/vmbus_chan.c projects/clang390-import/sys/dev/ioat/ioat.c projects/clang390-import/sys/dev/mlx5/cq.h projects/clang390-import/sys/dev/mlx5/device.h projects/clang390-import/sys/dev/mlx5/driver.h projects/clang390-import/sys/dev/mlx5/flow_table.h projects/clang390-import/sys/dev/mlx5/mlx5_core/mlx5_cmd.c projects/clang390-import/sys/dev/mlx5/mlx5_core/mlx5_core.h projects/clang390-import/sys/dev/mlx5/mlx5_core/mlx5_cq.c projects/clang390-import/sys/dev/mlx5/mlx5_core/mlx5_eq.c projects/clang390-import/sys/dev/mlx5/mlx5_core/mlx5_eswitch_vacl.c projects/clang390-import/sys/dev/mlx5/mlx5_core/mlx5_flow_table.c projects/clang390-import/sys/dev/mlx5/mlx5_core/mlx5_fw.c projects/clang390-import/sys/dev/mlx5/mlx5_core/mlx5_main.c projects/clang390-import/sys/dev/mlx5/mlx5_core/mlx5_mr.c projects/clang390-import/sys/dev/mlx5/mlx5_core/mlx5_port.c projects/clang390-import/sys/dev/mlx5/mlx5_core/mlx5_qp.c projects/clang390-import/sys/dev/mlx5/mlx5_core/mlx5_srq.c projects/clang390-import/sys/dev/mlx5/mlx5_core/mlx5_transobj.c projects/clang390-import/sys/dev/mlx5/mlx5_core/mlx5_uar.c projects/clang390-import/sys/dev/mlx5/mlx5_core/mlx5_vport.c projects/clang390-import/sys/dev/mlx5/mlx5_core/transobj.h projects/clang390-import/sys/dev/mlx5/mlx5_en/en.h projects/clang390-import/sys/dev/mlx5/mlx5_en/mlx5_en_flow_table.c projects/clang390-import/sys/dev/mlx5/mlx5_en/mlx5_en_main.c projects/clang390-import/sys/dev/mlx5/mlx5_en/mlx5_en_tx.c projects/clang390-import/sys/dev/mlx5/mlx5_en/mlx5_en_txrx.c projects/clang390-import/sys/dev/mlx5/mlx5_ifc.h projects/clang390-import/sys/dev/mlx5/qp.h projects/clang390-import/sys/dev/mlx5/vport.h projects/clang390-import/sys/dev/urtwn/if_urtwn.c projects/clang390-import/sys/dev/usb/input/ukbd.c projects/clang390-import/sys/dev/usb/quirk/usb_quirk.c projects/clang390-import/sys/dev/usb/serial/usb_serial.c projects/clang390-import/sys/dev/usb/serial/usb_serial.h projects/clang390-import/sys/dev/usb/storage/umass.c projects/clang390-import/sys/dev/usb/usb_busdma.c projects/clang390-import/sys/dev/usb/usb_core.c projects/clang390-import/sys/dev/usb/usb_core.h projects/clang390-import/sys/dev/usb/usb_dev.c projects/clang390-import/sys/dev/usb/usb_device.c projects/clang390-import/sys/dev/usb/usb_freebsd.h projects/clang390-import/sys/dev/usb/usb_freebsd_loader.h projects/clang390-import/sys/dev/usb/usb_generic.c projects/clang390-import/sys/dev/usb/usb_hub.c projects/clang390-import/sys/dev/usb/usb_msctest.c projects/clang390-import/sys/dev/usb/usb_process.c projects/clang390-import/sys/dev/usb/usb_request.c projects/clang390-import/sys/dev/usb/usb_transfer.c projects/clang390-import/sys/dev/usb/usbdi.h projects/clang390-import/sys/fs/nullfs/null_subr.c projects/clang390-import/sys/i386/i386/db_trace.c projects/clang390-import/sys/i386/i386/trap.c projects/clang390-import/sys/i386/include/cputypes.h projects/clang390-import/sys/i386/include/db_machdep.h projects/clang390-import/sys/i386/include/md_var.h projects/clang390-import/sys/kern/kern_acct.c projects/clang390-import/sys/kern/kern_clock.c projects/clang390-import/sys/kern/kern_cons.c projects/clang390-import/sys/kern/kern_descrip.c projects/clang390-import/sys/kern/kern_exit.c projects/clang390-import/sys/kern/kern_fork.c projects/clang390-import/sys/kern/kern_ktrace.c projects/clang390-import/sys/kern/kern_lockf.c projects/clang390-import/sys/kern/kern_malloc.c projects/clang390-import/sys/kern/kern_mib.c projects/clang390-import/sys/kern/kern_proc.c projects/clang390-import/sys/kern/kern_prot.c projects/clang390-import/sys/kern/kern_resource.c projects/clang390-import/sys/kern/kern_sendfile.c projects/clang390-import/sys/kern/kern_shutdown.c projects/clang390-import/sys/kern/kern_sig.c projects/clang390-import/sys/kern/kern_synch.c projects/clang390-import/sys/kern/kern_sysctl.c projects/clang390-import/sys/kern/kern_time.c projects/clang390-import/sys/kern/kern_timeout.c projects/clang390-import/sys/kern/kern_xxx.c projects/clang390-import/sys/kern/sched_4bsd.c projects/clang390-import/sys/kern/subr_autoconf.c projects/clang390-import/sys/kern/subr_blist.c projects/clang390-import/sys/kern/subr_bus.c projects/clang390-import/sys/kern/subr_clock.c projects/clang390-import/sys/kern/subr_hash.c projects/clang390-import/sys/kern/subr_log.c projects/clang390-import/sys/kern/subr_mchain.c projects/clang390-import/sys/kern/subr_param.c projects/clang390-import/sys/kern/subr_pcpu.c projects/clang390-import/sys/kern/subr_prf.c projects/clang390-import/sys/kern/subr_prof.c projects/clang390-import/sys/kern/subr_rtc.c projects/clang390-import/sys/kern/subr_scanf.c projects/clang390-import/sys/kern/subr_uio.c projects/clang390-import/sys/kern/sys_generic.c projects/clang390-import/sys/kern/sys_socket.c projects/clang390-import/sys/kern/tty_compat.c projects/clang390-import/sys/kern/tty_info.c projects/clang390-import/sys/kern/uipc_domain.c projects/clang390-import/sys/kern/uipc_mbuf.c projects/clang390-import/sys/kern/uipc_mbuf2.c projects/clang390-import/sys/kern/uipc_sockbuf.c projects/clang390-import/sys/kern/uipc_socket.c projects/clang390-import/sys/kern/uipc_syscalls.c projects/clang390-import/sys/kern/uipc_usrreq.c projects/clang390-import/sys/kern/vfs_cache.c projects/clang390-import/sys/kern/vfs_cluster.c projects/clang390-import/sys/kern/vfs_default.c projects/clang390-import/sys/kern/vfs_export.c projects/clang390-import/sys/kern/vfs_init.c projects/clang390-import/sys/kern/vfs_lookup.c projects/clang390-import/sys/kern/vfs_mount.c projects/clang390-import/sys/kern/vfs_mountroot.c projects/clang390-import/sys/kern/vfs_subr.c projects/clang390-import/sys/kern/vfs_syscalls.c projects/clang390-import/sys/kern/vfs_vnops.c projects/clang390-import/sys/kern/vnode_if.src projects/clang390-import/sys/mips/include/proc.h projects/clang390-import/sys/mips/malta/asm_malta.S projects/clang390-import/sys/mips/malta/malta_mp.c projects/clang390-import/sys/mips/mips/cpu.c projects/clang390-import/sys/mips/mips/freebsd32_machdep.c projects/clang390-import/sys/mips/mips/genassym.c projects/clang390-import/sys/mips/mips/locore.S projects/clang390-import/sys/mips/mips/pm_machdep.c projects/clang390-import/sys/mips/mips/swtch.S projects/clang390-import/sys/mips/mips/sys_machdep.c projects/clang390-import/sys/mips/mips/trap.c projects/clang390-import/sys/mips/mips/vm_machdep.c projects/clang390-import/sys/modules/cxgbe/Makefile projects/clang390-import/sys/net/if_arcsubr.c projects/clang390-import/sys/net/if_fddisubr.c projects/clang390-import/sys/net/if_iso88025subr.c projects/clang390-import/sys/net/raw_usrreq.c projects/clang390-import/sys/net80211/ieee80211_adhoc.c projects/clang390-import/sys/net80211/ieee80211_crypto.h projects/clang390-import/sys/net80211/ieee80211_hostap.c projects/clang390-import/sys/netinet/ip_input.c projects/clang390-import/sys/netinet/ip_mroute.c projects/clang390-import/sys/netinet/raw_ip.c projects/clang390-import/sys/netinet/tcp_output.c projects/clang390-import/sys/netinet/tcp_usrreq.c projects/clang390-import/sys/netinet/udp_usrreq.c projects/clang390-import/sys/netinet6/icmp6.c projects/clang390-import/sys/netinet6/ip6_forward.c projects/clang390-import/sys/netinet6/ip6_mroute.c projects/clang390-import/sys/netinet6/ip6_output.c projects/clang390-import/sys/netinet6/raw_ip6.c projects/clang390-import/sys/netinet6/udp6_usrreq.c projects/clang390-import/sys/netipsec/keysock.c projects/clang390-import/sys/netpfil/ipfw/ip_fw_table.c projects/clang390-import/sys/powerpc/powerpc/machdep.c projects/clang390-import/sys/sys/filedesc.h projects/clang390-import/sys/sys/mbuf.h projects/clang390-import/sys/sys/param.h projects/clang390-import/sys/x86/include/cputypes.h projects/clang390-import/sys/x86/include/frame.h projects/clang390-import/sys/x86/include/x86_var.h projects/clang390-import/sys/x86/x86/identcpu.c projects/clang390-import/sys/x86/x86/intr_machdep.c projects/clang390-import/usr.bin/bsdiff/bspatch/bspatch.c projects/clang390-import/usr.bin/localedef/collate.c projects/clang390-import/usr.bin/login/login_audit.c projects/clang390-import/usr.bin/sdiff/sdiff.c projects/clang390-import/usr.bin/seq/seq.1 projects/clang390-import/usr.bin/vtfontcvt/vtfontcvt.c projects/clang390-import/usr.sbin/amd/amd/Makefile projects/clang390-import/usr.sbin/amd/amq/Makefile projects/clang390-import/usr.sbin/amd/fixmount/Makefile projects/clang390-import/usr.sbin/amd/fsinfo/Makefile projects/clang390-import/usr.sbin/amd/hlfsd/Makefile projects/clang390-import/usr.sbin/amd/include/Makefile projects/clang390-import/usr.sbin/amd/libamu/Makefile projects/clang390-import/usr.sbin/amd/mk-amd-map/Makefile projects/clang390-import/usr.sbin/amd/pawd/Makefile projects/clang390-import/usr.sbin/amd/scripts/Makefile projects/clang390-import/usr.sbin/amd/wire-test/Makefile projects/clang390-import/usr.sbin/autofs/automountd.c projects/clang390-import/usr.sbin/autofs/autounmountd.c projects/clang390-import/usr.sbin/autofs/defined.c projects/clang390-import/usr.sbin/fifolog/lib/fifolog_create.c projects/clang390-import/usr.sbin/fifolog/lib/fifolog_reader.c projects/clang390-import/usr.sbin/fifolog/lib/fifolog_write_poll.c projects/clang390-import/usr.sbin/fifolog/lib/miniobj.h projects/clang390-import/usr.sbin/pw/pw.8 projects/clang390-import/usr.sbin/syslogd/syslogd.c Directory Properties: projects/clang390-import/ (props changed) projects/clang390-import/contrib/libarchive/ (props changed) projects/clang390-import/contrib/libarchive/cpio/ (props changed) projects/clang390-import/contrib/libarchive/libarchive/ (props changed) projects/clang390-import/contrib/libarchive/libarchive_fe/ (props changed) projects/clang390-import/contrib/libarchive/tar/ (props changed) projects/clang390-import/sys/cddl/contrib/opensolaris/ (props changed) projects/clang390-import/sys/contrib/ipfilter/ (props changed) Modified: projects/clang390-import/ObsoleteFiles.inc ============================================================================== --- projects/clang390-import/ObsoleteFiles.inc Fri Sep 16 15:29:23 2016 (r305890) +++ projects/clang390-import/ObsoleteFiles.inc Fri Sep 16 20:49:12 2016 (r305891) @@ -133,6 +133,8 @@ OLD_DIRS+=usr/lib/clang/3.8.0 # 20160906: libkqueue tests moved to /usr/tests/sys/kqueue/libkqueue OLD_FILES+=usr/tests/sys/kqueue/kqtest OLD_FILES+=usr/tests/sys/kqueue/kqueue_test +# 20160903: idle page zeroing support removed +OLD_FILES+=usr/share/man/man9/pmap_zero_idle.9.gz # 20160901: Remove digi(4) OLD_FILES+=usr/share/man/man4/digi.4.gz # 20160819: Remove ie(4) @@ -151,6 +153,8 @@ OLD_FILES+=usr/share/man/man8/sicontrol. OLD_FILES+=usr/share/man/man4/scd.4.gz # 20160815: Remove mcd(4) OLD_FILES+=usr/share/man/man4/mcd.4.gz +# 20160805: lockmgr_waiters(9) removed +OLD_FILES+=usr/share/man/man9/lockmgr_waiters.9.gz # 20160703: POSIXify locales with variants OLD_FILES+=usr/share/locale/zh_Hant_TW.UTF-8/LC_COLLATE OLD_FILES+=usr/share/locale/zh_Hant_TW.UTF-8/LC_CTYPE @@ -305,18 +309,23 @@ OLD_LIBS+=usr/lib32/pam_unix.so.5 OLD_FILES+=usr/include/altq/altq_codel.h OLD_FILES+=usr/include/altq/altq_fairq.h # 20160519: remove DTrace Toolkit from base +OLD_FILES+=usr/sbin/dtruss OLD_FILES+=usr/share/dtrace/toolkit/execsnoop OLD_FILES+=usr/share/dtrace/toolkit/hotkernel OLD_FILES+=usr/share/dtrace/toolkit/hotuser OLD_FILES+=usr/share/dtrace/toolkit/opensnoop OLD_FILES+=usr/share/dtrace/toolkit/procsystime OLD_DIRS+=usr/share/dtrace/toolkit +OLD_FILES+=usr/share/man/man1/dtruss.1.gz # 20160519: stale MLINK removed OLD_FILES+=usr/share/man/man9/rman_await_resource.9.gz # 20160517: ReiserFS removed OLD_FILES+=usr/share/man/man5/reiserfs.5.gz +# 20160504: tests rework +OLD_FILES+=usr/tests/lib/libc/regex/data/README # 20160430: kvm_getfiles(3) removed from kvm(3) OLD_LIBS+=lib/libkvm.so.6 +OLD_LIBS+=usr/lib32/libkvm.so.6 OLD_FILES+=usr/share/man/man3/kvm_getfiles.3.gz # 20160423: remove mroute6d OLD_FILES+=etc/rc.d/mroute6d @@ -464,12 +473,18 @@ OLD_LIBS+=usr/lib32/libcapsicum.so.0 OLD_FILES+=usr/lib32/libcapsicum_p.a # 20160223: functionality from mkulzma(1) merged into mkuzip(1) OLD_FILES+=usr/bin/mkulzma +OLD_FILES+=usr/share/man/man4/geom_uncompress.4.gz +OLD_FILES+=usr/share/man/man8/mkulzma.8.gz # 20160211: Remove obsolete unbound-control-setup OLD_FILES+=usr/sbin/unbound-control-setup +# 20160121: cc.h moved +OLD_FILES+=usr/include/netinet/cc.h # 20160116: Update mandoc to cvs snapshot 20160116 OLD_FILES+=usr/share/mdocml/example.style.css OLD_FILES+=usr/share/mdocml/style.css OLD_DIRS+=usr/share/mdocml +# 20160114: SA-16:06.snmpd +OLD_FILES+=usr/share/examples/etc/snmpd.config # 20151225: new clang import which bumps version from 3.7.0 to 3.7.1. OLD_FILES+=usr/lib/clang/3.7.0/include/sanitizer/allocator_interface.h OLD_FILES+=usr/lib/clang/3.7.0/include/sanitizer/asan_interface.h @@ -554,6 +569,9 @@ OLD_FILES+=usr/lib/clang/3.7.0/lib/freeb OLD_DIRS+=usr/lib/clang/3.7.0/lib/freebsd OLD_DIRS+=usr/lib/clang/3.7.0/lib OLD_DIRS+=usr/lib/clang/3.7.0 +# 20151201: mqueue tests 3 and 4 disabled +OLD_FILES+=usr/tests/sys/mqueue/mqtest3 +OLD_FILES+=usr/tests/sys/mqueue/mqtest4 # 20151130: libelf moved from /usr/lib to /lib (libkvm dependency in r291406) OLD_LIBS+=usr/lib/libelf.so.2 # 20151115: Fox bad upgrade scheme @@ -688,6 +706,8 @@ OLD_LIBS+=lib/libcrypto.so.7 OLD_LIBS+=usr/lib/libssl.so.7 OLD_LIBS+=usr/lib32/libcrypto.so.7 OLD_LIBS+=usr/lib32/libssl.so.7 +# 20151029: LinuxKPI moved to sys/compat/linuxkpi +OLD_FILES+=usr/include/dev/usb/usb_compat_linux.h # 20151015: test symbols moved to /usr/lib/debug OLD_DIRS+=usr/tests/lib/atf/libatf-c++/.debug OLD_FILES+=usr/tests/lib/atf/libatf-c++/.debug/atf_c++_test.debug Modified: projects/clang390-import/bin/cat/cat.c ============================================================================== --- projects/clang390-import/bin/cat/cat.c Fri Sep 16 15:29:23 2016 (r305890) +++ projects/clang390-import/bin/cat/cat.c Fri Sep 16 20:49:12 2016 (r305891) @@ -64,6 +64,8 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include +#include static int bflag, eflag, lflag, nflag, sflag, tflag, vflag; static int rval; @@ -207,6 +209,7 @@ static void cook_cat(FILE *fp) { int ch, gobble, line, prev; + wint_t wch; /* Reset EOF condition on stdin. */ if (fp == stdin && feof(stdin)) @@ -239,18 +242,40 @@ cook_cat(FILE *fp) continue; } } else if (vflag) { - if (!isascii(ch) && !isprint(ch)) { + (void)ungetc(ch, fp); + /* + * Our getwc(3) doesn't change file position + * on error. + */ + if ((wch = getwc(fp)) == WEOF) { + if (ferror(fp) && errno == EILSEQ) { + clearerr(fp); + /* Resync attempt. */ + memset(&fp->_mbstate, 0, sizeof(mbstate_t)); + if ((ch = getc(fp)) == EOF) + break; + wch = ch; + goto ilseq; + } else + break; + } + if (!iswascii(wch) && !iswprint(wch)) { +ilseq: if (putchar('M') == EOF || putchar('-') == EOF) break; - ch = toascii(ch); + wch = toascii(wch); } - if (iscntrl(ch)) { - if (putchar('^') == EOF || - putchar(ch == '\177' ? '?' : - ch | 0100) == EOF) + if (iswcntrl(wch)) { + ch = toascii(wch); + ch = (ch == '\177') ? '?' : (ch | 0100); + if (putchar('^') == EOF || putchar(ch) == EOF) break; continue; } + if (putwchar(wch) == WEOF) + break; + ch = -1; + continue; } if (putchar(ch) == EOF) break; Modified: projects/clang390-import/contrib/libarchive/libarchive/archive_platform.h ============================================================================== --- projects/clang390-import/contrib/libarchive/libarchive/archive_platform.h Fri Sep 16 15:29:23 2016 (r305890) +++ projects/clang390-import/contrib/libarchive/libarchive/archive_platform.h Fri Sep 16 20:49:12 2016 (r305891) @@ -159,6 +159,15 @@ #define CAN_RESTORE_METADATA_FD #endif +/* + * glibc 2.24 deprecates readdir_r + */ +#if defined(HAVE_READDIR_R) && (!defined(__GLIBC__) || !defined(__GLIBC_MINOR__) || __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 24)) +#define USE_READDIR_R 1 +#else +#undef USE_READDIR_R +#endif + /* Set up defaults for internal error codes. */ #ifndef ARCHIVE_ERRNO_FILE_FORMAT #if HAVE_EFTYPE Modified: projects/clang390-import/contrib/libarchive/libarchive/archive_read_disk_entry_from_file.c ============================================================================== --- projects/clang390-import/contrib/libarchive/libarchive/archive_read_disk_entry_from_file.c Fri Sep 16 15:29:23 2016 (r305890) +++ projects/clang390-import/contrib/libarchive/libarchive/archive_read_disk_entry_from_file.c Fri Sep 16 20:49:12 2016 (r305891) @@ -411,9 +411,7 @@ setup_acls(struct archive_read_disk *a, { const char *accpath; acl_t acl; -#if HAVE_ACL_IS_TRIVIAL_NP int r; -#endif accpath = archive_entry_sourcepath(entry); if (accpath == NULL) @@ -473,9 +471,13 @@ setup_acls(struct archive_read_disk *a, } #endif if (acl != NULL) { - translate_acl(a, entry, acl, ARCHIVE_ENTRY_ACL_TYPE_NFS4); + r = translate_acl(a, entry, acl, ARCHIVE_ENTRY_ACL_TYPE_NFS4); acl_free(acl); - return (ARCHIVE_OK); + if (r != ARCHIVE_OK) { + archive_set_error(&a->archive, errno, + "Couldn't translate NFSv4 ACLs: %s", accpath); + } + return (r); } #endif /* ACL_TYPE_NFS4 */ @@ -506,19 +508,30 @@ setup_acls(struct archive_read_disk *a, #endif if (acl != NULL) { - translate_acl(a, entry, acl, + r = translate_acl(a, entry, acl, ARCHIVE_ENTRY_ACL_TYPE_ACCESS); acl_free(acl); acl = NULL; + if (r != ARCHIVE_OK) { + archive_set_error(&a->archive, errno, + "Couldn't translate access ACLs: %s", accpath); + return (r); + } } /* Only directories can have default ACLs. */ if (S_ISDIR(archive_entry_mode(entry))) { acl = acl_get_file(accpath, ACL_TYPE_DEFAULT); if (acl != NULL) { - translate_acl(a, entry, acl, + r = translate_acl(a, entry, acl, ARCHIVE_ENTRY_ACL_TYPE_DEFAULT); acl_free(acl); + if (r != ARCHIVE_OK) { + archive_set_error(&a->archive, errno, + "Couldn't translate default ACLs: %s", + accpath); + return (r); + } } } return (ARCHIVE_OK); @@ -574,19 +587,23 @@ translate_acl(struct archive_read_disk * #ifdef ACL_TYPE_NFS4 acl_entry_type_t acl_type; acl_flagset_t acl_flagset; - int brand, r; + int brand; #endif acl_entry_t acl_entry; acl_permset_t acl_permset; int i, entry_acl_type; - int s, ae_id, ae_tag, ae_perm; + int r, s, ae_id, ae_tag, ae_perm; const char *ae_name; #ifdef ACL_TYPE_NFS4 // FreeBSD "brands" ACLs as POSIX.1e or NFSv4 // Make sure the "brand" on this ACL is consistent // with the default_entry_acl_type bits provided. - acl_get_brand_np(acl, &brand); + if (acl_get_brand_np(acl, &brand) != 0) { + archive_set_error(&a->archive, errno, + "Failed to read ACL brand"); + return (ARCHIVE_WARN); + } switch (brand) { case ACL_BRAND_POSIX: switch (default_entry_acl_type) { @@ -594,31 +611,43 @@ translate_acl(struct archive_read_disk * case ARCHIVE_ENTRY_ACL_TYPE_DEFAULT: break; default: - // XXX set warning message? - return ARCHIVE_FAILED; + archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC, + "Invalid ACL entry type for POSIX.1e ACL"); + return (ARCHIVE_WARN); } break; case ACL_BRAND_NFS4: if (default_entry_acl_type & ~ARCHIVE_ENTRY_ACL_TYPE_NFS4) { - // XXX set warning message? - return ARCHIVE_FAILED; + archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC, + "Invalid ACL entry type for NFSv4 ACL"); + return (ARCHIVE_WARN); } break; default: - // XXX set warning message? - return ARCHIVE_FAILED; + archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC, + "Unknown ACL brand"); + return (ARCHIVE_WARN); break; } #endif s = acl_get_entry(acl, ACL_FIRST_ENTRY, &acl_entry); + if (s == -1) { + archive_set_error(&a->archive, errno, + "Failed to get first ACL entry"); + return (ARCHIVE_WARN); + } while (s == 1) { ae_id = -1; ae_name = NULL; ae_perm = 0; - acl_get_tag_type(acl_entry, &acl_tag); + if (acl_get_tag_type(acl_entry, &acl_tag) != 0) { + archive_set_error(&a->archive, errno, + "Failed to get ACL tag type"); + return (ARCHIVE_WARN); + } switch (acl_tag) { case ACL_USER: ae_id = (int)*(uid_t *)acl_get_qualifier(acl_entry); @@ -653,13 +682,18 @@ translate_acl(struct archive_read_disk * continue; } - // XXX acl type maps to allow/deny/audit/YYYY bits - // XXX acl_get_entry_type_np on FreeBSD returns EINVAL for - // non-NFSv4 ACLs + // XXX acl_type maps to allow/deny/audit/YYYY bits entry_acl_type = default_entry_acl_type; #ifdef ACL_TYPE_NFS4 - r = acl_get_entry_type_np(acl_entry, &acl_type); - if (r == 0) { + if (default_entry_acl_type & ARCHIVE_ENTRY_ACL_TYPE_NFS4) { + /* + * acl_get_entry_type_np() falis with non-NFSv4 ACLs + */ + if (acl_get_entry_type_np(acl_entry, &acl_type) != 0) { + archive_set_error(&a->archive, errno, "Failed " + "to get ACL type from a NFSv4 ACL entry"); + return (ARCHIVE_WARN); + } switch (acl_type) { case ACL_ENTRY_TYPE_ALLOW: entry_acl_type = ARCHIVE_ENTRY_ACL_TYPE_ALLOW; @@ -673,32 +707,53 @@ translate_acl(struct archive_read_disk * case ACL_ENTRY_TYPE_ALARM: entry_acl_type = ARCHIVE_ENTRY_ACL_TYPE_ALARM; break; + default: + archive_set_error(&a->archive, errno, + "Invalid NFSv4 ACL entry type"); + return (ARCHIVE_WARN); } - } - /* - * Libarchive stores "flag" (NFSv4 inheritance bits) - * in the ae_perm bitmap. - */ - // XXX acl_get_flagset_np on FreeBSD returns EINVAL for - // non-NFSv4 ACLs - r = acl_get_flagset_np(acl_entry, &acl_flagset); - if (r == 0) { + /* + * Libarchive stores "flag" (NFSv4 inheritance bits) + * in the ae_perm bitmap. + * + * acl_get_flagset_np() fails with non-NFSv4 ACLs + */ + if (acl_get_flagset_np(acl_entry, &acl_flagset) != 0) { + archive_set_error(&a->archive, errno, + "Failed to get flagset from a NFSv4 ACL entry"); + return (ARCHIVE_WARN); + } for (i = 0; i < (int)(sizeof(acl_inherit_map) / sizeof(acl_inherit_map[0])); ++i) { - if (acl_get_flag_np(acl_flagset, - acl_inherit_map[i].platform_inherit)) + r = acl_get_flag_np(acl_flagset, + acl_inherit_map[i].platform_inherit); + if (r == -1) { + archive_set_error(&a->archive, errno, + "Failed to check flag in a NFSv4 " + "ACL flagset"); + return (ARCHIVE_WARN); + } else if (r) ae_perm |= acl_inherit_map[i].archive_inherit; } } #endif - acl_get_permset(acl_entry, &acl_permset); + if (acl_get_permset(acl_entry, &acl_permset) != 0) { + archive_set_error(&a->archive, errno, + "Failed to get ACL permission set"); + return (ARCHIVE_WARN); + } for (i = 0; i < (int)(sizeof(acl_perm_map) / sizeof(acl_perm_map[0])); ++i) { /* * acl_get_perm() is spelled differently on different * platforms; see above. */ - if (ACL_GET_PERM(acl_permset, acl_perm_map[i].platform_perm)) + r = ACL_GET_PERM(acl_permset, acl_perm_map[i].platform_perm); + if (r == -1) { + archive_set_error(&a->archive, errno, + "Failed to check permission in an ACL permission set"); + return (ARCHIVE_WARN); + } else if (r) ae_perm |= acl_perm_map[i].archive_perm; } @@ -707,6 +762,11 @@ translate_acl(struct archive_read_disk * ae_id, ae_name); s = acl_get_entry(acl, ACL_NEXT_ENTRY, &acl_entry); + if (s == -1) { + archive_set_error(&a->archive, errno, + "Failed to get next ACL entry"); + return (ARCHIVE_WARN); + } } return (ARCHIVE_OK); } Modified: projects/clang390-import/contrib/libarchive/libarchive/archive_read_disk_posix.c ============================================================================== --- projects/clang390-import/contrib/libarchive/libarchive/archive_read_disk_posix.c Fri Sep 16 15:29:23 2016 (r305890) +++ projects/clang390-import/contrib/libarchive/libarchive/archive_read_disk_posix.c Fri Sep 16 20:49:12 2016 (r305891) @@ -165,7 +165,7 @@ struct filesystem { int synthetic; int remote; int noatime; -#if defined(HAVE_READDIR_R) +#if defined(USE_READDIR_R) size_t name_max; #endif long incr_xfer_size; @@ -200,7 +200,7 @@ struct tree { DIR *d; #define INVALID_DIR_HANDLE NULL struct dirent *de; -#if defined(HAVE_READDIR_R) +#if defined(USE_READDIR_R) struct dirent *dirent; size_t dirent_allocated; #endif @@ -1592,7 +1592,7 @@ setup_current_filesystem(struct archive_ #endif t->current_filesystem->noatime = 0; -#if defined(HAVE_READDIR_R) +#if defined(USE_READDIR_R) /* Set maximum filename length. */ #if defined(HAVE_STRUCT_STATFS_F_NAMEMAX) t->current_filesystem->name_max = sfs.f_namemax; @@ -1615,7 +1615,7 @@ setup_current_filesystem(struct archive_ else t->current_filesystem->name_max = nm; #endif -#endif /* HAVE_READDIR_R */ +#endif /* USE_READDIR_R */ return (ARCHIVE_OK); } @@ -1817,7 +1817,7 @@ setup_current_filesystem(struct archive_ #endif t->current_filesystem->noatime = 0; -#if defined(HAVE_READDIR_R) +#if defined(USE_READDIR_R) /* Set maximum filename length. */ t->current_filesystem->name_max = sfs.f_namelen; #endif @@ -1901,7 +1901,7 @@ setup_current_filesystem(struct archive_ #endif t->current_filesystem->noatime = 0; -#if defined(HAVE_READDIR_R) +#if defined(USE_READDIR_R) /* Set maximum filename length. */ t->current_filesystem->name_max = sfs.f_namemax; #endif @@ -1918,7 +1918,7 @@ static int setup_current_filesystem(struct archive_read_disk *a) { struct tree *t = a->tree; -#if defined(_PC_NAME_MAX) && defined(HAVE_READDIR_R) +#if defined(_PC_NAME_MAX) && defined(USE_READDIR_R) long nm; #endif t->current_filesystem->synthetic = -1;/* Not supported */ @@ -1930,7 +1930,7 @@ setup_current_filesystem(struct archive_ t->current_filesystem->min_xfer_size = -1; t->current_filesystem->incr_xfer_size = -1; -#if defined(HAVE_READDIR_R) +#if defined(USE_READDIR_R) /* Set maximum filename length. */ # if defined(_PC_NAME_MAX) if (tree_current_is_symblic_link_target(t)) { @@ -1958,7 +1958,7 @@ setup_current_filesystem(struct archive_ else t->current_filesystem->name_max = nm; # endif /* _PC_NAME_MAX */ -#endif /* HAVE_READDIR_R */ +#endif /* USE_READDIR_R */ return (ARCHIVE_OK); } @@ -2366,7 +2366,7 @@ tree_dir_next_posix(struct tree *t) size_t namelen; if (t->d == NULL) { -#if defined(HAVE_READDIR_R) +#if defined(USE_READDIR_R) size_t dirent_size; #endif @@ -2387,7 +2387,7 @@ tree_dir_next_posix(struct tree *t) t->visit_type = r != 0 ? r : TREE_ERROR_DIR; return (t->visit_type); } -#if defined(HAVE_READDIR_R) +#if defined(USE_READDIR_R) dirent_size = offsetof(struct dirent, d_name) + t->filesystem_table[t->current->filesystem_id].name_max + 1; if (t->dirent == NULL || t->dirent_allocated < dirent_size) { @@ -2404,11 +2404,11 @@ tree_dir_next_posix(struct tree *t) } t->dirent_allocated = dirent_size; } -#endif /* HAVE_READDIR_R */ +#endif /* USE_READDIR_R */ } for (;;) { errno = 0; -#if defined(HAVE_READDIR_R) +#if defined(USE_READDIR_R) r = readdir_r(t->d, t->dirent, &t->de); #ifdef _AIX /* Note: According to the man page, return value 9 indicates @@ -2660,7 +2660,7 @@ tree_free(struct tree *t) if (t == NULL) return; archive_string_free(&t->path); -#if defined(HAVE_READDIR_R) +#if defined(USE_READDIR_R) free(t->dirent); #endif free(t->sparse_list); Modified: projects/clang390-import/contrib/libarchive/libarchive/archive_read_support_format_tar.c ============================================================================== --- projects/clang390-import/contrib/libarchive/libarchive/archive_read_support_format_tar.c Fri Sep 16 15:29:23 2016 (r305890) +++ projects/clang390-import/contrib/libarchive/libarchive/archive_read_support_format_tar.c Fri Sep 16 20:49:12 2016 (r305891) @@ -136,6 +136,7 @@ struct tar { int64_t entry_padding; int64_t entry_bytes_unconsumed; int64_t realsize; + int sparse_allowed; struct sparse_block *sparse_list; struct sparse_block *sparse_last; int64_t sparse_offset; @@ -1271,6 +1272,14 @@ header_common(struct archive_read *a, st * sparse information in the extended area. */ /* FALLTHROUGH */ + case '0': + /* + * Enable sparse file "read" support only for regular + * files and explicit GNU sparse files. However, we + * don't allow non-standard file types to be sparse. + */ + tar->sparse_allowed = 1; + /* FALLTHROUGH */ default: /* Regular file and non-standard types */ /* * Per POSIX: non-recognized types should always be @@ -1730,6 +1739,14 @@ pax_attribute(struct archive_read *a, st #endif switch (key[0]) { case 'G': + /* Reject GNU.sparse.* headers on non-regular files. */ + if (strncmp(key, "GNU.sparse", 10) == 0 && + !tar->sparse_allowed) { + archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC, + "Non-regular file cannot be sparse"); + return (ARCHIVE_FATAL); + } + /* GNU "0.0" sparse pax format. */ if (strcmp(key, "GNU.sparse.numblocks") == 0) { tar->sparse_offset = -1; Modified: projects/clang390-import/contrib/libarchive/libarchive/archive_write_disk_acl.c ============================================================================== --- projects/clang390-import/contrib/libarchive/libarchive/archive_write_disk_acl.c Fri Sep 16 15:29:23 2016 (r305890) +++ projects/clang390-import/contrib/libarchive/libarchive/archive_write_disk_acl.c Fri Sep 16 20:49:12 2016 (r305891) @@ -153,9 +153,19 @@ set_acl(struct archive *a, int fd, const if (entries == 0) return (ARCHIVE_OK); acl = acl_init(entries); + if (acl == (acl_t)NULL) { + archive_set_error(a, errno, + "Failed to initialize ACL working storage"); + return (ARCHIVE_FAILED); + } while (archive_acl_next(a, abstract_acl, ae_requested_type, &ae_type, &ae_permset, &ae_tag, &ae_id, &ae_name) == ARCHIVE_OK) { - acl_create_entry(&acl, &acl_entry); + if (acl_create_entry(&acl, &acl_entry) != 0) { + archive_set_error(a, errno, + "Failed to create a new ACL entry"); + ret = ARCHIVE_FAILED; + goto exit_free; + } switch (ae_tag) { case ARCHIVE_ENTRY_ACL_USER: @@ -186,53 +196,96 @@ set_acl(struct archive *a, int fd, const break; #endif default: - /* XXX */ - break; + archive_set_error(a, ARCHIVE_ERRNO_MISC, + "Unknown ACL tag"); + ret = ARCHIVE_FAILED; + goto exit_free; } #ifdef ACL_TYPE_NFS4 + r = 0; switch (ae_type) { case ARCHIVE_ENTRY_ACL_TYPE_ALLOW: - acl_set_entry_type_np(acl_entry, ACL_ENTRY_TYPE_ALLOW); + r = acl_set_entry_type_np(acl_entry, ACL_ENTRY_TYPE_ALLOW); break; case ARCHIVE_ENTRY_ACL_TYPE_DENY: - acl_set_entry_type_np(acl_entry, ACL_ENTRY_TYPE_DENY); + r = acl_set_entry_type_np(acl_entry, ACL_ENTRY_TYPE_DENY); break; case ARCHIVE_ENTRY_ACL_TYPE_AUDIT: - acl_set_entry_type_np(acl_entry, ACL_ENTRY_TYPE_AUDIT); + r = acl_set_entry_type_np(acl_entry, ACL_ENTRY_TYPE_AUDIT); break; case ARCHIVE_ENTRY_ACL_TYPE_ALARM: - acl_set_entry_type_np(acl_entry, ACL_ENTRY_TYPE_ALARM); + r = acl_set_entry_type_np(acl_entry, ACL_ENTRY_TYPE_ALARM); break; case ARCHIVE_ENTRY_ACL_TYPE_ACCESS: case ARCHIVE_ENTRY_ACL_TYPE_DEFAULT: // These don't translate directly into the system ACL. break; default: - // XXX error handling here. - break; + archive_set_error(a, ARCHIVE_ERRNO_MISC, + "Unknown ACL entry type"); + ret = ARCHIVE_FAILED; + goto exit_free; + } + if (r != 0) { + archive_set_error(a, errno, + "Failed to set ACL entry type"); + ret = ARCHIVE_FAILED; + goto exit_free; } #endif - acl_get_permset(acl_entry, &acl_permset); - acl_clear_perms(acl_permset); + if (acl_get_permset(acl_entry, &acl_permset) != 0) { + archive_set_error(a, errno, + "Failed to get ACL permission set"); + ret = ARCHIVE_FAILED; + goto exit_free; + } + if (acl_clear_perms(acl_permset) != 0) { + archive_set_error(a, errno, + "Failed to clear ACL permissions"); + ret = ARCHIVE_FAILED; + goto exit_free; + } for (i = 0; i < (int)(sizeof(acl_perm_map) / sizeof(acl_perm_map[0])); ++i) { if (ae_permset & acl_perm_map[i].archive_perm) - acl_add_perm(acl_permset, - acl_perm_map[i].platform_perm); + if (acl_add_perm(acl_permset, + acl_perm_map[i].platform_perm) != 0) { + archive_set_error(a, errno, + "Failed to add ACL permission"); + ret = ARCHIVE_FAILED; + goto exit_free; + } } #ifdef ACL_TYPE_NFS4 - // XXX acl_get_flagset_np on FreeBSD returns EINVAL for - // non-NFSv4 ACLs - r = acl_get_flagset_np(acl_entry, &acl_flagset); - if (r == 0) { - acl_clear_flags_np(acl_flagset); + if (acl_type == ACL_TYPE_NFS4) { + /* + * acl_get_flagset_np() fails with non-NFSv4 ACLs + */ + if (acl_get_flagset_np(acl_entry, &acl_flagset) != 0) { + archive_set_error(a, errno, + "Failed to get flagset from an NFSv4 ACL entry"); + ret = ARCHIVE_FAILED; + goto exit_free; + } + if (acl_clear_flags_np(acl_flagset) != 0) { + archive_set_error(a, errno, + "Failed to clear flags from an NFSv4 ACL flagset"); + ret = ARCHIVE_FAILED; + goto exit_free; + } for (i = 0; i < (int)(sizeof(acl_inherit_map) / sizeof(acl_inherit_map[0])); ++i) { - if (ae_permset & acl_inherit_map[i].archive_inherit) - acl_add_flag_np(acl_flagset, - acl_inherit_map[i].platform_inherit); + if (ae_permset & acl_inherit_map[i].archive_inherit) { + if (acl_add_flag_np(acl_flagset, + acl_inherit_map[i].platform_inherit) != 0) { + archive_set_error(a, errno, + "Failed to add flag to NFSv4 ACL flagset"); + ret = ARCHIVE_FAILED; + goto exit_free; + } + } } } #endif @@ -262,6 +315,7 @@ set_acl(struct archive *a, int fd, const ret = ARCHIVE_WARN; } #endif +exit_free: acl_free(acl); return (ret); } Modified: projects/clang390-import/contrib/libarchive/libarchive/archive_write_disk_posix.c ============================================================================== --- projects/clang390-import/contrib/libarchive/libarchive/archive_write_disk_posix.c Fri Sep 16 15:29:23 2016 (r305890) +++ projects/clang390-import/contrib/libarchive/libarchive/archive_write_disk_posix.c Fri Sep 16 20:49:12 2016 (r305891) @@ -140,7 +140,17 @@ __FBSDID("$FreeBSD$"); #define O_BINARY 0 #endif #ifndef O_CLOEXEC -#define O_CLOEXEC 0 +#define O_CLOEXEC 0 +#endif + +/* Ignore non-int O_NOFOLLOW constant. */ +/* gnulib's fcntl.h does this on AIX, but it seems practical everywhere */ +#if defined O_NOFOLLOW && !(INT_MIN <= O_NOFOLLOW && O_NOFOLLOW <= INT_MAX) +#undef O_NOFOLLOW +#endif + +#ifndef O_NOFOLLOW +#define O_NOFOLLOW 0 #endif struct fixup_entry { @@ -326,12 +336,14 @@ struct archive_write_disk { #define HFS_BLOCKS(s) ((s) >> 12) +static int check_symlinks_fsobj(char *path, int *error_number, struct archive_string *error_string, int flags); static int check_symlinks(struct archive_write_disk *); static int create_filesystem_object(struct archive_write_disk *); static struct fixup_entry *current_fixup(struct archive_write_disk *, const char *pathname); #if defined(HAVE_FCHDIR) && defined(PATH_MAX) static void edit_deep_directories(struct archive_write_disk *ad); #endif +static int cleanup_pathname_fsobj(char *path, int *error_number, struct archive_string *error_string, int flags); static int cleanup_pathname(struct archive_write_disk *); static int create_dir(struct archive_write_disk *, char *); static int create_parent_dir(struct archive_write_disk *, char *); @@ -2014,6 +2026,10 @@ create_filesystem_object(struct archive_ const char *linkname; mode_t final_mode, mode; int r; + /* these for check_symlinks_fsobj */ + char *linkname_copy; /* non-const copy of linkname */ + struct archive_string error_string; + int error_number; /* We identify hard/symlinks according to the link names. */ /* Since link(2) and symlink(2) don't handle modes, we're done here. */ @@ -2022,6 +2038,27 @@ create_filesystem_object(struct archive_ #if !HAVE_LINK return (EPERM); #else + archive_string_init(&error_string); + linkname_copy = strdup(linkname); + if (linkname_copy == NULL) { + return (EPERM); + } + /* TODO: consider using the cleaned-up path as the link target? */ + r = cleanup_pathname_fsobj(linkname_copy, &error_number, &error_string, a->flags); + if (r != ARCHIVE_OK) { + archive_set_error(&a->archive, error_number, "%s", error_string.s); + free(linkname_copy); + /* EPERM is more appropriate than error_number for our callers */ + return (EPERM); + } + r = check_symlinks_fsobj(linkname_copy, &error_number, &error_string, a->flags); + if (r != ARCHIVE_OK) { + archive_set_error(&a->archive, error_number, "%s", error_string.s); + free(linkname_copy); + /* EPERM is more appropriate than error_number for our callers */ + return (EPERM); + } + free(linkname_copy); r = link(linkname, a->name) ? errno : 0; /* * New cpio and pax formats allow hardlink entries @@ -2040,7 +2077,7 @@ create_filesystem_object(struct archive_ a->deferred = 0; } else if (r == 0 && a->filesize > 0) { a->fd = open(a->name, - O_WRONLY | O_TRUNC | O_BINARY | O_CLOEXEC); + O_WRONLY | O_TRUNC | O_BINARY | O_CLOEXEC | O_NOFOLLOW); __archive_ensure_cloexec_flag(a->fd); if (a->fd < 0) r = errno; @@ -2351,126 +2388,233 @@ current_fixup(struct archive_write_disk return (a->current_fixup); } -/* TODO: Make this work. */ -/* - * TODO: The deep-directory support bypasses this; disable deep directory - * support if we're doing symlink checks. - */ /* * TODO: Someday, integrate this with the deep dir support; they both * scan the path and both can be optimized by comparing against other * recent paths. */ /* TODO: Extend this to support symlinks on Windows Vista and later. */ + +/* + * Checks the given path to see if any elements along it are symlinks. Returns + * ARCHIVE_OK if there are none, otherwise puts an error in errmsg. + */ static int -check_symlinks(struct archive_write_disk *a) +check_symlinks_fsobj(char *path, int *error_number, struct archive_string *error_string, int flags) { #if !defined(HAVE_LSTAT) /* Platform doesn't have lstat, so we can't look for symlinks. */ - (void)a; /* UNUSED */ + (void)path; /* UNUSED */ + (void)error_number; /* UNUSED */ + (void)error_string; /* UNUSED */ + (void)flags; /* UNUSED */ return (ARCHIVE_OK); #else - char *pn; + int res = ARCHIVE_OK; + char *tail; + char *head; + int last; char c; int r; struct stat st; + int restore_pwd; + + /* Nothing to do here if name is empty */ + if(path[0] == '\0') + return (ARCHIVE_OK); /* * Guard against symlink tricks. Reject any archive entry whose * destination would be altered by a symlink. - */ - /* Whatever we checked last time doesn't need to be re-checked. */ - pn = a->name; - if (archive_strlen(&(a->path_safe)) > 0) { - char *p = a->path_safe.s; - while ((*pn != '\0') && (*p == *pn)) - ++p, ++pn; - } + * + * Walk the filename in chunks separated by '/'. For each segment: + * - if it doesn't exist, continue + * - if it's symlink, abort or remove it + * - if it's a directory and it's not the last chunk, cd into it + * As we go: + * head points to the current (relative) path + * tail points to the temporary \0 terminating the segment we're currently examining + * c holds what used to be in *tail + * last is 1 if this is the last tail + */ + restore_pwd = open(".", O_RDONLY | O_BINARY | O_CLOEXEC); + __archive_ensure_cloexec_flag(restore_pwd); + if (restore_pwd < 0) + return (ARCHIVE_FATAL); + head = path; + tail = path; + last = 0; + /* TODO: reintroduce a safe cache here? */ /* Skip the root directory if the path is absolute. */ - if(pn == a->name && pn[0] == '/') - ++pn; - c = pn[0]; - /* Keep going until we've checked the entire name. */ - while (pn[0] != '\0' && (pn[0] != '/' || pn[1] != '\0')) { + if(tail == path && tail[0] == '/') + ++tail; + /* Keep going until we've checked the entire name. + * head, tail, path all alias the same string, which is + * temporarily zeroed at tail, so be careful restoring the + * stashed (c=tail[0]) for error messages. + * Exiting the loop with break is okay; continue is not. + */ + while (!last) { + /* Skip the separator we just consumed, plus any adjacent ones */ + while (*tail == '/') + ++tail; /* Skip the next path element. */ - while (*pn != '\0' && *pn != '/') - ++pn; - c = pn[0]; - pn[0] = '\0'; + while (*tail != '\0' && *tail != '/') + ++tail; + /* is this the last path component? */ + last = (tail[0] == '\0') || (tail[0] == '/' && tail[1] == '\0'); + /* temporarily truncate the string here */ + c = tail[0]; + tail[0] = '\0'; /* Check that we haven't hit a symlink. */ - r = lstat(a->name, &st); + r = lstat(head, &st); if (r != 0) { + tail[0] = c; /* We've hit a dir that doesn't exist; stop now. */ if (errno == ENOENT) { break; } else { - /* Note: This effectively disables deep directory + /* Treat any other error as fatal - best to be paranoid here + * Note: This effectively disables deep directory * support when security checks are enabled. * Otherwise, very long pathnames that trigger * an error here could evade the sandbox. * TODO: We could do better, but it would probably * require merging the symlink checks with the * deep-directory editing. */ - return (ARCHIVE_FAILED); + if (error_number) *error_number = errno; + if (error_string) + archive_string_sprintf(error_string, + "Could not stat %s", + path); + res = ARCHIVE_FAILED; + break; + } + } else if (S_ISDIR(st.st_mode)) { + if (!last) { + if (chdir(head) != 0) { + tail[0] = c; + if (error_number) *error_number = errno; + if (error_string) + archive_string_sprintf(error_string, + "Could not chdir %s", + path); + res = (ARCHIVE_FATAL); + break; + } + /* Our view is now from inside this dir: */ + head = tail + 1; } } else if (S_ISLNK(st.st_mode)) { - if (c == '\0') { + if (last) { /* * Last element is symlink; remove it * so we can overwrite it with the * item being extracted. */ - if (unlink(a->name)) { - archive_set_error(&a->archive, errno, - "Could not remove symlink %s", - a->name); - pn[0] = c; - return (ARCHIVE_FAILED); + if (unlink(head)) { + tail[0] = c; + if (error_number) *error_number = errno; + if (error_string) + archive_string_sprintf(error_string, + "Could not remove symlink %s", + path); + res = ARCHIVE_FAILED; + break; } - a->pst = NULL; /* * Even if we did remove it, a warning * is in order. The warning is silly, * though, if we're just replacing one * symlink with another symlink. */ - if (!S_ISLNK(a->mode)) { - archive_set_error(&a->archive, 0, - "Removing symlink %s", - a->name); + tail[0] = c; + /* FIXME: not sure how important this is to restore + if (!S_ISLNK(path)) { + if (error_number) *error_number = 0; + if (error_string) + archive_string_sprintf(error_string, + "Removing symlink %s", + path); } + */ /* Symlink gone. No more problem! */ - pn[0] = c; *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@freebsd.org Fri Sep 16 21:00:06 2016 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 2161DBDD6F5 for ; Fri, 16 Sep 2016 21:00:06 +0000 (UTC) (envelope-from dim@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 CB132E1; Fri, 16 Sep 2016 21:00:05 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u8GL05ot006951; Fri, 16 Sep 2016 21:00:05 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u8GL05JT006950; Fri, 16 Sep 2016 21:00:05 GMT (envelope-from dim@FreeBSD.org) Message-Id: <201609162100.u8GL05JT006950@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Fri, 16 Sep 2016 21:00:05 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r305892 - projects/clang390-import 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: Fri, 16 Sep 2016 21:00:06 -0000 Author: dim Date: Fri Sep 16 21:00:04 2016 New Revision: 305892 URL: https://svnweb.freebsd.org/changeset/base/305892 Log: Merge ^/head r305891. I doubt Subversion's sanity. Modified: Directory Properties: projects/clang390-import/ (props changed) From owner-svn-src-projects@freebsd.org Fri Sep 16 21:14:12 2016 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 631C1BDD983 for ; Fri, 16 Sep 2016 21:14:12 +0000 (UTC) (envelope-from dim@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 0C022A50; Fri, 16 Sep 2016 21:14:11 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u8GLEBBF014649; Fri, 16 Sep 2016 21:14:11 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u8GLEBTK014648; Fri, 16 Sep 2016 21:14:11 GMT (envelope-from dim@FreeBSD.org) Message-Id: <201609162114.u8GLEBTK014648@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Fri, 16 Sep 2016 21:14:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r305893 - in projects/clang390-import/contrib/llvm: . tools/clang 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: Fri, 16 Sep 2016 21:14:12 -0000 Author: dim Date: Fri Sep 16 21:14:11 2016 New Revision: 305893 URL: https://svnweb.freebsd.org/changeset/base/305893 Log: Try to fix up Subversion's strange ideas about mergeinfo. Modified: Directory Properties: projects/clang390-import/contrib/llvm/ (props changed) projects/clang390-import/contrib/llvm/tools/clang/ (props changed)