From owner-svn-src-projects@freebsd.org Sun Feb 10 12:49:43 2019 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 3FF8214C5D8D for ; Sun, 10 Feb 2019 12:49:43 +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 E09AF76536; Sun, 10 Feb 2019 12:49:42 +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 B7C5D18ACC; Sun, 10 Feb 2019 12:49:42 +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 x1ACngxs082097; Sun, 10 Feb 2019 12:49:42 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x1ACnZZ5082061; Sun, 10 Feb 2019 12:49:35 GMT (envelope-from dim@FreeBSD.org) Message-Id: <201902101249.x1ACnZZ5082061@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Sun, 10 Feb 2019 12:49:35 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r343956 - in projects/clang800-import: . contrib/netbsd-tests/lib/libm etc/mtree lib/libc/stdio lib/libc/sys lib/libc/x86/sys lib/libcasper/services/cap_syslog lib/libutil lib/msun/src ... X-SVN-Group: projects X-SVN-Commit-Author: dim X-SVN-Commit-Paths: in projects/clang800-import: . contrib/netbsd-tests/lib/libm etc/mtree lib/libc/stdio lib/libc/sys lib/libc/x86/sys lib/libcasper/services/cap_syslog lib/libutil lib/msun/src lib/msun/tests libexec/rc... X-SVN-Commit-Revision: 343956 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: E09AF76536 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.98 / 15.00]; local_wl_from(0.00)[FreeBSD.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.998,0]; NEURAL_HAM_SHORT(-0.98)[-0.985,0]; NEURAL_HAM_LONG(-1.00)[-1.000,0]; ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US] 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: Sun, 10 Feb 2019 12:49:43 -0000 Author: dim Date: Sun Feb 10 12:49:34 2019 New Revision: 343956 URL: https://svnweb.freebsd.org/changeset/base/343956 Log: Merge ^/head r343807 through r343955. Added: projects/clang800-import/sys/arm64/acpica/acpi_iort.c - copied unchanged from r343955, head/sys/arm64/acpica/acpi_iort.c Deleted: projects/clang800-import/sys/dev/usb/controller/ohci_s3c24x0.c Modified: projects/clang800-import/UPDATING projects/clang800-import/contrib/netbsd-tests/lib/libm/t_cbrt.c projects/clang800-import/etc/mtree/BSD.root.dist projects/clang800-import/lib/libc/stdio/fgetln.c projects/clang800-import/lib/libc/sys/getsockopt.2 projects/clang800-import/lib/libc/x86/sys/__vdso_gettc.c projects/clang800-import/lib/libcasper/services/cap_syslog/cap_syslog.c projects/clang800-import/lib/libutil/quotafile.c projects/clang800-import/lib/msun/src/e_j0.c projects/clang800-import/lib/msun/src/e_j0f.c projects/clang800-import/lib/msun/src/e_j1.c projects/clang800-import/lib/msun/src/e_j1f.c projects/clang800-import/lib/msun/src/e_jn.c projects/clang800-import/lib/msun/tests/trig_test.c projects/clang800-import/libexec/rc/rc.d/growfs projects/clang800-import/libexec/talkd/extern.h projects/clang800-import/sbin/dhclient/dhclient.c projects/clang800-import/sbin/ipfw/tables.c projects/clang800-import/sbin/recoverdisk/recoverdisk.c projects/clang800-import/sbin/sysctl/sysctl.8 projects/clang800-import/share/man/man4/ng_iface.4 projects/clang800-import/share/man/man9/bus_space.9 projects/clang800-import/share/man/man9/config_intrhook.9 projects/clang800-import/share/man/man9/pwm.9 projects/clang800-import/share/misc/bsd-family-tree projects/clang800-import/share/misc/committers-ports.dot projects/clang800-import/share/misc/committers-src.dot projects/clang800-import/share/mk/bsd.cpu.mk projects/clang800-import/share/mk/src.opts.mk projects/clang800-import/share/mk/suite.test.mk projects/clang800-import/stand/efi/libefi/efienv.c projects/clang800-import/sys/amd64/conf/GENERIC projects/clang800-import/sys/amd64/conf/NOTES projects/clang800-import/sys/arm/allwinner/axp81x.c projects/clang800-import/sys/arm64/arm64/cpufunc_asm.S projects/clang800-import/sys/arm64/arm64/gic_v3_acpi.c projects/clang800-import/sys/arm64/arm64/gic_v3_var.h projects/clang800-import/sys/arm64/arm64/gicv3_its.c projects/clang800-import/sys/arm64/arm64/pmap.c projects/clang800-import/sys/arm64/conf/GENERIC projects/clang800-import/sys/cam/ata/ata_da.c projects/clang800-import/sys/cam/scsi/scsi_da.c projects/clang800-import/sys/compat/freebsd32/freebsd32_misc.c projects/clang800-import/sys/conf/files.arm64 projects/clang800-import/sys/conf/options projects/clang800-import/sys/ddb/db_ps.c projects/clang800-import/sys/dev/acpica/acpivar.h projects/clang800-import/sys/dev/cardbus/cardbus.c projects/clang800-import/sys/dev/cxgbe/adapter.h projects/clang800-import/sys/dev/cxgbe/common/t4_hw.c projects/clang800-import/sys/dev/cxgbe/t4_main.c projects/clang800-import/sys/dev/cxgbe/t4_vf.c projects/clang800-import/sys/dev/e1000/if_em.c projects/clang800-import/sys/dev/e1000/if_em.h projects/clang800-import/sys/dev/flash/mx25l.c projects/clang800-import/sys/dev/flash/n25q.c projects/clang800-import/sys/dev/iwn/if_iwn.c projects/clang800-import/sys/dev/mmc/bridge.h projects/clang800-import/sys/dev/mmc/mmc.c projects/clang800-import/sys/dev/mmc/mmc_private.h projects/clang800-import/sys/dev/mmc/mmc_subr.c projects/clang800-import/sys/dev/mmc/mmc_subr.h projects/clang800-import/sys/dev/mmc/mmcbrvar.h projects/clang800-import/sys/dev/mmc/mmcreg.h projects/clang800-import/sys/dev/mmc/mmcsd.c projects/clang800-import/sys/dev/mmc/mmcvar.h projects/clang800-import/sys/dev/netmap/netmap.c projects/clang800-import/sys/dev/pccbb/pccbbdevid.h projects/clang800-import/sys/dev/pci/pci_host_generic_acpi.c projects/clang800-import/sys/dev/pms/freebsd/driver/common/lxutil.c projects/clang800-import/sys/dev/puc/puc_pci.c projects/clang800-import/sys/dev/sio/sio_isa.c projects/clang800-import/sys/dev/sio/sio_pccard.c projects/clang800-import/sys/dev/sio/sio_pci.c projects/clang800-import/sys/dev/sio/sio_puc.c projects/clang800-import/sys/dev/uart/uart_bus_acpi.c projects/clang800-import/sys/dev/uart/uart_bus_pccard.c projects/clang800-import/sys/dev/uart/uart_bus_puc.c projects/clang800-import/sys/dev/usb/controller/generic_ohci.c projects/clang800-import/sys/dev/usb/net/if_ure.c projects/clang800-import/sys/dev/usb/usbdevs projects/clang800-import/sys/dev/wi/if_wivar.h projects/clang800-import/sys/dts/arm/tegra124-jetson-tk1-fbsd.dts projects/clang800-import/sys/fs/nullfs/null_vfsops.c projects/clang800-import/sys/fs/nullfs/null_vnops.c projects/clang800-import/sys/i386/acpica/acpi_wakecode.S projects/clang800-import/sys/i386/conf/NOTES projects/clang800-import/sys/i386/i386/pmap.c projects/clang800-import/sys/i386/i386/pmap_base.c projects/clang800-import/sys/kern/imgact_elf.c projects/clang800-import/sys/kern/kern_exec.c projects/clang800-import/sys/kern/kern_kcov.c projects/clang800-import/sys/kern/vfs_lookup.c projects/clang800-import/sys/kern/vfs_syscalls.c projects/clang800-import/sys/mips/include/elf.h projects/clang800-import/sys/modules/dtb/allwinner/Makefile projects/clang800-import/sys/net80211/ieee80211_ioctl.c projects/clang800-import/sys/netgraph/ng_iface.c projects/clang800-import/sys/netgraph/ng_ipfw.c projects/clang800-import/sys/netinet/cc/cc_cdg.c projects/clang800-import/sys/netinet/sctp_usrreq.c projects/clang800-import/sys/powerpc/include/openpicvar.h projects/clang800-import/sys/powerpc/ofw/openpic_ofw.c projects/clang800-import/sys/powerpc/powerpc/cpu.c projects/clang800-import/sys/powerpc/powerpc/mem.c projects/clang800-import/sys/powerpc/powerpc/openpic.c projects/clang800-import/sys/riscv/riscv/elf_machdep.c projects/clang800-import/sys/sys/namei.h projects/clang800-import/sys/sys/sysent.h projects/clang800-import/sys/vm/uma_core.c projects/clang800-import/sys/vm/uma_int.h projects/clang800-import/sys/vm/vm_kern.c projects/clang800-import/sys/vm/vm_mmap.c projects/clang800-import/sys/vm/vm_unix.c projects/clang800-import/sys/x86/acpica/acpi_wakeup.c projects/clang800-import/sys/x86/include/x86_var.h projects/clang800-import/tools/build/mk/OptionalObsoleteFiles.inc projects/clang800-import/tools/build/options/WITH_CLANG_EXTRAS projects/clang800-import/usr.bin/calendar/calendars/calendar.freebsd projects/clang800-import/usr.bin/ipcs/ipcs.c projects/clang800-import/usr.bin/newkey/update.c projects/clang800-import/usr.bin/vtfontcvt/vtfontcvt.c projects/clang800-import/usr.sbin/bluetooth/sdpd/ssar.c projects/clang800-import/usr.sbin/dumpcis/main.c projects/clang800-import/usr.sbin/newsyslog/newsyslog.c projects/clang800-import/usr.sbin/pw/pw.8 projects/clang800-import/usr.sbin/pwm/pwm.8 Directory Properties: projects/clang800-import/ (props changed) projects/clang800-import/contrib/llvm/ (props changed) projects/clang800-import/contrib/netbsd-tests/ (props changed) Modified: projects/clang800-import/UPDATING ============================================================================== --- projects/clang800-import/UPDATING Sun Feb 10 12:45:33 2019 (r343955) +++ projects/clang800-import/UPDATING Sun Feb 10 12:49:34 2019 (r343956) @@ -1942,7 +1942,7 @@ to fetch an UPDATING file from an older FreeBSD releas Copyright information: -Copyright 1998-2009 M. Warner Losh. All Rights Reserved. +Copyright 1998-2009 M. Warner Losh. Redistribution, publication, translation and use, with or without modification, in full or in part, in any form or format of this Modified: projects/clang800-import/contrib/netbsd-tests/lib/libm/t_cbrt.c ============================================================================== --- projects/clang800-import/contrib/netbsd-tests/lib/libm/t_cbrt.c Sun Feb 10 12:45:33 2019 (r343955) +++ projects/clang800-import/contrib/netbsd-tests/lib/libm/t_cbrt.c Sun Feb 10 12:49:34 2019 (r343956) @@ -268,7 +268,8 @@ ATF_TC_BODY(cbrtl_powl, tc) long double y, z; size_t i; -#if defined(__amd64__) && defined(__clang__) && __clang_major__ >= 7 +#if defined(__amd64__) && defined(__clang__) && __clang_major__ >= 7 && \ + __FreeBSD_cc_version < 1300002 atf_tc_expect_fail("test fails with clang 7+ - bug 234040"); #endif Modified: projects/clang800-import/etc/mtree/BSD.root.dist ============================================================================== --- projects/clang800-import/etc/mtree/BSD.root.dist Sun Feb 10 12:45:33 2019 (r343955) +++ projects/clang800-import/etc/mtree/BSD.root.dist Sun Feb 10 12:49:34 2019 (r343956) @@ -11,7 +11,11 @@ defaults .. dtb + allwinner tags=package=runtime + .. overlays tags=package=runtime + .. + rockchip tags=package=runtime .. .. firmware Modified: projects/clang800-import/lib/libc/stdio/fgetln.c ============================================================================== --- projects/clang800-import/lib/libc/stdio/fgetln.c Sun Feb 10 12:45:33 2019 (r343955) +++ projects/clang800-import/lib/libc/stdio/fgetln.c Sun Feb 10 12:49:34 2019 (r343956) @@ -50,19 +50,12 @@ __FBSDID("$FreeBSD$"); /* * Expand the line buffer. Return -1 on error. -#ifdef notdef - * The `new size' does not account for a terminating '\0', - * so we add 1 here. -#endif */ int __slbexpand(FILE *fp, size_t newsize) { void *p; -#ifdef notdef - ++newsize; -#endif if (fp->_lb._size >= newsize) return (0); if (newsize > INT_MAX) { @@ -160,9 +153,6 @@ fgetln(FILE *fp, size_t *lenp) break; } *lenp = len; -#ifdef notdef - fp->_lb._base[len] = '\0'; -#endif ret = (char *)fp->_lb._base; end: FUNLOCKFILE_CANCELSAFE(); Modified: projects/clang800-import/lib/libc/sys/getsockopt.2 ============================================================================== --- projects/clang800-import/lib/libc/sys/getsockopt.2 Sun Feb 10 12:45:33 2019 (r343955) +++ projects/clang800-import/lib/libc/sys/getsockopt.2 Sun Feb 10 12:49:34 2019 (r343956) @@ -28,7 +28,7 @@ .\" @(#)getsockopt.2 8.4 (Berkeley) 5/2/95 .\" $FreeBSD$ .\" -.Dd August 21, 2018 +.Dd February 10, 2019 .Dt GETSOCKOPT 2 .Os .Sh NAME @@ -534,7 +534,11 @@ transfer rate to the given unsigned 32-bit value in by .Sh RETURN VALUES .Rv -std .Sh ERRORS -The call succeeds unless: +The +.Fn getsockopt +and +.Fn setsockopt +system calls succeed unless: .Bl -tag -width Er .It Bq Er EBADF The argument @@ -561,6 +565,15 @@ Installing an on a non-listening socket was attempted. .It Bq Er ENOMEM A memory allocation failed that was required to service the request. +.El +.Pp +The +.Fn setsockopt +system call may also return the following error: +.Bl -tag -width Er +.It Bq Er ENOBUFS +Insufficient resources were available in the system +to perform the operation. .El .Sh SEE ALSO .Xr ioctl 2 , Modified: projects/clang800-import/lib/libc/x86/sys/__vdso_gettc.c ============================================================================== --- projects/clang800-import/lib/libc/x86/sys/__vdso_gettc.c Sun Feb 10 12:45:33 2019 (r343955) +++ projects/clang800-import/lib/libc/x86/sys/__vdso_gettc.c Sun Feb 10 12:49:34 2019 (r343956) @@ -1,6 +1,6 @@ /*- * Copyright (c) 2012 Konstantin Belousov - * Copyright (c) 2016, 2017 The FreeBSD Foundation + * Copyright (c) 2016, 2017, 2019 The FreeBSD Foundation * All rights reserved. * * Portions of this software were developed by Konstantin Belousov @@ -50,15 +50,9 @@ __FBSDID("$FreeBSD$"); #ifdef WANT_HYPERV #include #endif +#include #include "libc_private.h" -static enum LMB { - LMB_UNKNOWN, - LMB_NONE, - LMB_MFENCE, - LMB_LFENCE -} lfence_works = LMB_UNKNOWN; - static void cpuidp(u_int leaf, u_int p[4]) { @@ -84,68 +78,36 @@ cpuidp(u_int leaf, u_int p[4]) : "0" (leaf)); } -static enum LMB -select_lmb(void) +static void +rdtsc_mb_lfence(void) { - u_int p[4]; - static const char intel_id[] = "GenuntelineI"; - cpuidp(0, p); - return (memcmp(p + 1, intel_id, sizeof(intel_id) - 1) == 0 ? - LMB_LFENCE : LMB_MFENCE); + lfence(); } static void -init_fence(void) +rdtsc_mb_mfence(void) { -#if defined(__i386__) - u_int cpuid_supported, p[4]; - lfence_works = LMB_NONE; - __asm __volatile( - " pushfl\n" - " popl %%eax\n" - " movl %%eax,%%ecx\n" - " xorl $0x200000,%%eax\n" - " pushl %%eax\n" - " popfl\n" - " pushfl\n" - " popl %%eax\n" - " xorl %%eax,%%ecx\n" - " je 1f\n" - " movl $1,%0\n" - " jmp 2f\n" - "1: movl $0,%0\n" - "2:\n" - : "=r" (cpuid_supported) : : "eax", "ecx", "cc"); - if (cpuid_supported) { - cpuidp(0x1, p); - if ((p[3] & CPUID_SSE2) != 0) - lfence_works = select_lmb(); - } -#elif defined(__amd64__) - lfence_works = select_lmb(); -#else -#error "Arch" -#endif + mfence(); } static void -rdtsc_mb(void) +rdtsc_mb_none(void) { +} -again: - if (__predict_true(lfence_works == LMB_LFENCE)) { - lfence(); - return; - } else if (lfence_works == LMB_MFENCE) { - mfence(); - return; - } else if (lfence_works == LMB_NONE) { - return; - } - init_fence(); - goto again; +DEFINE_UIFUNC(static, void, rdtsc_mb, (void), static) +{ + u_int p[4]; + /* Not a typo, string matches our cpuidp() registers use. */ + static const char intel_id[] = "GenuntelineI"; + + if ((cpu_feature & CPUID_SSE2) == 0) + return (rdtsc_mb_none); + cpuidp(0, p); + return (memcmp(p + 1, intel_id, sizeof(intel_id) - 1) == 0 ? + rdtsc_mb_lfence : rdtsc_mb_mfence); } static u_int Modified: projects/clang800-import/lib/libcasper/services/cap_syslog/cap_syslog.c ============================================================================== --- projects/clang800-import/lib/libcasper/services/cap_syslog/cap_syslog.c Sun Feb 10 12:45:33 2019 (r343955) +++ projects/clang800-import/lib/libcasper/services/cap_syslog/cap_syslog.c Sun Feb 10 12:49:34 2019 (r343956) @@ -88,6 +88,9 @@ cap_openlog(cap_channel_t *chan, const char *ident, in } nvlist_add_number(nvl, "logopt", logopt); nvlist_add_number(nvl, "facility", facility); + if (logopt & LOG_PERROR) { + nvlist_add_descriptor(nvl, "stderr", STDERR_FILENO); + } nvl = cap_xfer_nvlist(chan, nvl); if (nvl == NULL) { return; @@ -131,6 +134,7 @@ cap_setlogmask(cap_channel_t *chan, int maskpri) */ static char *LogTag; +static int prev_stderr = -1; static void slog_vsyslog(const nvlist_t *limits __unused, const nvlist_t *nvlin, @@ -146,6 +150,8 @@ slog_openlog(const nvlist_t *limits __unused, const nv nvlist_t *nvlout __unused) { const char *ident; + uint64_t logopt; + int stderr_fd; ident = dnvlist_get_string(nvlin, "ident", NULL); if (ident != NULL) { @@ -153,8 +159,19 @@ slog_openlog(const nvlist_t *limits __unused, const nv LogTag = strdup(ident); } - openlog(LogTag, nvlist_get_number(nvlin, "logopt"), - nvlist_get_number(nvlin, "facility")); + logopt = nvlist_get_number(nvlin, "logopt"); + if (logopt & LOG_PERROR) { + stderr_fd = dnvlist_get_descriptor(nvlin, "stderr", -1); + if (prev_stderr == -1) + prev_stderr = dup(STDERR_FILENO); + if (prev_stderr != -1) + (void)dup2(stderr_fd, STDERR_FILENO); + } else if (prev_stderr != -1) { + (void)dup2(prev_stderr, STDERR_FILENO); + close(prev_stderr); + prev_stderr = -1; + } + openlog(LogTag, logopt, nvlist_get_number(nvlin, "facility")); } static void @@ -166,6 +183,12 @@ slog_closelog(const nvlist_t *limits __unused, const n free(LogTag); LogTag = NULL; + + if (prev_stderr != -1) { + (void)dup2(prev_stderr, STDERR_FILENO); + close(prev_stderr); + prev_stderr = -1; + } } static void @@ -198,4 +221,4 @@ syslog_command(const char *cmd, const nvlist_t *limits return (0); } -CREATE_SERVICE("system.syslog", NULL, syslog_command, CASPER_SERVICE_STDIO); +CREATE_SERVICE("system.syslog", NULL, syslog_command, 0); Modified: projects/clang800-import/lib/libutil/quotafile.c ============================================================================== --- projects/clang800-import/lib/libutil/quotafile.c Sun Feb 10 12:45:33 2019 (r343955) +++ projects/clang800-import/lib/libutil/quotafile.c Sun Feb 10 12:49:34 2019 (r343956) @@ -118,7 +118,8 @@ quota_open(struct fstab *fs, int quotatype, int openfl struct dqhdr64 dqh; struct group *grp; struct stat st; - int qcmd, serrno; + int qcmd, serrno = 0; + int ufs; if ((qf = calloc(1, sizeof(*qf))) == NULL) return (NULL); @@ -129,15 +130,21 @@ quota_open(struct fstab *fs, int quotatype, int openfl goto error; qf->dev = st.st_dev; qcmd = QCMD(Q_GETQUOTASIZE, quotatype); + ufs = strcmp(fs->fs_vfstype, "ufs") == 0; + /* + * On UFS, hasquota() fills in qf->qfname. But we only care about + * this for UFS. So we need to call hasquota() for UFS, first. + */ + if (ufs) { + serrno = hasquota(fs, quotatype, qf->qfname, + sizeof(qf->qfname)); + } if (quotactl(qf->fsname, qcmd, 0, &qf->wordsize) == 0) return (qf); - /* We only check the quota file for ufs */ - if (strcmp(fs->fs_vfstype, "ufs")) { + if (!ufs) { errno = 0; goto error; - } - serrno = hasquota(fs, quotatype, qf->qfname, sizeof(qf->qfname)); - if (serrno == 0) { + } else if (serrno == 0) { errno = EOPNOTSUPP; goto error; } Modified: projects/clang800-import/lib/msun/src/e_j0.c ============================================================================== --- projects/clang800-import/lib/msun/src/e_j0.c Sun Feb 10 12:45:33 2019 (r343955) +++ projects/clang800-import/lib/msun/src/e_j0.c Sun Feb 10 12:49:34 2019 (r343956) @@ -93,8 +93,7 @@ __ieee754_j0(double x) if(ix>=0x7ff00000) return one/(x*x); x = fabs(x); if(ix >= 0x40000000) { /* |x| >= 2.0 */ - s = sin(x); - c = cos(x); + sincos(x, &s, &c); ss = s-c; cc = s+c; if(ix<0x7fe00000) { /* Make sure x+x does not overflow. */ @@ -173,8 +172,7 @@ __ieee754_y0(double x) * sin(x) +- cos(x) = -cos(2x)/(sin(x) -+ cos(x)) * to compute the worse one. */ - s = sin(x); - c = cos(x); + sincos(x, &s, &c); ss = s-c; cc = s+c; /* Modified: projects/clang800-import/lib/msun/src/e_j0f.c ============================================================================== --- projects/clang800-import/lib/msun/src/e_j0f.c Sun Feb 10 12:45:33 2019 (r343955) +++ projects/clang800-import/lib/msun/src/e_j0f.c Sun Feb 10 12:49:34 2019 (r343956) @@ -55,8 +55,7 @@ __ieee754_j0f(float x) if(ix>=0x7f800000) return one/(x*x); x = fabsf(x); if(ix >= 0x40000000) { /* |x| >= 2.0 */ - s = sinf(x); - c = cosf(x); + sincosf(x, &s, &c); ss = s-c; cc = s+c; if(ix<0x7f000000) { /* Make sure x+x does not overflow. */ @@ -128,8 +127,7 @@ __ieee754_y0f(float x) * sin(x) +- cos(x) = -cos(2x)/(sin(x) -+ cos(x)) * to compute the worse one. */ - s = sinf(x); - c = cosf(x); + sincosf(x, &s, &c); ss = s-c; cc = s+c; /* Modified: projects/clang800-import/lib/msun/src/e_j1.c ============================================================================== --- projects/clang800-import/lib/msun/src/e_j1.c Sun Feb 10 12:45:33 2019 (r343955) +++ projects/clang800-import/lib/msun/src/e_j1.c Sun Feb 10 12:49:34 2019 (r343956) @@ -94,8 +94,7 @@ __ieee754_j1(double x) if(ix>=0x7ff00000) return one/x; y = fabs(x); if(ix >= 0x40000000) { /* |x| >= 2.0 */ - s = sin(y); - c = cos(y); + sincos(y, &s, &c); ss = -s-c; cc = s-c; if(ix<0x7fe00000) { /* make sure y+y not overflow */ @@ -159,8 +158,7 @@ __ieee754_y1(double x) /* y1(x<0) = NaN and raise invalid exception. */ if(hx<0) return vzero/vzero; if(ix >= 0x40000000) { /* |x| >= 2.0 */ - s = sin(x); - c = cos(x); + sincos(x, &s, &c); ss = -s-c; cc = s-c; if(ix<0x7fe00000) { /* make sure x+x not overflow */ Modified: projects/clang800-import/lib/msun/src/e_j1f.c ============================================================================== --- projects/clang800-import/lib/msun/src/e_j1f.c Sun Feb 10 12:45:33 2019 (r343955) +++ projects/clang800-import/lib/msun/src/e_j1f.c Sun Feb 10 12:49:34 2019 (r343956) @@ -56,8 +56,7 @@ __ieee754_j1f(float x) if(ix>=0x7f800000) return one/x; y = fabsf(x); if(ix >= 0x40000000) { /* |x| >= 2.0 */ - s = sinf(y); - c = cosf(y); + sincosf(y, &s, &c); ss = -s-c; cc = s-c; if(ix<0x7f000000) { /* make sure y+y not overflow */ @@ -114,8 +113,7 @@ __ieee754_y1f(float x) if(ix==0) return -one/vzero; if(hx<0) return vzero/vzero; if(ix >= 0x40000000) { /* |x| >= 2.0 */ - s = sinf(x); - c = cosf(x); + sincosf(x, &s, &c); ss = -s-c; cc = s-c; if(ix<0x7f000000) { /* make sure x+x not overflow */ Modified: projects/clang800-import/lib/msun/src/e_jn.c ============================================================================== --- projects/clang800-import/lib/msun/src/e_jn.c Sun Feb 10 12:45:33 2019 (r343955) +++ projects/clang800-import/lib/msun/src/e_jn.c Sun Feb 10 12:49:34 2019 (r343956) @@ -54,7 +54,7 @@ double __ieee754_jn(int n, double x) { int32_t i,hx,ix,lx, sgn; - double a, b, temp, di; + double a, b, c, s, temp, di; double z, w; /* J(-n,x) = (-1)^n * J(n, x), J(n, -x) = (-1)^n * J(n, x) @@ -91,11 +91,12 @@ __ieee754_jn(int n, double x) * 2 -s+c -c-s * 3 s+c c-s */ + sincos(x, &s, &c); switch(n&3) { - case 0: temp = cos(x)+sin(x); break; - case 1: temp = -cos(x)+sin(x); break; - case 2: temp = -cos(x)-sin(x); break; - case 3: temp = cos(x)-sin(x); break; + case 0: temp = c+s; break; + case 1: temp = -c+s; break; + case 2: temp = -c-s; break; + case 3: temp = c-s; break; } b = invsqrtpi*temp/sqrt(x); } else { @@ -216,7 +217,7 @@ __ieee754_yn(int n, double x) { int32_t i,hx,ix,lx; int32_t sign; - double a, b, temp; + double a, b, c, s, temp; EXTRACT_WORDS(hx,lx,x); ix = 0x7fffffff&hx; @@ -248,11 +249,12 @@ __ieee754_yn(int n, double x) * 2 -s+c -c-s * 3 s+c c-s */ + sincos(x, &s, &c); switch(n&3) { - case 0: temp = sin(x)-cos(x); break; - case 1: temp = -sin(x)-cos(x); break; - case 2: temp = -sin(x)+cos(x); break; - case 3: temp = sin(x)+cos(x); break; + case 0: temp = s-c; break; + case 1: temp = -s-c; break; + case 2: temp = -s+c; break; + case 3: temp = s+c; break; } b = invsqrtpi*temp/sqrt(x); } else { Modified: projects/clang800-import/lib/msun/tests/trig_test.c ============================================================================== --- projects/clang800-import/lib/msun/tests/trig_test.c Sun Feb 10 12:45:33 2019 (r343955) +++ projects/clang800-import/lib/msun/tests/trig_test.c Sun Feb 10 12:49:34 2019 (r343956) @@ -160,7 +160,8 @@ ATF_TC_BODY(reduction, tc) unsigned i; -#if defined(__amd64__) && defined(__clang__) && __clang_major__ >= 7 +#if defined(__amd64__) && defined(__clang__) && __clang_major__ >= 7 && \ + __FreeBSD_cc_version < 1300002 atf_tc_expect_fail("test fails with clang 7+ - bug 234040"); #endif Modified: projects/clang800-import/libexec/rc/rc.d/growfs ============================================================================== --- projects/clang800-import/libexec/rc/rc.d/growfs Sun Feb 10 12:45:33 2019 (r343955) +++ projects/clang800-import/libexec/rc/rc.d/growfs Sun Feb 10 12:49:34 2019 (r343956) @@ -49,7 +49,20 @@ rcvar="growfs_enable" growfs_start () { echo "Growing root partition to fill device" - rootdev=$(df / | tail -n 1 | awk '{ sub("/dev/", "", $1); print $1 }') + FSTYPE=$(mount -p | awk '{ if ( $2 == "/") { print $3 }}') + FSDEV=$(mount -p | awk '{ if ( $2 == "/") { print $1 }}') + case "$FSTYPE" in + ufs) + rootdev=${FSDEV#/dev/} + ;; + zfs) + pool=${FSDEV%%/*} + rootdev=$(zpool list -v $pool | tail -n 1 | awk '{ print $1 }') + ;; + *) + echo "Don't know how to grow root filesystem type: $FSTYPE" + return + esac if [ x"$rootdev" = x"${rootdev%/*}" ]; then # raw device rawdev="$rootdev" @@ -91,7 +104,14 @@ growfs_start () } }' dev="$rawdev" gpart commit "$rootdev" - growfs -y /dev/"$rootdev" + case "$FSTYPE" in + ufs) + growfs -y /dev/"$rootdev" + ;; + zfs) + zpool online -e $pool $rootdev + ;; + esac } load_rc_config $name Modified: projects/clang800-import/libexec/talkd/extern.h ============================================================================== --- projects/clang800-import/libexec/talkd/extern.h Sun Feb 10 12:45:33 2019 (r343955) +++ projects/clang800-import/libexec/talkd/extern.h Sun Feb 10 12:49:34 2019 (r343956) @@ -1,7 +1,7 @@ /*- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD * - * Copyright (c) 2002 M. Warner Losh. All rights reserved. + * Copyright (c) 2002 M. Warner Losh. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions Modified: projects/clang800-import/sbin/dhclient/dhclient.c ============================================================================== --- projects/clang800-import/sbin/dhclient/dhclient.c Sun Feb 10 12:45:33 2019 (r343955) +++ projects/clang800-import/sbin/dhclient/dhclient.c Sun Feb 10 12:49:34 2019 (r343956) @@ -2348,7 +2348,8 @@ priv_script_go(void) if (ip) script_flush_env(ip->client); - return (wstatus & 0xff); + return (WIFEXITED(wstatus) ? + WEXITSTATUS(wstatus) : 128 + WTERMSIG(wstatus)); } void Modified: projects/clang800-import/sbin/ipfw/tables.c ============================================================================== --- projects/clang800-import/sbin/ipfw/tables.c Sun Feb 10 12:45:33 2019 (r343955) +++ projects/clang800-import/sbin/ipfw/tables.c Sun Feb 10 12:49:34 2019 (r343956) @@ -282,13 +282,14 @@ ipfw_table_handler(int ac, char *av[]) } break; case TOK_LIST: + arg = is_all ? (void*)1 : NULL; if (is_all == 0) { ipfw_xtable_info i; if ((error = table_get_info(&oh, &i)) != 0) err(EX_OSERR, "failed to request table info"); - table_show_one(&i, NULL); + table_show_one(&i, arg); } else { - error = tables_foreach(table_show_one, NULL, 1); + error = tables_foreach(table_show_one, arg, 1); if (error != 0) err(EX_OSERR, "failed to request tables list"); } @@ -821,13 +822,16 @@ table_show_one(ipfw_xtable_info *i, void *arg) { ipfw_obj_header *oh; int error; + int is_all; + is_all = arg == NULL ? 0 : 1; + if ((error = table_do_get_list(i, &oh)) != 0) { err(EX_OSERR, "Error requesting table %s list", i->tablename); return (error); } - table_show_list(oh, 1); + table_show_list(oh, is_all); free(oh); return (0); Modified: projects/clang800-import/sbin/recoverdisk/recoverdisk.c ============================================================================== --- projects/clang800-import/sbin/recoverdisk/recoverdisk.c Sun Feb 10 12:45:33 2019 (r343955) +++ projects/clang800-import/sbin/recoverdisk/recoverdisk.c Sun Feb 10 12:49:34 2019 (r343956) @@ -125,6 +125,7 @@ read_worklist(off_t t) new_lump(s, l, state); d -= l; } + fclose(file); (void)fprintf(stderr, " done.\n"); /* * Return the number of bytes already read Modified: projects/clang800-import/sbin/sysctl/sysctl.8 ============================================================================== --- projects/clang800-import/sbin/sysctl/sysctl.8 Sun Feb 10 12:45:33 2019 (r343955) +++ projects/clang800-import/sbin/sysctl/sysctl.8 Sun Feb 10 12:49:34 2019 (r343956) @@ -28,7 +28,7 @@ .\" From: @(#)sysctl.8 8.1 (Berkeley) 6/6/93 .\" $FreeBSD$ .\" -.Dd September 24, 2018 +.Dd February 8, 2019 .Dt SYSCTL 8 .Os .Sh NAME @@ -36,13 +36,13 @@ .Nd get or set kernel state .Sh SYNOPSIS .Nm -.Op Fl bdehiNnoRTtqx +.Op Fl bdehiNnoTtqWx .Op Fl B Ar bufsize .Op Fl f Ar filename .Ar name Ns Op = Ns Ar value Ns Op , Ns Ar value .Ar ... .Nm -.Op Fl bdehNnoRTtqx +.Op Fl bdehNnoTtqWx .Op Fl B Ar bufsize .Fl a .Sh DESCRIPTION Modified: projects/clang800-import/share/man/man4/ng_iface.4 ============================================================================== --- projects/clang800-import/share/man/man4/ng_iface.4 Sun Feb 10 12:45:33 2019 (r343955) +++ projects/clang800-import/share/man/man4/ng_iface.4 Sun Feb 10 12:49:34 2019 (r343956) @@ -35,7 +35,7 @@ .\" $FreeBSD$ .\" $Whistle: ng_iface.8,v 1.5 1999/01/25 23:46:26 archie Exp $ .\" -.Dd January 12, 2015 +.Dd February 6, 2019 .Dt NG_IFACE 4 .Os .Sh NAME @@ -144,6 +144,17 @@ In case when your graph ends up with some kind of seri synchronous or modem, the .Nm is the right place to turn ALTQ on. +.Sh Nesting +.Nm +supports nesting, a configuration when traffic of one +.Nm +interface flows through the other. +The default maximum allowed nesting level is 2. +It can be changed at runtime setting +.Xr sysctl 8 +variable +.Va net.graph.iface.max_nesting +to the desired level of nesting. .Sh SEE ALSO .Xr altq 4 , .Xr bpf 4 , @@ -151,6 +162,7 @@ is the right place to turn ALTQ on. .Xr ng_cisco 4 , .Xr ifconfig 8 , .Xr ngctl 8 +.Xr sysctl .Sh HISTORY The .Nm iface Modified: projects/clang800-import/share/man/man9/bus_space.9 ============================================================================== --- projects/clang800-import/share/man/man9/bus_space.9 Sun Feb 10 12:45:33 2019 (r343955) +++ projects/clang800-import/share/man/man9/bus_space.9 Sun Feb 10 12:49:34 2019 (r343956) @@ -1,6 +1,7 @@ .\" $NetBSD: bus_space.9,v 1.9 1999/03/06 22:09:29 mycroft Exp $ .\" -.\" Copyright (c) 2005 M. Warner Losh. All Rights Reserved. +.\" Copyright (c) 2005 M. Warner Losh. +.\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: Modified: projects/clang800-import/share/man/man9/config_intrhook.9 ============================================================================== --- projects/clang800-import/share/man/man9/config_intrhook.9 Sun Feb 10 12:45:33 2019 (r343955) +++ projects/clang800-import/share/man/man9/config_intrhook.9 Sun Feb 10 12:49:34 2019 (r343956) @@ -1,5 +1,5 @@ .\" -.\" Copyright (C) 2006 M. Warner Losh . All rights reserved. +.\" Copyright (C) 2006 M. Warner Losh . .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions Modified: projects/clang800-import/share/man/man9/pwm.9 ============================================================================== --- projects/clang800-import/share/man/man9/pwm.9 Sun Feb 10 12:45:33 2019 (r343955) +++ projects/clang800-import/share/man/man9/pwm.9 Sun Feb 10 12:49:34 2019 (r343956) @@ -22,7 +22,7 @@ .\" .\" $FreeBSD$ .\" -.Dd November 12, 2018 +.Dd January 12, 2019 .Dt PWM 9 .Os .Sh NAME @@ -79,7 +79,7 @@ Get the current flags for the channel. Enable the PWM channel. .It Fn PWM_CHANNEL_ISENABLED "device_t dev" "int channel" "bool *enable" Test if the PWM channel is enabled. -.It PWM_CHANNEL_MAX "device_t dev" "int channel" "int *nchannel" +.It Fn PWM_CHANNEL_MAX "device_t dev" "int channel" "int *nchannel" Get the maximum number of channels supported by the controller. .El .Sh HISTORY Modified: projects/clang800-import/share/misc/bsd-family-tree ============================================================================== --- projects/clang800-import/share/misc/bsd-family-tree Sun Feb 10 12:45:33 2019 (r343955) +++ projects/clang800-import/share/misc/bsd-family-tree Sun Feb 10 12:49:34 2019 (r343956) @@ -374,8 +374,8 @@ FreeBSD 5.2 | | | | | | | | | | | | | | | | DragonFly 5.2.2 | FreeBSD | | NetBSD 7.2 | | - | 11.2 | | | | | - | | | | OpenBSD 6.4 | + | 11.2 macOS | | | | + | 10.14 | | OpenBSD 6.4 | | | | | | DragonFly 5.4.0 *--FreeBSD | | v | | | 12.0 | | | DragonFly 5.4.1 @@ -756,6 +756,7 @@ DragonFly 5.2.2 2018-06-18 [DFB] FreeBSD 11.2 2018-06-27 [FBD] NetBSD 8.0 2018-07-17 [NBD] NetBSD 7.2 2018-08-29 [NBD] +macOS 10.14 2018-09-24 [APL] OpenBSD 6.4 2018-10-18 [OBD] DragonFly 5.4.0 2018-12-03 [DFB] FreeBSD 12.0 2018-12-11 [FBD] Modified: projects/clang800-import/share/misc/committers-ports.dot ============================================================================== --- projects/clang800-import/share/misc/committers-ports.dot Sun Feb 10 12:45:33 2019 (r343955) +++ projects/clang800-import/share/misc/committers-ports.dot Sun Feb 10 12:49:34 2019 (r343956) @@ -150,6 +150,7 @@ jsa [label="Joseph S. Atkinson\njsa@FreeBSD.org\n2010/ jsm [label="Jesper Schmitz Mouridsen\njsm@FreeBSD.org\n2018/06/30"] junovitch [label="Jason Unovitch\njunovitch@FreeBSD.org\n2015/07/27"] jylefort [label="Jean-Yves Lefort\njylefort@FreeBSD.org\n2005/04/12"] +kai [label="Kai Knoblich\nkai@FreeBSD.org\n2019/02/01"] kami [label="Dominic Fandrey\nkami@FreeBSD.org\n2014/09/09"] kbowling [label="Kevin Bowling\nkbowling@FreeBSD.org\n2018/09/02"] kevlo [label="Kevin Lo\nkevlo@FreeBSD.org\n2003/02/21"] @@ -476,6 +477,8 @@ jadawin -> wen joerg -> netchild +joneum -> kai + jrm -> dch jrm -> jwb @@ -573,6 +576,7 @@ miwi -> gahr miwi -> jhixson miwi -> joneum miwi -> jsm +miwi -> kai miwi -> kmoore miwi -> lme miwi -> makc @@ -714,6 +718,7 @@ tcberner -> yuri tcberner -> fernape tcberner -> arrowd tcberner -> rigoletto +tcberner -> kai thierry -> jadawin thierry -> riggs Modified: projects/clang800-import/share/misc/committers-src.dot ============================================================================== --- projects/clang800-import/share/misc/committers-src.dot Sun Feb 10 12:45:33 2019 (r343955) +++ projects/clang800-import/share/misc/committers-src.dot Sun Feb 10 12:49:34 2019 (r343956) @@ -216,6 +216,7 @@ jmcneill [label="Jared McNeill\njmcneill@FreeBSD.org\n jmg [label="John-Mark Gurney\njmg@FreeBSD.org\n1997/02/13"] jmmv [label="Julio Merino\njmmv@FreeBSD.org\n2013/11/02"] joerg [label="Joerg Wunsch\njoerg@FreeBSD.org\n1993/11/14"] +johalun [label="Johannes Lundberg\njohalun@FreeBSD.org\n2019/01/19"] jon [label="Jonathan Chen\njon@FreeBSD.org\n2000/10/17"] jonathan [label="Jonathan Anderson\njonathan@FreeBSD.org\n2010/10/07"] jpaetzel [label="Josh Paetzel\njpaetzel@FreeBSD.org\n2011/01/21"] @@ -558,6 +559,7 @@ imp -> dmlb imp -> emax imp -> furuta imp -> joe +imp -> johalun imp -> jon imp -> keichii imp -> kibab Modified: projects/clang800-import/share/mk/bsd.cpu.mk ============================================================================== --- projects/clang800-import/share/mk/bsd.cpu.mk Sun Feb 10 12:45:33 2019 (r343955) +++ projects/clang800-import/share/mk/bsd.cpu.mk Sun Feb 10 12:49:34 2019 (r343956) @@ -135,7 +135,7 @@ _CPUCFLAGS = -Wa,-me500 -msoft-float _CPUCFLAGS = -mcpu=${CPUTYPE} -mno-powerpc64 . endif . elif ${MACHINE_ARCH} == "powerpcspe" -_CPUCFLAGS = -Wa,-me500 -mspe=yes -mabi=spe -mfloat-gprs=double +_CPUCFLAGS = -Wa,-me500 -mspe=yes -mabi=spe -mfloat-gprs=double -mcpu=8548 . elif ${MACHINE_ARCH} == "powerpc64" _CPUCFLAGS = -mcpu=${CPUTYPE} . elif ${MACHINE_CPUARCH} == "mips" @@ -362,7 +362,7 @@ CFLAGS += -mfloat-abi=softfp .endif .if ${MACHINE_ARCH} == "powerpcspe" -CFLAGS += -mcpu=8540 -Wa,-me500 -mspe=yes -mabi=spe -mfloat-gprs=double +CFLAGS += -mcpu=8548 -Wa,-me500 -mspe=yes -mabi=spe -mfloat-gprs=double .endif .if ${MACHINE_CPUARCH} == "riscv" Modified: projects/clang800-import/share/mk/src.opts.mk ============================================================================== --- projects/clang800-import/share/mk/src.opts.mk Sun Feb 10 12:45:33 2019 (r343955) +++ projects/clang800-import/share/mk/src.opts.mk Sun Feb 10 12:49:34 2019 (r343956) @@ -83,7 +83,6 @@ __DEFAULT_YES_OPTIONS = \ CPP \ CROSS_COMPILER \ CRYPT \ - CTM \ CUSE \ CXX \ CXGBETOOL \ Modified: projects/clang800-import/share/mk/suite.test.mk ============================================================================== --- projects/clang800-import/share/mk/suite.test.mk Sun Feb 10 12:45:33 2019 (r343955) +++ projects/clang800-import/share/mk/suite.test.mk Sun Feb 10 12:49:34 2019 (r343956) @@ -120,5 +120,7 @@ beforecheck: # etc. aftercheck: @cd ${.CURDIR} && ${MAKE} clean + @chflags -R 0 "${DESTDIR}" + @rm -Rf "${DESTDIR}" .endif Modified: projects/clang800-import/stand/efi/libefi/efienv.c ============================================================================== --- projects/clang800-import/stand/efi/libefi/efienv.c Sun Feb 10 12:45:33 2019 (r343955) +++ projects/clang800-import/stand/efi/libefi/efienv.c Sun Feb 10 12:49:34 2019 (r343956) @@ -48,7 +48,7 @@ efi_getenv(EFI_GUID *g, const char *v, void *data, siz return (EFI_OUT_OF_RESOURCES); dl = *len; rv = RS->GetVariable(uv, g, &attr, &dl, data); - if (rv == EFI_SUCCESS) + if (rv == EFI_SUCCESS || rv == EFI_BUFFER_TOO_SMALL) *len = dl; free(uv); return (rv); Modified: projects/clang800-import/sys/amd64/conf/GENERIC ============================================================================== --- projects/clang800-import/sys/amd64/conf/GENERIC Sun Feb 10 12:45:33 2019 (r343955) +++ projects/clang800-import/sys/amd64/conf/GENERIC Sun Feb 10 12:49:34 2019 (r343956) @@ -102,8 +102,8 @@ options MALLOC_DEBUG_MAXZONES=8 # Separate malloc(9) options VERBOSE_SYSINIT=0 # Support debug.verbose_sysinit, off by default # Kernel Sanitizers -options COVERAGE # Generic kernel coverage. Used by KCOV -options KCOV # Kernel Coverage Sanitizer +#options COVERAGE # Generic kernel coverage. Used by KCOV +#options KCOV # Kernel Coverage Sanitizer # Warning: KUBSAN can result in a kernel too large for loader to load #options KUBSAN # Kernel Undefined Behavior Sanitizer Modified: projects/clang800-import/sys/amd64/conf/NOTES ============================================================================== --- projects/clang800-import/sys/amd64/conf/NOTES Sun Feb 10 12:45:33 2019 (r343955) +++ projects/clang800-import/sys/amd64/conf/NOTES Sun Feb 10 12:49:34 2019 (r343956) @@ -612,9 +612,6 @@ options EFIRT # Enable 32-bit runtime support for FreeBSD/i386 binaries. options COMPAT_FREEBSD32 -# Emulate spx device for client side of SVR3 local X interface -#XXX#options SPX_HACK - # Enable (32-bit) a.out binary support options COMPAT_AOUT Modified: projects/clang800-import/sys/arm/allwinner/axp81x.c ============================================================================== --- projects/clang800-import/sys/arm/allwinner/axp81x.c Sun Feb 10 12:45:33 2019 (r343955) +++ projects/clang800-import/sys/arm/allwinner/axp81x.c Sun Feb 10 12:49:34 2019 (r343956) @@ -65,9 +65,13 @@ MALLOC_DEFINE(M_AXP8XX_REG, "AXP8xx regulator", "AXP8x #define AXP_POWERSRC_ACIN (1 << 7) #define AXP_POWERSRC_VBUS (1 << 5) #define AXP_POWERSRC_VBAT (1 << 3) -#define AXP_POWERSRC_CHARING (1 << 2) +#define AXP_POWERSRC_CHARING (1 << 2) /* Charging Direction */ #define AXP_POWERSRC_SHORTED (1 << 1) #define AXP_POWERSRC_STARTUP (1 << 0) +#define AXP_POWERMODE 0x01 +#define AXP_POWERMODE_BAT_CHARGING (1 << 6) +#define AXP_POWERMODE_BAT_PRESENT (1 << 5) +#define AXP_POWERMODE_BAT_VALID (1 << 4) #define AXP_ICTYPE 0x03 #define AXP_POWERCTL1 0x10 #define AXP_POWERCTL1_DCDC7 (1 << 6) /* AXP813/818 only */ @@ -117,14 +121,47 @@ MALLOC_DEFINE(M_AXP8XX_REG, "AXP8xx regulator", "AXP8x #define AXP_POWERBAT 0x32 #define AXP_POWERBAT_SHUTDOWN (1 << 7) #define AXP_IRQEN1 0x40 +#define AXP_IRQEN1_ACIN_HI (1 << 6) +#define AXP_IRQEN1_ACIN_LO (1 << 5) +#define AXP_IRQEN1_VBUS_HI (1 << 3) +#define AXP_IRQEN1_VBUS_LO (1 << 2) #define AXP_IRQEN2 0x41 +#define AXP_IRQEN2_BAT_IN (1 << 7) +#define AXP_IRQEN2_BAT_NO (1 << 6) +#define AXP_IRQEN2_BATCHGC (1 << 3) +#define AXP_IRQEN2_BATCHGD (1 << 2) #define AXP_IRQEN3 0x42 #define AXP_IRQEN4 0x43 +#define AXP_IRQEN4_BATLVL_LO1 (1 << 1) +#define AXP_IRQEN4_BATLVL_LO0 (1 << 0) #define AXP_IRQEN5 0x44 #define AXP_IRQEN5_POKSIRQ (1 << 4) +#define AXP_IRQEN5_POKLIRQ (1 << 3) #define AXP_IRQEN6 0x45 +#define AXP_IRQSTAT1 0x48 +#define AXP_IRQSTAT1_ACIN_HI (1 << 6) +#define AXP_IRQSTAT1_ACIN_LO (1 << 5) +#define AXP_IRQSTAT1_VBUS_HI (1 << 3) +#define AXP_IRQSTAT1_VBUS_LO (1 << 2) +#define AXP_IRQSTAT2 0x49 +#define AXP_IRQSTAT2_BAT_IN (1 << 7) +#define AXP_IRQSTAT2_BAT_NO (1 << 6) +#define AXP_IRQSTAT2_BATCHGC (1 << 3) +#define AXP_IRQSTAT2_BATCHGD (1 << 2) +#define AXP_IRQSTAT3 0x4a +#define AXP_IRQSTAT4 0x4b +#define AXP_IRQSTAT4_BATLVL_LO1 (1 << 1) +#define AXP_IRQSTAT4_BATLVL_LO0 (1 << 0) #define AXP_IRQSTAT5 0x4c #define AXP_IRQSTAT5_POKSIRQ (1 << 4) +#define AXP_IRQEN5_POKLIRQ (1 << 3) +#define AXP_IRQSTAT6 0x4d +#define AXP_BATSENSE_HI 0x78 +#define AXP_BATSENSE_LO 0x79 +#define AXP_BATCHG_HI 0x7a +#define AXP_BATCHG_LO 0x7b +#define AXP_BATDISCHG_HI 0x7c +#define AXP_BATDISCHG_LO 0x7d #define AXP_GPIO0_CTRL 0x90 #define AXP_GPIO0LDO_CTRL 0x91 #define AXP_GPIO1_CTRL 0x92 @@ -138,7 +175,25 @@ MALLOC_DEFINE(M_AXP8XX_REG, "AXP8xx regulator", "AXP8x #define AXP_GPIO_FUNC_LDO_OFF 4 #define AXP_GPIO_SIGBIT 0x94 #define AXP_GPIO_PD 0x97 +#define AXP_FUEL_GAUGECTL 0xb8 +#define AXP_FUEL_GAUGECTL_EN (1 << 7) +#define AXP_BAT_CAP 0xb9 +#define AXP_BAT_CAP_VALID (1 << 7) +#define AXP_BAT_CAP_PERCENT 0x7f + +#define AXP_BAT_MAX_CAP_HI 0xe0 +#define AXP_BAT_MAX_CAP_VALID (1 << 7) +#define AXP_BAT_MAX_CAP_LO 0xe1 + +#define AXP_BAT_COULOMB_HI 0xe2 +#define AXP_BAT_COULOMB_VALID (1 << 7) +#define AXP_BAT_COULOMB_LO 0xe3 + +#define AXP_BAT_CAP_WARN 0xe6 +#define AXP_BAT_CAP_WARN_LV1 0xf0 /* Bits 4, 5, 6, 7 */ +#define AXP_BAT_CAP_WARN_LV2 0xf /* Bits 0, 1, 2, 3 */ + static const struct { const char *name; uint8_t ctrl_reg; @@ -710,6 +765,68 @@ axp8xx_intr(void *arg) dev = arg; + error = axp8xx_read(dev, AXP_IRQSTAT1, &val, 1); + if (error != 0) + return; + + if (val) { + if (bootverbose) + device_printf(dev, "AXP_IRQSTAT1 val: %x\n", val); + if (val & AXP_IRQSTAT1_ACIN_HI) + devctl_notify("PMU", "AC", "plugged", NULL); + if (val & AXP_IRQSTAT1_ACIN_LO) + devctl_notify("PMU", "AC", "unplugged", NULL); + if (val & AXP_IRQSTAT1_VBUS_HI) + devctl_notify("PMU", "USB", "plugged", NULL); + if (val & AXP_IRQSTAT1_VBUS_LO) + devctl_notify("PMU", "USB", "unplugged", NULL); + /* Acknowledge */ + axp8xx_write(dev, AXP_IRQSTAT1, val); + } + + error = axp8xx_read(dev, AXP_IRQSTAT2, &val, 1); + if (error != 0) + return; + + if (val) { + if (bootverbose) + device_printf(dev, "AXP_IRQSTAT2 val: %x\n", val); + if (val & AXP_IRQSTAT2_BATCHGD) + devctl_notify("PMU", "Battery", "charged", NULL); + if (val & AXP_IRQSTAT2_BATCHGC) + devctl_notify("PMU", "Battery", "charging", NULL); + if (val & AXP_IRQSTAT2_BAT_NO) + devctl_notify("PMU", "Battery", "absent", NULL); + if (val & AXP_IRQSTAT2_BAT_IN) + devctl_notify("PMU", "Battery", "plugged", NULL); + /* Acknowledge */ + axp8xx_write(dev, AXP_IRQSTAT2, val); + } + + error = axp8xx_read(dev, AXP_IRQSTAT3, &val, 1); + if (error != 0) + return; + + if (val) { + /* Acknowledge */ + axp8xx_write(dev, AXP_IRQSTAT3, val); + } + + error = axp8xx_read(dev, AXP_IRQSTAT4, &val, 1); + if (error != 0) + return; + + if (val) { + if (bootverbose) + device_printf(dev, "AXP_IRQSTAT4 val: %x\n", val); + if (val & AXP_IRQSTAT4_BATLVL_LO0) *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***