From owner-svn-src-projects@freebsd.org Fri Feb 14 19:33:06 2020 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id CAF6523F6E8 for ; Fri, 14 Feb 2020 19:33:06 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 48K3Sf5kMFz455f; Fri, 14 Feb 2020 19:33: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 mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id BF0FDB1B; Fri, 14 Feb 2020 19:33:06 +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 01EJX6kq029662; Fri, 14 Feb 2020 19:33:06 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 01EJWwTJ029592; Fri, 14 Feb 2020 19:32:58 GMT (envelope-from dim@FreeBSD.org) Message-Id: <202002141932.01EJWwTJ029592@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Fri, 14 Feb 2020 19:32:58 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r357930 - in projects/clang1000-import: cddl/lib/libdtrace contrib/elftoolchain/addr2line contrib/ncurses/ncurses/base lib/libthr/thread libexec/rtld-elf libexec/rtld-elf/aarch64 libexe... X-SVN-Group: projects X-SVN-Commit-Author: dim X-SVN-Commit-Paths: in projects/clang1000-import: cddl/lib/libdtrace contrib/elftoolchain/addr2line contrib/ncurses/ncurses/base lib/libthr/thread libexec/rtld-elf libexec/rtld-elf/aarch64 libexec/rtld-elf/amd64 libexec/... X-SVN-Commit-Revision: 357930 X-SVN-Commit-Repository: base 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.29 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, 14 Feb 2020 19:33:06 -0000 Author: dim Date: Fri Feb 14 19:32:58 2020 New Revision: 357930 URL: https://svnweb.freebsd.org/changeset/base/357930 Log: Merge ^/head r357855 through r357920. Added: projects/clang1000-import/tests/sys/common/divert.py - copied unchanged from r357908, head/tests/sys/common/divert.py projects/clang1000-import/tests/sys/netinet/divert.sh - copied unchanged from r357908, head/tests/sys/netinet/divert.sh projects/clang1000-import/tests/sys/netinet6/divert.sh - copied unchanged from r357908, head/tests/sys/netinet6/divert.sh Modified: projects/clang1000-import/cddl/lib/libdtrace/tcp.d projects/clang1000-import/contrib/elftoolchain/addr2line/addr2line.c projects/clang1000-import/contrib/ncurses/ncurses/base/MKlib_gen.sh projects/clang1000-import/lib/libthr/thread/thr_cancel.c projects/clang1000-import/libexec/rtld-elf/aarch64/reloc.c projects/clang1000-import/libexec/rtld-elf/amd64/reloc.c projects/clang1000-import/libexec/rtld-elf/arm/reloc.c projects/clang1000-import/libexec/rtld-elf/i386/reloc.c projects/clang1000-import/libexec/rtld-elf/mips/reloc.c projects/clang1000-import/libexec/rtld-elf/powerpc/reloc.c projects/clang1000-import/libexec/rtld-elf/powerpc64/reloc.c projects/clang1000-import/libexec/rtld-elf/riscv/reloc.c projects/clang1000-import/libexec/rtld-elf/rtld.c projects/clang1000-import/libexec/rtld-elf/rtld.h projects/clang1000-import/libexec/rtld-elf/sparc64/reloc.c projects/clang1000-import/share/misc/committers-ports.dot projects/clang1000-import/sys/amd64/amd64/trap.c projects/clang1000-import/sys/amd64/vmm/io/iommu.c projects/clang1000-import/sys/amd64/vmm/vmm.c projects/clang1000-import/sys/amd64/vmm/vmm_stat.c projects/clang1000-import/sys/amd64/vmm/vmm_util.c projects/clang1000-import/sys/amd64/vmm/vmm_util.h projects/clang1000-import/sys/amd64/vmm/x86.c projects/clang1000-import/sys/cam/cam_periph.c projects/clang1000-import/sys/cam/cam_xpt.c projects/clang1000-import/sys/dev/ahci/ahci_pci.c projects/clang1000-import/sys/dev/amd_ecc_inject/ecc_inject.c projects/clang1000-import/sys/dev/amdpm/amdpm.c projects/clang1000-import/sys/dev/amdsbwd/amd_chipset.h projects/clang1000-import/sys/dev/amdsbwd/amdsbwd.c projects/clang1000-import/sys/dev/cxgbe/adapter.h projects/clang1000-import/sys/dev/cxgbe/crypto/t4_kern_tls.c projects/clang1000-import/sys/dev/cxgbe/t4_main.c projects/clang1000-import/sys/dev/cxgbe/t4_sge.c projects/clang1000-import/sys/dev/hyperv/vmbus/amd64/hyperv_machdep.c projects/clang1000-import/sys/dev/intpm/intpm.c projects/clang1000-import/sys/dev/mlx5/mlx5_en/mlx5_en_hw_tls.c projects/clang1000-import/sys/dev/ntb/ntb_hw/ntb_hw_amd.c projects/clang1000-import/sys/dev/ntb/ntb_hw/ntb_hw_amd.h projects/clang1000-import/sys/dev/usb/input/ukbd.c projects/clang1000-import/sys/kern/kern_descrip.c projects/clang1000-import/sys/kern/kern_jail.c projects/clang1000-import/sys/kern/kern_lock.c projects/clang1000-import/sys/kern/kern_priv.c projects/clang1000-import/sys/kern/subr_smr.c projects/clang1000-import/sys/kern/subr_syscall.c projects/clang1000-import/sys/kern/subr_trap.c projects/clang1000-import/sys/kern/sys_capability.c projects/clang1000-import/sys/kern/vfs_default.c projects/clang1000-import/sys/kern/vfs_lookup.c projects/clang1000-import/sys/kern/vfs_syscalls.c projects/clang1000-import/sys/kern/vfs_vnops.c projects/clang1000-import/sys/netinet/tcp_input.c projects/clang1000-import/sys/netinet/tcp_log_buf.c projects/clang1000-import/sys/netinet/tcp_log_buf.h projects/clang1000-import/sys/netinet/tcp_output.c projects/clang1000-import/sys/netinet/tcp_sack.c projects/clang1000-import/sys/netinet/tcp_usrreq.c projects/clang1000-import/sys/netinet/tcp_var.h projects/clang1000-import/sys/security/audit/audit.h projects/clang1000-import/sys/security/mac/mac_framework.c projects/clang1000-import/sys/security/mac/mac_framework.h projects/clang1000-import/sys/security/mac/mac_priv.c projects/clang1000-import/sys/security/mac/mac_vfs.c projects/clang1000-import/sys/sys/capsicum.h projects/clang1000-import/sys/sys/file.h projects/clang1000-import/sys/sys/jail.h projects/clang1000-import/sys/sys/ktrace.h projects/clang1000-import/sys/sys/lockmgr.h projects/clang1000-import/sys/sys/priv.h projects/clang1000-import/sys/sys/smr.h projects/clang1000-import/sys/sys/sysent.h projects/clang1000-import/sys/vm/uma_core.c projects/clang1000-import/sys/vm/vm_page.c projects/clang1000-import/tests/sys/Makefile projects/clang1000-import/tests/sys/common/Makefile projects/clang1000-import/tests/sys/net/randsleep.c projects/clang1000-import/tests/sys/netinet/Makefile projects/clang1000-import/tests/sys/netinet6/Makefile projects/clang1000-import/usr.bin/diff/diff.1 projects/clang1000-import/usr.bin/diff/diff.c projects/clang1000-import/usr.bin/diff/tests/diff_test.sh projects/clang1000-import/usr.sbin/bhyve/xmsr.c projects/clang1000-import/usr.sbin/bhyvectl/bhyvectl.c projects/clang1000-import/usr.sbin/services_mkdb/services projects/clang1000-import/usr.sbin/sesutil/sesutil.c Directory Properties: projects/clang1000-import/ (props changed) projects/clang1000-import/cddl/ (props changed) projects/clang1000-import/contrib/elftoolchain/ (props changed) projects/clang1000-import/contrib/ncurses/ (props changed) Modified: projects/clang1000-import/cddl/lib/libdtrace/tcp.d ============================================================================== --- projects/clang1000-import/cddl/lib/libdtrace/tcp.d Fri Feb 14 19:31:24 2020 (r357929) +++ projects/clang1000-import/cddl/lib/libdtrace/tcp.d Fri Feb 14 19:32:58 2020 (r357930) @@ -244,7 +244,7 @@ translator tcpsinfo_t < struct tcpcb *p > { tcps_cwnd_ssthresh = p == NULL ? -1 : p->snd_ssthresh; tcps_srecover = p == NULL ? -1 : p->snd_recover; tcps_sack_fack = p == NULL ? 0 : p->snd_fack; - tcps_sack_snxt = p == NULL ? 0 : p->sack_newdata; + tcps_sack_snxt = p == NULL ? 0 : p->snd_recover; tcps_rto = p == NULL ? -1 : (p->t_rxtcur * 1000) / `hz; tcps_mss = p == NULL ? -1 : p->t_maxseg; tcps_retransmit = p == NULL ? -1 : p->t_rxtshift > 0 ? 1 : 0; Modified: projects/clang1000-import/contrib/elftoolchain/addr2line/addr2line.c ============================================================================== --- projects/clang1000-import/contrib/elftoolchain/addr2line/addr2line.c Fri Feb 14 19:31:24 2020 (r357929) +++ projects/clang1000-import/contrib/elftoolchain/addr2line/addr2line.c Fri Feb 14 19:32:58 2020 (r357930) @@ -36,6 +36,7 @@ #include #include #include +#include #include #include #include Modified: projects/clang1000-import/contrib/ncurses/ncurses/base/MKlib_gen.sh ============================================================================== --- projects/clang1000-import/contrib/ncurses/ncurses/base/MKlib_gen.sh Fri Feb 14 19:31:24 2020 (r357929) +++ projects/clang1000-import/contrib/ncurses/ncurses/base/MKlib_gen.sh Fri Feb 14 19:32:58 2020 (r357930) @@ -73,7 +73,7 @@ USE="$3" # determine if we are using gcc, and if so, what version because the proposed # solution uses a nonstandard option. PRG=`echo "$1" | $AWK '{ sub(/^[[:space:]]*/,""); sub(/[[:space:]].*$/, ""); print; }' || exit 0` -FSF=`"$PRG" --version 2>/dev/null || exit 0 | fgrep "Free Software Foundation" | head -n 1` +FSF=`("$PRG" --version 2>/dev/null || exit 0) | fgrep "Free Software Foundation" | head -n 1` ALL=`"$PRG" -dumpversion 2>/dev/null || exit 0` ONE=`echo "$ALL" | sed -e 's/\..*$//'` if test -n "$FSF" && test -n "$ALL" && test -n "$ONE" ; then Modified: projects/clang1000-import/lib/libthr/thread/thr_cancel.c ============================================================================== --- projects/clang1000-import/lib/libthr/thread/thr_cancel.c Fri Feb 14 19:31:24 2020 (r357929) +++ projects/clang1000-import/lib/libthr/thread/thr_cancel.c Fri Feb 14 19:32:58 2020 (r357930) @@ -71,7 +71,7 @@ _thr_cancel(pthread_t pthread) * _thr_find_thread and THR_THREAD_UNLOCK will enter and leave critical * region automatically. */ - if ((ret = _thr_find_thread(curthread, pthread, 0)) == 0) { + if ((ret = _thr_find_thread(curthread, pthread, 1)) == 0) { if (!pthread->cancel_pending) { pthread->cancel_pending = 1; if (pthread->state != PS_DEAD) Modified: projects/clang1000-import/libexec/rtld-elf/aarch64/reloc.c ============================================================================== --- projects/clang1000-import/libexec/rtld-elf/aarch64/reloc.c Fri Feb 14 19:31:24 2020 (r357929) +++ projects/clang1000-import/libexec/rtld-elf/aarch64/reloc.c Fri Feb 14 19:32:58 2020 (r357930) @@ -258,31 +258,56 @@ reloc_jmpslots(Obj_Entry *obj, int flags, RtldLockStat return (0); } +static void +reloc_iresolve_one(Obj_Entry *obj, const Elf_Rela *rela, + RtldLockState *lockstate) +{ + Elf_Addr *where, target, *ptr; + + ptr = (Elf_Addr *)(obj->relocbase + rela->r_addend); + where = (Elf_Addr *)(obj->relocbase + rela->r_offset); + lock_release(rtld_bind_lock, lockstate); + target = call_ifunc_resolver(ptr); + wlock_acquire(rtld_bind_lock, lockstate); + *where = target; +} + int reloc_iresolve(Obj_Entry *obj, struct Struct_RtldLockState *lockstate) { const Elf_Rela *relalim; const Elf_Rela *rela; - Elf_Addr *where, target, *ptr; if (!obj->irelative) return (0); - relalim = (const Elf_Rela *)((const char *)obj->pltrela + obj->pltrelasize); + obj->irelative = false; + relalim = (const Elf_Rela *)((const char *)obj->pltrela + + obj->pltrelasize); for (rela = obj->pltrela; rela < relalim; rela++) { - if (ELF_R_TYPE(rela->r_info) == R_AARCH64_IRELATIVE) { - ptr = (Elf_Addr *)(obj->relocbase + rela->r_addend); - where = (Elf_Addr *)(obj->relocbase + rela->r_offset); - lock_release(rtld_bind_lock, lockstate); - target = call_ifunc_resolver(ptr); - wlock_acquire(rtld_bind_lock, lockstate); - *where = target; - } + if (ELF_R_TYPE(rela->r_info) == R_AARCH64_IRELATIVE) + reloc_iresolve_one(obj, rela, lockstate); } - obj->irelative = false; return (0); } int +reloc_iresolve_nonplt(Obj_Entry *obj, struct Struct_RtldLockState *lockstate) +{ + const Elf_Rela *relalim; + const Elf_Rela *rela; + + if (!obj->irelative_nonplt) + return (0); + obj->irelative_nonplt = false; + relalim = (const Elf_Rela *)((const char *)obj->rela + obj->relasize); + for (rela = obj->rela; rela < relalim; rela++) { + if (ELF_R_TYPE(rela->r_info) == R_AARCH64_IRELATIVE) + reloc_iresolve_one(obj, rela, lockstate); + } + return (0); +} + +int reloc_gnu_ifunc(Obj_Entry *obj, int flags, struct Struct_RtldLockState *lockstate) { @@ -497,6 +522,9 @@ reloc_non_plt(Obj_Entry *obj, Obj_Entry *obj_rtld, int *where = (Elf_Addr)(obj->relocbase + rela->r_addend); break; case R_AARCH64_NONE: + break; + case R_AARCH64_IRELATIVE: + obj->irelative_nonplt = true; break; default: rtld_printf("%s: Unhandled relocation %lu\n", Modified: projects/clang1000-import/libexec/rtld-elf/amd64/reloc.c ============================================================================== --- projects/clang1000-import/libexec/rtld-elf/amd64/reloc.c Fri Feb 14 19:31:24 2020 (r357929) +++ projects/clang1000-import/libexec/rtld-elf/amd64/reloc.c Fri Feb 14 19:32:58 2020 (r357930) @@ -303,6 +303,10 @@ reloc_non_plt(Obj_Entry *obj, Obj_Entry *obj_rtld, int case R_X86_64_RELATIVE: *where = (Elf_Addr)(obj->relocbase + rela->r_addend); break; + case R_X86_64_IRELATIVE: + obj->irelative_nonplt = true; + break; + /* * missing: * R_X86_64_GOTPCREL, R_X86_64_32, R_X86_64_32S, R_X86_64_16, @@ -410,34 +414,53 @@ reloc_jmpslot(Elf_Addr *where, Elf_Addr target, return (target); } +static void +reloc_iresolve_one(Obj_Entry *obj, const Elf_Rela *rela, + RtldLockState *lockstate) +{ + Elf_Addr *where, target, *ptr; + + ptr = (Elf_Addr *)(obj->relocbase + rela->r_addend); + where = (Elf_Addr *)(obj->relocbase + rela->r_offset); + lock_release(rtld_bind_lock, lockstate); + target = call_ifunc_resolver(ptr); + wlock_acquire(rtld_bind_lock, lockstate); + *where = target; +} + int reloc_iresolve(Obj_Entry *obj, RtldLockState *lockstate) { - const Elf_Rela *relalim; - const Elf_Rela *rela; + const Elf_Rela *relalim; + const Elf_Rela *rela; - if (!obj->irelative) + if (!obj->irelative) + return (0); + obj->irelative = false; + relalim = (const Elf_Rela *)((const char *)obj->pltrela + + obj->pltrelasize); + for (rela = obj->pltrela; rela < relalim; rela++) { + if (ELF_R_TYPE(rela->r_info) == R_X86_64_IRELATIVE) + reloc_iresolve_one(obj, rela, lockstate); + } return (0); - relalim = (const Elf_Rela *)((const char *)obj->pltrela + obj->pltrelasize); - for (rela = obj->pltrela; rela < relalim; rela++) { - Elf_Addr *where, target, *ptr; +} - switch (ELF_R_TYPE(rela->r_info)) { - case R_X86_64_JMP_SLOT: - break; +int +reloc_iresolve_nonplt(Obj_Entry *obj, RtldLockState *lockstate) +{ + const Elf_Rela *relalim; + const Elf_Rela *rela; - case R_X86_64_IRELATIVE: - ptr = (Elf_Addr *)(obj->relocbase + rela->r_addend); - where = (Elf_Addr *)(obj->relocbase + rela->r_offset); - lock_release(rtld_bind_lock, lockstate); - target = call_ifunc_resolver(ptr); - wlock_acquire(rtld_bind_lock, lockstate); - *where = target; - break; + if (!obj->irelative_nonplt) + return (0); + obj->irelative_nonplt = false; + relalim = (const Elf_Rela *)((const char *)obj->rela + obj->relasize); + for (rela = obj->rela; rela < relalim; rela++) { + if (ELF_R_TYPE(rela->r_info) == R_X86_64_IRELATIVE) + reloc_iresolve_one(obj, rela, lockstate); } - } - obj->irelative = false; - return (0); + return (0); } int Modified: projects/clang1000-import/libexec/rtld-elf/arm/reloc.c ============================================================================== --- projects/clang1000-import/libexec/rtld-elf/arm/reloc.c Fri Feb 14 19:31:24 2020 (r357929) +++ projects/clang1000-import/libexec/rtld-elf/arm/reloc.c Fri Feb 14 19:32:58 2020 (r357930) @@ -452,6 +452,15 @@ reloc_iresolve(Obj_Entry *obj __unused, } int +reloc_iresolve_nonplt(Obj_Entry *obj __unused, + struct Struct_RtldLockState *lockstate __unused) +{ + + /* XXX not implemented */ + return (0); +} + +int reloc_gnu_ifunc(Obj_Entry *obj __unused, int flags __unused, struct Struct_RtldLockState *lockstate __unused) { Modified: projects/clang1000-import/libexec/rtld-elf/i386/reloc.c ============================================================================== --- projects/clang1000-import/libexec/rtld-elf/i386/reloc.c Fri Feb 14 19:31:24 2020 (r357929) +++ projects/clang1000-import/libexec/rtld-elf/i386/reloc.c Fri Feb 14 19:32:58 2020 (r357930) @@ -263,6 +263,9 @@ reloc_non_plt(Obj_Entry *obj, Obj_Entry *obj_rtld, int case R_386_TLS_DTPOFF32: *where += (Elf_Addr) def->st_value; break; + case R_386_IRELATIVE: + obj->irelative_nonplt = true; + break; default: _rtld_error("%s: Unsupported relocation type %d" " in non-PLT relocations\n", obj->path, @@ -365,29 +368,51 @@ reloc_jmpslot(Elf_Addr *where, Elf_Addr target, return (target); } +static void +reloc_iresolve_one(Obj_Entry *obj, const Elf_Rel *rel, + RtldLockState *lockstate) +{ + Elf_Addr *where, target; + + where = (Elf_Addr *)(obj->relocbase + rel->r_offset); + lock_release(rtld_bind_lock, lockstate); + target = call_ifunc_resolver(obj->relocbase + *where); + wlock_acquire(rtld_bind_lock, lockstate); + *where = target; +} + int reloc_iresolve(Obj_Entry *obj, RtldLockState *lockstate) { - const Elf_Rel *rellim; - const Elf_Rel *rel; - Elf_Addr *where, target; + const Elf_Rel *rellim; + const Elf_Rel *rel; - if (!obj->irelative) + if (!obj->irelative) + return (0); + obj->irelative = false; + rellim = (const Elf_Rel *)((const char *)obj->pltrel + obj->pltrelsize); + for (rel = obj->pltrel; rel < rellim; rel++) { + if (ELF_R_TYPE(rel->r_info) == R_386_IRELATIVE) + reloc_iresolve_one(obj, rel, lockstate); + } return (0); - rellim = (const Elf_Rel *)((const char *)obj->pltrel + obj->pltrelsize); - for (rel = obj->pltrel; rel < rellim; rel++) { - switch (ELF_R_TYPE(rel->r_info)) { - case R_386_IRELATIVE: - where = (Elf_Addr *)(obj->relocbase + rel->r_offset); - lock_release(rtld_bind_lock, lockstate); - target = call_ifunc_resolver(obj->relocbase + *where); - wlock_acquire(rtld_bind_lock, lockstate); - *where = target; - break; +} + +int +reloc_iresolve_nonplt(Obj_Entry *obj, RtldLockState *lockstate) +{ + const Elf_Rel *rellim; + const Elf_Rel *rel; + + if (!obj->irelative_nonplt) + return (0); + obj->irelative_nonplt = false; + rellim = (const Elf_Rel *)((const char *)obj->rel + obj->relsize); + for (rel = obj->rel; rel < rellim; rel++) { + if (ELF_R_TYPE(rel->r_info) == R_386_IRELATIVE) + reloc_iresolve_one(obj, rel, lockstate); } - } - obj->irelative = false; - return (0); + return (0); } int Modified: projects/clang1000-import/libexec/rtld-elf/mips/reloc.c ============================================================================== --- projects/clang1000-import/libexec/rtld-elf/mips/reloc.c Fri Feb 14 19:31:24 2020 (r357929) +++ projects/clang1000-import/libexec/rtld-elf/mips/reloc.c Fri Feb 14 19:32:58 2020 (r357930) @@ -723,6 +723,15 @@ reloc_iresolve(Obj_Entry *obj __unused, } int +reloc_iresolve_nonplt(Obj_Entry *obj __unused, + struct Struct_RtldLockState *lockstate __unused) +{ + + /* XXX not implemented */ + return (0); +} + +int reloc_gnu_ifunc(Obj_Entry *obj __unused, int flags __unused, struct Struct_RtldLockState *lockstate __unused) { Modified: projects/clang1000-import/libexec/rtld-elf/powerpc/reloc.c ============================================================================== --- projects/clang1000-import/libexec/rtld-elf/powerpc/reloc.c Fri Feb 14 19:31:24 2020 (r357929) +++ projects/clang1000-import/libexec/rtld-elf/powerpc/reloc.c Fri Feb 14 19:32:58 2020 (r357930) @@ -653,6 +653,13 @@ reloc_iresolve(Obj_Entry *obj, } int +reloc_iresolve_nonplt(Obj_Entry *obj __unused, + struct Struct_RtldLockState *lockstate __unused) +{ + return (0); +} + +int reloc_gnu_ifunc(Obj_Entry *obj __unused, int flags __unused, struct Struct_RtldLockState *lockstate __unused) { Modified: projects/clang1000-import/libexec/rtld-elf/powerpc64/reloc.c ============================================================================== --- projects/clang1000-import/libexec/rtld-elf/powerpc64/reloc.c Fri Feb 14 19:31:24 2020 (r357929) +++ projects/clang1000-import/libexec/rtld-elf/powerpc64/reloc.c Fri Feb 14 19:32:58 2020 (r357930) @@ -652,6 +652,13 @@ reloc_gnu_ifunc(Obj_Entry *obj __unused, int flags __u #endif } +int +reloc_iresolve_nonplt(Obj_Entry *obj __unused, + struct Struct_RtldLockState *lockstate __unused) +{ + return (0); +} + void init_pltgot(Obj_Entry *obj) { Modified: projects/clang1000-import/libexec/rtld-elf/riscv/reloc.c ============================================================================== --- projects/clang1000-import/libexec/rtld-elf/riscv/reloc.c Fri Feb 14 19:31:24 2020 (r357929) +++ projects/clang1000-import/libexec/rtld-elf/riscv/reloc.c Fri Feb 14 19:32:58 2020 (r357930) @@ -212,6 +212,15 @@ reloc_iresolve(Obj_Entry *obj __unused, } int +reloc_iresolve_nonplt(Obj_Entry *obj __unused, + struct Struct_RtldLockState *lockstate __unused) +{ + + /* XXX not implemented */ + return (0); +} + +int reloc_gnu_ifunc(Obj_Entry *obj __unused, int flags __unused, struct Struct_RtldLockState *lockstate __unused) { Modified: projects/clang1000-import/libexec/rtld-elf/rtld.c ============================================================================== --- projects/clang1000-import/libexec/rtld-elf/rtld.c Fri Feb 14 19:31:24 2020 (r357929) +++ projects/clang1000-import/libexec/rtld-elf/rtld.c Fri Feb 14 19:32:58 2020 (r357930) @@ -3034,10 +3034,13 @@ resolve_object_ifunc(Obj_Entry *obj, bool bind_now, in if (obj->ifuncs_resolved) return (0); obj->ifuncs_resolved = true; - if (!obj->irelative && !((obj->bind_now || bind_now) && obj->gnu_ifunc)) + if (!obj->irelative && !obj->irelative_nonplt && + !((obj->bind_now || bind_now) && obj->gnu_ifunc)) return (0); if (obj_disable_relro(obj) == -1 || (obj->irelative && reloc_iresolve(obj, lockstate) == -1) || + (obj->irelative_nonplt && reloc_iresolve_nonplt(obj, + lockstate) == -1) || ((obj->bind_now || bind_now) && obj->gnu_ifunc && reloc_gnu_ifunc(obj, flags, lockstate) == -1) || obj_enforce_relro(obj) == -1) Modified: projects/clang1000-import/libexec/rtld-elf/rtld.h ============================================================================== --- projects/clang1000-import/libexec/rtld-elf/rtld.h Fri Feb 14 19:31:24 2020 (r357929) +++ projects/clang1000-import/libexec/rtld-elf/rtld.h Fri Feb 14 19:32:58 2020 (r357930) @@ -264,6 +264,7 @@ typedef struct Struct_Obj_Entry { bool dag_inited : 1; /* Object has its DAG initialized. */ bool filtees_loaded : 1; /* Filtees loaded */ bool irelative : 1; /* Object has R_MACHDEP_IRELATIVE relocs */ + bool irelative_nonplt : 1; /* Object has R_MACHDEP_IRELATIVE non-plt relocs */ bool gnu_ifunc : 1; /* Object has references to STT_GNU_IFUNC */ bool non_plt_gnu_ifunc : 1; /* Object has non-plt IFUNC references */ bool ifuncs_resolved : 1; /* Object ifuncs were already resolved */ @@ -406,6 +407,7 @@ int reloc_non_plt(Obj_Entry *, Obj_Entry *, int flags, int reloc_plt(Obj_Entry *, int flags, struct Struct_RtldLockState *); int reloc_jmpslots(Obj_Entry *, int flags, struct Struct_RtldLockState *); int reloc_iresolve(Obj_Entry *, struct Struct_RtldLockState *); +int reloc_iresolve_nonplt(Obj_Entry *, struct Struct_RtldLockState *); int reloc_gnu_ifunc(Obj_Entry *, int flags, struct Struct_RtldLockState *); void ifunc_init(Elf_Auxinfo[__min_size(AT_COUNT)]); void pre_init(void); Modified: projects/clang1000-import/libexec/rtld-elf/sparc64/reloc.c ============================================================================== --- projects/clang1000-import/libexec/rtld-elf/sparc64/reloc.c Fri Feb 14 19:31:24 2020 (r357929) +++ projects/clang1000-import/libexec/rtld-elf/sparc64/reloc.c Fri Feb 14 19:32:58 2020 (r357930) @@ -570,6 +570,15 @@ reloc_iresolve(Obj_Entry *obj __unused, } int +reloc_iresolve_nonplt(Obj_Entry *obj __unused, + struct Struct_RtldLockState *lockstate __unused) +{ + + /* XXX not implemented */ + return (0); +} + +int reloc_gnu_ifunc(Obj_Entry *obj __unused, int flags __unused, struct Struct_RtldLockState *lockstate __unused) { Modified: projects/clang1000-import/share/misc/committers-ports.dot ============================================================================== --- projects/clang1000-import/share/misc/committers-ports.dot Fri Feb 14 19:31:24 2020 (r357929) +++ projects/clang1000-import/share/misc/committers-ports.dot Fri Feb 14 19:32:58 2020 (r357930) @@ -159,6 +159,7 @@ kevlo [label="Kevin Lo\nkevlo@FreeBSD.org\n2003/02/21" kmoore [label="Kris Moore\nkmoore@FreeBSD.org\n2009/04/14"] knu [label="Akinori Musha\nknu@FreeBSD.org\n2000/03/22"] koitsu [label="Jeremy Chadwick\nkoitsu@FreeBSD.org\n2006/11/10"] +koobs [label="Kubilay Kocak\nkoobs@FreeBSD.org\n2012/12/24"] krion [label="Kirill Ponomarew\nkrion@FreeBSD.org\n2003/07/20"] kwm [label="Koop Mast\nkwm@FreeBSD.org\n2004/09/14"] laszlof [label="Frank Laszlo\nlaszlof@FreeBSD.org\n2006/11/07"] Modified: projects/clang1000-import/sys/amd64/amd64/trap.c ============================================================================== --- projects/clang1000-import/sys/amd64/amd64/trap.c Fri Feb 14 19:31:24 2020 (r357929) +++ projects/clang1000-import/sys/amd64/amd64/trap.c Fri Feb 14 19:32:58 2020 (r357930) @@ -1068,25 +1068,32 @@ flush_l1d_hw(void) wrmsr(MSR_IA32_FLUSH_CMD, IA32_FLUSH_CMD_L1D); } -static void __inline -amd64_syscall_ret_flush_l1d_inline(int error) +static void __noinline +amd64_syscall_ret_flush_l1d_check(int error) { void (*p)(void); - if (error != 0 && error != EEXIST && error != EAGAIN && - error != EXDEV && error != ENOENT && error != ENOTCONN && - error != EINPROGRESS) { - p = syscall_ret_l1d_flush; + if (error != EEXIST && error != EAGAIN && error != EXDEV && + error != ENOENT && error != ENOTCONN && error != EINPROGRESS) { + p = (void *)atomic_load_ptr(&syscall_ret_l1d_flush); if (p != NULL) p(); } } +static void __inline +amd64_syscall_ret_flush_l1d_check_inline(int error) +{ + + if (__predict_false(error != 0)) + amd64_syscall_ret_flush_l1d_check(error); +} + void amd64_syscall_ret_flush_l1d(int error) { - amd64_syscall_ret_flush_l1d_inline(error); + amd64_syscall_ret_flush_l1d_check_inline(error); } void @@ -1190,5 +1197,5 @@ amd64_syscall(struct thread *td, int traced) if (__predict_false(td->td_frame->tf_rip >= VM_MAXUSER_ADDRESS)) set_pcb_flags(td->td_pcb, PCB_FULL_IRET); - amd64_syscall_ret_flush_l1d_inline(td->td_errno); + amd64_syscall_ret_flush_l1d_check_inline(td->td_errno); } Modified: projects/clang1000-import/sys/amd64/vmm/io/iommu.c ============================================================================== --- projects/clang1000-import/sys/amd64/vmm/io/iommu.c Fri Feb 14 19:31:24 2020 (r357929) +++ projects/clang1000-import/sys/amd64/vmm/io/iommu.c Fri Feb 14 19:32:58 2020 (r357930) @@ -184,7 +184,7 @@ iommu_init(void) if (vmm_is_intel()) ops = &iommu_ops_intel; - else if (vmm_is_amd()) + else if (vmm_is_svm()) ops = &iommu_ops_amd; else ops = NULL; Modified: projects/clang1000-import/sys/amd64/vmm/vmm.c ============================================================================== --- projects/clang1000-import/sys/amd64/vmm/vmm.c Fri Feb 14 19:31:24 2020 (r357929) +++ projects/clang1000-import/sys/amd64/vmm/vmm.c Fri Feb 14 19:32:58 2020 (r357930) @@ -347,7 +347,7 @@ vmm_init(void) if (vmm_is_intel()) ops = &vmm_ops_intel; - else if (vmm_is_amd()) + else if (vmm_is_svm()) ops = &vmm_ops_amd; else return (ENXIO); Modified: projects/clang1000-import/sys/amd64/vmm/vmm_stat.c ============================================================================== --- projects/clang1000-import/sys/amd64/vmm/vmm_stat.c Fri Feb 14 19:31:24 2020 (r357929) +++ projects/clang1000-import/sys/amd64/vmm/vmm_stat.c Fri Feb 14 19:32:58 2020 (r357930) @@ -67,7 +67,7 @@ vmm_stat_register(void *arg) if (vst->scope == VMM_STAT_SCOPE_INTEL && !vmm_is_intel()) return; - if (vst->scope == VMM_STAT_SCOPE_AMD && !vmm_is_amd()) + if (vst->scope == VMM_STAT_SCOPE_AMD && !vmm_is_svm()) return; if (vst_num_elems + vst->nelems >= MAX_VMM_STAT_ELEMS) { Modified: projects/clang1000-import/sys/amd64/vmm/vmm_util.c ============================================================================== --- projects/clang1000-import/sys/amd64/vmm/vmm_util.c Fri Feb 14 19:31:24 2020 (r357929) +++ projects/clang1000-import/sys/amd64/vmm/vmm_util.c Fri Feb 14 19:32:58 2020 (r357930) @@ -46,9 +46,10 @@ vmm_is_intel(void) } bool -vmm_is_amd(void) +vmm_is_svm(void) { - return (strcmp(cpu_vendor, "AuthenticAMD") == 0); + return (strcmp(cpu_vendor, "AuthenticAMD") == 0 || + strcmp(cpu_vendor, "HygonGenuine") == 0); } bool Modified: projects/clang1000-import/sys/amd64/vmm/vmm_util.h ============================================================================== --- projects/clang1000-import/sys/amd64/vmm/vmm_util.h Fri Feb 14 19:31:24 2020 (r357929) +++ projects/clang1000-import/sys/amd64/vmm/vmm_util.h Fri Feb 14 19:32:58 2020 (r357930) @@ -34,7 +34,7 @@ struct trapframe; bool vmm_is_intel(void); -bool vmm_is_amd(void); +bool vmm_is_svm(void); bool vmm_supports_1G_pages(void); void dump_trapframe(struct trapframe *tf); Modified: projects/clang1000-import/sys/amd64/vmm/x86.c ============================================================================== --- projects/clang1000-import/sys/amd64/vmm/x86.c Fri Feb 14 19:31:24 2020 (r357929) +++ projects/clang1000-import/sys/amd64/vmm/x86.c Fri Feb 14 19:32:58 2020 (r357930) @@ -135,7 +135,7 @@ x86_emulate_cpuid(struct vm *vm, int vcpu_id, break; case CPUID_8000_0008: cpuid_count(*eax, *ecx, regs); - if (vmm_is_amd()) { + if (vmm_is_svm()) { /* * As on Intel (0000_0007:0, EDX), mask out * unsupported or unsafe AMD extended features @@ -234,7 +234,7 @@ x86_emulate_cpuid(struct vm *vm, int vcpu_id, case CPUID_8000_001D: /* AMD Cache topology, like 0000_0004 for Intel. */ - if (!vmm_is_amd()) + if (!vmm_is_svm()) goto default_leaf; /* @@ -276,8 +276,11 @@ x86_emulate_cpuid(struct vm *vm, int vcpu_id, break; case CPUID_8000_001E: - /* AMD Family 16h+ additional identifiers */ - if (!vmm_is_amd() || CPUID_TO_FAMILY(cpu_id) < 0x16) + /* + * AMD Family 16h+ and Hygon Family 18h additional + * identifiers. + */ + if (!vmm_is_svm() || CPUID_TO_FAMILY(cpu_id) < 0x16) goto default_leaf; vm_get_topology(vm, &sockets, &cores, &threads, Modified: projects/clang1000-import/sys/cam/cam_periph.c ============================================================================== --- projects/clang1000-import/sys/cam/cam_periph.c Fri Feb 14 19:31:24 2020 (r357929) +++ projects/clang1000-import/sys/cam/cam_periph.c Fri Feb 14 19:32:58 2020 (r357930) @@ -57,6 +57,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include /* For KASSERTs only */ #include #include @@ -681,6 +682,10 @@ camperiphfree(struct cam_periph *periph) cam_periph_assert(periph, MA_OWNED); KASSERT(periph->periph_allocating == 0, ("%s%d: freed while allocating", periph->periph_name, periph->unit_number)); + KASSERT(periph->path->device->ccbq.dev_active == 0, + ("%s%d: freed with %d active CCBs\n", + periph->periph_name, periph->unit_number, + periph->path->device->ccbq.dev_active)); for (p_drv = periph_drivers; *p_drv != NULL; p_drv++) { if (strcmp((*p_drv)->driver_name, periph->periph_name) == 0) break; Modified: projects/clang1000-import/sys/cam/cam_xpt.c ============================================================================== --- projects/clang1000-import/sys/cam/cam_xpt.c Fri Feb 14 19:31:24 2020 (r357929) +++ projects/clang1000-import/sys/cam/cam_xpt.c Fri Feb 14 19:32:58 2020 (r357930) @@ -248,7 +248,6 @@ static void xpt_run_allocq(struct cam_periph *periph, static void xpt_run_allocq_task(void *context, int pending); static void xpt_run_devq(struct cam_devq *devq); static callout_func_t xpt_release_devq_timeout; -static void xpt_release_simq_timeout(void *arg) __unused; static void xpt_acquire_bus(struct cam_eb *bus); static void xpt_release_bus(struct cam_eb *bus); static uint32_t xpt_freeze_devq_device(struct cam_ed *dev, u_int count); @@ -4619,18 +4618,6 @@ xpt_release_simq(struct cam_sim *sim, int run_queue) } } mtx_unlock(&devq->send_mtx); -} - -/* - * XXX Appears to be unused. - */ -static void -xpt_release_simq_timeout(void *arg) -{ - struct cam_sim *sim; - - sim = (struct cam_sim *)arg; - xpt_release_simq(sim, /* run_queue */ TRUE); } void Modified: projects/clang1000-import/sys/dev/ahci/ahci_pci.c ============================================================================== --- projects/clang1000-import/sys/dev/ahci/ahci_pci.c Fri Feb 14 19:31:24 2020 (r357929) +++ projects/clang1000-import/sys/dev/ahci/ahci_pci.c Fri Feb 14 19:32:58 2020 (r357930) @@ -90,6 +90,7 @@ static const struct { {0x06221b21, 0x00, "ASMedia ASM106x", AHCI_Q_NOCCS|AHCI_Q_NOAUX}, {0x06241b21, 0x00, "ASMedia ASM106x", AHCI_Q_NOCCS|AHCI_Q_NOAUX}, {0x06251b21, 0x00, "ASMedia ASM106x", AHCI_Q_NOCCS|AHCI_Q_NOAUX}, + {0x79011d94, 0x00, "Hygon KERNCZ", 0}, {0x26528086, 0x00, "Intel ICH6", AHCI_Q_NOFORCE}, {0x26538086, 0x00, "Intel ICH6M", AHCI_Q_NOFORCE}, {0x26818086, 0x00, "Intel ESB2", 0}, Modified: projects/clang1000-import/sys/dev/amd_ecc_inject/ecc_inject.c ============================================================================== --- projects/clang1000-import/sys/dev/amd_ecc_inject/ecc_inject.c Fri Feb 14 19:31:24 2020 (r357929) +++ projects/clang1000-import/sys/dev/amd_ecc_inject/ecc_inject.c Fri Feb 14 19:32:58 2020 (r357930) @@ -203,7 +203,8 @@ ecc_ei_load(void) { uint32_t val; - if (cpu_vendor_id != CPU_VENDOR_AMD || CPUID_TO_FAMILY(cpu_id) < 0x10) { + if ((cpu_vendor_id != CPU_VENDOR_AMD || CPUID_TO_FAMILY(cpu_id) < 0x10) && + cpu_vendor_id != CPU_VENDOR_HYGON) { printf("DRAM ECC error injection is not supported\n"); return (ENXIO); } Modified: projects/clang1000-import/sys/dev/amdpm/amdpm.c ============================================================================== --- projects/clang1000-import/sys/dev/amdpm/amdpm.c Fri Feb 14 19:31:24 2020 (r357929) +++ projects/clang1000-import/sys/dev/amdpm/amdpm.c Fri Feb 14 19:32:58 2020 (r357930) @@ -67,6 +67,8 @@ static int amdpm_debug = 0; #define AMDPM_DEVICEID_AMD768PM 0x7443 #define AMDPM_DEVICEID_AMD8111PM 0x746B +#define AMDPM_VENDORID_HYGON 0x1d94 + /* nVidia nForce chipset */ #define AMDPM_VENDORID_NVIDIA 0x10de #define AMDPM_DEVICEID_NF_SMB 0x01b4 @@ -199,7 +201,8 @@ amdpm_attach(device_t dev) pci_write_config(dev, AMDPCI_GEN_CONFIG_PM, val_b | AMDPCI_PMIOEN, 1); /* Allocate I/O space */ - if (pci_get_vendor(dev) == AMDPM_VENDORID_AMD) + if (pci_get_vendor(dev) == AMDPM_VENDORID_AMD || + pci_get_vendor(dev) == AMDPM_VENDORID_HYGON) amdpm_sc->rid = AMDPCI_PMBASE; else amdpm_sc->rid = NFPCI_PMBASE; Modified: projects/clang1000-import/sys/dev/amdsbwd/amd_chipset.h ============================================================================== --- projects/clang1000-import/sys/dev/amdsbwd/amd_chipset.h Fri Feb 14 19:31:24 2020 (r357929) +++ projects/clang1000-import/sys/dev/amdsbwd/amd_chipset.h Fri Feb 14 19:32:58 2020 (r357930) @@ -146,3 +146,5 @@ #define AMDCZ_SMBUS_DEVID 0x790b1022 #define AMDCZ49_SMBUS_REVID 0x49 +#define HYGONCZ_SMBUS_DEVID 0x790b1d94 + Modified: projects/clang1000-import/sys/dev/amdsbwd/amdsbwd.c ============================================================================== --- projects/clang1000-import/sys/dev/amdsbwd/amdsbwd.c Fri Feb 14 19:31:24 2020 (r357929) +++ projects/clang1000-import/sys/dev/amdsbwd/amdsbwd.c Fri Feb 14 19:32:58 2020 (r357930) @@ -60,6 +60,8 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include +#include #include #include @@ -269,7 +271,8 @@ amdsbwd_identify(driver_t *driver, device_t parent) return; if (pci_get_devid(smb_dev) != AMDSB_SMBUS_DEVID && pci_get_devid(smb_dev) != AMDFCH_SMBUS_DEVID && - pci_get_devid(smb_dev) != AMDCZ_SMBUS_DEVID) + pci_get_devid(smb_dev) != AMDCZ_SMBUS_DEVID && + pci_get_devid(smb_dev) != HYGONCZ_SMBUS_DEVID) return; child = BUS_ADD_CHILD(parent, ISA_ORDER_SPECULATIVE, "amdsbwd", -1); @@ -378,6 +381,7 @@ static void amdsbwd_probe_fch41(device_t dev, struct resource *pmres, uint32_t *addr) { uint8_t val; + char buf[36]; val = pmio_read(pmres, AMDFCH41_PM_ISA_CTRL); if ((val & AMDFCH41_MMIO_EN) != 0) { @@ -416,7 +420,9 @@ amdsbwd_probe_fch41(device_t dev, struct resource *pmr amdsbwd_verbose_printf(dev, "AMDFCH41_PM_DECODE_EN3 value = %#04x\n", val); #endif - device_set_desc(dev, "AMD FCH Rev 41h+ Watchdog Timer"); + snprintf(buf, sizeof(buf), "%s FCH Rev 41h+ Watchdog Timer", + cpu_vendor_id == CPU_VENDOR_HYGON ? "Hygon" : "AMD"); + device_set_desc_copy(dev, buf); } static int Modified: projects/clang1000-import/sys/dev/cxgbe/adapter.h ============================================================================== --- projects/clang1000-import/sys/dev/cxgbe/adapter.h Fri Feb 14 19:31:24 2020 (r357929) +++ projects/clang1000-import/sys/dev/cxgbe/adapter.h Fri Feb 14 19:32:58 2020 (r357930) @@ -574,7 +574,6 @@ struct sge_txq { uint64_t txpkts0_pkts; /* # of frames in type0 coalesced tx WRs */ uint64_t txpkts1_pkts; /* # of frames in type1 coalesced tx WRs */ uint64_t raw_wrs; /* # of raw work requests (alloc_wr_mbuf) */ - uint64_t tls_wrs; /* # of TLS work requests */ uint64_t kern_tls_records; uint64_t kern_tls_short; Modified: projects/clang1000-import/sys/dev/cxgbe/crypto/t4_kern_tls.c ============================================================================== --- projects/clang1000-import/sys/dev/cxgbe/crypto/t4_kern_tls.c Fri Feb 14 19:31:24 2020 (r357929) +++ projects/clang1000-import/sys/dev/cxgbe/crypto/t4_kern_tls.c Fri Feb 14 19:32:58 2020 (r357930) @@ -2082,7 +2082,6 @@ ktls_write_tls_wr(struct tlspcb *tlsp, struct sge_txq ndesc += howmany(wr_len, EQ_ESIZE); MPASS(ndesc <= available); - txq->tls_wrs++; txq->kern_tls_records++; txq->kern_tls_octets += tlen - mtod(m_tls, vm_offset_t); Modified: projects/clang1000-import/sys/dev/cxgbe/t4_main.c ============================================================================== --- projects/clang1000-import/sys/dev/cxgbe/t4_main.c Fri Feb 14 19:31:24 2020 (r357929) +++ projects/clang1000-import/sys/dev/cxgbe/t4_main.c Fri Feb 14 19:32:58 2020 (r357930) @@ -10359,7 +10359,6 @@ clear_stats(struct adapter *sc, u_int port_id) txq->txpkts0_pkts = 0; txq->txpkts1_pkts = 0; txq->raw_wrs = 0; - txq->tls_wrs = 0; txq->kern_tls_records = 0; txq->kern_tls_short = 0; txq->kern_tls_partial = 0; Modified: projects/clang1000-import/sys/dev/cxgbe/t4_sge.c ============================================================================== --- projects/clang1000-import/sys/dev/cxgbe/t4_sge.c Fri Feb 14 19:31:24 2020 (r357929) +++ projects/clang1000-import/sys/dev/cxgbe/t4_sge.c Fri Feb 14 19:32:58 2020 (r357930) @@ -4204,8 +4204,6 @@ alloc_txq(struct vi_info *vi, struct sge_txq *txq, int "# of frames tx'd using type1 txpkts work requests"); SYSCTL_ADD_UQUAD(&vi->ctx, children, OID_AUTO, "raw_wrs", CTLFLAG_RD, &txq->raw_wrs, "# of raw work requests (non-packets)"); - SYSCTL_ADD_UQUAD(&vi->ctx, children, OID_AUTO, "tls_wrs", CTLFLAG_RD, - &txq->tls_wrs, "# of TLS work requests (TLS records)"); #ifdef KERN_TLS if (sc->flags & KERN_TLS_OK) { Modified: projects/clang1000-import/sys/dev/hyperv/vmbus/amd64/hyperv_machdep.c ============================================================================== --- projects/clang1000-import/sys/dev/hyperv/vmbus/amd64/hyperv_machdep.c Fri Feb 14 19:31:24 2020 (r357929) +++ projects/clang1000-import/sys/dev/hyperv/vmbus/amd64/hyperv_machdep.c Fri Feb 14 19:32:58 2020 (r357930) @@ -188,6 +188,7 @@ hyperv_tsc_tcinit(void *dummy __unused) switch (cpu_vendor_id) { case CPU_VENDOR_AMD: + case CPU_VENDOR_HYGON: hyperv_tsc_timecounter.tc_get_timecount = hyperv_tsc_timecount_mfence; tc64 = hyperv_tc64_tsc_mfence; Modified: projects/clang1000-import/sys/dev/intpm/intpm.c ============================================================================== --- projects/clang1000-import/sys/dev/intpm/intpm.c Fri Feb 14 19:31:24 2020 (r357929) +++ projects/clang1000-import/sys/dev/intpm/intpm.c Fri Feb 14 19:32:58 2020 (r357930) @@ -102,6 +102,7 @@ const struct intsmb_device { { AMDSB_SMBUS_DEVID, "AMD SB600/7xx/8xx/9xx SMBus Controller" }, { AMDFCH_SMBUS_DEVID, "AMD FCH SMBus Controller" }, { AMDCZ_SMBUS_DEVID, "AMD FCH SMBus Controller" }, + { HYGONCZ_SMBUS_DEVID, "Hygon FCH SMBus Controller" }, }; static int @@ -243,6 +244,7 @@ intsmb_attach(device_t dev) break; case AMDFCH_SMBUS_DEVID: case AMDCZ_SMBUS_DEVID: + case HYGONCZ_SMBUS_DEVID: sc->sb8xx = 1; break; } Modified: projects/clang1000-import/sys/dev/mlx5/mlx5_en/mlx5_en_hw_tls.c ============================================================================== --- projects/clang1000-import/sys/dev/mlx5/mlx5_en/mlx5_en_hw_tls.c Fri Feb 14 19:31:24 2020 (r357929) +++ projects/clang1000-import/sys/dev/mlx5/mlx5_en/mlx5_en_hw_tls.c Fri Feb 14 19:32:58 2020 (r357930) @@ -339,10 +339,6 @@ mlx5e_tls_snd_tag_alloc(struct ifnet *ifp, case CRYPTO_AES_NIST_GCM_16: switch (en->cipher_key_len) { case 128 / 8: - if (en->auth_algorithm != CRYPTO_AES_128_NIST_GMAC) { - error = EINVAL; - goto failure; - } if (en->tls_vminor == TLS_MINOR_VER_TWO) { if (MLX5_CAP_TLS(priv->mdev, tls_1_2_aes_gcm_128) == 0) { error = EPROTONOSUPPORT; @@ -360,10 +356,6 @@ mlx5e_tls_snd_tag_alloc(struct ifnet *ifp, break; case 256 / 8: - if (en->auth_algorithm != CRYPTO_AES_256_NIST_GMAC) { - error = EINVAL; - goto failure; - } if (en->tls_vminor == TLS_MINOR_VER_TWO) { if (MLX5_CAP_TLS(priv->mdev, tls_1_2_aes_gcm_256) == 0) { error = EPROTONOSUPPORT; Modified: projects/clang1000-import/sys/dev/ntb/ntb_hw/ntb_hw_amd.c ============================================================================== --- projects/clang1000-import/sys/dev/ntb/ntb_hw/ntb_hw_amd.c Fri Feb 14 19:31:24 2020 (r357929) +++ projects/clang1000-import/sys/dev/ntb/ntb_hw/ntb_hw_amd.c Fri Feb 14 19:32:58 2020 (r357930) @@ -101,6 +101,16 @@ static const struct amd_ntb_hw_info amd_ntb_hw_info_li .msix_vector_count = 24, .quirks = 0, .desc = "AMD Non-Transparent Bridge"}, + + { .vendor_id = NTB_HW_HYGON_VENDOR_ID, + .device_id = NTB_HW_HYGON_DEVICE_ID1, + .mw_count = 3, + .bar_start_idx = 1, + .spad_count = 16, + .db_count = 16, + .msix_vector_count = 24, + .quirks = QUIRK_MW0_32BIT, + .desc = "Hygon Non-Transparent Bridge"}, }; static const struct pci_device_table amd_ntb_devs[] = { @@ -109,7 +119,10 @@ static const struct pci_device_table amd_ntb_devs[] = PCI_DESCR("AMD Non-Transparent Bridge") }, { PCI_DEV(NTB_HW_AMD_VENDOR_ID, NTB_HW_AMD_DEVICE_ID2), .driver_data = (uintptr_t)&amd_ntb_hw_info_list[1], - PCI_DESCR("AMD Non-Transparent Bridge") } + PCI_DESCR("AMD Non-Transparent Bridge") }, + { PCI_DEV(NTB_HW_HYGON_VENDOR_ID, NTB_HW_HYGON_DEVICE_ID1), + .driver_data = (uintptr_t)&amd_ntb_hw_info_list[0], + PCI_DESCR("Hygon Non-Transparent Bridge") } }; static unsigned g_amd_ntb_hw_debug_level; Modified: projects/clang1000-import/sys/dev/ntb/ntb_hw/ntb_hw_amd.h ============================================================================== --- projects/clang1000-import/sys/dev/ntb/ntb_hw/ntb_hw_amd.h Fri Feb 14 19:31:24 2020 (r357929) +++ projects/clang1000-import/sys/dev/ntb/ntb_hw/ntb_hw_amd.h Fri Feb 14 19:32:58 2020 (r357930) @@ -51,6 +51,9 @@ #define NTB_HW_AMD_DEVICE_ID1 0x145B #define NTB_HW_AMD_DEVICE_ID2 0x148B +#define NTB_HW_HYGON_VENDOR_ID 0x19D4 +#define NTB_HW_HYGON_DEVICE_ID1 0x145B + #define NTB_DEF_PEER_CNT 1 #define NTB_DEF_PEER_IDX 0 Modified: projects/clang1000-import/sys/dev/usb/input/ukbd.c ============================================================================== --- projects/clang1000-import/sys/dev/usb/input/ukbd.c Fri Feb 14 19:31:24 2020 (r357929) +++ projects/clang1000-import/sys/dev/usb/input/ukbd.c Fri Feb 14 19:32:58 2020 (r357930) @@ -109,27 +109,21 @@ SYSCTL_INT(_hw_usb_ukbd, OID_AUTO, pollrate, CTLFLAG_R #define UKBD_EMULATE_ATSCANCODE 1 #define UKBD_DRIVER_NAME "ukbd" -#define UKBD_NMOD 8 /* units */ -#define UKBD_NKEYCODE 6 /* units */ -#define UKBD_IN_BUF_SIZE (2*(UKBD_NMOD + (2*UKBD_NKEYCODE))) /* bytes */ -#define UKBD_IN_BUF_FULL ((UKBD_IN_BUF_SIZE / 2) - 1) /* bytes */ +#define UKBD_NKEYCODE 256 /* units */ +#define UKBD_IN_BUF_SIZE (4 * UKBD_NKEYCODE) /* scancodes */ +#define UKBD_IN_BUF_FULL ((UKBD_IN_BUF_SIZE / 2) - 1) /* scancodes */ #define UKBD_NFKEY (sizeof(fkey_tab)/sizeof(fkey_tab[0])) /* units */ #define UKBD_BUFFER_SIZE 64 /* bytes */ +#define UKBD_KEY_PRESSED(map, key) ({ \ + CTASSERT((key) >= 0 && (key) < UKBD_NKEYCODE); \ + ((map)[(key) / 64] & (1ULL << ((key) % 64))); \ +}) +#define MOD_EJECT 0x01 +#define MOD_FN 0x02 + struct ukbd_data { - uint16_t modifiers; -#define MOD_CONTROL_L 0x01 -#define MOD_CONTROL_R 0x10 -#define MOD_SHIFT_L 0x02 -#define MOD_SHIFT_R 0x20 -#define MOD_ALT_L 0x04 -#define MOD_ALT_R 0x40 -#define MOD_WIN_L 0x08 -#define MOD_WIN_R 0x80 -/* internal */ -#define MOD_EJECT 0x0100 -#define MOD_FN 0x0200 - uint8_t keycode[UKBD_NKEYCODE]; + uint64_t bitmap[howmany(UKBD_NKEYCODE, 64)]; }; enum { @@ -144,17 +138,10 @@ struct ukbd_softc { keymap_t sc_keymap; accentmap_t sc_accmap; fkeytab_t sc_fkeymap[UKBD_NFKEY]; + uint64_t sc_loc_key_valid[howmany(UKBD_NKEYCODE, 64)]; struct hid_location sc_loc_apple_eject; struct hid_location sc_loc_apple_fn; - struct hid_location sc_loc_ctrl_l; - struct hid_location sc_loc_ctrl_r; - struct hid_location sc_loc_shift_l; - struct hid_location sc_loc_shift_r; - struct hid_location sc_loc_alt_l; - struct hid_location sc_loc_alt_r; - struct hid_location sc_loc_win_l; - struct hid_location sc_loc_win_r; - struct hid_location sc_loc_events; + struct hid_location sc_loc_key[UKBD_NKEYCODE]; struct hid_location sc_loc_numlock; struct hid_location sc_loc_capslock; struct hid_location sc_loc_scrolllock; @@ -172,8 +159,7 @@ struct ukbd_softc { sbintime_t sc_co_basetime; int sc_delay; - uint32_t sc_ntime[UKBD_NKEYCODE]; - uint32_t sc_otime[UKBD_NKEYCODE]; + uint32_t sc_repeat_time; uint32_t sc_input[UKBD_IN_BUF_SIZE]; /* input buffer */ uint32_t sc_time_ms; uint32_t sc_composed_char; /* composed char code, if non-zero */ @@ -191,15 +177,6 @@ struct ukbd_softc { #define UKBD_FLAG_APPLE_EJECT 0x00000040 #define UKBD_FLAG_APPLE_FN 0x00000080 #define UKBD_FLAG_APPLE_SWAP 0x00000100 -#define UKBD_FLAG_CTRL_L 0x00000400 -#define UKBD_FLAG_CTRL_R 0x00000800 -#define UKBD_FLAG_SHIFT_L 0x00001000 -#define UKBD_FLAG_SHIFT_R 0x00002000 -#define UKBD_FLAG_ALT_L 0x00004000 -#define UKBD_FLAG_ALT_R 0x00008000 -#define UKBD_FLAG_WIN_L 0x00010000 -#define UKBD_FLAG_WIN_R 0x00020000 -#define UKBD_FLAG_EVENTS 0x00040000 #define UKBD_FLAG_NUMLOCK 0x00080000 #define UKBD_FLAG_CAPSLOCK 0x00100000 #define UKBD_FLAG_SCROLLLOCK 0x00200000 @@ -214,31 +191,23 @@ struct ukbd_softc { uint16_t sc_inputs; uint16_t sc_inputhead; uint16_t sc_inputtail; - uint16_t sc_modifiers; uint8_t sc_leds; /* store for async led requests */ uint8_t sc_iface_index; uint8_t sc_iface_no; uint8_t sc_id_apple_eject; uint8_t sc_id_apple_fn; - uint8_t sc_id_ctrl_l; - uint8_t sc_id_ctrl_r; - uint8_t sc_id_shift_l; - uint8_t sc_id_shift_r; - uint8_t sc_id_alt_l; - uint8_t sc_id_alt_r; - uint8_t sc_id_win_l; - uint8_t sc_id_win_r; - uint8_t sc_id_event; + uint8_t sc_id_loc_key[UKBD_NKEYCODE]; uint8_t sc_id_numlock; uint8_t sc_id_capslock; uint8_t sc_id_scrolllock; - uint8_t sc_id_events; uint8_t sc_kbd_id; + uint8_t sc_repeat_key; uint8_t sc_buffer[UKBD_BUFFER_SIZE]; }; +#define KEY_NONE 0x00 #define KEY_ERROR 0x01 #define KEY_PRESS 0 @@ -259,21 +228,6 @@ struct ukbd_softc { #define UKBD_UNLOCK() USB_MTX_UNLOCK(&Giant) #define UKBD_LOCK_ASSERT() USB_MTX_ASSERT(&Giant, MA_OWNED) -struct ukbd_mods { - uint32_t mask, key; -}; - -static const struct ukbd_mods ukbd_mods[UKBD_NMOD] = { - {MOD_CONTROL_L, 0xe0}, - {MOD_CONTROL_R, 0xe4}, - {MOD_SHIFT_L, 0xe1}, - {MOD_SHIFT_R, 0xe5}, - {MOD_ALT_L, 0xe2}, - {MOD_ALT_R, 0xe6}, - {MOD_WIN_L, 0xe3}, - {MOD_WIN_R, 0xe7}, -}; - *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***