From owner-svn-src-projects@freebsd.org Sun Feb 23 21:48:57 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 01F7624A03C for ; Sun, 23 Feb 2020 21:48:57 +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 48Qf3D3wCmz3JPQ; Sun, 23 Feb 2020 21:48:56 +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 0C7C71B126; Sun, 23 Feb 2020 21:48:56 +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 01NLmusP044072; Sun, 23 Feb 2020 21:48:56 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 01NLmmIA044036; Sun, 23 Feb 2020 21:48:48 GMT (envelope-from dim@FreeBSD.org) Message-Id: <202002232148.01NLmmIA044036@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Sun, 23 Feb 2020 21:48:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r358263 - in projects/clang1000-import: share/misc stand/common sys/conf sys/fs/nfsclient sys/kern sys/riscv/include sys/sys sys/vm X-SVN-Group: projects X-SVN-Commit-Author: dim X-SVN-Commit-Paths: in projects/clang1000-import: share/misc stand/common sys/conf sys/fs/nfsclient sys/kern sys/riscv/include sys/sys sys/vm X-SVN-Commit-Revision: 358263 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: Sun, 23 Feb 2020 21:48:57 -0000 Author: dim Date: Sun Feb 23 21:48:48 2020 New Revision: 358263 URL: https://svnweb.freebsd.org/changeset/base/358263 Log: Merge ^/head r358239 through r358262. Modified: projects/clang1000-import/share/misc/bsd-family-tree projects/clang1000-import/share/misc/committers-ports.dot projects/clang1000-import/stand/common/misc.c projects/clang1000-import/sys/conf/Makefile.riscv projects/clang1000-import/sys/fs/nfsclient/nfs_clbio.c projects/clang1000-import/sys/fs/nfsclient/nfs_clport.c projects/clang1000-import/sys/kern/kern_cons.c projects/clang1000-import/sys/kern/kern_linker.c projects/clang1000-import/sys/kern/kern_malloc.c projects/clang1000-import/sys/kern/kern_shutdown.c projects/clang1000-import/sys/kern/kern_sig.c projects/clang1000-import/sys/kern/kern_thread.c projects/clang1000-import/sys/kern/link_elf.c projects/clang1000-import/sys/kern/vfs_subr.c projects/clang1000-import/sys/kern/vfs_vnops.c projects/clang1000-import/sys/kern/vnode_if.src projects/clang1000-import/sys/riscv/include/param.h projects/clang1000-import/sys/sys/buf.h projects/clang1000-import/sys/sys/bufobj.h projects/clang1000-import/sys/sys/conf.h projects/clang1000-import/sys/sys/cons.h projects/clang1000-import/sys/sys/proc.h projects/clang1000-import/sys/sys/signalvar.h projects/clang1000-import/sys/sys/vnode.h projects/clang1000-import/sys/vm/swap_pager.c projects/clang1000-import/sys/vm/uma.h projects/clang1000-import/sys/vm/uma_core.c projects/clang1000-import/sys/vm/vm_map.c projects/clang1000-import/sys/vm/vm_object.c projects/clang1000-import/sys/vm/vm_object.h projects/clang1000-import/sys/vm/vm_page.c projects/clang1000-import/sys/vm/vm_pager.c projects/clang1000-import/sys/vm/vm_radix.c Directory Properties: projects/clang1000-import/ (props changed) Modified: projects/clang1000-import/share/misc/bsd-family-tree ============================================================================== --- projects/clang1000-import/share/misc/bsd-family-tree Sun Feb 23 19:04:15 2020 (r358262) +++ projects/clang1000-import/share/misc/bsd-family-tree Sun Feb 23 21:48:48 2020 (r358263) @@ -388,11 +388,11 @@ FreeBSD 5.2 | | | | | | | | | | DragonFly 5.2.2 | FreeBSD | | | *--NetBSD | | | 11.2 | | | 7.2 | | - | | macOS | | | | | - | | 10.14 | | | OpenBSD 6.4 | - | | | | | | | | - | | | | | | | DragonFly 5.4.0 - *--FreeBSD | | | | v | | + | | macOS | | | | + | | 10.14 | | OpenBSD 6.4 | + | | | | | | | + | | | | | | DragonFly 5.4.0 + *--FreeBSD | | | | | | | 12.0 | | | | | DragonFly 5.4.1 | | | | | | OpenBSD 6.5 | | | | | | | | | @@ -405,7 +405,8 @@ FreeBSD 5.2 | | | | FreeBSD | | OpenBSD 6.6 | | 12.1 macOS | | | | | 10.15.1 | | DragonFly 5.6.2 - | v | | | | + | | | *--NetBSD | | + | v | | 9.0 | | | | | | | FreeBSD 13 -current | NetBSD -current OpenBSD -current DragonFly -current | | | | | @@ -798,6 +799,7 @@ OpenBSD 6.6 2019-10-17 [OBD] macOS 10.15 2019-10-07 [APL] macOS 10.15.1 2019-10-29 [APL] (security/critical release) FreeBSD 12.1 2019-11-04 [FBD] +NetBSD 9.0 2020-02-15 [NBD] Bibliography ------------------------ Modified: projects/clang1000-import/share/misc/committers-ports.dot ============================================================================== --- projects/clang1000-import/share/misc/committers-ports.dot Sun Feb 23 19:04:15 2020 (r358262) +++ projects/clang1000-import/share/misc/committers-ports.dot Sun Feb 23 21:48:48 2020 (r358263) @@ -238,6 +238,7 @@ rodrigo [label="Rodrigo Osorio\nrodrigo@FreeBSD.org\n2 romain [label="Romain Tartiere\nromain@FreeBSD.org\n2010/01/24"] rpaulo [label="Rui Paulo\nrpaulo@FreeBSD.org\n2014/07/15"] sahil [label="Sahil Tandon\nsahil@FreeBSD.org\n2010/04/11"] +salvadore [label="Lorenzo Salvadore\nsalvadore@FreeBSD.org\n2020/02/21"] samm [label="Alex Samorukov\nsamm@FreeBSD.org\n2019/10/09"] sat [label="Andrew Pantyukhin\nsat@FreeBSD.org\n2006/05/06"] sbruno [label="Sean Bruno\nsbruno@FreeBSD.org\n2014/09/14"] @@ -459,6 +460,8 @@ garga -> rnoland garga -> vd garga -> wxs garga -> xride + +gerald -> salvadore glarkin -> avl glarkin -> cs Modified: projects/clang1000-import/stand/common/misc.c ============================================================================== --- projects/clang1000-import/stand/common/misc.c Sun Feb 23 19:04:15 2020 (r358262) +++ projects/clang1000-import/stand/common/misc.c Sun Feb 23 21:48:48 2020 (r358263) @@ -149,6 +149,7 @@ alloc_pread(int fd, off_t off, size_t len) #ifdef DEBUG printf("\nmalloc(%d) failed\n", (int)len); #endif + errno = ENOMEM; return (NULL); } if (lseek(fd, off, SEEK_SET) == -1) { Modified: projects/clang1000-import/sys/conf/Makefile.riscv ============================================================================== --- projects/clang1000-import/sys/conf/Makefile.riscv Sun Feb 23 19:04:15 2020 (r358262) +++ projects/clang1000-import/sys/conf/Makefile.riscv Sun Feb 23 21:48:48 2020 (r358263) @@ -46,6 +46,10 @@ SYSTEM_LD= @${LD} -N -m ${LD_EMULATION} -Bdynamic -T $ CFLAGS += -fno-omit-frame-pointer -fno-optimize-sibling-calls .endif +# Currently, the compile flags don't let the kernel know if this is a hard-float +# ABI build or a soft-float ABI build. We need to pass in this information. +CFLAGS += -DMACHINE_ARCH=\"${MACHINE_ARCH}\" + # hack because genassym.c includes sys/bus.h which includes these. genassym.o: bus_if.h device_if.h Modified: projects/clang1000-import/sys/fs/nfsclient/nfs_clbio.c ============================================================================== --- projects/clang1000-import/sys/fs/nfsclient/nfs_clbio.c Sun Feb 23 19:04:15 2020 (r358262) +++ projects/clang1000-import/sys/fs/nfsclient/nfs_clbio.c Sun Feb 23 21:48:48 2020 (r358263) @@ -425,14 +425,11 @@ int ncl_bioread(struct vnode *vp, struct uio *uio, int ioflag, struct ucred *cred) { struct nfsnode *np = VTONFS(vp); - int biosize, i; struct buf *bp, *rabp; struct thread *td; struct nfsmount *nmp = VFSTONFS(vp->v_mount); daddr_t lbn, rabn; - int bcount; - int seqcount; - int nra, error = 0, n = 0, on = 0; + int biosize, bcount, error, i, n, nra, on, save2, seqcount; off_t tmp_off; KASSERT(uio->uio_rw == UIO_READ, ("ncl_read mode")); @@ -464,6 +461,8 @@ ncl_bioread(struct vnode *vp, struct uio *uio, int iof /* No caching/ no readaheads. Just read data into the user buffer */ return ncl_readrpc(vp, uio, cred); + n = 0; + on = 0; biosize = vp->v_bufobj.bo_bsize; seqcount = (int)((off_t)(ioflag >> IO_SEQSHIFT) * biosize / BKVASIZE); @@ -471,6 +470,7 @@ ncl_bioread(struct vnode *vp, struct uio *uio, int iof if (error) return error; + save2 = curthread_pflags2_set(TDP2_SBPAGES); do { u_quad_t nsize; @@ -495,7 +495,9 @@ ncl_bioread(struct vnode *vp, struct uio *uio, int iof rabp = nfs_getcacheblk(vp, rabn, biosize, td); if (!rabp) { error = newnfs_sigintr(nmp, td); - return (error ? error : EINTR); + if (error == 0) + error = EINTR; + goto out; } if ((rabp->b_flags & (B_CACHE|B_DELWRI)) == 0) { rabp->b_flags |= B_ASYNC; @@ -526,7 +528,9 @@ ncl_bioread(struct vnode *vp, struct uio *uio, int iof if (!bp) { error = newnfs_sigintr(nmp, td); - return (error ? error : EINTR); + if (error == 0) + error = EINTR; + goto out; } /* @@ -540,7 +544,7 @@ ncl_bioread(struct vnode *vp, struct uio *uio, int iof error = ncl_doio(vp, bp, cred, td, 0); if (error) { brelse(bp); - return (error); + goto out; } } @@ -561,7 +565,9 @@ ncl_bioread(struct vnode *vp, struct uio *uio, int iof bp = nfs_getcacheblk(vp, (daddr_t)0, NFS_MAXPATHLEN, td); if (!bp) { error = newnfs_sigintr(nmp, td); - return (error ? error : EINTR); + if (error == 0) + error = EINTR; + goto out; } if ((bp->b_flags & B_CACHE) == 0) { bp->b_iocmd = BIO_READ; @@ -570,7 +576,7 @@ ncl_bioread(struct vnode *vp, struct uio *uio, int iof if (error) { bp->b_ioflags |= BIO_ERROR; brelse(bp); - return (error); + goto out; } } n = MIN(uio->uio_resid, NFS_MAXPATHLEN - bp->b_resid); @@ -580,14 +586,17 @@ ncl_bioread(struct vnode *vp, struct uio *uio, int iof NFSINCRGLOBAL(nfsstatsv1.biocache_readdirs); if (np->n_direofoffset && uio->uio_offset >= np->n_direofoffset) { - return (0); + error = 0; + goto out; } lbn = (uoff_t)uio->uio_offset / NFS_DIRBLKSIZ; on = uio->uio_offset & (NFS_DIRBLKSIZ - 1); bp = nfs_getcacheblk(vp, lbn, NFS_DIRBLKSIZ, td); if (!bp) { - error = newnfs_sigintr(nmp, td); - return (error ? error : EINTR); + error = newnfs_sigintr(nmp, td); + if (error == 0) + error = EINTR; + goto out; } if ((bp->b_flags & B_CACHE) == 0) { bp->b_iocmd = BIO_READ; @@ -612,12 +621,16 @@ ncl_bioread(struct vnode *vp, struct uio *uio, int iof */ for (i = 0; i <= lbn && !error; i++) { if (np->n_direofoffset - && (i * NFS_DIRBLKSIZ) >= np->n_direofoffset) - return (0); + && (i * NFS_DIRBLKSIZ) >= np->n_direofoffset) { + error = 0; + goto out; + } bp = nfs_getcacheblk(vp, i, NFS_DIRBLKSIZ, td); if (!bp) { error = newnfs_sigintr(nmp, td); - return (error ? error : EINTR); + if (error == 0) + error = EINTR; + goto out; } if ((bp->b_flags & B_CACHE) == 0) { bp->b_iocmd = BIO_READ; @@ -646,7 +659,7 @@ ncl_bioread(struct vnode *vp, struct uio *uio, int iof * we give up. */ if (error) - return (error); + goto out; } /* @@ -706,6 +719,12 @@ ncl_bioread(struct vnode *vp, struct uio *uio, int iof if (bp != NULL) brelse(bp); } while (error == 0 && uio->uio_resid > 0 && n > 0); +out: + curthread_pflags2_restore(save2); + if ((curthread->td_pflags2 & TDP2_SBPAGES) == 0) { + NFSLOCKNODE(np); + ncl_pager_setsize(vp, NULL); + } return (error); } Modified: projects/clang1000-import/sys/fs/nfsclient/nfs_clport.c ============================================================================== --- projects/clang1000-import/sys/fs/nfsclient/nfs_clport.c Sun Feb 23 19:04:15 2020 (r358262) +++ projects/clang1000-import/sys/fs/nfsclient/nfs_clport.c Sun Feb 23 21:48:48 2020 (r358263) @@ -597,7 +597,8 @@ ncl_pager_setsize(struct vnode *vp, u_quad_t *nsizep) setnsize = false; if (object != NULL && nsize != object->un_pager.vnp.vnp_size) { - if (VOP_ISLOCKED(vp) == LK_EXCLUSIVE) + if (VOP_ISLOCKED(vp) == LK_EXCLUSIVE && + (curthread->td_pflags2 & TDP2_SBPAGES) == 0) setnsize = true; else np->n_flag |= NVNSETSZSKIP; Modified: projects/clang1000-import/sys/kern/kern_cons.c ============================================================================== --- projects/clang1000-import/sys/kern/kern_cons.c Sun Feb 23 19:04:15 2020 (r358262) +++ projects/clang1000-import/sys/kern/kern_cons.c Sun Feb 23 21:48:48 2020 (r358263) @@ -98,7 +98,7 @@ static char *consbuf; /* buffer used by `consmsgbuf' static struct callout conscallout; /* callout for outputting to constty */ struct msgbuf consmsgbuf; /* message buffer for console tty */ static u_char console_pausing; /* pause after each line during probe */ -static char *console_pausestr= +static const char console_pausestr[] = ""; struct tty *constty; /* pointer to console "window" tty */ static struct mtx cnputs_mtx; /* Mutex for cnputs(). */ @@ -510,7 +510,7 @@ cnputc(int c) { struct cn_device *cnd; struct consdev *cn; - char *cp; + const char *cp; #ifdef EARLY_PRINTF if (early_putc != NULL) { @@ -571,7 +571,7 @@ cnputsn(const char *p, size_t n) } void -cnputs(char *p) +cnputs(const char *p) { cnputsn(p, strlen(p)); } Modified: projects/clang1000-import/sys/kern/kern_linker.c ============================================================================== --- projects/clang1000-import/sys/kern/kern_linker.c Sun Feb 23 19:04:15 2020 (r358262) +++ projects/clang1000-import/sys/kern/kern_linker.c Sun Feb 23 21:48:48 2020 (r358263) @@ -1765,7 +1765,7 @@ SYSCTL_STRING(_kern, OID_AUTO, module_path, CTLFLAG_RW TUNABLE_STR("module_path", linker_path, sizeof(linker_path)); -static char *linker_ext_list[] = { +static const char * const linker_ext_list[] = { "", ".ko", NULL @@ -1782,7 +1782,8 @@ linker_lookup_file(const char *path, int pathlen, cons { struct nameidata nd; struct thread *td = curthread; /* XXX */ - char *result, **cpp, *sep; + const char * const *cpp, *sep; + char *result; int error, len, extlen, reclen, flags; enum vtype type; @@ -1838,8 +1839,9 @@ linker_hints_lookup(const char *path, int pathlen, con struct ucred *cred = td ? td->td_ucred : NULL; struct nameidata nd; struct vattr vattr, mattr; + const char *best, *sep; u_char *hints = NULL; - u_char *cp, *recptr, *bufend, *result, *best, *pathbuf, *sep; + u_char *cp, *recptr, *bufend, *result, *pathbuf; int error, ival, bestver, *intp, found, flags, clen, blen; ssize_t reclen; Modified: projects/clang1000-import/sys/kern/kern_malloc.c ============================================================================== --- projects/clang1000-import/sys/kern/kern_malloc.c Sun Feb 23 19:04:15 2020 (r358262) +++ projects/clang1000-import/sys/kern/kern_malloc.c Sun Feb 23 21:48:48 2020 (r358263) @@ -153,7 +153,7 @@ static int numzones = MALLOC_DEBUG_MAXZONES; */ struct { int kz_size; - char *kz_name; + const char *kz_name; uma_zone_t kz_zone[MALLOC_DEBUG_MAXZONES]; } kmemzones[] = { {16, "16", }, @@ -1091,7 +1091,7 @@ mallocinit(void *dummy) UMA_ALIGN_PTR, UMA_ZONE_MALLOC); for (i = 0, indx = 0; kmemzones[indx].kz_size != 0; indx++) { int size = kmemzones[indx].kz_size; - char *name = kmemzones[indx].kz_name; + const char *name = kmemzones[indx].kz_name; int subzone; for (subzone = 0; subzone < numzones; subzone++) { Modified: projects/clang1000-import/sys/kern/kern_shutdown.c ============================================================================== --- projects/clang1000-import/sys/kern/kern_shutdown.c Sun Feb 23 19:04:15 2020 (r358262) +++ projects/clang1000-import/sys/kern/kern_shutdown.c Sun Feb 23 21:48:48 2020 (r358263) @@ -1714,7 +1714,7 @@ dump_finish(struct dumperinfo *di, struct kerneldumphe void dump_init_header(const struct dumperinfo *di, struct kerneldumpheader *kdh, - char *magic, uint32_t archver, uint64_t dumplen) + const char *magic, uint32_t archver, uint64_t dumplen) { size_t dstsize; Modified: projects/clang1000-import/sys/kern/kern_sig.c ============================================================================== --- projects/clang1000-import/sys/kern/kern_sig.c Sun Feb 23 19:04:15 2020 (r358262) +++ projects/clang1000-import/sys/kern/kern_sig.c Sun Feb 23 21:48:48 2020 (r358263) @@ -3181,7 +3181,7 @@ proc_wkilled(struct proc *p) * Kill the current process for stated reason. */ void -killproc(struct proc *p, char *why) +killproc(struct proc *p, const char *why) { PROC_LOCK_ASSERT(p, MA_OWNED); Modified: projects/clang1000-import/sys/kern/kern_thread.c ============================================================================== --- projects/clang1000-import/sys/kern/kern_thread.c Sun Feb 23 19:04:15 2020 (r358262) +++ projects/clang1000-import/sys/kern/kern_thread.c Sun Feb 23 21:48:48 2020 (r358263) @@ -82,9 +82,9 @@ _Static_assert(offsetof(struct thread, td_flags) == 0x "struct thread KBI td_flags"); _Static_assert(offsetof(struct thread, td_pflags) == 0x104, "struct thread KBI td_pflags"); -_Static_assert(offsetof(struct thread, td_frame) == 0x490, +_Static_assert(offsetof(struct thread, td_frame) == 0x498, "struct thread KBI td_frame"); -_Static_assert(offsetof(struct thread, td_emuldata) == 0x6a0, +_Static_assert(offsetof(struct thread, td_emuldata) == 0x6b0, "struct thread KBI td_emuldata"); _Static_assert(offsetof(struct proc, p_flag) == 0xb0, "struct proc KBI p_flag"); @@ -102,9 +102,9 @@ _Static_assert(offsetof(struct thread, td_flags) == 0x "struct thread KBI td_flags"); _Static_assert(offsetof(struct thread, td_pflags) == 0xa0, "struct thread KBI td_pflags"); -_Static_assert(offsetof(struct thread, td_frame) == 0x2f8, +_Static_assert(offsetof(struct thread, td_frame) == 0x2fc, "struct thread KBI td_frame"); -_Static_assert(offsetof(struct thread, td_emuldata) == 0x340, +_Static_assert(offsetof(struct thread, td_emuldata) == 0x344, "struct thread KBI td_emuldata"); _Static_assert(offsetof(struct proc, p_flag) == 0x68, "struct proc KBI p_flag"); Modified: projects/clang1000-import/sys/kern/link_elf.c ============================================================================== --- projects/clang1000-import/sys/kern/link_elf.c Sun Feb 23 19:04:15 2020 (r358262) +++ projects/clang1000-import/sys/kern/link_elf.c Sun Feb 23 21:48:48 2020 (r358263) @@ -405,7 +405,7 @@ link_elf_init(void* arg) Elf_Size *ctors_sizep; caddr_t modptr, baseptr, sizeptr; elf_file_t ef; - char *modname; + const char *modname; linker_add_class(&link_elf_class); Modified: projects/clang1000-import/sys/kern/vfs_subr.c ============================================================================== --- projects/clang1000-import/sys/kern/vfs_subr.c Sun Feb 23 19:04:15 2020 (r358262) +++ projects/clang1000-import/sys/kern/vfs_subr.c Sun Feb 23 21:48:48 2020 (r358263) @@ -4040,7 +4040,7 @@ vcount(struct vnode *vp) /* * Print out a description of a vnode. */ -static char *typename[] = +static const char * const typename[] = {"VNON", "VREG", "VDIR", "VBLK", "VCHR", "VLNK", "VSOCK", "VFIFO", "VBAD", "VMARKER"}; Modified: projects/clang1000-import/sys/kern/vfs_vnops.c ============================================================================== --- projects/clang1000-import/sys/kern/vfs_vnops.c Sun Feb 23 19:04:15 2020 (r358262) +++ projects/clang1000-import/sys/kern/vfs_vnops.c Sun Feb 23 21:48:48 2020 (r358263) @@ -1566,7 +1566,8 @@ vn_poll(struct file *fp, int events, struct ucred *act * permits vn_lock to return doomed vnodes. */ static int __noinline -_vn_lock_fallback(struct vnode *vp, int flags, char *file, int line, int error) +_vn_lock_fallback(struct vnode *vp, int flags, const char *file, int line, + int error) { KASSERT((flags & LK_RETRY) == 0 || error == 0, @@ -1602,7 +1603,7 @@ _vn_lock_fallback(struct vnode *vp, int flags, char *f } int -_vn_lock(struct vnode *vp, int flags, char *file, int line) +_vn_lock(struct vnode *vp, int flags, const char *file, int line) { int error; Modified: projects/clang1000-import/sys/kern/vnode_if.src ============================================================================== --- projects/clang1000-import/sys/kern/vnode_if.src Sun Feb 23 19:04:15 2020 (r358262) +++ projects/clang1000-import/sys/kern/vnode_if.src Sun Feb 23 21:48:48 2020 (r358263) @@ -380,7 +380,7 @@ vop_reclaim { vop_lock1 { IN struct vnode *vp; IN int flags; - IN char *file; + IN const char *file; IN int line; }; Modified: projects/clang1000-import/sys/riscv/include/param.h ============================================================================== --- projects/clang1000-import/sys/riscv/include/param.h Sun Feb 23 19:04:15 2020 (r358262) +++ projects/clang1000-import/sys/riscv/include/param.h Sun Feb 23 21:48:48 2020 (r358263) @@ -46,7 +46,11 @@ #define MACHINE "riscv" #endif #ifndef MACHINE_ARCH +#ifdef __riscv_float_abi_soft +#define MACHINE_ARCH "riscv64sf" +#else #define MACHINE_ARCH "riscv64" +#endif #endif #ifdef SMP Modified: projects/clang1000-import/sys/sys/buf.h ============================================================================== --- projects/clang1000-import/sys/sys/buf.h Sun Feb 23 19:04:15 2020 (r358262) +++ projects/clang1000-import/sys/sys/buf.h Sun Feb 23 21:48:48 2020 (r358263) @@ -554,7 +554,7 @@ void bufdone(struct buf *); void bd_speedup(void); extern uma_zone_t pbuf_zone; -uma_zone_t pbuf_zsecond_create(char *name, int max); +uma_zone_t pbuf_zsecond_create(const char *name, int max); int cluster_read(struct vnode *, u_quad_t, daddr_t, long, struct ucred *, long, int, int, struct buf **); Modified: projects/clang1000-import/sys/sys/bufobj.h ============================================================================== --- projects/clang1000-import/sys/sys/bufobj.h Sun Feb 23 19:04:15 2020 (r358262) +++ projects/clang1000-import/sys/sys/bufobj.h Sun Feb 23 21:48:48 2020 (r358263) @@ -78,7 +78,7 @@ typedef int b_sync_t(struct bufobj *, int waitfor); typedef void b_bdflush_t(struct bufobj *, struct buf *); struct buf_ops { - char *bop_name; + const char *bop_name; b_write_t *bop_write; b_strategy_t *bop_strategy; b_sync_t *bop_sync; Modified: projects/clang1000-import/sys/sys/conf.h ============================================================================== --- projects/clang1000-import/sys/sys/conf.h Sun Feb 23 19:04:15 2020 (r358262) +++ projects/clang1000-import/sys/sys/conf.h Sun Feb 23 21:48:48 2020 (r358263) @@ -374,7 +374,7 @@ int dump_append(struct dumperinfo *, void *, vm_offset int dump_write(struct dumperinfo *, void *, vm_offset_t, off_t, size_t); int dump_finish(struct dumperinfo *di, struct kerneldumpheader *kdh); void dump_init_header(const struct dumperinfo *di, struct kerneldumpheader *kdh, - char *magic, uint32_t archver, uint64_t dumplen); + const char *magic, uint32_t archver, uint64_t dumplen); #endif /* _KERNEL */ Modified: projects/clang1000-import/sys/sys/cons.h ============================================================================== --- projects/clang1000-import/sys/sys/cons.h Sun Feb 23 19:04:15 2020 (r358262) +++ projects/clang1000-import/sys/sys/cons.h Sun Feb 23 21:48:48 2020 (r358263) @@ -136,7 +136,7 @@ int cncheckc(void); int cngetc(void); void cngets(char *, size_t, int); void cnputc(int); -void cnputs(char *); +void cnputs(const char *); void cnputsn(const char *, size_t); int cnunavailable(void); void constty_set(struct tty *tp); Modified: projects/clang1000-import/sys/sys/proc.h ============================================================================== --- projects/clang1000-import/sys/sys/proc.h Sun Feb 23 19:04:15 2020 (r358262) +++ projects/clang1000-import/sys/sys/proc.h Sun Feb 23 21:48:48 2020 (r358263) @@ -250,6 +250,7 @@ struct thread { int td_flags; /* (t) TDF_* flags. */ int td_inhibitors; /* (t) Why can not run. */ int td_pflags; /* (k) Private thread (TDP_*) flags. */ + int td_pflags2; /* (k) Private thread (TDP2_*) flags. */ int td_dupfd; /* (k) Ret value from fdopen. XXX */ int td_sqqueue; /* (t) Sleepqueue queue blocked on. */ const void *td_wchan; /* (t) Sleep address. */ @@ -514,6 +515,8 @@ do { \ #define TDP_EXECVMSPC 0x40000000 /* Execve destroyed old vmspace */ #define TDP_SIGFASTPENDING 0x80000000 /* Pending signal due to sigfastblock */ +#define TDP2_SBPAGES 0x00000001 /* Owns sbusy on some pages */ + /* * Reasons that the current thread can not be run yet. * More than one may apply. @@ -1195,6 +1198,25 @@ curthread_pflags_restore(int save) { curthread->td_pflags &= save; +} + +static __inline int +curthread_pflags2_set(int flags) +{ + struct thread *td; + int save; + + td = curthread; + save = ~flags | (td->td_pflags2 & flags); + td->td_pflags2 |= flags; + return (save); +} + +static __inline void +curthread_pflags2_restore(int save) +{ + + curthread->td_pflags2 &= save; } static __inline __pure2 struct td_sched * Modified: projects/clang1000-import/sys/sys/signalvar.h ============================================================================== --- projects/clang1000-import/sys/sys/signalvar.h Sun Feb 23 19:04:15 2020 (r358262) +++ projects/clang1000-import/sys/sys/signalvar.h Sun Feb 23 21:48:48 2020 (r358263) @@ -384,7 +384,7 @@ sigallowstop(int prev) int cursig(struct thread *td); void execsigs(struct proc *p); void gsignal(int pgid, int sig, ksiginfo_t *ksi); -void killproc(struct proc *p, char *why); +void killproc(struct proc *p, const char *why); ksiginfo_t * ksiginfo_alloc(int wait); void ksiginfo_free(ksiginfo_t *ksi); int pksignal(struct proc *p, int sig, ksiginfo_t *ksi); Modified: projects/clang1000-import/sys/sys/vnode.h ============================================================================== --- projects/clang1000-import/sys/sys/vnode.h Sun Feb 23 19:04:15 2020 (r358262) +++ projects/clang1000-import/sys/sys/vnode.h Sun Feb 23 21:48:48 2020 (r358263) @@ -689,7 +689,7 @@ int vn_generic_copy_file_range(struct vnode *invp, off struct thread *fsize_td); int vn_need_pageq_flush(struct vnode *vp); int vn_isdisk(struct vnode *vp, int *errp); -int _vn_lock(struct vnode *vp, int flags, char *file, int line); +int _vn_lock(struct vnode *vp, int flags, const char *file, int line); #define vn_lock(vp, flags) _vn_lock(vp, flags, __FILE__, __LINE__) int vn_open(struct nameidata *ndp, int *flagp, int cmode, struct file *fp); int vn_open_cred(struct nameidata *ndp, int *flagp, int cmode, Modified: projects/clang1000-import/sys/vm/swap_pager.c ============================================================================== --- projects/clang1000-import/sys/vm/swap_pager.c Sun Feb 23 19:04:15 2020 (r358262) +++ projects/clang1000-import/sys/vm/swap_pager.c Sun Feb 23 21:48:48 2020 (r358263) @@ -1464,7 +1464,7 @@ swap_pager_putpages(vm_object_t object, vm_page_t *ma, /* Get a block of swap of size up to size n. */ VM_OBJECT_WLOCK(object); - blk = swp_pager_getswapspace(&n, 4); + blk = swp_pager_getswapspace(&n, 1); if (blk == SWAPBLK_NONE) { VM_OBJECT_WUNLOCK(object); mtx_lock(&swbuf_mtx); Modified: projects/clang1000-import/sys/vm/uma.h ============================================================================== --- projects/clang1000-import/sys/vm/uma.h Sun Feb 23 19:04:15 2020 (r358262) +++ projects/clang1000-import/sys/vm/uma.h Sun Feb 23 21:48:48 2020 (r358263) @@ -213,8 +213,8 @@ uma_zone_t uma_zcreate(const char *name, size_t size, * A pointer to a structure which is intended to be opaque to users of * the interface. The value may be null if the wait flag is not set. */ -uma_zone_t uma_zsecond_create(char *name, uma_ctor ctor, uma_dtor dtor, - uma_init zinit, uma_fini zfini, uma_zone_t master); +uma_zone_t uma_zsecond_create(const char *name, uma_ctor ctor, uma_dtor dtor, + uma_init zinit, uma_fini zfini, uma_zone_t master); /* * Create cache-only zones. @@ -225,9 +225,9 @@ uma_zone_t uma_zsecond_create(char *name, uma_ctor cto * zones. The 'arg' parameter is passed to import/release and is caller * specific. */ -uma_zone_t uma_zcache_create(char *name, int size, uma_ctor ctor, uma_dtor dtor, - uma_init zinit, uma_fini zfini, uma_import zimport, - uma_release zrelease, void *arg, int flags); +uma_zone_t uma_zcache_create(const char *name, int size, uma_ctor ctor, + uma_dtor dtor, uma_init zinit, uma_fini zfini, uma_import zimport, + uma_release zrelease, void *arg, int flags); /* * Definitions for uma_zcreate flags Modified: projects/clang1000-import/sys/vm/uma_core.c ============================================================================== --- projects/clang1000-import/sys/vm/uma_core.c Sun Feb 23 19:04:15 2020 (r358262) +++ projects/clang1000-import/sys/vm/uma_core.c Sun Feb 23 21:48:48 2020 (r358263) @@ -223,7 +223,7 @@ struct uma_kctor_args { struct uma_bucket_zone { uma_zone_t ubz_zone; - char *ubz_name; + const char *ubz_name; int ubz_entries; /* Number of items it can hold. */ int ubz_maxsize; /* Maximum allocation size per-item. */ }; @@ -3014,8 +3014,8 @@ uma_zcreate(const char *name, size_t size, uma_ctor ct /* See uma.h */ uma_zone_t -uma_zsecond_create(char *name, uma_ctor ctor, uma_dtor dtor, - uma_init zinit, uma_fini zfini, uma_zone_t master) +uma_zsecond_create(const char *name, uma_ctor ctor, uma_dtor dtor, + uma_init zinit, uma_fini zfini, uma_zone_t master) { struct uma_zctor_args args; uma_keg_t keg; @@ -3042,9 +3042,9 @@ uma_zsecond_create(char *name, uma_ctor ctor, uma_dtor /* See uma.h */ uma_zone_t -uma_zcache_create(char *name, int size, uma_ctor ctor, uma_dtor dtor, - uma_init zinit, uma_fini zfini, uma_import zimport, - uma_release zrelease, void *arg, int flags) +uma_zcache_create(const char *name, int size, uma_ctor ctor, uma_dtor dtor, + uma_init zinit, uma_fini zfini, uma_import zimport, uma_release zrelease, + void *arg, int flags) { struct uma_zctor_args args; Modified: projects/clang1000-import/sys/vm/vm_map.c ============================================================================== --- projects/clang1000-import/sys/vm/vm_map.c Sun Feb 23 19:04:15 2020 (r358262) +++ projects/clang1000-import/sys/vm/vm_map.c Sun Feb 23 21:48:48 2020 (r358263) @@ -5108,7 +5108,7 @@ vm_map_print(vm_map_t map) (void *)entry, (void *)entry->start, (void *)entry->end, entry->eflags); { - static char *inheritance_name[4] = + static const char * const inheritance_name[4] = {"share", "copy", "none", "donate_copy"}; db_iprintf(" prot=%x/%x/%s", Modified: projects/clang1000-import/sys/vm/vm_object.c ============================================================================== --- projects/clang1000-import/sys/vm/vm_object.c Sun Feb 23 19:04:15 2020 (r358262) +++ projects/clang1000-import/sys/vm/vm_object.c Sun Feb 23 21:48:48 2020 (r358263) @@ -386,7 +386,7 @@ vm_object_pip_wakeupn(vm_object_t object, short i) * re-acquired on return. */ static void -vm_object_pip_sleep(vm_object_t object, char *waitid) +vm_object_pip_sleep(vm_object_t object, const char *waitid) { refcount_sleep_interlock(&object->paging_in_progress, @@ -394,7 +394,7 @@ vm_object_pip_sleep(vm_object_t object, char *waitid) } void -vm_object_pip_wait(vm_object_t object, char *waitid) +vm_object_pip_wait(vm_object_t object, const char *waitid) { VM_OBJECT_ASSERT_WLOCKED(object); @@ -406,7 +406,7 @@ vm_object_pip_wait(vm_object_t object, char *waitid) } void -vm_object_pip_wait_unlocked(vm_object_t object, char *waitid) +vm_object_pip_wait_unlocked(vm_object_t object, const char *waitid) { VM_OBJECT_ASSERT_UNLOCKED(object); Modified: projects/clang1000-import/sys/vm/vm_object.h ============================================================================== --- projects/clang1000-import/sys/vm/vm_object.h Sun Feb 23 19:04:15 2020 (r358262) +++ projects/clang1000-import/sys/vm/vm_object.h Sun Feb 23 21:48:48 2020 (r358263) @@ -337,8 +337,8 @@ void vm_object_clear_flag(vm_object_t object, u_short void vm_object_pip_add(vm_object_t object, short i); void vm_object_pip_wakeup(vm_object_t object); void vm_object_pip_wakeupn(vm_object_t object, short i); -void vm_object_pip_wait(vm_object_t object, char *waitid); -void vm_object_pip_wait_unlocked(vm_object_t object, char *waitid); +void vm_object_pip_wait(vm_object_t object, const char *waitid); +void vm_object_pip_wait_unlocked(vm_object_t object, const char *waitid); void vm_object_busy(vm_object_t object); void vm_object_unbusy(vm_object_t object); Modified: projects/clang1000-import/sys/vm/vm_page.c ============================================================================== --- projects/clang1000-import/sys/vm/vm_page.c Sun Feb 23 19:04:15 2020 (r358262) +++ projects/clang1000-import/sys/vm/vm_page.c Sun Feb 23 21:48:48 2020 (r358263) @@ -451,13 +451,14 @@ vm_page_domain_init(int domain) vmd = VM_DOMAIN(domain); bzero(vmd, sizeof(*vmd)); - *__DECONST(char **, &vmd->vmd_pagequeues[PQ_INACTIVE].pq_name) = + *__DECONST(const char **, &vmd->vmd_pagequeues[PQ_INACTIVE].pq_name) = "vm inactive pagequeue"; - *__DECONST(char **, &vmd->vmd_pagequeues[PQ_ACTIVE].pq_name) = + *__DECONST(const char **, &vmd->vmd_pagequeues[PQ_ACTIVE].pq_name) = "vm active pagequeue"; - *__DECONST(char **, &vmd->vmd_pagequeues[PQ_LAUNDRY].pq_name) = + *__DECONST(const char **, &vmd->vmd_pagequeues[PQ_LAUNDRY].pq_name) = "vm laundry pagequeue"; - *__DECONST(char **, &vmd->vmd_pagequeues[PQ_UNSWAPPABLE].pq_name) = + *__DECONST(const char **, + &vmd->vmd_pagequeues[PQ_UNSWAPPABLE].pq_name) = "vm unswappable pagequeue"; vmd->vmd_domain = domain; vmd->vmd_page_count = 0; Modified: projects/clang1000-import/sys/vm/vm_pager.c ============================================================================== --- projects/clang1000-import/sys/vm/vm_pager.c Sun Feb 23 19:04:15 2020 (r358262) +++ projects/clang1000-import/sys/vm/vm_pager.c Sun Feb 23 21:48:48 2020 (r358263) @@ -191,7 +191,7 @@ vm_pager_bufferinit(void) } uma_zone_t -pbuf_zsecond_create(char *name, int max) +pbuf_zsecond_create(const char *name, int max) { uma_zone_t zone; Modified: projects/clang1000-import/sys/vm/vm_radix.c ============================================================================== --- projects/clang1000-import/sys/vm/vm_radix.c Sun Feb 23 19:04:15 2020 (r358262) +++ projects/clang1000-import/sys/vm/vm_radix.c Sun Feb 23 21:48:48 2020 (r358263) @@ -208,8 +208,7 @@ vm_radix_node_load(smrnode_t *p, enum vm_radix_access case SMR: return (smr_entered_load(p, vm_radix_smr)); } - /* This is unreachable, silence gcc. */ - panic("vm_radix_node_get: Unknown access type"); + __unreachable(); } static __inline void