From owner-svn-src-all@freebsd.org Sun May 24 03:50:50 2020 Return-Path: Delivered-To: svn-src-all@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 74F212F9A60; Sun, 24 May 2020 03:50:50 +0000 (UTC) (envelope-from mjg@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49V5qG2YHYz4Fjf; Sun, 24 May 2020 03:50:50 +0000 (UTC) (envelope-from mjg@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 526B51AFD9; Sun, 24 May 2020 03:50:50 +0000 (UTC) (envelope-from mjg@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04O3oojE012967; Sun, 24 May 2020 03:50:50 GMT (envelope-from mjg@FreeBSD.org) Received: (from mjg@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04O3on61012965; Sun, 24 May 2020 03:50:49 GMT (envelope-from mjg@FreeBSD.org) Message-Id: <202005240350.04O3on61012965@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mjg set sender to mjg@FreeBSD.org using -f From: Mateusz Guzik Date: Sun, 24 May 2020 03:50:49 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361429 - in head/sys: kern sys X-SVN-Group: head X-SVN-Commit-Author: mjg X-SVN-Commit-Paths: in head/sys: kern sys X-SVN-Commit-Revision: 361429 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2020 03:50:50 -0000 Author: mjg Date: Sun May 24 03:50:49 2020 New Revision: 361429 URL: https://svnweb.freebsd.org/changeset/base/361429 Log: vfs: scale foffset_lock by using atomics instead of serializing on mtx pool Contending cases still serialize on sleepq (which would be taken anyway). Reviewed by: kib (previous version) Differential Revision: https://reviews.freebsd.org/D21626 Modified: head/sys/kern/vfs_vnops.c head/sys/sys/file.h Modified: head/sys/kern/vfs_vnops.c ============================================================================== --- head/sys/kern/vfs_vnops.c Sat May 23 23:38:35 2020 (r361428) +++ head/sys/kern/vfs_vnops.c Sun May 24 03:50:49 2020 (r361429) @@ -71,6 +71,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -674,8 +675,9 @@ vn_rdwr_inchunks(enum uio_rw rw, struct vnode *vp, voi off_t foffset_lock(struct file *fp, int flags) { - struct mtx *mtxp; + volatile short *flagsp; off_t res; + short state; KASSERT((flags & FOF_OFFSET) == 0, ("FOF_OFFSET passed")); @@ -692,52 +694,66 @@ foffset_lock(struct file *fp, int flags) * According to McKusick the vn lock was protecting f_offset here. * It is now protected by the FOFFSET_LOCKED flag. */ - mtxp = mtx_pool_find(mtxpool_sleep, fp); - mtx_lock(mtxp); - if ((flags & FOF_NOLOCK) == 0) { - while (fp->f_vnread_flags & FOFFSET_LOCKED) { - fp->f_vnread_flags |= FOFFSET_LOCK_WAITING; - msleep(&fp->f_vnread_flags, mtxp, PUSER -1, - "vofflock", 0); + flagsp = &fp->f_vnread_flags; + if (atomic_cmpset_acq_16(flagsp, 0, FOFFSET_LOCKED)) + return (fp->f_offset); + + sleepq_lock(&fp->f_vnread_flags); + state = atomic_load_16(flagsp); + for (;;) { + if ((state & FOFFSET_LOCKED) == 0) { + if (!atomic_fcmpset_acq_16(flagsp, &state, + FOFFSET_LOCKED)) + continue; + break; } - fp->f_vnread_flags |= FOFFSET_LOCKED; + if ((state & FOFFSET_LOCK_WAITING) == 0) { + if (!atomic_fcmpset_acq_16(flagsp, &state, + state | FOFFSET_LOCK_WAITING)) + continue; + } + DROP_GIANT(); + sleepq_add(&fp->f_vnread_flags, NULL, "vofflock", 0, 0); + sleepq_wait(&fp->f_vnread_flags, PUSER -1); + PICKUP_GIANT(); + sleepq_lock(&fp->f_vnread_flags); + state = atomic_load_16(flagsp); } res = fp->f_offset; - mtx_unlock(mtxp); + sleepq_release(&fp->f_vnread_flags); return (res); } void foffset_unlock(struct file *fp, off_t val, int flags) { - struct mtx *mtxp; + volatile short *flagsp; + short state; KASSERT((flags & FOF_OFFSET) == 0, ("FOF_OFFSET passed")); -#if OFF_MAX <= LONG_MAX - if ((flags & FOF_NOLOCK) != 0) { - if ((flags & FOF_NOUPDATE) == 0) - fp->f_offset = val; - if ((flags & FOF_NEXTOFF) != 0) - fp->f_nextoff = val; - return; - } -#endif - - mtxp = mtx_pool_find(mtxpool_sleep, fp); - mtx_lock(mtxp); if ((flags & FOF_NOUPDATE) == 0) fp->f_offset = val; if ((flags & FOF_NEXTOFF) != 0) fp->f_nextoff = val; - if ((flags & FOF_NOLOCK) == 0) { - KASSERT((fp->f_vnread_flags & FOFFSET_LOCKED) != 0, - ("Lost FOFFSET_LOCKED")); - if (fp->f_vnread_flags & FOFFSET_LOCK_WAITING) - wakeup(&fp->f_vnread_flags); - fp->f_vnread_flags = 0; - } - mtx_unlock(mtxp); + +#if OFF_MAX <= LONG_MAX + if ((flags & FOF_NOLOCK) != 0) + return; +#endif + + flagsp = &fp->f_vnread_flags; + state = atomic_load_16(flagsp); + if ((state & FOFFSET_LOCK_WAITING) == 0 && + atomic_cmpset_rel_16(flagsp, state, 0)) + return; + + sleepq_lock(&fp->f_vnread_flags); + MPASS((fp->f_vnread_flags & FOFFSET_LOCKED) != 0); + MPASS((fp->f_vnread_flags & FOFFSET_LOCK_WAITING) != 0); + fp->f_vnread_flags = 0; + sleepq_broadcast(&fp->f_vnread_flags, SLEEPQ_SLEEP, 0, 0); + sleepq_release(&fp->f_vnread_flags); } void Modified: head/sys/sys/file.h ============================================================================== --- head/sys/sys/file.h Sat May 23 23:38:35 2020 (r361428) +++ head/sys/sys/file.h Sun May 24 03:50:49 2020 (r361429) @@ -163,7 +163,7 @@ struct fileops { * Below is the list of locks that protects members in struct file. * * (a) f_vnode lock required (shared allows both reads and writes) - * (f) protected with mtx_lock(mtx_pool_find(fp)) + * (f) updated with atomics and blocking on sleepq * (d) cdevpriv_mtx * none not locked */ From owner-svn-src-all@freebsd.org Sun May 24 09:46:45 2020 Return-Path: Delivered-To: svn-src-all@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 05AD1328988; Sun, 24 May 2020 09:46:45 +0000 (UTC) (envelope-from pstef@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49VFjw6MDzz4fkq; Sun, 24 May 2020 09:46:44 +0000 (UTC) (envelope-from pstef@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 D584C1EED7; Sun, 24 May 2020 09:46:44 +0000 (UTC) (envelope-from pstef@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04O9kiss043855; Sun, 24 May 2020 09:46:44 GMT (envelope-from pstef@FreeBSD.org) Received: (from pstef@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04O9kiQE043853; Sun, 24 May 2020 09:46:44 GMT (envelope-from pstef@FreeBSD.org) Message-Id: <202005240946.04O9kiQE043853@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: pstef set sender to pstef@FreeBSD.org using -f From: Piotr Pawel Stefaniak Date: Sun, 24 May 2020 09:46:44 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org Subject: svn commit: r361430 - stable/12/usr.bin/indent X-SVN-Group: stable-12 X-SVN-Commit-Author: pstef X-SVN-Commit-Paths: stable/12/usr.bin/indent X-SVN-Commit-Revision: 361430 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2020 09:46:45 -0000 Author: pstef Date: Sun May 24 09:46:44 2020 New Revision: 361430 URL: https://svnweb.freebsd.org/changeset/base/361430 Log: MFC r361337: indent(1): add fallthrough markers Modified: stable/12/usr.bin/indent/indent.c stable/12/usr.bin/indent/parse.c Directory Properties: stable/12/ (props changed) Modified: stable/12/usr.bin/indent/indent.c ============================================================================== --- stable/12/usr.bin/indent/indent.c Sun May 24 03:50:49 2020 (r361429) +++ stable/12/usr.bin/indent/indent.c Sun May 24 09:46:44 2020 (r361430) @@ -967,6 +967,7 @@ check_type: case structure: if (ps.p_l_follow > 0) goto copy_id; + /* FALLTHROUGH */ case decl: /* we have a declaration type (int, etc.) */ parse(decl); /* let parser worry about indentation */ if (ps.last_token == rparen && ps.tos <= 1) { Modified: stable/12/usr.bin/indent/parse.c ============================================================================== --- stable/12/usr.bin/indent/parse.c Sun May 24 03:50:49 2020 (r361429) +++ stable/12/usr.bin/indent/parse.c Sun May 24 09:46:44 2020 (r361430) @@ -107,6 +107,7 @@ parse(int tk) /* tk: the code for the construct scanne */ ps.i_l_follow = ps.il[ps.tos--]; /* the rest is the same as for dolit and forstmt */ + /* FALLTHROUGH */ case dolit: /* 'do' */ case forstmt: /* for (...) */ ps.p_stack[++ps.tos] = tk; From owner-svn-src-all@freebsd.org Sun May 24 10:12:32 2020 Return-Path: Delivered-To: svn-src-all@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 7EA9532921D; Sun, 24 May 2020 10:12:32 +0000 (UTC) (envelope-from bcr@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49VGHh2sf5z3T1J; Sun, 24 May 2020 10:12:32 +0000 (UTC) (envelope-from bcr@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 5DB6F1F90C; Sun, 24 May 2020 10:12:32 +0000 (UTC) (envelope-from bcr@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04OACW2l062340; Sun, 24 May 2020 10:12:32 GMT (envelope-from bcr@FreeBSD.org) Received: (from bcr@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04OACWEB062339; Sun, 24 May 2020 10:12:32 GMT (envelope-from bcr@FreeBSD.org) Message-Id: <202005241012.04OACWEB062339@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: bcr set sender to bcr@FreeBSD.org using -f From: Benedict Reuschling Date: Sun, 24 May 2020 10:12:32 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org Subject: svn commit: r361431 - stable/12/usr.bin/sed X-SVN-Group: stable-12 X-SVN-Commit-Author: bcr X-SVN-Commit-Paths: stable/12/usr.bin/sed X-SVN-Commit-Revision: 361431 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2020 10:12:32 -0000 Author: bcr (doc committer) Date: Sun May 24 10:12:31 2020 New Revision: 361431 URL: https://svnweb.freebsd.org/changeset/base/361431 Log: MFC r361248: Update SYNOPSIS section to be consistent regarding -u, -i, and -I. Apparently, when the -u, -i and -I options where added to sed(1), it was forgotten to add them to both lines in the SYNOPSIS section. They were only added to the second line, although they apply to both. With the updated SYNOPSIS, it is now allowed (and consistent) to run: sed -i BAK s/foo/bar/g some_file PR: 240556 Submitted by: Oliver Fromme MFC after: 5 days Modified: stable/12/usr.bin/sed/sed.1 Directory Properties: stable/12/ (props changed) Modified: stable/12/usr.bin/sed/sed.1 ============================================================================== --- stable/12/usr.bin/sed/sed.1 Sun May 24 09:46:44 2020 (r361430) +++ stable/12/usr.bin/sed/sed.1 Sun May 24 10:12:31 2020 (r361431) @@ -31,7 +31,7 @@ .\" @(#)sed.1 8.2 (Berkeley) 12/30/93 .\" $FreeBSD$ .\" -.Dd March 27, 2017 +.Dd May 19, 2020 .Dt SED 1 .Os .Sh NAME @@ -41,9 +41,11 @@ .Nm .Op Fl Ealnru .Ar command +.Op Fl I Ar extension +.Op Fl i Ar extension .Op Ar .Nm -.Op Fl Ealnr +.Op Fl Ealnru .Op Fl e Ar command .Op Fl f Ar command_file .Op Fl I Ar extension @@ -197,7 +199,8 @@ option was specified); .It a context address that consists of a regular expression preceded and followed by a -delimiter. The closing delimiter can also optionally be followed by the +delimiter. +The closing delimiter can also optionally be followed by the .Dq I character, to indicate that the regular expression is to be matched in a case-insensitive way. From owner-svn-src-all@freebsd.org Sun May 24 10:16:47 2020 Return-Path: Delivered-To: svn-src-all@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 DDB69329251; Sun, 24 May 2020 10:16:47 +0000 (UTC) (envelope-from bcr@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49VGNb5dF3z3TQ7; Sun, 24 May 2020 10:16:47 +0000 (UTC) (envelope-from bcr@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 BC8041F98B; Sun, 24 May 2020 10:16:47 +0000 (UTC) (envelope-from bcr@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04OAGluA062771; Sun, 24 May 2020 10:16:47 GMT (envelope-from bcr@FreeBSD.org) Received: (from bcr@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04OAGlvb062770; Sun, 24 May 2020 10:16:47 GMT (envelope-from bcr@FreeBSD.org) Message-Id: <202005241016.04OAGlvb062770@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: bcr set sender to bcr@FreeBSD.org using -f From: Benedict Reuschling Date: Sun, 24 May 2020 10:16:47 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org Subject: svn commit: r361432 - stable/12/lib/libc/stdlib X-SVN-Group: stable-12 X-SVN-Commit-Author: bcr X-SVN-Commit-Paths: stable/12/lib/libc/stdlib X-SVN-Commit-Revision: 361432 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2020 10:16:47 -0000 Author: bcr (doc committer) Date: Sun May 24 10:16:47 2020 New Revision: 361432 URL: https://svnweb.freebsd.org/changeset/base/361432 Log: MFC r361249: Fix a typo: argments -> arguments PR: 243294 Submitted by: Igor Ostapenko MFC after: 5 days Modified: stable/12/lib/libc/stdlib/getopt_long.3 Directory Properties: stable/12/ (props changed) Modified: stable/12/lib/libc/stdlib/getopt_long.3 ============================================================================== --- stable/12/lib/libc/stdlib/getopt_long.3 Sun May 24 10:12:31 2020 (r361431) +++ stable/12/lib/libc/stdlib/getopt_long.3 Sun May 24 10:16:47 2020 (r361432) @@ -244,7 +244,7 @@ matching the default behavior of .Xr getopt 3 . The default behavior without .Ql \&+ -is to permute non-option argments to the end of +is to permute non-option arguments to the end of .Fa argv . .Pp A leading From owner-svn-src-all@freebsd.org Sun May 24 10:19:27 2020 Return-Path: Delivered-To: svn-src-all@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 92705329981; Sun, 24 May 2020 10:19:27 +0000 (UTC) (envelope-from bcr@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49VGRg3CPgz3V9H; Sun, 24 May 2020 10:19:27 +0000 (UTC) (envelope-from bcr@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 64F731F727; Sun, 24 May 2020 10:19:27 +0000 (UTC) (envelope-from bcr@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04OAJRA6062961; Sun, 24 May 2020 10:19:27 GMT (envelope-from bcr@FreeBSD.org) Received: (from bcr@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04OAJRC0062960; Sun, 24 May 2020 10:19:27 GMT (envelope-from bcr@FreeBSD.org) Message-Id: <202005241019.04OAJRC0062960@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: bcr set sender to bcr@FreeBSD.org using -f From: Benedict Reuschling Date: Sun, 24 May 2020 10:19:27 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org Subject: svn commit: r361433 - stable/12/sbin/swapon X-SVN-Group: stable-12 X-SVN-Commit-Author: bcr X-SVN-Commit-Paths: stable/12/sbin/swapon X-SVN-Commit-Revision: 361433 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2020 10:19:27 -0000 Author: bcr (doc committer) Date: Sun May 24 10:19:26 2020 New Revision: 361433 URL: https://svnweb.freebsd.org/changeset/base/361433 Log: MFC r361250: The -F flag of swapon(8) requires -a to work. Before this change, swapon(8) implied that -F works as a standalone option, which is not the case and would produce a usage message. This change extends the description of the -F option to mention that -a is required with it. PR: 238551 Submitted by: Christian Baltini Modified: stable/12/sbin/swapon/swapon.8 Directory Properties: stable/12/ (props changed) Modified: stable/12/sbin/swapon/swapon.8 ============================================================================== --- stable/12/sbin/swapon/swapon.8 Sun May 24 10:16:47 2020 (r361432) +++ stable/12/sbin/swapon/swapon.8 Sun May 24 10:19:26 2020 (r361433) @@ -28,7 +28,7 @@ .\" @(#)swapon.8 8.1 (Berkeley) 6/5/93 .\" $FreeBSD$ .\" -.Dd June 21, 2019 +.Dd May 19, 2020 .Dt SWAPON 8 .Os .Sh NAME @@ -98,7 +98,7 @@ To delay .Nm swapon for a device until after .Nm savecore -has copied the crash dump to another location, use the +has copied the crash dump to another location, use the .Dq late option. .Pp @@ -143,7 +143,8 @@ are as follows: .It Fl F Ar fstab Specify the .Pa fstab -file to use. +file to use (in conjunction with +.Fl a Ns ). .El .Pp The From owner-svn-src-all@freebsd.org Sun May 24 14:54:22 2020 Return-Path: Delivered-To: svn-src-all@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 2B0BA32FF15; Sun, 24 May 2020 14:54:22 +0000 (UTC) (envelope-from avg@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49VNXt0P24z48Rw; Sun, 24 May 2020 14:54:22 +0000 (UTC) (envelope-from avg@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 08B8922C0F; Sun, 24 May 2020 14:54:22 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04OEsLDt036030; Sun, 24 May 2020 14:54:21 GMT (envelope-from avg@FreeBSD.org) Received: (from avg@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04OEsLJm036029; Sun, 24 May 2020 14:54:21 GMT (envelope-from avg@FreeBSD.org) Message-Id: <202005241454.04OEsLJm036029@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: avg set sender to avg@FreeBSD.org using -f From: Andriy Gapon Date: Sun, 24 May 2020 14:54:21 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361434 - head/lib/libprocstat X-SVN-Group: head X-SVN-Commit-Author: avg X-SVN-Commit-Paths: head/lib/libprocstat X-SVN-Commit-Revision: 361434 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2020 14:54:22 -0000 Author: avg Date: Sun May 24 14:54:21 2020 New Revision: 361434 URL: https://svnweb.freebsd.org/changeset/base/361434 Log: libprocstat: try to fix fallout from r361363 The revision caused libprocstat to have two undefined symbols: - __start_set_pcpu - __stop_set_pcpu probably because of __GLOBL() used in sys/pcpu.h under _KERNEL. The symbols are not accessed by anything and the linker in base does not complain about them, but some ports are failing to build. Hack around the problem by providing definitions for those symbols. Probably there is a better solution, but I could not think of it yet. Reported by: zeising MFC after: 3 days X-MFC with: r361363 Sponsored by: Panzura Modified: head/lib/libprocstat/zfs_defs.c Modified: head/lib/libprocstat/zfs_defs.c ============================================================================== --- head/lib/libprocstat/zfs_defs.c Sun May 24 10:19:26 2020 (r361433) +++ head/lib/libprocstat/zfs_defs.c Sun May 24 14:54:21 2020 (r361434) @@ -57,3 +57,7 @@ size_t sizeof_znode_t = sizeof(znode_t); size_t offsetof_z_id = offsetof(znode_t, z_id); size_t offsetof_z_size = offsetof(znode_t, z_size); size_t offsetof_z_mode = offsetof(znode_t, z_mode); + +/* Keep pcpu.h satisfied. */ +uintptr_t *__start_set_pcpu; +uintptr_t *__stop_set_pcpu; From owner-svn-src-all@freebsd.org Sun May 24 15:58:39 2020 Return-Path: Delivered-To: svn-src-all@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 36F992C9533; Sun, 24 May 2020 15:58:39 +0000 (UTC) (envelope-from carpeddiem@gmail.com) Received: from mail-io1-f65.google.com (mail-io1-f65.google.com [209.85.166.65]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "GTS CA 1O1" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 49VPz25l1Nz4DrN; Sun, 24 May 2020 15:58:38 +0000 (UTC) (envelope-from carpeddiem@gmail.com) Received: by mail-io1-f65.google.com with SMTP id u23so3378747iot.12; Sun, 24 May 2020 08:58:38 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=Px7LKZz0jfa9bTeR3FtYMBvIV/ZHYkAyD+64We3Y76I=; b=K0I8CO/PN28FSvC+O4/1rK3cFZo+4cPe7Xy5/s0xZn/g/GIu7PEzy/I1bdKrSXRTd8 f6jUL3JLQH3KIgiTvm/4VzZSmkgvO+/kboVKpsw5YbrknA1Brprdc/d2h1k3uaRGAyBH v2X243wuBnAAVIiPBBlMpAxzxcxNu+F/RgC/hImGLnHgjYhkYBnvD2Vo1Zd2hhg1oDS1 bjuC6k0aTh7QGI5YeIpQJmwh825CtpoUtSoUDB5DB9AjFDcGNR/ZWw8WOoTK/G/11xcq oVsF1M6tPIUW23UkUvq1Ml2NCjd3fonzkmUY2D1VJgRS7TScO8yPR7z0oGw78ZdiE2WN phwQ== X-Gm-Message-State: AOAM532ZNZEqIO8KIGHVNCoACC9uyW6HgWhkNu5gXlFfKyppWBOs+bn5 lPA4MtCP2AAWAauaiZ8JFKLBGXdyUrGeBTgxEa/wxsxRUbs= X-Google-Smtp-Source: ABdhPJw5CL7M39fp/c+yXlM8CkdrlffkXb6KSTptdoqSEzz85AMzKlj1AkZ+rcp/mUP8hxD9Y7/AZMEUo579MUWdPLM= X-Received: by 2002:a02:ce8a:: with SMTP id y10mr1758120jaq.136.1590335917282; Sun, 24 May 2020 08:58:37 -0700 (PDT) MIME-Version: 1.0 References: <202005240350.04O3on61012965@repo.freebsd.org> In-Reply-To: <202005240350.04O3on61012965@repo.freebsd.org> From: Ed Maste Date: Sun, 24 May 2020 11:58:25 -0400 Message-ID: Subject: Re: svn commit: r361429 - in head/sys: kern sys To: Mateusz Guzik Cc: src-committers , svn-src-all , svn-src-head Content-Type: text/plain; charset="UTF-8" X-Rspamd-Queue-Id: 49VPz25l1Nz4DrN X-Spamd-Bar: ---- Authentication-Results: mx1.freebsd.org; none X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[]; ASN(0.00)[asn:15169, ipnet:209.85.128.0/17, country:US] X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2020 15:58:39 -0000 On Sat, 23 May 2020 at 23:50, Mateusz Guzik wrote: > > Author: mjg > Date: Sun May 24 03:50:49 2020 > New Revision: 361429 > URL: https://svnweb.freebsd.org/changeset/base/361429 > > Log: > vfs: scale foffset_lock by using atomics instead of serializing on mtx pool > > Contending cases still serialize on sleepq (which would be taken anyway). > > Reviewed by: kib (previous version) > Differential Revision: https://reviews.freebsd.org/D21626 It looks like the BeagleBone Black smoke test is failing as of this revision - appears to be hanging during shutdown. The CI script issues a shutdown and times out waiting for "Uptime:". The last output from the console shows: --- FreeBSD beaglebone-cidev 13.0-CURRENT FreeBSD 13.0-CURRENT #2980 r361429: Sun May 24 05:24:56 UTC 2020 root@FreeBSD-head-armv7-build_devtest.jail:/usr/obj/usr/src/arm.armv7/sys/GENERIC arm root@beaglebone-cidev:~ # poweroff poweroff Shutdown NOW! poweroff: [pid 921] root@beaglebone-cidev:~ # Jan 1 00:00:54 beaglebone-cidev shutdown[921]: power-down by root: --- From owner-svn-src-all@freebsd.org Sun May 24 16:47:28 2020 Return-Path: Delivered-To: svn-src-all@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 2547D2CA960; Sun, 24 May 2020 16:47:28 +0000 (UTC) (envelope-from cy@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49VR3M6lTpz4Jdx; Sun, 24 May 2020 16:47:27 +0000 (UTC) (envelope-from cy@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 E1D67242BD; Sun, 24 May 2020 16:47:27 +0000 (UTC) (envelope-from cy@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04OGlROp004437; Sun, 24 May 2020 16:47:27 GMT (envelope-from cy@FreeBSD.org) Received: (from cy@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04OGlRZW004435; Sun, 24 May 2020 16:47:27 GMT (envelope-from cy@FreeBSD.org) Message-Id: <202005241647.04OGlRZW004435@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: cy set sender to cy@FreeBSD.org using -f From: Cy Schubert Date: Sun, 24 May 2020 16:47:27 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org Subject: svn commit: r361435 - in stable: 11/contrib/unbound 11/contrib/unbound/.github 11/contrib/unbound/cachedb 11/contrib/unbound/compat 11/contrib/unbound/contrib 11/contrib/unbound/daemon 11/contrib/u... X-SVN-Group: stable-11 X-SVN-Commit-Author: cy X-SVN-Commit-Paths: in stable: 11/contrib/unbound 11/contrib/unbound/.github 11/contrib/unbound/cachedb 11/contrib/unbound/compat 11/contrib/unbound/contrib 11/contrib/unbound/daemon 11/contrib/unbound/doc 11/contrib/unb... X-SVN-Commit-Revision: 361435 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2020 16:47:28 -0000 Author: cy Date: Sun May 24 16:47:27 2020 New Revision: 361435 URL: https://svnweb.freebsd.org/changeset/base/361435 Log: MFC r361344: MFV r361322: Update unbound 1.9.6 --> 1.10.1. Bug Fixes: - CVE-2020-12662 Unbound can be tricked into amplifying an incoming query into a large number of queries directed to a target. - CVE-2020-12663 Malformed answers from upstream name servers can be used to make Unbound unresponsive. Reported by: emaste Relnotes: yes Security: CVE-2020-12662, CVE-2020-12663 Added: stable/11/contrib/unbound/.github/ - copied from r361344, head/contrib/unbound/.github/ stable/11/contrib/unbound/contrib/drop2rpz - copied unchanged from r361344, head/contrib/unbound/contrib/drop2rpz stable/11/contrib/unbound/contrib/unbound_portable.service.in - copied unchanged from r361344, head/contrib/unbound/contrib/unbound_portable.service.in stable/11/contrib/unbound/contrib/unbound_smf23.tar.gz - copied unchanged from r361344, head/contrib/unbound/contrib/unbound_smf23.tar.gz stable/11/contrib/unbound/services/rpz.c - copied unchanged from r361344, head/contrib/unbound/services/rpz.c stable/11/contrib/unbound/services/rpz.h - copied unchanged from r361344, head/contrib/unbound/services/rpz.h Deleted: stable/11/contrib/unbound/contrib/unbound_smf22.tar.gz Modified: stable/11/contrib/unbound/Makefile.in stable/11/contrib/unbound/README.md stable/11/contrib/unbound/aclocal.m4 stable/11/contrib/unbound/cachedb/cachedb.c stable/11/contrib/unbound/compat/getentropy_solaris.c stable/11/contrib/unbound/config.guess stable/11/contrib/unbound/config.h.in stable/11/contrib/unbound/config.sub stable/11/contrib/unbound/configure stable/11/contrib/unbound/configure.ac stable/11/contrib/unbound/contrib/README stable/11/contrib/unbound/contrib/fastrpz.patch stable/11/contrib/unbound/contrib/libunbound.pc.in stable/11/contrib/unbound/contrib/unbound.service.in stable/11/contrib/unbound/contrib/unbound_munin_ stable/11/contrib/unbound/daemon/daemon.c stable/11/contrib/unbound/daemon/daemon.h stable/11/contrib/unbound/daemon/remote.c stable/11/contrib/unbound/daemon/stats.c stable/11/contrib/unbound/daemon/unbound.c stable/11/contrib/unbound/daemon/worker.c stable/11/contrib/unbound/doc/Changelog stable/11/contrib/unbound/doc/README stable/11/contrib/unbound/doc/example.conf.in stable/11/contrib/unbound/doc/libunbound.3.in stable/11/contrib/unbound/doc/unbound-anchor.8.in stable/11/contrib/unbound/doc/unbound-checkconf.8.in stable/11/contrib/unbound/doc/unbound-control.8.in stable/11/contrib/unbound/doc/unbound-host.1.in stable/11/contrib/unbound/doc/unbound.8.in stable/11/contrib/unbound/doc/unbound.conf.5.in stable/11/contrib/unbound/edns-subnet/subnetmod.c stable/11/contrib/unbound/install-sh stable/11/contrib/unbound/iterator/iter_delegpt.c stable/11/contrib/unbound/iterator/iter_delegpt.h stable/11/contrib/unbound/iterator/iter_scrub.c stable/11/contrib/unbound/iterator/iter_utils.c stable/11/contrib/unbound/iterator/iterator.c stable/11/contrib/unbound/iterator/iterator.h stable/11/contrib/unbound/libunbound/context.c stable/11/contrib/unbound/libunbound/libworker.c stable/11/contrib/unbound/libunbound/unbound.h stable/11/contrib/unbound/respip/respip.c stable/11/contrib/unbound/respip/respip.h stable/11/contrib/unbound/services/authzone.c stable/11/contrib/unbound/services/authzone.h stable/11/contrib/unbound/services/cache/dns.c stable/11/contrib/unbound/services/cache/dns.h stable/11/contrib/unbound/services/localzone.c stable/11/contrib/unbound/services/localzone.h stable/11/contrib/unbound/services/mesh.c stable/11/contrib/unbound/services/mesh.h stable/11/contrib/unbound/services/outside_network.c stable/11/contrib/unbound/services/view.c stable/11/contrib/unbound/sldns/parse.c stable/11/contrib/unbound/sldns/str2wire.c stable/11/contrib/unbound/smallapp/unbound-checkconf.c stable/11/contrib/unbound/smallapp/unbound-control.c stable/11/contrib/unbound/util/config_file.c stable/11/contrib/unbound/util/config_file.h stable/11/contrib/unbound/util/configlexer.lex stable/11/contrib/unbound/util/configparser.y stable/11/contrib/unbound/util/data/dname.c stable/11/contrib/unbound/util/data/dname.h stable/11/contrib/unbound/util/data/msgencode.c stable/11/contrib/unbound/util/data/msgparse.c stable/11/contrib/unbound/util/data/msgparse.h stable/11/contrib/unbound/util/data/msgreply.c stable/11/contrib/unbound/util/data/packed_rrset.c stable/11/contrib/unbound/util/data/packed_rrset.h stable/11/contrib/unbound/util/fptr_wlist.c stable/11/contrib/unbound/util/fptr_wlist.h stable/11/contrib/unbound/util/iana_ports.inc stable/11/contrib/unbound/util/log.c stable/11/contrib/unbound/util/log.h stable/11/contrib/unbound/util/module.h stable/11/contrib/unbound/util/net_help.c stable/11/contrib/unbound/util/net_help.h stable/11/contrib/unbound/util/netevent.c stable/11/contrib/unbound/util/random.c stable/11/contrib/unbound/util/storage/dnstree.c stable/11/contrib/unbound/util/storage/dnstree.h stable/11/contrib/unbound/validator/val_secalgo.c stable/11/contrib/unbound/validator/validator.c stable/11/lib/libunbound/Makefile Directory Properties: stable/11/ (props changed) Changes in other areas also in this revision: Added: stable/12/contrib/unbound/.github/ - copied from r361344, head/contrib/unbound/.github/ stable/12/contrib/unbound/contrib/drop2rpz - copied unchanged from r361344, head/contrib/unbound/contrib/drop2rpz stable/12/contrib/unbound/contrib/unbound_portable.service.in - copied unchanged from r361344, head/contrib/unbound/contrib/unbound_portable.service.in stable/12/contrib/unbound/contrib/unbound_smf23.tar.gz - copied unchanged from r361344, head/contrib/unbound/contrib/unbound_smf23.tar.gz stable/12/contrib/unbound/services/rpz.c - copied unchanged from r361344, head/contrib/unbound/services/rpz.c stable/12/contrib/unbound/services/rpz.h - copied unchanged from r361344, head/contrib/unbound/services/rpz.h Deleted: stable/12/contrib/unbound/contrib/unbound_smf22.tar.gz Modified: stable/12/contrib/unbound/Makefile.in stable/12/contrib/unbound/README.md stable/12/contrib/unbound/aclocal.m4 stable/12/contrib/unbound/cachedb/cachedb.c stable/12/contrib/unbound/compat/getentropy_solaris.c stable/12/contrib/unbound/config.guess stable/12/contrib/unbound/config.h.in stable/12/contrib/unbound/config.sub stable/12/contrib/unbound/configure stable/12/contrib/unbound/configure.ac stable/12/contrib/unbound/contrib/README stable/12/contrib/unbound/contrib/fastrpz.patch stable/12/contrib/unbound/contrib/libunbound.pc.in stable/12/contrib/unbound/contrib/unbound.service.in stable/12/contrib/unbound/contrib/unbound_munin_ stable/12/contrib/unbound/daemon/daemon.c stable/12/contrib/unbound/daemon/daemon.h stable/12/contrib/unbound/daemon/remote.c stable/12/contrib/unbound/daemon/stats.c stable/12/contrib/unbound/daemon/unbound.c stable/12/contrib/unbound/daemon/worker.c stable/12/contrib/unbound/doc/Changelog stable/12/contrib/unbound/doc/README stable/12/contrib/unbound/doc/example.conf.in stable/12/contrib/unbound/doc/libunbound.3.in stable/12/contrib/unbound/doc/unbound-anchor.8.in stable/12/contrib/unbound/doc/unbound-checkconf.8.in stable/12/contrib/unbound/doc/unbound-control.8.in stable/12/contrib/unbound/doc/unbound-host.1.in stable/12/contrib/unbound/doc/unbound.8.in stable/12/contrib/unbound/doc/unbound.conf.5.in stable/12/contrib/unbound/edns-subnet/subnetmod.c stable/12/contrib/unbound/install-sh stable/12/contrib/unbound/iterator/iter_delegpt.c stable/12/contrib/unbound/iterator/iter_delegpt.h stable/12/contrib/unbound/iterator/iter_scrub.c stable/12/contrib/unbound/iterator/iter_utils.c stable/12/contrib/unbound/iterator/iterator.c stable/12/contrib/unbound/iterator/iterator.h stable/12/contrib/unbound/libunbound/context.c stable/12/contrib/unbound/libunbound/libworker.c stable/12/contrib/unbound/libunbound/unbound.h stable/12/contrib/unbound/respip/respip.c stable/12/contrib/unbound/respip/respip.h stable/12/contrib/unbound/services/authzone.c stable/12/contrib/unbound/services/authzone.h stable/12/contrib/unbound/services/cache/dns.c stable/12/contrib/unbound/services/cache/dns.h stable/12/contrib/unbound/services/localzone.c stable/12/contrib/unbound/services/localzone.h stable/12/contrib/unbound/services/mesh.c stable/12/contrib/unbound/services/mesh.h stable/12/contrib/unbound/services/outside_network.c stable/12/contrib/unbound/services/view.c stable/12/contrib/unbound/sldns/parse.c stable/12/contrib/unbound/sldns/str2wire.c stable/12/contrib/unbound/smallapp/unbound-checkconf.c stable/12/contrib/unbound/smallapp/unbound-control.c stable/12/contrib/unbound/util/config_file.c stable/12/contrib/unbound/util/config_file.h stable/12/contrib/unbound/util/configlexer.lex stable/12/contrib/unbound/util/configparser.y stable/12/contrib/unbound/util/data/dname.c stable/12/contrib/unbound/util/data/dname.h stable/12/contrib/unbound/util/data/msgencode.c stable/12/contrib/unbound/util/data/msgparse.c stable/12/contrib/unbound/util/data/msgparse.h stable/12/contrib/unbound/util/data/msgreply.c stable/12/contrib/unbound/util/data/packed_rrset.c stable/12/contrib/unbound/util/data/packed_rrset.h stable/12/contrib/unbound/util/fptr_wlist.c stable/12/contrib/unbound/util/fptr_wlist.h stable/12/contrib/unbound/util/iana_ports.inc stable/12/contrib/unbound/util/log.c stable/12/contrib/unbound/util/log.h stable/12/contrib/unbound/util/module.h stable/12/contrib/unbound/util/net_help.c stable/12/contrib/unbound/util/net_help.h stable/12/contrib/unbound/util/netevent.c stable/12/contrib/unbound/util/random.c stable/12/contrib/unbound/util/storage/dnstree.c stable/12/contrib/unbound/util/storage/dnstree.h stable/12/contrib/unbound/validator/val_secalgo.c stable/12/contrib/unbound/validator/validator.c stable/12/lib/libunbound/Makefile Directory Properties: stable/12/ (props changed) Modified: stable/11/contrib/unbound/Makefile.in ============================================================================== --- stable/11/contrib/unbound/Makefile.in Sun May 24 14:54:21 2020 (r361434) +++ stable/11/contrib/unbound/Makefile.in Sun May 24 16:47:27 2020 (r361435) @@ -110,6 +110,7 @@ iterator/iter_delegpt.c iterator/iter_donotq.c iterato iterator/iter_hints.c iterator/iter_priv.c iterator/iter_resptype.c \ iterator/iter_scrub.c iterator/iter_utils.c services/listen_dnsport.c \ services/localzone.c services/mesh.c services/modstack.c services/view.c \ +services/rpz.c \ services/outbound_list.c services/outside_network.c util/alloc.c \ util/config_file.c util/configlexer.c util/configparser.c \ util/shm_side/shm_main.c services/authzone.c \ @@ -135,7 +136,7 @@ outbound_list.lo alloc.lo config_file.lo configlexer.l fptr_wlist.lo edns.lo locks.lo log.lo mini_event.lo module.lo net_help.lo \ random.lo rbtree.lo regional.lo rtt.lo dnstree.lo lookup3.lo lruhash.lo \ slabhash.lo tcp_conn_limit.lo timehist.lo tube.lo winsock_event.lo \ -autotrust.lo val_anchor.lo \ +autotrust.lo val_anchor.lo rpz.lo \ validator.lo val_kcache.lo val_kentry.lo val_neg.lo val_nsec3.lo val_nsec.lo \ val_secalgo.lo val_sigcrypt.lo val_utils.lo dns64.lo cachedb.lo redis.lo authzone.lo \ $(SUBNET_OBJ) $(PYTHONMOD_OBJ) $(CHECKLOCK_OBJ) $(DNSTAP_OBJ) $(DNSCRYPT_OBJ) \ @@ -642,6 +643,9 @@ depend: fi rm -f $(DEPEND_TMP) $(DEPEND_TMP2) +# build rules +ipset.lo ipset.o: $(srcdir)/ipset/ipset.c + # Dependencies dns.lo dns.o: $(srcdir)/services/cache/dns.c config.h $(srcdir)/iterator/iter_delegpt.h $(srcdir)/util/log.h \ $(srcdir)/iterator/iter_utils.h $(srcdir)/iterator/iter_resptype.h $(srcdir)/validator/val_nsec.h \ @@ -654,9 +658,9 @@ infra.lo infra.o: $(srcdir)/services/cache/infra.c con $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/wire2str.h $(srcdir)/services/cache/infra.h \ $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/storage/dnstree.h \ $(srcdir)/util/rbtree.h $(srcdir)/util/rtt.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/util/data/msgreply.h \ - $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/slabhash.h $(srcdir)/util/storage/lookup3.h \ - $(srcdir)/util/data/dname.h $(srcdir)/util/net_help.h $(srcdir)/util/config_file.h $(srcdir)/iterator/iterator.h \ + $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \ + $(srcdir)/util/storage/slabhash.h $(srcdir)/util/storage/lookup3.h $(srcdir)/util/data/dname.h \ + $(srcdir)/util/net_help.h $(srcdir)/util/config_file.h $(srcdir)/iterator/iterator.h \ $(srcdir)/services/outbound_list.h $(srcdir)/util/module.h $(srcdir)/util/data/msgparse.h \ $(srcdir)/sldns/pkthdr.h rrset.lo rrset.o: $(srcdir)/services/cache/rrset.c config.h $(srcdir)/services/cache/rrset.h \ @@ -681,11 +685,14 @@ msgparse.lo msgparse.o: $(srcdir)/util/data/msgparse.c msgreply.lo msgreply.o: $(srcdir)/util/data/msgreply.c config.h $(srcdir)/util/data/msgreply.h \ $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/data/packed_rrset.h \ $(srcdir)/util/storage/lookup3.h $(srcdir)/util/alloc.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/util/net_help.h \ - $(srcdir)/util/data/dname.h $(srcdir)/util/regional.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ - $(srcdir)/sldns/rrdef.h $(srcdir)/util/data/msgencode.h $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/wire2str.h \ - $(srcdir)/util/module.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h \ - $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h + $(srcdir)/util/net_help.h $(srcdir)/util/data/dname.h \ + $(srcdir)/util/regional.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h \ + $(srcdir)/util/data/msgencode.h $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/wire2str.h $(srcdir)/util/module.h \ + $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h \ + $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h \ + $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h $(srcdir)/util/config_file.h \ + $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h \ + $(srcdir)/respip/respip.h packed_rrset.lo packed_rrset.o: $(srcdir)/util/data/packed_rrset.c config.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ $(srcdir)/util/data/dname.h $(srcdir)/util/storage/lookup3.h $(srcdir)/util/alloc.h $(srcdir)/util/regional.h \ @@ -699,11 +706,12 @@ iterator.lo iterator.o: $(srcdir)/iterator/iterator.c $(srcdir)/iterator/iter_delegpt.h $(srcdir)/iterator/iter_scrub.h $(srcdir)/iterator/iter_priv.h \ $(srcdir)/validator/val_neg.h $(srcdir)/services/cache/dns.h $(srcdir)/services/cache/infra.h \ $(srcdir)/util/rtt.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/services/authzone.h \ - $(srcdir)/services/mesh.h $(srcdir)/services/modstack.h $(srcdir)/util/net_help.h $(srcdir)/util/regional.h \ + $(srcdir)/services/authzone.h $(srcdir)/services/mesh.h \ + $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h $(srcdir)/services/view.h \ + $(srcdir)/sldns/sbuffer.h $(srcdir)/util/config_file.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \ + $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/util/net_help.h $(srcdir)/util/regional.h \ $(srcdir)/util/data/dname.h $(srcdir)/util/data/msgencode.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h \ - $(srcdir)/util/config_file.h $(srcdir)/util/random.h $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/str2wire.h \ - $(srcdir)/sldns/parseutil.h $(srcdir)/sldns/sbuffer.h + $(srcdir)/util/random.h $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/parseutil.h iter_delegpt.lo iter_delegpt.o: $(srcdir)/iterator/iter_delegpt.c config.h $(srcdir)/iterator/iter_delegpt.h \ $(srcdir)/util/log.h $(srcdir)/services/cache/dns.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \ $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/regional.h \ @@ -745,88 +753,106 @@ iter_utils.lo iter_utils.o: $(srcdir)/iterator/iter_ut $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/iterator/iter_fwd.h \ $(srcdir)/iterator/iter_donotq.h $(srcdir)/iterator/iter_delegpt.h $(srcdir)/iterator/iter_priv.h \ $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/services/cache/dns.h \ - $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h $(srcdir)/util/net_help.h \ - $(srcdir)/util/config_file.h $(srcdir)/util/regional.h $(srcdir)/util/data/dname.h $(srcdir)/util/random.h \ - $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/services/modstack.h \ + $(srcdir)/services/cache/dns.h $(srcdir)/services/cache/rrset.h \ + $(srcdir)/util/storage/slabhash.h $(srcdir)/util/net_help.h $(srcdir)/util/config_file.h \ + $(srcdir)/util/regional.h $(srcdir)/util/data/dname.h $(srcdir)/util/random.h $(srcdir)/util/fptr_wlist.h \ + $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h \ + $(srcdir)/services/localzone.h $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h $(srcdir)/services/authzone.h \ + $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h \ $(srcdir)/validator/val_anchor.h $(srcdir)/validator/val_kcache.h $(srcdir)/validator/val_kentry.h \ - $(srcdir)/validator/val_utils.h $(srcdir)/validator/val_sigcrypt.h $(srcdir)/sldns/sbuffer.h \ - $(srcdir)/sldns/str2wire.h + $(srcdir)/validator/val_utils.h $(srcdir)/validator/val_sigcrypt.h $(srcdir)/sldns/str2wire.h listen_dnsport.lo listen_dnsport.o: $(srcdir)/services/listen_dnsport.c config.h \ $(srcdir)/services/listen_dnsport.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ - $(srcdir)/services/outside_network.h $(srcdir)/util/rbtree.h \ - $(srcdir)/util/config_file.h $(srcdir)/util/net_help.h $(srcdir)/sldns/sbuffer.h $(srcdir)/services/mesh.h \ - $(srcdir)/util/data/msgparse.h $(srcdir)/util/storage/lruhash.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h \ + $(srcdir)/services/outside_network.h $(srcdir)/util/rbtree.h \ + $(srcdir)/util/log.h $(srcdir)/util/config_file.h $(srcdir)/util/net_help.h \ + $(srcdir)/sldns/sbuffer.h $(srcdir)/services/mesh.h $(srcdir)/util/data/msgparse.h \ + $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h \ $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \ - $(srcdir)/services/modstack.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h + $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h \ + $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h $(srcdir)/services/authzone.h \ + $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h \ + $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h localzone.lo localzone.o: $(srcdir)/services/localzone.c config.h $(srcdir)/services/localzone.h \ $(srcdir)/util/rbtree.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/storage/dnstree.h \ $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/data/msgreply.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ - $(srcdir)/sldns/rrdef.h $(srcdir)/services/view.h $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/sbuffer.h \ + $(srcdir)/sldns/rrdef.h $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/str2wire.h \ $(srcdir)/util/regional.h $(srcdir)/util/config_file.h $(srcdir)/util/data/dname.h \ $(srcdir)/util/data/msgencode.h $(srcdir)/util/net_help.h $(srcdir)/util/netevent.h \ - $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/dnscrypt/cert.h \ - $(srcdir)/util/as112.h + $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/util/as112.h mesh.lo mesh.o: $(srcdir)/services/mesh.c config.h $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h \ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/data/msgparse.h \ - $(srcdir)/util/storage/lruhash.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/module.h \ - $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/services/modstack.h \ + $(srcdir)/util/data/msgparse.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ + $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h \ + $(srcdir)/util/data/packed_rrset.h $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h \ + $(srcdir)/services/localzone.h $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h \ + $(srcdir)/sldns/sbuffer.h $(srcdir)/util/config_file.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h \ + $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h \ $(srcdir)/services/outbound_list.h $(srcdir)/services/cache/dns.h $(srcdir)/util/net_help.h \ - $(srcdir)/util/regional.h $(srcdir)/util/data/msgencode.h $(srcdir)/util/timehist.h $(srcdir)/util/fptr_wlist.h \ - $(srcdir)/util/tube.h $(srcdir)/util/alloc.h $(srcdir)/util/config_file.h $(srcdir)/util/edns.h $(srcdir)/sldns/sbuffer.h \ - $(srcdir)/sldns/wire2str.h $(srcdir)/services/localzone.h $(srcdir)/util/storage/dnstree.h \ - $(srcdir)/services/view.h $(srcdir)/util/data/dname.h $(srcdir)/respip/respip.h \ + $(srcdir)/util/regional.h $(srcdir)/util/data/msgencode.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h \ + $(srcdir)/util/alloc.h $(srcdir)/util/edns.h $(srcdir)/sldns/wire2str.h $(srcdir)/util/data/dname.h \ $(srcdir)/services/listen_dnsport.h modstack.lo modstack.o: $(srcdir)/services/modstack.c config.h $(srcdir)/services/modstack.h \ $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \ $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/netevent.h \ - $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/dnscrypt/cert.h \ - $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/dns64/dns64.h \ - $(srcdir)/iterator/iterator.h $(srcdir)/services/outbound_list.h $(srcdir)/validator/validator.h \ - $(srcdir)/validator/val_utils.h $(srcdir)/respip/respip.h $(srcdir)/services/localzone.h \ - $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h $(PYTHONMOD_HEADER) $(srcdir)/ipsecmod/ipsecmod.h \ - $(srcdir)/util/storage/slabhash.h $(srcdir)/edns-subnet/addrtree.h $(srcdir)/edns-subnet/edns-subnet.h \ - $(srcdir)/ipset/ipset.h + $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/util/tube.h \ + $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h \ + $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h \ + $(srcdir)/util/config_file.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \ + $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/dns64/dns64.h $(srcdir)/iterator/iterator.h \ + $(srcdir)/services/outbound_list.h $(srcdir)/validator/validator.h $(srcdir)/validator/val_utils.h view.lo view.o: $(srcdir)/services/view.c config.h $(srcdir)/services/view.h $(srcdir)/util/rbtree.h \ $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/services/localzone.h $(srcdir)/util/storage/dnstree.h \ $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/data/msgreply.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ - $(srcdir)/sldns/rrdef.h $(srcdir)/util/config_file.h + $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/sbuffer.h $(srcdir)/util/config_file.h +rpz.lo rpz.o: $(srcdir)/services/rpz.c config.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h \ + $(srcdir)/util/rbtree.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/storage/dnstree.h \ + $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/data/msgreply.h \ + $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ + $(srcdir)/sldns/rrdef.h $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h $(srcdir)/util/config_file.h \ + $(srcdir)/services/authzone.h $(srcdir)/services/mesh.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ + $(srcdir)/services/modstack.h $(srcdir)/libunbound/unbound.h \ + $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/respip/respip.h $(srcdir)/sldns/wire2str.h \ + $(srcdir)/sldns/str2wire.h $(srcdir)/util/data/dname.h $(srcdir)/util/net_help.h $(srcdir)/util/regional.h outbound_list.lo outbound_list.o: $(srcdir)/services/outbound_list.c config.h \ $(srcdir)/services/outbound_list.h $(srcdir)/services/outside_network.h $(srcdir)/util/rbtree.h \ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/util/locks.h $(srcdir)/util/log.h + outside_network.lo outside_network.o: $(srcdir)/services/outside_network.c config.h \ $(srcdir)/services/outside_network.h $(srcdir)/util/rbtree.h $(srcdir)/util/netevent.h \ - $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/dnscrypt/cert.h \ - $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/services/listen_dnsport.h \ - $(srcdir)/services/cache/infra.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/storage/dnstree.h \ - $(srcdir)/util/rtt.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \ - $(srcdir)/iterator/iterator.h $(srcdir)/services/outbound_list.h $(srcdir)/util/module.h \ - $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/data/msgencode.h \ - $(srcdir)/util/data/dname.h $(srcdir)/util/net_help.h $(srcdir)/util/random.h $(srcdir)/util/fptr_wlist.h \ - $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/services/modstack.h $(srcdir)/sldns/sbuffer.h \ - $(srcdir)/dnstap/dnstap.h \ - + $(srcdir)/dnscrypt/dnscrypt.h \ + $(srcdir)/services/listen_dnsport.h $(srcdir)/services/cache/infra.h $(srcdir)/util/storage/lruhash.h \ + $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rtt.h \ + $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/iterator/iterator.h \ + $(srcdir)/services/outbound_list.h $(srcdir)/util/module.h $(srcdir)/util/data/msgparse.h \ + $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/data/msgencode.h $(srcdir)/util/data/dname.h \ + $(srcdir)/util/net_help.h $(srcdir)/util/random.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h \ + $(srcdir)/services/mesh.h $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h \ + $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h $(srcdir)/util/config_file.h $(srcdir)/services/authzone.h \ + $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h \ + $(srcdir)/dnstap/dnstap.h alloc.lo alloc.o: $(srcdir)/util/alloc.c config.h $(srcdir)/util/alloc.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ $(srcdir)/util/regional.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \ $(srcdir)/util/fptr_wlist.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/util/module.h \ - $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h \ - $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h + $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h \ + $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h \ + $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h \ + $(srcdir)/services/localzone.h $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h \ + $(srcdir)/sldns/sbuffer.h $(srcdir)/util/config_file.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h \ + $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h config_file.lo config_file.o: $(srcdir)/util/config_file.c config.h $(srcdir)/util/log.h \ $(srcdir)/util/configyyrename.h $(srcdir)/util/config_file.h util/configparser.h \ $(srcdir)/util/net_help.h $(srcdir)/util/data/msgparse.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \ $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/regional.h $(srcdir)/util/fptr_wlist.h \ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h \ - $(srcdir)/services/modstack.h $(srcdir)/util/data/dname.h $(srcdir)/util/rtt.h $(srcdir)/services/cache/infra.h \ - $(srcdir)/util/storage/dnstree.h $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/parseutil.h \ + $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h \ + $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h $(srcdir)/util/storage/dnstree.h \ + $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h \ + $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/util/data/dname.h \ + $(srcdir)/util/rtt.h $(srcdir)/services/cache/infra.h $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/parseutil.h \ $(srcdir)/iterator/iterator.h $(srcdir)/services/outbound_list.h $(srcdir)/util/iana_ports.inc configlexer.lo configlexer.o: util/configlexer.c config.h $(srcdir)/util/configyyrename.h \ $(srcdir)/util/config_file.h util/configparser.h @@ -837,71 +863,83 @@ shm_main.lo shm_main.o: $(srcdir)/util/shm_side/shm_ma $(srcdir)/util/alloc.h $(srcdir)/services/modstack.h \ $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h \ $(srcdir)/sldns/sbuffer.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \ - $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/dnscrypt/cert.h $(srcdir)/util/data/msgreply.h \ + $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/util/data/msgreply.h \ $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/daemon/stats.h \ $(srcdir)/util/timehist.h $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h $(srcdir)/services/mesh.h \ - $(srcdir)/util/rbtree.h $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h \ - $(srcdir)/services/cache/infra.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rtt.h \ - $(srcdir)/validator/validator.h $(srcdir)/validator/val_utils.h $(srcdir)/util/config_file.h \ - $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h + $(srcdir)/util/rbtree.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h $(srcdir)/util/storage/dnstree.h \ + $(srcdir)/services/view.h $(srcdir)/util/config_file.h $(srcdir)/services/authzone.h $(srcdir)/respip/respip.h \ + $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h $(srcdir)/services/cache/infra.h \ + $(srcdir)/util/rtt.h $(srcdir)/validator/validator.h $(srcdir)/validator/val_utils.h $(srcdir)/util/fptr_wlist.h \ + $(srcdir)/util/tube.h authzone.lo authzone.o: $(srcdir)/services/authzone.c config.h $(srcdir)/services/authzone.h \ $(srcdir)/util/rbtree.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/services/mesh.h $(srcdir)/util/netevent.h \ - $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/dnscrypt/cert.h \ - $(srcdir)/util/data/msgparse.h $(srcdir)/util/storage/lruhash.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h \ - $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \ - $(srcdir)/services/modstack.h $(srcdir)/util/data/dname.h $(srcdir)/util/data/msgencode.h \ - $(srcdir)/util/regional.h $(srcdir)/util/net_help.h $(srcdir)/util/config_file.h $(srcdir)/util/random.h \ + $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/util/data/msgparse.h \ + $(srcdir)/util/storage/lruhash.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/module.h \ + $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/services/modstack.h \ + $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h $(srcdir)/util/storage/dnstree.h \ + $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h $(srcdir)/util/config_file.h $(srcdir)/daemon/stats.h \ + $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/util/data/dname.h \ + $(srcdir)/util/data/msgencode.h $(srcdir)/util/regional.h $(srcdir)/util/net_help.h $(srcdir)/util/random.h \ $(srcdir)/services/cache/dns.h $(srcdir)/services/outside_network.h \ - $(srcdir)/services/listen_dnsport.h $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/str2wire.h \ - $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/parseutil.h $(srcdir)/sldns/keyraw.h \ - $(srcdir)/validator/val_nsec3.h $(srcdir)/validator/val_secalgo.h + $(srcdir)/services/listen_dnsport.h $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/wire2str.h \ + $(srcdir)/sldns/parseutil.h $(srcdir)/sldns/keyraw.h $(srcdir)/validator/val_nsec3.h \ + $(srcdir)/validator/val_secalgo.h fptr_wlist.lo fptr_wlist.o: $(srcdir)/util/fptr_wlist.c config.h $(srcdir)/util/fptr_wlist.h \ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/storage/lruhash.h \ - $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \ - $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h \ - $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h $(srcdir)/util/mini_event.h \ - $(srcdir)/services/outside_network.h $(srcdir)/services/localzone.h \ - $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h $(srcdir)/services/authzone.h \ - $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h $(srcdir)/services/cache/rrset.h \ - $(srcdir)/util/storage/slabhash.h $(srcdir)/dns64/dns64.h $(srcdir)/iterator/iterator.h \ - $(srcdir)/services/outbound_list.h $(srcdir)/iterator/iter_fwd.h $(srcdir)/validator/validator.h \ - $(srcdir)/validator/val_utils.h $(srcdir)/validator/val_anchor.h $(srcdir)/validator/val_nsec3.h \ - $(srcdir)/validator/val_sigcrypt.h $(srcdir)/validator/val_kentry.h $(srcdir)/validator/val_neg.h \ - $(srcdir)/validator/autotrust.h $(srcdir)/libunbound/libworker.h $(srcdir)/libunbound/context.h \ - $(srcdir)/util/alloc.h $(srcdir)/libunbound/unbound.h $(srcdir)/libunbound/unbound-event.h \ - $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h $(srcdir)/util/config_file.h $(srcdir)/respip/respip.h \ - $(PYTHONMOD_HEADER) $(srcdir)/ipsecmod/ipsecmod.h $(srcdir)/edns-subnet/subnetmod.h $(srcdir)/util/net_help.h \ - $(srcdir)/edns-subnet/addrtree.h $(srcdir)/edns-subnet/edns-subnet.h $(srcdir)/ipset/ipset.h + $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/module.h \ + $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \ + $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h \ + $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h \ + $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h \ + $(srcdir)/util/config_file.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \ + $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/util/mini_event.h $(srcdir)/util/rbtree.h \ + $(srcdir)/services/outside_network.h $(srcdir)/services/cache/infra.h \ + $(srcdir)/util/rtt.h $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h $(srcdir)/dns64/dns64.h \ + $(srcdir)/iterator/iterator.h $(srcdir)/services/outbound_list.h $(srcdir)/iterator/iter_fwd.h \ + $(srcdir)/validator/validator.h $(srcdir)/validator/val_utils.h $(srcdir)/validator/val_anchor.h \ + $(srcdir)/validator/val_nsec3.h $(srcdir)/validator/val_sigcrypt.h $(srcdir)/validator/val_kentry.h \ + $(srcdir)/validator/val_neg.h $(srcdir)/validator/autotrust.h $(srcdir)/libunbound/libworker.h \ + $(srcdir)/libunbound/context.h $(srcdir)/util/alloc.h $(srcdir)/libunbound/unbound-event.h \ + $(srcdir)/libunbound/worker.h locks.lo locks.o: $(srcdir)/util/locks.c config.h $(srcdir)/util/locks.h $(srcdir)/util/log.h log.lo log.o: $(srcdir)/util/log.c config.h $(srcdir)/util/log.h $(srcdir)/util/locks.h $(srcdir)/sldns/sbuffer.h -mini_event.lo mini_event.o: $(srcdir)/util/mini_event.c config.h $(srcdir)/util/mini_event.h +mini_event.lo mini_event.o: $(srcdir)/util/mini_event.c config.h $(srcdir)/util/mini_event.h $(srcdir)/util/rbtree.h \ + $(srcdir)/util/fptr_wlist.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ + $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \ + $(srcdir)/util/log.h $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \ + $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h \ + $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h \ + $(srcdir)/services/localzone.h $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h \ + $(srcdir)/sldns/sbuffer.h $(srcdir)/util/config_file.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h \ + $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h module.lo module.o: $(srcdir)/util/module.c config.h $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h \ $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \ $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/wire2str.h netevent.lo netevent.o: $(srcdir)/util/netevent.c config.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ - $(srcdir)/util/ub_event.h $(srcdir)/util/net_help.h $(srcdir)/util/tcp_conn_limit.h \ - $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/util/fptr_wlist.h \ - $(srcdir)/util/storage/lruhash.h $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h \ - $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ - $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/services/modstack.h \ - $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/str2wire.h $(srcdir)/dnstap/dnstap.h \ - $(srcdir)/services/listen_dnsport.h \ - + $(srcdir)/util/ub_event.h $(srcdir)/util/log.h $(srcdir)/util/net_help.h \ + $(srcdir)/util/tcp_conn_limit.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/util/locks.h \ + $(srcdir)/util/fptr_wlist.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/module.h \ + $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \ + $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h \ + $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h $(srcdir)/services/view.h \ + $(srcdir)/sldns/sbuffer.h $(srcdir)/util/config_file.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h \ + $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/sldns/str2wire.h \ + $(srcdir)/dnstap/dnstap.h $(srcdir)/services/listen_dnsport.h net_help.lo net_help.o: $(srcdir)/util/net_help.c config.h $(srcdir)/util/net_help.h $(srcdir)/util/log.h \ $(srcdir)/util/data/dname.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/module.h \ $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \ $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/regional.h $(srcdir)/util/config_file.h \ - $(srcdir)/sldns/parseutil.h $(srcdir)/sldns/wire2str.h \ - + $(srcdir)/sldns/parseutil.h $(srcdir)/sldns/wire2str.h random.lo random.o: $(srcdir)/util/random.c config.h $(srcdir)/util/random.h $(srcdir)/util/log.h rbtree.lo rbtree.o: $(srcdir)/util/rbtree.c config.h $(srcdir)/util/log.h $(srcdir)/util/fptr_wlist.h \ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/storage/lruhash.h \ - $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \ - $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h \ - $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h + $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/module.h \ + $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \ + $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h \ + $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h \ + $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h \ + $(srcdir)/util/config_file.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \ + $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h regional.lo regional.o: $(srcdir)/util/regional.c config.h $(srcdir)/util/log.h $(srcdir)/util/regional.h rtt.lo rtt.o: $(srcdir)/util/rtt.c config.h $(srcdir)/util/rtt.h $(srcdir)/iterator/iterator.h \ $(srcdir)/services/outbound_list.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/storage/lruhash.h \ @@ -909,19 +947,22 @@ rtt.lo rtt.o: $(srcdir)/util/rtt.c config.h $(srcdir)/ $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h edns.lo edns.o: $(srcdir)/util/edns.c config.h $(srcdir)/util/edns.h $(srcdir)/util/config_file.h \ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/regional.h \ - $(srcdir)/util/data/msgparse.h $(srcdir)/util/storage/lruhash.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h \ - $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h + $(srcdir)/util/regional.h $(srcdir)/util/data/msgparse.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \ + $(srcdir)/util/log.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/data/msgreply.h \ + $(srcdir)/util/data/packed_rrset.h dnstree.lo dnstree.o: $(srcdir)/util/storage/dnstree.c config.h $(srcdir)/util/storage/dnstree.h \ $(srcdir)/util/rbtree.h $(srcdir)/util/data/dname.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \ $(srcdir)/util/log.h $(srcdir)/util/net_help.h lookup3.lo lookup3.o: $(srcdir)/util/storage/lookup3.c config.h $(srcdir)/util/storage/lookup3.h lruhash.lo lruhash.o: $(srcdir)/util/storage/lruhash.c config.h $(srcdir)/util/storage/lruhash.h \ $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/netevent.h \ - $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/dnscrypt/cert.h \ - $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \ - $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h \ - $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h + $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/util/module.h \ + $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \ + $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h \ + $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h \ + $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h \ + $(srcdir)/util/config_file.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \ + $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h slabhash.lo slabhash.o: $(srcdir)/util/storage/slabhash.c config.h $(srcdir)/util/storage/slabhash.h \ $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h tcp_conn_limit.lo tcp_conn_limit.o: $(srcdir)/util/tcp_conn_limit.c config.h $(srcdir)/util/regional.h \ @@ -929,26 +970,30 @@ tcp_conn_limit.lo tcp_conn_limit.o: $(srcdir)/util/tcp $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/util/locks.h $(srcdir)/services/localzone.h \ $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/data/msgreply.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ - $(srcdir)/sldns/rrdef.h $(srcdir)/services/view.h $(srcdir)/sldns/str2wire.h + $(srcdir)/sldns/rrdef.h $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/str2wire.h timehist.lo timehist.o: $(srcdir)/util/timehist.c config.h $(srcdir)/util/timehist.h $(srcdir)/util/log.h tube.lo tube.o: $(srcdir)/util/tube.c config.h $(srcdir)/util/tube.h $(srcdir)/util/log.h $(srcdir)/util/net_help.h \ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/util/locks.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/storage/lruhash.h \ - $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \ - $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/services/mesh.h \ - $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h $(srcdir)/util/ub_event.h + $(srcdir)/util/fptr_wlist.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/module.h \ + $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \ + $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h \ + $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h \ + $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h \ + $(srcdir)/util/config_file.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \ + $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/util/ub_event.h ub_event.lo ub_event.o: $(srcdir)/util/ub_event.c config.h $(srcdir)/util/ub_event.h $(srcdir)/util/log.h \ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/util/locks.h $(srcdir)/util/tube.h \ - + $(srcdir)/util/tube.h $(srcdir)/util/mini_event.h $(srcdir)/util/rbtree.h ub_event_pluggable.lo ub_event_pluggable.o: $(srcdir)/util/ub_event_pluggable.c config.h $(srcdir)/util/ub_event.h \ $(srcdir)/libunbound/unbound-event.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ - $(srcdir)/util/fptr_wlist.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/module.h \ - $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \ - $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h \ - $(srcdir)/services/modstack.h \ - + $(srcdir)/util/log.h $(srcdir)/util/fptr_wlist.h \ + $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h \ + $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ + $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h \ + $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h \ + $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h \ + $(srcdir)/util/config_file.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \ + $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/util/mini_event.h $(srcdir)/util/rbtree.h winsock_event.lo winsock_event.o: $(srcdir)/util/winsock_event.c config.h autotrust.lo autotrust.o: $(srcdir)/validator/autotrust.c config.h $(srcdir)/validator/autotrust.h \ $(srcdir)/util/rbtree.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \ @@ -957,10 +1002,11 @@ autotrust.lo autotrust.o: $(srcdir)/validator/autotrus $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/net_help.h \ $(srcdir)/util/config_file.h $(srcdir)/util/regional.h $(srcdir)/util/random.h $(srcdir)/services/mesh.h \ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/services/modstack.h $(srcdir)/services/cache/rrset.h \ - $(srcdir)/util/storage/slabhash.h $(srcdir)/validator/val_kcache.h $(srcdir)/sldns/sbuffer.h \ - $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/keyraw.h \ - + $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h \ + $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h \ + $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h \ + $(srcdir)/respip/respip.h $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h \ + $(srcdir)/validator/val_kcache.h $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/keyraw.h val_anchor.lo val_anchor.o: $(srcdir)/validator/val_anchor.c config.h $(srcdir)/validator/val_anchor.h \ $(srcdir)/util/rbtree.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/validator/val_sigcrypt.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/sldns/pkthdr.h \ @@ -977,8 +1023,11 @@ validator.lo validator.o: $(srcdir)/validator/validato $(srcdir)/validator/autotrust.h $(srcdir)/services/cache/dns.h $(srcdir)/services/cache/rrset.h \ $(srcdir)/util/data/dname.h $(srcdir)/util/net_help.h $(srcdir)/util/regional.h $(srcdir)/util/config_file.h \ $(srcdir)/util/fptr_wlist.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h \ - $(srcdir)/services/modstack.h $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/str2wire.h + $(srcdir)/util/tube.h $(srcdir)/services/mesh.h \ + $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h \ + $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h \ + $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h \ + $(srcdir)/respip/respip.h $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/str2wire.h val_kcache.lo val_kcache.o: $(srcdir)/validator/val_kcache.c config.h $(srcdir)/validator/val_kcache.h \ $(srcdir)/util/storage/slabhash.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ $(srcdir)/validator/val_kentry.h $(srcdir)/util/config_file.h $(srcdir)/util/data/dname.h \ @@ -987,13 +1036,11 @@ val_kcache.lo val_kcache.o: $(srcdir)/validator/val_kc val_kentry.lo val_kentry.o: $(srcdir)/validator/val_kentry.c config.h $(srcdir)/validator/val_kentry.h \ $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/data/packed_rrset.h \ $(srcdir)/util/data/dname.h $(srcdir)/util/storage/lookup3.h $(srcdir)/util/regional.h $(srcdir)/util/net_help.h \ - $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/keyraw.h \ - -val_neg.lo val_neg.o: $(srcdir)/validator/val_neg.c config.h \ - $(srcdir)/validator/val_neg.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/rbtree.h \ - $(srcdir)/validator/val_nsec.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \ - $(srcdir)/validator/val_nsec3.h $(srcdir)/validator/val_utils.h $(srcdir)/sldns/pkthdr.h \ - $(srcdir)/util/data/dname.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/net_help.h \ + $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/keyraw.h +val_neg.lo val_neg.o: $(srcdir)/validator/val_neg.c config.h $(srcdir)/validator/val_neg.h $(srcdir)/util/locks.h \ + $(srcdir)/util/log.h $(srcdir)/util/rbtree.h $(srcdir)/validator/val_nsec.h $(srcdir)/util/data/packed_rrset.h \ + $(srcdir)/util/storage/lruhash.h $(srcdir)/validator/val_nsec3.h $(srcdir)/validator/val_utils.h \ + $(srcdir)/sldns/pkthdr.h $(srcdir)/util/data/dname.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/net_help.h \ $(srcdir)/util/config_file.h $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h \ $(srcdir)/services/cache/dns.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/sbuffer.h val_nsec3.lo val_nsec3.o: $(srcdir)/validator/val_nsec3.c config.h $(srcdir)/validator/val_nsec3.h \ @@ -1011,17 +1058,15 @@ val_nsec.lo val_nsec.o: $(srcdir)/validator/val_nsec.c val_secalgo.lo val_secalgo.o: $(srcdir)/validator/val_secalgo.c config.h $(srcdir)/util/data/packed_rrset.h \ $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/validator/val_secalgo.h \ $(srcdir)/validator/val_nsec3.h $(srcdir)/util/rbtree.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/keyraw.h \ - $(srcdir)/sldns/sbuffer.h \ - + $(srcdir)/sldns/sbuffer.h val_sigcrypt.lo val_sigcrypt.o: $(srcdir)/validator/val_sigcrypt.c config.h \ $(srcdir)/validator/val_sigcrypt.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \ $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/sldns/pkthdr.h $(srcdir)/validator/val_secalgo.h \ $(srcdir)/validator/validator.h $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h \ $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/rrdef.h $(srcdir)/validator/val_utils.h \ $(srcdir)/util/data/dname.h $(srcdir)/util/rbtree.h $(srcdir)/util/net_help.h $(srcdir)/util/regional.h \ - $(srcdir)/util/config_file.h $(srcdir)/sldns/keyraw.h \ - $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/parseutil.h $(srcdir)/sldns/wire2str.h \ - + $(srcdir)/util/config_file.h $(srcdir)/sldns/keyraw.h $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/parseutil.h \ + $(srcdir)/sldns/wire2str.h val_utils.lo val_utils.o: $(srcdir)/validator/val_utils.c config.h $(srcdir)/validator/val_utils.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ $(srcdir)/sldns/pkthdr.h $(srcdir)/validator/validator.h $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h \ @@ -1037,9 +1082,11 @@ dns64.lo dns64.o: $(srcdir)/dns64/dns64.c config.h $(s $(srcdir)/sldns/rrdef.h $(srcdir)/services/cache/dns.h $(srcdir)/services/cache/rrset.h \ $(srcdir)/util/storage/slabhash.h $(srcdir)/util/config_file.h $(srcdir)/util/fptr_wlist.h \ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h \ - $(srcdir)/services/modstack.h $(srcdir)/util/net_help.h $(srcdir)/util/regional.h \ - $(srcdir)/util/storage/dnstree.h $(srcdir)/util/data/dname.h $(srcdir)/sldns/str2wire.h + $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h \ + $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h $(srcdir)/util/storage/dnstree.h \ + $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h \ + $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/util/net_help.h \ + $(srcdir)/util/regional.h $(srcdir)/util/data/dname.h $(srcdir)/sldns/str2wire.h edns-subnet.lo edns-subnet.o: $(srcdir)/edns-subnet/edns-subnet.c config.h subnetmod.lo subnetmod.o: $(srcdir)/edns-subnet/subnetmod.c config.h addrtree.lo addrtree.o: $(srcdir)/edns-subnet/addrtree.c config.h $(srcdir)/util/log.h \ @@ -1053,36 +1100,16 @@ respip.lo respip.o: $(srcdir)/respip/respip.c config.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/module.h \ $(srcdir)/util/storage/lruhash.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \ $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/services/view.h \ - $(srcdir)/services/cache/dns.h $(srcdir)/sldns/str2wire.h $(srcdir)/util/config_file.h \ - $(srcdir)/util/fptr_wlist.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h \ - $(srcdir)/services/modstack.h $(srcdir)/util/net_help.h $(srcdir)/util/regional.h $(srcdir)/respip/respip.h + $(srcdir)/sldns/sbuffer.h $(srcdir)/services/authzone.h $(srcdir)/services/mesh.h $(srcdir)/util/netevent.h \ + $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/services/modstack.h \ + $(srcdir)/services/rpz.h $(srcdir)/util/config_file.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \ + $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/services/cache/dns.h \ + $(srcdir)/sldns/str2wire.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h $(srcdir)/util/net_help.h \ + $(srcdir)/util/regional.h checklocks.lo checklocks.o: $(srcdir)/testcode/checklocks.c config.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ $(srcdir)/testcode/checklocks.h -dnstap.lo dnstap.o: $(srcdir)/dnstap/dnstap.c config.h $(srcdir)/sldns/sbuffer.h \ - $(srcdir)/util/config_file.h $(srcdir)/util/net_help.h $(srcdir)/util/log.h $(srcdir)/util/netevent.h \ - $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/dnscrypt/cert.h \ - $(srcdir)/util/locks.h $(srcdir)/dnstap/dnstap.h \ - dnstap/dnstap.pb-c.h -dnstap.pb-c.lo dnstap.pb-c.o: dnstap/dnstap.pb-c.c dnstap/dnstap.pb-c.h \ - -dnscrypt.lo dnscrypt.o: $(srcdir)/dnscrypt/dnscrypt.c config.h $(srcdir)/sldns/sbuffer.h \ - $(srcdir)/util/config_file.h $(srcdir)/util/net_help.h $(srcdir)/util/log.h $(srcdir)/util/netevent.h \ - $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/dnscrypt/cert.h \ - $(srcdir)/util/locks.h $(srcdir)/util/storage/slabhash.h $(srcdir)/util/storage/lruhash.h \ - $(srcdir)/util/storage/lookup3.h ipsecmod.lo ipsecmod.o: $(srcdir)/ipsecmod/ipsecmod.c config.h -ipsecmod-whitelist.lo ipsecmod-whitelist.o: $(srcdir)/ipsecmod/ipsecmod-whitelist.c config.h \ - $(srcdir)/ipsecmod/ipsecmod.h $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \ - $(srcdir)/util/log.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \ - $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/rbtree.h \ - $(srcdir)/ipsecmod/ipsecmod-whitelist.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/regional.h \ - $(srcdir)/util/config_file.h $(srcdir)/util/data/dname.h $(srcdir)/sldns/str2wire.h -ipset.lo ipset.o: $(srcdir)/ipset/ipset.c config.h $(srcdir)/ipset/ipset.h $(srcdir)/util/module.h \ - $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/data/msgreply.h \ - $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ - $(srcdir)/sldns/rrdef.h $(srcdir)/util/regional.h $(srcdir)/util/config_file.h $(srcdir)/services/cache/dns.h \ - $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/parseutil.h +ipsecmod-whitelist.lo ipsecmod-whitelist.o: $(srcdir)/ipsecmod/ipsecmod-whitelist.c config.h unitanchor.lo unitanchor.o: $(srcdir)/testcode/unitanchor.c config.h $(srcdir)/util/log.h $(srcdir)/util/data/dname.h \ $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/testcode/unitmain.h \ $(srcdir)/validator/val_anchor.h $(srcdir)/util/rbtree.h $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/rrdef.h @@ -1091,16 +1118,15 @@ unitdname.lo unitdname.o: $(srcdir)/testcode/unitdname $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/rrdef.h unitlruhash.lo unitlruhash.o: $(srcdir)/testcode/unitlruhash.c config.h $(srcdir)/testcode/unitmain.h \ $(srcdir)/util/log.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/storage/slabhash.h -unitmain.lo unitmain.o: $(srcdir)/testcode/unitmain.c config.h \ - $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/keyraw.h \ +unitmain.lo unitmain.o: $(srcdir)/testcode/unitmain.c config.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/keyraw.h \ $(srcdir)/util/log.h $(srcdir)/testcode/unitmain.h $(srcdir)/util/alloc.h $(srcdir)/util/locks.h $(srcdir)/util/net_help.h \ $(srcdir)/util/config_file.h $(srcdir)/util/rtt.h $(srcdir)/util/timehist.h $(srcdir)/iterator/iterator.h \ $(srcdir)/services/outbound_list.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/storage/lruhash.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/module.h $(srcdir)/util/data/msgparse.h \ $(srcdir)/sldns/pkthdr.h $(srcdir)/libunbound/unbound.h $(srcdir)/services/cache/infra.h \ $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/util/random.h $(srcdir)/respip/respip.h \ - $(srcdir)/services/localzone.h $(srcdir)/services/view.h + $(srcdir)/util/random.h $(srcdir)/respip/respip.h \ + $(srcdir)/services/localzone.h $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h unitmsgparse.lo unitmsgparse.o: $(srcdir)/testcode/unitmsgparse.c config.h $(srcdir)/util/log.h \ $(srcdir)/testcode/unitmain.h $(srcdir)/util/data/msgparse.h $(srcdir)/util/storage/lruhash.h \ $(srcdir)/util/locks.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/data/msgreply.h \ @@ -1134,59 +1160,59 @@ unitldns.lo unitldns.o: $(srcdir)/testcode/unitldns.c unitecs.lo unitecs.o: $(srcdir)/testcode/unitecs.c config.h unitauth.lo unitauth.o: $(srcdir)/testcode/unitauth.c config.h $(srcdir)/services/authzone.h \ $(srcdir)/util/rbtree.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/services/mesh.h $(srcdir)/util/netevent.h \ - $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/dnscrypt/cert.h \ - $(srcdir)/util/data/msgparse.h $(srcdir)/util/storage/lruhash.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h \ - $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \ - $(srcdir)/services/modstack.h $(srcdir)/testcode/unitmain.h $(srcdir)/util/regional.h $(srcdir)/util/net_help.h \ - $(srcdir)/util/config_file.h $(srcdir)/services/cache/dns.h $(srcdir)/sldns/str2wire.h \ - $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/sbuffer.h + $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/util/data/msgparse.h \ + $(srcdir)/util/storage/lruhash.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/module.h \ + $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/services/modstack.h \ + $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h $(srcdir)/util/storage/dnstree.h \ + $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h $(srcdir)/util/config_file.h $(srcdir)/daemon/stats.h \ + $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/testcode/unitmain.h \ + $(srcdir)/util/regional.h $(srcdir)/util/net_help.h $(srcdir)/services/cache/dns.h $(srcdir)/sldns/str2wire.h \ + $(srcdir)/sldns/wire2str.h acl_list.lo acl_list.o: $(srcdir)/daemon/acl_list.c config.h $(srcdir)/daemon/acl_list.h \ $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/services/view.h $(srcdir)/util/locks.h \ $(srcdir)/util/log.h $(srcdir)/util/regional.h $(srcdir)/util/config_file.h $(srcdir)/util/net_help.h \ $(srcdir)/services/localzone.h $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h \ $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \ - $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/str2wire.h -cachedump.lo cachedump.o: $(srcdir)/daemon/cachedump.c config.h \ - $(srcdir)/daemon/cachedump.h $(srcdir)/daemon/remote.h $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h \ - $(srcdir)/sldns/sbuffer.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \ - $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/util/alloc.h \ - $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h \ - $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/util/module.h \ - $(srcdir)/dnstap/dnstap.h $(srcdir)/services/cache/rrset.h \ - $(srcdir)/util/storage/slabhash.h $(srcdir)/services/cache/dns.h $(srcdir)/services/cache/infra.h \ - $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/util/rtt.h $(srcdir)/util/regional.h \ - $(srcdir)/util/net_help.h $(srcdir)/util/data/dname.h $(srcdir)/iterator/iterator.h \ + $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/str2wire.h +cachedump.lo cachedump.o: $(srcdir)/daemon/cachedump.c config.h $(srcdir)/daemon/cachedump.h \ + $(srcdir)/daemon/remote.h $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h \ + $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ + $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ + $(srcdir)/util/alloc.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ + $(srcdir)/sldns/rrdef.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h \ + $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h \ + $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h $(srcdir)/services/cache/dns.h \ + $(srcdir)/services/cache/infra.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/util/rtt.h \ + $(srcdir)/util/regional.h $(srcdir)/util/net_help.h $(srcdir)/util/data/dname.h $(srcdir)/iterator/iterator.h \ $(srcdir)/services/outbound_list.h $(srcdir)/iterator/iter_delegpt.h $(srcdir)/iterator/iter_utils.h \ $(srcdir)/iterator/iter_resptype.h $(srcdir)/iterator/iter_fwd.h $(srcdir)/iterator/iter_hints.h \ $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/str2wire.h -daemon.lo daemon.o: $(srcdir)/daemon/daemon.c config.h \ - $(srcdir)/daemon/daemon.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/alloc.h $(srcdir)/services/modstack.h \ - $(srcdir)/daemon/worker.h \ +daemon.lo daemon.o: $(srcdir)/daemon/daemon.c config.h $(srcdir)/daemon/daemon.h $(srcdir)/util/locks.h \ + $(srcdir)/util/log.h $(srcdir)/util/alloc.h $(srcdir)/services/modstack.h \ + $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h \ + $(srcdir)/sldns/sbuffer.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \ + $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/util/data/msgreply.h \ + $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/daemon/stats.h \ + $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h \ + $(srcdir)/daemon/remote.h $(srcdir)/daemon/acl_list.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h \ + $(srcdir)/services/view.h $(srcdir)/util/config_file.h $(srcdir)/util/shm_side/shm_main.h \ + $(srcdir)/util/storage/lookup3.h $(srcdir)/util/storage/slabhash.h $(srcdir)/util/tcp_conn_limit.h \ + $(srcdir)/services/listen_dnsport.h $(srcdir)/services/cache/rrset.h $(srcdir)/services/cache/infra.h \ + $(srcdir)/util/rtt.h $(srcdir)/services/localzone.h $(srcdir)/services/authzone.h $(srcdir)/services/mesh.h \ + $(srcdir)/services/rpz.h $(srcdir)/respip/respip.h $(srcdir)/util/random.h $(srcdir)/util/tube.h $(srcdir)/util/net_help.h \ + $(srcdir)/sldns/keyraw.h +remote.lo remote.o: $(srcdir)/daemon/remote.c config.h $(srcdir)/daemon/remote.h $(srcdir)/daemon/worker.h \ $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h $(srcdir)/util/data/packed_rrset.h \ - $(srcdir)/util/storage/lruhash.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ - $(srcdir)/sldns/rrdef.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h \ - $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h $(srcdir)/daemon/remote.h \ - $(srcdir)/daemon/acl_list.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/services/view.h \ - $(srcdir)/util/config_file.h $(srcdir)/util/shm_side/shm_main.h $(srcdir)/util/storage/lookup3.h \ - $(srcdir)/util/storage/slabhash.h $(srcdir)/util/tcp_conn_limit.h $(srcdir)/services/listen_dnsport.h \ - $(srcdir)/services/cache/rrset.h $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h \ - $(srcdir)/services/localzone.h $(srcdir)/services/authzone.h $(srcdir)/services/mesh.h $(srcdir)/util/random.h \ - $(srcdir)/util/tube.h $(srcdir)/util/net_help.h $(srcdir)/sldns/keyraw.h $(srcdir)/respip/respip.h -remote.lo remote.o: $(srcdir)/daemon/remote.c config.h \ - $(srcdir)/daemon/remote.h \ - $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h \ - $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ - $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/util/alloc.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h \ - $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \ - $(srcdir)/libunbound/unbound.h $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h \ - $(srcdir)/daemon/daemon.h $(srcdir)/services/modstack.h \ - $(srcdir)/daemon/cachedump.h $(srcdir)/util/config_file.h $(srcdir)/util/net_help.h \ - $(srcdir)/services/listen_dnsport.h $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h \ - $(srcdir)/services/cache/infra.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/util/rtt.h \ - $(srcdir)/services/mesh.h $(srcdir)/services/localzone.h $(srcdir)/services/view.h $(srcdir)/services/authzone.h \ + $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/netevent.h \ + $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/util/alloc.h \ + $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h \ + $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/util/module.h \ + $(srcdir)/dnstap/dnstap.h $(srcdir)/daemon/daemon.h \ + $(srcdir)/services/modstack.h $(srcdir)/daemon/cachedump.h $(srcdir)/util/config_file.h \ + $(srcdir)/util/net_help.h $(srcdir)/services/listen_dnsport.h $(srcdir)/services/cache/rrset.h \ + $(srcdir)/util/storage/slabhash.h $(srcdir)/services/cache/infra.h $(srcdir)/util/storage/dnstree.h \ + $(srcdir)/util/rbtree.h $(srcdir)/util/rtt.h $(srcdir)/services/mesh.h $(srcdir)/services/rpz.h \ + $(srcdir)/services/localzone.h $(srcdir)/services/view.h $(srcdir)/services/authzone.h $(srcdir)/respip/respip.h \ $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h $(srcdir)/util/data/dname.h $(srcdir)/validator/validator.h \ $(srcdir)/validator/val_utils.h $(srcdir)/validator/val_kcache.h $(srcdir)/validator/val_kentry.h \ $(srcdir)/validator/val_anchor.h $(srcdir)/iterator/iterator.h $(srcdir)/services/outbound_list.h \ @@ -1197,56 +1223,59 @@ stats.lo stats.o: $(srcdir)/daemon/stats.c config.h $( $(srcdir)/libunbound/unbound.h $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/util/alloc.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h \ - $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h \ - $(srcdir)/daemon/daemon.h $(srcdir)/services/modstack.h \ - $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/services/outside_network.h \ - $(srcdir)/services/listen_dnsport.h $(srcdir)/util/config_file.h $(srcdir)/util/tube.h $(srcdir)/util/net_help.h \ - $(srcdir)/validator/validator.h $(srcdir)/validator/val_utils.h $(srcdir)/iterator/iterator.h \ - $(srcdir)/services/outbound_list.h $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h \ - $(srcdir)/services/cache/infra.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rtt.h \ - $(srcdir)/services/authzone.h $(srcdir)/validator/val_kcache.h $(srcdir)/validator/val_neg.h \ - + $(srcdir)/util/alloc.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ + $(srcdir)/sldns/rrdef.h $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h \ + $(srcdir)/daemon/daemon.h $(srcdir)/services/modstack.h $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h \ + $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h $(srcdir)/util/storage/dnstree.h \ + $(srcdir)/services/view.h $(srcdir)/util/config_file.h $(srcdir)/services/authzone.h $(srcdir)/respip/respip.h \ + $(srcdir)/services/outside_network.h $(srcdir)/services/listen_dnsport.h $(srcdir)/util/tube.h \ + $(srcdir)/util/net_help.h $(srcdir)/validator/validator.h $(srcdir)/validator/val_utils.h \ + $(srcdir)/iterator/iterator.h $(srcdir)/services/outbound_list.h $(srcdir)/services/cache/rrset.h \ + $(srcdir)/util/storage/slabhash.h $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h \ + $(srcdir)/validator/val_kcache.h $(srcdir)/validator/val_neg.h unbound.lo unbound.o: $(srcdir)/daemon/unbound.c config.h $(srcdir)/util/log.h $(srcdir)/daemon/daemon.h \ $(srcdir)/util/locks.h $(srcdir)/util/alloc.h $(srcdir)/services/modstack.h \ - $(srcdir)/daemon/remote.h \ - $(srcdir)/util/config_file.h $(srcdir)/util/storage/slabhash.h $(srcdir)/util/storage/lruhash.h \ - $(srcdir)/services/listen_dnsport.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/services/cache/rrset.h $(srcdir)/util/data/packed_rrset.h \ - $(srcdir)/services/cache/infra.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/util/rtt.h \ - $(srcdir)/util/data/msgreply.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/module.h \ - $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h \ - $(srcdir)/services/mesh.h $(srcdir)/util/net_help.h $(srcdir)/util/ub_event.h + $(srcdir)/daemon/remote.h $(srcdir)/util/config_file.h \ + $(srcdir)/util/storage/slabhash.h $(srcdir)/util/storage/lruhash.h $(srcdir)/services/listen_dnsport.h \ + $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/services/cache/rrset.h \ + $(srcdir)/util/data/packed_rrset.h $(srcdir)/services/cache/infra.h $(srcdir)/util/storage/dnstree.h \ + $(srcdir)/util/rbtree.h $(srcdir)/util/rtt.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/fptr_wlist.h \ + $(srcdir)/util/module.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h \ + $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h \ + $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h \ + $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/util/net_help.h \ + $(srcdir)/util/ub_event.h worker.lo worker.o: $(srcdir)/daemon/worker.c config.h $(srcdir)/util/log.h $(srcdir)/util/net_help.h \ $(srcdir)/util/random.h $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/util/alloc.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h \ - $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \ - $(srcdir)/libunbound/unbound.h $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h \ - $(srcdir)/daemon/daemon.h $(srcdir)/services/modstack.h \ - $(srcdir)/daemon/remote.h \ - $(srcdir)/daemon/acl_list.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/services/view.h \ - $(srcdir)/util/config_file.h $(srcdir)/util/regional.h $(srcdir)/util/storage/slabhash.h \ - $(srcdir)/services/listen_dnsport.h $(srcdir)/services/outside_network.h \ - $(srcdir)/services/outbound_list.h $(srcdir)/services/cache/rrset.h $(srcdir)/services/cache/infra.h \ - $(srcdir)/util/rtt.h $(srcdir)/services/cache/dns.h $(srcdir)/services/authzone.h $(srcdir)/services/mesh.h \ - $(srcdir)/services/localzone.h $(srcdir)/util/data/msgencode.h $(srcdir)/util/data/dname.h \ - $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h $(srcdir)/util/edns.h $(srcdir)/iterator/iter_fwd.h \ - $(srcdir)/iterator/iter_hints.h $(srcdir)/validator/autotrust.h $(srcdir)/validator/val_anchor.h \ - $(srcdir)/respip/respip.h $(srcdir)/libunbound/context.h $(srcdir)/libunbound/unbound-event.h \ + $(srcdir)/util/alloc.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ + $(srcdir)/sldns/rrdef.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h \ + $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h $(srcdir)/daemon/daemon.h \ + $(srcdir)/services/modstack.h $(srcdir)/daemon/remote.h $(srcdir)/daemon/acl_list.h \ + $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/services/view.h $(srcdir)/util/config_file.h \ + $(srcdir)/util/regional.h $(srcdir)/util/storage/slabhash.h $(srcdir)/services/listen_dnsport.h \ + $(srcdir)/services/outside_network.h $(srcdir)/services/outbound_list.h \ + $(srcdir)/services/cache/rrset.h $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h \ + $(srcdir)/services/cache/dns.h $(srcdir)/services/authzone.h $(srcdir)/services/mesh.h $(srcdir)/services/rpz.h \ + $(srcdir)/services/localzone.h $(srcdir)/respip/respip.h $(srcdir)/util/data/msgencode.h \ + $(srcdir)/util/data/dname.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h $(srcdir)/util/edns.h \ + $(srcdir)/iterator/iter_fwd.h $(srcdir)/iterator/iter_hints.h $(srcdir)/validator/autotrust.h \ + $(srcdir)/validator/val_anchor.h $(srcdir)/libunbound/context.h $(srcdir)/libunbound/unbound-event.h \ $(srcdir)/libunbound/libworker.h $(srcdir)/sldns/wire2str.h $(srcdir)/util/shm_side/shm_main.h testbound.lo testbound.o: $(srcdir)/testcode/testbound.c config.h $(srcdir)/testcode/testpkts.h \ $(srcdir)/testcode/replay.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ - $(srcdir)/util/rbtree.h $(srcdir)/testcode/fake_event.h $(srcdir)/daemon/remote.h \ - $(srcdir)/util/config_file.h $(srcdir)/sldns/keyraw.h $(srcdir)/daemon/unbound.c $(srcdir)/daemon/daemon.h \ - $(srcdir)/util/alloc.h $(srcdir)/services/modstack.h \ - $(srcdir)/util/storage/slabhash.h $(srcdir)/util/storage/lruhash.h $(srcdir)/services/listen_dnsport.h \ - $(srcdir)/services/cache/rrset.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/services/cache/infra.h \ - $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rtt.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/fptr_wlist.h \ - $(srcdir)/util/module.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h \ - $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/util/net_help.h $(srcdir)/util/ub_event.h + $(srcdir)/util/rbtree.h $(srcdir)/testcode/fake_event.h \ + $(srcdir)/daemon/remote.h $(srcdir)/util/config_file.h $(srcdir)/sldns/keyraw.h $(srcdir)/daemon/unbound.c \ + $(srcdir)/util/log.h $(srcdir)/daemon/daemon.h $(srcdir)/util/locks.h $(srcdir)/util/alloc.h $(srcdir)/services/modstack.h \ + $(srcdir)/util/storage/slabhash.h $(srcdir)/util/storage/lruhash.h \ + $(srcdir)/services/listen_dnsport.h $(srcdir)/services/cache/rrset.h \ + $(srcdir)/util/data/packed_rrset.h $(srcdir)/services/cache/infra.h $(srcdir)/util/storage/dnstree.h \ + $(srcdir)/util/rtt.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/module.h \ + $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h \ + $(srcdir)/services/mesh.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h $(srcdir)/services/view.h \ + $(srcdir)/sldns/sbuffer.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \ + $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/util/net_help.h $(srcdir)/util/ub_event.h testpkts.lo testpkts.o: $(srcdir)/testcode/testpkts.c config.h $(srcdir)/testcode/testpkts.h \ $(srcdir)/util/net_help.h $(srcdir)/util/log.h $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/pkthdr.h \ $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/wire2str.h @@ -1254,77 +1283,79 @@ worker.lo worker.o: $(srcdir)/daemon/worker.c config.h $(srcdir)/util/random.h $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/util/alloc.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h \ - $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \ - $(srcdir)/libunbound/unbound.h $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h \ - $(srcdir)/daemon/daemon.h $(srcdir)/services/modstack.h \ - $(srcdir)/daemon/remote.h \ - $(srcdir)/daemon/acl_list.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/services/view.h \ - $(srcdir)/util/config_file.h $(srcdir)/util/regional.h $(srcdir)/util/storage/slabhash.h \ - $(srcdir)/services/listen_dnsport.h $(srcdir)/services/outside_network.h \ - $(srcdir)/services/outbound_list.h $(srcdir)/services/cache/rrset.h $(srcdir)/services/cache/infra.h \ - $(srcdir)/util/rtt.h $(srcdir)/services/cache/dns.h $(srcdir)/services/authzone.h $(srcdir)/services/mesh.h \ - $(srcdir)/services/localzone.h $(srcdir)/util/data/msgencode.h $(srcdir)/util/data/dname.h \ - $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h $(srcdir)/util/edns.h $(srcdir)/iterator/iter_fwd.h \ - $(srcdir)/iterator/iter_hints.h $(srcdir)/validator/autotrust.h $(srcdir)/validator/val_anchor.h \ - $(srcdir)/respip/respip.h $(srcdir)/libunbound/context.h $(srcdir)/libunbound/unbound-event.h \ + $(srcdir)/util/alloc.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ + $(srcdir)/sldns/rrdef.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h \ + $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h $(srcdir)/daemon/daemon.h \ + $(srcdir)/services/modstack.h $(srcdir)/daemon/remote.h $(srcdir)/daemon/acl_list.h \ + $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/services/view.h $(srcdir)/util/config_file.h \ + $(srcdir)/util/regional.h $(srcdir)/util/storage/slabhash.h $(srcdir)/services/listen_dnsport.h \ + $(srcdir)/services/outside_network.h $(srcdir)/services/outbound_list.h \ + $(srcdir)/services/cache/rrset.h $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h \ + $(srcdir)/services/cache/dns.h $(srcdir)/services/authzone.h $(srcdir)/services/mesh.h $(srcdir)/services/rpz.h \ + $(srcdir)/services/localzone.h $(srcdir)/respip/respip.h $(srcdir)/util/data/msgencode.h \ + $(srcdir)/util/data/dname.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h $(srcdir)/util/edns.h \ + $(srcdir)/iterator/iter_fwd.h $(srcdir)/iterator/iter_hints.h $(srcdir)/validator/autotrust.h \ + $(srcdir)/validator/val_anchor.h $(srcdir)/libunbound/context.h $(srcdir)/libunbound/unbound-event.h \ $(srcdir)/libunbound/libworker.h $(srcdir)/sldns/wire2str.h $(srcdir)/util/shm_side/shm_main.h acl_list.lo acl_list.o: $(srcdir)/daemon/acl_list.c config.h $(srcdir)/daemon/acl_list.h \ $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/services/view.h $(srcdir)/util/locks.h \ $(srcdir)/util/log.h $(srcdir)/util/regional.h $(srcdir)/util/config_file.h $(srcdir)/util/net_help.h \ $(srcdir)/services/localzone.h $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h \ $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \ - $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/str2wire.h -daemon.lo daemon.o: $(srcdir)/daemon/daemon.c config.h \ - $(srcdir)/daemon/daemon.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/alloc.h $(srcdir)/services/modstack.h \ - $(srcdir)/daemon/worker.h \ - $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h $(srcdir)/util/data/packed_rrset.h \ - $(srcdir)/util/storage/lruhash.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ - $(srcdir)/sldns/rrdef.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h \ - $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h $(srcdir)/daemon/remote.h \ - $(srcdir)/daemon/acl_list.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/services/view.h \ - $(srcdir)/util/config_file.h $(srcdir)/util/shm_side/shm_main.h $(srcdir)/util/storage/lookup3.h \ - $(srcdir)/util/storage/slabhash.h $(srcdir)/util/tcp_conn_limit.h $(srcdir)/services/listen_dnsport.h \ - $(srcdir)/services/cache/rrset.h $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h \ - $(srcdir)/services/localzone.h $(srcdir)/services/authzone.h $(srcdir)/services/mesh.h $(srcdir)/util/random.h \ - $(srcdir)/util/tube.h $(srcdir)/util/net_help.h $(srcdir)/sldns/keyraw.h $(srcdir)/respip/respip.h + $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/str2wire.h +daemon.lo daemon.o: $(srcdir)/daemon/daemon.c config.h $(srcdir)/daemon/daemon.h $(srcdir)/util/locks.h \ + $(srcdir)/util/log.h $(srcdir)/util/alloc.h $(srcdir)/services/modstack.h \ + $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h \ + $(srcdir)/sldns/sbuffer.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \ + $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/util/data/msgreply.h \ + $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/daemon/stats.h \ + $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h \ + $(srcdir)/daemon/remote.h $(srcdir)/daemon/acl_list.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h \ + $(srcdir)/services/view.h $(srcdir)/util/config_file.h $(srcdir)/util/shm_side/shm_main.h \ + $(srcdir)/util/storage/lookup3.h $(srcdir)/util/storage/slabhash.h $(srcdir)/util/tcp_conn_limit.h \ + $(srcdir)/services/listen_dnsport.h $(srcdir)/services/cache/rrset.h $(srcdir)/services/cache/infra.h \ + $(srcdir)/util/rtt.h $(srcdir)/services/localzone.h $(srcdir)/services/authzone.h $(srcdir)/services/mesh.h \ + $(srcdir)/services/rpz.h $(srcdir)/respip/respip.h $(srcdir)/util/random.h $(srcdir)/util/tube.h $(srcdir)/util/net_help.h \ + $(srcdir)/sldns/keyraw.h stats.lo stats.o: $(srcdir)/daemon/stats.c config.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \ $(srcdir)/libunbound/unbound.h $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/util/alloc.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h \ - $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h \ - $(srcdir)/daemon/daemon.h $(srcdir)/services/modstack.h \ - $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/services/outside_network.h \ - $(srcdir)/services/listen_dnsport.h $(srcdir)/util/config_file.h $(srcdir)/util/tube.h $(srcdir)/util/net_help.h \ - $(srcdir)/validator/validator.h $(srcdir)/validator/val_utils.h $(srcdir)/iterator/iterator.h \ - $(srcdir)/services/outbound_list.h $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h \ - $(srcdir)/services/cache/infra.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rtt.h \ - $(srcdir)/services/authzone.h $(srcdir)/validator/val_kcache.h $(srcdir)/validator/val_neg.h \ - + $(srcdir)/util/alloc.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ + $(srcdir)/sldns/rrdef.h $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h \ + $(srcdir)/daemon/daemon.h $(srcdir)/services/modstack.h $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h \ + $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h $(srcdir)/util/storage/dnstree.h \ + $(srcdir)/services/view.h $(srcdir)/util/config_file.h $(srcdir)/services/authzone.h $(srcdir)/respip/respip.h \ + $(srcdir)/services/outside_network.h $(srcdir)/services/listen_dnsport.h $(srcdir)/util/tube.h \ + $(srcdir)/util/net_help.h $(srcdir)/validator/validator.h $(srcdir)/validator/val_utils.h \ + $(srcdir)/iterator/iterator.h $(srcdir)/services/outbound_list.h $(srcdir)/services/cache/rrset.h \ + $(srcdir)/util/storage/slabhash.h $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h \ + $(srcdir)/validator/val_kcache.h $(srcdir)/validator/val_neg.h replay.lo replay.o: $(srcdir)/testcode/replay.c config.h $(srcdir)/util/log.h $(srcdir)/util/net_help.h \ $(srcdir)/util/config_file.h $(srcdir)/testcode/replay.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/util/locks.h \ - $(srcdir)/testcode/testpkts.h $(srcdir)/util/rbtree.h $(srcdir)/testcode/fake_event.h $(srcdir)/sldns/str2wire.h \ - $(srcdir)/sldns/rrdef.h + $(srcdir)/testcode/testpkts.h $(srcdir)/util/rbtree.h \ + $(srcdir)/testcode/fake_event.h $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/rrdef.h fake_event.lo fake_event.o: $(srcdir)/testcode/fake_event.c config.h $(srcdir)/testcode/fake_event.h \ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/net_help.h \ - $(srcdir)/util/data/msgparse.h $(srcdir)/util/storage/lruhash.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h \ - $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgencode.h \ - $(srcdir)/util/data/dname.h $(srcdir)/util/config_file.h $(srcdir)/services/listen_dnsport.h \ - $(srcdir)/services/outside_network.h $(srcdir)/util/rbtree.h \ - $(srcdir)/services/cache/infra.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rtt.h \ - $(srcdir)/testcode/replay.h $(srcdir)/testcode/testpkts.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/module.h \ - $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/services/modstack.h $(srcdir)/sldns/sbuffer.h \ - $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/str2wire.h + $(srcdir)/util/net_help.h $(srcdir)/util/log.h $(srcdir)/util/data/msgparse.h $(srcdir)/util/storage/lruhash.h \ + $(srcdir)/util/locks.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/data/msgreply.h \ + $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgencode.h $(srcdir)/util/data/dname.h \ + $(srcdir)/util/config_file.h $(srcdir)/services/listen_dnsport.h $(srcdir)/services/outside_network.h \ + $(srcdir)/util/rbtree.h $(srcdir)/services/cache/infra.h \ + $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rtt.h $(srcdir)/testcode/replay.h $(srcdir)/testcode/testpkts.h \ + $(srcdir)/util/fptr_wlist.h $(srcdir)/util/module.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h \ + $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h $(srcdir)/services/view.h \ + $(srcdir)/sldns/sbuffer.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \ + $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/str2wire.h lock_verify.lo lock_verify.o: $(srcdir)/testcode/lock_verify.c config.h $(srcdir)/util/log.h $(srcdir)/util/rbtree.h \ $(srcdir)/util/locks.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/util/storage/lruhash.h \ - $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \ - $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h \ - $(srcdir)/services/mesh.h $(srcdir)/services/modstack.h + $(srcdir)/util/storage/lruhash.h $(srcdir)/util/module.h \ + $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \ + $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h \ + $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h \ + $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h \ + $(srcdir)/util/config_file.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \ + $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h pktview.lo pktview.o: $(srcdir)/testcode/pktview.c config.h $(srcdir)/util/log.h $(srcdir)/util/data/dname.h \ $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ $(srcdir)/sldns/rrdef.h $(srcdir)/testcode/unitmain.h $(srcdir)/testcode/readhex.h $(srcdir)/sldns/sbuffer.h \ @@ -1333,10 +1364,13 @@ readhex.lo readhex.o: $(srcdir)/testcode/readhex.c con $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/parseutil.h memstats.lo memstats.o: $(srcdir)/testcode/memstats.c config.h $(srcdir)/util/log.h $(srcdir)/util/rbtree.h \ $(srcdir)/util/locks.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/util/storage/lruhash.h \ - $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \ - $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h \ - $(srcdir)/services/mesh.h $(srcdir)/services/modstack.h + $(srcdir)/util/storage/lruhash.h $(srcdir)/util/module.h \ + $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \ + $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h \ + $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h \ + $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h \ + $(srcdir)/util/config_file.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \ + $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h unbound-checkconf.lo unbound-checkconf.o: $(srcdir)/smallapp/unbound-checkconf.c config.h $(srcdir)/util/log.h \ $(srcdir)/util/config_file.h $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \ $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \ @@ -1344,27 +1378,31 @@ unbound-checkconf.lo unbound-checkconf.o: $(srcdir)/sm $(srcdir)/iterator/iterator.h $(srcdir)/services/outbound_list.h $(srcdir)/iterator/iter_fwd.h \ $(srcdir)/util/rbtree.h $(srcdir)/iterator/iter_hints.h $(srcdir)/util/storage/dnstree.h \ $(srcdir)/validator/validator.h $(srcdir)/validator/val_utils.h $(srcdir)/services/localzone.h \ - $(srcdir)/services/view.h $(srcdir)/services/authzone.h $(srcdir)/services/mesh.h $(srcdir)/util/netevent.h \ - $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/dnscrypt/cert.h \ - $(srcdir)/services/modstack.h $(srcdir)/respip/respip.h $(srcdir)/sldns/sbuffer.h + $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h $(srcdir)/services/authzone.h $(srcdir)/services/mesh.h \ + $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ + $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \ + $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h worker_cb.lo worker_cb.o: $(srcdir)/smallapp/worker_cb.c config.h $(srcdir)/libunbound/context.h \ $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/alloc.h $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h \ $(srcdir)/libunbound/unbound.h $(srcdir)/libunbound/unbound-event.h $(srcdir)/util/data/packed_rrset.h \ $(srcdir)/util/storage/lruhash.h $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h \ $(srcdir)/util/fptr_wlist.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/util/module.h \ - $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h \ - $(srcdir)/util/tube.h $(srcdir)/services/mesh.h + $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h \ + $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h \ + $(srcdir)/services/mesh.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h \ + $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h $(srcdir)/util/config_file.h \ + $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/respip/respip.h context.lo context.o: $(srcdir)/libunbound/context.c config.h $(srcdir)/libunbound/context.h \ $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/alloc.h $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h \ $(srcdir)/libunbound/unbound.h $(srcdir)/libunbound/unbound-event.h $(srcdir)/util/data/packed_rrset.h \ $(srcdir)/util/storage/lruhash.h $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h \ $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/config_file.h \ $(srcdir)/util/net_help.h $(srcdir)/services/localzone.h $(srcdir)/util/storage/dnstree.h \ - $(srcdir)/services/view.h $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h \ - $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/services/authzone.h \ - $(srcdir)/services/mesh.h $(srcdir)/sldns/sbuffer.h + $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h $(srcdir)/services/cache/rrset.h \ + $(srcdir)/util/storage/slabhash.h $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h \ + $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ + $(srcdir)/services/authzone.h $(srcdir)/services/mesh.h $(srcdir)/services/rpz.h $(srcdir)/daemon/stats.h \ + $(srcdir)/util/timehist.h $(srcdir)/respip/respip.h libunbound.lo libunbound.o: $(srcdir)/libunbound/libunbound.c $(srcdir)/libunbound/unbound.h \ $(srcdir)/libunbound/unbound-event.h config.h $(srcdir)/libunbound/context.h $(srcdir)/util/locks.h \ $(srcdir)/util/log.h $(srcdir)/util/alloc.h $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h \ @@ -1373,70 +1411,70 @@ libunbound.lo libunbound.o: $(srcdir)/libunbound/libun $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/regional.h \ $(srcdir)/util/random.h $(srcdir)/util/net_help.h $(srcdir)/util/tube.h $(srcdir)/util/ub_event.h \ $(srcdir)/services/localzone.h $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h \ - $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/services/cache/rrset.h \ + $(srcdir)/sldns/sbuffer.h $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h $(srcdir)/util/netevent.h \ + $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/services/cache/rrset.h \ $(srcdir)/util/storage/slabhash.h $(srcdir)/services/authzone.h $(srcdir)/services/mesh.h \ - $(srcdir)/sldns/sbuffer.h -libworker.lo libworker.o: $(srcdir)/libunbound/libworker.c config.h \ - $(srcdir)/libunbound/libworker.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \ - $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/libunbound/context.h $(srcdir)/util/alloc.h $(srcdir)/util/rbtree.h \ - $(srcdir)/services/modstack.h $(srcdir)/libunbound/unbound.h $(srcdir)/libunbound/unbound-event.h \ - $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h $(srcdir)/services/outside_network.h \ - $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@freebsd.org Sun May 24 16:47:28 2020 Return-Path: Delivered-To: svn-src-all@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 5A19F2CAD8F; Sun, 24 May 2020 16:47:28 +0000 (UTC) (envelope-from cy@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49VR3N1GK0z4JFb; Sun, 24 May 2020 16:47:28 +0000 (UTC) (envelope-from cy@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 24555241A3; Sun, 24 May 2020 16:47:28 +0000 (UTC) (envelope-from cy@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04OGlStD004444; Sun, 24 May 2020 16:47:28 GMT (envelope-from cy@FreeBSD.org) Received: (from cy@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04OGlSlN004442; Sun, 24 May 2020 16:47:28 GMT (envelope-from cy@FreeBSD.org) Message-Id: <202005241647.04OGlSlN004442@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: cy set sender to cy@FreeBSD.org using -f From: Cy Schubert Date: Sun, 24 May 2020 16:47:28 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org Subject: svn commit: r361435 - in stable: 11/contrib/unbound 11/contrib/unbound/.github 11/contrib/unbound/cachedb 11/contrib/unbound/compat 11/contrib/unbound/contrib 11/contrib/unbound/daemon 11/contrib/u... X-SVN-Group: stable-12 X-SVN-Commit-Author: cy X-SVN-Commit-Paths: in stable: 11/contrib/unbound 11/contrib/unbound/.github 11/contrib/unbound/cachedb 11/contrib/unbound/compat 11/contrib/unbound/contrib 11/contrib/unbound/daemon 11/contrib/unbound/doc 11/contrib/unb... X-SVN-Commit-Revision: 361435 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2020 16:47:28 -0000 Author: cy Date: Sun May 24 16:47:27 2020 New Revision: 361435 URL: https://svnweb.freebsd.org/changeset/base/361435 Log: MFC r361344: MFV r361322: Update unbound 1.9.6 --> 1.10.1. Bug Fixes: - CVE-2020-12662 Unbound can be tricked into amplifying an incoming query into a large number of queries directed to a target. - CVE-2020-12663 Malformed answers from upstream name servers can be used to make Unbound unresponsive. Reported by: emaste Relnotes: yes Security: CVE-2020-12662, CVE-2020-12663 Added: stable/12/contrib/unbound/.github/ - copied from r361344, head/contrib/unbound/.github/ stable/12/contrib/unbound/contrib/drop2rpz - copied unchanged from r361344, head/contrib/unbound/contrib/drop2rpz stable/12/contrib/unbound/contrib/unbound_portable.service.in - copied unchanged from r361344, head/contrib/unbound/contrib/unbound_portable.service.in stable/12/contrib/unbound/contrib/unbound_smf23.tar.gz - copied unchanged from r361344, head/contrib/unbound/contrib/unbound_smf23.tar.gz stable/12/contrib/unbound/services/rpz.c - copied unchanged from r361344, head/contrib/unbound/services/rpz.c stable/12/contrib/unbound/services/rpz.h - copied unchanged from r361344, head/contrib/unbound/services/rpz.h Deleted: stable/12/contrib/unbound/contrib/unbound_smf22.tar.gz Modified: stable/12/contrib/unbound/Makefile.in stable/12/contrib/unbound/README.md stable/12/contrib/unbound/aclocal.m4 stable/12/contrib/unbound/cachedb/cachedb.c stable/12/contrib/unbound/compat/getentropy_solaris.c stable/12/contrib/unbound/config.guess stable/12/contrib/unbound/config.h.in stable/12/contrib/unbound/config.sub stable/12/contrib/unbound/configure stable/12/contrib/unbound/configure.ac stable/12/contrib/unbound/contrib/README stable/12/contrib/unbound/contrib/fastrpz.patch stable/12/contrib/unbound/contrib/libunbound.pc.in stable/12/contrib/unbound/contrib/unbound.service.in stable/12/contrib/unbound/contrib/unbound_munin_ stable/12/contrib/unbound/daemon/daemon.c stable/12/contrib/unbound/daemon/daemon.h stable/12/contrib/unbound/daemon/remote.c stable/12/contrib/unbound/daemon/stats.c stable/12/contrib/unbound/daemon/unbound.c stable/12/contrib/unbound/daemon/worker.c stable/12/contrib/unbound/doc/Changelog stable/12/contrib/unbound/doc/README stable/12/contrib/unbound/doc/example.conf.in stable/12/contrib/unbound/doc/libunbound.3.in stable/12/contrib/unbound/doc/unbound-anchor.8.in stable/12/contrib/unbound/doc/unbound-checkconf.8.in stable/12/contrib/unbound/doc/unbound-control.8.in stable/12/contrib/unbound/doc/unbound-host.1.in stable/12/contrib/unbound/doc/unbound.8.in stable/12/contrib/unbound/doc/unbound.conf.5.in stable/12/contrib/unbound/edns-subnet/subnetmod.c stable/12/contrib/unbound/install-sh stable/12/contrib/unbound/iterator/iter_delegpt.c stable/12/contrib/unbound/iterator/iter_delegpt.h stable/12/contrib/unbound/iterator/iter_scrub.c stable/12/contrib/unbound/iterator/iter_utils.c stable/12/contrib/unbound/iterator/iterator.c stable/12/contrib/unbound/iterator/iterator.h stable/12/contrib/unbound/libunbound/context.c stable/12/contrib/unbound/libunbound/libworker.c stable/12/contrib/unbound/libunbound/unbound.h stable/12/contrib/unbound/respip/respip.c stable/12/contrib/unbound/respip/respip.h stable/12/contrib/unbound/services/authzone.c stable/12/contrib/unbound/services/authzone.h stable/12/contrib/unbound/services/cache/dns.c stable/12/contrib/unbound/services/cache/dns.h stable/12/contrib/unbound/services/localzone.c stable/12/contrib/unbound/services/localzone.h stable/12/contrib/unbound/services/mesh.c stable/12/contrib/unbound/services/mesh.h stable/12/contrib/unbound/services/outside_network.c stable/12/contrib/unbound/services/view.c stable/12/contrib/unbound/sldns/parse.c stable/12/contrib/unbound/sldns/str2wire.c stable/12/contrib/unbound/smallapp/unbound-checkconf.c stable/12/contrib/unbound/smallapp/unbound-control.c stable/12/contrib/unbound/util/config_file.c stable/12/contrib/unbound/util/config_file.h stable/12/contrib/unbound/util/configlexer.lex stable/12/contrib/unbound/util/configparser.y stable/12/contrib/unbound/util/data/dname.c stable/12/contrib/unbound/util/data/dname.h stable/12/contrib/unbound/util/data/msgencode.c stable/12/contrib/unbound/util/data/msgparse.c stable/12/contrib/unbound/util/data/msgparse.h stable/12/contrib/unbound/util/data/msgreply.c stable/12/contrib/unbound/util/data/packed_rrset.c stable/12/contrib/unbound/util/data/packed_rrset.h stable/12/contrib/unbound/util/fptr_wlist.c stable/12/contrib/unbound/util/fptr_wlist.h stable/12/contrib/unbound/util/iana_ports.inc stable/12/contrib/unbound/util/log.c stable/12/contrib/unbound/util/log.h stable/12/contrib/unbound/util/module.h stable/12/contrib/unbound/util/net_help.c stable/12/contrib/unbound/util/net_help.h stable/12/contrib/unbound/util/netevent.c stable/12/contrib/unbound/util/random.c stable/12/contrib/unbound/util/storage/dnstree.c stable/12/contrib/unbound/util/storage/dnstree.h stable/12/contrib/unbound/validator/val_secalgo.c stable/12/contrib/unbound/validator/validator.c stable/12/lib/libunbound/Makefile Directory Properties: stable/12/ (props changed) Changes in other areas also in this revision: Added: stable/11/contrib/unbound/.github/ - copied from r361344, head/contrib/unbound/.github/ stable/11/contrib/unbound/contrib/drop2rpz - copied unchanged from r361344, head/contrib/unbound/contrib/drop2rpz stable/11/contrib/unbound/contrib/unbound_portable.service.in - copied unchanged from r361344, head/contrib/unbound/contrib/unbound_portable.service.in stable/11/contrib/unbound/contrib/unbound_smf23.tar.gz - copied unchanged from r361344, head/contrib/unbound/contrib/unbound_smf23.tar.gz stable/11/contrib/unbound/services/rpz.c - copied unchanged from r361344, head/contrib/unbound/services/rpz.c stable/11/contrib/unbound/services/rpz.h - copied unchanged from r361344, head/contrib/unbound/services/rpz.h Deleted: stable/11/contrib/unbound/contrib/unbound_smf22.tar.gz Modified: stable/11/contrib/unbound/Makefile.in stable/11/contrib/unbound/README.md stable/11/contrib/unbound/aclocal.m4 stable/11/contrib/unbound/cachedb/cachedb.c stable/11/contrib/unbound/compat/getentropy_solaris.c stable/11/contrib/unbound/config.guess stable/11/contrib/unbound/config.h.in stable/11/contrib/unbound/config.sub stable/11/contrib/unbound/configure stable/11/contrib/unbound/configure.ac stable/11/contrib/unbound/contrib/README stable/11/contrib/unbound/contrib/fastrpz.patch stable/11/contrib/unbound/contrib/libunbound.pc.in stable/11/contrib/unbound/contrib/unbound.service.in stable/11/contrib/unbound/contrib/unbound_munin_ stable/11/contrib/unbound/daemon/daemon.c stable/11/contrib/unbound/daemon/daemon.h stable/11/contrib/unbound/daemon/remote.c stable/11/contrib/unbound/daemon/stats.c stable/11/contrib/unbound/daemon/unbound.c stable/11/contrib/unbound/daemon/worker.c stable/11/contrib/unbound/doc/Changelog stable/11/contrib/unbound/doc/README stable/11/contrib/unbound/doc/example.conf.in stable/11/contrib/unbound/doc/libunbound.3.in stable/11/contrib/unbound/doc/unbound-anchor.8.in stable/11/contrib/unbound/doc/unbound-checkconf.8.in stable/11/contrib/unbound/doc/unbound-control.8.in stable/11/contrib/unbound/doc/unbound-host.1.in stable/11/contrib/unbound/doc/unbound.8.in stable/11/contrib/unbound/doc/unbound.conf.5.in stable/11/contrib/unbound/edns-subnet/subnetmod.c stable/11/contrib/unbound/install-sh stable/11/contrib/unbound/iterator/iter_delegpt.c stable/11/contrib/unbound/iterator/iter_delegpt.h stable/11/contrib/unbound/iterator/iter_scrub.c stable/11/contrib/unbound/iterator/iter_utils.c stable/11/contrib/unbound/iterator/iterator.c stable/11/contrib/unbound/iterator/iterator.h stable/11/contrib/unbound/libunbound/context.c stable/11/contrib/unbound/libunbound/libworker.c stable/11/contrib/unbound/libunbound/unbound.h stable/11/contrib/unbound/respip/respip.c stable/11/contrib/unbound/respip/respip.h stable/11/contrib/unbound/services/authzone.c stable/11/contrib/unbound/services/authzone.h stable/11/contrib/unbound/services/cache/dns.c stable/11/contrib/unbound/services/cache/dns.h stable/11/contrib/unbound/services/localzone.c stable/11/contrib/unbound/services/localzone.h stable/11/contrib/unbound/services/mesh.c stable/11/contrib/unbound/services/mesh.h stable/11/contrib/unbound/services/outside_network.c stable/11/contrib/unbound/services/view.c stable/11/contrib/unbound/sldns/parse.c stable/11/contrib/unbound/sldns/str2wire.c stable/11/contrib/unbound/smallapp/unbound-checkconf.c stable/11/contrib/unbound/smallapp/unbound-control.c stable/11/contrib/unbound/util/config_file.c stable/11/contrib/unbound/util/config_file.h stable/11/contrib/unbound/util/configlexer.lex stable/11/contrib/unbound/util/configparser.y stable/11/contrib/unbound/util/data/dname.c stable/11/contrib/unbound/util/data/dname.h stable/11/contrib/unbound/util/data/msgencode.c stable/11/contrib/unbound/util/data/msgparse.c stable/11/contrib/unbound/util/data/msgparse.h stable/11/contrib/unbound/util/data/msgreply.c stable/11/contrib/unbound/util/data/packed_rrset.c stable/11/contrib/unbound/util/data/packed_rrset.h stable/11/contrib/unbound/util/fptr_wlist.c stable/11/contrib/unbound/util/fptr_wlist.h stable/11/contrib/unbound/util/iana_ports.inc stable/11/contrib/unbound/util/log.c stable/11/contrib/unbound/util/log.h stable/11/contrib/unbound/util/module.h stable/11/contrib/unbound/util/net_help.c stable/11/contrib/unbound/util/net_help.h stable/11/contrib/unbound/util/netevent.c stable/11/contrib/unbound/util/random.c stable/11/contrib/unbound/util/storage/dnstree.c stable/11/contrib/unbound/util/storage/dnstree.h stable/11/contrib/unbound/validator/val_secalgo.c stable/11/contrib/unbound/validator/validator.c stable/11/lib/libunbound/Makefile Directory Properties: stable/11/ (props changed) Modified: stable/12/contrib/unbound/Makefile.in ============================================================================== --- stable/12/contrib/unbound/Makefile.in Sun May 24 14:54:21 2020 (r361434) +++ stable/12/contrib/unbound/Makefile.in Sun May 24 16:47:27 2020 (r361435) @@ -110,6 +110,7 @@ iterator/iter_delegpt.c iterator/iter_donotq.c iterato iterator/iter_hints.c iterator/iter_priv.c iterator/iter_resptype.c \ iterator/iter_scrub.c iterator/iter_utils.c services/listen_dnsport.c \ services/localzone.c services/mesh.c services/modstack.c services/view.c \ +services/rpz.c \ services/outbound_list.c services/outside_network.c util/alloc.c \ util/config_file.c util/configlexer.c util/configparser.c \ util/shm_side/shm_main.c services/authzone.c \ @@ -135,7 +136,7 @@ outbound_list.lo alloc.lo config_file.lo configlexer.l fptr_wlist.lo edns.lo locks.lo log.lo mini_event.lo module.lo net_help.lo \ random.lo rbtree.lo regional.lo rtt.lo dnstree.lo lookup3.lo lruhash.lo \ slabhash.lo tcp_conn_limit.lo timehist.lo tube.lo winsock_event.lo \ -autotrust.lo val_anchor.lo \ +autotrust.lo val_anchor.lo rpz.lo \ validator.lo val_kcache.lo val_kentry.lo val_neg.lo val_nsec3.lo val_nsec.lo \ val_secalgo.lo val_sigcrypt.lo val_utils.lo dns64.lo cachedb.lo redis.lo authzone.lo \ $(SUBNET_OBJ) $(PYTHONMOD_OBJ) $(CHECKLOCK_OBJ) $(DNSTAP_OBJ) $(DNSCRYPT_OBJ) \ @@ -642,6 +643,9 @@ depend: fi rm -f $(DEPEND_TMP) $(DEPEND_TMP2) +# build rules +ipset.lo ipset.o: $(srcdir)/ipset/ipset.c + # Dependencies dns.lo dns.o: $(srcdir)/services/cache/dns.c config.h $(srcdir)/iterator/iter_delegpt.h $(srcdir)/util/log.h \ $(srcdir)/iterator/iter_utils.h $(srcdir)/iterator/iter_resptype.h $(srcdir)/validator/val_nsec.h \ @@ -654,9 +658,9 @@ infra.lo infra.o: $(srcdir)/services/cache/infra.c con $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/wire2str.h $(srcdir)/services/cache/infra.h \ $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/storage/dnstree.h \ $(srcdir)/util/rbtree.h $(srcdir)/util/rtt.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/util/data/msgreply.h \ - $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/slabhash.h $(srcdir)/util/storage/lookup3.h \ - $(srcdir)/util/data/dname.h $(srcdir)/util/net_help.h $(srcdir)/util/config_file.h $(srcdir)/iterator/iterator.h \ + $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \ + $(srcdir)/util/storage/slabhash.h $(srcdir)/util/storage/lookup3.h $(srcdir)/util/data/dname.h \ + $(srcdir)/util/net_help.h $(srcdir)/util/config_file.h $(srcdir)/iterator/iterator.h \ $(srcdir)/services/outbound_list.h $(srcdir)/util/module.h $(srcdir)/util/data/msgparse.h \ $(srcdir)/sldns/pkthdr.h rrset.lo rrset.o: $(srcdir)/services/cache/rrset.c config.h $(srcdir)/services/cache/rrset.h \ @@ -681,11 +685,14 @@ msgparse.lo msgparse.o: $(srcdir)/util/data/msgparse.c msgreply.lo msgreply.o: $(srcdir)/util/data/msgreply.c config.h $(srcdir)/util/data/msgreply.h \ $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/data/packed_rrset.h \ $(srcdir)/util/storage/lookup3.h $(srcdir)/util/alloc.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/util/net_help.h \ - $(srcdir)/util/data/dname.h $(srcdir)/util/regional.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ - $(srcdir)/sldns/rrdef.h $(srcdir)/util/data/msgencode.h $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/wire2str.h \ - $(srcdir)/util/module.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h \ - $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h + $(srcdir)/util/net_help.h $(srcdir)/util/data/dname.h \ + $(srcdir)/util/regional.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h \ + $(srcdir)/util/data/msgencode.h $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/wire2str.h $(srcdir)/util/module.h \ + $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h \ + $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h \ + $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h $(srcdir)/util/config_file.h \ + $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h \ + $(srcdir)/respip/respip.h packed_rrset.lo packed_rrset.o: $(srcdir)/util/data/packed_rrset.c config.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ $(srcdir)/util/data/dname.h $(srcdir)/util/storage/lookup3.h $(srcdir)/util/alloc.h $(srcdir)/util/regional.h \ @@ -699,11 +706,12 @@ iterator.lo iterator.o: $(srcdir)/iterator/iterator.c $(srcdir)/iterator/iter_delegpt.h $(srcdir)/iterator/iter_scrub.h $(srcdir)/iterator/iter_priv.h \ $(srcdir)/validator/val_neg.h $(srcdir)/services/cache/dns.h $(srcdir)/services/cache/infra.h \ $(srcdir)/util/rtt.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/services/authzone.h \ - $(srcdir)/services/mesh.h $(srcdir)/services/modstack.h $(srcdir)/util/net_help.h $(srcdir)/util/regional.h \ + $(srcdir)/services/authzone.h $(srcdir)/services/mesh.h \ + $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h $(srcdir)/services/view.h \ + $(srcdir)/sldns/sbuffer.h $(srcdir)/util/config_file.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \ + $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/util/net_help.h $(srcdir)/util/regional.h \ $(srcdir)/util/data/dname.h $(srcdir)/util/data/msgencode.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h \ - $(srcdir)/util/config_file.h $(srcdir)/util/random.h $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/str2wire.h \ - $(srcdir)/sldns/parseutil.h $(srcdir)/sldns/sbuffer.h + $(srcdir)/util/random.h $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/parseutil.h iter_delegpt.lo iter_delegpt.o: $(srcdir)/iterator/iter_delegpt.c config.h $(srcdir)/iterator/iter_delegpt.h \ $(srcdir)/util/log.h $(srcdir)/services/cache/dns.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \ $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/regional.h \ @@ -745,88 +753,106 @@ iter_utils.lo iter_utils.o: $(srcdir)/iterator/iter_ut $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/iterator/iter_fwd.h \ $(srcdir)/iterator/iter_donotq.h $(srcdir)/iterator/iter_delegpt.h $(srcdir)/iterator/iter_priv.h \ $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/services/cache/dns.h \ - $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h $(srcdir)/util/net_help.h \ - $(srcdir)/util/config_file.h $(srcdir)/util/regional.h $(srcdir)/util/data/dname.h $(srcdir)/util/random.h \ - $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/services/modstack.h \ + $(srcdir)/services/cache/dns.h $(srcdir)/services/cache/rrset.h \ + $(srcdir)/util/storage/slabhash.h $(srcdir)/util/net_help.h $(srcdir)/util/config_file.h \ + $(srcdir)/util/regional.h $(srcdir)/util/data/dname.h $(srcdir)/util/random.h $(srcdir)/util/fptr_wlist.h \ + $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h \ + $(srcdir)/services/localzone.h $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h $(srcdir)/services/authzone.h \ + $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h \ $(srcdir)/validator/val_anchor.h $(srcdir)/validator/val_kcache.h $(srcdir)/validator/val_kentry.h \ - $(srcdir)/validator/val_utils.h $(srcdir)/validator/val_sigcrypt.h $(srcdir)/sldns/sbuffer.h \ - $(srcdir)/sldns/str2wire.h + $(srcdir)/validator/val_utils.h $(srcdir)/validator/val_sigcrypt.h $(srcdir)/sldns/str2wire.h listen_dnsport.lo listen_dnsport.o: $(srcdir)/services/listen_dnsport.c config.h \ $(srcdir)/services/listen_dnsport.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ - $(srcdir)/services/outside_network.h $(srcdir)/util/rbtree.h \ - $(srcdir)/util/config_file.h $(srcdir)/util/net_help.h $(srcdir)/sldns/sbuffer.h $(srcdir)/services/mesh.h \ - $(srcdir)/util/data/msgparse.h $(srcdir)/util/storage/lruhash.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h \ + $(srcdir)/services/outside_network.h $(srcdir)/util/rbtree.h \ + $(srcdir)/util/log.h $(srcdir)/util/config_file.h $(srcdir)/util/net_help.h \ + $(srcdir)/sldns/sbuffer.h $(srcdir)/services/mesh.h $(srcdir)/util/data/msgparse.h \ + $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h \ $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \ - $(srcdir)/services/modstack.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h + $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h \ + $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h $(srcdir)/services/authzone.h \ + $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h \ + $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h localzone.lo localzone.o: $(srcdir)/services/localzone.c config.h $(srcdir)/services/localzone.h \ $(srcdir)/util/rbtree.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/storage/dnstree.h \ $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/data/msgreply.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ - $(srcdir)/sldns/rrdef.h $(srcdir)/services/view.h $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/sbuffer.h \ + $(srcdir)/sldns/rrdef.h $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/str2wire.h \ $(srcdir)/util/regional.h $(srcdir)/util/config_file.h $(srcdir)/util/data/dname.h \ $(srcdir)/util/data/msgencode.h $(srcdir)/util/net_help.h $(srcdir)/util/netevent.h \ - $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/dnscrypt/cert.h \ - $(srcdir)/util/as112.h + $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/util/as112.h mesh.lo mesh.o: $(srcdir)/services/mesh.c config.h $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h \ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/data/msgparse.h \ - $(srcdir)/util/storage/lruhash.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/module.h \ - $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/services/modstack.h \ + $(srcdir)/util/data/msgparse.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ + $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h \ + $(srcdir)/util/data/packed_rrset.h $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h \ + $(srcdir)/services/localzone.h $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h \ + $(srcdir)/sldns/sbuffer.h $(srcdir)/util/config_file.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h \ + $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h \ $(srcdir)/services/outbound_list.h $(srcdir)/services/cache/dns.h $(srcdir)/util/net_help.h \ - $(srcdir)/util/regional.h $(srcdir)/util/data/msgencode.h $(srcdir)/util/timehist.h $(srcdir)/util/fptr_wlist.h \ - $(srcdir)/util/tube.h $(srcdir)/util/alloc.h $(srcdir)/util/config_file.h $(srcdir)/util/edns.h $(srcdir)/sldns/sbuffer.h \ - $(srcdir)/sldns/wire2str.h $(srcdir)/services/localzone.h $(srcdir)/util/storage/dnstree.h \ - $(srcdir)/services/view.h $(srcdir)/util/data/dname.h $(srcdir)/respip/respip.h \ + $(srcdir)/util/regional.h $(srcdir)/util/data/msgencode.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h \ + $(srcdir)/util/alloc.h $(srcdir)/util/edns.h $(srcdir)/sldns/wire2str.h $(srcdir)/util/data/dname.h \ $(srcdir)/services/listen_dnsport.h modstack.lo modstack.o: $(srcdir)/services/modstack.c config.h $(srcdir)/services/modstack.h \ $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \ $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/netevent.h \ - $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/dnscrypt/cert.h \ - $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/dns64/dns64.h \ - $(srcdir)/iterator/iterator.h $(srcdir)/services/outbound_list.h $(srcdir)/validator/validator.h \ - $(srcdir)/validator/val_utils.h $(srcdir)/respip/respip.h $(srcdir)/services/localzone.h \ - $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h $(PYTHONMOD_HEADER) $(srcdir)/ipsecmod/ipsecmod.h \ - $(srcdir)/util/storage/slabhash.h $(srcdir)/edns-subnet/addrtree.h $(srcdir)/edns-subnet/edns-subnet.h \ - $(srcdir)/ipset/ipset.h + $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/util/tube.h \ + $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h \ + $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h \ + $(srcdir)/util/config_file.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \ + $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/dns64/dns64.h $(srcdir)/iterator/iterator.h \ + $(srcdir)/services/outbound_list.h $(srcdir)/validator/validator.h $(srcdir)/validator/val_utils.h view.lo view.o: $(srcdir)/services/view.c config.h $(srcdir)/services/view.h $(srcdir)/util/rbtree.h \ $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/services/localzone.h $(srcdir)/util/storage/dnstree.h \ $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/data/msgreply.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ - $(srcdir)/sldns/rrdef.h $(srcdir)/util/config_file.h + $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/sbuffer.h $(srcdir)/util/config_file.h +rpz.lo rpz.o: $(srcdir)/services/rpz.c config.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h \ + $(srcdir)/util/rbtree.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/storage/dnstree.h \ + $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/data/msgreply.h \ + $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ + $(srcdir)/sldns/rrdef.h $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h $(srcdir)/util/config_file.h \ + $(srcdir)/services/authzone.h $(srcdir)/services/mesh.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ + $(srcdir)/services/modstack.h $(srcdir)/libunbound/unbound.h \ + $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/respip/respip.h $(srcdir)/sldns/wire2str.h \ + $(srcdir)/sldns/str2wire.h $(srcdir)/util/data/dname.h $(srcdir)/util/net_help.h $(srcdir)/util/regional.h outbound_list.lo outbound_list.o: $(srcdir)/services/outbound_list.c config.h \ $(srcdir)/services/outbound_list.h $(srcdir)/services/outside_network.h $(srcdir)/util/rbtree.h \ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/util/locks.h $(srcdir)/util/log.h + outside_network.lo outside_network.o: $(srcdir)/services/outside_network.c config.h \ $(srcdir)/services/outside_network.h $(srcdir)/util/rbtree.h $(srcdir)/util/netevent.h \ - $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/dnscrypt/cert.h \ - $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/services/listen_dnsport.h \ - $(srcdir)/services/cache/infra.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/storage/dnstree.h \ - $(srcdir)/util/rtt.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \ - $(srcdir)/iterator/iterator.h $(srcdir)/services/outbound_list.h $(srcdir)/util/module.h \ - $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/data/msgencode.h \ - $(srcdir)/util/data/dname.h $(srcdir)/util/net_help.h $(srcdir)/util/random.h $(srcdir)/util/fptr_wlist.h \ - $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/services/modstack.h $(srcdir)/sldns/sbuffer.h \ - $(srcdir)/dnstap/dnstap.h \ - + $(srcdir)/dnscrypt/dnscrypt.h \ + $(srcdir)/services/listen_dnsport.h $(srcdir)/services/cache/infra.h $(srcdir)/util/storage/lruhash.h \ + $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rtt.h \ + $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/iterator/iterator.h \ + $(srcdir)/services/outbound_list.h $(srcdir)/util/module.h $(srcdir)/util/data/msgparse.h \ + $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/data/msgencode.h $(srcdir)/util/data/dname.h \ + $(srcdir)/util/net_help.h $(srcdir)/util/random.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h \ + $(srcdir)/services/mesh.h $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h \ + $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h $(srcdir)/util/config_file.h $(srcdir)/services/authzone.h \ + $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h \ + $(srcdir)/dnstap/dnstap.h alloc.lo alloc.o: $(srcdir)/util/alloc.c config.h $(srcdir)/util/alloc.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ $(srcdir)/util/regional.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \ $(srcdir)/util/fptr_wlist.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/util/module.h \ - $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h \ - $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h + $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h \ + $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h \ + $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h \ + $(srcdir)/services/localzone.h $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h \ + $(srcdir)/sldns/sbuffer.h $(srcdir)/util/config_file.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h \ + $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h config_file.lo config_file.o: $(srcdir)/util/config_file.c config.h $(srcdir)/util/log.h \ $(srcdir)/util/configyyrename.h $(srcdir)/util/config_file.h util/configparser.h \ $(srcdir)/util/net_help.h $(srcdir)/util/data/msgparse.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \ $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/regional.h $(srcdir)/util/fptr_wlist.h \ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h \ - $(srcdir)/services/modstack.h $(srcdir)/util/data/dname.h $(srcdir)/util/rtt.h $(srcdir)/services/cache/infra.h \ - $(srcdir)/util/storage/dnstree.h $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/parseutil.h \ + $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h \ + $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h $(srcdir)/util/storage/dnstree.h \ + $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h \ + $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/util/data/dname.h \ + $(srcdir)/util/rtt.h $(srcdir)/services/cache/infra.h $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/parseutil.h \ $(srcdir)/iterator/iterator.h $(srcdir)/services/outbound_list.h $(srcdir)/util/iana_ports.inc configlexer.lo configlexer.o: util/configlexer.c config.h $(srcdir)/util/configyyrename.h \ $(srcdir)/util/config_file.h util/configparser.h @@ -837,71 +863,83 @@ shm_main.lo shm_main.o: $(srcdir)/util/shm_side/shm_ma $(srcdir)/util/alloc.h $(srcdir)/services/modstack.h \ $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h \ $(srcdir)/sldns/sbuffer.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \ - $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/dnscrypt/cert.h $(srcdir)/util/data/msgreply.h \ + $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/util/data/msgreply.h \ $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/daemon/stats.h \ $(srcdir)/util/timehist.h $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h $(srcdir)/services/mesh.h \ - $(srcdir)/util/rbtree.h $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h \ - $(srcdir)/services/cache/infra.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rtt.h \ - $(srcdir)/validator/validator.h $(srcdir)/validator/val_utils.h $(srcdir)/util/config_file.h \ - $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h + $(srcdir)/util/rbtree.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h $(srcdir)/util/storage/dnstree.h \ + $(srcdir)/services/view.h $(srcdir)/util/config_file.h $(srcdir)/services/authzone.h $(srcdir)/respip/respip.h \ + $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h $(srcdir)/services/cache/infra.h \ + $(srcdir)/util/rtt.h $(srcdir)/validator/validator.h $(srcdir)/validator/val_utils.h $(srcdir)/util/fptr_wlist.h \ + $(srcdir)/util/tube.h authzone.lo authzone.o: $(srcdir)/services/authzone.c config.h $(srcdir)/services/authzone.h \ $(srcdir)/util/rbtree.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/services/mesh.h $(srcdir)/util/netevent.h \ - $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/dnscrypt/cert.h \ - $(srcdir)/util/data/msgparse.h $(srcdir)/util/storage/lruhash.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h \ - $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \ - $(srcdir)/services/modstack.h $(srcdir)/util/data/dname.h $(srcdir)/util/data/msgencode.h \ - $(srcdir)/util/regional.h $(srcdir)/util/net_help.h $(srcdir)/util/config_file.h $(srcdir)/util/random.h \ + $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/util/data/msgparse.h \ + $(srcdir)/util/storage/lruhash.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/module.h \ + $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/services/modstack.h \ + $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h $(srcdir)/util/storage/dnstree.h \ + $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h $(srcdir)/util/config_file.h $(srcdir)/daemon/stats.h \ + $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/util/data/dname.h \ + $(srcdir)/util/data/msgencode.h $(srcdir)/util/regional.h $(srcdir)/util/net_help.h $(srcdir)/util/random.h \ $(srcdir)/services/cache/dns.h $(srcdir)/services/outside_network.h \ - $(srcdir)/services/listen_dnsport.h $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/str2wire.h \ - $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/parseutil.h $(srcdir)/sldns/keyraw.h \ - $(srcdir)/validator/val_nsec3.h $(srcdir)/validator/val_secalgo.h + $(srcdir)/services/listen_dnsport.h $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/wire2str.h \ + $(srcdir)/sldns/parseutil.h $(srcdir)/sldns/keyraw.h $(srcdir)/validator/val_nsec3.h \ + $(srcdir)/validator/val_secalgo.h fptr_wlist.lo fptr_wlist.o: $(srcdir)/util/fptr_wlist.c config.h $(srcdir)/util/fptr_wlist.h \ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/storage/lruhash.h \ - $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \ - $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h \ - $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h $(srcdir)/util/mini_event.h \ - $(srcdir)/services/outside_network.h $(srcdir)/services/localzone.h \ - $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h $(srcdir)/services/authzone.h \ - $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h $(srcdir)/services/cache/rrset.h \ - $(srcdir)/util/storage/slabhash.h $(srcdir)/dns64/dns64.h $(srcdir)/iterator/iterator.h \ - $(srcdir)/services/outbound_list.h $(srcdir)/iterator/iter_fwd.h $(srcdir)/validator/validator.h \ - $(srcdir)/validator/val_utils.h $(srcdir)/validator/val_anchor.h $(srcdir)/validator/val_nsec3.h \ - $(srcdir)/validator/val_sigcrypt.h $(srcdir)/validator/val_kentry.h $(srcdir)/validator/val_neg.h \ - $(srcdir)/validator/autotrust.h $(srcdir)/libunbound/libworker.h $(srcdir)/libunbound/context.h \ - $(srcdir)/util/alloc.h $(srcdir)/libunbound/unbound.h $(srcdir)/libunbound/unbound-event.h \ - $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h $(srcdir)/util/config_file.h $(srcdir)/respip/respip.h \ - $(PYTHONMOD_HEADER) $(srcdir)/ipsecmod/ipsecmod.h $(srcdir)/edns-subnet/subnetmod.h $(srcdir)/util/net_help.h \ - $(srcdir)/edns-subnet/addrtree.h $(srcdir)/edns-subnet/edns-subnet.h $(srcdir)/ipset/ipset.h + $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/module.h \ + $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \ + $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h \ + $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h \ + $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h \ + $(srcdir)/util/config_file.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \ + $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/util/mini_event.h $(srcdir)/util/rbtree.h \ + $(srcdir)/services/outside_network.h $(srcdir)/services/cache/infra.h \ + $(srcdir)/util/rtt.h $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h $(srcdir)/dns64/dns64.h \ + $(srcdir)/iterator/iterator.h $(srcdir)/services/outbound_list.h $(srcdir)/iterator/iter_fwd.h \ + $(srcdir)/validator/validator.h $(srcdir)/validator/val_utils.h $(srcdir)/validator/val_anchor.h \ + $(srcdir)/validator/val_nsec3.h $(srcdir)/validator/val_sigcrypt.h $(srcdir)/validator/val_kentry.h \ + $(srcdir)/validator/val_neg.h $(srcdir)/validator/autotrust.h $(srcdir)/libunbound/libworker.h \ + $(srcdir)/libunbound/context.h $(srcdir)/util/alloc.h $(srcdir)/libunbound/unbound-event.h \ + $(srcdir)/libunbound/worker.h locks.lo locks.o: $(srcdir)/util/locks.c config.h $(srcdir)/util/locks.h $(srcdir)/util/log.h log.lo log.o: $(srcdir)/util/log.c config.h $(srcdir)/util/log.h $(srcdir)/util/locks.h $(srcdir)/sldns/sbuffer.h -mini_event.lo mini_event.o: $(srcdir)/util/mini_event.c config.h $(srcdir)/util/mini_event.h +mini_event.lo mini_event.o: $(srcdir)/util/mini_event.c config.h $(srcdir)/util/mini_event.h $(srcdir)/util/rbtree.h \ + $(srcdir)/util/fptr_wlist.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ + $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \ + $(srcdir)/util/log.h $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \ + $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h \ + $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h \ + $(srcdir)/services/localzone.h $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h \ + $(srcdir)/sldns/sbuffer.h $(srcdir)/util/config_file.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h \ + $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h module.lo module.o: $(srcdir)/util/module.c config.h $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h \ $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \ $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/wire2str.h netevent.lo netevent.o: $(srcdir)/util/netevent.c config.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ - $(srcdir)/util/ub_event.h $(srcdir)/util/net_help.h $(srcdir)/util/tcp_conn_limit.h \ - $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/util/fptr_wlist.h \ - $(srcdir)/util/storage/lruhash.h $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h \ - $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ - $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/services/modstack.h \ - $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/str2wire.h $(srcdir)/dnstap/dnstap.h \ - $(srcdir)/services/listen_dnsport.h \ - + $(srcdir)/util/ub_event.h $(srcdir)/util/log.h $(srcdir)/util/net_help.h \ + $(srcdir)/util/tcp_conn_limit.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/util/locks.h \ + $(srcdir)/util/fptr_wlist.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/module.h \ + $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \ + $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h \ + $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h $(srcdir)/services/view.h \ + $(srcdir)/sldns/sbuffer.h $(srcdir)/util/config_file.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h \ + $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/sldns/str2wire.h \ + $(srcdir)/dnstap/dnstap.h $(srcdir)/services/listen_dnsport.h net_help.lo net_help.o: $(srcdir)/util/net_help.c config.h $(srcdir)/util/net_help.h $(srcdir)/util/log.h \ $(srcdir)/util/data/dname.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/module.h \ $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \ $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/regional.h $(srcdir)/util/config_file.h \ - $(srcdir)/sldns/parseutil.h $(srcdir)/sldns/wire2str.h \ - + $(srcdir)/sldns/parseutil.h $(srcdir)/sldns/wire2str.h random.lo random.o: $(srcdir)/util/random.c config.h $(srcdir)/util/random.h $(srcdir)/util/log.h rbtree.lo rbtree.o: $(srcdir)/util/rbtree.c config.h $(srcdir)/util/log.h $(srcdir)/util/fptr_wlist.h \ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/storage/lruhash.h \ - $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \ - $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h \ - $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h + $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/module.h \ + $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \ + $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h \ + $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h \ + $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h \ + $(srcdir)/util/config_file.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \ + $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h regional.lo regional.o: $(srcdir)/util/regional.c config.h $(srcdir)/util/log.h $(srcdir)/util/regional.h rtt.lo rtt.o: $(srcdir)/util/rtt.c config.h $(srcdir)/util/rtt.h $(srcdir)/iterator/iterator.h \ $(srcdir)/services/outbound_list.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/storage/lruhash.h \ @@ -909,19 +947,22 @@ rtt.lo rtt.o: $(srcdir)/util/rtt.c config.h $(srcdir)/ $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h edns.lo edns.o: $(srcdir)/util/edns.c config.h $(srcdir)/util/edns.h $(srcdir)/util/config_file.h \ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/regional.h \ - $(srcdir)/util/data/msgparse.h $(srcdir)/util/storage/lruhash.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h \ - $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h + $(srcdir)/util/regional.h $(srcdir)/util/data/msgparse.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \ + $(srcdir)/util/log.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/data/msgreply.h \ + $(srcdir)/util/data/packed_rrset.h dnstree.lo dnstree.o: $(srcdir)/util/storage/dnstree.c config.h $(srcdir)/util/storage/dnstree.h \ $(srcdir)/util/rbtree.h $(srcdir)/util/data/dname.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \ $(srcdir)/util/log.h $(srcdir)/util/net_help.h lookup3.lo lookup3.o: $(srcdir)/util/storage/lookup3.c config.h $(srcdir)/util/storage/lookup3.h lruhash.lo lruhash.o: $(srcdir)/util/storage/lruhash.c config.h $(srcdir)/util/storage/lruhash.h \ $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/netevent.h \ - $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/dnscrypt/cert.h \ - $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \ - $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h \ - $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h + $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/util/module.h \ + $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \ + $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h \ + $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h \ + $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h \ + $(srcdir)/util/config_file.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \ + $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h slabhash.lo slabhash.o: $(srcdir)/util/storage/slabhash.c config.h $(srcdir)/util/storage/slabhash.h \ $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h tcp_conn_limit.lo tcp_conn_limit.o: $(srcdir)/util/tcp_conn_limit.c config.h $(srcdir)/util/regional.h \ @@ -929,26 +970,30 @@ tcp_conn_limit.lo tcp_conn_limit.o: $(srcdir)/util/tcp $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/util/locks.h $(srcdir)/services/localzone.h \ $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/data/msgreply.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ - $(srcdir)/sldns/rrdef.h $(srcdir)/services/view.h $(srcdir)/sldns/str2wire.h + $(srcdir)/sldns/rrdef.h $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/str2wire.h timehist.lo timehist.o: $(srcdir)/util/timehist.c config.h $(srcdir)/util/timehist.h $(srcdir)/util/log.h tube.lo tube.o: $(srcdir)/util/tube.c config.h $(srcdir)/util/tube.h $(srcdir)/util/log.h $(srcdir)/util/net_help.h \ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/util/locks.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/storage/lruhash.h \ - $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \ - $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/services/mesh.h \ - $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h $(srcdir)/util/ub_event.h + $(srcdir)/util/fptr_wlist.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/module.h \ + $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \ + $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h \ + $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h \ + $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h \ + $(srcdir)/util/config_file.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \ + $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/util/ub_event.h ub_event.lo ub_event.o: $(srcdir)/util/ub_event.c config.h $(srcdir)/util/ub_event.h $(srcdir)/util/log.h \ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/util/locks.h $(srcdir)/util/tube.h \ - + $(srcdir)/util/tube.h $(srcdir)/util/mini_event.h $(srcdir)/util/rbtree.h ub_event_pluggable.lo ub_event_pluggable.o: $(srcdir)/util/ub_event_pluggable.c config.h $(srcdir)/util/ub_event.h \ $(srcdir)/libunbound/unbound-event.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ - $(srcdir)/util/fptr_wlist.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/module.h \ - $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \ - $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h \ - $(srcdir)/services/modstack.h \ - + $(srcdir)/util/log.h $(srcdir)/util/fptr_wlist.h \ + $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h \ + $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ + $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h \ + $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h \ + $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h \ + $(srcdir)/util/config_file.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \ + $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/util/mini_event.h $(srcdir)/util/rbtree.h winsock_event.lo winsock_event.o: $(srcdir)/util/winsock_event.c config.h autotrust.lo autotrust.o: $(srcdir)/validator/autotrust.c config.h $(srcdir)/validator/autotrust.h \ $(srcdir)/util/rbtree.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \ @@ -957,10 +1002,11 @@ autotrust.lo autotrust.o: $(srcdir)/validator/autotrus $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/net_help.h \ $(srcdir)/util/config_file.h $(srcdir)/util/regional.h $(srcdir)/util/random.h $(srcdir)/services/mesh.h \ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/services/modstack.h $(srcdir)/services/cache/rrset.h \ - $(srcdir)/util/storage/slabhash.h $(srcdir)/validator/val_kcache.h $(srcdir)/sldns/sbuffer.h \ - $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/keyraw.h \ - + $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h \ + $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h \ + $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h \ + $(srcdir)/respip/respip.h $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h \ + $(srcdir)/validator/val_kcache.h $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/keyraw.h val_anchor.lo val_anchor.o: $(srcdir)/validator/val_anchor.c config.h $(srcdir)/validator/val_anchor.h \ $(srcdir)/util/rbtree.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/validator/val_sigcrypt.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/sldns/pkthdr.h \ @@ -977,8 +1023,11 @@ validator.lo validator.o: $(srcdir)/validator/validato $(srcdir)/validator/autotrust.h $(srcdir)/services/cache/dns.h $(srcdir)/services/cache/rrset.h \ $(srcdir)/util/data/dname.h $(srcdir)/util/net_help.h $(srcdir)/util/regional.h $(srcdir)/util/config_file.h \ $(srcdir)/util/fptr_wlist.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h \ - $(srcdir)/services/modstack.h $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/str2wire.h + $(srcdir)/util/tube.h $(srcdir)/services/mesh.h \ + $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h \ + $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h \ + $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h \ + $(srcdir)/respip/respip.h $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/str2wire.h val_kcache.lo val_kcache.o: $(srcdir)/validator/val_kcache.c config.h $(srcdir)/validator/val_kcache.h \ $(srcdir)/util/storage/slabhash.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ $(srcdir)/validator/val_kentry.h $(srcdir)/util/config_file.h $(srcdir)/util/data/dname.h \ @@ -987,13 +1036,11 @@ val_kcache.lo val_kcache.o: $(srcdir)/validator/val_kc val_kentry.lo val_kentry.o: $(srcdir)/validator/val_kentry.c config.h $(srcdir)/validator/val_kentry.h \ $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/data/packed_rrset.h \ $(srcdir)/util/data/dname.h $(srcdir)/util/storage/lookup3.h $(srcdir)/util/regional.h $(srcdir)/util/net_help.h \ - $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/keyraw.h \ - -val_neg.lo val_neg.o: $(srcdir)/validator/val_neg.c config.h \ - $(srcdir)/validator/val_neg.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/rbtree.h \ - $(srcdir)/validator/val_nsec.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \ - $(srcdir)/validator/val_nsec3.h $(srcdir)/validator/val_utils.h $(srcdir)/sldns/pkthdr.h \ - $(srcdir)/util/data/dname.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/net_help.h \ + $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/keyraw.h +val_neg.lo val_neg.o: $(srcdir)/validator/val_neg.c config.h $(srcdir)/validator/val_neg.h $(srcdir)/util/locks.h \ + $(srcdir)/util/log.h $(srcdir)/util/rbtree.h $(srcdir)/validator/val_nsec.h $(srcdir)/util/data/packed_rrset.h \ + $(srcdir)/util/storage/lruhash.h $(srcdir)/validator/val_nsec3.h $(srcdir)/validator/val_utils.h \ + $(srcdir)/sldns/pkthdr.h $(srcdir)/util/data/dname.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/net_help.h \ $(srcdir)/util/config_file.h $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h \ $(srcdir)/services/cache/dns.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/sbuffer.h val_nsec3.lo val_nsec3.o: $(srcdir)/validator/val_nsec3.c config.h $(srcdir)/validator/val_nsec3.h \ @@ -1011,17 +1058,15 @@ val_nsec.lo val_nsec.o: $(srcdir)/validator/val_nsec.c val_secalgo.lo val_secalgo.o: $(srcdir)/validator/val_secalgo.c config.h $(srcdir)/util/data/packed_rrset.h \ $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/validator/val_secalgo.h \ $(srcdir)/validator/val_nsec3.h $(srcdir)/util/rbtree.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/keyraw.h \ - $(srcdir)/sldns/sbuffer.h \ - + $(srcdir)/sldns/sbuffer.h val_sigcrypt.lo val_sigcrypt.o: $(srcdir)/validator/val_sigcrypt.c config.h \ $(srcdir)/validator/val_sigcrypt.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \ $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/sldns/pkthdr.h $(srcdir)/validator/val_secalgo.h \ $(srcdir)/validator/validator.h $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h \ $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/rrdef.h $(srcdir)/validator/val_utils.h \ $(srcdir)/util/data/dname.h $(srcdir)/util/rbtree.h $(srcdir)/util/net_help.h $(srcdir)/util/regional.h \ - $(srcdir)/util/config_file.h $(srcdir)/sldns/keyraw.h \ - $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/parseutil.h $(srcdir)/sldns/wire2str.h \ - + $(srcdir)/util/config_file.h $(srcdir)/sldns/keyraw.h $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/parseutil.h \ + $(srcdir)/sldns/wire2str.h val_utils.lo val_utils.o: $(srcdir)/validator/val_utils.c config.h $(srcdir)/validator/val_utils.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ $(srcdir)/sldns/pkthdr.h $(srcdir)/validator/validator.h $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h \ @@ -1037,9 +1082,11 @@ dns64.lo dns64.o: $(srcdir)/dns64/dns64.c config.h $(s $(srcdir)/sldns/rrdef.h $(srcdir)/services/cache/dns.h $(srcdir)/services/cache/rrset.h \ $(srcdir)/util/storage/slabhash.h $(srcdir)/util/config_file.h $(srcdir)/util/fptr_wlist.h \ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h \ - $(srcdir)/services/modstack.h $(srcdir)/util/net_help.h $(srcdir)/util/regional.h \ - $(srcdir)/util/storage/dnstree.h $(srcdir)/util/data/dname.h $(srcdir)/sldns/str2wire.h + $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h \ + $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h $(srcdir)/util/storage/dnstree.h \ + $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h \ + $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/util/net_help.h \ + $(srcdir)/util/regional.h $(srcdir)/util/data/dname.h $(srcdir)/sldns/str2wire.h edns-subnet.lo edns-subnet.o: $(srcdir)/edns-subnet/edns-subnet.c config.h subnetmod.lo subnetmod.o: $(srcdir)/edns-subnet/subnetmod.c config.h addrtree.lo addrtree.o: $(srcdir)/edns-subnet/addrtree.c config.h $(srcdir)/util/log.h \ @@ -1053,36 +1100,16 @@ respip.lo respip.o: $(srcdir)/respip/respip.c config.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/module.h \ $(srcdir)/util/storage/lruhash.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \ $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/services/view.h \ - $(srcdir)/services/cache/dns.h $(srcdir)/sldns/str2wire.h $(srcdir)/util/config_file.h \ - $(srcdir)/util/fptr_wlist.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h \ - $(srcdir)/services/modstack.h $(srcdir)/util/net_help.h $(srcdir)/util/regional.h $(srcdir)/respip/respip.h + $(srcdir)/sldns/sbuffer.h $(srcdir)/services/authzone.h $(srcdir)/services/mesh.h $(srcdir)/util/netevent.h \ + $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/services/modstack.h \ + $(srcdir)/services/rpz.h $(srcdir)/util/config_file.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \ + $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/services/cache/dns.h \ + $(srcdir)/sldns/str2wire.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h $(srcdir)/util/net_help.h \ + $(srcdir)/util/regional.h checklocks.lo checklocks.o: $(srcdir)/testcode/checklocks.c config.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ $(srcdir)/testcode/checklocks.h -dnstap.lo dnstap.o: $(srcdir)/dnstap/dnstap.c config.h $(srcdir)/sldns/sbuffer.h \ - $(srcdir)/util/config_file.h $(srcdir)/util/net_help.h $(srcdir)/util/log.h $(srcdir)/util/netevent.h \ - $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/dnscrypt/cert.h \ - $(srcdir)/util/locks.h $(srcdir)/dnstap/dnstap.h \ - dnstap/dnstap.pb-c.h -dnstap.pb-c.lo dnstap.pb-c.o: dnstap/dnstap.pb-c.c dnstap/dnstap.pb-c.h \ - -dnscrypt.lo dnscrypt.o: $(srcdir)/dnscrypt/dnscrypt.c config.h $(srcdir)/sldns/sbuffer.h \ - $(srcdir)/util/config_file.h $(srcdir)/util/net_help.h $(srcdir)/util/log.h $(srcdir)/util/netevent.h \ - $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/dnscrypt/cert.h \ - $(srcdir)/util/locks.h $(srcdir)/util/storage/slabhash.h $(srcdir)/util/storage/lruhash.h \ - $(srcdir)/util/storage/lookup3.h ipsecmod.lo ipsecmod.o: $(srcdir)/ipsecmod/ipsecmod.c config.h -ipsecmod-whitelist.lo ipsecmod-whitelist.o: $(srcdir)/ipsecmod/ipsecmod-whitelist.c config.h \ - $(srcdir)/ipsecmod/ipsecmod.h $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \ - $(srcdir)/util/log.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \ - $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/rbtree.h \ - $(srcdir)/ipsecmod/ipsecmod-whitelist.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/regional.h \ - $(srcdir)/util/config_file.h $(srcdir)/util/data/dname.h $(srcdir)/sldns/str2wire.h -ipset.lo ipset.o: $(srcdir)/ipset/ipset.c config.h $(srcdir)/ipset/ipset.h $(srcdir)/util/module.h \ - $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/data/msgreply.h \ - $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ - $(srcdir)/sldns/rrdef.h $(srcdir)/util/regional.h $(srcdir)/util/config_file.h $(srcdir)/services/cache/dns.h \ - $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/parseutil.h +ipsecmod-whitelist.lo ipsecmod-whitelist.o: $(srcdir)/ipsecmod/ipsecmod-whitelist.c config.h unitanchor.lo unitanchor.o: $(srcdir)/testcode/unitanchor.c config.h $(srcdir)/util/log.h $(srcdir)/util/data/dname.h \ $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/testcode/unitmain.h \ $(srcdir)/validator/val_anchor.h $(srcdir)/util/rbtree.h $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/rrdef.h @@ -1091,16 +1118,15 @@ unitdname.lo unitdname.o: $(srcdir)/testcode/unitdname $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/rrdef.h unitlruhash.lo unitlruhash.o: $(srcdir)/testcode/unitlruhash.c config.h $(srcdir)/testcode/unitmain.h \ $(srcdir)/util/log.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/storage/slabhash.h -unitmain.lo unitmain.o: $(srcdir)/testcode/unitmain.c config.h \ - $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/keyraw.h \ +unitmain.lo unitmain.o: $(srcdir)/testcode/unitmain.c config.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/keyraw.h \ $(srcdir)/util/log.h $(srcdir)/testcode/unitmain.h $(srcdir)/util/alloc.h $(srcdir)/util/locks.h $(srcdir)/util/net_help.h \ $(srcdir)/util/config_file.h $(srcdir)/util/rtt.h $(srcdir)/util/timehist.h $(srcdir)/iterator/iterator.h \ $(srcdir)/services/outbound_list.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/storage/lruhash.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/module.h $(srcdir)/util/data/msgparse.h \ $(srcdir)/sldns/pkthdr.h $(srcdir)/libunbound/unbound.h $(srcdir)/services/cache/infra.h \ $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/util/random.h $(srcdir)/respip/respip.h \ - $(srcdir)/services/localzone.h $(srcdir)/services/view.h + $(srcdir)/util/random.h $(srcdir)/respip/respip.h \ + $(srcdir)/services/localzone.h $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h unitmsgparse.lo unitmsgparse.o: $(srcdir)/testcode/unitmsgparse.c config.h $(srcdir)/util/log.h \ $(srcdir)/testcode/unitmain.h $(srcdir)/util/data/msgparse.h $(srcdir)/util/storage/lruhash.h \ $(srcdir)/util/locks.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/data/msgreply.h \ @@ -1134,59 +1160,59 @@ unitldns.lo unitldns.o: $(srcdir)/testcode/unitldns.c unitecs.lo unitecs.o: $(srcdir)/testcode/unitecs.c config.h unitauth.lo unitauth.o: $(srcdir)/testcode/unitauth.c config.h $(srcdir)/services/authzone.h \ $(srcdir)/util/rbtree.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/services/mesh.h $(srcdir)/util/netevent.h \ - $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/dnscrypt/cert.h \ - $(srcdir)/util/data/msgparse.h $(srcdir)/util/storage/lruhash.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h \ - $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \ - $(srcdir)/services/modstack.h $(srcdir)/testcode/unitmain.h $(srcdir)/util/regional.h $(srcdir)/util/net_help.h \ - $(srcdir)/util/config_file.h $(srcdir)/services/cache/dns.h $(srcdir)/sldns/str2wire.h \ - $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/sbuffer.h + $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/util/data/msgparse.h \ + $(srcdir)/util/storage/lruhash.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/module.h \ + $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/services/modstack.h \ + $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h $(srcdir)/util/storage/dnstree.h \ + $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h $(srcdir)/util/config_file.h $(srcdir)/daemon/stats.h \ + $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/testcode/unitmain.h \ + $(srcdir)/util/regional.h $(srcdir)/util/net_help.h $(srcdir)/services/cache/dns.h $(srcdir)/sldns/str2wire.h \ + $(srcdir)/sldns/wire2str.h acl_list.lo acl_list.o: $(srcdir)/daemon/acl_list.c config.h $(srcdir)/daemon/acl_list.h \ $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/services/view.h $(srcdir)/util/locks.h \ $(srcdir)/util/log.h $(srcdir)/util/regional.h $(srcdir)/util/config_file.h $(srcdir)/util/net_help.h \ $(srcdir)/services/localzone.h $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h \ $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \ - $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/str2wire.h -cachedump.lo cachedump.o: $(srcdir)/daemon/cachedump.c config.h \ - $(srcdir)/daemon/cachedump.h $(srcdir)/daemon/remote.h $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h \ - $(srcdir)/sldns/sbuffer.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \ - $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/util/alloc.h \ - $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h \ - $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/util/module.h \ - $(srcdir)/dnstap/dnstap.h $(srcdir)/services/cache/rrset.h \ - $(srcdir)/util/storage/slabhash.h $(srcdir)/services/cache/dns.h $(srcdir)/services/cache/infra.h \ - $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/util/rtt.h $(srcdir)/util/regional.h \ - $(srcdir)/util/net_help.h $(srcdir)/util/data/dname.h $(srcdir)/iterator/iterator.h \ + $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/str2wire.h +cachedump.lo cachedump.o: $(srcdir)/daemon/cachedump.c config.h $(srcdir)/daemon/cachedump.h \ + $(srcdir)/daemon/remote.h $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h \ + $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ + $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ + $(srcdir)/util/alloc.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ + $(srcdir)/sldns/rrdef.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h \ + $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h \ + $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h $(srcdir)/services/cache/dns.h \ + $(srcdir)/services/cache/infra.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/util/rtt.h \ + $(srcdir)/util/regional.h $(srcdir)/util/net_help.h $(srcdir)/util/data/dname.h $(srcdir)/iterator/iterator.h \ $(srcdir)/services/outbound_list.h $(srcdir)/iterator/iter_delegpt.h $(srcdir)/iterator/iter_utils.h \ $(srcdir)/iterator/iter_resptype.h $(srcdir)/iterator/iter_fwd.h $(srcdir)/iterator/iter_hints.h \ $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/str2wire.h -daemon.lo daemon.o: $(srcdir)/daemon/daemon.c config.h \ - $(srcdir)/daemon/daemon.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/alloc.h $(srcdir)/services/modstack.h \ - $(srcdir)/daemon/worker.h \ +daemon.lo daemon.o: $(srcdir)/daemon/daemon.c config.h $(srcdir)/daemon/daemon.h $(srcdir)/util/locks.h \ + $(srcdir)/util/log.h $(srcdir)/util/alloc.h $(srcdir)/services/modstack.h \ + $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h \ + $(srcdir)/sldns/sbuffer.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \ + $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/util/data/msgreply.h \ + $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/daemon/stats.h \ + $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h \ + $(srcdir)/daemon/remote.h $(srcdir)/daemon/acl_list.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h \ + $(srcdir)/services/view.h $(srcdir)/util/config_file.h $(srcdir)/util/shm_side/shm_main.h \ + $(srcdir)/util/storage/lookup3.h $(srcdir)/util/storage/slabhash.h $(srcdir)/util/tcp_conn_limit.h \ + $(srcdir)/services/listen_dnsport.h $(srcdir)/services/cache/rrset.h $(srcdir)/services/cache/infra.h \ + $(srcdir)/util/rtt.h $(srcdir)/services/localzone.h $(srcdir)/services/authzone.h $(srcdir)/services/mesh.h \ + $(srcdir)/services/rpz.h $(srcdir)/respip/respip.h $(srcdir)/util/random.h $(srcdir)/util/tube.h $(srcdir)/util/net_help.h \ + $(srcdir)/sldns/keyraw.h +remote.lo remote.o: $(srcdir)/daemon/remote.c config.h $(srcdir)/daemon/remote.h $(srcdir)/daemon/worker.h \ $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h $(srcdir)/util/data/packed_rrset.h \ - $(srcdir)/util/storage/lruhash.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ - $(srcdir)/sldns/rrdef.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h \ - $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h $(srcdir)/daemon/remote.h \ - $(srcdir)/daemon/acl_list.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/services/view.h \ - $(srcdir)/util/config_file.h $(srcdir)/util/shm_side/shm_main.h $(srcdir)/util/storage/lookup3.h \ - $(srcdir)/util/storage/slabhash.h $(srcdir)/util/tcp_conn_limit.h $(srcdir)/services/listen_dnsport.h \ - $(srcdir)/services/cache/rrset.h $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h \ - $(srcdir)/services/localzone.h $(srcdir)/services/authzone.h $(srcdir)/services/mesh.h $(srcdir)/util/random.h \ - $(srcdir)/util/tube.h $(srcdir)/util/net_help.h $(srcdir)/sldns/keyraw.h $(srcdir)/respip/respip.h -remote.lo remote.o: $(srcdir)/daemon/remote.c config.h \ - $(srcdir)/daemon/remote.h \ - $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h \ - $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ - $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/util/alloc.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h \ - $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \ - $(srcdir)/libunbound/unbound.h $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h \ - $(srcdir)/daemon/daemon.h $(srcdir)/services/modstack.h \ - $(srcdir)/daemon/cachedump.h $(srcdir)/util/config_file.h $(srcdir)/util/net_help.h \ - $(srcdir)/services/listen_dnsport.h $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h \ - $(srcdir)/services/cache/infra.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/util/rtt.h \ - $(srcdir)/services/mesh.h $(srcdir)/services/localzone.h $(srcdir)/services/view.h $(srcdir)/services/authzone.h \ + $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/netevent.h \ + $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/util/alloc.h \ + $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h \ + $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/util/module.h \ + $(srcdir)/dnstap/dnstap.h $(srcdir)/daemon/daemon.h \ + $(srcdir)/services/modstack.h $(srcdir)/daemon/cachedump.h $(srcdir)/util/config_file.h \ + $(srcdir)/util/net_help.h $(srcdir)/services/listen_dnsport.h $(srcdir)/services/cache/rrset.h \ + $(srcdir)/util/storage/slabhash.h $(srcdir)/services/cache/infra.h $(srcdir)/util/storage/dnstree.h \ + $(srcdir)/util/rbtree.h $(srcdir)/util/rtt.h $(srcdir)/services/mesh.h $(srcdir)/services/rpz.h \ + $(srcdir)/services/localzone.h $(srcdir)/services/view.h $(srcdir)/services/authzone.h $(srcdir)/respip/respip.h \ $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h $(srcdir)/util/data/dname.h $(srcdir)/validator/validator.h \ $(srcdir)/validator/val_utils.h $(srcdir)/validator/val_kcache.h $(srcdir)/validator/val_kentry.h \ $(srcdir)/validator/val_anchor.h $(srcdir)/iterator/iterator.h $(srcdir)/services/outbound_list.h \ @@ -1197,56 +1223,59 @@ stats.lo stats.o: $(srcdir)/daemon/stats.c config.h $( $(srcdir)/libunbound/unbound.h $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/util/alloc.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h \ - $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h \ - $(srcdir)/daemon/daemon.h $(srcdir)/services/modstack.h \ - $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/services/outside_network.h \ - $(srcdir)/services/listen_dnsport.h $(srcdir)/util/config_file.h $(srcdir)/util/tube.h $(srcdir)/util/net_help.h \ - $(srcdir)/validator/validator.h $(srcdir)/validator/val_utils.h $(srcdir)/iterator/iterator.h \ - $(srcdir)/services/outbound_list.h $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h \ - $(srcdir)/services/cache/infra.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rtt.h \ - $(srcdir)/services/authzone.h $(srcdir)/validator/val_kcache.h $(srcdir)/validator/val_neg.h \ - + $(srcdir)/util/alloc.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ + $(srcdir)/sldns/rrdef.h $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h \ + $(srcdir)/daemon/daemon.h $(srcdir)/services/modstack.h $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h \ + $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h $(srcdir)/util/storage/dnstree.h \ + $(srcdir)/services/view.h $(srcdir)/util/config_file.h $(srcdir)/services/authzone.h $(srcdir)/respip/respip.h \ + $(srcdir)/services/outside_network.h $(srcdir)/services/listen_dnsport.h $(srcdir)/util/tube.h \ + $(srcdir)/util/net_help.h $(srcdir)/validator/validator.h $(srcdir)/validator/val_utils.h \ + $(srcdir)/iterator/iterator.h $(srcdir)/services/outbound_list.h $(srcdir)/services/cache/rrset.h \ + $(srcdir)/util/storage/slabhash.h $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h \ + $(srcdir)/validator/val_kcache.h $(srcdir)/validator/val_neg.h unbound.lo unbound.o: $(srcdir)/daemon/unbound.c config.h $(srcdir)/util/log.h $(srcdir)/daemon/daemon.h \ $(srcdir)/util/locks.h $(srcdir)/util/alloc.h $(srcdir)/services/modstack.h \ - $(srcdir)/daemon/remote.h \ - $(srcdir)/util/config_file.h $(srcdir)/util/storage/slabhash.h $(srcdir)/util/storage/lruhash.h \ - $(srcdir)/services/listen_dnsport.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/services/cache/rrset.h $(srcdir)/util/data/packed_rrset.h \ - $(srcdir)/services/cache/infra.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/util/rtt.h \ - $(srcdir)/util/data/msgreply.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/module.h \ - $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h \ - $(srcdir)/services/mesh.h $(srcdir)/util/net_help.h $(srcdir)/util/ub_event.h + $(srcdir)/daemon/remote.h $(srcdir)/util/config_file.h \ + $(srcdir)/util/storage/slabhash.h $(srcdir)/util/storage/lruhash.h $(srcdir)/services/listen_dnsport.h \ + $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/services/cache/rrset.h \ + $(srcdir)/util/data/packed_rrset.h $(srcdir)/services/cache/infra.h $(srcdir)/util/storage/dnstree.h \ + $(srcdir)/util/rbtree.h $(srcdir)/util/rtt.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/fptr_wlist.h \ + $(srcdir)/util/module.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h \ + $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h \ + $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h \ + $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/util/net_help.h \ + $(srcdir)/util/ub_event.h worker.lo worker.o: $(srcdir)/daemon/worker.c config.h $(srcdir)/util/log.h $(srcdir)/util/net_help.h \ $(srcdir)/util/random.h $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/util/alloc.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h \ - $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \ - $(srcdir)/libunbound/unbound.h $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h \ - $(srcdir)/daemon/daemon.h $(srcdir)/services/modstack.h \ - $(srcdir)/daemon/remote.h \ - $(srcdir)/daemon/acl_list.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/services/view.h \ - $(srcdir)/util/config_file.h $(srcdir)/util/regional.h $(srcdir)/util/storage/slabhash.h \ - $(srcdir)/services/listen_dnsport.h $(srcdir)/services/outside_network.h \ - $(srcdir)/services/outbound_list.h $(srcdir)/services/cache/rrset.h $(srcdir)/services/cache/infra.h \ - $(srcdir)/util/rtt.h $(srcdir)/services/cache/dns.h $(srcdir)/services/authzone.h $(srcdir)/services/mesh.h \ - $(srcdir)/services/localzone.h $(srcdir)/util/data/msgencode.h $(srcdir)/util/data/dname.h \ - $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h $(srcdir)/util/edns.h $(srcdir)/iterator/iter_fwd.h \ - $(srcdir)/iterator/iter_hints.h $(srcdir)/validator/autotrust.h $(srcdir)/validator/val_anchor.h \ - $(srcdir)/respip/respip.h $(srcdir)/libunbound/context.h $(srcdir)/libunbound/unbound-event.h \ + $(srcdir)/util/alloc.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ + $(srcdir)/sldns/rrdef.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h \ + $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h $(srcdir)/daemon/daemon.h \ + $(srcdir)/services/modstack.h $(srcdir)/daemon/remote.h $(srcdir)/daemon/acl_list.h \ + $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/services/view.h $(srcdir)/util/config_file.h \ + $(srcdir)/util/regional.h $(srcdir)/util/storage/slabhash.h $(srcdir)/services/listen_dnsport.h \ + $(srcdir)/services/outside_network.h $(srcdir)/services/outbound_list.h \ + $(srcdir)/services/cache/rrset.h $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h \ + $(srcdir)/services/cache/dns.h $(srcdir)/services/authzone.h $(srcdir)/services/mesh.h $(srcdir)/services/rpz.h \ + $(srcdir)/services/localzone.h $(srcdir)/respip/respip.h $(srcdir)/util/data/msgencode.h \ + $(srcdir)/util/data/dname.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h $(srcdir)/util/edns.h \ + $(srcdir)/iterator/iter_fwd.h $(srcdir)/iterator/iter_hints.h $(srcdir)/validator/autotrust.h \ + $(srcdir)/validator/val_anchor.h $(srcdir)/libunbound/context.h $(srcdir)/libunbound/unbound-event.h \ $(srcdir)/libunbound/libworker.h $(srcdir)/sldns/wire2str.h $(srcdir)/util/shm_side/shm_main.h testbound.lo testbound.o: $(srcdir)/testcode/testbound.c config.h $(srcdir)/testcode/testpkts.h \ $(srcdir)/testcode/replay.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ - $(srcdir)/util/rbtree.h $(srcdir)/testcode/fake_event.h $(srcdir)/daemon/remote.h \ - $(srcdir)/util/config_file.h $(srcdir)/sldns/keyraw.h $(srcdir)/daemon/unbound.c $(srcdir)/daemon/daemon.h \ - $(srcdir)/util/alloc.h $(srcdir)/services/modstack.h \ - $(srcdir)/util/storage/slabhash.h $(srcdir)/util/storage/lruhash.h $(srcdir)/services/listen_dnsport.h \ - $(srcdir)/services/cache/rrset.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/services/cache/infra.h \ - $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rtt.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/fptr_wlist.h \ - $(srcdir)/util/module.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h \ - $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/util/net_help.h $(srcdir)/util/ub_event.h + $(srcdir)/util/rbtree.h $(srcdir)/testcode/fake_event.h \ + $(srcdir)/daemon/remote.h $(srcdir)/util/config_file.h $(srcdir)/sldns/keyraw.h $(srcdir)/daemon/unbound.c \ + $(srcdir)/util/log.h $(srcdir)/daemon/daemon.h $(srcdir)/util/locks.h $(srcdir)/util/alloc.h $(srcdir)/services/modstack.h \ + $(srcdir)/util/storage/slabhash.h $(srcdir)/util/storage/lruhash.h \ + $(srcdir)/services/listen_dnsport.h $(srcdir)/services/cache/rrset.h \ + $(srcdir)/util/data/packed_rrset.h $(srcdir)/services/cache/infra.h $(srcdir)/util/storage/dnstree.h \ + $(srcdir)/util/rtt.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/module.h \ + $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h \ + $(srcdir)/services/mesh.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h $(srcdir)/services/view.h \ + $(srcdir)/sldns/sbuffer.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \ + $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/util/net_help.h $(srcdir)/util/ub_event.h testpkts.lo testpkts.o: $(srcdir)/testcode/testpkts.c config.h $(srcdir)/testcode/testpkts.h \ $(srcdir)/util/net_help.h $(srcdir)/util/log.h $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/pkthdr.h \ $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/wire2str.h @@ -1254,77 +1283,79 @@ worker.lo worker.o: $(srcdir)/daemon/worker.c config.h $(srcdir)/util/random.h $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/util/alloc.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h \ - $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \ - $(srcdir)/libunbound/unbound.h $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h \ - $(srcdir)/daemon/daemon.h $(srcdir)/services/modstack.h \ - $(srcdir)/daemon/remote.h \ - $(srcdir)/daemon/acl_list.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/services/view.h \ - $(srcdir)/util/config_file.h $(srcdir)/util/regional.h $(srcdir)/util/storage/slabhash.h \ - $(srcdir)/services/listen_dnsport.h $(srcdir)/services/outside_network.h \ - $(srcdir)/services/outbound_list.h $(srcdir)/services/cache/rrset.h $(srcdir)/services/cache/infra.h \ - $(srcdir)/util/rtt.h $(srcdir)/services/cache/dns.h $(srcdir)/services/authzone.h $(srcdir)/services/mesh.h \ - $(srcdir)/services/localzone.h $(srcdir)/util/data/msgencode.h $(srcdir)/util/data/dname.h \ - $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h $(srcdir)/util/edns.h $(srcdir)/iterator/iter_fwd.h \ - $(srcdir)/iterator/iter_hints.h $(srcdir)/validator/autotrust.h $(srcdir)/validator/val_anchor.h \ - $(srcdir)/respip/respip.h $(srcdir)/libunbound/context.h $(srcdir)/libunbound/unbound-event.h \ + $(srcdir)/util/alloc.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ + $(srcdir)/sldns/rrdef.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h \ + $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h $(srcdir)/daemon/daemon.h \ + $(srcdir)/services/modstack.h $(srcdir)/daemon/remote.h $(srcdir)/daemon/acl_list.h \ + $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/services/view.h $(srcdir)/util/config_file.h \ + $(srcdir)/util/regional.h $(srcdir)/util/storage/slabhash.h $(srcdir)/services/listen_dnsport.h \ + $(srcdir)/services/outside_network.h $(srcdir)/services/outbound_list.h \ + $(srcdir)/services/cache/rrset.h $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h \ + $(srcdir)/services/cache/dns.h $(srcdir)/services/authzone.h $(srcdir)/services/mesh.h $(srcdir)/services/rpz.h \ + $(srcdir)/services/localzone.h $(srcdir)/respip/respip.h $(srcdir)/util/data/msgencode.h \ + $(srcdir)/util/data/dname.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h $(srcdir)/util/edns.h \ + $(srcdir)/iterator/iter_fwd.h $(srcdir)/iterator/iter_hints.h $(srcdir)/validator/autotrust.h \ + $(srcdir)/validator/val_anchor.h $(srcdir)/libunbound/context.h $(srcdir)/libunbound/unbound-event.h \ $(srcdir)/libunbound/libworker.h $(srcdir)/sldns/wire2str.h $(srcdir)/util/shm_side/shm_main.h acl_list.lo acl_list.o: $(srcdir)/daemon/acl_list.c config.h $(srcdir)/daemon/acl_list.h \ $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/services/view.h $(srcdir)/util/locks.h \ $(srcdir)/util/log.h $(srcdir)/util/regional.h $(srcdir)/util/config_file.h $(srcdir)/util/net_help.h \ $(srcdir)/services/localzone.h $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h \ $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \ - $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/str2wire.h -daemon.lo daemon.o: $(srcdir)/daemon/daemon.c config.h \ - $(srcdir)/daemon/daemon.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/alloc.h $(srcdir)/services/modstack.h \ - $(srcdir)/daemon/worker.h \ - $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h $(srcdir)/util/data/packed_rrset.h \ - $(srcdir)/util/storage/lruhash.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ - $(srcdir)/sldns/rrdef.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h \ - $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h $(srcdir)/daemon/remote.h \ - $(srcdir)/daemon/acl_list.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/services/view.h \ - $(srcdir)/util/config_file.h $(srcdir)/util/shm_side/shm_main.h $(srcdir)/util/storage/lookup3.h \ - $(srcdir)/util/storage/slabhash.h $(srcdir)/util/tcp_conn_limit.h $(srcdir)/services/listen_dnsport.h \ - $(srcdir)/services/cache/rrset.h $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h \ - $(srcdir)/services/localzone.h $(srcdir)/services/authzone.h $(srcdir)/services/mesh.h $(srcdir)/util/random.h \ - $(srcdir)/util/tube.h $(srcdir)/util/net_help.h $(srcdir)/sldns/keyraw.h $(srcdir)/respip/respip.h + $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/str2wire.h +daemon.lo daemon.o: $(srcdir)/daemon/daemon.c config.h $(srcdir)/daemon/daemon.h $(srcdir)/util/locks.h \ + $(srcdir)/util/log.h $(srcdir)/util/alloc.h $(srcdir)/services/modstack.h \ + $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h \ + $(srcdir)/sldns/sbuffer.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \ + $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/util/data/msgreply.h \ + $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/daemon/stats.h \ + $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h \ + $(srcdir)/daemon/remote.h $(srcdir)/daemon/acl_list.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h \ + $(srcdir)/services/view.h $(srcdir)/util/config_file.h $(srcdir)/util/shm_side/shm_main.h \ + $(srcdir)/util/storage/lookup3.h $(srcdir)/util/storage/slabhash.h $(srcdir)/util/tcp_conn_limit.h \ + $(srcdir)/services/listen_dnsport.h $(srcdir)/services/cache/rrset.h $(srcdir)/services/cache/infra.h \ + $(srcdir)/util/rtt.h $(srcdir)/services/localzone.h $(srcdir)/services/authzone.h $(srcdir)/services/mesh.h \ + $(srcdir)/services/rpz.h $(srcdir)/respip/respip.h $(srcdir)/util/random.h $(srcdir)/util/tube.h $(srcdir)/util/net_help.h \ + $(srcdir)/sldns/keyraw.h stats.lo stats.o: $(srcdir)/daemon/stats.c config.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \ $(srcdir)/libunbound/unbound.h $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/util/alloc.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h \ - $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h \ - $(srcdir)/daemon/daemon.h $(srcdir)/services/modstack.h \ - $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/services/outside_network.h \ - $(srcdir)/services/listen_dnsport.h $(srcdir)/util/config_file.h $(srcdir)/util/tube.h $(srcdir)/util/net_help.h \ - $(srcdir)/validator/validator.h $(srcdir)/validator/val_utils.h $(srcdir)/iterator/iterator.h \ - $(srcdir)/services/outbound_list.h $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h \ - $(srcdir)/services/cache/infra.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rtt.h \ - $(srcdir)/services/authzone.h $(srcdir)/validator/val_kcache.h $(srcdir)/validator/val_neg.h \ - + $(srcdir)/util/alloc.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ + $(srcdir)/sldns/rrdef.h $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h \ + $(srcdir)/daemon/daemon.h $(srcdir)/services/modstack.h $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h \ + $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h $(srcdir)/util/storage/dnstree.h \ + $(srcdir)/services/view.h $(srcdir)/util/config_file.h $(srcdir)/services/authzone.h $(srcdir)/respip/respip.h \ + $(srcdir)/services/outside_network.h $(srcdir)/services/listen_dnsport.h $(srcdir)/util/tube.h \ + $(srcdir)/util/net_help.h $(srcdir)/validator/validator.h $(srcdir)/validator/val_utils.h \ + $(srcdir)/iterator/iterator.h $(srcdir)/services/outbound_list.h $(srcdir)/services/cache/rrset.h \ + $(srcdir)/util/storage/slabhash.h $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h \ + $(srcdir)/validator/val_kcache.h $(srcdir)/validator/val_neg.h replay.lo replay.o: $(srcdir)/testcode/replay.c config.h $(srcdir)/util/log.h $(srcdir)/util/net_help.h \ $(srcdir)/util/config_file.h $(srcdir)/testcode/replay.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/util/locks.h \ - $(srcdir)/testcode/testpkts.h $(srcdir)/util/rbtree.h $(srcdir)/testcode/fake_event.h $(srcdir)/sldns/str2wire.h \ - $(srcdir)/sldns/rrdef.h + $(srcdir)/testcode/testpkts.h $(srcdir)/util/rbtree.h \ + $(srcdir)/testcode/fake_event.h $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/rrdef.h fake_event.lo fake_event.o: $(srcdir)/testcode/fake_event.c config.h $(srcdir)/testcode/fake_event.h \ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/net_help.h \ - $(srcdir)/util/data/msgparse.h $(srcdir)/util/storage/lruhash.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h \ - $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgencode.h \ - $(srcdir)/util/data/dname.h $(srcdir)/util/config_file.h $(srcdir)/services/listen_dnsport.h \ - $(srcdir)/services/outside_network.h $(srcdir)/util/rbtree.h \ - $(srcdir)/services/cache/infra.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rtt.h \ - $(srcdir)/testcode/replay.h $(srcdir)/testcode/testpkts.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/module.h \ - $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/services/modstack.h $(srcdir)/sldns/sbuffer.h \ - $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/str2wire.h + $(srcdir)/util/net_help.h $(srcdir)/util/log.h $(srcdir)/util/data/msgparse.h $(srcdir)/util/storage/lruhash.h \ + $(srcdir)/util/locks.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/data/msgreply.h \ + $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgencode.h $(srcdir)/util/data/dname.h \ + $(srcdir)/util/config_file.h $(srcdir)/services/listen_dnsport.h $(srcdir)/services/outside_network.h \ + $(srcdir)/util/rbtree.h $(srcdir)/services/cache/infra.h \ + $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rtt.h $(srcdir)/testcode/replay.h $(srcdir)/testcode/testpkts.h \ + $(srcdir)/util/fptr_wlist.h $(srcdir)/util/module.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h \ + $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h $(srcdir)/services/view.h \ + $(srcdir)/sldns/sbuffer.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \ + $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/str2wire.h lock_verify.lo lock_verify.o: $(srcdir)/testcode/lock_verify.c config.h $(srcdir)/util/log.h $(srcdir)/util/rbtree.h \ $(srcdir)/util/locks.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/util/storage/lruhash.h \ - $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \ - $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h \ - $(srcdir)/services/mesh.h $(srcdir)/services/modstack.h + $(srcdir)/util/storage/lruhash.h $(srcdir)/util/module.h \ + $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \ + $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h \ + $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h \ + $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h \ + $(srcdir)/util/config_file.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \ + $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h pktview.lo pktview.o: $(srcdir)/testcode/pktview.c config.h $(srcdir)/util/log.h $(srcdir)/util/data/dname.h \ $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ $(srcdir)/sldns/rrdef.h $(srcdir)/testcode/unitmain.h $(srcdir)/testcode/readhex.h $(srcdir)/sldns/sbuffer.h \ @@ -1333,10 +1364,13 @@ readhex.lo readhex.o: $(srcdir)/testcode/readhex.c con $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/parseutil.h memstats.lo memstats.o: $(srcdir)/testcode/memstats.c config.h $(srcdir)/util/log.h $(srcdir)/util/rbtree.h \ $(srcdir)/util/locks.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/util/storage/lruhash.h \ - $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \ - $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h \ - $(srcdir)/services/mesh.h $(srcdir)/services/modstack.h + $(srcdir)/util/storage/lruhash.h $(srcdir)/util/module.h \ + $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \ + $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h \ + $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h \ + $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h \ + $(srcdir)/util/config_file.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \ + $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h unbound-checkconf.lo unbound-checkconf.o: $(srcdir)/smallapp/unbound-checkconf.c config.h $(srcdir)/util/log.h \ $(srcdir)/util/config_file.h $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \ $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \ @@ -1344,27 +1378,31 @@ unbound-checkconf.lo unbound-checkconf.o: $(srcdir)/sm $(srcdir)/iterator/iterator.h $(srcdir)/services/outbound_list.h $(srcdir)/iterator/iter_fwd.h \ $(srcdir)/util/rbtree.h $(srcdir)/iterator/iter_hints.h $(srcdir)/util/storage/dnstree.h \ $(srcdir)/validator/validator.h $(srcdir)/validator/val_utils.h $(srcdir)/services/localzone.h \ - $(srcdir)/services/view.h $(srcdir)/services/authzone.h $(srcdir)/services/mesh.h $(srcdir)/util/netevent.h \ - $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/dnscrypt/cert.h \ - $(srcdir)/services/modstack.h $(srcdir)/respip/respip.h $(srcdir)/sldns/sbuffer.h + $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h $(srcdir)/services/authzone.h $(srcdir)/services/mesh.h \ + $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ + $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \ + $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h worker_cb.lo worker_cb.o: $(srcdir)/smallapp/worker_cb.c config.h $(srcdir)/libunbound/context.h \ $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/alloc.h $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h \ $(srcdir)/libunbound/unbound.h $(srcdir)/libunbound/unbound-event.h $(srcdir)/util/data/packed_rrset.h \ $(srcdir)/util/storage/lruhash.h $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h \ $(srcdir)/util/fptr_wlist.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/util/module.h \ - $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h \ - $(srcdir)/util/tube.h $(srcdir)/services/mesh.h + $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h \ + $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h \ + $(srcdir)/services/mesh.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h \ + $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h $(srcdir)/util/config_file.h \ + $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/respip/respip.h context.lo context.o: $(srcdir)/libunbound/context.c config.h $(srcdir)/libunbound/context.h \ $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/alloc.h $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h \ $(srcdir)/libunbound/unbound.h $(srcdir)/libunbound/unbound-event.h $(srcdir)/util/data/packed_rrset.h \ $(srcdir)/util/storage/lruhash.h $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h \ $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/config_file.h \ $(srcdir)/util/net_help.h $(srcdir)/services/localzone.h $(srcdir)/util/storage/dnstree.h \ - $(srcdir)/services/view.h $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h \ - $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/services/authzone.h \ - $(srcdir)/services/mesh.h $(srcdir)/sldns/sbuffer.h + $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h $(srcdir)/services/cache/rrset.h \ + $(srcdir)/util/storage/slabhash.h $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h \ + $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ + $(srcdir)/services/authzone.h $(srcdir)/services/mesh.h $(srcdir)/services/rpz.h $(srcdir)/daemon/stats.h \ + $(srcdir)/util/timehist.h $(srcdir)/respip/respip.h libunbound.lo libunbound.o: $(srcdir)/libunbound/libunbound.c $(srcdir)/libunbound/unbound.h \ $(srcdir)/libunbound/unbound-event.h config.h $(srcdir)/libunbound/context.h $(srcdir)/util/locks.h \ $(srcdir)/util/log.h $(srcdir)/util/alloc.h $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h \ @@ -1373,70 +1411,70 @@ libunbound.lo libunbound.o: $(srcdir)/libunbound/libun $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/regional.h \ $(srcdir)/util/random.h $(srcdir)/util/net_help.h $(srcdir)/util/tube.h $(srcdir)/util/ub_event.h \ $(srcdir)/services/localzone.h $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h \ - $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/services/cache/rrset.h \ + $(srcdir)/sldns/sbuffer.h $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h $(srcdir)/util/netevent.h \ + $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/services/cache/rrset.h \ $(srcdir)/util/storage/slabhash.h $(srcdir)/services/authzone.h $(srcdir)/services/mesh.h \ - $(srcdir)/sldns/sbuffer.h -libworker.lo libworker.o: $(srcdir)/libunbound/libworker.c config.h \ - $(srcdir)/libunbound/libworker.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \ - $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/libunbound/context.h $(srcdir)/util/alloc.h $(srcdir)/util/rbtree.h \ - $(srcdir)/services/modstack.h $(srcdir)/libunbound/unbound.h $(srcdir)/libunbound/unbound-event.h \ - $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h $(srcdir)/services/outside_network.h \ - $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@freebsd.org Sun May 24 17:20:53 2020 Return-Path: Delivered-To: svn-src-all@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 9A7012CB8F0; Sun, 24 May 2020 17:20:53 +0000 (UTC) (envelope-from mjguzik@gmail.com) Received: from mail-wm1-x332.google.com (mail-wm1-x332.google.com [IPv6:2a00:1450:4864:20::332]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "GTS CA 1O1" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 49VRnx3dnKz4LqH; Sun, 24 May 2020 17:20:53 +0000 (UTC) (envelope-from mjguzik@gmail.com) Received: by mail-wm1-x332.google.com with SMTP id h4so13382985wmb.4; Sun, 24 May 2020 10:20:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=71EYe4bnUkvRI+lFZviksEdiY4yN4PTC2+ENmVmcorY=; b=dNgEdwLoP5t/zzUVp2zQmrd+u2nHMHe2vN5sRB8opyv/+K35lBCRhtKVsHscY3TXpd 76yjZvBHCHsINssfZe5HGWT2Xx1ID9Eyi9Xst6hq5zYoSmplCn7LeZuAlWKpHJfBsF0T WhNFWVo6P5xMsVurHrAbt+hU0FLTjgv0dCuUaXQLF7W6eoa6ESEsQXoOZsAfzO5kesl/ Sh2HC4oAX30apcrI9OsbraRjbennzwqFFliCh4CnEZkhw7yNK8od4odIGLRI3kma62eb ieEOiV3OGoS8Cn3cCQAqfNfcIXjya/szlh0yBqVdguyRowzCTDbSZllepvVAHO3sMfM2 bdbw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=71EYe4bnUkvRI+lFZviksEdiY4yN4PTC2+ENmVmcorY=; b=di63ZYjIyTGBEZ8OEaC1gUZloEiyhvP2Asay+v9ySdciMfBVoQbkjzQLG9/75vRZcb wT4KZj1/CVTgnq28K0NGHUrrnJA09toy0qD+MY6rBAk6jT+9eNekaGidB+rX0J63qah0 PeMNajhibOjxIpjUgfBsIK6lWKNoJVuwq8/qox9DlInQwCEbtDCk/EIvyEIrNROcppkb scYA/oVpTFlD9d6GiOzCUwk12nPci7j/D8fkOvkwgqbDn3UBpgWJEyZVCT4HWeIb4h1W JRPfP1YoVEunTE1XOXE/OA5AGF4UPtgY0+Wgx3KGZaJb5nV5X+zT753pa+MzIfB9CU+j xx+g== X-Gm-Message-State: AOAM53309nOQ/nwu2AbqxhqrfMCKbdb+UPJ0jWfCo7rW1f5MnVtujKhJ IW5PNGBBVziYG2l318LfNTA6T0T7IvnKR9MPUlhPl62o X-Google-Smtp-Source: ABdhPJx4vjOJwY/yavfwgYjprQ6kXNp57MxWpuqEv2STzz2xTcjkw8pySvLDW6wPgvEXWc+DZ7flnNe/TVlwfnH5mJg= X-Received: by 2002:a05:600c:2055:: with SMTP id p21mr22673141wmg.127.1590340851791; Sun, 24 May 2020 10:20:51 -0700 (PDT) MIME-Version: 1.0 Received: by 2002:adf:fd8f:0:0:0:0:0 with HTTP; Sun, 24 May 2020 10:20:50 -0700 (PDT) In-Reply-To: References: <202005240350.04O3on61012965@repo.freebsd.org> From: Mateusz Guzik Date: Sun, 24 May 2020 19:20:50 +0200 Message-ID: Subject: Re: svn commit: r361429 - in head/sys: kern sys To: Ed Maste Cc: src-committers , svn-src-all , svn-src-head Content-Type: text/plain; charset="UTF-8" X-Rspamd-Queue-Id: 49VRnx3dnKz4LqH X-Spamd-Bar: ---- Authentication-Results: mx1.freebsd.org; none X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[]; ASN(0.00)[asn:15169, ipnet:2a00:1450::/32, country:US] X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2020 17:20:53 -0000 Ok, I see i386 also fails and managed to reproduce with closefrom test. On 5/24/20, Ed Maste wrote: > On Sat, 23 May 2020 at 23:50, Mateusz Guzik wrote: >> >> Author: mjg >> Date: Sun May 24 03:50:49 2020 >> New Revision: 361429 >> URL: https://svnweb.freebsd.org/changeset/base/361429 >> >> Log: >> vfs: scale foffset_lock by using atomics instead of serializing on mtx >> pool >> >> Contending cases still serialize on sleepq (which would be taken >> anyway). >> >> Reviewed by: kib (previous version) >> Differential Revision: https://reviews.freebsd.org/D21626 > > It looks like the BeagleBone Black smoke test is failing as of this > revision - appears to be hanging during shutdown. > > The CI script issues a shutdown and times out waiting for "Uptime:". > The last output from the console shows: > --- > FreeBSD beaglebone-cidev 13.0-CURRENT FreeBSD 13.0-CURRENT #2980 > r361429: Sun May 24 05:24:56 UTC 2020 > root@FreeBSD-head-armv7-build_devtest.jail:/usr/obj/usr/src/arm.armv7/sys/GENERIC > arm > root@beaglebone-cidev:~ # poweroff > poweroff > > Shutdown NOW! > poweroff: [pid 921] > root@beaglebone-cidev:~ # Jan 1 00:00:54 beaglebone-cidev > shutdown[921]: power-down by root: > --- > -- Mateusz Guzik From owner-svn-src-all@freebsd.org Sun May 24 17:27:35 2020 Return-Path: Delivered-To: svn-src-all@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 BE99E2CC120; Sun, 24 May 2020 17:27:35 +0000 (UTC) (envelope-from mjguzik@gmail.com) Received: from mail-wr1-x42a.google.com (mail-wr1-x42a.google.com [IPv6:2a00:1450:4864:20::42a]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "GTS CA 1O1" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 49VRxf3VZjz4MXG; Sun, 24 May 2020 17:27:34 +0000 (UTC) (envelope-from mjguzik@gmail.com) Received: by mail-wr1-x42a.google.com with SMTP id j16so2658332wrb.7; Sun, 24 May 2020 10:27:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=CAmNWiIn0gVTTKcGXHmhC3FFbHjRx4tEgAbZESVPl3U=; b=udRUib0OviqjkVuZppeL6WBQEmt1Y5xChyjkjo031I9XIryp4WT2i2IvLJ1LtrEiWU uBxBfWbtzmlMAzFHYKXf8NTWKgO80MnZGzSrU7va0JTobq123zRcsXriLEBo9VwOzJ/D W7QW2tgGzKeppWcg1Hq9DFFBUfgr3/by1FWztr8ktrzodSUz5E7bqDt+2d5+S8Op97Ao T8Y1DPiI3MObK+Hxph1hGnMFAQ09Z5BmYisCDLRaMZmcP95QKBe+ajusgTfD40bNxKpo ZzKqTyLIIHA77ujFoO9T1xw+BYFIKT4k8kvayXBK3rQr6xxIirZcj7wZkn2IgahLh9ge tYXA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=CAmNWiIn0gVTTKcGXHmhC3FFbHjRx4tEgAbZESVPl3U=; b=nPns5Cm6WxHCn7fgA6O88jgpSveWOnC1LrNn3MPorKZBzKCIeqldbEoD0yC+6zDQr0 APPUeV8SHs342ZTrZFZBHXUTgMtOgUIuuc7cBrxlAU2mLRD3D3sTYNIxjs5JSW0VHqzA Fo2RHXPlk6k8zT2VYQFFE9cwAKSbQO3Uha+m5GePRYnYFtUYmJlbN/71X85KtePYN6IO D4UDuTSt5WXHNxIl4lK+XbreWyQl1VNxBIUcuheqrD9IsgTsL4oSI+EnVM3hAq6LBIRH BgRMuMZL8PnYv+8r56AtNVuUC7cMw60M2YmpMb2i6OyRNEMUvAvxornCS//szRA+UFg1 hptA== X-Gm-Message-State: AOAM531q/nQE7qBf+7H2Wgekv2Ovdj68nvZtBuoVZS3wkxt5ZuUEyCoA TauIa0LPF6N/hYqxRGirM8FAZL+cvuGQINBSKTUSMOwQ X-Google-Smtp-Source: ABdhPJwQpMmnD9+3GXLBbQ06zuJxlkhjj/oj5d4JHY19yuUegw5i29HxTLgESZQ0vTnW5KKqL2/2pnZ0nJmz5eQAJaw= X-Received: by 2002:adf:e941:: with SMTP id m1mr10716022wrn.160.1590341252990; Sun, 24 May 2020 10:27:32 -0700 (PDT) MIME-Version: 1.0 Received: by 2002:adf:fd8f:0:0:0:0:0 with HTTP; Sun, 24 May 2020 10:27:32 -0700 (PDT) In-Reply-To: References: <202005240350.04O3on61012965@repo.freebsd.org> From: Mateusz Guzik Date: Sun, 24 May 2020 19:27:32 +0200 Message-ID: Subject: Re: svn commit: r361429 - in head/sys: kern sys To: Ed Maste Cc: src-committers , svn-src-all , svn-src-head Content-Type: text/plain; charset="UTF-8" X-Rspamd-Queue-Id: 49VRxf3VZjz4MXG X-Spamd-Bar: --- Authentication-Results: mx1.freebsd.org; dkim=pass header.d=gmail.com header.s=20161025 header.b=udRUib0O; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (mx1.freebsd.org: domain of mjguzik@gmail.com designates 2a00:1450:4864:20::42a as permitted sender) smtp.mailfrom=mjguzik@gmail.com X-Spamd-Result: default: False [-3.99 / 15.00]; ARC_NA(0.00)[]; NEURAL_HAM_MEDIUM(-0.97)[-0.971]; R_DKIM_ALLOW(-0.20)[gmail.com:s=20161025]; FROM_HAS_DN(0.00)[]; RCPT_COUNT_THREE(0.00)[4]; R_SPF_ALLOW(-0.20)[+ip6:2a00:1450:4000::/36:c]; FREEMAIL_FROM(0.00)[gmail.com]; MIME_GOOD(-0.10)[text/plain]; TO_MATCH_ENVRCPT_ALL(0.00)[]; NEURAL_HAM_LONG(-1.03)[-1.029]; TO_DN_ALL(0.00)[]; DKIM_TRACE(0.00)[gmail.com:+]; DMARC_POLICY_ALLOW(-0.50)[gmail.com,none]; RCVD_IN_DNSWL_NONE(0.00)[2a00:1450:4864:20::42a:from]; NEURAL_HAM_SHORT(-0.99)[-0.989]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; FREEMAIL_ENVFROM(0.00)[gmail.com]; ASN(0.00)[asn:15169, ipnet:2a00:1450::/32, country:US]; RCVD_COUNT_TWO(0.00)[2]; RCVD_TLS_ALL(0.00)[]; DWL_DNSWL_NONE(0.00)[gmail.com:dkim] X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2020 17:27:35 -0000 I see what it is. On 5/24/20, Mateusz Guzik wrote: > Ok, I see i386 also fails and managed to reproduce with closefrom test. > > On 5/24/20, Ed Maste wrote: >> On Sat, 23 May 2020 at 23:50, Mateusz Guzik wrote: >>> >>> Author: mjg >>> Date: Sun May 24 03:50:49 2020 >>> New Revision: 361429 >>> URL: https://svnweb.freebsd.org/changeset/base/361429 >>> >>> Log: >>> vfs: scale foffset_lock by using atomics instead of serializing on mtx >>> pool >>> >>> Contending cases still serialize on sleepq (which would be taken >>> anyway). >>> >>> Reviewed by: kib (previous version) >>> Differential Revision: https://reviews.freebsd.org/D21626 >> >> It looks like the BeagleBone Black smoke test is failing as of this >> revision - appears to be hanging during shutdown. >> >> The CI script issues a shutdown and times out waiting for "Uptime:". >> The last output from the console shows: >> --- >> FreeBSD beaglebone-cidev 13.0-CURRENT FreeBSD 13.0-CURRENT #2980 >> r361429: Sun May 24 05:24:56 UTC 2020 >> root@FreeBSD-head-armv7-build_devtest.jail:/usr/obj/usr/src/arm.armv7/sys/GENERIC >> arm >> root@beaglebone-cidev:~ # poweroff >> poweroff >> >> Shutdown NOW! >> poweroff: [pid 921] >> root@beaglebone-cidev:~ # Jan 1 00:00:54 beaglebone-cidev >> shutdown[921]: power-down by root: >> --- >> > > > -- > Mateusz Guzik > -- Mateusz Guzik From owner-svn-src-all@freebsd.org Sun May 24 17:51:15 2020 Return-Path: Delivered-To: svn-src-all@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 041FB2CC4B7; Sun, 24 May 2020 17:51:15 +0000 (UTC) (envelope-from rscheff@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49VSSy6Qctz4Nv7; Sun, 24 May 2020 17:51:14 +0000 (UTC) (envelope-from rscheff@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 D760A24CB8; Sun, 24 May 2020 17:51:14 +0000 (UTC) (envelope-from rscheff@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04OHpELR044544; Sun, 24 May 2020 17:51:14 GMT (envelope-from rscheff@FreeBSD.org) Received: (from rscheff@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04OHpEUT044542; Sun, 24 May 2020 17:51:14 GMT (envelope-from rscheff@FreeBSD.org) Message-Id: <202005241751.04OHpEUT044542@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: rscheff set sender to rscheff@FreeBSD.org using -f From: Richard Scheffenegger Date: Sun, 24 May 2020 17:51:14 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org Subject: svn commit: r361436 - stable/11/sys/netinet X-SVN-Group: stable-11 X-SVN-Commit-Author: rscheff X-SVN-Commit-Paths: stable/11/sys/netinet X-SVN-Commit-Revision: 361436 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2020 17:51:15 -0000 Author: rscheff Date: Sun May 24 17:51:14 2020 New Revision: 361436 URL: https://svnweb.freebsd.org/changeset/base/361436 Log: MFC r361347: With RFC3168 ECN, CWR SHOULD only be sent with new data Overly conservative data receivers may ignore the CWR flag on other packets, and keep ECE latched. This can result in continous reduction of the congestion window, and very poor performance when ECN is enabled. This does NOT contain the merge of the change to RACK since at this time that code does not exist in stable/11, and there is no plan to merge RACK to stable/11. PR: 243590 Reviewed by: rgrimes (mentor), rrs Approved by: rgrimes (mentor), tuexen (mentor) MFC after: 3 days Sponsored by: NetApp, Inc. Differential Revision: https://reviews.freebsd.org/D23364 Modified: stable/11/sys/netinet/tcp_input.c stable/11/sys/netinet/tcp_output.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/netinet/tcp_input.c ============================================================================== --- stable/11/sys/netinet/tcp_input.c Sun May 24 16:47:27 2020 (r361435) +++ stable/11/sys/netinet/tcp_input.c Sun May 24 17:51:14 2020 (r361436) @@ -417,9 +417,15 @@ cc_cong_signal(struct tcpcb *tp, struct tcphdr *th, ui } break; case CC_ECN: - if (!IN_CONGRECOVERY(tp->t_flags)) { + if (!IN_CONGRECOVERY(tp->t_flags) || + /* + * Allow ECN reaction on ACK to CWR, if + * that data segment was also CE marked. + */ + SEQ_GEQ(th->th_ack, tp->snd_recover)) { + EXIT_CONGRECOVERY(tp->t_flags); TCPSTAT_INC(tcps_ecn_rcwnd); - tp->snd_recover = tp->snd_max; + tp->snd_recover = tp->snd_max + 1; if (tp->t_flags & TF_ECN_PERMIT) tp->t_flags |= TF_ECN_SND_CWR; } Modified: stable/11/sys/netinet/tcp_output.c ============================================================================== --- stable/11/sys/netinet/tcp_output.c Sun May 24 16:47:27 2020 (r361435) +++ stable/11/sys/netinet/tcp_output.c Sun May 24 17:51:14 2020 (r361436) @@ -1161,7 +1161,8 @@ send: * Ignore pure ack packets, retransmissions and window probes. */ if (len > 0 && SEQ_GEQ(tp->snd_nxt, tp->snd_max) && - !((tp->t_flags & TF_FORCEDATA) && len == 1)) { + !((tp->t_flags & TF_FORCEDATA) && len == 1 && + SEQ_LT(tp->snd_una, tp->snd_max))) { #ifdef INET6 if (isipv6) ip6->ip6_flow |= htonl(IPTOS_ECN_ECT0 << 20); @@ -1169,15 +1170,15 @@ send: #endif ip->ip_tos |= IPTOS_ECN_ECT0; TCPSTAT_INC(tcps_ecn_ect0); + /* + * Reply with proper ECN notifications. + * Only set CWR on new data segments. + */ + if (tp->t_flags & TF_ECN_SND_CWR) { + flags |= TH_CWR; + tp->t_flags &= ~TF_ECN_SND_CWR; + } } - - /* - * Reply with proper ECN notifications. - */ - if (tp->t_flags & TF_ECN_SND_CWR) { - flags |= TH_CWR; - tp->t_flags &= ~TF_ECN_SND_CWR; - } if (tp->t_flags & TF_ECN_SND_ECE) flags |= TH_ECE; } From owner-svn-src-all@freebsd.org Sun May 24 18:25:50 2020 Return-Path: Delivered-To: svn-src-all@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 89A462CD7C0; Sun, 24 May 2020 18:25:50 +0000 (UTC) (envelope-from emaste@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49VTDt2ySbz4RWv; Sun, 24 May 2020 18:25:50 +0000 (UTC) (envelope-from emaste@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 60DAD25511; Sun, 24 May 2020 18:25:50 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04OIPosv065387; Sun, 24 May 2020 18:25:50 GMT (envelope-from emaste@FreeBSD.org) Received: (from emaste@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04OIPogZ065386; Sun, 24 May 2020 18:25:50 GMT (envelope-from emaste@FreeBSD.org) Message-Id: <202005241825.04OIPogZ065386@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: emaste set sender to emaste@FreeBSD.org using -f From: Ed Maste Date: Sun, 24 May 2020 18:25:50 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361437 - head/release/i386 X-SVN-Group: head X-SVN-Commit-Author: emaste X-SVN-Commit-Paths: head/release/i386 X-SVN-Commit-Revision: 361437 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2020 18:25:50 -0000 Author: emaste Date: Sun May 24 18:25:49 2020 New Revision: 361437 URL: https://svnweb.freebsd.org/changeset/base/361437 Log: Make i386 memstick images bootable. This reverts the i386 part of r342283, "Rework UEFI ESP generation", and the followup commit in r342690. r342283 added an ESP to the i386 memstick image, and as a side effect made the ESP the active partition, not the bootcode-containing UFS partition. As a result the i386 memstick images would not boot in either UEFI or legacy mode - UEFI failed because we do not support i386 UEFI booting, and legacy mode failed because the partition with legacy bootcode was not active. The bootcode-containing UFS partition is again the only, and active, partition. PR: 246494 Reported by: Jorge Maidana Differential Revision: The FreeBSD Foundation Modified: head/release/i386/make-memstick.sh Modified: head/release/i386/make-memstick.sh ============================================================================== --- head/release/i386/make-memstick.sh Sun May 24 17:51:14 2020 (r361436) +++ head/release/i386/make-memstick.sh Sun May 24 18:25:49 2020 (r361437) @@ -12,9 +12,6 @@ set -e -scriptdir=$(dirname $(realpath $0)) -. ${scriptdir}/../../tools/boot/install-boot.sh - PATH=/bin:/usr/bin:/sbin:/usr/sbin export PATH @@ -39,15 +36,9 @@ makefs -B little -o label=FreeBSD_Install -o version=2 rm ${1}/etc/fstab rm ${1}/etc/rc.conf.local -# Make an ESP in a file. -espfilename=$(mktemp /tmp/efiboot.XXXXXX) -make_esp_file ${espfilename} ${fat32min} ${1}/boot/loader.efi - mkimg -s mbr \ -b ${1}/boot/mbr \ - -p efi:=${espfilename} \ -p freebsd:-"mkimg -s bsd -b ${1}/boot/boot -p freebsd-ufs:=${2}.part" \ -o ${2} -rm ${espfilename} rm ${2}.part From owner-svn-src-all@freebsd.org Sun May 24 21:42:48 2020 Return-Path: Delivered-To: svn-src-all@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 5D0812DB78E; Sun, 24 May 2020 21:42:48 +0000 (UTC) (envelope-from cy@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49VYc81w4Fz3VFb; Sun, 24 May 2020 21:42:48 +0000 (UTC) (envelope-from cy@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 3B74427BCE; Sun, 24 May 2020 21:42:48 +0000 (UTC) (envelope-from cy@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04OLgmXb088011; Sun, 24 May 2020 21:42:48 GMT (envelope-from cy@FreeBSD.org) Received: (from cy@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04OLgmAw088010; Sun, 24 May 2020 21:42:48 GMT (envelope-from cy@FreeBSD.org) Message-Id: <202005242142.04OLgmAw088010@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: cy set sender to cy@FreeBSD.org using -f From: Cy Schubert Date: Sun, 24 May 2020 21:42:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361438 - head/usr.sbin/unbound X-SVN-Group: head X-SVN-Commit-Author: cy X-SVN-Commit-Paths: head/usr.sbin/unbound X-SVN-Commit-Revision: 361438 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2020 21:42:48 -0000 Author: cy Date: Sun May 24 21:42:47 2020 New Revision: 361438 URL: https://svnweb.freebsd.org/changeset/base/361438 Log: Chase r361344. Update unbound version strings. Reported by: mike tancsa MFC after: 1 day Modified: head/usr.sbin/unbound/config.h Modified: head/usr.sbin/unbound/config.h ============================================================================== --- head/usr.sbin/unbound/config.h Sun May 24 18:25:49 2020 (r361437) +++ head/usr.sbin/unbound/config.h Sun May 24 21:42:47 2020 (r361438) @@ -678,7 +678,7 @@ #define PACKAGE_NAME "unbound" /* Define to the full name and version of this package. */ -#define PACKAGE_STRING "unbound 1.9.6" +#define PACKAGE_STRING "unbound 1.10.1" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "unbound" @@ -687,7 +687,7 @@ #define PACKAGE_URL "" /* Define to the version of this package. */ -#define PACKAGE_VERSION "1.9.6" +#define PACKAGE_VERSION "1.10.1" /* default pidfile location */ #define PIDFILE "/var/unbound/unbound.pid" From owner-svn-src-all@freebsd.org Mon May 25 04:17:01 2020 Return-Path: Delivered-To: svn-src-all@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 E32BB2F2D36; Mon, 25 May 2020 04:17:01 +0000 (UTC) (envelope-from asomers@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49VkM15jhmz4FpW; Mon, 25 May 2020 04:17:01 +0000 (UTC) (envelope-from asomers@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 BF54EC795; Mon, 25 May 2020 04:17:01 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04P4H1rN027591; Mon, 25 May 2020 04:17:01 GMT (envelope-from asomers@FreeBSD.org) Received: (from asomers@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04P4H1oS027590; Mon, 25 May 2020 04:17:01 GMT (envelope-from asomers@FreeBSD.org) Message-Id: <202005250417.04P4H1oS027590@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: asomers set sender to asomers@FreeBSD.org using -f From: Alan Somers Date: Mon, 25 May 2020 04:17:01 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361439 - head/share/man/man4 X-SVN-Group: head X-SVN-Commit-Author: asomers X-SVN-Commit-Paths: head/share/man/man4 X-SVN-Commit-Revision: 361439 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2020 04:17:02 -0000 Author: asomers Date: Mon May 25 04:17:01 2020 New Revision: 361439 URL: https://svnweb.freebsd.org/changeset/base/361439 Log: [skip ci] ip.4: fix typos MFC after: 2 weeks Modified: head/share/man/man4/ip.4 Modified: head/share/man/man4/ip.4 ============================================================================== --- head/share/man/man4/ip.4 Sun May 24 21:42:47 2020 (r361438) +++ head/share/man/man4/ip.4 Mon May 25 04:17:01 2020 (r361439) @@ -28,7 +28,7 @@ .\" @(#)ip.4 8.2 (Berkeley) 11/30/93 .\" $FreeBSD$ .\" -.Dd February 22, 2019 +.Dd May 24, 2020 .Dt IP 4 .Os .Sh NAME @@ -144,7 +144,7 @@ the .Xr recvmsg 2 call will return the destination .Tn IP -address and destination port or a +address and destination port for a .Tn UDP datagram. The @@ -155,13 +155,13 @@ structure points to a buffer that contains a .Vt cmsghdr structure followed by the -.Tn in_sockkaddr -structre. +.Tn sockaddr_in +structure. The .Vt cmsghdr fields have the following values: .Bd -literal -cmsg_len = CMSG_LEN(sizeof(struct in_sockaddr)) +cmsg_len = CMSG_LEN(sizeof(struct sockaddr_in)) cmsg_level = IPPROTO_IP cmsg_type = IP_ORIGDSTADDR .Ed From owner-svn-src-all@freebsd.org Mon May 25 04:56:41 2020 Return-Path: Delivered-To: svn-src-all@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 D01762F3A2A; Mon, 25 May 2020 04:56:41 +0000 (UTC) (envelope-from mjg@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49VlDn4qQtz4JG8; Mon, 25 May 2020 04:56:41 +0000 (UTC) (envelope-from mjg@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 9C6D5C7FB; Mon, 25 May 2020 04:56:41 +0000 (UTC) (envelope-from mjg@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04P4uffu051923; Mon, 25 May 2020 04:56:41 GMT (envelope-from mjg@FreeBSD.org) Received: (from mjg@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04P4ufcs051922; Mon, 25 May 2020 04:56:41 GMT (envelope-from mjg@FreeBSD.org) Message-Id: <202005250456.04P4ufcs051922@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mjg set sender to mjg@FreeBSD.org using -f From: Mateusz Guzik Date: Mon, 25 May 2020 04:56:41 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361440 - head/sys/kern X-SVN-Group: head X-SVN-Commit-Author: mjg X-SVN-Commit-Paths: head/sys/kern X-SVN-Commit-Revision: 361440 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2020 04:56:41 -0000 Author: mjg Date: Mon May 25 04:56:41 2020 New Revision: 361440 URL: https://svnweb.freebsd.org/changeset/base/361440 Log: vfs: restore mtx-protected foffset locking for 32 bit platforms They depend on it to accurately read the offset. The new code is not used as it would add an interrupt enable/disable trip on top of the atomic. This also fixes a bug where 32-bit nolock request would still lock the offset. No changes for 64-bit. Reported by: emaste Modified: head/sys/kern/vfs_vnops.c Modified: head/sys/kern/vfs_vnops.c ============================================================================== --- head/sys/kern/vfs_vnops.c Mon May 25 04:17:01 2020 (r361439) +++ head/sys/kern/vfs_vnops.c Mon May 25 04:56:41 2020 (r361440) @@ -672,6 +672,7 @@ vn_rdwr_inchunks(enum uio_rw rw, struct vnode *vp, voi return (error); } +#if OFF_MAX <= LONG_MAX off_t foffset_lock(struct file *fp, int flags) { @@ -681,14 +682,12 @@ foffset_lock(struct file *fp, int flags) KASSERT((flags & FOF_OFFSET) == 0, ("FOF_OFFSET passed")); -#if OFF_MAX <= LONG_MAX /* * Caller only wants the current f_offset value. Assume that * the long and shorter integer types reads are atomic. */ if ((flags & FOF_NOLOCK) != 0) return (fp->f_offset); -#endif /* * According to McKusick the vn lock was protecting f_offset here. @@ -737,10 +736,8 @@ foffset_unlock(struct file *fp, off_t val, int flags) if ((flags & FOF_NEXTOFF) != 0) fp->f_nextoff = val; -#if OFF_MAX <= LONG_MAX if ((flags & FOF_NOLOCK) != 0) return; -#endif flagsp = &fp->f_vnread_flags; state = atomic_load_16(flagsp); @@ -755,6 +752,53 @@ foffset_unlock(struct file *fp, off_t val, int flags) sleepq_broadcast(&fp->f_vnread_flags, SLEEPQ_SLEEP, 0, 0); sleepq_release(&fp->f_vnread_flags); } +#else +off_t +foffset_lock(struct file *fp, int flags) +{ + struct mtx *mtxp; + off_t res; + + KASSERT((flags & FOF_OFFSET) == 0, ("FOF_OFFSET passed")); + + mtxp = mtx_pool_find(mtxpool_sleep, fp); + mtx_lock(mtxp); + if ((flags & FOF_NOLOCK) == 0) { + while (fp->f_vnread_flags & FOFFSET_LOCKED) { + fp->f_vnread_flags |= FOFFSET_LOCK_WAITING; + msleep(&fp->f_vnread_flags, mtxp, PUSER -1, + "vofflock", 0); + } + fp->f_vnread_flags |= FOFFSET_LOCKED; + } + res = fp->f_offset; + mtx_unlock(mtxp); + return (res); +} + +void +foffset_unlock(struct file *fp, off_t val, int flags) +{ + struct mtx *mtxp; + + KASSERT((flags & FOF_OFFSET) == 0, ("FOF_OFFSET passed")); + + mtxp = mtx_pool_find(mtxpool_sleep, fp); + mtx_lock(mtxp); + if ((flags & FOF_NOUPDATE) == 0) + fp->f_offset = val; + if ((flags & FOF_NEXTOFF) != 0) + fp->f_nextoff = val; + if ((flags & FOF_NOLOCK) == 0) { + KASSERT((fp->f_vnread_flags & FOFFSET_LOCKED) != 0, + ("Lost FOFFSET_LOCKED")); + if (fp->f_vnread_flags & FOFFSET_LOCK_WAITING) + wakeup(&fp->f_vnread_flags); + fp->f_vnread_flags = 0; + } + mtx_unlock(mtxp); +} +#endif void foffset_lock_uio(struct file *fp, struct uio *uio, int flags) From owner-svn-src-all@freebsd.org Mon May 25 04:57:57 2020 Return-Path: Delivered-To: svn-src-all@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 F01B02F34CF; Mon, 25 May 2020 04:57:57 +0000 (UTC) (envelope-from mjg@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49VlGF645Qz4JGx; Mon, 25 May 2020 04:57:57 +0000 (UTC) (envelope-from mjg@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 CB782CB48; Mon, 25 May 2020 04:57:57 +0000 (UTC) (envelope-from mjg@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04P4vvov052021; Mon, 25 May 2020 04:57:57 GMT (envelope-from mjg@FreeBSD.org) Received: (from mjg@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04P4vvdC052020; Mon, 25 May 2020 04:57:57 GMT (envelope-from mjg@FreeBSD.org) Message-Id: <202005250457.04P4vvdC052020@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mjg set sender to mjg@FreeBSD.org using -f From: Mateusz Guzik Date: Mon, 25 May 2020 04:57:57 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361441 - head/sys/kern X-SVN-Group: head X-SVN-Commit-Author: mjg X-SVN-Commit-Paths: head/sys/kern X-SVN-Commit-Revision: 361441 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2020 04:57:58 -0000 Author: mjg Date: Mon May 25 04:57:57 2020 New Revision: 361441 URL: https://svnweb.freebsd.org/changeset/base/361441 Log: vfs: use atomic_{store,load}_long to manage f_offset ... instead of depending on the compiler not to mess them up Modified: head/sys/kern/vfs_vnops.c Modified: head/sys/kern/vfs_vnops.c ============================================================================== --- head/sys/kern/vfs_vnops.c Mon May 25 04:56:41 2020 (r361440) +++ head/sys/kern/vfs_vnops.c Mon May 25 04:57:57 2020 (r361441) @@ -682,12 +682,8 @@ foffset_lock(struct file *fp, int flags) KASSERT((flags & FOF_OFFSET) == 0, ("FOF_OFFSET passed")); - /* - * Caller only wants the current f_offset value. Assume that - * the long and shorter integer types reads are atomic. - */ if ((flags & FOF_NOLOCK) != 0) - return (fp->f_offset); + return (atomic_load_long(&fp->f_offset)); /* * According to McKusick the vn lock was protecting f_offset here. @@ -695,7 +691,7 @@ foffset_lock(struct file *fp, int flags) */ flagsp = &fp->f_vnread_flags; if (atomic_cmpset_acq_16(flagsp, 0, FOFFSET_LOCKED)) - return (fp->f_offset); + return (atomic_load_long(&fp->f_offset)); sleepq_lock(&fp->f_vnread_flags); state = atomic_load_16(flagsp); @@ -718,7 +714,7 @@ foffset_lock(struct file *fp, int flags) sleepq_lock(&fp->f_vnread_flags); state = atomic_load_16(flagsp); } - res = fp->f_offset; + res = atomic_load_long(&fp->f_offset); sleepq_release(&fp->f_vnread_flags); return (res); } @@ -732,7 +728,7 @@ foffset_unlock(struct file *fp, off_t val, int flags) KASSERT((flags & FOF_OFFSET) == 0, ("FOF_OFFSET passed")); if ((flags & FOF_NOUPDATE) == 0) - fp->f_offset = val; + atomic_store_long(&fp->f_offset, val); if ((flags & FOF_NEXTOFF) != 0) fp->f_nextoff = val; From owner-svn-src-all@freebsd.org Mon May 25 06:25:32 2020 Return-Path: Delivered-To: svn-src-all@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 4479B2F4FCA; Mon, 25 May 2020 06:25:32 +0000 (UTC) (envelope-from grehan@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49VnCJ14DJz4Pn1; Mon, 25 May 2020 06:25:32 +0000 (UTC) (envelope-from grehan@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 1BBA4DCA1; Mon, 25 May 2020 06:25:32 +0000 (UTC) (envelope-from grehan@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04P6PVs3006579; Mon, 25 May 2020 06:25:31 GMT (envelope-from grehan@FreeBSD.org) Received: (from grehan@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04P6PVQb006577; Mon, 25 May 2020 06:25:31 GMT (envelope-from grehan@FreeBSD.org) Message-Id: <202005250625.04P6PVQb006577@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: grehan set sender to grehan@FreeBSD.org using -f From: Peter Grehan Date: Mon, 25 May 2020 06:25:31 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361442 - head/usr.sbin/bhyve X-SVN-Group: head X-SVN-Commit-Author: grehan X-SVN-Commit-Paths: head/usr.sbin/bhyve X-SVN-Commit-Revision: 361442 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2020 06:25:32 -0000 Author: grehan Date: Mon May 25 06:25:31 2020 New Revision: 361442 URL: https://svnweb.freebsd.org/changeset/base/361442 Log: Fix pci-passthru MSI issues with OpenBSD guests - Return 2 x 16-bit registers in the correct byte order for a 4-byte read that spans the CMD/STATUS register. This reversal was hiding the capabilities-list, which prevented the MSI capability from being found for XHCI passthru. - Reorganize MSI/MSI-x config writes so that a 4-byte write at the capability offset would have the read-only portion skipped. This prevented MSI interrupts from being enabled. Reported and extensively tested by Anatoli (me at anatoli dot ws) PR: 245392 Reported by: Anatoli (me at anatoli dot ws) Reviewed by: jhb (bhyve) Approved by: jhb, bz (mentor) MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D24951 Modified: head/usr.sbin/bhyve/pci_emul.c head/usr.sbin/bhyve/pci_emul.h head/usr.sbin/bhyve/pci_passthru.c Modified: head/usr.sbin/bhyve/pci_emul.c ============================================================================== --- head/usr.sbin/bhyve/pci_emul.c Mon May 25 04:57:57 2020 (r361441) +++ head/usr.sbin/bhyve/pci_emul.c Mon May 25 06:25:31 2020 (r361442) @@ -875,7 +875,7 @@ pci_emul_add_msixcap(struct pci_devinst *pi, int msgnu sizeof(msixcap))); } -void +static void msixcap_cfgwrite(struct pci_devinst *pi, int capoff, int offset, int bytes, uint32_t val) { @@ -899,7 +899,7 @@ msixcap_cfgwrite(struct pci_devinst *pi, int capoff, i CFGWRITE(pi, offset, val, bytes); } -void +static void msicap_cfgwrite(struct pci_devinst *pi, int capoff, int offset, int bytes, uint32_t val) { @@ -978,30 +978,34 @@ pci_emul_add_pciecap(struct pci_devinst *pi, int type) /* * This function assumes that 'coff' is in the capabilities region of the - * config space. + * config space. A capoff parameter of zero will force a search for the + * offset and type. */ -static void -pci_emul_capwrite(struct pci_devinst *pi, int offset, int bytes, uint32_t val) +void +pci_emul_capwrite(struct pci_devinst *pi, int offset, int bytes, uint32_t val, + uint8_t capoff, int capid) { - int capid; - uint8_t capoff, nextoff; + uint8_t nextoff; /* Do not allow un-aligned writes */ if ((offset & (bytes - 1)) != 0) return; - /* Find the capability that we want to update */ - capoff = CAP_START_OFFSET; - while (1) { - nextoff = pci_get_cfgdata8(pi, capoff + 1); - if (nextoff == 0) - break; - if (offset >= capoff && offset < nextoff) - break; + if (capoff == 0) { + /* Find the capability that we want to update */ + capoff = CAP_START_OFFSET; + while (1) { + nextoff = pci_get_cfgdata8(pi, capoff + 1); + if (nextoff == 0) + break; + if (offset >= capoff && offset < nextoff) + break; - capoff = nextoff; + capoff = nextoff; + } + assert(offset >= capoff); + capid = pci_get_cfgdata8(pi, capoff); } - assert(offset >= capoff); /* * Capability ID and Next Capability Pointer are readonly. @@ -1018,7 +1022,6 @@ pci_emul_capwrite(struct pci_devinst *pi, int offset, return; } - capid = pci_get_cfgdata8(pi, capoff); switch (capid) { case PCIY_MSI: msicap_cfgwrite(pi, capoff, offset, bytes, val); @@ -1897,7 +1900,7 @@ pci_cfgrw(struct vmctx *ctx, int vcpu, int in, int bus pci_set_cfgdata32(pi, coff, bar); } else if (pci_emul_iscap(pi, coff)) { - pci_emul_capwrite(pi, coff, bytes, *eax); + pci_emul_capwrite(pi, coff, bytes, *eax, 0, 0); } else if (coff >= PCIR_COMMAND && coff < PCIR_REVID) { pci_emul_cmdsts_write(pi, coff, *eax, bytes); } else { Modified: head/usr.sbin/bhyve/pci_emul.h ============================================================================== --- head/usr.sbin/bhyve/pci_emul.h Mon May 25 04:57:57 2020 (r361441) +++ head/usr.sbin/bhyve/pci_emul.h Mon May 25 06:25:31 2020 (r361442) @@ -218,10 +218,6 @@ typedef void (*pci_lintr_cb)(int b, int s, int pin, in int ioapic_irq, void *arg); int init_pci(struct vmctx *ctx); -void msicap_cfgwrite(struct pci_devinst *pi, int capoff, int offset, - int bytes, uint32_t val); -void msixcap_cfgwrite(struct pci_devinst *pi, int capoff, int offset, - int bytes, uint32_t val); void pci_callback(void); int pci_emul_alloc_bar(struct pci_devinst *pdi, int idx, enum pcibar_type type, uint64_t size); @@ -229,6 +225,8 @@ int pci_emul_alloc_pbar(struct pci_devinst *pdi, int i uint64_t hostbase, enum pcibar_type type, uint64_t size); int pci_emul_add_msicap(struct pci_devinst *pi, int msgnum); int pci_emul_add_pciecap(struct pci_devinst *pi, int pcie_device_type); +void pci_emul_capwrite(struct pci_devinst *pi, int offset, int bytes, + uint32_t val, uint8_t capoff, int capid); void pci_emul_cmd_changed(struct pci_devinst *pi, uint16_t old); void pci_generate_msi(struct pci_devinst *pi, int msgnum); void pci_generate_msix(struct pci_devinst *pi, int msgnum); Modified: head/usr.sbin/bhyve/pci_passthru.c ============================================================================== --- head/usr.sbin/bhyve/pci_passthru.c Mon May 25 04:57:57 2020 (r361441) +++ head/usr.sbin/bhyve/pci_passthru.c Mon May 25 06:25:31 2020 (r361442) @@ -811,8 +811,8 @@ passthru_cfgread(struct vmctx *ctx, int vcpu, struct p if (coff == PCIR_COMMAND) { if (bytes <= 2) return (-1); - *rv = pci_get_cfgdata16(pi, PCIR_COMMAND) << 16 | - read_config(&sc->psc_sel, PCIR_STATUS, 2); + *rv = read_config(&sc->psc_sel, PCIR_STATUS, 2) << 16 | + pci_get_cfgdata16(pi, PCIR_COMMAND); return (0); } @@ -842,8 +842,8 @@ passthru_cfgwrite(struct vmctx *ctx, int vcpu, struct * MSI capability is emulated */ if (msicap_access(sc, coff)) { - msicap_cfgwrite(pi, sc->psc_msi.capoff, coff, bytes, val); - + pci_emul_capwrite(pi, coff, bytes, val, sc->psc_msi.capoff, + PCIY_MSI); error = vm_setup_pptdev_msi(ctx, vcpu, sc->psc_sel.pc_bus, sc->psc_sel.pc_dev, sc->psc_sel.pc_func, pi->pi_msi.addr, pi->pi_msi.msg_data, @@ -854,7 +854,8 @@ passthru_cfgwrite(struct vmctx *ctx, int vcpu, struct } if (msixcap_access(sc, coff)) { - msixcap_cfgwrite(pi, sc->psc_msix.capoff, coff, bytes, val); + pci_emul_capwrite(pi, coff, bytes, val, sc->psc_msix.capoff, + PCIY_MSIX); if (pi->pi_msix.enabled) { msix_table_entries = pi->pi_msix.table_count; for (i = 0; i < msix_table_entries; i++) { From owner-svn-src-all@freebsd.org Mon May 25 07:18:48 2020 Return-Path: Delivered-To: svn-src-all@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 8E0AD2F65DB; Mon, 25 May 2020 07:18:48 +0000 (UTC) (envelope-from murray@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49VpNm39Rbz4TZs; Mon, 25 May 2020 07:18:48 +0000 (UTC) (envelope-from murray@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 68008E7CD; Mon, 25 May 2020 07:18:48 +0000 (UTC) (envelope-from murray@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04P7ImAT037852; Mon, 25 May 2020 07:18:48 GMT (envelope-from murray@FreeBSD.org) Received: (from murray@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04P7Imkg037851; Mon, 25 May 2020 07:18:48 GMT (envelope-from murray@FreeBSD.org) Message-Id: <202005250718.04P7Imkg037851@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: murray set sender to murray@FreeBSD.org using -f From: Murray Stokely Date: Mon, 25 May 2020 07:18:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361443 - head/usr.sbin/fdformat X-SVN-Group: head X-SVN-Commit-Author: murray X-SVN-Commit-Paths: head/usr.sbin/fdformat X-SVN-Commit-Revision: 361443 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2020 07:18:48 -0000 Author: murray (doc committer) Date: Mon May 25 07:18:47 2020 New Revision: 361443 URL: https://svnweb.freebsd.org/changeset/base/361443 Log: Add example usage for formatting a floppy disk. Adding a more self contained example here in the fdformat man page will allow us to modernize and streamline the FreeBSD Handbook by cutting out some of this legacy material. While here, address some other minor grammatical nits in this man page. Reviewed by: bcr (mentor) Approved by: bcr (mentor) MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D24971 Modified: head/usr.sbin/fdformat/fdformat.8 Modified: head/usr.sbin/fdformat/fdformat.8 ============================================================================== --- head/usr.sbin/fdformat/fdformat.8 Mon May 25 06:25:31 2020 (r361442) +++ head/usr.sbin/fdformat/fdformat.8 Mon May 25 07:18:47 2020 (r361443) @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd December 4, 2017 +.Dd May 23, 2020 .Dt FDFORMAT 8 .Os .Sh NAME @@ -46,12 +46,12 @@ where .Ar device may either be given as a full path name of a device node for a floppy disk drive -(e.g.\& +(e.g.,\& .Pa /dev/fd0 ) , or using an abbreviated name that will be looked up under .Pa /dev -(e.g.\& +(e.g.,\& .Dq Li fd0 ) . .Pp The options are as follows: @@ -133,6 +133,30 @@ Exit status 1 is returned on any errors during floppy formatting, and an exit status of 2 reflects invalid arguments given to the program (along with an appropriate information written to diagnostic output). +.Sh EXAMPLES +To format a new double-sided, high-density (HD) 1.44 MB disk +inserted in the first floppy disk drive, issue: +.Pp +.Dl "/usr/sbin/fdformat -f 1440 /dev/fd0" +.Pp +After low-level formatting the disk with +.Nm , +create a disk label so that the system can determine the size and +geometry of the disk. +The supported geometry values are listed in +.Pa /etc/disktab , +and we will use +.Va fd1440 +for this example. +To write the disk label, use +.Xr bsdlabel 8 : +.Pp +.Dl "/sbin/bsdlabel -B -w /dev/fd0 fd1440" +.Pp +The floppy is now ready to be high-level formatted with a file system. +To format the floppy disk with FAT, issue: +.Pp +.Dl "/sbin/newfs_msdos /dev/fd0" .Sh DIAGNOSTICS Unless .Fl q @@ -150,6 +174,7 @@ exact cause of the error) will be printed for up to 10 entire formatting process has completed. .Sh SEE ALSO .Xr fdc 4 , +.Xr bsdlabel 8 , .Xr fdcontrol 8 , .Xr newfs 8 , .Xr newfs_msdos 8 From owner-svn-src-all@freebsd.org Mon May 25 08:37:24 2020 Return-Path: Delivered-To: svn-src-all@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 5C7932F7957; Mon, 25 May 2020 08:37:24 +0000 (UTC) (envelope-from tijl@freebsd.org) Received: from mailrelay119.isp.belgacom.be (mailrelay119.isp.belgacom.be [195.238.20.146]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "relay.skynet.be", Issuer "GlobalSign RSA OV SSL CA 2018" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 49Vr7R2FRZz4ZdV; Mon, 25 May 2020 08:37:23 +0000 (UTC) (envelope-from tijl@freebsd.org) IronPort-SDR: Dv81iypg18SkWuB0oLE0SWAeqb5mgcXc07m6hHfH5m8bFtZC8rrpHPOZL5MZayOQkClc0l9AV9 hlkW1Tff9aSbjniyPecXFB6eisBzSj6DjQO6yDevMeGo0eTKiQ5S5jBEsRo42wbiT/A80IGANP J4w/2lVjXvtP6i0VVeDBkJHDbcR0LrgL9PXdwWhEgq+4r0pyMb7PKTEMldaUja4Jxy/apJfpFl R2LzP0yZzq/iXAia2aUb1SM2QCUXEct6UWm4YSss8xXmird9fyNGma0NyzXdIQfofSMNi8XFBR ktQ= X-Belgacom-Dynamic: yes IronPort-PHdr: =?us-ascii?q?9a23=3Avg1oPB8sPZKL1v9uRHKM819IXTAuvvDOBiVQ1K?= =?us-ascii?q?B+0+MVIJqq85mqBkHD//Il1AaPAdyGrase06GO7ujJYi8p2d65qncMcZhBBV?= =?us-ascii?q?cuqP49uEgeOvODElDxN/XwbiY3T4xoXV5h+GynYwAOQJ6tL1LdrWev4jEMBx?= =?us-ascii?q?7xKRR6JvjvGo7Vks+7y/2+94fcbglVhDexe65+IAuqoQneqsUbgZZpJ7osxB?= =?us-ascii?q?fOvnZGYfldy3lyJVKUkRb858Ow84Bm/i9Npf8v9NNOXLvjcaggQrNWEDopM2?= =?us-ascii?q?Yu5M32rhbDVheA5mEdUmoNjBVFBRXO4QzgUZfwtiv6sfd92DWfMMbrQ704RS?= =?us-ascii?q?iu4qF2QxLzliwJKyA2/33WisxojaJUvhShpwBkw4XJZI2ZLedycr/Bcd8fQ2?= =?us-ascii?q?dKQ8RfWDFbAo6kYYUBD/QPM/tboYb/qVsBogexCwa3CePzyDJFnGP60bEm3+?= =?us-ascii?q?g/FwzNwQwuH8gJsHTRtNj7KqIQUeSox6TWyjXDaOhW1in46IfSdBAhuuyHUL?= =?us-ascii?q?VsccrQy0kvExjIgFWKqYP7ITyYy/kDvWaB4+pnT+KvhHcqpgdsqTeg2skikJ?= =?us-ascii?q?PGhp4Jyl/a7yV5xp44KMO8RUNmb9OpFIdduiKUOoZqXM8vXWJltTskxrACvZ?= =?us-ascii?q?O2fTUHxYk5yhDRZPGKfYyF7B3+WeqNLjl1hW9odbOxiRu07EOuxOr8Vsyu31?= =?us-ascii?q?ZLqCpIitfMtmoT2BPN8ceHUeZy8l2m2TaV2ADe7PxPL0MslafDKJMswKQ8m5?= =?us-ascii?q?sSvEjZHiL7l1/6gauZe0gi5+Om8f7oYq/8qZ+ZL4J0jwb+PbkwlcGnGuQ4Nx?= =?us-ascii?q?QOX3Cc+eShyL3v5U35T6tOjv0xiqTZs4rVJcAapq68HQBVyIEj5wyjDzen0t?= =?us-ascii?q?QYmWMLI05CeBKAlIjmJVTOL+r+DfekmVisly1rx//eMr3gBJXCMGTDna/icL?= =?us-ascii?q?t/8UJRyQs+wcpf6p9bEL0MJP3+Vlf0tNPCDx85NwK0w/zgCNV4zo4eRWOPAq?= =?us-ascii?q?2dMK7Jv1+I/PwgLPeXa48OpTnxMf8l5+ThjXMhg18SYbGp3YcLaHC/BvlmOF?= =?us-ascii?q?uZYXz1jtcaC2cFohMyTOz0h1KYTDFefHiyX7gi6T4lE42mFprMSpqqgLyb0y?= =?us-ascii?q?exBodWaXxeClCQDXfocJ2JW+wSaCKUO8NhiSYEWqS4R4A70RGusBT3y7R9Lu?= =?us-ascii?q?XK5CIXronj28Vv6+3UjxEy+iR+D96B3GGVU2F0gmQISict3KBlvUNx00uM0a?= =?us-ascii?q?99g/xdFNxT++9JXRkgNZ7H1OF6BcryVRzfcdiSU1apX8+qATYrTtI+29UOeV?= =?us-ascii?q?pyG82+jhDf2CqnG6EVmKaNBJw78qPd3mb+J8BmxnbIzqkukUcpTdBUNWK7nK?= =?us-ascii?q?J/8BLTB4Ga23mewouwdK9UwifLvEiS32eI9BVGWQh/QLfIW1gxfEbbh+/VoE?= =?us-ascii?q?TYQOn9J64gN159LsrKAaxNcdDshFNdDKP/OdbaS0yrlmqaPjrOwamDOtm5M1?= =?us-ascii?q?4B1TnQXRBX2zsY+myLYE1nXn+s?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A2CMAABKg8te/142QldmGgEBAQEBAQE?= =?us-ascii?q?BAQEDAQEBARIBAQEBAgIBAQEBQIFHgixbFFQBIBIXFY0mhXiCEIp3kG8LAQE?= =?us-ascii?q?BAQEBAQEBLwgEAQGERAKCHSc4EwIDAQEBAwIFAQEGAQEBAQEBBAQBbAQBAQc?= =?us-ascii?q?KAgGETiEBAwEBBQoBNwyCOykBgw4BBTocIxALFAQjC1cGE4MngwALrBWBNIQ?= =?us-ascii?q?6AQsBhReBBYE4hheGR4IAhCE+ikIEmTWZcYJeiCmQJymDdZoNLYRZlTaWBSK?= =?us-ascii?q?BVk0wCIMkCUcYDZB4iE6FRD8DMAIBATMCBggBAQMJjXMBAQ?= X-IPAS-Result: =?us-ascii?q?A2CMAABKg8te/142QldmGgEBAQEBAQEBAQEDAQEBARIBA?= =?us-ascii?q?QEBAgIBAQEBQIFHgixbFFQBIBIXFY0mhXiCEIp3kG8LAQEBAQEBAQEBLwgEA?= =?us-ascii?q?QGERAKCHSc4EwIDAQEBAwIFAQEGAQEBAQEBBAQBbAQBAQcKAgGETiEBAwEBB?= =?us-ascii?q?QoBNwyCOykBgw4BBTocIxALFAQjC1cGE4MngwALrBWBNIQ6AQsBhReBBYE4h?= =?us-ascii?q?heGR4IAhCE+ikIEmTWZcYJeiCmQJymDdZoNLYRZlTaWBSKBVk0wCIMkCUcYD?= =?us-ascii?q?ZB4iE6FRD8DMAIBATMCBggBAQMJjXMBAQ?= Received: from 94.54-66-87.adsl-dyn.isp.belgacom.be (HELO kalimero.tijl.coosemans.org) ([87.66.54.94]) by relay.skynet.be with ESMTP; 25 May 2020 10:37:20 +0200 Received: from localhost (localhost [127.0.0.1]) by kalimero.tijl.coosemans.org (8.15.2/8.15.2) with ESMTP id 04P8bJ1L006731; Mon, 25 May 2020 10:37:19 +0200 (CEST) (envelope-from tijl@FreeBSD.org) Date: Mon, 25 May 2020 10:37:19 +0200 From: =?UTF-8?B?VMSzbA==?= Coosemans To: Eric van Gyzen Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r360964 - in head: lib/libclang_rt lib/libthr lib/msun libexec/rtld-elf libexec/tftpd/tests share/mk stand stand/arm/uboot stand/efi stand/efi/boot1 stand/efi/loader stand/i386/boot2 st... Message-ID: <20200525103719.7762dbc7@FreeBSD.org> In-Reply-To: <202005121522.04CFMfuo007680@repo.freebsd.org> References: <202005121522.04CFMfuo007680@repo.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Rspamd-Queue-Id: 49Vr7R2FRZz4ZdV X-Spamd-Bar: / Authentication-Results: mx1.freebsd.org; none X-Spamd-Result: default: False [0.00 / 15.00]; local_wl_from(0.00)[freebsd.org]; ASN(0.00)[asn:5432, ipnet:195.238.0.0/19, country:BE] X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2020 08:37:24 -0000 On Tue, 12 May 2020 15:22:41 +0000 (UTC) Eric van Gyzen wrote: > Author: vangyzen > Date: Tue May 12 15:22:40 2020 > New Revision: 360964 > URL: https://svnweb.freebsd.org/changeset/base/360964 > > Log: > Remove tests for obsolete compilers in the build system > > Assume gcc is at least 6.4, the oldest xtoolchain in the ports tree. > Assume clang is at least 6, which was in 11.2-RELEASE. Drop conditions > for older compilers. > > Reviewed by: imp (earlier version), emaste, jhb > MFC after: 2 weeks > Sponsored by: Dell EMC Isilon > Differential Revision: https://reviews.freebsd.org/D24802 This broke devel/linux_libusb. It is FreeBSD libusb built with Linux gcc 4.8.5 (devel/linux-c7-devtools). It's probably caused by the changes to share/mk/*. http://beefy18.nyi.freebsd.org/data/head-amd64-default/p536258_s361404/logs/linux_libusb-13.0r358841.log From owner-svn-src-all@freebsd.org Mon May 25 09:52:45 2020 Return-Path: Delivered-To: svn-src-all@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 675FB2FAA71; Mon, 25 May 2020 09:52:45 +0000 (UTC) (envelope-from bz@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49VspP2B7cz4j9n; Mon, 25 May 2020 09:52:45 +0000 (UTC) (envelope-from bz@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 4646C10546; Mon, 25 May 2020 09:52:45 +0000 (UTC) (envelope-from bz@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04P9qjAv035761; Mon, 25 May 2020 09:52:45 GMT (envelope-from bz@FreeBSD.org) Received: (from bz@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04P9qjRX035760; Mon, 25 May 2020 09:52:45 GMT (envelope-from bz@FreeBSD.org) Message-Id: <202005250952.04P9qjRX035760@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: bz set sender to bz@FreeBSD.org using -f From: "Bjoern A. Zeeb" Date: Mon, 25 May 2020 09:52:45 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-svnadmin@freebsd.org Subject: svn commit: r361444 - svnadmin/conf X-SVN-Group: svnadmin X-SVN-Commit-Author: bz X-SVN-Commit-Paths: svnadmin/conf X-SVN-Commit-Revision: 361444 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2020 09:52:45 -0000 Author: bz Date: Mon May 25 09:52:44 2020 New Revision: 361444 URL: https://svnweb.freebsd.org/changeset/base/361444 Log: Release Peter Grehan (grehan) from "mentor ship". He can surf on his own again. Modified: svnadmin/conf/mentors Modified: svnadmin/conf/mentors ============================================================================== --- svnadmin/conf/mentors Mon May 25 07:18:47 2020 (r361443) +++ svnadmin/conf/mentors Mon May 25 09:52:44 2020 (r361444) @@ -17,7 +17,6 @@ brd allanjude Co-mentor: bapt chs imp freqlabs mav Co-mentor: mmacy gordon delphij Co-mentor: emaste -grehan bz jceel trasz jkh rwatson johalun imp From owner-svn-src-all@freebsd.org Mon May 25 12:31:49 2020 Return-Path: Delivered-To: svn-src-all@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 EB47D2FE548; Mon, 25 May 2020 12:31:49 +0000 (UTC) (envelope-from hselasky@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49VxKx5wN2z3Rp5; Mon, 25 May 2020 12:31:49 +0000 (UTC) (envelope-from hselasky@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 C677D1246E; Mon, 25 May 2020 12:31:49 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04PCVnlx030872; Mon, 25 May 2020 12:31:49 GMT (envelope-from hselasky@FreeBSD.org) Received: (from hselasky@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04PCVnBK030870; Mon, 25 May 2020 12:31:49 GMT (envelope-from hselasky@FreeBSD.org) Message-Id: <202005251231.04PCVnBK030870@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: hselasky set sender to hselasky@FreeBSD.org using -f From: Hans Petter Selasky Date: Mon, 25 May 2020 12:31:49 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361445 - in head/sys/dev/mlx5: . mlx5_core mlx5_en X-SVN-Group: head X-SVN-Commit-Author: hselasky X-SVN-Commit-Paths: in head/sys/dev/mlx5: . mlx5_core mlx5_en X-SVN-Commit-Revision: 361445 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2020 12:31:50 -0000 Author: hselasky Date: Mon May 25 12:31:48 2020 New Revision: 361445 URL: https://svnweb.freebsd.org/changeset/base/361445 Log: Update the TLS capability bit after recent PRM changes in mlx5en(4). A CX6-DX firmware version equal to or newer than 12.27.0372 is now required. Sponsored by: Mellanox Technologies Modified: head/sys/dev/mlx5/mlx5_core/mlx5_fw.c head/sys/dev/mlx5/mlx5_en/mlx5_en_hw_tls.c head/sys/dev/mlx5/mlx5_ifc.h Modified: head/sys/dev/mlx5/mlx5_core/mlx5_fw.c ============================================================================== --- head/sys/dev/mlx5/mlx5_core/mlx5_fw.c Mon May 25 09:52:44 2020 (r361444) +++ head/sys/dev/mlx5/mlx5_core/mlx5_fw.c Mon May 25 12:31:48 2020 (r361445) @@ -227,7 +227,7 @@ int mlx5_query_hca_caps(struct mlx5_core_dev *dev) return err; } - if (MLX5_CAP_GEN(dev, tls)) { + if (MLX5_CAP_GEN(dev, tls_tx)) { err = mlx5_core_get_caps(dev, MLX5_CAP_TLS); if (err) return err; Modified: head/sys/dev/mlx5/mlx5_en/mlx5_en_hw_tls.c ============================================================================== --- head/sys/dev/mlx5/mlx5_en/mlx5_en_hw_tls.c Mon May 25 09:52:44 2020 (r361444) +++ head/sys/dev/mlx5/mlx5_en/mlx5_en_hw_tls.c Mon May 25 12:31:48 2020 (r361445) @@ -119,7 +119,7 @@ mlx5e_tls_init(struct mlx5e_priv *priv) struct sysctl_oid *node; uint32_t x; - if (MLX5_CAP_GEN(priv->mdev, tls) == 0) + if (MLX5_CAP_GEN(priv->mdev, tls_tx) == 0) return (0); ptls->wq = create_singlethread_workqueue("mlx5-tls-wq"); @@ -161,7 +161,7 @@ mlx5e_tls_cleanup(struct mlx5e_priv *priv) struct mlx5e_tls *ptls = &priv->tls; uint32_t x; - if (MLX5_CAP_GEN(priv->mdev, tls) == 0) + if (MLX5_CAP_GEN(priv->mdev, tls_tx) == 0) return; ptls->init = 0; Modified: head/sys/dev/mlx5/mlx5_ifc.h ============================================================================== --- head/sys/dev/mlx5/mlx5_ifc.h Mon May 25 09:52:44 2020 (r361444) +++ head/sys/dev/mlx5/mlx5_ifc.h Mon May 25 12:31:48 2020 (r361445) @@ -1296,14 +1296,15 @@ struct mlx5_ifc_cmd_hca_cap_bits { u8 reserved_at_440[0x8]; u8 create_qp_start_hint[0x18]; - u8 tls[0x1]; - u8 reserved_at_461[0x2]; + u8 reserved_at_460[0x3]; u8 log_max_uctx[0x5]; u8 reserved_at_468[0x3]; u8 log_max_umem[0x5]; u8 max_num_eqs[0x10]; - u8 reserved_63[0x3]; + u8 reserved_at_480[0x1]; + u8 tls_tx[0x1]; + u8 reserved_at_482[0x1]; u8 log_max_l2_table[0x5]; u8 reserved_64[0x8]; u8 log_uar_page_sz[0x10]; From owner-svn-src-all@freebsd.org Mon May 25 12:34:16 2020 Return-Path: Delivered-To: svn-src-all@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 192D42FE635; Mon, 25 May 2020 12:34:16 +0000 (UTC) (envelope-from hselasky@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49VxNl6zH9z3RwC; Mon, 25 May 2020 12:34:15 +0000 (UTC) (envelope-from hselasky@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 EAA4812517; Mon, 25 May 2020 12:34:15 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04PCYFfQ034304; Mon, 25 May 2020 12:34:15 GMT (envelope-from hselasky@FreeBSD.org) Received: (from hselasky@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04PCYFg0034303; Mon, 25 May 2020 12:34:15 GMT (envelope-from hselasky@FreeBSD.org) Message-Id: <202005251234.04PCYFg0034303@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: hselasky set sender to hselasky@FreeBSD.org using -f From: Hans Petter Selasky Date: Mon, 25 May 2020 12:34:15 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361446 - head/sys/dev/mlx5/mlx5_en X-SVN-Group: head X-SVN-Commit-Author: hselasky X-SVN-Commit-Paths: head/sys/dev/mlx5/mlx5_en X-SVN-Commit-Revision: 361446 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2020 12:34:16 -0000 Author: hselasky Date: Mon May 25 12:34:15 2020 New Revision: 361446 URL: https://svnweb.freebsd.org/changeset/base/361446 Log: Correctly set the initial vector for TLS v1.3 for mlx5en(4). For TLS v1.3 the 12 bytes of the initial vector, IV, should just be copied as-is from the kernel to the gcm_iv field, which hold the first 4 bytes, and the remaining 8 bytes go to the subsequent implicit_iv field. There is no need to consider the byte order on the 12 bytes of IV like initially done. Sponsored by: Mellanox Technologies Modified: head/sys/dev/mlx5/mlx5_en/mlx5_en_hw_tls.c Modified: head/sys/dev/mlx5/mlx5_en/mlx5_en_hw_tls.c ============================================================================== --- head/sys/dev/mlx5/mlx5_en/mlx5_en_hw_tls.c Mon May 25 12:31:48 2020 (r361445) +++ head/sys/dev/mlx5/mlx5_en/mlx5_en_hw_tls.c Mon May 25 12:34:15 2020 (r361446) @@ -251,18 +251,14 @@ mlx5e_tls_set_params(void *ctx, const struct tls_sessi MLX5_SET(sw_tls_cntx, ctx, param.encryption_standard, 1); /* TLS */ /* copy the initial vector in place */ - if (en->iv_len == MLX5_FLD_SZ_BYTES(sw_tls_cntx, param.gcm_iv)) { + switch (en->iv_len) { + case MLX5_FLD_SZ_BYTES(sw_tls_cntx, param.gcm_iv): + case MLX5_FLD_SZ_BYTES(sw_tls_cntx, param.gcm_iv) + + MLX5_FLD_SZ_BYTES(sw_tls_cntx, param.implicit_iv): memcpy(MLX5_ADDR_OF(sw_tls_cntx, ctx, param.gcm_iv), - en->iv, MLX5_FLD_SZ_BYTES(sw_tls_cntx, param.gcm_iv)); - } else if (en->iv_len == (MLX5_FLD_SZ_BYTES(sw_tls_cntx, param.gcm_iv) + - MLX5_FLD_SZ_BYTES(sw_tls_cntx, param.implicit_iv))) { - memcpy(MLX5_ADDR_OF(sw_tls_cntx, ctx, param.gcm_iv), - (char *)en->iv + MLX5_FLD_SZ_BYTES(sw_tls_cntx, param.implicit_iv), - MLX5_FLD_SZ_BYTES(sw_tls_cntx, param.gcm_iv)); - memcpy(MLX5_ADDR_OF(sw_tls_cntx, ctx, param.implicit_iv), - en->iv, - MLX5_FLD_SZ_BYTES(sw_tls_cntx, param.implicit_iv)); - } else { + en->iv, en->iv_len); + break; + default: return (EINVAL); } From owner-svn-src-all@freebsd.org Mon May 25 12:37:46 2020 Return-Path: Delivered-To: svn-src-all@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 810D12FE261; Mon, 25 May 2020 12:37:46 +0000 (UTC) (envelope-from hselasky@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49VxSp2s39z3S5k; Mon, 25 May 2020 12:37:46 +0000 (UTC) (envelope-from hselasky@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 58E961233B; Mon, 25 May 2020 12:37:46 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04PCbkNo034503; Mon, 25 May 2020 12:37:46 GMT (envelope-from hselasky@FreeBSD.org) Received: (from hselasky@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04PCbkEF034502; Mon, 25 May 2020 12:37:46 GMT (envelope-from hselasky@FreeBSD.org) Message-Id: <202005251237.04PCbkEF034502@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: hselasky set sender to hselasky@FreeBSD.org using -f From: Hans Petter Selasky Date: Mon, 25 May 2020 12:37:46 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361447 - head/sys/dev/mlx5/mlx5_en X-SVN-Group: head X-SVN-Commit-Author: hselasky X-SVN-Commit-Paths: head/sys/dev/mlx5/mlx5_en X-SVN-Commit-Revision: 361447 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2020 12:37:46 -0000 Author: hselasky Date: Mon May 25 12:37:45 2020 New Revision: 361447 URL: https://svnweb.freebsd.org/changeset/base/361447 Log: Improve set progress parameters, SET PSV for HW TLS in mlx5en(4). There is no need for a fence and there is no need to provide the TCP sequence number. Sponsored by: Mellanox Technologies Modified: head/sys/dev/mlx5/mlx5_en/mlx5_en_hw_tls.c Modified: head/sys/dev/mlx5/mlx5_en/mlx5_en_hw_tls.c ============================================================================== --- head/sys/dev/mlx5/mlx5_en/mlx5_en_hw_tls.c Mon May 25 12:34:15 2020 (r361446) +++ head/sys/dev/mlx5/mlx5_en/mlx5_en_hw_tls.c Mon May 25 12:37:45 2020 (r361447) @@ -560,9 +560,7 @@ mlx5e_tls_send_progress_parameters(struct mlx5e_sq *sq wqe->ctrl.qpn_ds = cpu_to_be32((sq->sqn << 8) | ds_cnt); if (mlx5e_do_send_cqe(sq)) - wqe->ctrl.fm_ce_se = MLX5_WQE_CTRL_CQ_UPDATE | MLX5_FENCE_MODE_INITIATOR_SMALL; - else - wqe->ctrl.fm_ce_se = MLX5_FENCE_MODE_INITIATOR_SMALL; + wqe->ctrl.fm_ce_se = MLX5_WQE_CTRL_CQ_UPDATE; /* copy in the PSV control segment */ memcpy(&wqe->psv, MLX5_ADDR_OF(sw_tls_cntx, ptag->crypto_params, progress), @@ -763,10 +761,6 @@ mlx5e_sq_tls_xmit(struct mlx5e_sq *sq, struct mlx5e_xm /* setup TLS static parameters */ MLX5_SET64(sw_tls_cntx, ptls_tag->crypto_params, param.initial_record_number, rcd_sn); - - /* setup TLS progress parameters */ - MLX5_SET(sw_tls_cntx, ptls_tag->crypto_params, - progress.next_record_tcp_sn, tcp_seq); /* * NOTE: The sendqueue should have enough room to From owner-svn-src-all@freebsd.org Mon May 25 12:41:45 2020 Return-Path: Delivered-To: svn-src-all@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 F2FE92FE9AD; Mon, 25 May 2020 12:41:45 +0000 (UTC) (envelope-from mjg@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49VxYP6Dv8z3ShF; Mon, 25 May 2020 12:41:45 +0000 (UTC) (envelope-from mjg@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 CFA2211EEB; Mon, 25 May 2020 12:41:45 +0000 (UTC) (envelope-from mjg@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04PCfjxg038549; Mon, 25 May 2020 12:41:45 GMT (envelope-from mjg@FreeBSD.org) Received: (from mjg@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04PCfji8038546; Mon, 25 May 2020 12:41:45 GMT (envelope-from mjg@FreeBSD.org) Message-Id: <202005251241.04PCfji8038546@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mjg set sender to mjg@FreeBSD.org using -f From: Mateusz Guzik Date: Mon, 25 May 2020 12:41:45 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361448 - in head/sys: kern sys X-SVN-Group: head X-SVN-Commit-Author: mjg X-SVN-Commit-Paths: in head/sys: kern sys X-SVN-Commit-Revision: 361448 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2020 12:41:46 -0000 Author: mjg Date: Mon May 25 12:41:44 2020 New Revision: 361448 URL: https://svnweb.freebsd.org/changeset/base/361448 Log: proc: refactor clearing credentials into proc_unset_cred Modified: head/sys/kern/kern_exit.c head/sys/kern/kern_prot.c head/sys/sys/ucred.h Modified: head/sys/kern/kern_exit.c ============================================================================== --- head/sys/kern/kern_exit.c Mon May 25 12:37:45 2020 (r361447) +++ head/sys/kern/kern_exit.c Mon May 25 12:41:44 2020 (r361448) @@ -928,8 +928,7 @@ proc_reap(struct thread *td, struct proc *p, int *stat /* * Free credentials, arguments, and sigacts. */ - crfree(p->p_ucred); - proc_set_cred(p, NULL); + proc_unset_cred(p); pargs_drop(p->p_args); p->p_args = NULL; sigacts_free(p->p_sigacts); Modified: head/sys/kern/kern_prot.c ============================================================================== --- head/sys/kern/kern_prot.c Mon May 25 12:37:45 2020 (r361447) +++ head/sys/kern/kern_prot.c Mon May 25 12:41:44 2020 (r361448) @@ -2000,14 +2000,20 @@ proc_set_cred(struct proc *p, struct ucred *newcred) { MPASS(p->p_ucred != NULL); - if (newcred == NULL) - MPASS(p->p_state == PRS_ZOMBIE); - else - PROC_LOCK_ASSERT(p, MA_OWNED); - + PROC_LOCK_ASSERT(p, MA_OWNED); p->p_ucred = newcred; - if (newcred != NULL) - PROC_UPDATE_COW(p); + PROC_UPDATE_COW(p); +} + +void +proc_unset_cred(struct proc *p) +{ + struct ucred *cr; + + MPASS(p->p_state == PRS_ZOMBIE); + cr = p->p_ucred; + p->p_ucred = NULL; + crfree(cr); } struct ucred * Modified: head/sys/sys/ucred.h ============================================================================== --- head/sys/sys/ucred.h Mon May 25 12:37:45 2020 (r361447) +++ head/sys/sys/ucred.h Mon May 25 12:41:44 2020 (r361448) @@ -113,6 +113,7 @@ struct ucred *crdup(struct ucred *cr); void crextend(struct ucred *cr, int n); void proc_set_cred_init(struct proc *p, struct ucred *cr); void proc_set_cred(struct proc *p, struct ucred *cr); +void proc_unset_cred(struct proc *p); void crfree(struct ucred *cr); struct ucred *crget(void); struct ucred *crhold(struct ucred *cr); From owner-svn-src-all@freebsd.org Mon May 25 12:42:56 2020 Return-Path: Delivered-To: svn-src-all@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 8E2C62FEB11; Mon, 25 May 2020 12:42:56 +0000 (UTC) (envelope-from manu@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49VxZm3Fh1z3SwD; Mon, 25 May 2020 12:42:56 +0000 (UTC) (envelope-from manu@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 6B0B912272; Mon, 25 May 2020 12:42:56 +0000 (UTC) (envelope-from manu@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04PCguWL040635; Mon, 25 May 2020 12:42:56 GMT (envelope-from manu@FreeBSD.org) Received: (from manu@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04PCguLP040634; Mon, 25 May 2020 12:42:56 GMT (envelope-from manu@FreeBSD.org) Message-Id: <202005251242.04PCguLP040634@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: manu set sender to manu@FreeBSD.org using -f From: Emmanuel Vadot Date: Mon, 25 May 2020 12:42:56 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361449 - head/sys/compat/linuxkpi/common/include/linux X-SVN-Group: head X-SVN-Commit-Author: manu X-SVN-Commit-Paths: head/sys/compat/linuxkpi/common/include/linux X-SVN-Commit-Revision: 361449 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2020 12:42:56 -0000 Author: manu Date: Mon May 25 12:42:55 2020 New Revision: 361449 URL: https://svnweb.freebsd.org/changeset/base/361449 Log: linuxkpi: Add __same_type and __must_be_array macros The same_type macro simply wraps around builtin_types_compatible_p which exist for both GCC and CLANG, which returns 1 if both types are the same. The __must_be_array macros returns 1 if the argument is an array. This is needed for DRM v5.3 Sponsored-by: The FreeBSD Foundation Reviewed by: hselasky Differential Revision: https://reviews.freebsd.org/D24953 Modified: head/sys/compat/linuxkpi/common/include/linux/compiler.h Modified: head/sys/compat/linuxkpi/common/include/linux/compiler.h ============================================================================== --- head/sys/compat/linuxkpi/common/include/linux/compiler.h Mon May 25 12:41:44 2020 (r361448) +++ head/sys/compat/linuxkpi/common/include/linux/compiler.h Mon May 25 12:42:55 2020 (r361449) @@ -111,4 +111,7 @@ #define _AT(T,X) ((T)(X)) +#define __same_type(a, b) __builtin_types_compatible_p(typeof(a), typeof(b)) +#define __must_be_array(a) __same_type(a, &(a)[0]) + #endif /* _LINUX_COMPILER_H_ */ From owner-svn-src-all@freebsd.org Mon May 25 12:44:08 2020 Return-Path: Delivered-To: svn-src-all@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 0F87B2FEA3B; Mon, 25 May 2020 12:44:08 +0000 (UTC) (envelope-from manu@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49Vxc76kNNz3TF6; Mon, 25 May 2020 12:44:07 +0000 (UTC) (envelope-from manu@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 E0915126B1; Mon, 25 May 2020 12:44:07 +0000 (UTC) (envelope-from manu@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04PCi7ZD040810; Mon, 25 May 2020 12:44:07 GMT (envelope-from manu@FreeBSD.org) Received: (from manu@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04PCi7YN040809; Mon, 25 May 2020 12:44:07 GMT (envelope-from manu@FreeBSD.org) Message-Id: <202005251244.04PCi7YN040809@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: manu set sender to manu@FreeBSD.org using -f From: Emmanuel Vadot Date: Mon, 25 May 2020 12:44:07 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361450 - head/sys/compat/linuxkpi/common/include/linux X-SVN-Group: head X-SVN-Commit-Author: manu X-SVN-Commit-Paths: head/sys/compat/linuxkpi/common/include/linux X-SVN-Commit-Revision: 361450 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2020 12:44:08 -0000 Author: manu Date: Mon May 25 12:44:07 2020 New Revision: 361450 URL: https://svnweb.freebsd.org/changeset/base/361450 Log: linuxkpi: Add refcount.h Implement some refcount functions needed by drm. Just use the atomic_t struct and functions from linuxkpi for simplicity. Sponsored-by: The FreeBSD Foundation Reviewed by: hselsasky Differential Revision: https://reviews.freebsd.org/D24985 Added: head/sys/compat/linuxkpi/common/include/linux/refcount.h (contents, props changed) Added: head/sys/compat/linuxkpi/common/include/linux/refcount.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/compat/linuxkpi/common/include/linux/refcount.h Mon May 25 12:44:07 2020 (r361450) @@ -0,0 +1,82 @@ +/*- + * Copyright (c) 2020 The FreeBSD Foundation + * + * This software was developed by Emmanuel Vadot under sponsorship + * from the FreeBSD Foundation. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef _LINUX_REFCOUNT_H +#define _LINUX_REFCOUNT_H + +#include + +struct refcount_linux { + atomic_t value; +}; +typedef struct refcount_linux refcount_t; + +static inline void +refcount_set(refcount_t *ref, unsigned int i) +{ + atomic_set(&ref->value, i); +} + +static inline void +refcount_inc(refcount_t *ref) +{ + atomic_inc(&ref->value); +} + +static inline bool +refcount_inc_not_zero(refcount_t *ref) +{ + return (atomic_inc_not_zero(&ref->value)); +} + +static inline void +refcount_dec(refcount_t *ref) +{ + atomic_dec(&ref->value); +} + +static inline unsigned int +refcount_read(refcount_t *ref) +{ + return atomic_read(&ref->value); +} + +static inline bool +refcount_dec_and_lock_irqsave(refcount_t *ref, spinlock_t *lock, + unsigned long *flags) +{ + if (atomic_dec_and_test(&ref->value) == true) { + spin_lock_irqsave(lock, flags); + return (true); + } + return (false); +} + +#endif /* __LINUX_REFCOUNT_H__ */ From owner-svn-src-all@freebsd.org Mon May 25 12:45:11 2020 Return-Path: Delivered-To: svn-src-all@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 5CA5E2FED1A; Mon, 25 May 2020 12:45:11 +0000 (UTC) (envelope-from markj@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49VxdM1h63z3TL3; Mon, 25 May 2020 12:45:11 +0000 (UTC) (envelope-from markj@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 35001126B3; Mon, 25 May 2020 12:45:11 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04PCjBpD040922; Mon, 25 May 2020 12:45:11 GMT (envelope-from markj@FreeBSD.org) Received: (from markj@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04PCjAb6040920; Mon, 25 May 2020 12:45:10 GMT (envelope-from markj@FreeBSD.org) Message-Id: <202005251245.04PCjAb6040920@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: markj set sender to markj@FreeBSD.org using -f From: Mark Johnston Date: Mon, 25 May 2020 12:45:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org Subject: svn commit: r361451 - in stable/12: share/man/man5 sys/netpfil/pf X-SVN-Group: stable-12 X-SVN-Commit-Author: markj X-SVN-Commit-Paths: in stable/12: share/man/man5 sys/netpfil/pf X-SVN-Commit-Revision: 361451 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2020 12:45:11 -0000 Author: markj Date: Mon May 25 12:45:10 2020 New Revision: 361451 URL: https://svnweb.freebsd.org/changeset/base/361451 Log: MFC r360903: pf: Don't allocate per-table entry counters unless required. Modified: stable/12/share/man/man5/pf.conf.5 stable/12/sys/netpfil/pf/pf_table.c Directory Properties: stable/12/ (props changed) Modified: stable/12/share/man/man5/pf.conf.5 ============================================================================== --- stable/12/share/man/man5/pf.conf.5 Mon May 25 12:44:07 2020 (r361450) +++ stable/12/share/man/man5/pf.conf.5 Mon May 25 12:45:10 2020 (r361451) @@ -189,6 +189,7 @@ The .Ar counters flag enables per-address packet and byte counters which can be displayed with .Xr pfctl 8 . +Note that this feature carries significant memory overhead for large tables. .El .Pp For example, Modified: stable/12/sys/netpfil/pf/pf_table.c ============================================================================== --- stable/12/sys/netpfil/pf/pf_table.c Mon May 25 12:44:07 2020 (r361450) +++ stable/12/sys/netpfil/pf/pf_table.c Mon May 25 12:45:10 2020 (r361451) @@ -144,9 +144,9 @@ static void pfr_mark_addrs(struct pfr_ktable *); static struct pfr_kentry *pfr_lookup_addr(struct pfr_ktable *, struct pfr_addr *, int); -static bool pfr_create_kentry_counter(struct pfr_kcounters *, - int, int); -static struct pfr_kentry *pfr_create_kentry(struct pfr_addr *); +static bool pfr_create_kentry_counter(struct pfr_kentry *, int, + int); +static struct pfr_kentry *pfr_create_kentry(struct pfr_addr *, bool); static void pfr_destroy_kentries(struct pfr_kentryworkq *); static void pfr_destroy_kentry_counter(struct pfr_kcounters *, int, int); @@ -155,8 +155,8 @@ static void pfr_insert_kentries(struct pfr_ktable *, struct pfr_kentryworkq *, long); static void pfr_remove_kentries(struct pfr_ktable *, struct pfr_kentryworkq *); -static void pfr_clstats_kentries(struct pfr_kentryworkq *, long, - int); +static void pfr_clstats_kentries(struct pfr_ktable *, + struct pfr_kentryworkq *, long, int); static void pfr_reset_feedback(struct pfr_addr *, int); static void pfr_prepare_network(union sockaddr_union *, int, int); static int pfr_route_kentry(struct pfr_ktable *, @@ -285,7 +285,8 @@ pfr_add_addrs(struct pfr_table *tbl, struct pfr_addr * ad->pfra_fback = PFR_FB_NONE; } if (p == NULL && q == NULL) { - p = pfr_create_kentry(ad); + p = pfr_create_kentry(ad, + (kt->pfrkt_flags & PFR_TFLAG_COUNTERS) != 0); if (p == NULL) senderr(ENOMEM); if (pfr_route_kentry(tmpkt, p)) { @@ -451,7 +452,8 @@ pfr_set_addrs(struct pfr_table *tbl, struct pfr_addr * ad.pfra_fback = PFR_FB_DUPLICATE; goto _skip; } - p = pfr_create_kentry(&ad); + p = pfr_create_kentry(&ad, + (kt->pfrkt_flags & PFR_TFLAG_COUNTERS) != 0); if (p == NULL) senderr(ENOMEM); if (pfr_route_kentry(tmpkt, p)) { @@ -485,7 +487,7 @@ _skip: if (!(flags & PFR_FLAG_DUMMY)) { pfr_insert_kentries(kt, &addq, tzero); pfr_remove_kentries(kt, &delq); - pfr_clstats_kentries(&changeq, tzero, INVERT_NEG_FLAG); + pfr_clstats_kentries(kt, &changeq, tzero, INVERT_NEG_FLAG); } else pfr_destroy_kentries(&addq); if (nadd != NULL) @@ -623,7 +625,7 @@ pfr_get_astats(struct pfr_table *tbl, struct pfr_astat pfr_walktree, &w); if (!rv && (flags & PFR_FLAG_CLSTATS)) { pfr_enqueue_addrs(kt, &workq, NULL, 0); - pfr_clstats_kentries(&workq, tzero, 0); + pfr_clstats_kentries(kt, &workq, tzero, 0); } if (rv) return (rv); @@ -671,7 +673,7 @@ pfr_clr_astats(struct pfr_table *tbl, struct pfr_addr } if (!(flags & PFR_FLAG_DUMMY)) - pfr_clstats_kentries(&workq, 0, 0); + pfr_clstats_kentries(kt, &workq, 0, 0); if (nzero != NULL) *nzero = xzero; return (0); @@ -784,31 +786,28 @@ pfr_lookup_addr(struct pfr_ktable *kt, struct pfr_addr } static bool -pfr_create_kentry_counter(struct pfr_kcounters *kc, int pfr_dir, int pfr_op) +pfr_create_kentry_counter(struct pfr_kentry *ke, int pfr_dir, int pfr_op) { - kc->pfrkc_packets[pfr_dir][pfr_op] = counter_u64_alloc(M_NOWAIT); - if (! kc->pfrkc_packets[pfr_dir][pfr_op]) - return (false); + counter_u64_t c; - kc->pfrkc_bytes[pfr_dir][pfr_op] = counter_u64_alloc(M_NOWAIT); - if (! kc->pfrkc_bytes[pfr_dir][pfr_op]) { - /* Previous allocation will be freed through - * pfr_destroy_kentry() */ + c = counter_u64_alloc(M_NOWAIT); + if (c == NULL) return (false); - } - - kc->pfrkc_tzero = 0; - + ke->pfrke_counters.pfrkc_packets[pfr_dir][pfr_op] = c; + c = counter_u64_alloc(M_NOWAIT); + if (c == NULL) + return (false); + ke->pfrke_counters.pfrkc_bytes[pfr_dir][pfr_op] = c; return (true); } static struct pfr_kentry * -pfr_create_kentry(struct pfr_addr *ad) +pfr_create_kentry(struct pfr_addr *ad, bool counters) { struct pfr_kentry *ke; int pfr_dir, pfr_op; - ke = uma_zalloc(V_pfr_kentry_z, M_NOWAIT | M_ZERO); + ke = uma_zalloc(V_pfr_kentry_z, M_NOWAIT | M_ZERO); if (ke == NULL) return (NULL); @@ -819,14 +818,16 @@ pfr_create_kentry(struct pfr_addr *ad) ke->pfrke_af = ad->pfra_af; ke->pfrke_net = ad->pfra_net; ke->pfrke_not = ad->pfra_not; - for (pfr_dir = 0; pfr_dir < PFR_DIR_MAX; pfr_dir ++) - for (pfr_op = 0; pfr_op < PFR_OP_ADDR_MAX; pfr_op ++) { - if (! pfr_create_kentry_counter(&ke->pfrke_counters, - pfr_dir, pfr_op)) { - pfr_destroy_kentry(ke); - return (NULL); + ke->pfrke_counters.pfrkc_tzero = 0; + if (counters) + for (pfr_dir = 0; pfr_dir < PFR_DIR_MAX; pfr_dir++) + for (pfr_op = 0; pfr_op < PFR_OP_ADDR_MAX; pfr_op++) { + if (!pfr_create_kentry_counter(ke, pfr_dir, + pfr_op)) { + pfr_destroy_kentry(ke); + return (NULL); + } } - } return (ke); } @@ -844,8 +845,12 @@ pfr_destroy_kentries(struct pfr_kentryworkq *workq) static void pfr_destroy_kentry_counter(struct pfr_kcounters *kc, int pfr_dir, int pfr_op) { - counter_u64_free(kc->pfrkc_packets[pfr_dir][pfr_op]); - counter_u64_free(kc->pfrkc_bytes[pfr_dir][pfr_op]); + counter_u64_t c; + + if ((c = kc->pfrkc_packets[pfr_dir][pfr_op]) != NULL) + counter_u64_free(c); + if ((c = kc->pfrkc_bytes[pfr_dir][pfr_op]) != NULL) + counter_u64_free(c); } static void @@ -890,7 +895,7 @@ pfr_insert_kentry(struct pfr_ktable *kt, struct pfr_ad p = pfr_lookup_addr(kt, ad, 1); if (p != NULL) return (0); - p = pfr_create_kentry(ad); + p = pfr_create_kentry(ad, (kt->pfrkt_flags & PFR_TFLAG_COUNTERS) != 0); if (p == NULL) return (ENOMEM); @@ -930,22 +935,28 @@ pfr_clean_node_mask(struct pfr_ktable *kt, } static void -pfr_clstats_kentries(struct pfr_kentryworkq *workq, long tzero, int negchange) +pfr_clear_kentry_counters(struct pfr_kentry *p, int pfr_dir, int pfr_op) { + counter_u64_zero(p->pfrke_counters.pfrkc_packets[pfr_dir][pfr_op]); + counter_u64_zero(p->pfrke_counters.pfrkc_bytes[pfr_dir][pfr_op]); +} + +static void +pfr_clstats_kentries(struct pfr_ktable *kt, struct pfr_kentryworkq *workq, + long tzero, int negchange) +{ struct pfr_kentry *p; - int pfr_dir, pfr_op; + int pfr_dir, pfr_op; SLIST_FOREACH(p, workq, pfrke_workq) { if (negchange) p->pfrke_not = !p->pfrke_not; - for (pfr_dir = 0; pfr_dir < PFR_DIR_MAX; pfr_dir ++) { - for (pfr_op = 0; pfr_op < PFR_OP_ADDR_MAX; pfr_op ++) { - counter_u64_zero(p->pfrke_counters. - pfrkc_packets[pfr_dir][pfr_op]); - counter_u64_zero(p->pfrke_counters. - pfrkc_bytes[pfr_dir][pfr_op]); - } - } + if ((kt->pfrkt_flags & PFR_TFLAG_COUNTERS) != 0) + for (pfr_dir = 0; pfr_dir < PFR_DIR_MAX; pfr_dir++) + for (pfr_op = 0; pfr_op < PFR_OP_ADDR_MAX; + pfr_op++) + pfr_clear_kentry_counters(p, pfr_dir, + pfr_op); p->pfrke_counters.pfrkc_tzero = tzero; } } @@ -1551,7 +1562,8 @@ _skip: senderr(EINVAL); if (pfr_lookup_addr(shadow, ad, 1) != NULL) continue; - p = pfr_create_kentry(ad); + p = pfr_create_kentry(ad, + (shadow->pfrkt_flags & PFR_TFLAG_COUNTERS) != 0); if (p == NULL) senderr(ENOMEM); if (pfr_route_kentry(shadow, p)) { @@ -1707,7 +1719,7 @@ pfr_commit_ktable(struct pfr_ktable *kt, long tzero) pfr_enqueue_addrs(kt, &delq, NULL, ENQUEUE_UNMARKED_ONLY); pfr_insert_kentries(kt, &addq, tzero); pfr_remove_kentries(kt, &delq); - pfr_clstats_kentries(&changeq, tzero, INVERT_NEG_FLAG); + pfr_clstats_kentries(kt, &changeq, tzero, INVERT_NEG_FLAG); pfr_destroy_kentries(&garbageq); } else { /* kt cannot contain addresses */ @@ -1888,7 +1900,7 @@ pfr_clstats_ktable(struct pfr_ktable *kt, long tzero, if (recurse) { pfr_enqueue_addrs(kt, &addrq, NULL, 0); - pfr_clstats_kentries(&addrq, tzero, 0); + pfr_clstats_kentries(kt, &addrq, tzero, 0); } for (pfr_dir = 0; pfr_dir < PFR_DIR_MAX; pfr_dir ++) { for (pfr_op = 0; pfr_op < PFR_OP_TABLE_MAX; pfr_op ++) { From owner-svn-src-all@freebsd.org Mon May 25 12:46:06 2020 Return-Path: Delivered-To: svn-src-all@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 B26232FEB51; Mon, 25 May 2020 12:46:06 +0000 (UTC) (envelope-from manu@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49VxfQ4Fp8z3TGw; Mon, 25 May 2020 12:46:06 +0000 (UTC) (envelope-from manu@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 731E41235C; Mon, 25 May 2020 12:46:06 +0000 (UTC) (envelope-from manu@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04PCk6Jv041006; Mon, 25 May 2020 12:46:06 GMT (envelope-from manu@FreeBSD.org) Received: (from manu@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04PCk6XR041005; Mon, 25 May 2020 12:46:06 GMT (envelope-from manu@FreeBSD.org) Message-Id: <202005251246.04PCk6XR041005@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: manu set sender to manu@FreeBSD.org using -f From: Emmanuel Vadot Date: Mon, 25 May 2020 12:46:06 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361452 - in head/sys/compat/linuxkpi/common: include/linux src X-SVN-Group: head X-SVN-Commit-Author: manu X-SVN-Commit-Paths: in head/sys/compat/linuxkpi/common: include/linux src X-SVN-Commit-Revision: 361452 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2020 12:46:06 -0000 Author: manu Date: Mon May 25 12:46:05 2020 New Revision: 361452 URL: https://svnweb.freebsd.org/changeset/base/361452 Log: linuxkpi: Fix mod_timer and del_timer_sync mod_timer is supposed to return 1 if the modified timer was pending, which is exactly what callout_reset does so return the value after checking that it's a correct one in case the api change. del_timer_sync returns int so add a function and handle that. Reviewed by: hselasky Differential Revision: https://reviews.freebsd.org/D24983 Modified: head/sys/compat/linuxkpi/common/include/linux/timer.h head/sys/compat/linuxkpi/common/src/linux_compat.c Modified: head/sys/compat/linuxkpi/common/include/linux/timer.h ============================================================================== --- head/sys/compat/linuxkpi/common/include/linux/timer.h Mon May 25 12:45:10 2020 (r361451) +++ head/sys/compat/linuxkpi/common/include/linux/timer.h Mon May 25 12:46:05 2020 (r361452) @@ -78,12 +78,12 @@ extern unsigned long linux_timer_hz_mask; callout_init(&(timer)->callout, 1); \ } while (0) -extern void mod_timer(struct timer_list *, int); +extern int mod_timer(struct timer_list *, int); extern void add_timer(struct timer_list *); extern void add_timer_on(struct timer_list *, int cpu); extern int del_timer(struct timer_list *); +extern int del_timer_sync(struct timer_list *); -#define del_timer_sync(timer) (void)callout_drain(&(timer)->callout) #define timer_pending(timer) callout_pending(&(timer)->callout) #define round_jiffies(j) \ ((int)(((j) + linux_timer_hz_mask) & ~linux_timer_hz_mask)) Modified: head/sys/compat/linuxkpi/common/src/linux_compat.c ============================================================================== --- head/sys/compat/linuxkpi/common/src/linux_compat.c Mon May 25 12:45:10 2020 (r361451) +++ head/sys/compat/linuxkpi/common/src/linux_compat.c Mon May 25 12:46:05 2020 (r361452) @@ -1903,14 +1903,19 @@ linux_timer_callback_wrapper(void *context) timer->function(timer->data); } -void +int mod_timer(struct timer_list *timer, int expires) { + int ret; timer->expires = expires; - callout_reset(&timer->callout, + ret = callout_reset(&timer->callout, linux_timer_jiffies_until(expires), &linux_timer_callback_wrapper, timer); + + MPASS(ret == 0 || ret == 1); + + return (ret == 1); } void @@ -1936,6 +1941,15 @@ del_timer(struct timer_list *timer) { if (callout_stop(&(timer)->callout) == -1) + return (0); + return (1); +} + +int +del_timer_sync(struct timer_list *timer) +{ + + if (callout_drain(&(timer)->callout) == -1) return (0); return (1); } From owner-svn-src-all@freebsd.org Mon May 25 12:48:09 2020 Return-Path: Delivered-To: svn-src-all@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 D904C2FEE40; Mon, 25 May 2020 12:48:09 +0000 (UTC) (envelope-from markj@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49Vxhn5TJJz3TQB; Mon, 25 May 2020 12:48:09 +0000 (UTC) (envelope-from markj@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 B73BD127A4; Mon, 25 May 2020 12:48:09 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04PCm9Ap041133; Mon, 25 May 2020 12:48:09 GMT (envelope-from markj@FreeBSD.org) Received: (from markj@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04PCm93M041132; Mon, 25 May 2020 12:48:09 GMT (envelope-from markj@FreeBSD.org) Message-Id: <202005251248.04PCm93M041132@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: markj set sender to markj@FreeBSD.org using -f From: Mark Johnston Date: Mon, 25 May 2020 12:48:09 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org Subject: svn commit: r361453 - in stable/11: share/man/man5 sys/netpfil/pf X-SVN-Group: stable-11 X-SVN-Commit-Author: markj X-SVN-Commit-Paths: in stable/11: share/man/man5 sys/netpfil/pf X-SVN-Commit-Revision: 361453 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2020 12:48:09 -0000 Author: markj Date: Mon May 25 12:48:09 2020 New Revision: 361453 URL: https://svnweb.freebsd.org/changeset/base/361453 Log: MFC r360903: pf: Don't allocate per-table entry counters unless required. Modified: stable/11/share/man/man5/pf.conf.5 stable/11/sys/netpfil/pf/pf_table.c Directory Properties: stable/11/ (props changed) Modified: stable/11/share/man/man5/pf.conf.5 ============================================================================== --- stable/11/share/man/man5/pf.conf.5 Mon May 25 12:46:05 2020 (r361452) +++ stable/11/share/man/man5/pf.conf.5 Mon May 25 12:48:09 2020 (r361453) @@ -189,6 +189,7 @@ The .Ar counters flag enables per-address packet and byte counters which can be displayed with .Xr pfctl 8 . +Note that this feature carries significant memory overhead for large tables. .El .Pp For example, Modified: stable/11/sys/netpfil/pf/pf_table.c ============================================================================== --- stable/11/sys/netpfil/pf/pf_table.c Mon May 25 12:46:05 2020 (r361452) +++ stable/11/sys/netpfil/pf/pf_table.c Mon May 25 12:48:09 2020 (r361453) @@ -142,9 +142,9 @@ static void pfr_mark_addrs(struct pfr_ktable *); static struct pfr_kentry *pfr_lookup_addr(struct pfr_ktable *, struct pfr_addr *, int); -static bool pfr_create_kentry_counter(struct pfr_kcounters *, - int, int); -static struct pfr_kentry *pfr_create_kentry(struct pfr_addr *); +static bool pfr_create_kentry_counter(struct pfr_kentry *, int, + int); +static struct pfr_kentry *pfr_create_kentry(struct pfr_addr *, bool); static void pfr_destroy_kentries(struct pfr_kentryworkq *); static void pfr_destroy_kentry_counter(struct pfr_kcounters *, int, int); @@ -153,8 +153,8 @@ static void pfr_insert_kentries(struct pfr_ktable *, struct pfr_kentryworkq *, long); static void pfr_remove_kentries(struct pfr_ktable *, struct pfr_kentryworkq *); -static void pfr_clstats_kentries(struct pfr_kentryworkq *, long, - int); +static void pfr_clstats_kentries(struct pfr_ktable *, + struct pfr_kentryworkq *, long, int); static void pfr_reset_feedback(struct pfr_addr *, int); static void pfr_prepare_network(union sockaddr_union *, int, int); static int pfr_route_kentry(struct pfr_ktable *, @@ -278,7 +278,8 @@ pfr_add_addrs(struct pfr_table *tbl, struct pfr_addr * ad->pfra_fback = PFR_FB_NONE; } if (p == NULL && q == NULL) { - p = pfr_create_kentry(ad); + p = pfr_create_kentry(ad, + (kt->pfrkt_flags & PFR_TFLAG_COUNTERS) != 0); if (p == NULL) senderr(ENOMEM); if (pfr_route_kentry(tmpkt, p)) { @@ -444,7 +445,8 @@ pfr_set_addrs(struct pfr_table *tbl, struct pfr_addr * ad.pfra_fback = PFR_FB_DUPLICATE; goto _skip; } - p = pfr_create_kentry(&ad); + p = pfr_create_kentry(&ad, + (kt->pfrkt_flags & PFR_TFLAG_COUNTERS) != 0); if (p == NULL) senderr(ENOMEM); if (pfr_route_kentry(tmpkt, p)) { @@ -478,7 +480,7 @@ _skip: if (!(flags & PFR_FLAG_DUMMY)) { pfr_insert_kentries(kt, &addq, tzero); pfr_remove_kentries(kt, &delq); - pfr_clstats_kentries(&changeq, tzero, INVERT_NEG_FLAG); + pfr_clstats_kentries(kt, &changeq, tzero, INVERT_NEG_FLAG); } else pfr_destroy_kentries(&addq); if (nadd != NULL) @@ -616,7 +618,7 @@ pfr_get_astats(struct pfr_table *tbl, struct pfr_astat pfr_walktree, &w); if (!rv && (flags & PFR_FLAG_CLSTATS)) { pfr_enqueue_addrs(kt, &workq, NULL, 0); - pfr_clstats_kentries(&workq, tzero, 0); + pfr_clstats_kentries(kt, &workq, tzero, 0); } if (rv) return (rv); @@ -664,7 +666,7 @@ pfr_clr_astats(struct pfr_table *tbl, struct pfr_addr } if (!(flags & PFR_FLAG_DUMMY)) - pfr_clstats_kentries(&workq, 0, 0); + pfr_clstats_kentries(kt, &workq, 0, 0); if (nzero != NULL) *nzero = xzero; return (0); @@ -777,31 +779,28 @@ pfr_lookup_addr(struct pfr_ktable *kt, struct pfr_addr } static bool -pfr_create_kentry_counter(struct pfr_kcounters *kc, int pfr_dir, int pfr_op) +pfr_create_kentry_counter(struct pfr_kentry *ke, int pfr_dir, int pfr_op) { - kc->pfrkc_packets[pfr_dir][pfr_op] = counter_u64_alloc(M_NOWAIT); - if (! kc->pfrkc_packets[pfr_dir][pfr_op]) - return (false); + counter_u64_t c; - kc->pfrkc_bytes[pfr_dir][pfr_op] = counter_u64_alloc(M_NOWAIT); - if (! kc->pfrkc_bytes[pfr_dir][pfr_op]) { - /* Previous allocation will be freed through - * pfr_destroy_kentry() */ + c = counter_u64_alloc(M_NOWAIT); + if (c == NULL) return (false); - } - - kc->pfrkc_tzero = 0; - + ke->pfrke_counters.pfrkc_packets[pfr_dir][pfr_op] = c; + c = counter_u64_alloc(M_NOWAIT); + if (c == NULL) + return (false); + ke->pfrke_counters.pfrkc_bytes[pfr_dir][pfr_op] = c; return (true); } static struct pfr_kentry * -pfr_create_kentry(struct pfr_addr *ad) +pfr_create_kentry(struct pfr_addr *ad, bool counters) { struct pfr_kentry *ke; int pfr_dir, pfr_op; - ke = uma_zalloc(V_pfr_kentry_z, M_NOWAIT | M_ZERO); + ke = uma_zalloc(V_pfr_kentry_z, M_NOWAIT | M_ZERO); if (ke == NULL) return (NULL); @@ -812,14 +811,16 @@ pfr_create_kentry(struct pfr_addr *ad) ke->pfrke_af = ad->pfra_af; ke->pfrke_net = ad->pfra_net; ke->pfrke_not = ad->pfra_not; - for (pfr_dir = 0; pfr_dir < PFR_DIR_MAX; pfr_dir ++) - for (pfr_op = 0; pfr_op < PFR_OP_ADDR_MAX; pfr_op ++) { - if (! pfr_create_kentry_counter(&ke->pfrke_counters, - pfr_dir, pfr_op)) { - pfr_destroy_kentry(ke); - return (NULL); + ke->pfrke_counters.pfrkc_tzero = 0; + if (counters) + for (pfr_dir = 0; pfr_dir < PFR_DIR_MAX; pfr_dir++) + for (pfr_op = 0; pfr_op < PFR_OP_ADDR_MAX; pfr_op++) { + if (!pfr_create_kentry_counter(ke, pfr_dir, + pfr_op)) { + pfr_destroy_kentry(ke); + return (NULL); + } } - } return (ke); } @@ -837,8 +838,12 @@ pfr_destroy_kentries(struct pfr_kentryworkq *workq) static void pfr_destroy_kentry_counter(struct pfr_kcounters *kc, int pfr_dir, int pfr_op) { - counter_u64_free(kc->pfrkc_packets[pfr_dir][pfr_op]); - counter_u64_free(kc->pfrkc_bytes[pfr_dir][pfr_op]); + counter_u64_t c; + + if ((c = kc->pfrkc_packets[pfr_dir][pfr_op]) != NULL) + counter_u64_free(c); + if ((c = kc->pfrkc_bytes[pfr_dir][pfr_op]) != NULL) + counter_u64_free(c); } static void @@ -883,7 +888,7 @@ pfr_insert_kentry(struct pfr_ktable *kt, struct pfr_ad p = pfr_lookup_addr(kt, ad, 1); if (p != NULL) return (0); - p = pfr_create_kentry(ad); + p = pfr_create_kentry(ad, (kt->pfrkt_flags & PFR_TFLAG_COUNTERS) != 0); if (p == NULL) return (ENOMEM); @@ -923,22 +928,28 @@ pfr_clean_node_mask(struct pfr_ktable *kt, } static void -pfr_clstats_kentries(struct pfr_kentryworkq *workq, long tzero, int negchange) +pfr_clear_kentry_counters(struct pfr_kentry *p, int pfr_dir, int pfr_op) { + counter_u64_zero(p->pfrke_counters.pfrkc_packets[pfr_dir][pfr_op]); + counter_u64_zero(p->pfrke_counters.pfrkc_bytes[pfr_dir][pfr_op]); +} + +static void +pfr_clstats_kentries(struct pfr_ktable *kt, struct pfr_kentryworkq *workq, + long tzero, int negchange) +{ struct pfr_kentry *p; - int pfr_dir, pfr_op; + int pfr_dir, pfr_op; SLIST_FOREACH(p, workq, pfrke_workq) { if (negchange) p->pfrke_not = !p->pfrke_not; - for (pfr_dir = 0; pfr_dir < PFR_DIR_MAX; pfr_dir ++) { - for (pfr_op = 0; pfr_op < PFR_OP_ADDR_MAX; pfr_op ++) { - counter_u64_zero(p->pfrke_counters. - pfrkc_packets[pfr_dir][pfr_op]); - counter_u64_zero(p->pfrke_counters. - pfrkc_bytes[pfr_dir][pfr_op]); - } - } + if ((kt->pfrkt_flags & PFR_TFLAG_COUNTERS) != 0) + for (pfr_dir = 0; pfr_dir < PFR_DIR_MAX; pfr_dir++) + for (pfr_op = 0; pfr_op < PFR_OP_ADDR_MAX; + pfr_op++) + pfr_clear_kentry_counters(p, pfr_dir, + pfr_op); p->pfrke_counters.pfrkc_tzero = tzero; } } @@ -1544,7 +1555,8 @@ _skip: senderr(EINVAL); if (pfr_lookup_addr(shadow, ad, 1) != NULL) continue; - p = pfr_create_kentry(ad); + p = pfr_create_kentry(ad, + (shadow->pfrkt_flags & PFR_TFLAG_COUNTERS) != 0); if (p == NULL) senderr(ENOMEM); if (pfr_route_kentry(shadow, p)) { @@ -1700,7 +1712,7 @@ pfr_commit_ktable(struct pfr_ktable *kt, long tzero) pfr_enqueue_addrs(kt, &delq, NULL, ENQUEUE_UNMARKED_ONLY); pfr_insert_kentries(kt, &addq, tzero); pfr_remove_kentries(kt, &delq); - pfr_clstats_kentries(&changeq, tzero, INVERT_NEG_FLAG); + pfr_clstats_kentries(kt, &changeq, tzero, INVERT_NEG_FLAG); pfr_destroy_kentries(&garbageq); } else { /* kt cannot contain addresses */ @@ -1881,7 +1893,7 @@ pfr_clstats_ktable(struct pfr_ktable *kt, long tzero, if (recurse) { pfr_enqueue_addrs(kt, &addrq, NULL, 0); - pfr_clstats_kentries(&addrq, tzero, 0); + pfr_clstats_kentries(kt, &addrq, tzero, 0); } for (pfr_dir = 0; pfr_dir < PFR_DIR_MAX; pfr_dir ++) { for (pfr_op = 0; pfr_op < PFR_OP_TABLE_MAX; pfr_op ++) { From owner-svn-src-all@freebsd.org Mon May 25 12:49:58 2020 Return-Path: Delivered-To: svn-src-all@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 D82A42FEDD7; Mon, 25 May 2020 12:49:58 +0000 (UTC) (envelope-from markj@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49Vxkt5Qv1z3Tq8; Mon, 25 May 2020 12:49:58 +0000 (UTC) (envelope-from markj@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 B0F33127A5; Mon, 25 May 2020 12:49:58 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04PCnwJs041253; Mon, 25 May 2020 12:49:58 GMT (envelope-from markj@FreeBSD.org) Received: (from markj@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04PCnwOr041251; Mon, 25 May 2020 12:49:58 GMT (envelope-from markj@FreeBSD.org) Message-Id: <202005251249.04PCnwOr041251@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: markj set sender to markj@FreeBSD.org using -f From: Mark Johnston Date: Mon, 25 May 2020 12:49:58 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org Subject: svn commit: r361454 - stable/12/tests/sys/netpfil/pf X-SVN-Group: stable-12 X-SVN-Commit-Author: markj X-SVN-Commit-Paths: stable/12/tests/sys/netpfil/pf X-SVN-Commit-Revision: 361454 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2020 12:49:58 -0000 Author: markj Date: Mon May 25 12:49:57 2020 New Revision: 361454 URL: https://svnweb.freebsd.org/changeset/base/361454 Log: MFC r360906: Add a basic table entry counter regression test. Added: stable/12/tests/sys/netpfil/pf/table.sh - copied unchanged from r360906, head/tests/sys/netpfil/pf/table.sh Modified: stable/12/tests/sys/netpfil/pf/Makefile Directory Properties: stable/12/ (props changed) Modified: stable/12/tests/sys/netpfil/pf/Makefile ============================================================================== --- stable/12/tests/sys/netpfil/pf/Makefile Mon May 25 12:48:09 2020 (r361453) +++ stable/12/tests/sys/netpfil/pf/Makefile Mon May 25 12:49:57 2020 (r361454) @@ -16,7 +16,9 @@ ATF_TESTS_SH+= anchor \ route_to \ synproxy \ set_skip \ - pfsync + table \ + pfsync \ + icmp ${PACKAGE}FILES+= utils.subr \ echo_inetd.conf \ Copied: stable/12/tests/sys/netpfil/pf/table.sh (from r360906, head/tests/sys/netpfil/pf/table.sh) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/12/tests/sys/netpfil/pf/table.sh Mon May 25 12:49:57 2020 (r361454, copy of r360906, head/tests/sys/netpfil/pf/table.sh) @@ -0,0 +1,115 @@ +# $FreeBSD$ +# +# SPDX-License-Identifier: BSD-2-Clause-FreeBSD +# +# Copyright (c) 2020 Mark Johnston +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. + +. $(atf_get_srcdir)/utils.subr + +TABLE_STATS_ZERO_REGEXP='Packets: 0[[:space:]]*Bytes: 0[[:space:]]' +TABLE_STATS_NONZERO_REGEXP='Packets: [1-9][0-9]*[[:space:]]*Bytes: [1-9][0-9]*[[:space:]]' + +atf_test_case "v4_counters" "cleanup" +v4_counters_head() +{ + atf_set descr 'Verify per-address counters for v4' + atf_set require.user root +} + +v4_counters_body() +{ + pft_init + + epair_send=$(vnet_mkepair) + ifconfig ${epair_send}a 192.0.2.1/24 up + + vnet_mkjail alcatraz ${epair_send}b + jexec alcatraz ifconfig ${epair_send}b 192.0.2.2/24 up + jexec alcatraz pfctl -e + + pft_set_rules alcatraz \ + "table counters { 192.0.2.1 }" \ + "block all" \ + "pass in from to any" \ + "pass out from any to " + + atf_check -s exit:0 -o ignore ping -c 3 192.0.2.2 + + atf_check -s exit:0 -e ignore \ + -o match:'In/Block:.*'"$TABLE_STATS_ZERO_REGEXP" \ + -o match:'In/Pass:.*'"$TABLE_STATS_NONZERO_REGEXP" \ + -o match:'Out/Block:.*'"$TABLE_STATS_ZERO_REGEXP" \ + -o match:'Out/Pass:.*'"$TABLE_STATS_NONZERO_REGEXP" \ + jexec alcatraz pfctl -t foo -T show -vv +} + +v4_counters_cleanup() +{ + pft_cleanup +} + +atf_test_case "v6_counters" "cleanup" +v6_counters_head() +{ + atf_set descr 'Verify per-address counters for v6' + atf_set require.user root +} + +v6_counters_body() +{ + pft_init + + epair_send=$(vnet_mkepair) + ifconfig ${epair_send}a inet6 2001:db8:42::1/64 up no_dad -ifdisabled + + vnet_mkjail alcatraz ${epair_send}b + jexec alcatraz ifconfig ${epair_send}b inet6 2001:db8:42::2/64 up no_dad + jexec alcatraz pfctl -e + + pft_set_rules alcatraz \ + "table counters { 2001:db8:42::1 }" \ + "block all" \ + "pass in from to any" \ + "pass out from any to " + + atf_check -s exit:0 -o ignore ping6 -c 3 2001:db8:42::2 + + atf_check -s exit:0 -e ignore \ + -o match:'In/Block:.*'"$TABLE_STATS_ZERO_REGEXP" \ + -o match:'In/Pass:.*'"$TABLE_STATS_NONZERO_REGEXP" \ + -o match:'Out/Block:.*'"$TABLE_STATS_ZERO_REGEXP" \ + -o match:'Out/Pass:.*'"$TABLE_STATS_NONZERO_REGEXP" \ + jexec alcatraz pfctl -t foo6 -T show -vv +} + +v6_counters_cleanup() +{ + pft_cleanup +} + +atf_init_test_cases() +{ + atf_add_test_case "v4_counters" + atf_add_test_case "v6_counters" +} From owner-svn-src-all@freebsd.org Mon May 25 13:14:40 2020 Return-Path: Delivered-To: svn-src-all@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 9C3AD2FF722; Mon, 25 May 2020 13:14:40 +0000 (UTC) (envelope-from markj@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49VyHN3jC5z3WVt; Mon, 25 May 2020 13:14:40 +0000 (UTC) (envelope-from markj@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 7A3CB12C8E; Mon, 25 May 2020 13:14:40 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04PDEeaD059395; Mon, 25 May 2020 13:14:40 GMT (envelope-from markj@FreeBSD.org) Received: (from markj@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04PDEeDM059394; Mon, 25 May 2020 13:14:40 GMT (envelope-from markj@FreeBSD.org) Message-Id: <202005251314.04PDEeDM059394@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: markj set sender to markj@FreeBSD.org using -f From: Mark Johnston Date: Mon, 25 May 2020 13:14:40 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org Subject: svn commit: r361455 - stable/12/tests/sys/netpfil/pf X-SVN-Group: stable-12 X-SVN-Commit-Author: markj X-SVN-Commit-Paths: stable/12/tests/sys/netpfil/pf X-SVN-Commit-Revision: 361455 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2020 13:14:40 -0000 Author: markj Date: Mon May 25 13:14:40 2020 New Revision: 361455 URL: https://svnweb.freebsd.org/changeset/base/361455 Log: Fix a mismerge in r361454. This is a direct commit to stable/12. Reported by: Jenkins Modified: stable/12/tests/sys/netpfil/pf/Makefile Modified: stable/12/tests/sys/netpfil/pf/Makefile ============================================================================== --- stable/12/tests/sys/netpfil/pf/Makefile Mon May 25 12:49:57 2020 (r361454) +++ stable/12/tests/sys/netpfil/pf/Makefile Mon May 25 13:14:40 2020 (r361455) @@ -16,9 +16,8 @@ ATF_TESTS_SH+= anchor \ route_to \ synproxy \ set_skip \ - table \ - pfsync \ - icmp + pfsync \ + table ${PACKAGE}FILES+= utils.subr \ echo_inetd.conf \ From owner-svn-src-all@freebsd.org Mon May 25 13:16:53 2020 Return-Path: Delivered-To: svn-src-all@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 36B892FF813; Mon, 25 May 2020 13:16:53 +0000 (UTC) (envelope-from cy@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49VyKx0yyvz3Wh1; Mon, 25 May 2020 13:16:53 +0000 (UTC) (envelope-from cy@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 01BBB128CD; Mon, 25 May 2020 13:16:53 +0000 (UTC) (envelope-from cy@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04PDGqtV059552; Mon, 25 May 2020 13:16:52 GMT (envelope-from cy@FreeBSD.org) Received: (from cy@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04PDGb61059541; Mon, 25 May 2020 13:16:37 GMT (envelope-from cy@FreeBSD.org) Message-Id: <202005251316.04PDGb61059541@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: cy set sender to cy@FreeBSD.org using -f From: Cy Schubert Date: Mon, 25 May 2020 13:16:37 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org Subject: svn commit: r361456 - in stable: 11/contrib/sqlite3 11/contrib/sqlite3/tea 11/contrib/sqlite3/tea/generic 11/contrib/sqlite3/tea/win 12/contrib/sqlite3 12/contrib/sqlite3/tea 12/contrib/sqlite3/tea... X-SVN-Group: stable-11 X-SVN-Commit-Author: cy X-SVN-Commit-Paths: in stable: 11/contrib/sqlite3 11/contrib/sqlite3/tea 11/contrib/sqlite3/tea/generic 11/contrib/sqlite3/tea/win 12/contrib/sqlite3 12/contrib/sqlite3/tea 12/contrib/sqlite3/tea/generic 12/contrib/sqlit... X-SVN-Commit-Revision: 361456 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2020 13:16:53 -0000 Author: cy Date: Mon May 25 13:16:35 2020 New Revision: 361456 URL: https://svnweb.freebsd.org/changeset/base/361456 Log: MFC r360221-r360223 r360221: In preparation for update to sqlite3-3.31.1 (3310100), recommit r357201: MFV r357163, which was reverted by r357522 due to segfault under PowerPc. Update sqlite3-3.30.1 (3300100) --> sqlite3-3.31.0 (3310000) r360222: MFV r360158: Update sqlite3-3.31.0 (3310000) --> sqlite3-3.31.1 (3310100) Tested by: Mark Millard With to be committed PowerPC patch r360223: Fix PowerPC segfault. The segfault fix was originally developed by our upstream, sqlite.org, to address S/390 and Sparc segfaults, both of which are big endian. Our PowerPC is also big endian, which this patch also fixes. Reported by: Mark Millard Tested by: Mark Millard Obtained from: https://www.sqlite.org/src/vinfo/04885763c4cd00cb?diff=1 https://sqlite.org/forum/forumpost/672291a5b2 Modified: stable/11/contrib/sqlite3/Makefile.msc stable/11/contrib/sqlite3/configure stable/11/contrib/sqlite3/configure.ac stable/11/contrib/sqlite3/shell.c stable/11/contrib/sqlite3/sqlite3.c stable/11/contrib/sqlite3/sqlite3.h stable/11/contrib/sqlite3/sqlite3ext.h stable/11/contrib/sqlite3/tea/configure stable/11/contrib/sqlite3/tea/configure.ac stable/11/contrib/sqlite3/tea/generic/tclsqlite3.c stable/11/contrib/sqlite3/tea/win/makefile.vc Directory Properties: stable/11/ (props changed) Changes in other areas also in this revision: Modified: stable/12/contrib/sqlite3/Makefile.msc stable/12/contrib/sqlite3/configure stable/12/contrib/sqlite3/configure.ac stable/12/contrib/sqlite3/shell.c stable/12/contrib/sqlite3/sqlite3.c stable/12/contrib/sqlite3/sqlite3.h stable/12/contrib/sqlite3/sqlite3ext.h stable/12/contrib/sqlite3/tea/configure stable/12/contrib/sqlite3/tea/configure.ac stable/12/contrib/sqlite3/tea/generic/tclsqlite3.c stable/12/contrib/sqlite3/tea/win/makefile.vc Directory Properties: stable/12/ (props changed) Modified: stable/11/contrib/sqlite3/Makefile.msc ============================================================================== --- stable/11/contrib/sqlite3/Makefile.msc Mon May 25 13:14:40 2020 (r361455) +++ stable/11/contrib/sqlite3/Makefile.msc Mon May 25 13:16:35 2020 (r361456) @@ -210,6 +210,12 @@ OPTIMIZATIONS = 2 SESSION = 0 !ENDIF +# Set this to non-0 to enable support for the rbu extension. +# +!IFNDEF RBU +RBU = 0 +!ENDIF + # Set the source code file to be used by executables and libraries when # they need the amalgamation. # @@ -282,7 +288,6 @@ OPT_FEATURE_FLAGS = $(OPT_FEATURE_FLAGS) -DSQLITE_ENAB OPT_FEATURE_FLAGS = $(OPT_FEATURE_FLAGS) -DSQLITE_ENABLE_STMTVTAB=1 OPT_FEATURE_FLAGS = $(OPT_FEATURE_FLAGS) -DSQLITE_ENABLE_DBPAGE_VTAB=1 OPT_FEATURE_FLAGS = $(OPT_FEATURE_FLAGS) -DSQLITE_ENABLE_DBSTAT_VTAB=1 -OPT_FEATURE_FLAGS = $(OPT_FEATURE_FLAGS) -DSQLITE_INTROSPECTION_PRAGMAS=1 OPT_FEATURE_FLAGS = $(OPT_FEATURE_FLAGS) -DSQLITE_ENABLE_DESERIALIZE=1 !ENDIF OPT_FEATURE_FLAGS = $(OPT_FEATURE_FLAGS) -DSQLITE_ENABLE_COLUMN_METADATA=1 @@ -296,6 +301,13 @@ OPT_FEATURE_FLAGS = $(OPT_FEATURE_FLAGS) -DSQLITE_ENAB OPT_FEATURE_FLAGS = $(OPT_FEATURE_FLAGS) -DSQLITE_ENABLE_PREUPDATE_HOOK=1 !ENDIF +# Should the rbu extension be enabled? If so, add compilation options +# to enable it. +# +!IF $(RBU)!=0 +OPT_FEATURE_FLAGS = $(OPT_FEATURE_FLAGS) -DSQLITE_ENABLE_RBU=1 +!ENDIF + # These are the "extended" SQLite compilation options used when compiling for # the Windows 10 platform. # @@ -978,7 +990,7 @@ Replace.exe: sqlite3.def: Replace.exe $(LIBOBJ) echo EXPORTS > sqlite3.def dumpbin /all $(LIBOBJ) \ - | .\Replace.exe "^\s+/EXPORT:_?(sqlite3(?:session|changeset|changegroup|rebaser)?_[^@,]*)(?:@\d+|,DATA)?$$" $$1 true \ + | .\Replace.exe "^\s+/EXPORT:_?(sqlite3(?:session|changeset|changegroup|rebaser|rbu)?_[^@,]*)(?:@\d+|,DATA)?$$" $$1 true \ | sort >> sqlite3.def $(SQLITE3EXE): shell.c $(SHELL_CORE_DEP) $(LIBRESOBJS) $(SHELL_CORE_SRC) $(SQLITE3H) Modified: stable/11/contrib/sqlite3/configure ============================================================================== --- stable/11/contrib/sqlite3/configure Mon May 25 13:14:40 2020 (r361455) +++ stable/11/contrib/sqlite3/configure Mon May 25 13:16:35 2020 (r361456) @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for sqlite 3.30.1. +# Generated by GNU Autoconf 2.69 for sqlite 3.31.1. # # Report bugs to . # @@ -590,8 +590,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='sqlite' PACKAGE_TARNAME='sqlite' -PACKAGE_VERSION='3.30.1' -PACKAGE_STRING='sqlite 3.30.1' +PACKAGE_VERSION='3.31.1' +PACKAGE_STRING='sqlite 3.31.1' PACKAGE_BUGREPORT='http://www.sqlite.org' PACKAGE_URL='' @@ -1341,7 +1341,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures sqlite 3.30.1 to adapt to many kinds of systems. +\`configure' configures sqlite 3.31.1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1412,7 +1412,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of sqlite 3.30.1:";; + short | recursive ) echo "Configuration of sqlite 3.31.1:";; esac cat <<\_ACEOF @@ -1537,7 +1537,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -sqlite configure 3.30.1 +sqlite configure 3.31.1 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -1952,7 +1952,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by sqlite $as_me 3.30.1, which was +It was created by sqlite $as_me 3.31.1, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2818,7 +2818,7 @@ fi # Define the identity of the package. PACKAGE='sqlite' - VERSION='3.30.1' + VERSION='3.31.1' cat >>confdefs.h <<_ACEOF @@ -13653,7 +13653,7 @@ else fi if test x"$enable_rtree" = "xyes"; then - BUILD_CFLAGS="$BUILD_CFLAGS -DSQLITE_ENABLE_RTREE" + BUILD_CFLAGS="$BUILD_CFLAGS -DSQLITE_ENABLE_RTREE -DSQLITE_ENABLE_GEOPOLY" fi #----------------------------------------------------------------------- @@ -14438,7 +14438,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by sqlite $as_me 3.30.1, which was +This file was extended by sqlite $as_me 3.31.1, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -14495,7 +14495,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -sqlite config.status 3.30.1 +sqlite config.status 3.31.1 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Modified: stable/11/contrib/sqlite3/configure.ac ============================================================================== --- stable/11/contrib/sqlite3/configure.ac Mon May 25 13:14:40 2020 (r361455) +++ stable/11/contrib/sqlite3/configure.ac Mon May 25 13:16:35 2020 (r361456) @@ -10,7 +10,7 @@ # AC_PREREQ(2.61) -AC_INIT(sqlite, 3.30.1, http://www.sqlite.org) +AC_INIT(sqlite, 3.31.1, http://www.sqlite.org) AC_CONFIG_SRCDIR([sqlite3.c]) AC_CONFIG_AUX_DIR([.]) @@ -161,7 +161,7 @@ AC_ARG_ENABLE(rtree, [AS_HELP_STRING( [--enable-rtree], [include rtree support [default=yes]])], [], [enable_rtree=yes]) if test x"$enable_rtree" = "xyes"; then - BUILD_CFLAGS="$BUILD_CFLAGS -DSQLITE_ENABLE_RTREE" + BUILD_CFLAGS="$BUILD_CFLAGS -DSQLITE_ENABLE_RTREE -DSQLITE_ENABLE_GEOPOLY" fi #----------------------------------------------------------------------- Modified: stable/11/contrib/sqlite3/shell.c ============================================================================== --- stable/11/contrib/sqlite3/shell.c Mon May 25 13:14:40 2020 (r361455) +++ stable/11/contrib/sqlite3/shell.c Mon May 25 13:16:35 2020 (r361456) @@ -2007,19 +2007,23 @@ int sqlite3_shathree_init( int rc = SQLITE_OK; SQLITE_EXTENSION_INIT2(pApi); (void)pzErrMsg; /* Unused parameter */ - rc = sqlite3_create_function(db, "sha3", 1, SQLITE_UTF8, 0, - sha3Func, 0, 0); + rc = sqlite3_create_function(db, "sha3", 1, + SQLITE_UTF8 | SQLITE_INNOCUOUS | SQLITE_DETERMINISTIC, + 0, sha3Func, 0, 0); if( rc==SQLITE_OK ){ - rc = sqlite3_create_function(db, "sha3", 2, SQLITE_UTF8, 0, - sha3Func, 0, 0); + rc = sqlite3_create_function(db, "sha3", 2, + SQLITE_UTF8 | SQLITE_INNOCUOUS | SQLITE_DETERMINISTIC, + 0, sha3Func, 0, 0); } if( rc==SQLITE_OK ){ - rc = sqlite3_create_function(db, "sha3_query", 1, SQLITE_UTF8, 0, - sha3QueryFunc, 0, 0); + rc = sqlite3_create_function(db, "sha3_query", 1, + SQLITE_UTF8 | SQLITE_DIRECTONLY, + 0, sha3QueryFunc, 0, 0); } if( rc==SQLITE_OK ){ - rc = sqlite3_create_function(db, "sha3_query", 2, SQLITE_UTF8, 0, - sha3QueryFunc, 0, 0); + rc = sqlite3_create_function(db, "sha3_query", 2, + SQLITE_UTF8 | SQLITE_DIRECTONLY, + 0, sha3QueryFunc, 0, 0); } return rc; } @@ -2613,6 +2617,7 @@ static int fsdirConnect( pNew = (fsdir_tab*)sqlite3_malloc( sizeof(*pNew) ); if( pNew==0 ) return SQLITE_NOMEM; memset(pNew, 0, sizeof(*pNew)); + sqlite3_vtab_config(db, SQLITE_VTAB_DIRECTONLY); } *ppVtab = (sqlite3_vtab*)pNew; return rc; @@ -3006,10 +3011,12 @@ int sqlite3_fileio_init( int rc = SQLITE_OK; SQLITE_EXTENSION_INIT2(pApi); (void)pzErrMsg; /* Unused parameter */ - rc = sqlite3_create_function(db, "readfile", 1, SQLITE_UTF8, 0, + rc = sqlite3_create_function(db, "readfile", 1, + SQLITE_UTF8|SQLITE_DIRECTONLY, 0, readfileFunc, 0, 0); if( rc==SQLITE_OK ){ - rc = sqlite3_create_function(db, "writefile", -1, SQLITE_UTF8, 0, + rc = sqlite3_create_function(db, "writefile", -1, + SQLITE_UTF8|SQLITE_DIRECTONLY, 0, writefileFunc, 0, 0); } if( rc==SQLITE_OK ){ @@ -3144,6 +3151,7 @@ static int completionConnect( #define COMPLETION_COLUMN_WHOLELINE 2 /* Entire line seen so far */ #define COMPLETION_COLUMN_PHASE 3 /* ePhase - used for debugging only */ + sqlite3_vtab_config(db, SQLITE_VTAB_INNOCUOUS); rc = sqlite3_declare_vtab(db, "CREATE TABLE x(" " candidate TEXT," @@ -4578,6 +4586,7 @@ static int zipfileConnect( zipfileDequote(pNew->zFile); } } + sqlite3_vtab_config(db, SQLITE_VTAB_DIRECTONLY); *ppVtab = (sqlite3_vtab*)pNew; return rc; } @@ -5190,25 +5199,25 @@ static int zipfileDeflate( u8 **ppOut, int *pnOut, /* Output */ char **pzErr /* OUT: Error message */ ){ - sqlite3_int64 nAlloc = compressBound(nIn); - u8 *aOut; int rc = SQLITE_OK; + sqlite3_int64 nAlloc; + z_stream str; + u8 *aOut; + memset(&str, 0, sizeof(str)); + str.next_in = (Bytef*)aIn; + str.avail_in = nIn; + deflateInit2(&str, 9, Z_DEFLATED, -15, 8, Z_DEFAULT_STRATEGY); + + nAlloc = deflateBound(&str, nIn); aOut = (u8*)sqlite3_malloc64(nAlloc); if( aOut==0 ){ rc = SQLITE_NOMEM; }else{ int res; - z_stream str; - memset(&str, 0, sizeof(str)); - str.next_in = (Bytef*)aIn; - str.avail_in = nIn; str.next_out = aOut; str.avail_out = nAlloc; - - deflateInit2(&str, 9, Z_DEFLATED, -15, 8, Z_DEFAULT_STRATEGY); res = deflate(&str, Z_FINISH); - if( res==Z_STREAM_END ){ *ppOut = aOut; *pnOut = (int)str.total_out; @@ -5517,10 +5526,10 @@ static int zipfileBestIndex( idx = i; } } + pIdxInfo->estimatedCost = 1000.0; if( idx>=0 ){ pIdxInfo->aConstraintUsage[idx].argvIndex = 1; pIdxInfo->aConstraintUsage[idx].omit = 1; - pIdxInfo->estimatedCost = 1000.0; pIdxInfo->idxNum = 1; }else if( unusable ){ return SQLITE_CONSTRAINT; @@ -5642,8 +5651,8 @@ static int zipfileGetMode( ** identical, ignoring any trailing '/' character in either path. */ static int zipfileComparePath(const char *zA, const char *zB, int nB){ int nA = (int)strlen(zA); - if( zA[nA-1]=='/' ) nA--; - if( zB[nB-1]=='/' ) nB--; + if( nA>0 && zA[nA-1]=='/' ) nA--; + if( nB>0 && zB[nB-1]=='/' ) nB--; if( nA==nB && memcmp(zA, zB, nA)==0 ) return 0; return 1; } @@ -5653,6 +5662,10 @@ static int zipfileBegin(sqlite3_vtab *pVtab){ int rc = SQLITE_OK; assert( pTab->pWriteFd==0 ); + if( pTab->zFile==0 || pTab->zFile[0]==0 ){ + pTab->base.zErrMsg = sqlite3_mprintf("zipfile: missing filename"); + return SQLITE_ERROR; + } /* Open a write fd on the file. Also load the entire central directory ** structure into memory. During the transaction any new file data is @@ -5827,6 +5840,7 @@ static int zipfileUpdate( if( rc==SQLITE_OK ){ zPath = (const char*)sqlite3_value_text(apVal[2]); + if( zPath==0 ) zPath = ""; nPath = (int)strlen(zPath); mTime = zipfileGetTime(apVal[4]); } @@ -5836,11 +5850,15 @@ static int zipfileUpdate( ** '/'. This appears to be required for compatibility with info-zip ** (the unzip command on unix). It does not create directories ** otherwise. */ - if( zPath[nPath-1]!='/' ){ + if( nPath<=0 || zPath[nPath-1]!='/' ){ zFree = sqlite3_mprintf("%s/", zPath); - if( zFree==0 ){ rc = SQLITE_NOMEM; } zPath = (const char*)zFree; - nPath++; + if( zFree==0 ){ + rc = SQLITE_NOMEM; + nPath = 0; + }else{ + nPath = (int)strlen(zPath); + } } } @@ -6233,19 +6251,19 @@ void zipfileStep(sqlite3_context *pCtx, int nVal, sqli ** at the end of the path. Or, if this is not a directory and the path ** ends in '/' it is an error. */ if( bIsDir==0 ){ - if( zName[nName-1]=='/' ){ + if( nName>0 && zName[nName-1]=='/' ){ zErr = sqlite3_mprintf("non-directory name must not end with /"); rc = SQLITE_ERROR; goto zipfile_step_out; } }else{ - if( zName[nName-1]!='/' ){ + if( nName==0 || zName[nName-1]!='/' ){ zName = zFree = sqlite3_mprintf("%s/", zName); - nName++; if( zName==0 ){ rc = SQLITE_NOMEM; goto zipfile_step_out; } + nName = (int)strlen(zName); }else{ while( nName>1 && zName[nName-2]=='/' ) nName--; } @@ -6501,10 +6519,12 @@ int sqlite3_sqlar_init( int rc = SQLITE_OK; SQLITE_EXTENSION_INIT2(pApi); (void)pzErrMsg; /* Unused parameter */ - rc = sqlite3_create_function(db, "sqlar_compress", 1, SQLITE_UTF8, 0, + rc = sqlite3_create_function(db, "sqlar_compress", 1, + SQLITE_UTF8|SQLITE_INNOCUOUS, 0, sqlarCompressFunc, 0, 0); if( rc==SQLITE_OK ){ - rc = sqlite3_create_function(db, "sqlar_uncompress", 2, SQLITE_UTF8, 0, + rc = sqlite3_create_function(db, "sqlar_uncompress", 2, + SQLITE_UTF8|SQLITE_INNOCUOUS, 0, sqlarUncompressFunc, 0, 0); } return rc; @@ -6525,8 +6545,8 @@ int sqlite3_sqlar_init( ** ************************************************************************* */ - - +#if !defined(SQLITEEXPERT_H) +#define SQLITEEXPERT_H 1 /* #include "sqlite3.h" */ typedef struct sqlite3expert sqlite3expert; @@ -6680,8 +6700,8 @@ const char *sqlite3_expert_report(sqlite3expert*, int */ void sqlite3_expert_destroy(sqlite3expert*); +#endif /* !defined(SQLITEEXPERT_H) */ - /************************* End ../ext/expert/sqlite3expert.h ********************/ /************************* Begin ../ext/expert/sqlite3expert.c ******************/ /* @@ -9566,6 +9586,7 @@ struct ShellState { int outCount; /* Revert to stdout when reaching zero */ int cnt; /* Number of records displayed so far */ int lineno; /* Line number of last line read from in */ + int openFlags; /* Additional flags to open. (SQLITE_OPEN_NOFOLLOW) */ FILE *in; /* Read commands from this stream */ FILE *out; /* Write results here */ FILE *traceOut; /* Output for sqlite3_trace() */ @@ -10400,19 +10421,22 @@ static int shell_callback( const int *colWidth; int showHdr; char *rowSep; + int nWidth; if( p->cMode==MODE_Column ){ colWidth = p->colWidth; + nWidth = ArraySize(p->colWidth); showHdr = p->showHeader; rowSep = p->rowSeparator; }else{ colWidth = aExplainWidths; + nWidth = ArraySize(aExplainWidths); showHdr = 1; rowSep = SEP_Row; } if( p->cnt++==0 ){ for(i=0; icolWidth) ){ + if( idb, SQLITE_DBCONFIG_DEFENSIVE, -1, &defensiveMode); + sqlite3_db_config(p->db, SQLITE_DBCONFIG_DEFENSIVE, 0, 0); sqlite3_db_config(p->db, SQLITE_DBCONFIG_WRITABLE_SCHEMA, -1, &wrSchema); sqlite3_db_config(p->db, SQLITE_DBCONFIG_WRITABLE_SCHEMA, 1, 0); sqlite3_exec(p->db, @@ -11311,6 +11338,7 @@ static void bind_table_init(ShellState *p){ ") WITHOUT ROWID;", 0, 0, 0); sqlite3_db_config(p->db, SQLITE_DBCONFIG_WRITABLE_SCHEMA, wrSchema, 0); + sqlite3_db_config(p->db, SQLITE_DBCONFIG_DEFENSIVE, defensiveMode, 0); } /* @@ -12053,9 +12081,7 @@ static const char *(azHelp[]) = { ".excel Display the output of next command in spreadsheet", ".exit ?CODE? Exit this program with return-code CODE", ".expert EXPERIMENTAL. Suggest indexes for queries", -/* Because explain mode comes on automatically now, the ".explain" mode -** is removed from the help screen. It is still supported for legacy, however */ -/*".explain ?on|off|auto? Turn EXPLAIN output mode on or off",*/ + ".explain ?on|off|auto? Change the EXPLAIN formatting mode. Default: auto", ".filectrl CMD ... Run various sqlite3_file_control() operations", " Run \".filectrl\" with no arguments for details", ".fullschema ?--indent? Show schema and the content of sqlite_stat tables", @@ -12106,6 +12132,7 @@ static const char *(azHelp[]) = { " --maxsize N Maximum size for --hexdb or --deserialized database", #endif " --new Initialize FILE to an empty database", + " --nofollow Do not follow symbolic links", " --readonly Open FILE readonly", " --zip FILE is a ZIP archive", ".output ?FILE? Send output to FILE or stdout if FILE is omitted", @@ -12670,7 +12697,7 @@ static void open_db(ShellState *p, int openFlags){ switch( p->openMode ){ case SHELL_OPEN_APPENDVFS: { sqlite3_open_v2(p->zDbFilename, &p->db, - SQLITE_OPEN_READWRITE|SQLITE_OPEN_CREATE, "apndvfs"); + SQLITE_OPEN_READWRITE|SQLITE_OPEN_CREATE|p->openFlags, "apndvfs"); break; } case SHELL_OPEN_HEXDB: @@ -12683,12 +12710,14 @@ static void open_db(ShellState *p, int openFlags){ break; } case SHELL_OPEN_READONLY: { - sqlite3_open_v2(p->zDbFilename, &p->db, SQLITE_OPEN_READONLY, 0); + sqlite3_open_v2(p->zDbFilename, &p->db, + SQLITE_OPEN_READONLY|p->openFlags, 0); break; } case SHELL_OPEN_UNSPEC: case SHELL_OPEN_NORMAL: { - sqlite3_open(p->zDbFilename, &p->db); + sqlite3_open_v2(p->zDbFilename, &p->db, + SQLITE_OPEN_READWRITE|SQLITE_OPEN_CREATE|p->openFlags, 0); break; } } @@ -13462,7 +13491,7 @@ static unsigned int get4byteInt(unsigned char *a){ } /* -** Implementation of the ".info" command. +** Implementation of the ".dbinfo" command. ** ** Return 1 on error, 2 to exit, and 0 otherwise. */ @@ -15699,20 +15728,22 @@ static int do_meta_command(char *zLine, ShellState *p) const char *zName; int op; } aDbConfig[] = { + { "defensive", SQLITE_DBCONFIG_DEFENSIVE }, + { "dqs_ddl", SQLITE_DBCONFIG_DQS_DDL }, + { "dqs_dml", SQLITE_DBCONFIG_DQS_DML }, { "enable_fkey", SQLITE_DBCONFIG_ENABLE_FKEY }, + { "enable_qpsg", SQLITE_DBCONFIG_ENABLE_QPSG }, { "enable_trigger", SQLITE_DBCONFIG_ENABLE_TRIGGER }, { "enable_view", SQLITE_DBCONFIG_ENABLE_VIEW }, { "fts3_tokenizer", SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER }, + { "legacy_alter_table", SQLITE_DBCONFIG_LEGACY_ALTER_TABLE }, + { "legacy_file_format", SQLITE_DBCONFIG_LEGACY_FILE_FORMAT }, { "load_extension", SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION }, { "no_ckpt_on_close", SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE }, - { "enable_qpsg", SQLITE_DBCONFIG_ENABLE_QPSG }, - { "trigger_eqp", SQLITE_DBCONFIG_TRIGGER_EQP }, { "reset_database", SQLITE_DBCONFIG_RESET_DATABASE }, - { "defensive", SQLITE_DBCONFIG_DEFENSIVE }, + { "trigger_eqp", SQLITE_DBCONFIG_TRIGGER_EQP }, + { "trusted_schema", SQLITE_DBCONFIG_TRUSTED_SCHEMA }, { "writable_schema", SQLITE_DBCONFIG_WRITABLE_SCHEMA }, - { "legacy_alter_table", SQLITE_DBCONFIG_LEGACY_ALTER_TABLE }, - { "dqs_dml", SQLITE_DBCONFIG_DQS_DML }, - { "dqs_ddl", SQLITE_DBCONFIG_DQS_DDL }, }; int ii, v; open_db(p, 0); @@ -15722,7 +15753,7 @@ static int do_meta_command(char *zLine, ShellState *p) sqlite3_db_config(p->db, aDbConfig[ii].op, booleanValue(azArg[2]), 0); } sqlite3_db_config(p->db, aDbConfig[ii].op, -1, &v); - utf8_printf(p->out, "%18s %s\n", aDbConfig[ii].zName, v ? "on" : "off"); + utf8_printf(p->out, "%19s %s\n", aDbConfig[ii].zName, v ? "on" : "off"); if( nArg>1 ) break; } if( nArg>1 && ii==ArraySize(aDbConfig) ){ @@ -16303,10 +16334,19 @@ static int do_meta_command(char *zLine, ShellState *p) char *zCollist = 0; sqlite3_stmt *pStmt; int tnum = 0; + int isWO = 0; /* True if making an imposter of a WITHOUT ROWID table */ + int lenPK = 0; /* Length of the PRIMARY KEY string for isWO tables */ int i; if( !(nArg==3 || (nArg==2 && sqlite3_stricmp(azArg[1],"off")==0)) ){ utf8_printf(stderr, "Usage: .imposter INDEX IMPOSTER\n" " .imposter off\n"); + /* Also allowed, but not documented: + ** + ** .imposter TABLE IMPOSTER + ** + ** where TABLE is a WITHOUT ROWID table. In that case, the + ** imposter is another WITHOUT ROWID table with the columns in + ** storage order. */ rc = 1; goto meta_command_exit; } @@ -16315,19 +16355,22 @@ static int do_meta_command(char *zLine, ShellState *p) sqlite3_test_control(SQLITE_TESTCTRL_IMPOSTER, p->db, "main", 0, 1); goto meta_command_exit; } - zSql = sqlite3_mprintf("SELECT rootpage FROM sqlite_master" - " WHERE name='%q' AND type='index'", azArg[1]); + zSql = sqlite3_mprintf( + "SELECT rootpage, 0 FROM sqlite_master" + " WHERE name='%q' AND type='index'" + "UNION ALL " + "SELECT rootpage, 1 FROM sqlite_master" + " WHERE name='%q' AND type='table'" + " AND sql LIKE '%%without%%rowid%%'", + azArg[1], azArg[1] + ); sqlite3_prepare_v2(p->db, zSql, -1, &pStmt, 0); sqlite3_free(zSql); if( sqlite3_step(pStmt)==SQLITE_ROW ){ tnum = sqlite3_column_int(pStmt, 0); + isWO = sqlite3_column_int(pStmt, 1); } sqlite3_finalize(pStmt); - if( tnum==0 ){ - utf8_printf(stderr, "no such index: \"%s\"\n", azArg[1]); - rc = 1; - goto meta_command_exit; - } zSql = sqlite3_mprintf("PRAGMA index_xinfo='%q'", azArg[1]); rc = sqlite3_prepare_v2(p->db, zSql, -1, &pStmt, 0); sqlite3_free(zSql); @@ -16344,6 +16387,9 @@ static int do_meta_command(char *zLine, ShellState *p) zCol = zLabel; } } + if( isWO && lenPK==0 && sqlite3_column_int(pStmt,5)==0 && zCollist ){ + lenPK = (int)strlen(zCollist); + } if( zCollist==0 ){ zCollist = sqlite3_mprintf("\"%w\"", zCol); }else{ @@ -16351,9 +16397,16 @@ static int do_meta_command(char *zLine, ShellState *p) } } sqlite3_finalize(pStmt); + if( i==0 || tnum==0 ){ + utf8_printf(stderr, "no such index: \"%s\"\n", azArg[1]); + rc = 1; + sqlite3_free(zCollist); + goto meta_command_exit; + } + if( lenPK==0 ) lenPK = 100000; zSql = sqlite3_mprintf( - "CREATE TABLE \"%w\"(%s,PRIMARY KEY(%s))WITHOUT ROWID", - azArg[2], zCollist, zCollist); + "CREATE TABLE \"%w\"(%s,PRIMARY KEY(%.*s))WITHOUT ROWID", + azArg[2], zCollist, lenPK, zCollist); sqlite3_free(zCollist); rc = sqlite3_test_control(SQLITE_TESTCTRL_IMPOSTER, p->db, "main", 1, tnum); if( rc==SQLITE_OK ){ @@ -16364,7 +16417,8 @@ static int do_meta_command(char *zLine, ShellState *p) }else{ utf8_printf(stdout, "%s;\n", zSql); raw_printf(stdout, - "WARNING: writing to an imposter table will corrupt the index!\n" + "WARNING: writing to an imposter table will corrupt the \"%s\" %s!\n", + azArg[1], isWO ? "table" : "index" ); } }else{ @@ -16562,6 +16616,7 @@ static int do_meta_command(char *zLine, ShellState *p) sqlite3_free(p->zFreeOnClose); p->zFreeOnClose = 0; p->openMode = SHELL_OPEN_UNSPEC; + p->openFlags = 0; p->szMax = 0; /* Check for command-line arguments */ for(iName=1; iNameopenMode = SHELL_OPEN_APPENDVFS; }else if( optionMatch(z, "readonly") ){ p->openMode = SHELL_OPEN_READONLY; + }else if( optionMatch(z, "nofollow") ){ + p->openFlags |= SQLITE_OPEN_NOFOLLOW; #ifdef SQLITE_ENABLE_DESERIALIZE }else if( optionMatch(z, "deserialize") ){ p->openMode = SHELL_OPEN_DESERIALIZE; @@ -17732,7 +17789,7 @@ static int do_meta_command(char *zLine, ShellState *p) { "extra_schema_checks",SQLITE_TESTCTRL_EXTRA_SCHEMA_CHECKS,"BOOLEAN" }, /*{ "fault_install", SQLITE_TESTCTRL_FAULT_INSTALL, "" },*/ { "imposter", SQLITE_TESTCTRL_IMPOSTER, "SCHEMA ON/OFF ROOTPAGE"}, - { "internal_functions", SQLITE_TESTCTRL_INTERNAL_FUNCTIONS, "BOOLEAN" }, + { "internal_functions", SQLITE_TESTCTRL_INTERNAL_FUNCTIONS, "" }, { "localtime_fault", SQLITE_TESTCTRL_LOCALTIME_FAULT,"BOOLEAN" }, { "never_corrupt", SQLITE_TESTCTRL_NEVER_CORRUPT, "BOOLEAN" }, { "optimizations", SQLITE_TESTCTRL_OPTIMIZATIONS, "DISABLE-MASK" }, @@ -17848,7 +17905,6 @@ static int do_meta_command(char *zLine, ShellState *p) /* sqlite3_test_control(int, int) */ case SQLITE_TESTCTRL_ASSERT: case SQLITE_TESTCTRL_ALWAYS: - case SQLITE_TESTCTRL_INTERNAL_FUNCTIONS: if( nArg==3 ){ int opt = booleanValue(azArg[2]); rc2 = sqlite3_test_control(testctrl, opt); @@ -17866,6 +17922,12 @@ static int do_meta_command(char *zLine, ShellState *p) } break; + /* sqlite3_test_control(sqlite3*) */ + case SQLITE_TESTCTRL_INTERNAL_FUNCTIONS: + rc2 = sqlite3_test_control(testctrl, p->db); + isOk = 3; + break; + case SQLITE_TESTCTRL_IMPOSTER: if( nArg==5 ){ rc2 = sqlite3_test_control(testctrl, p->db, @@ -18496,6 +18558,7 @@ static const char zOptions[] = " -multiplex enable the multiplexor VFS\n" #endif " -newline SEP set output row separator. Default: '\\n'\n" + " -nofollow refuse to open symbolic links to database files\n" " -nullvalue TEXT set text string for NULL values. Default ''\n" " -pagecache SIZE N use N slots of SZ bytes each for page cache memory\n" " -quote set output mode to 'quote'\n" @@ -18806,6 +18869,8 @@ int SQLITE_CDECL wmain(int argc, wchar_t **wargv){ #endif }else if( strcmp(z,"-readonly")==0 ){ data.openMode = SHELL_OPEN_READONLY; + }else if( strcmp(z,"-nofollow")==0 ){ + data.openFlags = SQLITE_OPEN_NOFOLLOW; #if !defined(SQLITE_OMIT_VIRTUALTABLE) && defined(SQLITE_HAVE_ZLIB) }else if( strncmp(z, "-A",2)==0 ){ /* All remaining command-line arguments are passed to the ".archive" @@ -18909,6 +18974,8 @@ int SQLITE_CDECL wmain(int argc, wchar_t **wargv){ #endif }else if( strcmp(z,"-readonly")==0 ){ data.openMode = SHELL_OPEN_READONLY; + }else if( strcmp(z,"-nofollow")==0 ){ + data.openFlags |= SQLITE_OPEN_NOFOLLOW; }else if( strcmp(z,"-ascii")==0 ){ data.mode = MODE_Ascii; sqlite3_snprintf(sizeof(data.colSeparator), data.colSeparator, Modified: stable/11/contrib/sqlite3/sqlite3.c ============================================================================== --- stable/11/contrib/sqlite3/sqlite3.c Mon May 25 13:14:40 2020 (r361455) +++ stable/11/contrib/sqlite3/sqlite3.c Mon May 25 13:16:35 2020 (r361456) @@ -1,6 +1,6 @@ /****************************************************************************** ** This file is an amalgamation of many separate C source files from SQLite -** version 3.30.1. By combining all the individual C code files into this +** version 3.31.1. By combining all the individual C code files into this ** single large file, the entire code can be compiled as a single translation ** unit. This allows many compilers to do optimizations that would not be ** possible if the files were compiled separately. Performance improvements @@ -1165,9 +1165,9 @@ extern "C" { ** [sqlite3_libversion_number()], [sqlite3_sourceid()], ** [sqlite_version()] and [sqlite_source_id()]. */ -#define SQLITE_VERSION "3.30.1" -#define SQLITE_VERSION_NUMBER 3030001 -#define SQLITE_SOURCE_ID "2019-10-10 20:19:45 18db032d058f1436ce3dea84081f4ee5a0f2259ad97301d43c426bc7f3df1b0b" +#define SQLITE_VERSION "3.31.1" +#define SQLITE_VERSION_NUMBER 3031001 +#define SQLITE_SOURCE_ID "2020-01-27 19:55:54 3bfa9cc97da10598521b342961df8f5f68c7388fa117345eeb516eaa837bb4d6" /* ** CAPI3REF: Run-Time Library Version Numbers @@ -1558,6 +1558,7 @@ SQLITE_API int sqlite3_exec( #define SQLITE_CANTOPEN_FULLPATH (SQLITE_CANTOPEN | (3<<8)) #define SQLITE_CANTOPEN_CONVPATH (SQLITE_CANTOPEN | (4<<8)) #define SQLITE_CANTOPEN_DIRTYWAL (SQLITE_CANTOPEN | (5<<8)) /* Not Used */ +#define SQLITE_CANTOPEN_SYMLINK (SQLITE_CANTOPEN | (6<<8)) #define SQLITE_CORRUPT_VTAB (SQLITE_CORRUPT | (1<<8)) #define SQLITE_CORRUPT_SEQUENCE (SQLITE_CORRUPT | (2<<8)) #define SQLITE_READONLY_RECOVERY (SQLITE_READONLY | (1<<8)) @@ -1577,11 +1578,13 @@ SQLITE_API int sqlite3_exec( #define SQLITE_CONSTRAINT_UNIQUE (SQLITE_CONSTRAINT | (8<<8)) #define SQLITE_CONSTRAINT_VTAB (SQLITE_CONSTRAINT | (9<<8)) #define SQLITE_CONSTRAINT_ROWID (SQLITE_CONSTRAINT |(10<<8)) +#define SQLITE_CONSTRAINT_PINNED (SQLITE_CONSTRAINT |(11<<8)) #define SQLITE_NOTICE_RECOVER_WAL (SQLITE_NOTICE | (1<<8)) #define SQLITE_NOTICE_RECOVER_ROLLBACK (SQLITE_NOTICE | (2<<8)) #define SQLITE_WARNING_AUTOINDEX (SQLITE_WARNING | (1<<8)) #define SQLITE_AUTH_USER (SQLITE_AUTH | (1<<8)) #define SQLITE_OK_LOAD_PERMANENTLY (SQLITE_OK | (1<<8)) +#define SQLITE_OK_SYMLINK (SQLITE_OK | (2<<8)) /* ** CAPI3REF: Flags For File Open Operations @@ -1610,6 +1613,7 @@ SQLITE_API int sqlite3_exec( #define SQLITE_OPEN_SHAREDCACHE 0x00020000 /* Ok for sqlite3_open_v2() */ #define SQLITE_OPEN_PRIVATECACHE 0x00040000 /* Ok for sqlite3_open_v2() */ #define SQLITE_OPEN_WAL 0x00080000 /* VFS only */ +#define SQLITE_OPEN_NOFOLLOW 0x01000000 /* Ok for sqlite3_open_v2() */ /* Reserved: 0x00F00000 */ @@ -2021,16 +2025,16 @@ struct sqlite3_io_methods { ** ^The [SQLITE_FCNTL_BUSYHANDLER] ** file-control may be invoked by SQLite on the database file handle ** shortly after it is opened in order to provide a custom VFS with access -** to the connections busy-handler callback. The argument is of type (void **) +** to the connection's busy-handler callback. The argument is of type (void**) ** - an array of two (void *) values. The first (void *) actually points -** to a function of type (int (*)(void *)). In order to invoke the connections +** to a function of type (int (*)(void *)). In order to invoke the connection's ** busy-handler, this function should be invoked with the second (void *) in ** the array as the only argument. If it returns non-zero, then the operation ** should be retried. If it returns zero, the custom VFS should abandon the ** current operation. ** **
  • [[SQLITE_FCNTL_TEMPFILENAME]] -** ^Application can invoke the [SQLITE_FCNTL_TEMPFILENAME] file-control +** ^Applications can invoke the [SQLITE_FCNTL_TEMPFILENAME] file-control ** to have SQLite generate a ** temporary filename using the same algorithm that is followed to generate ** temporary filenames for TEMP tables and other internal uses. The @@ -2143,12 +2147,18 @@ struct sqlite3_io_methods { ** not provide a mechanism to detect changes to MAIN only. Also, the ** [sqlite3_total_changes()] interface responds to internal changes only and ** omits changes made by other database connections. The -** [PRAGMA data_version] command provide a mechanism to detect changes to +** [PRAGMA data_version] command provides a mechanism to detect changes to ** a single attached database that occur due to other database connections, ** but omits changes implemented by the database connection on which it is ** called. This file control is the only mechanism to detect changes that ** happen either internally or externally and that are associated with ** a particular attached database. +** +**
  • [[SQLITE_FCNTL_CKPT_DONE]] +** The [SQLITE_FCNTL_CKPT_DONE] opcode is invoked from within a checkpoint +** in wal mode after the client has finished copying pages from the wal +** file to the database file, but before the *-shm file is updated to +** record the fact that the pages have been checkpointed. ** */ #define SQLITE_FCNTL_LOCKSTATE 1 @@ -2186,6 +2196,7 @@ struct sqlite3_io_methods { #define SQLITE_FCNTL_LOCK_TIMEOUT 34 #define SQLITE_FCNTL_DATA_VERSION 35 #define SQLITE_FCNTL_SIZE_LIMIT 36 +#define SQLITE_FCNTL_CKPT_DONE 37 /* deprecated names */ #define SQLITE_GET_LOCKPROXYFILE SQLITE_FCNTL_GET_LOCKPROXYFILE @@ -2231,10 +2242,10 @@ typedef struct sqlite3_api_routines sqlite3_api_routin ** to 3 with SQLite [version 3.7.6] on [dateof:3.7.6]. Additional fields ** may be appended to the sqlite3_vfs object and the iVersion value ** may increase again in future versions of SQLite. -** Note that the structure -** of the sqlite3_vfs object changes in the transition from +** Note that due to an oversight, the structure +** of the sqlite3_vfs object changed in the transition from ** SQLite [version 3.5.9] to [version 3.6.0] on [dateof:3.6.0] -** and yet the iVersion field was not modified. +** and yet the iVersion field was not increased. ** ** The szOsFile field is the size of the subclassed [sqlite3_file] ** structure used by this VFS. mxPathname is the maximum length of @@ -2325,7 +2336,7 @@ typedef struct sqlite3_api_routines sqlite3_api_routin ** for exclusive access. ** ** ^At least szOsFile bytes of memory are allocated by SQLite -** to hold the [sqlite3_file] structure passed as the third +** to hold the [sqlite3_file] structure passed as the third ** argument to xOpen. The xOpen method does not have to ** allocate the structure; it should just fill it in. Note that ** the xOpen method must set the sqlite3_file.pMethods to either @@ -2662,7 +2673,7 @@ SQLITE_API int sqlite3_db_config(sqlite3*, int op, ... ** that causes the corresponding memory allocation to fail. ** ** The xInit method initializes the memory allocator. For example, -** it might allocate any require mutexes or initialize internal data +** it might allocate any required mutexes or initialize internal data ** structures. The xShutdown method is invoked (indirectly) by ** [sqlite3_shutdown()] and should deallocate any resources acquired ** by xInit. The pAppData pointer is used as the only parameter to @@ -2784,6 +2795,7 @@ struct sqlite3_mem_methods { ** memory allocation statistics. ^(When memory allocation statistics are ** disabled, the following SQLite interfaces become non-operational: **
      +**
    • [sqlite3_hard_heap_limit64()] **
    • [sqlite3_memory_used()] **
    • [sqlite3_memory_highwater()] **
    • [sqlite3_soft_heap_limit64()] @@ -2802,7 +2814,7 @@ struct sqlite3_mem_methods { **
      ^The SQLITE_CONFIG_PAGECACHE option specifies a memory pool ** that SQLite can use for the database page cache with the default page ** cache implementation. -** This configuration option is a no-op if an application-define page +** This configuration option is a no-op if an application-defined page ** cache implementation is loaded using the [SQLITE_CONFIG_PCACHE2]. ** ^There are three arguments to SQLITE_CONFIG_PAGECACHE: A pointer to ** 8-byte aligned memory (pMem), the size of each page cache line (sz), @@ -3287,7 +3299,7 @@ struct sqlite3_mem_methods { ** [[SQLITE_DBCONFIG_DQS_DML]] **
      SQLITE_DBCONFIG_DQS_DML **
      The SQLITE_DBCONFIG_DQS_DML option activates or deactivates -** the legacy [double-quoted string literal] misfeature for DML statement +** the legacy [double-quoted string literal] misfeature for DML statements ** only, that is DELETE, INSERT, SELECT, and UPDATE statements. The ** default value of this setting is determined by the [-DSQLITE_DQS] ** compile-time option. @@ -3301,6 +3313,49 @@ struct sqlite3_mem_methods { ** default value of this setting is determined by the [-DSQLITE_DQS] ** compile-time option. **
      +** +** [[SQLITE_DBCONFIG_TRUSTED_SCHEMA]] +**
      SQLITE_DBCONFIG_TRUSTED_SCHEMA +**
      The SQLITE_DBCONFIG_TRUSTED_SCHEMA option tells SQLite to +** assume that database schemas (the contents of the [sqlite_master] tables) +** are untainted by malicious content. +** When the SQLITE_DBCONFIG_TRUSTED_SCHEMA option is disabled, SQLite +** takes additional defensive steps to protect the application from harm +** including: +**
        +**
      • Prohibit the use of SQL functions inside triggers, views, +** CHECK constraints, DEFAULT clauses, expression indexes, +** partial indexes, or generated columns +** unless those functions are tagged with [SQLITE_INNOCUOUS]. +**
      • Prohibit the use of virtual tables inside of triggers or views +** unless those virtual tables are tagged with [SQLITE_VTAB_INNOCUOUS]. +**
      +** This setting defaults to "on" for legacy compatibility, however +** all applications are advised to turn it off if possible. This setting +** can also be controlled using the [PRAGMA trusted_schema] statement. +**
      +** +** [[SQLITE_DBCONFIG_LEGACY_FILE_FORMAT]] +**
      SQLITE_DBCONFIG_LEGACY_FILE_FORMAT +**
      The SQLITE_DBCONFIG_LEGACY_FILE_FORMAT option activates or deactivates +** the legacy file format flag. When activated, this flag causes all newly +** created database file to have a schema format version number (the 4-byte +** integer found at offset 44 into the database header) of 1. This in turn +** means that the resulting database file will be readable and writable by +** any SQLite version back to 3.0.0 ([dateof:3.0.0]). Without this setting, +** newly created databases are generally not understandable by SQLite versions +** prior to 3.3.0 ([dateof:3.3.0]). As these words are written, there +** is now scarcely any need to generated database files that are compatible +** all the way back to version 3.0.0, and so this setting is of little +** practical use, but is provided so that SQLite can continue to claim the +** ability to generate new database files that are compatible with version +** 3.0.0. +**

      Note that when the SQLITE_DBCONFIG_LEGACY_FILE_FORMAT setting is on, +** the [VACUUM] command will fail with an obscure error when attempting to +** process a table with generated columns and a descending index. This is +** not considered a bug since SQLite versions 3.3.0 and earlier do not support +** either generated columns or decending indexes. +**

      ** */ #define SQLITE_DBCONFIG_MAINDBNAME 1000 /* const char* */ @@ -3319,7 +3374,9 @@ struct sqlite3_mem_methods { #define SQLITE_DBCONFIG_DQS_DML 1013 /* int int* */ #define SQLITE_DBCONFIG_DQS_DDL 1014 /* int int* */ #define SQLITE_DBCONFIG_ENABLE_VIEW 1015 /* int int* */ -#define SQLITE_DBCONFIG_MAX 1015 /* Largest DBCONFIG */ +#define SQLITE_DBCONFIG_LEGACY_FILE_FORMAT 1016 /* int int* */ +#define SQLITE_DBCONFIG_TRUSTED_SCHEMA 1017 /* int int* */ +#define SQLITE_DBCONFIG_MAX 1017 /* Largest DBCONFIG */ /* ** CAPI3REF: Enable Or Disable Extended Result Codes @@ -3525,7 +3582,7 @@ SQLITE_API int sqlite3_total_changes(sqlite3*); ** ^The sqlite3_interrupt(D) call is in effect until all currently running ** SQL statements on [database connection] D complete. ^Any new SQL statements ** that are started after the sqlite3_interrupt() call and before the -** running statements reaches zero are interrupted as if they had been +** running statement count reaches zero are interrupted as if they had been ** running prior to the sqlite3_interrupt() call. ^New SQL statements ** that are started after the running statement count reaches zero are ** not effected by the sqlite3_interrupt(). @@ -3693,9 +3750,9 @@ SQLITE_API int sqlite3_busy_timeout(sqlite3*, int ms); ** Cindy | 21 ** ** -** There are two column (M==2) and three rows (N==3). Thus the +** There are two columns (M==2) and three rows (N==3). Thus the ** result table has 8 entries. Suppose the result table is stored -** in an array names azResult. Then azResult holds this content: +** in an array named azResult. Then azResult holds this content: ** **
       **        azResult[0] = "Name";
      @@ -3788,7 +3845,7 @@ SQLITE_API char *sqlite3_vsnprintf(int,char*,const cha
       **
       ** The SQLite core uses these three routines for all of its own
       ** internal memory allocation needs. "Core" in the previous sentence
      -** does not include operating-system specific VFS implementation.  The
      +** does not include operating-system specific [VFS] implementation.  The
       ** Windows VFS uses native malloc() and free() for some operations.
       **
       ** ^The sqlite3_malloc() routine returns a pointer to a block
      @@ -3849,19 +3906,6 @@ SQLITE_API char *sqlite3_vsnprintf(int,char*,const cha
       ** 4 byte boundary if the [SQLITE_4_BYTE_ALIGNED_MALLOC] compile-time
       ** option is used.
       **
      -** In SQLite version 3.5.0 and 3.5.1, it was possible to define
      -** the SQLITE_OMIT_MEMORY_ALLOCATION which would cause the built-in
      -** implementation of these routines to be omitted.  That capability
      -** is no longer provided.  Only built-in memory allocators can be used.
      -**
      -** Prior to SQLite version 3.7.10, the Windows OS interface layer called
      -** the system malloc() and free() directly when converting
      -** filenames between the UTF-8 encoding used by SQLite
      -** and whatever filename encoding is used by the particular Windows
      -** installation.  Memory allocation errors were detected, but
      -** they were reported back as [SQLITE_CANTOPEN] or
      -** [SQLITE_IOERR] rather than [SQLITE_NOMEM].
      -**
       ** The pointer arguments to [sqlite3_free()] and [sqlite3_realloc()]
       ** must be either NULL or else pointers obtained from a prior
       ** invocation of [sqlite3_malloc()] or [sqlite3_realloc()] that have
      @@ -3910,7 +3954,7 @@ SQLITE_API sqlite3_int64 sqlite3_memory_highwater(int 
       ** SQLite contains a high-quality pseudo-random number generator (PRNG) used to
       ** select random [ROWID | ROWIDs] when inserting new records into a table that
       ** already uses the largest possible [ROWID].  The PRNG is also used for
      -** the build-in random() and randomblob() SQL functions.  This interface allows
      +** the built-in random() and randomblob() SQL functions.  This interface allows
       ** applications to access the same PRNG for other purposes.
       **
       ** ^A call to this routine stores N bytes of randomness into buffer P.
      @@ -4284,10 +4328,8 @@ SQLITE_API void sqlite3_progress_handler(sqlite3*, int
       ** The sqlite3_open_v2() interface works like sqlite3_open()
       ** except that it accepts two additional parameters for additional control
       ** over the new database connection.  ^(The flags parameter to
      -** sqlite3_open_v2() can take one of
      -** the following three values, optionally combined with the 
      -** [SQLITE_OPEN_NOMUTEX], [SQLITE_OPEN_FULLMUTEX], [SQLITE_OPEN_SHAREDCACHE],
      -** [SQLITE_OPEN_PRIVATECACHE], and/or [SQLITE_OPEN_URI] flags:)^
      +** sqlite3_open_v2() must include, at a minimum, one of the following
      +** three flag combinations:)^
       **
       ** 
      ** ^(
      [SQLITE_OPEN_READONLY]
      @@ -4305,23 +4347,51 @@ SQLITE_API void sqlite3_progress_handler(sqlite3*, int ** sqlite3_open() and sqlite3_open16().)^ **
      ** +** In addition to the required flags, the following optional flags are +** also supported: +** +**
      +** ^(
      [SQLITE_OPEN_URI]
      +**
      The filename can be interpreted as a URI if this flag is set.
      )^ +** +** ^(
      [SQLITE_OPEN_MEMORY]
      +**
      The database will be opened as an in-memory database. The database +** is named by the "filename" argument for the purposes of cache-sharing, +** if shared cache mode is enabled, but the "filename" is otherwise ignored. +**
      )^ +** *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@freebsd.org Mon May 25 13:17:09 2020 Return-Path: Delivered-To: svn-src-all@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 56B5E2FF81D; Mon, 25 May 2020 13:17:09 +0000 (UTC) (envelope-from cy@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49VyLF1wffz3Whj; Mon, 25 May 2020 13:17:09 +0000 (UTC) (envelope-from cy@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 3CF0A12AD8; Mon, 25 May 2020 13:17:09 +0000 (UTC) (envelope-from cy@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04PDH96B059580; Mon, 25 May 2020 13:17:09 GMT (envelope-from cy@FreeBSD.org) Received: (from cy@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04PDGr9H059558; Mon, 25 May 2020 13:16:53 GMT (envelope-from cy@FreeBSD.org) Message-Id: <202005251316.04PDGr9H059558@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: cy set sender to cy@FreeBSD.org using -f From: Cy Schubert Date: Mon, 25 May 2020 13:16:53 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org Subject: svn commit: r361456 - in stable: 11/contrib/sqlite3 11/contrib/sqlite3/tea 11/contrib/sqlite3/tea/generic 11/contrib/sqlite3/tea/win 12/contrib/sqlite3 12/contrib/sqlite3/tea 12/contrib/sqlite3/tea... X-SVN-Group: stable-12 X-SVN-Commit-Author: cy X-SVN-Commit-Paths: in stable: 11/contrib/sqlite3 11/contrib/sqlite3/tea 11/contrib/sqlite3/tea/generic 11/contrib/sqlite3/tea/win 12/contrib/sqlite3 12/contrib/sqlite3/tea 12/contrib/sqlite3/tea/generic 12/contrib/sqlit... X-SVN-Commit-Revision: 361456 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2020 13:17:09 -0000 Author: cy Date: Mon May 25 13:16:35 2020 New Revision: 361456 URL: https://svnweb.freebsd.org/changeset/base/361456 Log: MFC r360221-r360223 r360221: In preparation for update to sqlite3-3.31.1 (3310100), recommit r357201: MFV r357163, which was reverted by r357522 due to segfault under PowerPc. Update sqlite3-3.30.1 (3300100) --> sqlite3-3.31.0 (3310000) r360222: MFV r360158: Update sqlite3-3.31.0 (3310000) --> sqlite3-3.31.1 (3310100) Tested by: Mark Millard With to be committed PowerPC patch r360223: Fix PowerPC segfault. The segfault fix was originally developed by our upstream, sqlite.org, to address S/390 and Sparc segfaults, both of which are big endian. Our PowerPC is also big endian, which this patch also fixes. Reported by: Mark Millard Tested by: Mark Millard Obtained from: https://www.sqlite.org/src/vinfo/04885763c4cd00cb?diff=1 https://sqlite.org/forum/forumpost/672291a5b2 Modified: stable/12/contrib/sqlite3/Makefile.msc stable/12/contrib/sqlite3/configure stable/12/contrib/sqlite3/configure.ac stable/12/contrib/sqlite3/shell.c stable/12/contrib/sqlite3/sqlite3.c stable/12/contrib/sqlite3/sqlite3.h stable/12/contrib/sqlite3/sqlite3ext.h stable/12/contrib/sqlite3/tea/configure stable/12/contrib/sqlite3/tea/configure.ac stable/12/contrib/sqlite3/tea/generic/tclsqlite3.c stable/12/contrib/sqlite3/tea/win/makefile.vc Directory Properties: stable/12/ (props changed) Changes in other areas also in this revision: Modified: stable/11/contrib/sqlite3/Makefile.msc stable/11/contrib/sqlite3/configure stable/11/contrib/sqlite3/configure.ac stable/11/contrib/sqlite3/shell.c stable/11/contrib/sqlite3/sqlite3.c stable/11/contrib/sqlite3/sqlite3.h stable/11/contrib/sqlite3/sqlite3ext.h stable/11/contrib/sqlite3/tea/configure stable/11/contrib/sqlite3/tea/configure.ac stable/11/contrib/sqlite3/tea/generic/tclsqlite3.c stable/11/contrib/sqlite3/tea/win/makefile.vc Directory Properties: stable/11/ (props changed) Modified: stable/12/contrib/sqlite3/Makefile.msc ============================================================================== --- stable/12/contrib/sqlite3/Makefile.msc Mon May 25 13:14:40 2020 (r361455) +++ stable/12/contrib/sqlite3/Makefile.msc Mon May 25 13:16:35 2020 (r361456) @@ -210,6 +210,12 @@ OPTIMIZATIONS = 2 SESSION = 0 !ENDIF +# Set this to non-0 to enable support for the rbu extension. +# +!IFNDEF RBU +RBU = 0 +!ENDIF + # Set the source code file to be used by executables and libraries when # they need the amalgamation. # @@ -282,7 +288,6 @@ OPT_FEATURE_FLAGS = $(OPT_FEATURE_FLAGS) -DSQLITE_ENAB OPT_FEATURE_FLAGS = $(OPT_FEATURE_FLAGS) -DSQLITE_ENABLE_STMTVTAB=1 OPT_FEATURE_FLAGS = $(OPT_FEATURE_FLAGS) -DSQLITE_ENABLE_DBPAGE_VTAB=1 OPT_FEATURE_FLAGS = $(OPT_FEATURE_FLAGS) -DSQLITE_ENABLE_DBSTAT_VTAB=1 -OPT_FEATURE_FLAGS = $(OPT_FEATURE_FLAGS) -DSQLITE_INTROSPECTION_PRAGMAS=1 OPT_FEATURE_FLAGS = $(OPT_FEATURE_FLAGS) -DSQLITE_ENABLE_DESERIALIZE=1 !ENDIF OPT_FEATURE_FLAGS = $(OPT_FEATURE_FLAGS) -DSQLITE_ENABLE_COLUMN_METADATA=1 @@ -296,6 +301,13 @@ OPT_FEATURE_FLAGS = $(OPT_FEATURE_FLAGS) -DSQLITE_ENAB OPT_FEATURE_FLAGS = $(OPT_FEATURE_FLAGS) -DSQLITE_ENABLE_PREUPDATE_HOOK=1 !ENDIF +# Should the rbu extension be enabled? If so, add compilation options +# to enable it. +# +!IF $(RBU)!=0 +OPT_FEATURE_FLAGS = $(OPT_FEATURE_FLAGS) -DSQLITE_ENABLE_RBU=1 +!ENDIF + # These are the "extended" SQLite compilation options used when compiling for # the Windows 10 platform. # @@ -978,7 +990,7 @@ Replace.exe: sqlite3.def: Replace.exe $(LIBOBJ) echo EXPORTS > sqlite3.def dumpbin /all $(LIBOBJ) \ - | .\Replace.exe "^\s+/EXPORT:_?(sqlite3(?:session|changeset|changegroup|rebaser)?_[^@,]*)(?:@\d+|,DATA)?$$" $$1 true \ + | .\Replace.exe "^\s+/EXPORT:_?(sqlite3(?:session|changeset|changegroup|rebaser|rbu)?_[^@,]*)(?:@\d+|,DATA)?$$" $$1 true \ | sort >> sqlite3.def $(SQLITE3EXE): shell.c $(SHELL_CORE_DEP) $(LIBRESOBJS) $(SHELL_CORE_SRC) $(SQLITE3H) Modified: stable/12/contrib/sqlite3/configure ============================================================================== --- stable/12/contrib/sqlite3/configure Mon May 25 13:14:40 2020 (r361455) +++ stable/12/contrib/sqlite3/configure Mon May 25 13:16:35 2020 (r361456) @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for sqlite 3.30.1. +# Generated by GNU Autoconf 2.69 for sqlite 3.31.1. # # Report bugs to . # @@ -590,8 +590,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='sqlite' PACKAGE_TARNAME='sqlite' -PACKAGE_VERSION='3.30.1' -PACKAGE_STRING='sqlite 3.30.1' +PACKAGE_VERSION='3.31.1' +PACKAGE_STRING='sqlite 3.31.1' PACKAGE_BUGREPORT='http://www.sqlite.org' PACKAGE_URL='' @@ -1341,7 +1341,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures sqlite 3.30.1 to adapt to many kinds of systems. +\`configure' configures sqlite 3.31.1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1412,7 +1412,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of sqlite 3.30.1:";; + short | recursive ) echo "Configuration of sqlite 3.31.1:";; esac cat <<\_ACEOF @@ -1537,7 +1537,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -sqlite configure 3.30.1 +sqlite configure 3.31.1 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -1952,7 +1952,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by sqlite $as_me 3.30.1, which was +It was created by sqlite $as_me 3.31.1, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2818,7 +2818,7 @@ fi # Define the identity of the package. PACKAGE='sqlite' - VERSION='3.30.1' + VERSION='3.31.1' cat >>confdefs.h <<_ACEOF @@ -13653,7 +13653,7 @@ else fi if test x"$enable_rtree" = "xyes"; then - BUILD_CFLAGS="$BUILD_CFLAGS -DSQLITE_ENABLE_RTREE" + BUILD_CFLAGS="$BUILD_CFLAGS -DSQLITE_ENABLE_RTREE -DSQLITE_ENABLE_GEOPOLY" fi #----------------------------------------------------------------------- @@ -14438,7 +14438,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by sqlite $as_me 3.30.1, which was +This file was extended by sqlite $as_me 3.31.1, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -14495,7 +14495,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -sqlite config.status 3.30.1 +sqlite config.status 3.31.1 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Modified: stable/12/contrib/sqlite3/configure.ac ============================================================================== --- stable/12/contrib/sqlite3/configure.ac Mon May 25 13:14:40 2020 (r361455) +++ stable/12/contrib/sqlite3/configure.ac Mon May 25 13:16:35 2020 (r361456) @@ -10,7 +10,7 @@ # AC_PREREQ(2.61) -AC_INIT(sqlite, 3.30.1, http://www.sqlite.org) +AC_INIT(sqlite, 3.31.1, http://www.sqlite.org) AC_CONFIG_SRCDIR([sqlite3.c]) AC_CONFIG_AUX_DIR([.]) @@ -161,7 +161,7 @@ AC_ARG_ENABLE(rtree, [AS_HELP_STRING( [--enable-rtree], [include rtree support [default=yes]])], [], [enable_rtree=yes]) if test x"$enable_rtree" = "xyes"; then - BUILD_CFLAGS="$BUILD_CFLAGS -DSQLITE_ENABLE_RTREE" + BUILD_CFLAGS="$BUILD_CFLAGS -DSQLITE_ENABLE_RTREE -DSQLITE_ENABLE_GEOPOLY" fi #----------------------------------------------------------------------- Modified: stable/12/contrib/sqlite3/shell.c ============================================================================== --- stable/12/contrib/sqlite3/shell.c Mon May 25 13:14:40 2020 (r361455) +++ stable/12/contrib/sqlite3/shell.c Mon May 25 13:16:35 2020 (r361456) @@ -2007,19 +2007,23 @@ int sqlite3_shathree_init( int rc = SQLITE_OK; SQLITE_EXTENSION_INIT2(pApi); (void)pzErrMsg; /* Unused parameter */ - rc = sqlite3_create_function(db, "sha3", 1, SQLITE_UTF8, 0, - sha3Func, 0, 0); + rc = sqlite3_create_function(db, "sha3", 1, + SQLITE_UTF8 | SQLITE_INNOCUOUS | SQLITE_DETERMINISTIC, + 0, sha3Func, 0, 0); if( rc==SQLITE_OK ){ - rc = sqlite3_create_function(db, "sha3", 2, SQLITE_UTF8, 0, - sha3Func, 0, 0); + rc = sqlite3_create_function(db, "sha3", 2, + SQLITE_UTF8 | SQLITE_INNOCUOUS | SQLITE_DETERMINISTIC, + 0, sha3Func, 0, 0); } if( rc==SQLITE_OK ){ - rc = sqlite3_create_function(db, "sha3_query", 1, SQLITE_UTF8, 0, - sha3QueryFunc, 0, 0); + rc = sqlite3_create_function(db, "sha3_query", 1, + SQLITE_UTF8 | SQLITE_DIRECTONLY, + 0, sha3QueryFunc, 0, 0); } if( rc==SQLITE_OK ){ - rc = sqlite3_create_function(db, "sha3_query", 2, SQLITE_UTF8, 0, - sha3QueryFunc, 0, 0); + rc = sqlite3_create_function(db, "sha3_query", 2, + SQLITE_UTF8 | SQLITE_DIRECTONLY, + 0, sha3QueryFunc, 0, 0); } return rc; } @@ -2613,6 +2617,7 @@ static int fsdirConnect( pNew = (fsdir_tab*)sqlite3_malloc( sizeof(*pNew) ); if( pNew==0 ) return SQLITE_NOMEM; memset(pNew, 0, sizeof(*pNew)); + sqlite3_vtab_config(db, SQLITE_VTAB_DIRECTONLY); } *ppVtab = (sqlite3_vtab*)pNew; return rc; @@ -3006,10 +3011,12 @@ int sqlite3_fileio_init( int rc = SQLITE_OK; SQLITE_EXTENSION_INIT2(pApi); (void)pzErrMsg; /* Unused parameter */ - rc = sqlite3_create_function(db, "readfile", 1, SQLITE_UTF8, 0, + rc = sqlite3_create_function(db, "readfile", 1, + SQLITE_UTF8|SQLITE_DIRECTONLY, 0, readfileFunc, 0, 0); if( rc==SQLITE_OK ){ - rc = sqlite3_create_function(db, "writefile", -1, SQLITE_UTF8, 0, + rc = sqlite3_create_function(db, "writefile", -1, + SQLITE_UTF8|SQLITE_DIRECTONLY, 0, writefileFunc, 0, 0); } if( rc==SQLITE_OK ){ @@ -3144,6 +3151,7 @@ static int completionConnect( #define COMPLETION_COLUMN_WHOLELINE 2 /* Entire line seen so far */ #define COMPLETION_COLUMN_PHASE 3 /* ePhase - used for debugging only */ + sqlite3_vtab_config(db, SQLITE_VTAB_INNOCUOUS); rc = sqlite3_declare_vtab(db, "CREATE TABLE x(" " candidate TEXT," @@ -4578,6 +4586,7 @@ static int zipfileConnect( zipfileDequote(pNew->zFile); } } + sqlite3_vtab_config(db, SQLITE_VTAB_DIRECTONLY); *ppVtab = (sqlite3_vtab*)pNew; return rc; } @@ -5190,25 +5199,25 @@ static int zipfileDeflate( u8 **ppOut, int *pnOut, /* Output */ char **pzErr /* OUT: Error message */ ){ - sqlite3_int64 nAlloc = compressBound(nIn); - u8 *aOut; int rc = SQLITE_OK; + sqlite3_int64 nAlloc; + z_stream str; + u8 *aOut; + memset(&str, 0, sizeof(str)); + str.next_in = (Bytef*)aIn; + str.avail_in = nIn; + deflateInit2(&str, 9, Z_DEFLATED, -15, 8, Z_DEFAULT_STRATEGY); + + nAlloc = deflateBound(&str, nIn); aOut = (u8*)sqlite3_malloc64(nAlloc); if( aOut==0 ){ rc = SQLITE_NOMEM; }else{ int res; - z_stream str; - memset(&str, 0, sizeof(str)); - str.next_in = (Bytef*)aIn; - str.avail_in = nIn; str.next_out = aOut; str.avail_out = nAlloc; - - deflateInit2(&str, 9, Z_DEFLATED, -15, 8, Z_DEFAULT_STRATEGY); res = deflate(&str, Z_FINISH); - if( res==Z_STREAM_END ){ *ppOut = aOut; *pnOut = (int)str.total_out; @@ -5517,10 +5526,10 @@ static int zipfileBestIndex( idx = i; } } + pIdxInfo->estimatedCost = 1000.0; if( idx>=0 ){ pIdxInfo->aConstraintUsage[idx].argvIndex = 1; pIdxInfo->aConstraintUsage[idx].omit = 1; - pIdxInfo->estimatedCost = 1000.0; pIdxInfo->idxNum = 1; }else if( unusable ){ return SQLITE_CONSTRAINT; @@ -5642,8 +5651,8 @@ static int zipfileGetMode( ** identical, ignoring any trailing '/' character in either path. */ static int zipfileComparePath(const char *zA, const char *zB, int nB){ int nA = (int)strlen(zA); - if( zA[nA-1]=='/' ) nA--; - if( zB[nB-1]=='/' ) nB--; + if( nA>0 && zA[nA-1]=='/' ) nA--; + if( nB>0 && zB[nB-1]=='/' ) nB--; if( nA==nB && memcmp(zA, zB, nA)==0 ) return 0; return 1; } @@ -5653,6 +5662,10 @@ static int zipfileBegin(sqlite3_vtab *pVtab){ int rc = SQLITE_OK; assert( pTab->pWriteFd==0 ); + if( pTab->zFile==0 || pTab->zFile[0]==0 ){ + pTab->base.zErrMsg = sqlite3_mprintf("zipfile: missing filename"); + return SQLITE_ERROR; + } /* Open a write fd on the file. Also load the entire central directory ** structure into memory. During the transaction any new file data is @@ -5827,6 +5840,7 @@ static int zipfileUpdate( if( rc==SQLITE_OK ){ zPath = (const char*)sqlite3_value_text(apVal[2]); + if( zPath==0 ) zPath = ""; nPath = (int)strlen(zPath); mTime = zipfileGetTime(apVal[4]); } @@ -5836,11 +5850,15 @@ static int zipfileUpdate( ** '/'. This appears to be required for compatibility with info-zip ** (the unzip command on unix). It does not create directories ** otherwise. */ - if( zPath[nPath-1]!='/' ){ + if( nPath<=0 || zPath[nPath-1]!='/' ){ zFree = sqlite3_mprintf("%s/", zPath); - if( zFree==0 ){ rc = SQLITE_NOMEM; } zPath = (const char*)zFree; - nPath++; + if( zFree==0 ){ + rc = SQLITE_NOMEM; + nPath = 0; + }else{ + nPath = (int)strlen(zPath); + } } } @@ -6233,19 +6251,19 @@ void zipfileStep(sqlite3_context *pCtx, int nVal, sqli ** at the end of the path. Or, if this is not a directory and the path ** ends in '/' it is an error. */ if( bIsDir==0 ){ - if( zName[nName-1]=='/' ){ + if( nName>0 && zName[nName-1]=='/' ){ zErr = sqlite3_mprintf("non-directory name must not end with /"); rc = SQLITE_ERROR; goto zipfile_step_out; } }else{ - if( zName[nName-1]!='/' ){ + if( nName==0 || zName[nName-1]!='/' ){ zName = zFree = sqlite3_mprintf("%s/", zName); - nName++; if( zName==0 ){ rc = SQLITE_NOMEM; goto zipfile_step_out; } + nName = (int)strlen(zName); }else{ while( nName>1 && zName[nName-2]=='/' ) nName--; } @@ -6501,10 +6519,12 @@ int sqlite3_sqlar_init( int rc = SQLITE_OK; SQLITE_EXTENSION_INIT2(pApi); (void)pzErrMsg; /* Unused parameter */ - rc = sqlite3_create_function(db, "sqlar_compress", 1, SQLITE_UTF8, 0, + rc = sqlite3_create_function(db, "sqlar_compress", 1, + SQLITE_UTF8|SQLITE_INNOCUOUS, 0, sqlarCompressFunc, 0, 0); if( rc==SQLITE_OK ){ - rc = sqlite3_create_function(db, "sqlar_uncompress", 2, SQLITE_UTF8, 0, + rc = sqlite3_create_function(db, "sqlar_uncompress", 2, + SQLITE_UTF8|SQLITE_INNOCUOUS, 0, sqlarUncompressFunc, 0, 0); } return rc; @@ -6525,8 +6545,8 @@ int sqlite3_sqlar_init( ** ************************************************************************* */ - - +#if !defined(SQLITEEXPERT_H) +#define SQLITEEXPERT_H 1 /* #include "sqlite3.h" */ typedef struct sqlite3expert sqlite3expert; @@ -6680,8 +6700,8 @@ const char *sqlite3_expert_report(sqlite3expert*, int */ void sqlite3_expert_destroy(sqlite3expert*); +#endif /* !defined(SQLITEEXPERT_H) */ - /************************* End ../ext/expert/sqlite3expert.h ********************/ /************************* Begin ../ext/expert/sqlite3expert.c ******************/ /* @@ -9566,6 +9586,7 @@ struct ShellState { int outCount; /* Revert to stdout when reaching zero */ int cnt; /* Number of records displayed so far */ int lineno; /* Line number of last line read from in */ + int openFlags; /* Additional flags to open. (SQLITE_OPEN_NOFOLLOW) */ FILE *in; /* Read commands from this stream */ FILE *out; /* Write results here */ FILE *traceOut; /* Output for sqlite3_trace() */ @@ -10400,19 +10421,22 @@ static int shell_callback( const int *colWidth; int showHdr; char *rowSep; + int nWidth; if( p->cMode==MODE_Column ){ colWidth = p->colWidth; + nWidth = ArraySize(p->colWidth); showHdr = p->showHeader; rowSep = p->rowSeparator; }else{ colWidth = aExplainWidths; + nWidth = ArraySize(aExplainWidths); showHdr = 1; rowSep = SEP_Row; } if( p->cnt++==0 ){ for(i=0; icolWidth) ){ + if( idb, SQLITE_DBCONFIG_DEFENSIVE, -1, &defensiveMode); + sqlite3_db_config(p->db, SQLITE_DBCONFIG_DEFENSIVE, 0, 0); sqlite3_db_config(p->db, SQLITE_DBCONFIG_WRITABLE_SCHEMA, -1, &wrSchema); sqlite3_db_config(p->db, SQLITE_DBCONFIG_WRITABLE_SCHEMA, 1, 0); sqlite3_exec(p->db, @@ -11311,6 +11338,7 @@ static void bind_table_init(ShellState *p){ ") WITHOUT ROWID;", 0, 0, 0); sqlite3_db_config(p->db, SQLITE_DBCONFIG_WRITABLE_SCHEMA, wrSchema, 0); + sqlite3_db_config(p->db, SQLITE_DBCONFIG_DEFENSIVE, defensiveMode, 0); } /* @@ -12053,9 +12081,7 @@ static const char *(azHelp[]) = { ".excel Display the output of next command in spreadsheet", ".exit ?CODE? Exit this program with return-code CODE", ".expert EXPERIMENTAL. Suggest indexes for queries", -/* Because explain mode comes on automatically now, the ".explain" mode -** is removed from the help screen. It is still supported for legacy, however */ -/*".explain ?on|off|auto? Turn EXPLAIN output mode on or off",*/ + ".explain ?on|off|auto? Change the EXPLAIN formatting mode. Default: auto", ".filectrl CMD ... Run various sqlite3_file_control() operations", " Run \".filectrl\" with no arguments for details", ".fullschema ?--indent? Show schema and the content of sqlite_stat tables", @@ -12106,6 +12132,7 @@ static const char *(azHelp[]) = { " --maxsize N Maximum size for --hexdb or --deserialized database", #endif " --new Initialize FILE to an empty database", + " --nofollow Do not follow symbolic links", " --readonly Open FILE readonly", " --zip FILE is a ZIP archive", ".output ?FILE? Send output to FILE or stdout if FILE is omitted", @@ -12670,7 +12697,7 @@ static void open_db(ShellState *p, int openFlags){ switch( p->openMode ){ case SHELL_OPEN_APPENDVFS: { sqlite3_open_v2(p->zDbFilename, &p->db, - SQLITE_OPEN_READWRITE|SQLITE_OPEN_CREATE, "apndvfs"); + SQLITE_OPEN_READWRITE|SQLITE_OPEN_CREATE|p->openFlags, "apndvfs"); break; } case SHELL_OPEN_HEXDB: @@ -12683,12 +12710,14 @@ static void open_db(ShellState *p, int openFlags){ break; } case SHELL_OPEN_READONLY: { - sqlite3_open_v2(p->zDbFilename, &p->db, SQLITE_OPEN_READONLY, 0); + sqlite3_open_v2(p->zDbFilename, &p->db, + SQLITE_OPEN_READONLY|p->openFlags, 0); break; } case SHELL_OPEN_UNSPEC: case SHELL_OPEN_NORMAL: { - sqlite3_open(p->zDbFilename, &p->db); + sqlite3_open_v2(p->zDbFilename, &p->db, + SQLITE_OPEN_READWRITE|SQLITE_OPEN_CREATE|p->openFlags, 0); break; } } @@ -13462,7 +13491,7 @@ static unsigned int get4byteInt(unsigned char *a){ } /* -** Implementation of the ".info" command. +** Implementation of the ".dbinfo" command. ** ** Return 1 on error, 2 to exit, and 0 otherwise. */ @@ -15699,20 +15728,22 @@ static int do_meta_command(char *zLine, ShellState *p) const char *zName; int op; } aDbConfig[] = { + { "defensive", SQLITE_DBCONFIG_DEFENSIVE }, + { "dqs_ddl", SQLITE_DBCONFIG_DQS_DDL }, + { "dqs_dml", SQLITE_DBCONFIG_DQS_DML }, { "enable_fkey", SQLITE_DBCONFIG_ENABLE_FKEY }, + { "enable_qpsg", SQLITE_DBCONFIG_ENABLE_QPSG }, { "enable_trigger", SQLITE_DBCONFIG_ENABLE_TRIGGER }, { "enable_view", SQLITE_DBCONFIG_ENABLE_VIEW }, { "fts3_tokenizer", SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER }, + { "legacy_alter_table", SQLITE_DBCONFIG_LEGACY_ALTER_TABLE }, + { "legacy_file_format", SQLITE_DBCONFIG_LEGACY_FILE_FORMAT }, { "load_extension", SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION }, { "no_ckpt_on_close", SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE }, - { "enable_qpsg", SQLITE_DBCONFIG_ENABLE_QPSG }, - { "trigger_eqp", SQLITE_DBCONFIG_TRIGGER_EQP }, { "reset_database", SQLITE_DBCONFIG_RESET_DATABASE }, - { "defensive", SQLITE_DBCONFIG_DEFENSIVE }, + { "trigger_eqp", SQLITE_DBCONFIG_TRIGGER_EQP }, + { "trusted_schema", SQLITE_DBCONFIG_TRUSTED_SCHEMA }, { "writable_schema", SQLITE_DBCONFIG_WRITABLE_SCHEMA }, - { "legacy_alter_table", SQLITE_DBCONFIG_LEGACY_ALTER_TABLE }, - { "dqs_dml", SQLITE_DBCONFIG_DQS_DML }, - { "dqs_ddl", SQLITE_DBCONFIG_DQS_DDL }, }; int ii, v; open_db(p, 0); @@ -15722,7 +15753,7 @@ static int do_meta_command(char *zLine, ShellState *p) sqlite3_db_config(p->db, aDbConfig[ii].op, booleanValue(azArg[2]), 0); } sqlite3_db_config(p->db, aDbConfig[ii].op, -1, &v); - utf8_printf(p->out, "%18s %s\n", aDbConfig[ii].zName, v ? "on" : "off"); + utf8_printf(p->out, "%19s %s\n", aDbConfig[ii].zName, v ? "on" : "off"); if( nArg>1 ) break; } if( nArg>1 && ii==ArraySize(aDbConfig) ){ @@ -16303,10 +16334,19 @@ static int do_meta_command(char *zLine, ShellState *p) char *zCollist = 0; sqlite3_stmt *pStmt; int tnum = 0; + int isWO = 0; /* True if making an imposter of a WITHOUT ROWID table */ + int lenPK = 0; /* Length of the PRIMARY KEY string for isWO tables */ int i; if( !(nArg==3 || (nArg==2 && sqlite3_stricmp(azArg[1],"off")==0)) ){ utf8_printf(stderr, "Usage: .imposter INDEX IMPOSTER\n" " .imposter off\n"); + /* Also allowed, but not documented: + ** + ** .imposter TABLE IMPOSTER + ** + ** where TABLE is a WITHOUT ROWID table. In that case, the + ** imposter is another WITHOUT ROWID table with the columns in + ** storage order. */ rc = 1; goto meta_command_exit; } @@ -16315,19 +16355,22 @@ static int do_meta_command(char *zLine, ShellState *p) sqlite3_test_control(SQLITE_TESTCTRL_IMPOSTER, p->db, "main", 0, 1); goto meta_command_exit; } - zSql = sqlite3_mprintf("SELECT rootpage FROM sqlite_master" - " WHERE name='%q' AND type='index'", azArg[1]); + zSql = sqlite3_mprintf( + "SELECT rootpage, 0 FROM sqlite_master" + " WHERE name='%q' AND type='index'" + "UNION ALL " + "SELECT rootpage, 1 FROM sqlite_master" + " WHERE name='%q' AND type='table'" + " AND sql LIKE '%%without%%rowid%%'", + azArg[1], azArg[1] + ); sqlite3_prepare_v2(p->db, zSql, -1, &pStmt, 0); sqlite3_free(zSql); if( sqlite3_step(pStmt)==SQLITE_ROW ){ tnum = sqlite3_column_int(pStmt, 0); + isWO = sqlite3_column_int(pStmt, 1); } sqlite3_finalize(pStmt); - if( tnum==0 ){ - utf8_printf(stderr, "no such index: \"%s\"\n", azArg[1]); - rc = 1; - goto meta_command_exit; - } zSql = sqlite3_mprintf("PRAGMA index_xinfo='%q'", azArg[1]); rc = sqlite3_prepare_v2(p->db, zSql, -1, &pStmt, 0); sqlite3_free(zSql); @@ -16344,6 +16387,9 @@ static int do_meta_command(char *zLine, ShellState *p) zCol = zLabel; } } + if( isWO && lenPK==0 && sqlite3_column_int(pStmt,5)==0 && zCollist ){ + lenPK = (int)strlen(zCollist); + } if( zCollist==0 ){ zCollist = sqlite3_mprintf("\"%w\"", zCol); }else{ @@ -16351,9 +16397,16 @@ static int do_meta_command(char *zLine, ShellState *p) } } sqlite3_finalize(pStmt); + if( i==0 || tnum==0 ){ + utf8_printf(stderr, "no such index: \"%s\"\n", azArg[1]); + rc = 1; + sqlite3_free(zCollist); + goto meta_command_exit; + } + if( lenPK==0 ) lenPK = 100000; zSql = sqlite3_mprintf( - "CREATE TABLE \"%w\"(%s,PRIMARY KEY(%s))WITHOUT ROWID", - azArg[2], zCollist, zCollist); + "CREATE TABLE \"%w\"(%s,PRIMARY KEY(%.*s))WITHOUT ROWID", + azArg[2], zCollist, lenPK, zCollist); sqlite3_free(zCollist); rc = sqlite3_test_control(SQLITE_TESTCTRL_IMPOSTER, p->db, "main", 1, tnum); if( rc==SQLITE_OK ){ @@ -16364,7 +16417,8 @@ static int do_meta_command(char *zLine, ShellState *p) }else{ utf8_printf(stdout, "%s;\n", zSql); raw_printf(stdout, - "WARNING: writing to an imposter table will corrupt the index!\n" + "WARNING: writing to an imposter table will corrupt the \"%s\" %s!\n", + azArg[1], isWO ? "table" : "index" ); } }else{ @@ -16562,6 +16616,7 @@ static int do_meta_command(char *zLine, ShellState *p) sqlite3_free(p->zFreeOnClose); p->zFreeOnClose = 0; p->openMode = SHELL_OPEN_UNSPEC; + p->openFlags = 0; p->szMax = 0; /* Check for command-line arguments */ for(iName=1; iNameopenMode = SHELL_OPEN_APPENDVFS; }else if( optionMatch(z, "readonly") ){ p->openMode = SHELL_OPEN_READONLY; + }else if( optionMatch(z, "nofollow") ){ + p->openFlags |= SQLITE_OPEN_NOFOLLOW; #ifdef SQLITE_ENABLE_DESERIALIZE }else if( optionMatch(z, "deserialize") ){ p->openMode = SHELL_OPEN_DESERIALIZE; @@ -17732,7 +17789,7 @@ static int do_meta_command(char *zLine, ShellState *p) { "extra_schema_checks",SQLITE_TESTCTRL_EXTRA_SCHEMA_CHECKS,"BOOLEAN" }, /*{ "fault_install", SQLITE_TESTCTRL_FAULT_INSTALL, "" },*/ { "imposter", SQLITE_TESTCTRL_IMPOSTER, "SCHEMA ON/OFF ROOTPAGE"}, - { "internal_functions", SQLITE_TESTCTRL_INTERNAL_FUNCTIONS, "BOOLEAN" }, + { "internal_functions", SQLITE_TESTCTRL_INTERNAL_FUNCTIONS, "" }, { "localtime_fault", SQLITE_TESTCTRL_LOCALTIME_FAULT,"BOOLEAN" }, { "never_corrupt", SQLITE_TESTCTRL_NEVER_CORRUPT, "BOOLEAN" }, { "optimizations", SQLITE_TESTCTRL_OPTIMIZATIONS, "DISABLE-MASK" }, @@ -17848,7 +17905,6 @@ static int do_meta_command(char *zLine, ShellState *p) /* sqlite3_test_control(int, int) */ case SQLITE_TESTCTRL_ASSERT: case SQLITE_TESTCTRL_ALWAYS: - case SQLITE_TESTCTRL_INTERNAL_FUNCTIONS: if( nArg==3 ){ int opt = booleanValue(azArg[2]); rc2 = sqlite3_test_control(testctrl, opt); @@ -17866,6 +17922,12 @@ static int do_meta_command(char *zLine, ShellState *p) } break; + /* sqlite3_test_control(sqlite3*) */ + case SQLITE_TESTCTRL_INTERNAL_FUNCTIONS: + rc2 = sqlite3_test_control(testctrl, p->db); + isOk = 3; + break; + case SQLITE_TESTCTRL_IMPOSTER: if( nArg==5 ){ rc2 = sqlite3_test_control(testctrl, p->db, @@ -18496,6 +18558,7 @@ static const char zOptions[] = " -multiplex enable the multiplexor VFS\n" #endif " -newline SEP set output row separator. Default: '\\n'\n" + " -nofollow refuse to open symbolic links to database files\n" " -nullvalue TEXT set text string for NULL values. Default ''\n" " -pagecache SIZE N use N slots of SZ bytes each for page cache memory\n" " -quote set output mode to 'quote'\n" @@ -18806,6 +18869,8 @@ int SQLITE_CDECL wmain(int argc, wchar_t **wargv){ #endif }else if( strcmp(z,"-readonly")==0 ){ data.openMode = SHELL_OPEN_READONLY; + }else if( strcmp(z,"-nofollow")==0 ){ + data.openFlags = SQLITE_OPEN_NOFOLLOW; #if !defined(SQLITE_OMIT_VIRTUALTABLE) && defined(SQLITE_HAVE_ZLIB) }else if( strncmp(z, "-A",2)==0 ){ /* All remaining command-line arguments are passed to the ".archive" @@ -18909,6 +18974,8 @@ int SQLITE_CDECL wmain(int argc, wchar_t **wargv){ #endif }else if( strcmp(z,"-readonly")==0 ){ data.openMode = SHELL_OPEN_READONLY; + }else if( strcmp(z,"-nofollow")==0 ){ + data.openFlags |= SQLITE_OPEN_NOFOLLOW; }else if( strcmp(z,"-ascii")==0 ){ data.mode = MODE_Ascii; sqlite3_snprintf(sizeof(data.colSeparator), data.colSeparator, Modified: stable/12/contrib/sqlite3/sqlite3.c ============================================================================== --- stable/12/contrib/sqlite3/sqlite3.c Mon May 25 13:14:40 2020 (r361455) +++ stable/12/contrib/sqlite3/sqlite3.c Mon May 25 13:16:35 2020 (r361456) @@ -1,6 +1,6 @@ /****************************************************************************** ** This file is an amalgamation of many separate C source files from SQLite -** version 3.30.1. By combining all the individual C code files into this +** version 3.31.1. By combining all the individual C code files into this ** single large file, the entire code can be compiled as a single translation ** unit. This allows many compilers to do optimizations that would not be ** possible if the files were compiled separately. Performance improvements @@ -1165,9 +1165,9 @@ extern "C" { ** [sqlite3_libversion_number()], [sqlite3_sourceid()], ** [sqlite_version()] and [sqlite_source_id()]. */ -#define SQLITE_VERSION "3.30.1" -#define SQLITE_VERSION_NUMBER 3030001 -#define SQLITE_SOURCE_ID "2019-10-10 20:19:45 18db032d058f1436ce3dea84081f4ee5a0f2259ad97301d43c426bc7f3df1b0b" +#define SQLITE_VERSION "3.31.1" +#define SQLITE_VERSION_NUMBER 3031001 +#define SQLITE_SOURCE_ID "2020-01-27 19:55:54 3bfa9cc97da10598521b342961df8f5f68c7388fa117345eeb516eaa837bb4d6" /* ** CAPI3REF: Run-Time Library Version Numbers @@ -1558,6 +1558,7 @@ SQLITE_API int sqlite3_exec( #define SQLITE_CANTOPEN_FULLPATH (SQLITE_CANTOPEN | (3<<8)) #define SQLITE_CANTOPEN_CONVPATH (SQLITE_CANTOPEN | (4<<8)) #define SQLITE_CANTOPEN_DIRTYWAL (SQLITE_CANTOPEN | (5<<8)) /* Not Used */ +#define SQLITE_CANTOPEN_SYMLINK (SQLITE_CANTOPEN | (6<<8)) #define SQLITE_CORRUPT_VTAB (SQLITE_CORRUPT | (1<<8)) #define SQLITE_CORRUPT_SEQUENCE (SQLITE_CORRUPT | (2<<8)) #define SQLITE_READONLY_RECOVERY (SQLITE_READONLY | (1<<8)) @@ -1577,11 +1578,13 @@ SQLITE_API int sqlite3_exec( #define SQLITE_CONSTRAINT_UNIQUE (SQLITE_CONSTRAINT | (8<<8)) #define SQLITE_CONSTRAINT_VTAB (SQLITE_CONSTRAINT | (9<<8)) #define SQLITE_CONSTRAINT_ROWID (SQLITE_CONSTRAINT |(10<<8)) +#define SQLITE_CONSTRAINT_PINNED (SQLITE_CONSTRAINT |(11<<8)) #define SQLITE_NOTICE_RECOVER_WAL (SQLITE_NOTICE | (1<<8)) #define SQLITE_NOTICE_RECOVER_ROLLBACK (SQLITE_NOTICE | (2<<8)) #define SQLITE_WARNING_AUTOINDEX (SQLITE_WARNING | (1<<8)) #define SQLITE_AUTH_USER (SQLITE_AUTH | (1<<8)) #define SQLITE_OK_LOAD_PERMANENTLY (SQLITE_OK | (1<<8)) +#define SQLITE_OK_SYMLINK (SQLITE_OK | (2<<8)) /* ** CAPI3REF: Flags For File Open Operations @@ -1610,6 +1613,7 @@ SQLITE_API int sqlite3_exec( #define SQLITE_OPEN_SHAREDCACHE 0x00020000 /* Ok for sqlite3_open_v2() */ #define SQLITE_OPEN_PRIVATECACHE 0x00040000 /* Ok for sqlite3_open_v2() */ #define SQLITE_OPEN_WAL 0x00080000 /* VFS only */ +#define SQLITE_OPEN_NOFOLLOW 0x01000000 /* Ok for sqlite3_open_v2() */ /* Reserved: 0x00F00000 */ @@ -2021,16 +2025,16 @@ struct sqlite3_io_methods { ** ^The [SQLITE_FCNTL_BUSYHANDLER] ** file-control may be invoked by SQLite on the database file handle ** shortly after it is opened in order to provide a custom VFS with access -** to the connections busy-handler callback. The argument is of type (void **) +** to the connection's busy-handler callback. The argument is of type (void**) ** - an array of two (void *) values. The first (void *) actually points -** to a function of type (int (*)(void *)). In order to invoke the connections +** to a function of type (int (*)(void *)). In order to invoke the connection's ** busy-handler, this function should be invoked with the second (void *) in ** the array as the only argument. If it returns non-zero, then the operation ** should be retried. If it returns zero, the custom VFS should abandon the ** current operation. ** **
    • [[SQLITE_FCNTL_TEMPFILENAME]] -** ^Application can invoke the [SQLITE_FCNTL_TEMPFILENAME] file-control +** ^Applications can invoke the [SQLITE_FCNTL_TEMPFILENAME] file-control ** to have SQLite generate a ** temporary filename using the same algorithm that is followed to generate ** temporary filenames for TEMP tables and other internal uses. The @@ -2143,12 +2147,18 @@ struct sqlite3_io_methods { ** not provide a mechanism to detect changes to MAIN only. Also, the ** [sqlite3_total_changes()] interface responds to internal changes only and ** omits changes made by other database connections. The -** [PRAGMA data_version] command provide a mechanism to detect changes to +** [PRAGMA data_version] command provides a mechanism to detect changes to ** a single attached database that occur due to other database connections, ** but omits changes implemented by the database connection on which it is ** called. This file control is the only mechanism to detect changes that ** happen either internally or externally and that are associated with ** a particular attached database. +** +**
    • [[SQLITE_FCNTL_CKPT_DONE]] +** The [SQLITE_FCNTL_CKPT_DONE] opcode is invoked from within a checkpoint +** in wal mode after the client has finished copying pages from the wal +** file to the database file, but before the *-shm file is updated to +** record the fact that the pages have been checkpointed. **
    */ #define SQLITE_FCNTL_LOCKSTATE 1 @@ -2186,6 +2196,7 @@ struct sqlite3_io_methods { #define SQLITE_FCNTL_LOCK_TIMEOUT 34 #define SQLITE_FCNTL_DATA_VERSION 35 #define SQLITE_FCNTL_SIZE_LIMIT 36 +#define SQLITE_FCNTL_CKPT_DONE 37 /* deprecated names */ #define SQLITE_GET_LOCKPROXYFILE SQLITE_FCNTL_GET_LOCKPROXYFILE @@ -2231,10 +2242,10 @@ typedef struct sqlite3_api_routines sqlite3_api_routin ** to 3 with SQLite [version 3.7.6] on [dateof:3.7.6]. Additional fields ** may be appended to the sqlite3_vfs object and the iVersion value ** may increase again in future versions of SQLite. -** Note that the structure -** of the sqlite3_vfs object changes in the transition from +** Note that due to an oversight, the structure +** of the sqlite3_vfs object changed in the transition from ** SQLite [version 3.5.9] to [version 3.6.0] on [dateof:3.6.0] -** and yet the iVersion field was not modified. +** and yet the iVersion field was not increased. ** ** The szOsFile field is the size of the subclassed [sqlite3_file] ** structure used by this VFS. mxPathname is the maximum length of @@ -2325,7 +2336,7 @@ typedef struct sqlite3_api_routines sqlite3_api_routin ** for exclusive access. ** ** ^At least szOsFile bytes of memory are allocated by SQLite -** to hold the [sqlite3_file] structure passed as the third +** to hold the [sqlite3_file] structure passed as the third ** argument to xOpen. The xOpen method does not have to ** allocate the structure; it should just fill it in. Note that ** the xOpen method must set the sqlite3_file.pMethods to either @@ -2662,7 +2673,7 @@ SQLITE_API int sqlite3_db_config(sqlite3*, int op, ... ** that causes the corresponding memory allocation to fail. ** ** The xInit method initializes the memory allocator. For example, -** it might allocate any require mutexes or initialize internal data +** it might allocate any required mutexes or initialize internal data ** structures. The xShutdown method is invoked (indirectly) by ** [sqlite3_shutdown()] and should deallocate any resources acquired ** by xInit. The pAppData pointer is used as the only parameter to @@ -2784,6 +2795,7 @@ struct sqlite3_mem_methods { ** memory allocation statistics. ^(When memory allocation statistics are ** disabled, the following SQLite interfaces become non-operational: **
      +**
    • [sqlite3_hard_heap_limit64()] **
    • [sqlite3_memory_used()] **
    • [sqlite3_memory_highwater()] **
    • [sqlite3_soft_heap_limit64()] @@ -2802,7 +2814,7 @@ struct sqlite3_mem_methods { **
      ^The SQLITE_CONFIG_PAGECACHE option specifies a memory pool ** that SQLite can use for the database page cache with the default page ** cache implementation. -** This configuration option is a no-op if an application-define page +** This configuration option is a no-op if an application-defined page ** cache implementation is loaded using the [SQLITE_CONFIG_PCACHE2]. ** ^There are three arguments to SQLITE_CONFIG_PAGECACHE: A pointer to ** 8-byte aligned memory (pMem), the size of each page cache line (sz), @@ -3287,7 +3299,7 @@ struct sqlite3_mem_methods { ** [[SQLITE_DBCONFIG_DQS_DML]] **
      SQLITE_DBCONFIG_DQS_DML **
      The SQLITE_DBCONFIG_DQS_DML option activates or deactivates -** the legacy [double-quoted string literal] misfeature for DML statement +** the legacy [double-quoted string literal] misfeature for DML statements ** only, that is DELETE, INSERT, SELECT, and UPDATE statements. The ** default value of this setting is determined by the [-DSQLITE_DQS] ** compile-time option. @@ -3301,6 +3313,49 @@ struct sqlite3_mem_methods { ** default value of this setting is determined by the [-DSQLITE_DQS] ** compile-time option. **
      +** +** [[SQLITE_DBCONFIG_TRUSTED_SCHEMA]] +**
      SQLITE_DBCONFIG_TRUSTED_SCHEMA +**
      The SQLITE_DBCONFIG_TRUSTED_SCHEMA option tells SQLite to +** assume that database schemas (the contents of the [sqlite_master] tables) +** are untainted by malicious content. +** When the SQLITE_DBCONFIG_TRUSTED_SCHEMA option is disabled, SQLite +** takes additional defensive steps to protect the application from harm +** including: +**
        +**
      • Prohibit the use of SQL functions inside triggers, views, +** CHECK constraints, DEFAULT clauses, expression indexes, +** partial indexes, or generated columns +** unless those functions are tagged with [SQLITE_INNOCUOUS]. +**
      • Prohibit the use of virtual tables inside of triggers or views +** unless those virtual tables are tagged with [SQLITE_VTAB_INNOCUOUS]. +**
      +** This setting defaults to "on" for legacy compatibility, however +** all applications are advised to turn it off if possible. This setting +** can also be controlled using the [PRAGMA trusted_schema] statement. +**
      +** +** [[SQLITE_DBCONFIG_LEGACY_FILE_FORMAT]] +**
      SQLITE_DBCONFIG_LEGACY_FILE_FORMAT +**
      The SQLITE_DBCONFIG_LEGACY_FILE_FORMAT option activates or deactivates +** the legacy file format flag. When activated, this flag causes all newly +** created database file to have a schema format version number (the 4-byte +** integer found at offset 44 into the database header) of 1. This in turn +** means that the resulting database file will be readable and writable by +** any SQLite version back to 3.0.0 ([dateof:3.0.0]). Without this setting, +** newly created databases are generally not understandable by SQLite versions +** prior to 3.3.0 ([dateof:3.3.0]). As these words are written, there +** is now scarcely any need to generated database files that are compatible +** all the way back to version 3.0.0, and so this setting is of little +** practical use, but is provided so that SQLite can continue to claim the +** ability to generate new database files that are compatible with version +** 3.0.0. +**

      Note that when the SQLITE_DBCONFIG_LEGACY_FILE_FORMAT setting is on, +** the [VACUUM] command will fail with an obscure error when attempting to +** process a table with generated columns and a descending index. This is +** not considered a bug since SQLite versions 3.3.0 and earlier do not support +** either generated columns or decending indexes. +**

      ** */ #define SQLITE_DBCONFIG_MAINDBNAME 1000 /* const char* */ @@ -3319,7 +3374,9 @@ struct sqlite3_mem_methods { #define SQLITE_DBCONFIG_DQS_DML 1013 /* int int* */ #define SQLITE_DBCONFIG_DQS_DDL 1014 /* int int* */ #define SQLITE_DBCONFIG_ENABLE_VIEW 1015 /* int int* */ -#define SQLITE_DBCONFIG_MAX 1015 /* Largest DBCONFIG */ +#define SQLITE_DBCONFIG_LEGACY_FILE_FORMAT 1016 /* int int* */ +#define SQLITE_DBCONFIG_TRUSTED_SCHEMA 1017 /* int int* */ +#define SQLITE_DBCONFIG_MAX 1017 /* Largest DBCONFIG */ /* ** CAPI3REF: Enable Or Disable Extended Result Codes @@ -3525,7 +3582,7 @@ SQLITE_API int sqlite3_total_changes(sqlite3*); ** ^The sqlite3_interrupt(D) call is in effect until all currently running ** SQL statements on [database connection] D complete. ^Any new SQL statements ** that are started after the sqlite3_interrupt() call and before the -** running statements reaches zero are interrupted as if they had been +** running statement count reaches zero are interrupted as if they had been ** running prior to the sqlite3_interrupt() call. ^New SQL statements ** that are started after the running statement count reaches zero are ** not effected by the sqlite3_interrupt(). @@ -3693,9 +3750,9 @@ SQLITE_API int sqlite3_busy_timeout(sqlite3*, int ms); ** Cindy | 21 ** ** -** There are two column (M==2) and three rows (N==3). Thus the +** There are two columns (M==2) and three rows (N==3). Thus the ** result table has 8 entries. Suppose the result table is stored -** in an array names azResult. Then azResult holds this content: +** in an array named azResult. Then azResult holds this content: ** **
       **        azResult[0] = "Name";
      @@ -3788,7 +3845,7 @@ SQLITE_API char *sqlite3_vsnprintf(int,char*,const cha
       **
       ** The SQLite core uses these three routines for all of its own
       ** internal memory allocation needs. "Core" in the previous sentence
      -** does not include operating-system specific VFS implementation.  The
      +** does not include operating-system specific [VFS] implementation.  The
       ** Windows VFS uses native malloc() and free() for some operations.
       **
       ** ^The sqlite3_malloc() routine returns a pointer to a block
      @@ -3849,19 +3906,6 @@ SQLITE_API char *sqlite3_vsnprintf(int,char*,const cha
       ** 4 byte boundary if the [SQLITE_4_BYTE_ALIGNED_MALLOC] compile-time
       ** option is used.
       **
      -** In SQLite version 3.5.0 and 3.5.1, it was possible to define
      -** the SQLITE_OMIT_MEMORY_ALLOCATION which would cause the built-in
      -** implementation of these routines to be omitted.  That capability
      -** is no longer provided.  Only built-in memory allocators can be used.
      -**
      -** Prior to SQLite version 3.7.10, the Windows OS interface layer called
      -** the system malloc() and free() directly when converting
      -** filenames between the UTF-8 encoding used by SQLite
      -** and whatever filename encoding is used by the particular Windows
      -** installation.  Memory allocation errors were detected, but
      -** they were reported back as [SQLITE_CANTOPEN] or
      -** [SQLITE_IOERR] rather than [SQLITE_NOMEM].
      -**
       ** The pointer arguments to [sqlite3_free()] and [sqlite3_realloc()]
       ** must be either NULL or else pointers obtained from a prior
       ** invocation of [sqlite3_malloc()] or [sqlite3_realloc()] that have
      @@ -3910,7 +3954,7 @@ SQLITE_API sqlite3_int64 sqlite3_memory_highwater(int 
       ** SQLite contains a high-quality pseudo-random number generator (PRNG) used to
       ** select random [ROWID | ROWIDs] when inserting new records into a table that
       ** already uses the largest possible [ROWID].  The PRNG is also used for
      -** the build-in random() and randomblob() SQL functions.  This interface allows
      +** the built-in random() and randomblob() SQL functions.  This interface allows
       ** applications to access the same PRNG for other purposes.
       **
       ** ^A call to this routine stores N bytes of randomness into buffer P.
      @@ -4284,10 +4328,8 @@ SQLITE_API void sqlite3_progress_handler(sqlite3*, int
       ** The sqlite3_open_v2() interface works like sqlite3_open()
       ** except that it accepts two additional parameters for additional control
       ** over the new database connection.  ^(The flags parameter to
      -** sqlite3_open_v2() can take one of
      -** the following three values, optionally combined with the 
      -** [SQLITE_OPEN_NOMUTEX], [SQLITE_OPEN_FULLMUTEX], [SQLITE_OPEN_SHAREDCACHE],
      -** [SQLITE_OPEN_PRIVATECACHE], and/or [SQLITE_OPEN_URI] flags:)^
      +** sqlite3_open_v2() must include, at a minimum, one of the following
      +** three flag combinations:)^
       **
       ** 
      ** ^(
      [SQLITE_OPEN_READONLY]
      @@ -4305,23 +4347,51 @@ SQLITE_API void sqlite3_progress_handler(sqlite3*, int ** sqlite3_open() and sqlite3_open16().)^ **
      ** +** In addition to the required flags, the following optional flags are +** also supported: +** +**
      +** ^(
      [SQLITE_OPEN_URI]
      +**
      The filename can be interpreted as a URI if this flag is set.
      )^ +** +** ^(
      [SQLITE_OPEN_MEMORY]
      +**
      The database will be opened as an in-memory database. The database +** is named by the "filename" argument for the purposes of cache-sharing, +** if shared cache mode is enabled, but the "filename" is otherwise ignored. +**
      )^ +** *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@freebsd.org Mon May 25 13:19:53 2020 Return-Path: Delivered-To: svn-src-all@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 3E86D2FF93D; Mon, 25 May 2020 13:19:53 +0000 (UTC) (envelope-from cy@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49VyPP0yq0z3X29; Mon, 25 May 2020 13:19:53 +0000 (UTC) (envelope-from cy@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 1C7E312C19; Mon, 25 May 2020 13:19:53 +0000 (UTC) (envelope-from cy@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04PDJqoZ059961; Mon, 25 May 2020 13:19:52 GMT (envelope-from cy@FreeBSD.org) Received: (from cy@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04PDJqrN059960; Mon, 25 May 2020 13:19:52 GMT (envelope-from cy@FreeBSD.org) Message-Id: <202005251319.04PDJqrN059960@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: cy set sender to cy@FreeBSD.org using -f From: Cy Schubert Date: Mon, 25 May 2020 13:19:52 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org Subject: svn commit: r361457 - in stable: 11/usr.sbin/unbound 12/usr.sbin/unbound X-SVN-Group: stable-12 X-SVN-Commit-Author: cy X-SVN-Commit-Paths: in stable: 11/usr.sbin/unbound 12/usr.sbin/unbound X-SVN-Commit-Revision: 361457 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2020 13:19:53 -0000 Author: cy Date: Mon May 25 13:19:52 2020 New Revision: 361457 URL: https://svnweb.freebsd.org/changeset/base/361457 Log: MFC r361438: Chase r361344. Update unbound version strings. Reported by: mike tancsa Modified: stable/12/usr.sbin/unbound/config.h Directory Properties: stable/12/ (props changed) Changes in other areas also in this revision: Modified: stable/11/usr.sbin/unbound/config.h Directory Properties: stable/11/ (props changed) Modified: stable/12/usr.sbin/unbound/config.h ============================================================================== --- stable/12/usr.sbin/unbound/config.h Mon May 25 13:16:35 2020 (r361456) +++ stable/12/usr.sbin/unbound/config.h Mon May 25 13:19:52 2020 (r361457) @@ -678,7 +678,7 @@ #define PACKAGE_NAME "unbound" /* Define to the full name and version of this package. */ -#define PACKAGE_STRING "unbound 1.9.6" +#define PACKAGE_STRING "unbound 1.10.1" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "unbound" @@ -687,7 +687,7 @@ #define PACKAGE_URL "" /* Define to the version of this package. */ -#define PACKAGE_VERSION "1.9.6" +#define PACKAGE_VERSION "1.10.1" /* default pidfile location */ #define PIDFILE "/var/unbound/unbound.pid" From owner-svn-src-all@freebsd.org Mon May 25 13:19:52 2020 Return-Path: Delivered-To: svn-src-all@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 DEFF92FF7CD; Mon, 25 May 2020 13:19:52 +0000 (UTC) (envelope-from cy@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49VyPN5d4Cz3WwP; Mon, 25 May 2020 13:19:52 +0000 (UTC) (envelope-from cy@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 BC03412C18; Mon, 25 May 2020 13:19:52 +0000 (UTC) (envelope-from cy@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04PDJqeM059955; Mon, 25 May 2020 13:19:52 GMT (envelope-from cy@FreeBSD.org) Received: (from cy@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04PDJqMn059954; Mon, 25 May 2020 13:19:52 GMT (envelope-from cy@FreeBSD.org) Message-Id: <202005251319.04PDJqMn059954@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: cy set sender to cy@FreeBSD.org using -f From: Cy Schubert Date: Mon, 25 May 2020 13:19:52 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org Subject: svn commit: r361457 - in stable: 11/usr.sbin/unbound 12/usr.sbin/unbound X-SVN-Group: stable-11 X-SVN-Commit-Author: cy X-SVN-Commit-Paths: in stable: 11/usr.sbin/unbound 12/usr.sbin/unbound X-SVN-Commit-Revision: 361457 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2020 13:19:52 -0000 Author: cy Date: Mon May 25 13:19:52 2020 New Revision: 361457 URL: https://svnweb.freebsd.org/changeset/base/361457 Log: MFC r361438: Chase r361344. Update unbound version strings. Reported by: mike tancsa Modified: stable/11/usr.sbin/unbound/config.h Directory Properties: stable/11/ (props changed) Changes in other areas also in this revision: Modified: stable/12/usr.sbin/unbound/config.h Directory Properties: stable/12/ (props changed) Modified: stable/11/usr.sbin/unbound/config.h ============================================================================== --- stable/11/usr.sbin/unbound/config.h Mon May 25 13:16:35 2020 (r361456) +++ stable/11/usr.sbin/unbound/config.h Mon May 25 13:19:52 2020 (r361457) @@ -678,7 +678,7 @@ #define PACKAGE_NAME "unbound" /* Define to the full name and version of this package. */ -#define PACKAGE_STRING "unbound 1.9.6" +#define PACKAGE_STRING "unbound 1.10.1" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "unbound" @@ -687,7 +687,7 @@ #define PACKAGE_URL "" /* Define to the version of this package. */ -#define PACKAGE_VERSION "1.9.6" +#define PACKAGE_VERSION "1.10.1" /* default pidfile location */ #define PIDFILE "/var/unbound/unbound.pid" From owner-svn-src-all@freebsd.org Mon May 25 14:31:33 2020 Return-Path: Delivered-To: svn-src-all@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 A20D4328F0E; Mon, 25 May 2020 14:31:33 +0000 (UTC) (envelope-from mw@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49W0054G1tz3d2v; Mon, 25 May 2020 14:31:33 +0000 (UTC) (envelope-from mw@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 8D0D913C04; Mon, 25 May 2020 14:31:33 +0000 (UTC) (envelope-from mw@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04PEVXHH003435; Mon, 25 May 2020 14:31:33 GMT (envelope-from mw@FreeBSD.org) Received: (from mw@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04PEVWWl003432; Mon, 25 May 2020 14:31:32 GMT (envelope-from mw@FreeBSD.org) Message-Id: <202005251431.04PEVWWl003432@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mw set sender to mw@FreeBSD.org using -f From: Marcin Wojtas Date: Mon, 25 May 2020 14:31:32 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361458 - in head/sys/arm64/qoriq: . clk X-SVN-Group: head X-SVN-Commit-Author: mw X-SVN-Commit-Paths: in head/sys/arm64/qoriq: . clk X-SVN-Commit-Revision: 361458 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2020 14:31:33 -0000 Author: mw Date: Mon May 25 14:31:32 2020 New Revision: 361458 URL: https://svnweb.freebsd.org/changeset/base/361458 Log: Add QorIQ platform clockgen driver. This patch adds classes and functions that can be used with various NXP QorIQ Layerscape SoCs. As for the clock topology - there is single platform PLL, which supplies clocks for the peripheral bus and additional PLLs for CPU cores. There can be multiple core PLLs (For example - LS1046A has two PLLs - CGAPLL1 and CGAPLL2). Each PLL has fixed dividers on output. The core PLLs are not accessible from dts. This is a preparation patch for NXP LS1046A SoC support. Submitted by: Dawid Gorecki Reviewed by: mmel Obtained from: Semihalf Sponsored by: Alstom Group Differential Revision: https://reviews.freebsd.org/D24351 Added: head/sys/arm64/qoriq/ head/sys/arm64/qoriq/clk/ head/sys/arm64/qoriq/clk/qoriq_clk_pll.c (contents, props changed) head/sys/arm64/qoriq/clk/qoriq_clk_pll.h (contents, props changed) head/sys/arm64/qoriq/clk/qoriq_clkgen.c (contents, props changed) head/sys/arm64/qoriq/clk/qoriq_clkgen.h (contents, props changed) Added: head/sys/arm64/qoriq/clk/qoriq_clk_pll.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/arm64/qoriq/clk/qoriq_clk_pll.c Mon May 25 14:31:32 2020 (r361458) @@ -0,0 +1,152 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2020 Alstom Group. + * Copyright (c) 2020 Semihalf. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include + +#include +#include + +#include + +#include "clkdev_if.h" + +struct qoriq_clk_pll_softc { + bus_addr_t offset; + + uint32_t mask; + uint32_t shift; + + uint32_t flags; +}; + +#define WR4(_clk, offset, val) \ + CLKDEV_WRITE_4(clknode_get_device(_clk), offset, val) +#define RD4(_clk, offset, val) \ + CLKDEV_READ_4(clknode_get_device(_clk), offset, val) +#define DEVICE_LOCK(_clk) \ + CLKDEV_DEVICE_LOCK(clknode_get_device(_clk)) +#define DEVICE_UNLOCK(_clk) \ + CLKDEV_DEVICE_UNLOCK(clknode_get_device(_clk)) + +#define QORIQ_PLL_KILL_BIT (1 << 31) + +static int +qoriq_clk_pll_init(struct clknode *clk, device_t dev) +{ + + clknode_init_parent_idx(clk, 0); + + return (0); +} + +static int +qoriq_clk_pll_recalc_freq(struct clknode *clk, uint64_t *freq) +{ + struct qoriq_clk_pll_softc *sc; + uint32_t mul; + + sc = clknode_get_softc(clk); + + RD4(clk, sc->offset, &mul); + + if (sc->flags & QORIQ_CLK_PLL_HAS_KILL_BIT && mul & QORIQ_PLL_KILL_BIT) + return (0); + + mul &= sc->mask; + mul >>= sc->shift; + + *freq = *freq * mul; + + return (0); +} + +static clknode_method_t qoriq_clk_pll_clknode_methods[] = { + CLKNODEMETHOD(clknode_init, qoriq_clk_pll_init), + CLKNODEMETHOD(clknode_recalc_freq, qoriq_clk_pll_recalc_freq), + + CLKNODEMETHOD_END +}; + +DEFINE_CLASS_1(qoriq_clk_pll_clknode, qoriq_clk_pll_clknode_class, + qoriq_clk_pll_clknode_methods, sizeof(struct qoriq_clk_pll_softc), + clknode_class); + +int +qoriq_clk_pll_register(struct clkdom *clkdom, + const struct qoriq_clk_pll_def *clkdef) +{ + char namebuf[QORIQ_CLK_NAME_MAX_LEN]; + struct qoriq_clk_pll_softc *sc; + struct clk_fixed_def def; + const char *parent_name; + struct clknode *clk; + int error; + int i; + + clk = clknode_create(clkdom, &qoriq_clk_pll_clknode_class, + &clkdef->clkdef); + if (clk == NULL) + return (1); + + sc = clknode_get_softc(clk); + sc->mask = clkdef->mask; + sc->shift = clkdef->shift; + sc->flags = clkdef->flags; + sc->offset = clkdef->offset; + + clknode_register(clkdom, clk); + + parent_name = clkdef->clkdef.name; + + def.clkdef.parent_names = &parent_name; + def.clkdef.parent_cnt = 1; + def.clkdef.name = namebuf; + def.mult = 1; + def.freq = 0; + + i = 0; + while (clkdef->dividers[i] != 0) { + def.div = clkdef->dividers[i]; + def.clkdef.id = clkdef->clkdef.id + i; + snprintf(namebuf, QORIQ_CLK_NAME_MAX_LEN, "%s_div%d", + parent_name, clkdef->dividers[i]); + + error = clknode_fixed_register(clkdom, &def); + if (error != 0) + return (error); + + i++; + } + + return (0); +} Added: head/sys/arm64/qoriq/clk/qoriq_clk_pll.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/arm64/qoriq/clk/qoriq_clk_pll.h Mon May 25 14:31:32 2020 (r361458) @@ -0,0 +1,53 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2020 Alstom Group. + * Copyright (c) 2020 Semihalf. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + * + */ + +#ifndef _QORIQ_CLK_PLL_H_ +#define _QORIQ_CLK_PLL_H_ + +#include + +#define QORIQ_CLK_PLL_HAS_KILL_BIT 0x01 + +struct qoriq_clk_pll_def { + struct clknode_init_def clkdef; + + bus_addr_t offset; + uint32_t mask; + uint8_t shift; + const uint8_t *dividers; + uint8_t flags; +}; + +int qoriq_clk_pll_register(struct clkdom *clkdom, + const struct qoriq_clk_pll_def *clkdef); + +#endif /* _QORIQ_CLK_PLL_H_ */ + Added: head/sys/arm64/qoriq/clk/qoriq_clkgen.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/arm64/qoriq/clk/qoriq_clkgen.c Mon May 25 14:31:32 2020 (r361458) @@ -0,0 +1,319 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2020 Alstom Group. + * Copyright (c) 2020 Semihalf. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include + +#include + +#include + +#include "clkdev_if.h" + +MALLOC_DEFINE(M_QORIQ_CLKGEN, "qoriq_clkgen", "qoriq_clkgen"); + +static struct resource_spec qoriq_clkgen_spec[] = { + { SYS_RES_MEMORY, 0, RF_ACTIVE }, + { -1, 0 } +}; + +static const char *qoriq_pll_parents_coreclk[] = { + QORIQ_CORECLK_NAME +}; + +static const char *qoriq_pll_parents_sysclk[] = { + QORIQ_SYSCLK_NAME +}; + +static int +qoriq_clkgen_ofw_mapper(struct clkdom *clkdom, uint32_t ncells, + phandle_t *cells, struct clknode **clk) +{ + + if (ncells != 2) + return (EINVAL); + + if (cells[0] > 5) + return (EINVAL); + + if (cells[0] == QORIQ_TYPE_SYSCLK || cells[0] == QORIQ_TYPE_CORECLK) + if (cells[1] != 0) + return (EINVAL); + + *clk = clknode_find_by_id(clkdom, QORIQ_CLK_ID(cells[0], cells[1])); + + if (clk == NULL) + return (EINVAL); + + return (0); +} + +static int +qoriq_clkgen_write_4(device_t dev, bus_addr_t addr, uint32_t val) +{ + struct qoriq_clkgen_softc *sc; + + sc = device_get_softc(dev); + + if (sc->flags & QORIQ_LITTLE_ENDIAN) + bus_write_4(sc->res, addr, htole32(val)); + else + bus_write_4(sc->res, addr, htobe32(val)); + return (0); +} + +static int +qoriq_clkgen_read_4(device_t dev, bus_addr_t addr, uint32_t *val) +{ + struct qoriq_clkgen_softc *sc; + + sc = device_get_softc(dev); + + if (sc->flags & QORIQ_LITTLE_ENDIAN) + *val = le32toh(bus_read_4(sc->res, addr)); + else + *val = be32toh(bus_read_4(sc->res, addr)); + return (0); +} + +static int +qoriq_clkgen_modify_4(device_t dev, bus_addr_t addr, uint32_t clr, + uint32_t set) +{ + struct qoriq_clkgen_softc *sc; + uint32_t reg; + + sc = device_get_softc(dev); + + if (sc->flags & QORIQ_LITTLE_ENDIAN) + reg = le32toh(bus_read_4(sc->res, addr)); + else + reg = be32toh(bus_read_4(sc->res, addr)); + + reg &= ~clr; + reg |= set; + + if (sc->flags & QORIQ_LITTLE_ENDIAN) + bus_write_4(sc->res, addr, htole32(reg)); + else + bus_write_4(sc->res, addr, htobe32(reg)); + + return (0); +} + +static void +qoriq_clkgen_device_lock(device_t dev) +{ + struct qoriq_clkgen_softc *sc; + + sc = device_get_softc(dev); + mtx_lock(&sc->mtx); +} + +static void +qoriq_clkgen_device_unlock(device_t dev) +{ + struct qoriq_clkgen_softc *sc; + + sc = device_get_softc(dev); + mtx_unlock(&sc->mtx); +} + +static device_method_t qoriq_clkgen_methods[] = { + DEVMETHOD(clkdev_write_4, qoriq_clkgen_write_4), + DEVMETHOD(clkdev_read_4, qoriq_clkgen_read_4), + DEVMETHOD(clkdev_modify_4, qoriq_clkgen_modify_4), + DEVMETHOD(clkdev_device_lock, qoriq_clkgen_device_lock), + DEVMETHOD(clkdev_device_unlock, qoriq_clkgen_device_unlock), + + DEVMETHOD_END +}; + +DEFINE_CLASS_0(qoriq_clkgen, qoriq_clkgen_driver, qoriq_clkgen_methods, + sizeof(struct qoriq_clkgen_softc)); + +static int +qoriq_clkgen_create_sysclk(device_t dev) +{ + struct qoriq_clkgen_softc *sc; + struct clk_fixed_def def; + const char *clkname; + phandle_t node; + uint32_t freq; + clk_t clock; + int rv; + + sc = device_get_softc(dev); + node = ofw_bus_get_node(dev); + sc->has_coreclk = false; + + memset(&def, 0, sizeof(def)); + + rv = OF_getencprop(node, "clock-frequency", &freq, sizeof(freq)); + if (rv > 0) { + def.clkdef.name = QORIQ_SYSCLK_NAME; + def.clkdef.id = QORIQ_CLK_ID(QORIQ_TYPE_SYSCLK, 0); + def.freq = freq; + + rv = clknode_fixed_register(sc->clkdom, &def); + return (rv); + } else { + /* + * As both sysclk and coreclk need to be accessible from + * device tree, create internal 1:1 divider nodes. + */ + def.clkdef.parent_cnt = 1; + def.freq = 0; + def.mult = 1; + def.div = 1; + + rv = clk_get_by_ofw_name(dev, node, "coreclk", &clock); + if (rv == 0) { + def.clkdef.name = QORIQ_CORECLK_NAME; + clkname = clk_get_name(clock); + def.clkdef.parent_names = &clkname; + def.clkdef.id = QORIQ_CLK_ID(QORIQ_TYPE_CORECLK, 0); + + rv = clknode_fixed_register(sc->clkdom, &def); + if (rv) + return (rv); + + sc->has_coreclk = true; + } + + rv = clk_get_by_ofw_name(dev, node, "sysclk", &clock); + if (rv != 0) { + rv = clk_get_by_ofw_index(dev, node, 0, &clock); + if (rv != 0) + return (rv); + } + + clkname = clk_get_name(clock); + def.clkdef.name = QORIQ_SYSCLK_NAME; + def.clkdef.id = QORIQ_CLK_ID(QORIQ_TYPE_SYSCLK, 0); + def.clkdef.parent_names = &clkname; + + rv = clknode_fixed_register(sc->clkdom, &def); + return (rv); + } +} + +int +qoriq_clkgen_attach(device_t dev) +{ + struct qoriq_clkgen_softc *sc; + int i, error; + + sc = device_get_softc(dev); + sc->dev = dev; + + if (bus_alloc_resources(dev, qoriq_clkgen_spec, &sc->res) != 0) { + device_printf(dev, "Cannot allocate resources.\n"); + return (ENXIO); + } + + mtx_init(&sc->mtx, device_get_nameunit(dev), NULL, MTX_DEF); + + sc->clkdom = clkdom_create(dev); + if (sc->clkdom == NULL) + panic("Cannot create clock domain.\n"); + + error = qoriq_clkgen_create_sysclk(dev); + if (error != 0) { + device_printf(dev, "Cannot create sysclk.\n"); + return (error); + } + + sc->pltfrm_pll_def->clkdef.parent_names = qoriq_pll_parents_sysclk; + sc->pltfrm_pll_def->clkdef.parent_cnt = 1; + error = qoriq_clk_pll_register(sc->clkdom, sc->pltfrm_pll_def); + if (error != 0) { + device_printf(dev, "Cannot create platform PLL.\n"); + return (error); + } + + for (i = 0; i < sc->cga_pll_num; i++) { + if (sc->has_coreclk) + sc->cga_pll[i]->clkdef.parent_names = qoriq_pll_parents_coreclk; + else + sc->cga_pll[i]->clkdef.parent_names = qoriq_pll_parents_sysclk; + sc->cga_pll[i]->clkdef.parent_cnt = 1; + + error = qoriq_clk_pll_register(sc->clkdom, sc->cga_pll[i]); + if (error != 0) { + device_printf(dev, "Cannot create CGA PLLs\n."); + return (error); + } + } + + /* + * Both CMUX and HWACCEL multiplexer nodes can be represented + * by using built in clk_mux nodes. + */ + for (i = 0; i < sc->mux_num; i++) { + error = clknode_mux_register(sc->clkdom, sc->mux[i]); + if (error != 0) { + device_printf(dev, "Cannot create MUX nodes.\n"); + return (error); + } + } + + if (sc->init_func != NULL) { + error = sc->init_func(dev); + if (error) { + device_printf(dev, "Clock init function failed.\n"); + return (error); + } + } + + clkdom_set_ofw_mapper(sc->clkdom, qoriq_clkgen_ofw_mapper); + + if (clkdom_finit(sc->clkdom) != 0) + panic("Cannot finalize clock domain initialization.\n"); + + if (bootverbose) + clkdom_dump(sc->clkdom); + + return (0); +} Added: head/sys/arm64/qoriq/clk/qoriq_clkgen.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/arm64/qoriq/clk/qoriq_clkgen.h Mon May 25 14:31:32 2020 (r361458) @@ -0,0 +1,96 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2020 Alstom Group. + * Copyright (c) 2020 Semihalf. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + * + */ + +#ifndef _QORIQ_CLKGEN_H_ +#define _QORIQ_CLKGEN_H_ + +#include +#include + +#include + +#define QORIQ_CLK_NAME_MAX_LEN 32 + +#define QORIQ_LITTLE_ENDIAN 0x01 + +#define QORIQ_TYPE_SYSCLK 0 +#define QORIQ_TYPE_CMUX 1 +#define QORIQ_TYPE_HWACCEL 2 +#define QORIQ_TYPE_FMAN 3 +#define QORIQ_TYPE_PLATFORM_PLL 4 +#define QORIQ_TYPE_CORECLK 5 +#define QORIQ_TYPE_INTERNAL 6 + +#define PLL_DIV1 0 +#define PLL_DIV2 1 +#define PLL_DIV3 2 +#define PLL_DIV4 3 +#define PLL_DIV5 4 +#define PLL_DIV6 5 +#define PLL_DIV7 6 +#define PLL_DIV8 7 +#define PLL_DIV9 8 +#define PLL_DIV10 9 +#define PLL_DIV11 10 +#define PLL_DIV12 11 +#define PLL_DIV13 12 +#define PLL_DIV14 13 +#define PLL_DIV15 14 +#define PLL_DIV16 15 + +#define QORIQ_CLK_ID(_type, _index) ((_type << 8) + _index) + +#define QORIQ_SYSCLK_NAME "clockgen_sysclk" +#define QORIQ_CORECLK_NAME "clockgen_coreclk" + +typedef int (*qoriq_init_func_t)(device_t); + +struct qoriq_clkgen_softc { + device_t dev; + struct resource *res; + struct clkdom *clkdom; + struct mtx mtx; + struct qoriq_clk_pll_def *pltfrm_pll_def; + struct qoriq_clk_pll_def **cga_pll; + int cga_pll_num; + struct clk_mux_def **mux; + int mux_num; + qoriq_init_func_t init_func; + uint32_t flags; + bool has_coreclk; +}; + +MALLOC_DECLARE(M_QORIQ_CLKGEN); +DECLARE_CLASS(qoriq_clkgen_driver); + +int qoriq_clkgen_attach(device_t); + +#endif /* _QORIQ_CLKGEN_H_ */ From owner-svn-src-all@freebsd.org Mon May 25 14:37:24 2020 Return-Path: Delivered-To: svn-src-all@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 6DFF4328A73; Mon, 25 May 2020 14:37:24 +0000 (UTC) (envelope-from carpeddiem@gmail.com) Received: from mail-io1-f42.google.com (mail-io1-f42.google.com [209.85.166.42]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "GTS CA 1O1" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 49W06r0xGRz3dXG; Mon, 25 May 2020 14:37:23 +0000 (UTC) (envelope-from carpeddiem@gmail.com) Received: by mail-io1-f42.google.com with SMTP id q129so9650158iod.6; Mon, 25 May 2020 07:37:23 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=0/CN5vye/l4yBhim2m2PX5T6j+kVvLreA/R+icB8JUY=; b=aV3Tk/baxCQnPdTOwrIjY9a+WO/VMk//CmHPEf8VENpOyiZwtnN++uK24holJUA7hn vBJQWp5dydlAWy83sjV4ZxCcgU4gC7FtPXU4ilHPti/EuKny0xW0S+Sj6hLzq9PVDaE6 WTFr9gkqN9TMrHqQ116WkdNdF3F5LIvCjzLd7PSg9ndHe/ARTONKNHwsM81hJSmLLqTm 2vD5ePSh9847ohDcP5tgokzwDzMwiDOcBVuND9hNWv1QOqh4YmFTeejkAiVhaLVIWHEP U4c+7YT5+0xXSegAWDxdOl7qC7WRUiV0eAOrwZLqkGctIuCjAizinwXiQnpmsTbLGzQp uucQ== X-Gm-Message-State: AOAM532srZ9TlW6l7FciTXRpo8VfO0GfbfjWWeRBHjexQYH7DkUgA8eK 2zCheXOIVl0Ltu7hg87KT0JcfZ8MAtsX726GWrOo641huds= X-Google-Smtp-Source: ABdhPJwyB2mXPuoME6naUA6ivh9+BAZZ5wIqtN9desCNWNKGNSeuyLPm2WOL0v70MA916+tVl/BGLnU88gWDBuLogrw= X-Received: by 2002:a05:6638:a47:: with SMTP id 7mr19162857jap.12.1590417441951; Mon, 25 May 2020 07:37:21 -0700 (PDT) MIME-Version: 1.0 References: <202005250456.04P4ufcs051922@repo.freebsd.org> In-Reply-To: <202005250456.04P4ufcs051922@repo.freebsd.org> From: Ed Maste Date: Mon, 25 May 2020 10:37:09 -0400 Message-ID: Subject: Re: svn commit: r361440 - head/sys/kern To: Mateusz Guzik Cc: src-committers , svn-src-all , svn-src-head Content-Type: text/plain; charset="UTF-8" X-Rspamd-Queue-Id: 49W06r0xGRz3dXG X-Spamd-Bar: ---- Authentication-Results: mx1.freebsd.org; none X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[]; ASN(0.00)[asn:15169, ipnet:209.85.128.0/17, country:US] X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2020 14:37:24 -0000 On Mon, 25 May 2020 at 00:56, Mateusz Guzik wrote: > > Author: mjg > Date: Mon May 25 04:56:41 2020 > New Revision: 361440 > URL: https://svnweb.freebsd.org/changeset/base/361440 > > Log: > vfs: restore mtx-protected foffset locking for 32 bit platforms Thanks. The BBB smoke test is green again: https://ci.freebsd.org/hwlab/job/FreeBSD-device-head-beaglebone-test/4563/ From owner-svn-src-all@freebsd.org Mon May 25 14:45:20 2020 Return-Path: Delivered-To: svn-src-all@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 07916329521; Mon, 25 May 2020 14:45:20 +0000 (UTC) (envelope-from mw@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49W0Hz6SHcz3fXX; Mon, 25 May 2020 14:45:19 +0000 (UTC) (envelope-from mw@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 D88E013F0E; Mon, 25 May 2020 14:45:19 +0000 (UTC) (envelope-from mw@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04PEjJlj015892; Mon, 25 May 2020 14:45:19 GMT (envelope-from mw@FreeBSD.org) Received: (from mw@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04PEjJdZ015889; Mon, 25 May 2020 14:45:19 GMT (envelope-from mw@FreeBSD.org) Message-Id: <202005251445.04PEjJdZ015889@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mw set sender to mw@FreeBSD.org using -f From: Marcin Wojtas Date: Mon, 25 May 2020 14:45:19 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361459 - in head/sys: arm64/conf arm64/qoriq/clk conf X-SVN-Group: head X-SVN-Commit-Author: mw X-SVN-Commit-Paths: in head/sys: arm64/conf arm64/qoriq/clk conf X-SVN-Commit-Revision: 361459 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2020 14:45:20 -0000 Author: mw Date: Mon May 25 14:45:18 2020 New Revision: 361459 URL: https://svnweb.freebsd.org/changeset/base/361459 Log: Add LS1046A clockgen driver. Driver provides probe and attach functions for LS1046A clockgen and passes configuration information to QorIQ clockgen class. It may be used as a reference implementation for different QorIQ clockgen devices. Submitted by: Dawid Gorecki Reviewed by: mmel, manu Obtained from: Semihalf Sponsored by: Alstom Group Differential Revision: https://reviews.freebsd.org/D24352 Added: head/sys/arm64/qoriq/clk/ls1046a_clkgen.c (contents, props changed) Modified: head/sys/arm64/conf/GENERIC head/sys/conf/files.arm64 head/sys/conf/options.arm64 Modified: head/sys/arm64/conf/GENERIC ============================================================================== --- head/sys/arm64/conf/GENERIC Mon May 25 14:31:32 2020 (r361458) +++ head/sys/arm64/conf/GENERIC Mon May 25 14:45:18 2020 (r361459) @@ -118,6 +118,7 @@ options SOC_INTEL_STRATIX10 options SOC_BRCM_BCM2837 options SOC_BRCM_BCM2838 options SOC_MARVELL_8K +options SOC_NXP_LS options SOC_ROCKCHIP_RK3328 options SOC_ROCKCHIP_RK3399 options SOC_XILINX_ZYNQ Added: head/sys/arm64/qoriq/clk/ls1046a_clkgen.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/arm64/qoriq/clk/ls1046a_clkgen.c Mon May 25 14:45:18 2020 (r361459) @@ -0,0 +1,255 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2020 Alstom Group. + * Copyright (c) 2020 Semihalf. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include + +#include + +#include + +static uint8_t ls1046a_pltfrm_pll_divs[] = { + 2, 4, 0 +}; + +static struct qoriq_clk_pll_def ls1046a_pltfrm_pll = { + .clkdef = { + .name = "ls1046a_platform_pll", + .id = QORIQ_CLK_ID(QORIQ_TYPE_PLATFORM_PLL, 0), + .flags = 0 + }, + .offset = 0xC00, + .shift = 1, + .mask = 0x7E, + .dividers = ls1046a_pltfrm_pll_divs, + .flags = 0 +}; + +static const uint8_t ls1046a_cga1_pll_divs[] = { + 2, 3, 4, 0 +}; + +static struct qoriq_clk_pll_def ls1046a_cga1_pll = { + .clkdef = { + .name = "ls1046a_cga_pll1", + .id = QORIQ_CLK_ID(QORIQ_TYPE_INTERNAL, 0), + .flags = 0 + }, + .offset = 0x800, + .shift = 1, + .mask = 0x1FE, + .dividers = ls1046a_cga1_pll_divs, + .flags = QORIQ_CLK_PLL_HAS_KILL_BIT +}; + +static struct qoriq_clk_pll_def ls1046a_cga2_pll = { + .clkdef = { + .name = "ls1046a_cga_pll2", + .id = QORIQ_CLK_ID(QORIQ_TYPE_INTERNAL, 20), + .flags = 0 + }, + .offset = 0x820, + .shift = 1, + .mask = 0x1FE, + .dividers = ls1046a_cga1_pll_divs, + .flags = QORIQ_CLK_PLL_HAS_KILL_BIT +}; + +static struct qoriq_clk_pll_def *ls1046a_cga_plls[] = { + &ls1046a_cga1_pll, + &ls1046a_cga2_pll +}; + +static const char *ls1046a_cmux0_parent_names[] = { + "ls1046a_cga_pll1", + NULL, + "ls1046a_cga_pll1_div2", + NULL, + "ls1046a_cga_pll2", + NULL, + "ls1046a_cga_pll2_div2" +}; + +static struct clk_mux_def ls1046a_cmux0 = { + .clkdef = { + .name = "ls1046a_cmux0", + .id = QORIQ_CLK_ID(QORIQ_TYPE_CMUX, 0), + .parent_names = ls1046a_cmux0_parent_names, + .parent_cnt = nitems(ls1046a_cmux0_parent_names), + .flags = 0 + }, + .offset = 0, + .shift = 27, + .width = 4, + .mux_flags = 0 +}; + +static const char *ls1046a_hwaccel1_parent_names[] = { + NULL, + NULL, + "ls1046a_cga_pll1_div2", + "ls1046a_cga_pll1_div3", + "ls1046a_cga_pll1_div4", + "ls1046a_platform_pll", + "ls1046a_cga_pll2_div2", + "ls1046a_cga_pll2_div3" +}; + +static const char *ls1046a_hwaccel2_parent_names[] = { + NULL, + "ls1046a_cga_pll2", + "ls1046a_cga_pll2_div2", + "ls1046a_cga_pll2_div3", + NULL, + NULL, + "ls1046a_cga_pll1_div2" +}; + +static struct clk_mux_def ls1046a_hwaccel1 = { + .clkdef = { + .name = "ls1046a_hwaccel1", + .id = QORIQ_CLK_ID(QORIQ_TYPE_HWACCEL, 0), + .parent_names = ls1046a_hwaccel1_parent_names, + .parent_cnt = nitems(ls1046a_hwaccel1_parent_names), + .flags = 0 + }, + .offset = 0x10, + .shift = 27, + .width = 4, + .mux_flags = 0 +}; + +static struct clk_mux_def ls1046a_hwaccel2 = { + .clkdef = { + .name = "ls1046a_hwaccel2", + .id = QORIQ_CLK_ID(QORIQ_TYPE_HWACCEL, 1), + .parent_names = ls1046a_hwaccel2_parent_names, + .parent_cnt = nitems(ls1046a_hwaccel2_parent_names), + .flags = 0 + }, + .offset = 0x30, + .shift = 27, + .width = 4, + .mux_flags = 0 +}; + +static struct clk_mux_def *ls1046a_mux_nodes[] = { + &ls1046a_cmux0, + &ls1046a_hwaccel1, + &ls1046a_hwaccel2 +}; + +const char *ls1046a_fman_srcs[] = { + "ls1046a_hwaccel1" +}; + +static int ls1046a_clkgen_probe(device_t); +static int ls1046a_clkgen_attach(device_t); + +static device_method_t ls1046a_clkgen_methods[] = { + DEVMETHOD(device_probe, ls1046a_clkgen_probe), + DEVMETHOD(device_attach, ls1046a_clkgen_attach), + + DEVMETHOD_END +}; + +DEFINE_CLASS_1(ls1046a_clkgen, ls1046a_clkgen_driver, ls1046a_clkgen_methods, + sizeof(struct qoriq_clkgen_softc), qoriq_clkgen_driver); + +static devclass_t ls1046a_clkgen_devclass; + +EARLY_DRIVER_MODULE(ls1046a_clkgen, simplebus, ls1046a_clkgen_driver, + ls1046a_clkgen_devclass, 0, 0, BUS_PASS_BUS + BUS_PASS_ORDER_MIDDLE); + +static int +ls1046a_fman_init(device_t dev) +{ + struct qoriq_clkgen_softc *sc; + struct clk_fixed_def def; + int error; + + sc = device_get_softc(dev); + + def.clkdef.name = "ls1046a_fman", + def.clkdef.id = QORIQ_CLK_ID(QORIQ_TYPE_FMAN, 0), + def.clkdef.parent_names = ls1046a_fman_srcs; + def.clkdef.parent_cnt = nitems(ls1046a_fman_srcs); + def.clkdef.flags = 0; + def.freq = 0; + def.mult = 1; + def.div = 1; + def.fixed_flags = 0; + + error = clknode_fixed_register(sc->clkdom, &def); + return (error); +} + +static int +ls1046a_clkgen_probe(device_t dev) +{ + + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + if(!ofw_bus_is_compatible(dev, "fsl,ls1046a-clockgen")) + return (ENXIO); + + device_set_desc(dev, "LS1046A clockgen"); + return (BUS_PROBE_DEFAULT); +} + +static int +ls1046a_clkgen_attach(device_t dev) +{ + struct qoriq_clkgen_softc *sc; + + sc = device_get_softc(dev); + + sc->pltfrm_pll_def = &ls1046a_pltfrm_pll; + sc->cga_pll = ls1046a_cga_plls; + sc->cga_pll_num = nitems(ls1046a_cga_plls); + sc->mux = ls1046a_mux_nodes; + sc->mux_num = nitems(ls1046a_mux_nodes); + sc->init_func = ls1046a_fman_init; + sc->flags = 0; + + return (qoriq_clkgen_attach(dev)); +} Modified: head/sys/conf/files.arm64 ============================================================================== --- head/sys/conf/files.arm64 Mon May 25 14:31:32 2020 (r361458) +++ head/sys/conf/files.arm64 Mon May 25 14:45:18 2020 (r361459) @@ -196,6 +196,9 @@ arm64/coresight/coresight-tmc.c standard arm64/intel/firmware.c optional soc_intel_stratix10 arm64/intel/stratix10-soc-fpga-mgr.c optional soc_intel_stratix10 arm64/intel/stratix10-svc.c optional soc_intel_stratix10 +arm64/qoriq/clk/ls1046a_clkgen.c optional clk SOC_NXP_LS +arm64/qoriq/clk/qoriq_clk_pll.c optional clk SOC_NXP_LS +arm64/qoriq/clk/qoriq_clkgen.c optional clk SOC_NXP_LS arm64/qualcomm/qcom_gcc.c optional qcom_gcc fdt contrib/vchiq/interface/compat/vchi_bsd.c optional vchiq soc_brcm_bcm2837 \ compile-with "${NORMAL_C} -DUSE_VCHIQ_ARM -D__VCCOREVER__=0x04000000 -I$S/contrib/vchiq" Modified: head/sys/conf/options.arm64 ============================================================================== --- head/sys/conf/options.arm64 Mon May 25 14:31:32 2020 (r361458) +++ head/sys/conf/options.arm64 Mon May 25 14:45:18 2020 (r361459) @@ -25,6 +25,7 @@ SOC_CAVM_THUNDERX opt_soc.h SOC_HISI_HI6220 opt_soc.h SOC_INTEL_STRATIX10 opt_soc.h SOC_MARVELL_8K opt_soc.h +SOC_NXP_LS opt_soc.h SOC_ROCKCHIP_RK3328 opt_soc.h SOC_ROCKCHIP_RK3399 opt_soc.h SOC_XILINX_ZYNQ opt_soc.h From owner-svn-src-all@freebsd.org Mon May 25 14:55:38 2020 Return-Path: Delivered-To: svn-src-all@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 02E4C32989E; Mon, 25 May 2020 14:55:38 +0000 (UTC) (envelope-from mw@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49W0Ws6f1Cz3gSp; Mon, 25 May 2020 14:55:37 +0000 (UTC) (envelope-from mw@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 DF43B13EB9; Mon, 25 May 2020 14:55:37 +0000 (UTC) (envelope-from mw@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04PEtbHo021866; Mon, 25 May 2020 14:55:37 GMT (envelope-from mw@FreeBSD.org) Received: (from mw@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04PEtbSp021864; Mon, 25 May 2020 14:55:37 GMT (envelope-from mw@FreeBSD.org) Message-Id: <202005251455.04PEtbSp021864@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mw set sender to mw@FreeBSD.org using -f From: Marcin Wojtas Date: Mon, 25 May 2020 14:55:37 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361460 - in head/sys: arm64/conf arm64/qoriq conf X-SVN-Group: head X-SVN-Commit-Author: mw X-SVN-Commit-Paths: in head/sys: arm64/conf arm64/qoriq conf X-SVN-Commit-Revision: 361460 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2020 14:55:38 -0000 Author: mw Date: Mon May 25 14:55:37 2020 New Revision: 361460 URL: https://svnweb.freebsd.org/changeset/base/361460 Log: Add GPIO support for QorIQ boards. This patch adds a GPIO controller support targeted for NXP LS1046A SoC. The driver implements the following features: * setting direction of each pin (IN or OUT) * setting the mode of output pins (PUSHPULL or OPENDRAIN) * setting the state of each output pin (1 or 0) * reading the state of each input pin (1 or 0) Submitted by: Kamil Koczurek Dawid Gorecki Reviewed by: manu Obtained from: Semihalf Sponsored by: Alstom Group Differential Revision: https://reviews.freebsd.org/D24353 Added: head/sys/arm64/qoriq/ls1046_gpio.c (contents, props changed) Modified: head/sys/arm64/conf/GENERIC head/sys/conf/files.arm64 Modified: head/sys/arm64/conf/GENERIC ============================================================================== --- head/sys/arm64/conf/GENERIC Mon May 25 14:45:18 2020 (r361459) +++ head/sys/arm64/conf/GENERIC Mon May 25 14:55:37 2020 (r361460) @@ -248,6 +248,7 @@ device gpio device gpioled device fdt_pinctrl device gpioregulator +device ls1046_gpio # LS1046A GPIO controller device mv_gpio # Marvell GPIO controller device mvebu_pinctrl # Marvell Pinmux Controller device rk_gpio # RockChip GPIO Controller Added: head/sys/arm64/qoriq/ls1046_gpio.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/arm64/qoriq/ls1046_gpio.c Mon May 25 14:55:37 2020 (r361460) @@ -0,0 +1,586 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2020 Alstom Group. + * Copyright (c) 2020 Semihalf. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include + +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include "gpio_if.h" + +/* constants */ +enum { + DIRECTION = 0x0, + OPEN_DRAIN = 0x4, + DATA = 0x8, + INT_EV = 0xC, + INT_MASK = 0x10, + INT_CTRL = 0x14 +}; + +#define PIN_COUNT 32 +#define DEFAULT_CAPS \ + (GPIO_PIN_INPUT | GPIO_PIN_OUTPUT | \ + GPIO_PIN_OPENDRAIN | GPIO_PIN_PUSHPULL) +#define GPIO(n) (1 << (31 - (n))) + +struct gpio_res { + int mem_rid; + struct resource *mem_res; +}; + +/* software context */ +struct gpio_softc { + device_t dev; + device_t busdev; + struct gpio_res res; + struct gpio_pin setup[PIN_COUNT]; + struct mtx mutex; +}; + +#define QORIQ_GPIO_LOCK(_sc) mtx_lock_spin(&(_sc)->mutex) +#define QORIQ_GPIO_UNLOCK(_sc) mtx_unlock_spin(&(_sc)->mutex) +#define QORIQ_GPIO_ASSERT_LOCKED(_sc) mtx_assert(&(_sc)->mutex, MA_OWNED) + +/* prototypes */ +/* helpers */ +static int qoriq_make_gpio_res(device_t, struct gpio_res*); +static uint32_t qoriq_gpio_reg_read(device_t, uint32_t); +static void qoriq_gpio_reg_write(device_t, uint32_t, uint32_t); +static void qoriq_gpio_reg_set(device_t, uint32_t, uint32_t); +static void qoriq_gpio_reg_clear(device_t, uint32_t, uint32_t); +static void qoriq_gpio_out_en(device_t, uint32_t, uint8_t); +static void qoriq_gpio_value_set(device_t, uint32_t, uint8_t); +static uint32_t qoriq_gpio_value_get(device_t, uint32_t); +static void qoriq_gpio_open_drain_set(device_t, uint32_t, uint8_t); +static int qoriq_gpio_configure(device_t, uint32_t, uint32_t); + +/* GPIO API */ +static int qoriq_gpio_probe(device_t); +static int qoriq_gpio_attach(device_t); +static device_t qoriq_gpio_get_bus(device_t); +static int qoriq_gpio_pin_max(device_t, int*); +static int qoriq_gpio_pin_getname(device_t, uint32_t, char*); +static int qoriq_gpio_pin_getflags(device_t, uint32_t, uint32_t*); +static int qoriq_gpio_pin_setflags(device_t, uint32_t, uint32_t); +static int qoriq_gpio_pin_getcaps(device_t, uint32_t, uint32_t*); +static int qoriq_gpio_pin_get(device_t, uint32_t, uint32_t*); +static int qoriq_gpio_pin_set(device_t, uint32_t, uint32_t); +static int qoriq_gpio_pin_toggle(device_t, uint32_t); +static int qoriq_gpio_map_gpios(device_t, phandle_t, phandle_t, + int, pcell_t*, uint32_t*, uint32_t*); +static int qoriq_gpio_pin_access_32(device_t, uint32_t, uint32_t, uint32_t, + uint32_t*); +static int qoriq_gpio_pin_config_32(device_t, uint32_t, uint32_t, uint32_t*); + + +static device_method_t qoriq_gpio_methods[] = { + DEVMETHOD(device_probe, qoriq_gpio_probe), + DEVMETHOD(device_attach, qoriq_gpio_attach), + + /* GPIO protocol */ + DEVMETHOD(gpio_get_bus, qoriq_gpio_get_bus), + DEVMETHOD(gpio_pin_max, qoriq_gpio_pin_max), + DEVMETHOD(gpio_pin_getname, qoriq_gpio_pin_getname), + DEVMETHOD(gpio_pin_getflags, qoriq_gpio_pin_getflags), + DEVMETHOD(gpio_pin_setflags, qoriq_gpio_pin_setflags), + DEVMETHOD(gpio_pin_getcaps, qoriq_gpio_pin_getcaps), + DEVMETHOD(gpio_pin_get, qoriq_gpio_pin_get), + DEVMETHOD(gpio_pin_set, qoriq_gpio_pin_set), + DEVMETHOD(gpio_pin_toggle, qoriq_gpio_pin_toggle), + DEVMETHOD(gpio_map_gpios, qoriq_gpio_map_gpios), + DEVMETHOD(gpio_pin_access_32, qoriq_gpio_pin_access_32), + DEVMETHOD(gpio_pin_config_32, qoriq_gpio_pin_config_32), + + DEVMETHOD_END +}; + +static driver_t gpio_driver = { + "gpio", + qoriq_gpio_methods, + sizeof(struct gpio_softc), +}; + +static devclass_t gpio_devclass; + +DRIVER_MODULE(gpio, simplebus, gpio_driver, gpio_devclass, 0, 0); +MODULE_VERSION(gpio, 1); + +/* + * helpers + */ +static int +qoriq_make_gpio_res(device_t dev, struct gpio_res *out) +{ + + out->mem_res = bus_alloc_resource_any(dev, SYS_RES_MEMORY, + &out->mem_rid, RF_ACTIVE | RF_SHAREABLE); + + if(out->mem_res == NULL) { + return (1); + } else { + return (0); + } +} + +static uint32_t +qoriq_gpio_reg_read(device_t dev, uint32_t reg) +{ + struct gpio_softc *sc = device_get_softc(dev); + uint32_t result; + + QORIQ_GPIO_ASSERT_LOCKED(sc); + result = bus_read_4(sc->res.mem_res, reg); + return be32toh(result); +} + +static void +qoriq_gpio_reg_write(device_t dev, uint32_t reg, uint32_t val) +{ + struct gpio_softc *sc = device_get_softc(dev); + + QORIQ_GPIO_ASSERT_LOCKED(sc); + val = htobe32(val); + + bus_write_4(sc->res.mem_res, reg, val); + bus_barrier(sc->res.mem_res, reg, 4, BUS_SPACE_BARRIER_READ + | BUS_SPACE_BARRIER_WRITE); +} + +static void +qoriq_gpio_reg_set(device_t dev, uint32_t reg, uint32_t pin) +{ + uint32_t reg_val; + + reg_val = qoriq_gpio_reg_read(dev, reg); + reg_val |= GPIO(pin); + qoriq_gpio_reg_write(dev, reg, reg_val); +} + +static void +qoriq_gpio_reg_clear(device_t dev, uint32_t reg, uint32_t pin) +{ + uint32_t reg_val; + + reg_val = qoriq_gpio_reg_read(dev, reg); + reg_val &= ~(GPIO(pin)); + qoriq_gpio_reg_write(dev, reg, reg_val); +} + +static void +qoriq_gpio_out_en(device_t dev, uint32_t pin, uint8_t enable) +{ + + if (pin >= PIN_COUNT) + return; + + if (enable) { + qoriq_gpio_reg_set(dev, DIRECTION, pin); + } else { + qoriq_gpio_reg_clear(dev, DIRECTION, pin); + } +} + +static void +qoriq_gpio_value_set(device_t dev, uint32_t pin, uint8_t val) +{ + + if (pin >= PIN_COUNT) + return; + + if (val) { + qoriq_gpio_reg_set(dev, DATA, pin); + } else { + qoriq_gpio_reg_clear(dev, DATA, pin); + } +} + +static uint32_t +qoriq_gpio_value_get(device_t dev, uint32_t pin) +{ + uint32_t reg_val; + + if (pin >= PIN_COUNT) + return (0); + + reg_val = qoriq_gpio_reg_read(dev, DATA); + return ((reg_val & GPIO(pin)) == 0 ? 0 : 1); +} + +static void +qoriq_gpio_open_drain_set(device_t dev, uint32_t pin, uint8_t val) +{ + + if (pin >= PIN_COUNT) { + return; + } + + if (val) { + qoriq_gpio_reg_set(dev, OPEN_DRAIN, pin); + } else { + qoriq_gpio_reg_clear(dev, OPEN_DRAIN, pin); + } +} + +static int +qoriq_gpio_configure(device_t dev, uint32_t pin, uint32_t flags) +{ + struct gpio_softc *sc = device_get_softc(dev); + uint32_t newflags; + + if (pin >= PIN_COUNT) { + return (EINVAL); + } + + /* + * Pin cannot function as input and output at the same time. + * The same applies to open-drain and push-pull functionality. + */ + if (((flags & GPIO_PIN_INPUT) && (flags & GPIO_PIN_OUTPUT)) + || ((flags & GPIO_PIN_OPENDRAIN) && (flags & GPIO_PIN_PUSHPULL))) { + return (EINVAL); + } + + QORIQ_GPIO_ASSERT_LOCKED(sc); + + if (flags & GPIO_PIN_INPUT) { + newflags = GPIO_PIN_INPUT; + qoriq_gpio_out_en(dev, pin, 0); + } + + if (flags & GPIO_PIN_OUTPUT) { + newflags = GPIO_PIN_OUTPUT; + qoriq_gpio_out_en(dev, pin, 1); + + if (flags & GPIO_PIN_OPENDRAIN) { + newflags |= GPIO_PIN_OPENDRAIN; + qoriq_gpio_open_drain_set(dev, pin, 1); + } else { + newflags |= GPIO_PIN_PUSHPULL; + qoriq_gpio_open_drain_set(dev, pin, 0); + } + } + + sc->setup[pin].gp_flags = newflags; + + return (0); +} + +/* GPIO API */ +static int +qoriq_gpio_probe(device_t dev) +{ + + if (!ofw_bus_status_okay(dev)) { + return (ENXIO); + } + + if (!ofw_bus_is_compatible(dev, "fsl,qoriq-gpio")) { + return (ENXIO); + } + + device_set_desc(dev, "Integrated GPIO Controller"); + return (0); +} + +static int +qoriq_gpio_attach(device_t dev) +{ + struct gpio_softc *sc = device_get_softc(dev); + int i; + + if(qoriq_make_gpio_res(dev, &sc->res) != 0) { + return (ENXIO); + } + + for(i = 0; i < PIN_COUNT; i++) { + sc->setup[i].gp_caps = DEFAULT_CAPS; + } + + sc->dev = dev; + + sc->busdev = gpiobus_attach_bus(dev); + if(sc->busdev == NULL) { + return (ENXIO); + } + + return (0); +} + +static device_t +qoriq_gpio_get_bus(device_t dev) +{ + struct gpio_softc *softc = device_get_softc(dev); + + return (softc->busdev); +} + +static int +qoriq_gpio_pin_max(device_t dev, int *maxpin) +{ + + if(maxpin == NULL) { + return (EINVAL); + } + + *maxpin = PIN_COUNT - 1; + return (0); +} + +static int +qoriq_gpio_pin_getname(device_t dev, uint32_t pin, char *name) +{ + + if(name == NULL || pin >= PIN_COUNT) { + return (EINVAL); + } + + snprintf(name, GPIOMAXNAME, "pin %d", pin); + + return (0); +} + +static int +qoriq_gpio_pin_getflags(device_t dev, uint32_t pin, uint32_t *pflags) +{ + struct gpio_softc *sc = device_get_softc(dev); + + if (pflags == NULL || pin >= PIN_COUNT) { + return (EINVAL); + } + + QORIQ_GPIO_LOCK(sc); + *pflags = sc->setup[pin].gp_flags; + QORIQ_GPIO_UNLOCK(sc); + + return (0); +} + +static int +qoriq_gpio_pin_setflags(device_t dev, uint32_t pin, uint32_t flags) +{ + struct gpio_softc *sc = device_get_softc(dev); + int ret; + + if (pin >= PIN_COUNT) + return (EINVAL); + + /* Check for unwanted flags. */ + QORIQ_GPIO_LOCK(sc); + if ((flags & sc->setup[pin].gp_caps) != flags) { + QORIQ_GPIO_UNLOCK(sc); + return (EINVAL); + } + + ret = qoriq_gpio_configure(dev, pin, flags); + + QORIQ_GPIO_UNLOCK(sc); + return (ret); +} + +static int +qoriq_gpio_pin_getcaps(device_t dev, uint32_t pin, uint32_t *caps) +{ + struct gpio_softc *sc = device_get_softc(dev); + + if (caps == NULL || pin >= PIN_COUNT) { + return (EINVAL); + } + + QORIQ_GPIO_LOCK(sc); + *caps = sc->setup[pin].gp_caps; + QORIQ_GPIO_UNLOCK(sc); + + return (0); +} + +static int +qoriq_gpio_pin_get(device_t dev, uint32_t pin, uint32_t *value) +{ + struct gpio_softc *sc = device_get_softc(dev); + + if (value == NULL || pin >= PIN_COUNT) { + return (EINVAL); + } + + QORIQ_GPIO_LOCK(sc); + *value = qoriq_gpio_value_get(dev, pin); + QORIQ_GPIO_UNLOCK(sc); + return (0); +} + +static int +qoriq_gpio_pin_set(device_t dev, uint32_t pin, uint32_t value) +{ + struct gpio_softc *sc = device_get_softc(dev); + + if (pin >= PIN_COUNT) { + return (EINVAL); + } + + QORIQ_GPIO_LOCK(sc); + qoriq_gpio_value_set(dev, pin, value); + QORIQ_GPIO_UNLOCK(sc); + return (0); +} + +static int +qoriq_gpio_pin_toggle(device_t dev, uint32_t pin) +{ + struct gpio_softc *sc; + uint32_t value; + + if (pin >= PIN_COUNT) { + return (EINVAL); + } + + sc = device_get_softc(dev); + + QORIQ_GPIO_LOCK(sc); + value = qoriq_gpio_reg_read(dev, DATA); + if (value & (1 << pin)) + value &= ~(1 << pin); + else + value |= (1 << pin); + qoriq_gpio_reg_write(dev, DATA, value); + QORIQ_GPIO_UNLOCK(sc); + + return (0); +} + +static int +qoriq_gpio_map_gpios(device_t bus, phandle_t dev, phandle_t gparent, int gcells, + pcell_t *gpios, uint32_t *pin, uint32_t *flags) +{ + struct gpio_softc *sc = device_get_softc(bus); + int err; + + if (gpios[0] >= PIN_COUNT) + return (EINVAL); + + QORIQ_GPIO_LOCK(sc); + err = qoriq_gpio_configure(bus, gpios[0], gpios[1]); + QORIQ_GPIO_UNLOCK(sc); + + if(err == 0) { + *pin = gpios[0]; + *flags = gpios[1]; + } + + return (err); +} + +static int +qoriq_gpio_pin_access_32(device_t dev, uint32_t first_pin, uint32_t clear_pins, + uint32_t change_pins, uint32_t *orig_pins) +{ + struct gpio_softc *sc; + uint32_t hwstate; + + sc = device_get_softc(dev); + + if (first_pin != 0) + return (EINVAL); + + QORIQ_GPIO_LOCK(sc); + hwstate = qoriq_gpio_reg_read(dev, DATA); + qoriq_gpio_reg_write(dev, DATA, (hwstate & ~clear_pins) ^ change_pins); + QORIQ_GPIO_UNLOCK(sc); + + if (orig_pins != NULL) + *orig_pins = hwstate; + + return (0); +} + +static int +qoriq_gpio_pin_config_32(device_t dev, uint32_t first_pin, uint32_t num_pins, + uint32_t *pin_flags) +{ + uint32_t dir, odr, mask, reg; + struct gpio_softc *sc; + uint32_t newflags[32]; + int i; + + if (first_pin != 0 || num_pins > PIN_COUNT) + return (EINVAL); + + sc = device_get_softc(dev); + + dir = 0; + odr = 0; + mask = 0; + + for (i = 0; i < num_pins; i++) { + newflags[i] = 0; + mask |= (1 << i); + + if (pin_flags[i] & GPIO_PIN_INPUT) { + newflags[i] = GPIO_PIN_INPUT; + dir &= ~(1 << i); + } else { + newflags[i] = GPIO_PIN_OUTPUT; + dir |= (1 << i); + + if (pin_flags[i] & GPIO_PIN_OPENDRAIN) { + newflags[i] |= GPIO_PIN_OPENDRAIN; + odr |= (1 << i); + } else { + newflags[i] |= GPIO_PIN_PUSHPULL; + odr &= ~(1 << i); + } + } + } + + QORIQ_GPIO_LOCK(sc); + reg = qoriq_gpio_reg_read(dev, DIRECTION); + reg &= ~mask; + reg |= dir; + qoriq_gpio_reg_write(dev, DIRECTION, reg); + reg = qoriq_gpio_reg_read(dev, OPEN_DRAIN); + reg &= ~mask; + reg |= odr; + qoriq_gpio_reg_write(dev, OPEN_DRAIN, reg); + for (i = 0; i < num_pins; i++) { + sc->setup[i].gp_flags = newflags[i]; + } + QORIQ_GPIO_UNLOCK(sc); + + return (0); +} Modified: head/sys/conf/files.arm64 ============================================================================== --- head/sys/conf/files.arm64 Mon May 25 14:45:18 2020 (r361459) +++ head/sys/conf/files.arm64 Mon May 25 14:55:37 2020 (r361460) @@ -196,6 +196,7 @@ arm64/coresight/coresight-tmc.c standard arm64/intel/firmware.c optional soc_intel_stratix10 arm64/intel/stratix10-soc-fpga-mgr.c optional soc_intel_stratix10 arm64/intel/stratix10-svc.c optional soc_intel_stratix10 +arm64/qoriq/ls1046_gpio.c optional ls1046_gpio gpio fdt SOC_NXP_LS arm64/qoriq/clk/ls1046a_clkgen.c optional clk SOC_NXP_LS arm64/qoriq/clk/qoriq_clk_pll.c optional clk SOC_NXP_LS arm64/qoriq/clk/qoriq_clkgen.c optional clk SOC_NXP_LS From owner-svn-src-all@freebsd.org Mon May 25 15:21:39 2020 Return-Path: Delivered-To: svn-src-all@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 EAF7E329C58; Mon, 25 May 2020 15:21:39 +0000 (UTC) (envelope-from mw@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49W15v600Bz40Fk; Mon, 25 May 2020 15:21:39 +0000 (UTC) (envelope-from mw@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 C8C0F14254; Mon, 25 May 2020 15:21:39 +0000 (UTC) (envelope-from mw@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04PFLd7L039221; Mon, 25 May 2020 15:21:39 GMT (envelope-from mw@FreeBSD.org) Received: (from mw@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04PFLdxH039218; Mon, 25 May 2020 15:21:39 GMT (envelope-from mw@FreeBSD.org) Message-Id: <202005251521.04PFLdxH039218@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mw set sender to mw@FreeBSD.org using -f From: Marcin Wojtas Date: Mon, 25 May 2020 15:21:39 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361461 - in head/sys: arm/freescale/vybrid arm64/conf conf X-SVN-Group: head X-SVN-Commit-Author: mw X-SVN-Commit-Paths: in head/sys: arm/freescale/vybrid arm64/conf conf X-SVN-Commit-Revision: 361461 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2020 15:21:40 -0000 Author: mw Date: Mon May 25 15:21:38 2020 New Revision: 361461 URL: https://svnweb.freebsd.org/changeset/base/361461 Log: Introduce VF610 I2C controller support. NXP LS1046A contains I2C controller compatible with Vybrid VF610. Existing Vybrid MVF600 driver can be used to support it. For that purpose declare driver as ofw_iicbus and add methods associated with ofw_iicbus. For VF610 add dynamic clock prescaler calculation using clock information from clock driver and clock frequency requested in device tree. On the occasion add detach function and add additional error handling in i2c_attach function. Submitted by: Dawid Gorecki Reviewed by: manu Obtained from: Semihalf Sponsored by: Alstom Group Differential Revision: https://reviews.freebsd.org/D24361 Modified: head/sys/arm/freescale/vybrid/vf_i2c.c head/sys/arm64/conf/GENERIC head/sys/conf/files.arm64 Modified: head/sys/arm/freescale/vybrid/vf_i2c.c ============================================================================== --- head/sys/arm/freescale/vybrid/vf_i2c.c Mon May 25 14:55:37 2020 (r361460) +++ head/sys/arm/freescale/vybrid/vf_i2c.c Mon May 25 15:21:38 2020 (r361461) @@ -57,6 +57,10 @@ __FBSDID("$FreeBSD$"); #include #include +#ifdef EXT_RESOURCES +#include +#endif + #include #include #include @@ -93,20 +97,35 @@ __FBSDID("$FreeBSD$"); #define vf_i2c_dbg(_sc, fmt, args...) #endif +#define HW_UNKNOWN 0x00 +#define HW_MVF600 0x01 +#define HW_VF610 0x02 + static int i2c_repeated_start(device_t, u_char, int); static int i2c_start(device_t, u_char, int); static int i2c_stop(device_t); static int i2c_reset(device_t, u_char, u_char, u_char *); static int i2c_read(device_t, char *, int, int *, int, int); static int i2c_write(device_t, const char *, int, int *, int); +static phandle_t i2c_get_node(device_t, device_t); +struct i2c_div_type { + uint32_t reg_val; + uint32_t div; +}; + struct i2c_softc { struct resource *res[2]; bus_space_tag_t bst; bus_space_handle_t bsh; +#ifdef EXT_RESOURCES + clk_t clock; + uint32_t freq; +#endif device_t dev; device_t iicbus; struct mtx mutex; + uintptr_t hwtype; }; static struct resource_spec i2c_spec[] = { @@ -115,6 +134,29 @@ static struct resource_spec i2c_spec[] = { { -1, 0 } }; +#ifdef EXT_RESOURCES +static struct i2c_div_type vf610_div_table[] = { + { 0x00, 20 }, { 0x01, 22 }, { 0x02, 24 }, { 0x03, 26 }, + { 0x04, 28 }, { 0x05, 30 }, { 0x09, 32 }, { 0x06, 34 }, + { 0x0A, 36 }, { 0x0B, 40 }, { 0x0C, 44 }, { 0x0D, 48 }, + { 0x0E, 56 }, { 0x12, 64 }, { 0x13, 72 }, { 0x14, 80 }, + { 0x15, 88 }, { 0x19, 96 }, { 0x16, 104 }, { 0x1A, 112 }, + { 0x17, 128 }, { 0x1D, 160 }, { 0x1E, 192 }, { 0x22, 224 }, + { 0x1F, 240 }, { 0x23, 256 }, { 0x24, 288 }, { 0x25, 320 }, + { 0x26, 384 }, { 0x2A, 448 }, { 0x27, 480 }, { 0x2B, 512 }, + { 0x2C, 576 }, { 0x2D, 640 }, { 0x2E, 768 }, { 0x32, 896 }, + { 0x2F, 960 }, { 0x33, 1024 }, { 0x34, 1152 }, { 0x35, 1280 }, + { 0x36, 1536 }, { 0x3A, 1792 }, { 0x37, 1920 }, { 0x3B, 2048 }, + { 0x3C, 2304 }, { 0x3D, 2560 }, { 0x3E, 3072 }, { 0x3F, 3840 } +}; +#endif + +static const struct ofw_compat_data i2c_compat_data[] = { + {"fsl,mvf600-i2c", HW_MVF600}, + {"fsl,vf610-i2c", HW_VF610}, + {NULL, HW_UNKNOWN} +}; + static int i2c_probe(device_t dev) { @@ -122,7 +164,7 @@ i2c_probe(device_t dev) if (!ofw_bus_status_okay(dev)) return (ENXIO); - if (!ofw_bus_is_compatible(dev, "fsl,mvf600-i2c")) + if (!ofw_bus_search_compatible(dev, i2c_compat_data)->ocd_data) return (ENXIO); device_set_desc(dev, "Vybrid Family Inter-Integrated Circuit (I2C)"); @@ -133,13 +175,35 @@ static int i2c_attach(device_t dev) { struct i2c_softc *sc; +#ifdef EXT_RESOURCES + phandle_t node; +#endif + int error; sc = device_get_softc(dev); sc->dev = dev; + sc->hwtype = ofw_bus_search_compatible(dev, i2c_compat_data)->ocd_data; +#ifdef EXT_RESOURCES + node = ofw_bus_get_node(dev); + error = clk_get_by_ofw_index(dev, node, 0, &sc->clock); + if (error != 0) { + sc->freq = 0; + device_printf(dev, "Parent clock not found.\n"); + } else { + if (OF_hasprop(node, "clock-frequency")) + OF_getencprop(node, "clock-frequency", &sc->freq, + sizeof(sc->freq)); + else + sc->freq = 100000; + } +#endif + mtx_init(&sc->mutex, device_get_nameunit(dev), "I2C", MTX_DEF); - if (bus_alloc_resources(dev, i2c_spec, sc->res)) { + error = bus_alloc_resources(dev, i2c_spec, sc->res); + if (error != 0) { + mtx_destroy(&sc->mutex); device_printf(dev, "could not allocate resources\n"); return (ENXIO); } @@ -154,6 +218,7 @@ i2c_attach(device_t dev) if (sc->iicbus == NULL) { device_printf(dev, "could not add iicbus child"); mtx_destroy(&sc->mutex); + bus_release_resources(dev, i2c_spec, sc->res); return (ENXIO); } @@ -162,6 +227,33 @@ i2c_attach(device_t dev) return (0); } +static int +i2c_detach(device_t dev) +{ + struct i2c_softc *sc; + int error = 0; + + sc = device_get_softc(dev); + + error = bus_generic_detach(dev); + if (error != 0) { + device_printf(dev, "cannot detach child devices.\n"); + return (error); + } + + error = device_delete_child(dev, sc->iicbus); + if (error != 0) { + device_printf(dev, "could not delete iicbus child.\n"); + return (error); + } + + bus_release_resources(dev, i2c_spec, sc->res); + + mtx_destroy(&sc->mutex); + + return (0); +} + /* Wait for transfer interrupt flag */ static int wait_for_iif(struct i2c_softc *sc) @@ -252,7 +344,7 @@ i2c_repeated_start(device_t dev, u_char slave, int tim mtx_unlock(&sc->mutex); - if (error) + if (error != 0) return (error); return (IIC_NOERR); @@ -294,7 +386,7 @@ i2c_start(device_t dev, u_char slave, int timeout) error = wait_for_iif(sc); mtx_unlock(&sc->mutex); - if (error) { + if (error != 0) { vf_i2c_dbg(sc, "cant i2c start: iif error\n"); return (error); } @@ -328,12 +420,53 @@ i2c_stop(device_t dev) return (IIC_NOERR); } +static uint32_t +i2c_get_div_val(device_t dev) +{ + struct i2c_softc *sc; +#ifdef EXT_RESOURCES + uint64_t clk_freq; + int error, i; + + sc = device_get_softc(dev); + + if (sc->hwtype == HW_MVF600) + return 20; + + if (sc->freq == 0) + return vf610_div_table[nitems(vf610_div_table) - 1].reg_val; + + error = clk_get_freq(sc->clock, &clk_freq); + if (error != 0) { + device_printf(dev, "Could not get parent clock frequency. " + "Using default divider.\n"); + return vf610_div_table[nitems(vf610_div_table) - 1].reg_val; + } + + for (i = 0; i < nitems(vf610_div_table) - 1; i++) + if ((clk_freq / vf610_div_table[i].div) <= sc->freq) + break; + + return vf610_div_table[i].reg_val; +#else + sc = device_get_softc(dev); + + if (sc->hwtype == HW_VF610) + return 0x3F; + else + return 20; +#endif +} + static int i2c_reset(device_t dev, u_char speed, u_char addr, u_char *oldadr) { struct i2c_softc *sc; + uint32_t div; sc = device_get_softc(dev); + div = i2c_get_div_val(dev); + vf_i2c_dbg(sc, "Div val: %02x\n", div); vf_i2c_dbg(sc, "i2c reset\n"); @@ -351,7 +484,7 @@ i2c_reset(device_t dev, u_char speed, u_char addr, u_c DELAY(1000); - WRITE1(sc, I2C_IBFD, 20); + WRITE1(sc, I2C_IBFD, div); WRITE1(sc, I2C_IBCR, 0x0); /* Enable i2c */ DELAY(1000); @@ -389,7 +522,7 @@ i2c_read(device_t dev, char *buf, int len, int *read, while (*read < len) { error = wait_for_icf(sc); - if (error) { + if (error != 0) { mtx_unlock(&sc->mutex); return (error); } @@ -431,7 +564,7 @@ i2c_write(device_t dev, const char *buf, int len, int WRITE1(sc, I2C_IBDR, *buf++); error = wait_for_iif(sc); - if (error) { + if (error != 0) { mtx_unlock(&sc->mutex); return (error); } @@ -443,10 +576,20 @@ i2c_write(device_t dev, const char *buf, int len, int return (IIC_NOERR); } +static phandle_t +i2c_get_node(device_t bus, device_t dev) +{ + + return ofw_bus_get_node(bus); +} + static device_method_t i2c_methods[] = { - DEVMETHOD(device_probe, i2c_probe), - DEVMETHOD(device_attach, i2c_attach), + DEVMETHOD(device_probe, i2c_probe), + DEVMETHOD(device_attach, i2c_attach), + DEVMETHOD(device_detach, i2c_detach), + DEVMETHOD(ofw_bus_get_node, i2c_get_node), + DEVMETHOD(iicbus_callback, iicbus_null_callback), DEVMETHOD(iicbus_repeated_start, i2c_repeated_start), DEVMETHOD(iicbus_start, i2c_start), @@ -469,3 +612,4 @@ static devclass_t i2c_devclass; DRIVER_MODULE(i2c, simplebus, i2c_driver, i2c_devclass, 0, 0); DRIVER_MODULE(iicbus, i2c, iicbus_driver, iicbus_devclass, 0, 0); +DRIVER_MODULE(ofw_iicbus, i2c, ofw_iicbus_driver, ofw_iicbus_devclass, 0, 0); Modified: head/sys/arm64/conf/GENERIC ============================================================================== --- head/sys/arm64/conf/GENERIC Mon May 25 14:55:37 2020 (r361460) +++ head/sys/arm64/conf/GENERIC Mon May 25 15:21:38 2020 (r361461) @@ -264,6 +264,7 @@ device twsi # Allwinner I2C controller device rk_i2c # RockChip I2C controller device syr827 # Silergy SYR827 PMIC device sy8106a # SY8106A Buck Regulator +device vf_i2c # Freescale Vybrid I2C controller # Clock and reset controllers device aw_ccu # Allwinner clock controller Modified: head/sys/conf/files.arm64 ============================================================================== --- head/sys/conf/files.arm64 Mon May 25 14:55:37 2020 (r361460) +++ head/sys/conf/files.arm64 Mon May 25 15:21:38 2020 (r361461) @@ -105,6 +105,7 @@ arm/broadcom/bcm2835/bcm2835_vcio.c optional soc_brcm arm/broadcom/bcm2835/bcm2835_wdog.c optional soc_brcm_bcm2837 fdt | soc_brcm_bcm2838 fdt arm/broadcom/bcm2835/bcm2836.c optional soc_brcm_bcm2837 fdt | soc_brcm_bcm2838 fdt arm/broadcom/bcm2835/bcm283x_dwc_fdt.c optional dwcotg fdt soc_brcm_bcm2837 | dwcotg fdt soc_brcm_bcm2838 +arm/freescale/vybrid/vf_i2c.c optional vf_i2c iicbus SOC_NXP_LS arm/mv/a37x0_gpio.c optional a37x0_gpio gpio fdt arm/mv/a37x0_iic.c optional a37x0_iic iicbus fdt arm/mv/a37x0_spi.c optional a37x0_spi spibus fdt From owner-svn-src-all@freebsd.org Mon May 25 15:31:44 2020 Return-Path: Delivered-To: svn-src-all@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 42F3E32A5F9; Mon, 25 May 2020 15:31:44 +0000 (UTC) (envelope-from mw@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49W1KX1STQz41Gv; Mon, 25 May 2020 15:31:44 +0000 (UTC) (envelope-from mw@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 2D4DB1471E; Mon, 25 May 2020 15:31:44 +0000 (UTC) (envelope-from mw@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04PFVida042864; Mon, 25 May 2020 15:31:44 GMT (envelope-from mw@FreeBSD.org) Received: (from mw@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04PFVh2e042860; Mon, 25 May 2020 15:31:43 GMT (envelope-from mw@FreeBSD.org) Message-Id: <202005251531.04PFVh2e042860@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mw set sender to mw@FreeBSD.org using -f From: Marcin Wojtas Date: Mon, 25 May 2020 15:31:43 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361462 - in head/sys: conf dev/iicbus/gpio modules/i2c modules/i2c/tca6416 X-SVN-Group: head X-SVN-Commit-Author: mw X-SVN-Commit-Paths: in head/sys: conf dev/iicbus/gpio modules/i2c modules/i2c/tca6416 X-SVN-Commit-Revision: 361462 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2020 15:31:44 -0000 Author: mw Date: Mon May 25 15:31:43 2020 New Revision: 361462 URL: https://svnweb.freebsd.org/changeset/base/361462 Log: Add TCA6416 GPIO expander support. Add basic TCA6416 GPIO expander support over I2C bus. The driver handles enabling and disabling pins, setting pin mode to IN and OUT and toggling the pins. External interrupts are not supported. Submitted by: Dawid Gorecki Reviewed by: manu, mmel Obtained from: Semihalf Sponsored by: Alstom Group Differential Revision: https://reviews.freebsd.org/D24363 Added: head/sys/dev/iicbus/gpio/ head/sys/dev/iicbus/gpio/tca6416.c (contents, props changed) head/sys/modules/i2c/tca6416/ head/sys/modules/i2c/tca6416/Makefile (contents, props changed) Modified: head/sys/conf/files head/sys/modules/i2c/Makefile Modified: head/sys/conf/files ============================================================================== --- head/sys/conf/files Mon May 25 15:21:38 2020 (r361461) +++ head/sys/conf/files Mon May 25 15:31:43 2020 (r361462) @@ -1806,6 +1806,7 @@ dev/iicbus/ofw_iicbus.c optional fdt iicbus dev/iicbus/rtc8583.c optional rtc8583 dev/iicbus/s35390a.c optional s35390a dev/iicbus/sy8106a.c optional sy8106a ext_resources fdt +dev/iicbus/gpio/tca6416.c optional tca6416 fdt dev/iir/iir.c optional iir dev/iir/iir_ctrl.c optional iir dev/iir/iir_pci.c optional iir pci Added: head/sys/dev/iicbus/gpio/tca6416.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/dev/iicbus/gpio/tca6416.c Mon May 25 15:31:43 2020 (r361462) @@ -0,0 +1,534 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2020 Alstom Group. + * Copyright (c) 2020 Semihalf. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/* + * Driver for TI TCA6416 I2C GPIO expander module. + * + * This driver only supports basic functionality + * (interrupt handling and polarity inversion were omitted). + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +#include + +#include +#include + +#include + +#include "gpio_if.h" + +/* Base addresses of registers. LSB omitted. */ +#define IN_PORT_REG 0x00 +#define OUT_PORT_REG 0x02 +#define POLARITY_INV_REG 0x04 +#define CONF_REG 0x06 + +#define NUM_PINS 16 +#define PINS_PER_REG 8 +#define PIN_CAPS \ + (GPIO_PIN_OUTPUT | GPIO_PIN_INPUT \ + | GPIO_PIN_PUSHPULL | GPIO_PIN_INVIN) + +#ifdef DEBUG +#define dbg_dev_printf(dev, fmt, args...) \ + device_printf(dev, fmt, ##args) +#else +#define dbg_dev_printf(dev, fmt, args...) +#endif + +#define TCA6416_BIT_FROM_PIN(pin) (pin % PINS_PER_REG) +#define TCA6416_REG_ADDR(pin, baseaddr) (baseaddr | (pin / PINS_PER_REG)) + +struct tca6416_softc { + device_t dev; + device_t busdev; + struct mtx mtx; + uint32_t addr; +}; + +static int tca6416_read(device_t, uint8_t, uint8_t*); +static int tca6416_write(device_t, uint8_t, uint8_t); +static int tca6416_probe(device_t); +static int tca6416_attach(device_t); +static int tca6416_detach(device_t); +static device_t tca6416_get_bus(device_t); +static int tca6416_pin_max(device_t, int*); +static int tca6416_pin_getcaps(device_t, uint32_t, uint32_t*); +static int tca6416_pin_getflags(device_t, uint32_t, uint32_t*); +static int tca6416_pin_setflags(device_t, uint32_t, uint32_t); +static int tca6416_pin_getname(device_t, uint32_t, char*); +static int tca6416_pin_get(device_t, uint32_t, unsigned int*); +static int tca6416_pin_set(device_t, uint32_t, unsigned int); +static int tca6416_pin_toggle(device_t, uint32_t); +#ifdef DEBUG +static void tca6416_regdump_setup(device_t dev); +static int tca6416_regdump_sysctl(SYSCTL_HANDLER_ARGS); +#endif + +static device_method_t tca6416_methods[] = { + DEVMETHOD(device_probe, tca6416_probe), + DEVMETHOD(device_attach, tca6416_attach), + DEVMETHOD(device_detach, tca6416_detach), + + /* GPIO methods */ + DEVMETHOD(gpio_get_bus, tca6416_get_bus), + DEVMETHOD(gpio_pin_max, tca6416_pin_max), + DEVMETHOD(gpio_pin_getcaps, tca6416_pin_getcaps), + DEVMETHOD(gpio_pin_getflags, tca6416_pin_getflags), + DEVMETHOD(gpio_pin_setflags, tca6416_pin_setflags), + DEVMETHOD(gpio_pin_getname, tca6416_pin_getname), + DEVMETHOD(gpio_pin_get, tca6416_pin_get), + DEVMETHOD(gpio_pin_set, tca6416_pin_set), + DEVMETHOD(gpio_pin_toggle, tca6416_pin_toggle), + + DEVMETHOD_END +}; + +static driver_t tca6416_driver = { + "gpio", + tca6416_methods, + sizeof(struct tca6416_softc) +}; + +static devclass_t tca6416_devclass; + +DRIVER_MODULE(tca6416, iicbus, tca6416_driver, tca6416_devclass, 0, 0); +MODULE_VERSION(tca6416, 1); + +static struct ofw_compat_data compat_data[] = { + {"ti,tca6416", 1}, + {0,0} +}; + +static int +tca6416_read(device_t dev, uint8_t reg, uint8_t *data) +{ + struct iic_msg msgs[2]; + struct tca6416_softc *sc; + int error; + + sc = device_get_softc(dev); + if (data == NULL) + return (EINVAL); + + msgs[0].slave = sc->addr; + msgs[0].flags = IIC_M_WR | IIC_M_NOSTOP; + msgs[0].len = 1; + msgs[0].buf = ® + + msgs[1].slave = sc->addr; + msgs[1].flags = IIC_M_RD; + msgs[1].len = 1; + msgs[1].buf = data; + + error = iicbus_transfer_excl(dev, msgs, 2, IIC_WAIT); + return (iic2errno(error)); +} + +static int +tca6416_write(device_t dev, uint8_t reg, uint8_t val) +{ + struct iic_msg msg; + struct tca6416_softc *sc; + int error; + uint8_t buffer[2] = {reg, val}; + + sc = device_get_softc(dev); + + msg.slave = sc->addr; + msg.flags = IIC_M_WR; + msg.len = 2; + msg.buf = buffer; + + error = iicbus_transfer_excl(dev, &msg, 1, IIC_WAIT); + return (iic2errno(error)); +} + +static int +tca6416_probe(device_t dev) +{ + + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + if (ofw_bus_search_compatible(dev, compat_data)->ocd_data == 0) + return (ENXIO); + + device_set_desc(dev, "TCA6416 I/O expander"); + return (BUS_PROBE_DEFAULT); +} + +static int +tca6416_attach(device_t dev) +{ + struct tca6416_softc *sc; + + sc = device_get_softc(dev); + sc->dev = dev; + sc->addr = iicbus_get_addr(dev); + + mtx_init(&sc->mtx, "tca6416 gpio", "gpio", MTX_DEF); + + sc->busdev = gpiobus_attach_bus(dev); + if (sc->busdev == NULL) { + device_printf(dev, "Could not create busdev child\n"); + return (ENXIO); + } + +#ifdef DEBUG + tca6416_regdump_setup(dev); +#endif + + return (0); +} + +static int +tca6416_detach(device_t dev) +{ + struct tca6416_softc *sc; + + sc = device_get_softc(dev); + + if (sc->busdev != NULL) + gpiobus_detach_bus(sc->busdev); + + mtx_destroy(&sc->mtx); + + return (0); +} + +static device_t +tca6416_get_bus(device_t dev) +{ + struct tca6416_softc *sc; + + sc = device_get_softc(dev); + + return (sc->busdev); +} + +static int +tca6416_pin_max(device_t dev __unused, int *maxpin) +{ + + if (maxpin == NULL) + return (EINVAL); + + *maxpin = NUM_PINS - 1; + return (0); +} + +static int +tca6416_pin_getcaps(device_t dev, uint32_t pin, uint32_t *caps) +{ + + if (pin >= NUM_PINS || caps == NULL) + return (EINVAL); + + *caps = PIN_CAPS; + return (0); +} + +static int +tca6416_pin_getflags(device_t dev, uint32_t pin, uint32_t *pflags) +{ + struct tca6416_softc *sc; + int error; + uint8_t reg_addr, reg_bit, val; + + sc = device_get_softc(dev); + + if (pin >= NUM_PINS || pflags == NULL) + return (EINVAL); + + reg_addr = TCA6416_REG_ADDR(pin, CONF_REG); + reg_bit = TCA6416_BIT_FROM_PIN(pin); + + error = tca6416_read(dev, reg_addr, &val); + if (error != 0) + return (error); + + *pflags = (val & (1 << reg_bit)) + ? GPIO_PIN_INPUT : GPIO_PIN_OUTPUT; + + reg_addr = TCA6416_REG_ADDR(pin, POLARITY_INV_REG); + + error = tca6416_read(dev, reg_addr, &val); + if (error != 0) + return (error); + + if (val & (1 << reg_bit)) + *pflags |= GPIO_PIN_INVIN; + + return (0); +} + +static int +tca6416_pin_setflags(device_t dev, uint32_t pin, uint32_t flags) +{ + uint8_t reg_addr, inv_reg_addr, reg_bit, val, inv_val; + struct tca6416_softc *sc; + int error; + + sc = device_get_softc(dev); + + if (pin >= NUM_PINS) + return (EINVAL); + + reg_addr = TCA6416_REG_ADDR(pin, CONF_REG); + inv_reg_addr = TCA6416_REG_ADDR(pin, POLARITY_INV_REG); + reg_bit = TCA6416_BIT_FROM_PIN(pin); + + mtx_lock(&sc->mtx); + + error = tca6416_read(dev, reg_addr, &val); + if (error != 0) + goto fail; + error = tca6416_read(dev, inv_reg_addr, &inv_val); + if (error != 0) + goto fail; + + if (flags & GPIO_PIN_INPUT) + val |= (1 << reg_bit); + else if (flags & GPIO_PIN_OUTPUT) + val &= ~(1 << reg_bit); + + if (flags & GPIO_PIN_INVIN) + inv_val |= (1 << reg_bit); + else + inv_val &= ~(1 << reg_bit); + + error = tca6416_write(dev, reg_addr, val); + if (error != 0) + goto fail; + error = tca6416_write(dev, inv_reg_addr, val); + +fail: + mtx_unlock(&sc->mtx); + return (error); +} + +static int +tca6416_pin_getname(device_t dev, uint32_t pin, char *name) +{ + + if (pin >= NUM_PINS || name == NULL) + return (EINVAL); + + snprintf(name, GPIOMAXNAME, "gpio_P%d%d", pin / PINS_PER_REG, + pin % PINS_PER_REG); + + return (0); +} + +static int +tca6416_pin_get(device_t dev, uint32_t pin, unsigned int *pval) +{ + struct tca6416_softc *sc; + uint8_t reg_bit, reg_addr, reg_pvalue; + int error; + + sc = device_get_softc(dev); + + if (pin >= NUM_PINS || pval == NULL) + return (EINVAL); + + reg_bit = TCA6416_BIT_FROM_PIN(pin); + reg_addr = TCA6416_REG_ADDR(pin, IN_PORT_REG); + + dbg_dev_printf(dev, "Reading pin %u pvalue.", pin); + + error = tca6416_read(dev, reg_addr, ®_pvalue); + if (error != 0) + return (error); + + *pval = reg_pvalue & (1 << reg_bit) ? 1 : 0; + + return (0); +} + +static int +tca6416_pin_set(device_t dev, uint32_t pin, unsigned int val) +{ + struct tca6416_softc *sc; + uint8_t reg_addr, reg_bit, reg_value; + int error; + + sc = device_get_softc(dev); + + if (pin >= NUM_PINS) + return (EINVAL); + + reg_addr = TCA6416_REG_ADDR(pin , OUT_PORT_REG); + reg_bit = TCA6416_BIT_FROM_PIN(pin); + + dbg_dev_printf(dev, "Setting pin: %u to %u\n", pin, val); + + mtx_lock(&sc->mtx); + + error = tca6416_read(dev, reg_addr, ®_value); + if (error != 0) { + dbg_dev_printf(dev, "Failed to read from register.\n"); + mtx_unlock(&sc->mtx); + return (error); + } + + if (val != 0) + reg_value |= (1 << reg_bit); + else + reg_value &= ~(1 << reg_bit); + + + error = tca6416_write(dev, reg_addr, reg_value); + if (error != 0) { + dbg_dev_printf(dev, "Could not write to register.\n"); + mtx_unlock(&sc->mtx); + return (error); + } + + mtx_unlock(&sc->mtx); + + return (0); +} + +static int +tca6416_pin_toggle(device_t dev, uint32_t pin) +{ + struct tca6416_softc *sc; + int error; + uint8_t reg_addr, reg_bit, reg_value; + + sc = device_get_softc(dev); + + if (pin >= NUM_PINS) + return (EINVAL); + + reg_addr = TCA6416_REG_ADDR(pin, OUT_PORT_REG); + reg_bit = TCA6416_BIT_FROM_PIN(pin); + + dbg_dev_printf(dev, "Toggling pin: %d\n", pin); + + mtx_lock(&sc->mtx); + + error = tca6416_read(dev, reg_addr, ®_value); + if (error != 0) { + mtx_unlock(&sc->mtx); + dbg_dev_printf(dev, "Cannot read from register.\n"); + return (error); + } + + reg_value ^= (1 << reg_bit); + + error = tca6416_write(dev, reg_addr, reg_value); + if (error != 0) + dbg_dev_printf(dev, "Cannot write to register.\n"); + + mtx_unlock(&sc->mtx); + + return (error); +} + +#ifdef DEBUG +static void +tca6416_regdump_setup(device_t dev) +{ + struct sysctl_ctx_list *ctx; + struct sysctl_oid *node; + + ctx = device_get_sysctl_ctx(dev); + node = device_get_sysctl_tree(dev); + + SYSCTL_ADD_PROC(ctx, SYSCTL_CHILDREN(node), OID_AUTO, "in_reg_1", + CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, dev, IN_PORT_REG, + tca6416_regdump_sysctl, "A", "Input port 1"); + SYSCTL_ADD_PROC(ctx, SYSCTL_CHILDREN(node), OID_AUTO, "in_reg_2", + CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, dev, + IN_PORT_REG | 1, tca6416_regdump_sysctl, "A", "Input port 2"); + SYSCTL_ADD_PROC(ctx, SYSCTL_CHILDREN(node), OID_AUTO, "out_reg_1", + CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, dev, OUT_PORT_REG, + tca6416_regdump_sysctl, "A", "Output port 1"); + SYSCTL_ADD_PROC(ctx, SYSCTL_CHILDREN(node), OID_AUTO, "out_reg_2", + CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, dev, OUT_PORT_REG + | 1, tca6416_regdump_sysctl, "A", "Output port 2"); + SYSCTL_ADD_PROC(ctx, SYSCTL_CHILDREN(node), OID_AUTO, "pol_inv_1", + CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, dev, + POLARITY_INV_REG, tca6416_regdump_sysctl, "A", "Polarity inv 1"); + SYSCTL_ADD_PROC(ctx, SYSCTL_CHILDREN(node), OID_AUTO, "pol_inv_2", + CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, dev, + POLARITY_INV_REG | 1, tca6416_regdump_sysctl, "A", + "Polarity inv 2"); + SYSCTL_ADD_PROC(ctx, SYSCTL_CHILDREN(node), OID_AUTO, "conf_reg_1", + CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, dev, + CONF_REG, tca6416_regdump_sysctl, "A", "Configuration 1"); + SYSCTL_ADD_PROC(ctx, SYSCTL_CHILDREN(node), OID_AUTO, "conf_reg_2", + CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, dev, + CONF_REG | 1, tca6416_regdump_sysctl, "A", "Configuration 2"); +} + +static int +tca6416_regdump_sysctl(SYSCTL_HANDLER_ARGS) +{ + device_t dev; + char buf[5]; + struct tca6416_softc *sc; + int len, error; + uint8_t reg, regval; + + dev = (device_t)arg1; + reg = (uint8_t)arg2; + sc = device_get_softc(dev); + + + error = tca6416_read(dev, reg, ®val); + if (error != 0) { + return (error); + } + + len = snprintf(buf, 5, "0x%02x", regval); + + error = sysctl_handle_string(oidp, buf, len, req); + + return (error); +} +#endif Modified: head/sys/modules/i2c/Makefile ============================================================================== --- head/sys/modules/i2c/Makefile Mon May 25 15:21:38 2020 (r361461) +++ head/sys/modules/i2c/Makefile Mon May 25 15:31:43 2020 (r361462) @@ -24,4 +24,8 @@ SUBDIR = \ smb \ smbus \ +.if !empty(OPT_FDT) +SUBDIR += tca6416 +.endif + .include Added: head/sys/modules/i2c/tca6416/Makefile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/modules/i2c/tca6416/Makefile Mon May 25 15:31:43 2020 (r361462) @@ -0,0 +1,7 @@ +# $FreeBSD$ + +.PATH: ${SRCTOP}/sys/dev/iicbus/gpio/ +KMOD = tca6416 +SRCS = tca6416.c opt_platform.h gpio_if.h + +.include From owner-svn-src-all@freebsd.org Mon May 25 15:40:03 2020 Return-Path: Delivered-To: svn-src-all@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 96D7632A831; Mon, 25 May 2020 15:40:03 +0000 (UTC) (envelope-from mw@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49W1W73Yczz4220; Mon, 25 May 2020 15:40:03 +0000 (UTC) (envelope-from mw@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 755F9144CB; Mon, 25 May 2020 15:40:03 +0000 (UTC) (envelope-from mw@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04PFe3CO046380; Mon, 25 May 2020 15:40:03 GMT (envelope-from mw@FreeBSD.org) Received: (from mw@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04PFe2ke046376; Mon, 25 May 2020 15:40:02 GMT (envelope-from mw@FreeBSD.org) Message-Id: <202005251540.04PFe2ke046376@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mw set sender to mw@FreeBSD.org using -f From: Marcin Wojtas Date: Mon, 25 May 2020 15:40:02 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361463 - in head/sys: conf dev/iicbus/rtc modules/i2c modules/i2c/rx8803 X-SVN-Group: head X-SVN-Commit-Author: mw X-SVN-Commit-Paths: in head/sys: conf dev/iicbus/rtc modules/i2c modules/i2c/rx8803 X-SVN-Commit-Revision: 361463 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2020 15:40:03 -0000 Author: mw Date: Mon May 25 15:40:02 2020 New Revision: 361463 URL: https://svnweb.freebsd.org/changeset/base/361463 Log: Introduce support for Epson RX-8803 RTC. This patch introduces support for Epson RX-8803 RTC controller accessible over I2C bus. It has a resolution of 1 sec. Support for interrupt based alarm was not implemented. Submitted by: Kornel Duleba Reviewed by: manu Obtained from: Semihalf Sponsored by: Alstom Group Differential Revision: https://reviews.freebsd.org/D24364 Added: head/sys/dev/iicbus/rtc/ head/sys/dev/iicbus/rtc/rx8803.c (contents, props changed) head/sys/modules/i2c/rx8803/ head/sys/modules/i2c/rx8803/Makefile (contents, props changed) Modified: head/sys/conf/files head/sys/modules/i2c/Makefile Modified: head/sys/conf/files ============================================================================== --- head/sys/conf/files Mon May 25 15:31:43 2020 (r361462) +++ head/sys/conf/files Mon May 25 15:40:02 2020 (r361463) @@ -1804,6 +1804,7 @@ dev/iicbus/mux/ltc430x.c optional ltc430x dev/iicbus/nxprtc.c optional nxprtc | pcf8563 dev/iicbus/ofw_iicbus.c optional fdt iicbus dev/iicbus/rtc8583.c optional rtc8583 +dev/iicbus/rtc/rx8803.c optional rx8803 iicbus fdt dev/iicbus/s35390a.c optional s35390a dev/iicbus/sy8106a.c optional sy8106a ext_resources fdt dev/iicbus/gpio/tca6416.c optional tca6416 fdt Added: head/sys/dev/iicbus/rtc/rx8803.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/dev/iicbus/rtc/rx8803.c Mon May 25 15:40:02 2020 (r361463) @@ -0,0 +1,246 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2020 Alstom Group. + * Copyright (c) 2020 Semihalf. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include +#include + +#include "clock_if.h" +#include "iicbus_if.h" + +#define BIT(x) (1 << (x)) + +#define RX8803_TIME 0x0 +#define RX8803_FLAGS 0xE +#define RX8803_CTRL 0xF + +#define RX8803_FLAGS_V1F BIT(0) +#define RX8803_FLAGS_V2F BIT(1) + +#define RX8803_CTRL_DISABLE BIT(0) + +#define HALF_OF_SEC_NS 500000000 +#define MAX_WRITE_LEN 16 + +struct rx8803_time { + uint8_t sec; + uint8_t min; + uint8_t hour; + uint8_t dow; + uint8_t day; + uint8_t mon; + uint8_t year; +}; + +static int rx8803_probe(device_t dev); +static int rx8803_attach(device_t dev); +static int rx8803_detach(device_t dev); + +static int rx8803_gettime(device_t dev, struct timespec *ts); +static int rx8803_settime(device_t dev, struct timespec *ts); + +static int rx8803_check_status(device_t dev); + +static int +rx8803_check_status(device_t dev) +{ + uint8_t flags; + int rc; + + rc = iicdev_readfrom(dev, RX8803_FLAGS, &flags, 1, IIC_WAIT); + if (rc != 0) + return (rc); + + if (flags & RX8803_FLAGS_V2F) { + device_printf(dev, "Low voltage flag set, date is incorrect\n"); + return (ENXIO); + } + + return (0); +} + +static int +rx8803_gettime(device_t dev, struct timespec *ts) +{ + struct rx8803_time data; + struct bcd_clocktime bcd; + int rc; + + rc = rx8803_check_status(dev); + if (rc != 0) + return (rc); + + rc = iicdev_readfrom(dev, + RX8803_TIME, + &data, sizeof(struct rx8803_time), + IIC_WAIT); + if (rc != 0) + return (rc); + + bcd.nsec = 0; + bcd.sec = data.sec & 0x7F; + bcd.min = data.min & 0x7F; + bcd.hour = data.hour & 0x3F; + bcd.dow = flsl(data.dow & 0x7F) - 1; + bcd.day = data.day & 0x3F; + bcd.mon = (data.mon & 0x1F); + bcd.year = data.year; + + clock_dbgprint_bcd(dev, CLOCK_DBG_READ, &bcd); + + rc = clock_bcd_to_ts(&bcd, ts, false); + return (rc); +} + +static int +rx8803_settime(device_t dev, struct timespec *ts) +{ + struct rx8803_time data; + struct bcd_clocktime bcd; + device_t bus; + uint8_t reg; + int rc; + + bus = device_get_parent(dev); + + ts->tv_sec -= utc_offset(); + clock_ts_to_bcd(ts, &bcd, false); + clock_dbgprint_bcd(dev, CLOCK_DBG_WRITE, &bcd); + + data.sec = bcd.sec; + data.min = bcd.min; + data.hour = bcd.hour; + data.dow = 1 << bcd.dow; + data.day = bcd.day; + data.mon = bcd.mon; + data.year = bcd.year; + + if (ts->tv_nsec > HALF_OF_SEC_NS) + data.sec++; + + /* First disable clock. */ + rc = iicdev_readfrom(dev, RX8803_CTRL, ®, sizeof(uint8_t), IIC_WAIT); + if (rc != 0) + return (rc); + + reg |= RX8803_CTRL_DISABLE; + + rc = iicdev_writeto(dev, RX8803_CTRL, ®, sizeof(uint8_t), IIC_WAIT); + if (rc != 0) + return (rc); + + /* Update the date. */ + rc = iicdev_writeto(dev, + RX8803_TIME, + &data, sizeof(struct rx8803_time), + IIC_WAIT); + if (rc != 0) + return (rc); + + /* Now restart it. */ + reg &= ~RX8803_CTRL_DISABLE; + rc = iicdev_writeto(dev, RX8803_CTRL, ®, sizeof(uint8_t), IIC_WAIT); + if (rc != 0) + return (rc); + + /* Clear low voltage flags, as we have just updated the clock. */ + rc = iicdev_readfrom(dev, RX8803_FLAGS, ®, sizeof(uint8_t), IIC_WAIT); + if (rc != 0) + return (rc); + + reg &= ~(RX8803_FLAGS_V1F | RX8803_FLAGS_V2F); + rc = iicdev_writeto(dev, RX8803_FLAGS, ®, sizeof(uint8_t), IIC_WAIT); + return (rc); +} + +static int +rx8803_probe(device_t dev) +{ + + if (!ofw_bus_is_compatible(dev, "epson,rx8803")) + return (ENXIO); + + device_set_desc(dev, "Epson RX8803 Real Time Clock"); + + return (BUS_PROBE_GENERIC); +} + +static int +rx8803_attach(device_t dev) +{ + + /* Set 1 sec resolution. */ + clock_register_flags(dev, 1000000, 0); + clock_schedule(dev, 1); + + return (0); + +} + +static int +rx8803_detach(device_t dev) +{ + + clock_unregister(dev); + + return (0); +} + +static device_method_t rx8803_methods[] = { + DEVMETHOD(device_probe, rx8803_probe), + DEVMETHOD(device_attach, rx8803_attach), + DEVMETHOD(device_detach, rx8803_detach), + + DEVMETHOD(clock_gettime, rx8803_gettime), + DEVMETHOD(clock_settime, rx8803_settime), + + DEVMETHOD_END, +}; + +static driver_t rx8803_driver = { + "rx8803", + rx8803_methods, + 0, /* We don't need softc for this one. */ +}; + +static devclass_t rx8803_devclass; + +DRIVER_MODULE(rx8803, iicbus, rx8803_driver, rx8803_devclass, NULL, NULL); +MODULE_DEPEND(rx8803, iicbus, IICBUS_MINVER, IICBUS_PREFVER, IICBUS_MAXVER); Modified: head/sys/modules/i2c/Makefile ============================================================================== --- head/sys/modules/i2c/Makefile Mon May 25 15:31:43 2020 (r361462) +++ head/sys/modules/i2c/Makefile Mon May 25 15:40:02 2020 (r361463) @@ -25,7 +25,8 @@ SUBDIR = \ smbus \ .if !empty(OPT_FDT) -SUBDIR += tca6416 +SUBDIR += tca6416 \ + rx8803 .endif .include Added: head/sys/modules/i2c/rx8803/Makefile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/modules/i2c/rx8803/Makefile Mon May 25 15:40:02 2020 (r361463) @@ -0,0 +1,16 @@ +# $FreeBSD$ + +.PATH: ${SRCTOP}/sys/dev/iicbus/rtc/ +KMOD = rx8803 +SRCS = rx8803.c + +# Generated files... +SRCS+= \ + bus_if.h \ + clock_if.h \ + device_if.h \ + iicbus_if.h \ + opt_platform.h \ + ofw_bus_if.h \ + +.include From owner-svn-src-all@freebsd.org Mon May 25 16:00:09 2020 Return-Path: Delivered-To: svn-src-all@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 C19DC32AE9C; Mon, 25 May 2020 16:00:09 +0000 (UTC) (envelope-from mw@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49W1yK4nhTz43Rb; Mon, 25 May 2020 16:00:09 +0000 (UTC) (envelope-from mw@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 9F92214D82; Mon, 25 May 2020 16:00:09 +0000 (UTC) (envelope-from mw@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04PG09SR058911; Mon, 25 May 2020 16:00:09 GMT (envelope-from mw@FreeBSD.org) Received: (from mw@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04PG09Y4058909; Mon, 25 May 2020 16:00:09 GMT (envelope-from mw@FreeBSD.org) Message-Id: <202005251600.04PG09Y4058909@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mw set sender to mw@FreeBSD.org using -f From: Marcin Wojtas Date: Mon, 25 May 2020 16:00:09 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361464 - in head/sys: conf dev/ahci X-SVN-Group: head X-SVN-Commit-Author: mw X-SVN-Commit-Paths: in head/sys: conf dev/ahci X-SVN-Commit-Revision: 361464 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2020 16:00:09 -0000 Author: mw Date: Mon May 25 16:00:08 2020 New Revision: 361464 URL: https://svnweb.freebsd.org/changeset/base/361464 Log: Introduce a driver for NXP LS1046A SoC AHCI. Implement support for AHCI controller found in NXP QorIQ Layerscape SoCs. Submitted by: Artur Rojek Reviewed by: manu Obtained from: Semihalf Sponsored by: Alstom Group Differential Revision: https://reviews.freebsd.org/D24466 Added: head/sys/dev/ahci/ahci_fsl_fdt.c (contents, props changed) Modified: head/sys/conf/files.arm64 Modified: head/sys/conf/files.arm64 ============================================================================== --- head/sys/conf/files.arm64 Mon May 25 15:40:02 2020 (r361463) +++ head/sys/conf/files.arm64 Mon May 25 16:00:08 2020 (r361464) @@ -232,6 +232,7 @@ dev/acpica/acpi_if.m optional acpi dev/acpica/acpi_pci_link.c optional acpi pci dev/acpica/acpi_pcib.c optional acpi pci dev/acpica/acpi_pxm.c optional acpi +dev/ahci/ahci_fsl_fdt.c optional SOC_NXP_LS ahci fdt dev/ahci/ahci_generic.c optional ahci dev/altera/dwc/if_dwc_socfpga.c optional fdt dwc_socfpga dev/axgbe/if_axgbe.c optional axgbe Added: head/sys/dev/ahci/ahci_fsl_fdt.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/dev/ahci/ahci_fsl_fdt.c Mon May 25 16:00:08 2020 (r361464) @@ -0,0 +1,287 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2020 Alstom Group + * Copyright (c) 2020 Semihalf + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/* AHCI controller driver for NXP QorIQ Layerscape SoCs. */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include +#include + +#include + +#include + +#define AHCI_FSL_REG_PHY1 0xa8 +#define AHCI_FSL_REG_PHY2 0xac +#define AHCI_FSL_REG_PHY3 0xb0 +#define AHCI_FSL_REG_PHY4 0xb4 +#define AHCI_FSL_REG_PHY5 0xb8 +#define AHCI_FSL_REG_PTC 0xc8 + +#define AHCI_FSL_REG_PHY1_TTA_MASK 0x0001ffff +#define AHCI_FSL_REG_PHY1_SNM (1 << 17) +#define AHCI_FSL_REG_PHY1_SNR (1 << 18) +#define AHCI_FSL_REG_PHY1_FPR (1 << 20) +#define AHCI_FSL_REG_PHY1_PBPS_LBP 0 +#define AHCI_FSL_REG_PHY1_PBPS_LFTP (0x01 << 21) +#define AHCI_FSL_REG_PHY1_PBPS_MFTP (0x02 << 21) +#define AHCI_FSL_REG_PHY1_PBPS_HFTP (0x03 << 21) +#define AHCI_FSL_REG_PHY1_PBPS_PRBS (0x04 << 21) +#define AHCI_FSL_REG_PHY1_PBPS_BIST (0x05 << 21) +#define AHCI_FSL_REG_PHY1_PBPE (1 << 24) +#define AHCI_FSL_REG_PHY1_PBCE (1 << 25) +#define AHCI_FSL_REG_PHY1_PBPNA (1 << 26) +#define AHCI_FSL_REG_PHY1_STB (1 << 27) +#define AHCI_FSL_REG_PHY1_PSSO (1 << 28) +#define AHCI_FSL_REG_PHY1_PSS (1 << 29) +#define AHCI_FSL_REG_PHY1_ERSN (1 << 30) +#define AHCI_FSL_REG_PHY1_ESDF (1 << 31) + +#define AHCI_FSL_REG_PHY_MASK 0xff + +#define AHCI_FSL_PHY2_CIBGMN_SHIFT 0 +#define AHCI_FSL_PHY2_CIBGMX_SHIFT 8 +#define AHCI_FSL_PHY2_CIBGN_SHIFT 16 +#define AHCI_FSL_PHY2_CINMP_SHIFT 24 + +#define AHCI_FSL_PHY3_CWBGMN_SHIFT 0 +#define AHCI_FSL_PHY3_CWBGMX_SHIFT 8 +#define AHCI_FSL_PHY3_CWBGN_SHIFT 16 +#define AHCI_FSL_PHY3_CWNMP_SHIFT 24 + +#define AHCI_FSL_REG_PTC_RXWM_MASK 0x0000007f +#define AHCI_FSL_REG_PTC_ENBD (1 << 8) +#define AHCI_FSL_REG_PTC_ITM (1 << 9) + +#define AHCI_FSL_REG_PHY1_CFG ((0x1fffe & AHCI_FSL_REG_PHY1_TTA_MASK) \ + | AHCI_FSL_REG_PHY1_SNM | AHCI_FSL_REG_PHY1_PSS \ + | AHCI_FSL_REG_PHY1_ESDF) +#define AHCI_FSL_REG_PHY2_CFG ((0x1f << AHCI_FSL_PHY2_CIBGMN_SHIFT) \ + | (0x4d << AHCI_FSL_PHY2_CIBGMX_SHIFT) \ + | (0x18 << AHCI_FSL_PHY2_CIBGN_SHIFT) \ + | (0x28 << AHCI_FSL_PHY2_CINMP_SHIFT)) +#define AHCI_FSL_REG_PHY3_CFG ((0x09 << AHCI_FSL_PHY3_CWBGMN_SHIFT) \ + | (0x15 << AHCI_FSL_PHY3_CWBGMX_SHIFT) \ + | (0x08 << AHCI_FSL_PHY3_CWBGN_SHIFT) \ + | (0x0e << AHCI_FSL_PHY3_CWNMP_SHIFT)) +/* Bit 27 enabled so value of reserved bits remains as in documentation. */ +#define AHCI_FSL_REG_PTC_CFG ((0x29 & AHCI_FSL_REG_PTC_RXWM_MASK) \ + | (1 << 27)) + +#define AHCI_FSL_REG_ECC 0x0 +#define AHCI_FSL_REG_ECC_DIS 0x80000000 + +struct ahci_fsl_fdt_soc_data; + +struct ahci_fsl_fdt_controller { + struct ahci_controller ctlr; /* Must be the first field. */ + const struct ahci_fsl_fdt_soc_data *soc_data; + struct resource *r_ecc; + int r_ecc_rid; +}; + +static void +ahci_fsl_fdt_ls1046a_phy_init(struct ahci_fsl_fdt_controller *ctlr) +{ + struct ahci_controller *ahci; + uint32_t val; + + ahci = &ctlr->ctlr; + if (ctlr->r_ecc) { + val = ATA_INL(ctlr->r_ecc, AHCI_FSL_REG_ECC) | + AHCI_FSL_REG_ECC_DIS; + ATA_OUTL(ctlr->r_ecc, AHCI_FSL_REG_ECC, val); + } + ATA_OUTL(ahci->r_mem, AHCI_FSL_REG_PHY1, AHCI_FSL_REG_PHY1_CFG); + ATA_OUTL(ahci->r_mem, AHCI_FSL_REG_PHY2, AHCI_FSL_REG_PHY2_CFG); + ATA_OUTL(ahci->r_mem, AHCI_FSL_REG_PHY3, AHCI_FSL_REG_PHY3_CFG); + ATA_OUTL(ahci->r_mem, AHCI_FSL_REG_PTC, AHCI_FSL_REG_PTC_CFG); +} + +struct ahci_fsl_fdt_soc_data { + void (* phy_init)(struct ahci_fsl_fdt_controller *ctlr); +}; + +static const struct ahci_fsl_fdt_soc_data ahci_fsl_fdt_ls1046a_soc_data = { + .phy_init = ahci_fsl_fdt_ls1046a_phy_init, +}; + +static const struct ofw_compat_data ahci_fsl_fdt_compat_data[] = { + {"fsl,ls1046a-ahci", (uintptr_t)&ahci_fsl_fdt_ls1046a_soc_data}, + {NULL, 0} +}; + +static int +ahci_fsl_fdt_probe(device_t dev) +{ + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + if (!ofw_bus_search_compatible(dev, ahci_fsl_fdt_compat_data)->ocd_data) + return (ENXIO); + + device_set_desc(dev, "NXP QorIQ Layerscape AHCI controller"); + return (BUS_PROBE_DEFAULT); +} + +static int +ahci_fsl_fdt_attach(device_t dev) +{ + struct ahci_fsl_fdt_controller *ctlr; + struct ahci_controller *ahci; + uintptr_t ocd_data; + phandle_t node; + clk_t clock; + int ret; + + node = ofw_bus_get_node(dev); + ctlr = device_get_softc(dev); + ocd_data = ofw_bus_search_compatible(dev, + ahci_fsl_fdt_compat_data)->ocd_data; + ctlr->soc_data = (struct ahci_fsl_fdt_soc_data *)ocd_data; + ahci = &ctlr->ctlr; + ahci->dev = dev; + ahci->r_rid = 0; + ahci->quirks = AHCI_Q_NOPMP; + + ret = clk_get_by_ofw_index(dev, node, 0, &clock); + if (ret != 0) { + device_printf(dev, "No clock found.\n"); + return (ENXIO); + } + + ret = clk_enable(clock); + if (ret !=0) { + device_printf(dev, "Could not enable clock.\n"); + return (ENXIO); + } + + if (OF_hasprop(node, "reg-names") && ofw_bus_find_string_index(node, + "reg-names", "ahci", &ahci->r_rid)) { + device_printf(dev, + "Could not locate \"ahci\" string in the \"reg-names\" property"); + return (ENOENT); + } + + ahci->r_mem = bus_alloc_resource_any(dev, SYS_RES_MEMORY, + &ahci->r_rid, RF_ACTIVE); + if (!ahci->r_mem) { + device_printf(dev, + "Could not allocate resources for controller\n"); + return (ENOMEM); + } + + if (!ofw_bus_find_string_index(node, "reg-names", "sata-ecc", + &ctlr->r_ecc_rid)) { + ctlr->r_ecc = bus_alloc_resource_any(dev, SYS_RES_MEMORY, + &ctlr->r_ecc_rid, RF_ACTIVE); + if (!ctlr->r_ecc) { + device_printf(dev, + "Could not allocate resources for controller\n"); + ret = ENOMEM; + goto err_free_mem; + } + } + + /* Setup controller defaults. */ + ahci->numirqs = 1; + ctlr->soc_data->phy_init(ctlr); + + /* Reset controller. */ + ret = ahci_ctlr_reset(dev); + if (ret) + goto err_free_mem; + + ret = ahci_attach(dev); + if (ret) { + device_printf(dev, + "Could not initialize AHCI, with error: %d\n", ret); + goto err_free_ecc; + } + return (0); + +err_free_mem: + bus_free_resource(dev, SYS_RES_MEMORY, ahci->r_mem); +err_free_ecc: + if (ctlr->r_ecc) + bus_free_resource(dev, SYS_RES_MEMORY, ctlr->r_ecc); + return (ret); +} + +static int +ahci_fsl_fdt_detach(device_t dev) +{ + struct ahci_fsl_fdt_controller *ctlr; + + ctlr = device_get_softc(dev); + if (ctlr->r_ecc) + bus_free_resource(dev, SYS_RES_MEMORY, ctlr->r_ecc); + return ahci_detach(dev); +} + +static const device_method_t ahci_fsl_fdt_methods[] = { + DEVMETHOD(device_probe, ahci_fsl_fdt_probe), + DEVMETHOD(device_attach, ahci_fsl_fdt_attach), + DEVMETHOD(device_detach, ahci_fsl_fdt_detach), + DEVMETHOD(bus_alloc_resource, ahci_alloc_resource), + DEVMETHOD(bus_release_resource, ahci_release_resource), + DEVMETHOD(bus_setup_intr, ahci_setup_intr), + DEVMETHOD(bus_teardown_intr, ahci_teardown_intr), + DEVMETHOD(bus_print_child, ahci_print_child), + DEVMETHOD(bus_child_location_str, ahci_child_location_str), + DEVMETHOD(bus_get_dma_tag, ahci_get_dma_tag), + DEVMETHOD_END +}; + +static driver_t ahci_fsl_fdt_driver = { + "ahci", + ahci_fsl_fdt_methods, + sizeof(struct ahci_fsl_fdt_controller), +}; + +static devclass_t ahci_fsl_fdt_devclass; +DRIVER_MODULE(ahci_fsl, simplebus, ahci_fsl_fdt_driver, ahci_fsl_fdt_devclass, + NULL, NULL); +DRIVER_MODULE(ahci_fsl, ofwbus, ahci_fsl_fdt_driver, ahci_fsl_fdt_devclass, + NULL, NULL); From owner-svn-src-all@freebsd.org Mon May 25 16:06:31 2020 Return-Path: Delivered-To: svn-src-all@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 E434E32B0BB; Mon, 25 May 2020 16:06:31 +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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49W25g5nJYz44Jr; Mon, 25 May 2020 16:06:31 +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 BD4B614CE6; Mon, 25 May 2020 16:06:31 +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 04PG6VWR064554; Mon, 25 May 2020 16:06:31 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04PG6VN9064551; Mon, 25 May 2020 16:06:31 GMT (envelope-from dim@FreeBSD.org) Message-Id: <202005251606.04PG6VN9064551@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Mon, 25 May 2020 16:06:31 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org Subject: svn commit: r361465 - in stable: 11/lib/clang/include/clang/Config 11/lib/clang/include/llvm/Config 12/lib/clang/include/clang/Config 12/lib/clang/include/llvm/Config X-SVN-Group: stable-12 X-SVN-Commit-Author: dim X-SVN-Commit-Paths: in stable: 11/lib/clang/include/clang/Config 11/lib/clang/include/llvm/Config 12/lib/clang/include/clang/Config 12/lib/clang/include/llvm/Config X-SVN-Commit-Revision: 361465 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2020 16:06:32 -0000 Author: dim Date: Mon May 25 16:06:30 2020 New Revision: 361465 URL: https://svnweb.freebsd.org/changeset/base/361465 Log: Regenerate llvm config headers to correctly enable zlib support During the initial upgrade to 10.0.0 in r357120, I generated these headers once, but they were missing zlib-related settings at that time. These should have been regenerated again during the merge of the final 10.0.0 release. Direct commit to stable/{11,12}, since head has gotten 10.0.1 in the mean time, with up-to-date generated headers. Reported by: hyama99@gmail.com PR: 246244 Modified: stable/12/lib/clang/include/clang/Config/config.h stable/12/lib/clang/include/llvm/Config/config.h stable/12/lib/clang/include/llvm/Config/llvm-config.h Changes in other areas also in this revision: Modified: stable/11/lib/clang/include/clang/Config/config.h stable/11/lib/clang/include/llvm/Config/config.h stable/11/lib/clang/include/llvm/Config/llvm-config.h Modified: stable/12/lib/clang/include/clang/Config/config.h ============================================================================== --- stable/12/lib/clang/include/clang/Config/config.h Mon May 25 16:00:08 2020 (r361464) +++ stable/12/lib/clang/include/clang/Config/config.h Mon May 25 16:06:30 2020 (r361465) @@ -62,7 +62,7 @@ #define CLANG_HAVE_RLIMITS 1 /* The LLVM product name and version */ -#define BACKEND_PACKAGE_STRING "LLVM 10.0.0git" +#define BACKEND_PACKAGE_STRING "LLVM 10.0.0" /* Linker version detected at compile time. */ /* #undef HOST_LINK_VERSION */ Modified: stable/12/lib/clang/include/llvm/Config/config.h ============================================================================== --- stable/12/lib/clang/include/llvm/Config/config.h Mon May 25 16:00:08 2020 (r361464) +++ stable/12/lib/clang/include/llvm/Config/config.h Mon May 25 16:06:30 2020 (r361465) @@ -110,6 +110,9 @@ /* Define to 1 if you have the `pthread_setname_np' function. */ /* #undef HAVE_PTHREAD_SETNAME_NP */ +/* Define to 1 if you have the `z' library (-lz). */ +#define HAVE_LIBZ 1 + /* Define to 1 if you have the header file. */ #define HAVE_LINK_H 1 @@ -224,6 +227,9 @@ /* Define to 1 if you have the header file. */ /* #undef HAVE_VALGRIND_VALGRIND_H */ +/* Define to 1 if you have the header file. */ +#define HAVE_ZLIB_H 1 + /* Have host's _alloca */ /* #undef HAVE__ALLOCA */ @@ -316,10 +322,10 @@ #define PACKAGE_NAME "LLVM" /* Define to the full name and version of this package. */ -#define PACKAGE_STRING "LLVM 10.0.0git" +#define PACKAGE_STRING "LLVM 10.0.0" /* Define to the version of this package. */ -#define PACKAGE_VERSION "10.0.0git" +#define PACKAGE_VERSION "10.0.0" /* Define to the vendor of this package. */ /* #undef PACKAGE_VENDOR */ Modified: stable/12/lib/clang/include/llvm/Config/llvm-config.h ============================================================================== --- stable/12/lib/clang/include/llvm/Config/llvm-config.h Mon May 25 16:00:08 2020 (r361464) +++ stable/12/lib/clang/include/llvm/Config/llvm-config.h Mon May 25 16:06:30 2020 (r361465) @@ -73,7 +73,7 @@ #define LLVM_VERSION_PATCH 0 /* LLVM version string */ -#define LLVM_VERSION_STRING "10.0.0git" +#define LLVM_VERSION_STRING "10.0.0" /* Whether LLVM records statistics for use with GetStatistics(), * PrintStatistics() or PrintStatisticsJSON() From owner-svn-src-all@freebsd.org Mon May 25 16:06:32 2020 Return-Path: Delivered-To: svn-src-all@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 A945C32B0BC; Mon, 25 May 2020 16:06:32 +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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49W25h45MFz44Dk; Mon, 25 May 2020 16:06:32 +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 87D1F14EA1; Mon, 25 May 2020 16:06:32 +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 04PG6WPu064562; Mon, 25 May 2020 16:06:32 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04PG6VxK064560; Mon, 25 May 2020 16:06:31 GMT (envelope-from dim@FreeBSD.org) Message-Id: <202005251606.04PG6VxK064560@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Mon, 25 May 2020 16:06:31 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org Subject: svn commit: r361465 - in stable: 11/lib/clang/include/clang/Config 11/lib/clang/include/llvm/Config 12/lib/clang/include/clang/Config 12/lib/clang/include/llvm/Config X-SVN-Group: stable-11 X-SVN-Commit-Author: dim X-SVN-Commit-Paths: in stable: 11/lib/clang/include/clang/Config 11/lib/clang/include/llvm/Config 12/lib/clang/include/clang/Config 12/lib/clang/include/llvm/Config X-SVN-Commit-Revision: 361465 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2020 16:06:32 -0000 Author: dim Date: Mon May 25 16:06:30 2020 New Revision: 361465 URL: https://svnweb.freebsd.org/changeset/base/361465 Log: Regenerate llvm config headers to correctly enable zlib support During the initial upgrade to 10.0.0 in r357120, I generated these headers once, but they were missing zlib-related settings at that time. These should have been regenerated again during the merge of the final 10.0.0 release. Direct commit to stable/{11,12}, since head has gotten 10.0.1 in the mean time, with up-to-date generated headers. Reported by: hyama99@gmail.com PR: 246244 Modified: stable/11/lib/clang/include/clang/Config/config.h stable/11/lib/clang/include/llvm/Config/config.h stable/11/lib/clang/include/llvm/Config/llvm-config.h Changes in other areas also in this revision: Modified: stable/12/lib/clang/include/clang/Config/config.h stable/12/lib/clang/include/llvm/Config/config.h stable/12/lib/clang/include/llvm/Config/llvm-config.h Modified: stable/11/lib/clang/include/clang/Config/config.h ============================================================================== --- stable/11/lib/clang/include/clang/Config/config.h Mon May 25 16:00:08 2020 (r361464) +++ stable/11/lib/clang/include/clang/Config/config.h Mon May 25 16:06:30 2020 (r361465) @@ -62,7 +62,7 @@ #define CLANG_HAVE_RLIMITS 1 /* The LLVM product name and version */ -#define BACKEND_PACKAGE_STRING "LLVM 10.0.0git" +#define BACKEND_PACKAGE_STRING "LLVM 10.0.0" /* Linker version detected at compile time. */ /* #undef HOST_LINK_VERSION */ Modified: stable/11/lib/clang/include/llvm/Config/config.h ============================================================================== --- stable/11/lib/clang/include/llvm/Config/config.h Mon May 25 16:00:08 2020 (r361464) +++ stable/11/lib/clang/include/llvm/Config/config.h Mon May 25 16:06:30 2020 (r361465) @@ -110,6 +110,9 @@ /* Define to 1 if you have the `pthread_setname_np' function. */ /* #undef HAVE_PTHREAD_SETNAME_NP */ +/* Define to 1 if you have the `z' library (-lz). */ +#define HAVE_LIBZ 1 + /* Define to 1 if you have the header file. */ #define HAVE_LINK_H 1 @@ -224,6 +227,9 @@ /* Define to 1 if you have the header file. */ /* #undef HAVE_VALGRIND_VALGRIND_H */ +/* Define to 1 if you have the header file. */ +#define HAVE_ZLIB_H 1 + /* Have host's _alloca */ /* #undef HAVE__ALLOCA */ @@ -316,10 +322,10 @@ #define PACKAGE_NAME "LLVM" /* Define to the full name and version of this package. */ -#define PACKAGE_STRING "LLVM 10.0.0git" +#define PACKAGE_STRING "LLVM 10.0.0" /* Define to the version of this package. */ -#define PACKAGE_VERSION "10.0.0git" +#define PACKAGE_VERSION "10.0.0" /* Define to the vendor of this package. */ /* #undef PACKAGE_VENDOR */ Modified: stable/11/lib/clang/include/llvm/Config/llvm-config.h ============================================================================== --- stable/11/lib/clang/include/llvm/Config/llvm-config.h Mon May 25 16:00:08 2020 (r361464) +++ stable/11/lib/clang/include/llvm/Config/llvm-config.h Mon May 25 16:06:30 2020 (r361465) @@ -73,7 +73,7 @@ #define LLVM_VERSION_PATCH 0 /* LLVM version string */ -#define LLVM_VERSION_STRING "10.0.0git" +#define LLVM_VERSION_STRING "10.0.0" /* Whether LLVM records statistics for use with GetStatistics(), * PrintStatistics() or PrintStatisticsJSON() From owner-svn-src-all@freebsd.org Mon May 25 16:18:46 2020 Return-Path: Delivered-To: svn-src-all@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 D913B32B45A; Mon, 25 May 2020 16:18:46 +0000 (UTC) (envelope-from chmeeedalf@gmail.com) Received: from mail-il1-x142.google.com (mail-il1-x142.google.com [IPv6:2607:f8b0:4864:20::142]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "GTS CA 1O1" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 49W2Mp5Srfz45XX; Mon, 25 May 2020 16:18:46 +0000 (UTC) (envelope-from chmeeedalf@gmail.com) Received: by mail-il1-x142.google.com with SMTP id c20so17756975ilk.6; Mon, 25 May 2020 09:18:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=date:from:to:cc:subject:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=NzcyzMkMTOmROzT1QkToZ0CUCvVxHCakO9uMHPoEZwk=; b=UmZ6oFXe2X5+3sPFeZx2P/RQG7qiPv/RlYQBlXocaZSFBI5dm2bxygAGurcgeF9aSF +veUi/wc9eSrRQzYzBauAvwHhv3N3kl3vqOXjg/IopRfEg9GCPrPWe6xKLSdE8LCiTWO qidpsrII1Q0sPWZgLrHpp5KatoAjeWmJOiexmhu6QMRVRd1TzCDETnvGnmFgoep/LVb0 qhQkfXpHLvzGv7WTVndYjBhhLww9Y7ex1EEPRakZMoDRJZy39cmWCaAemAf3idaFLwlt gHTeCu80B3NWao9tXwtTBimkPR11e6M47bSF0pnxcbykKRg8xyrnxkYYyIcx1EdClK7m LF/w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=NzcyzMkMTOmROzT1QkToZ0CUCvVxHCakO9uMHPoEZwk=; b=IzQixhTiqt6vpMV8pmLdfH4x9Rt5svxa8AdLMgtoXg0LkRfBtnnZTgXjdB0uKBkOUl Nra2CbNctrKU8rVZ/4eelq/m4teRd41yv5EIffP3QoqvNVCOMIdrR2dh713itQeXWSZd QhjKLkA/bT3h6Z9IrelgEU7MEcw7CyJkBGwlJkat9Z23TtXw42UZ7JzDUJSwa7rdBQhw Q1ZnIm29UPedEA6pfbA+jy9wy91Evg/kcxCU1yh529Q3Pu5n+Xn2RV89KK48Lk2+XcEz bBijzq/F+eqT3Ww8ottzLgZIjjPN+hC2609UwkiTXay2EyFwvk4+ksZUIyj6V/z6x7vg Kf+Q== X-Gm-Message-State: AOAM533rb/CpA8MYYHwYLNLmITwMADguxz3OOOUuqOT/abukZVfKL6+p 3TgsXzOfC3Or0chQ8cL+kFbwCwTYTok= X-Google-Smtp-Source: ABdhPJxCFSRw/vogZxgRmnPXCHSpFylbp7jAYLxcDZeQgBsGuFMAObvz+ICAKherpKsP4J5ssfQbGw== X-Received: by 2002:a92:da52:: with SMTP id p18mr25843714ilq.173.1590423525725; Mon, 25 May 2020 09:18:45 -0700 (PDT) Received: from titan.knownspace (173-19-125-130.client.mchsi.com. [173.19.125.130]) by smtp.gmail.com with ESMTPSA id n27sm9717473ild.76.2020.05.25.09.18.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 25 May 2020 09:18:45 -0700 (PDT) Date: Mon, 25 May 2020 11:18:43 -0500 From: Justin Hibbits To: Marcin Wojtas Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r361460 - in head/sys: arm64/conf arm64/qoriq conf Message-ID: <20200525111843.0f858315@titan.knownspace> In-Reply-To: <202005251455.04PEtbSp021864@repo.freebsd.org> References: <202005251455.04PEtbSp021864@repo.freebsd.org> X-Mailer: Claws Mail 3.17.5 (GTK+ 2.24.32; powerpc64-portbld-freebsd13.0) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Rspamd-Queue-Id: 49W2Mp5Srfz45XX X-Spamd-Bar: ---- Authentication-Results: mx1.freebsd.org; none X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[]; ASN(0.00)[asn:15169, ipnet:2607:f8b0::/32, country:US] X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2020 16:18:46 -0000 Hi Marcin, On Mon, 25 May 2020 14:55:37 +0000 (UTC) Marcin Wojtas wrote: > Author: mw > Date: Mon May 25 14:55:37 2020 > New Revision: 361460 > URL: https://svnweb.freebsd.org/changeset/base/361460 > > Log: > Add GPIO support for QorIQ boards. > > This patch adds a GPIO controller support targeted for NXP LS1046A > SoC. The driver implements the following features: > * setting direction of each pin (IN or OUT) > * setting the mode of output pins (PUSHPULL or OPENDRAIN) > * setting the state of each output pin (1 or 0) > * reading the state of each input pin (1 or 0) > > Submitted by: Kamil Koczurek > Dawid Gorecki > Reviewed by: manu > Obtained from: Semihalf > Sponsored by: Alstom Group > Differential Revision: https://reviews.freebsd.org/D24353 > > Added: > head/sys/arm64/qoriq/ls1046_gpio.c (contents, props changed) > Modified: > head/sys/arm64/conf/GENERIC > head/sys/conf/files.arm64 > > Modified: head/sys/arm64/conf/GENERIC > ============================================================================== > --- head/sys/arm64/conf/GENERIC Mon May 25 14:45:18 > 2020 (r361459) +++ head/sys/arm64/conf/GENERIC Mon May > 25 14:55:37 2020 (r361460) @@ -248,6 +248,7 @@ device > gpio device gpioled > device fdt_pinctrl > device gpioregulator > +device ls1046_gpio # LS1046A GPIO controller > device mv_gpio # Marvell GPIO > controller device mvebu_pinctrl # Marvell > Pinmux Controller device rk_gpio # > RockChip GPIO Controller > > Added: head/sys/arm64/qoriq/ls1046_gpio.c > ============================================================================== > --- /dev/null 00:00:00 1970 (empty, because file is > newly added) +++ head/sys/arm64/qoriq/ls1046_gpio.c Mon May 25 > 14:55:37 2020 (r361460) @@ -0,0 +1,586 @@ > +/*- > + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD > + * > + * Copyright (c) 2020 Alstom Group. > + * Copyright (c) 2020 Semihalf. > + * > + * Redistribution and use in source and binary forms, with or without > + * modification, are permitted provided that the following conditions > + * are met: > + * 1. Redistributions of source code must retain the above copyright > + * notice, this list of conditions and the following disclaimer. > + * 2. Redistributions in binary form must reproduce the above > copyright > + * notice, this list of conditions and the following disclaimer > in the > + * documentation and/or other materials provided with the > distribution. > + * > + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS > IS'' AND > + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, > THE > + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A > PARTICULAR PURPOSE > + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE > LIABLE > + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR > CONSEQUENTIAL > + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE > GOODS > + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS > INTERRUPTION) > + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN > CONTRACT, STRICT > + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN > ANY WAY > + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE > POSSIBILITY OF > + * SUCH DAMAGE. > + */ > + > +#include > +__FBSDID("$FreeBSD$"); > + > +#include > + > +#include > +#include > +#include > +#include > +#include > +#include > + > +#include > +#include > +#include > + > +#include "gpio_if.h" > + > +/* constants */ > +enum { > + DIRECTION = 0x0, > + OPEN_DRAIN = 0x4, > + DATA = 0x8, > + INT_EV = 0xC, > + INT_MASK = 0x10, > + INT_CTRL = 0x14 > +}; This looks a lot like the GPIO module whose driver is in sys/powerpc/mpc85xx/qoriq_gpio.c. Is there any difference in hardware? If not, can you merge this driver with that, if there's anything to merge, to reduce duplication? - Justin From owner-svn-src-all@freebsd.org Mon May 25 16:40:51 2020 Return-Path: Delivered-To: svn-src-all@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 8F8C232BF2F; Mon, 25 May 2020 16:40:51 +0000 (UTC) (envelope-from cem@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49W2sH3fSjz47Nq; Mon, 25 May 2020 16:40:51 +0000 (UTC) (envelope-from cem@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 78763153A1; Mon, 25 May 2020 16:40:51 +0000 (UTC) (envelope-from cem@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04PGepJn084363; Mon, 25 May 2020 16:40:51 GMT (envelope-from cem@FreeBSD.org) Received: (from cem@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04PGenID083478; Mon, 25 May 2020 16:40:49 GMT (envelope-from cem@FreeBSD.org) Message-Id: <202005251640.04PGenID083478@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: cem set sender to cem@FreeBSD.org using -f From: Conrad Meyer Date: Mon, 25 May 2020 16:40:49 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361466 - in head: sys/amd64/amd64 sys/arm/arm sys/arm64/arm64 sys/conf sys/fs/fuse sys/fs/unionfs sys/i386/i386 sys/kern sys/mips/mips sys/powerpc/powerpc sys/riscv/riscv sys/sys tools... X-SVN-Group: head X-SVN-Commit-Author: cem X-SVN-Commit-Paths: in head: sys/amd64/amd64 sys/arm/arm sys/arm64/arm64 sys/conf sys/fs/fuse sys/fs/unionfs sys/i386/i386 sys/kern sys/mips/mips sys/powerpc/powerpc sys/riscv/riscv sys/sys tools/coccinelle X-SVN-Commit-Revision: 361466 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2020 16:40:51 -0000 Author: cem Date: Mon May 25 16:40:48 2020 New Revision: 361466 URL: https://svnweb.freebsd.org/changeset/base/361466 Log: copystr(9): Move to deprecate (attempt #2) This reapplies logical r360944 and r360946 (reverting r360955), with fixed copystr() stand-in replacement macro. Eventually the goal is to convert consumers and kill the macro, but for a first step it helps if the macro is correct. Prior commit message: Unlike the other copy*() functions, it does not serve to copy from one address space to another or protect against potential faults. It's just an older incarnation of the now-more-common strlcpy(). Add a coccinelle script to tools/ which can be used to mechanically convert existing instances where replacement with strlcpy is trivial. In the two cases which matched, fuse_vfsops.c and union_vfsops.c, the code was further refactored manually to simplify. Replace the declaration of copystr() in systm.h with a small macro wrapper around strlcpy (with correction from brooks@ -- thanks). Remove N redundant MI implementations of copystr. For MIPS, this entailed inlining the assembler copystr into the only consumer, copyinstr, and making the latter a leaf function. Reviewed by: jhb (earlier version) Discussed with: brooks (thanks!) Differential Revision: https://reviews.freebsd.org/D24672 Added: head/tools/coccinelle/ head/tools/coccinelle/copystr9.cocci (contents, props changed) Deleted: head/sys/arm64/arm64/copystr.c head/sys/powerpc/powerpc/copystr.c head/sys/riscv/riscv/copystr.c Modified: head/sys/amd64/amd64/support.S head/sys/arm/arm/copystr.S head/sys/conf/files.arm64 head/sys/conf/files.powerpc head/sys/conf/files.riscv head/sys/fs/fuse/fuse_vfsops.c head/sys/fs/unionfs/union_vfsops.c head/sys/i386/i386/support.s head/sys/kern/subr_csan.c head/sys/mips/mips/support.S head/sys/sys/systm.h Modified: head/sys/amd64/amd64/support.S ============================================================================== --- head/sys/amd64/amd64/support.S Mon May 25 16:06:30 2020 (r361465) +++ head/sys/amd64/amd64/support.S Mon May 25 16:40:48 2020 (r361466) @@ -1417,43 +1417,6 @@ copyinstr_toolong: jmp cpystrflt_x /* - * copystr(from, to, maxlen, int *lencopied) - * %rdi, %rsi, %rdx, %rcx - */ -ENTRY(copystr) - PUSH_FRAME_POINTER - movq %rdx,%r8 /* %r8 = maxlen */ - - incq %rdx -1: - decq %rdx - jz 4f - movb (%rdi),%al - movb %al,(%rsi) - incq %rsi - incq %rdi - testb %al,%al - jnz 1b - - /* Success -- 0 byte reached */ - decq %rdx - xorl %eax,%eax -2: - testq %rcx,%rcx - jz 3f - /* set *lencopied and return %rax */ - subq %rdx,%r8 - movq %r8,(%rcx) -3: - POP_FRAME_POINTER - ret -4: - /* rdx is zero -- return ENAMETOOLONG */ - movl $ENAMETOOLONG,%eax - jmp 2b -END(copystr) - -/* * Handling of special amd64 registers and descriptor tables etc */ /* void lgdt(struct region_descriptor *rdp); */ Modified: head/sys/arm/arm/copystr.S ============================================================================== --- head/sys/arm/arm/copystr.S Mon May 25 16:06:30 2020 (r361465) +++ head/sys/arm/arm/copystr.S Mon May 25 16:40:48 2020 (r361466) @@ -60,39 +60,6 @@ __FBSDID("$FreeBSD$"); ldr tmp, .Lpcb #endif -/* - * r0 - from - * r1 - to - * r2 - maxlens - * r3 - lencopied - * - * Copy string from r0 to r1 - */ -ENTRY(copystr) - stmfd sp!, {r4-r5} /* stack is 8 byte aligned */ - teq r2, #0x00000000 - mov r5, #0x00000000 - moveq r0, #ENAMETOOLONG - beq 2f - -1: ldrb r4, [r0], #0x0001 - add r5, r5, #0x00000001 - teq r4, #0x00000000 - strb r4, [r1], #0x0001 - teqne r5, r2 - bne 1b - - teq r4, #0x00000000 - moveq r0, #0x00000000 - movne r0, #ENAMETOOLONG - -2: teq r3, #0x00000000 - strne r5, [r3] - - ldmfd sp!, {r4-r5} /* stack is 8 byte aligned */ - RET -END(copystr) - #define SAVE_REGS stmfd sp!, {r4-r6} #define RESTORE_REGS ldmfd sp!, {r4-r6} Modified: head/sys/conf/files.arm64 ============================================================================== --- head/sys/conf/files.arm64 Mon May 25 16:06:30 2020 (r361465) +++ head/sys/conf/files.arm64 Mon May 25 16:40:48 2020 (r361466) @@ -134,7 +134,6 @@ arm64/arm64/busdma_machdep.c standard arm64/arm64/bzero.S standard arm64/arm64/clock.c standard arm64/arm64/copyinout.S standard -arm64/arm64/copystr.c standard arm64/arm64/cpu_errata.c standard arm64/arm64/cpufunc_asm.S standard arm64/arm64/db_disasm.c optional ddb Modified: head/sys/conf/files.powerpc ============================================================================== --- head/sys/conf/files.powerpc Mon May 25 16:06:30 2020 (r361465) +++ head/sys/conf/files.powerpc Mon May 25 16:40:48 2020 (r361466) @@ -241,7 +241,6 @@ powerpc/powerpc/bus_machdep.c standard powerpc/powerpc/busdma_machdep.c standard powerpc/powerpc/clock.c standard powerpc/powerpc/copyinout.c standard -powerpc/powerpc/copystr.c standard powerpc/powerpc/cpu.c standard powerpc/powerpc/cpu_subr64.S optional powerpc64 powerpc/powerpc/db_disasm.c optional ddb Modified: head/sys/conf/files.riscv ============================================================================== --- head/sys/conf/files.riscv Mon May 25 16:06:30 2020 (r361465) +++ head/sys/conf/files.riscv Mon May 25 16:40:48 2020 (r361466) @@ -37,7 +37,6 @@ riscv/riscv/busdma_bounce.c standard riscv/riscv/busdma_machdep.c standard riscv/riscv/clock.c standard riscv/riscv/copyinout.S standard -riscv/riscv/copystr.c standard riscv/riscv/cpufunc_asm.S standard riscv/riscv/db_disasm.c optional ddb riscv/riscv/db_interface.c optional ddb Modified: head/sys/fs/fuse/fuse_vfsops.c ============================================================================== --- head/sys/fs/fuse/fuse_vfsops.c Mon May 25 16:06:30 2020 (r361465) +++ head/sys/fs/fuse/fuse_vfsops.c Mon May 25 16:40:48 2020 (r361466) @@ -303,8 +303,6 @@ fuse_vfsop_mount(struct mount *mp) int daemon_timeout; int fd; - size_t len; - struct cdev *fdev; struct fuse_data *data = NULL; struct thread *td; @@ -437,8 +435,8 @@ fuse_vfsop_mount(struct mount *mp) strlcat(mp->mnt_stat.f_fstypename, ".", MFSNAMELEN); strlcat(mp->mnt_stat.f_fstypename, subtype, MFSNAMELEN); } - copystr(fspec, mp->mnt_stat.f_mntfromname, MNAMELEN - 1, &len); - bzero(mp->mnt_stat.f_mntfromname + len, MNAMELEN - len); + memset(mp->mnt_stat.f_mntfromname, 0, MNAMELEN); + strlcpy(mp->mnt_stat.f_mntfromname, fspec, MNAMELEN); mp->mnt_iosize_max = MAXPHYS; /* Now handshaking with daemon */ Modified: head/sys/fs/unionfs/union_vfsops.c ============================================================================== --- head/sys/fs/unionfs/union_vfsops.c Mon May 25 16:06:30 2020 (r361465) +++ head/sys/fs/unionfs/union_vfsops.c Mon May 25 16:40:48 2020 (r361466) @@ -83,7 +83,6 @@ unionfs_domount(struct mount *mp) char *tmp; char *ep; int len; - size_t done; int below; uid_t uid; gid_t gid; @@ -304,12 +303,8 @@ unionfs_domount(struct mount *mp) */ vfs_getnewfsid(mp); - len = MNAMELEN - 1; - tmp = mp->mnt_stat.f_mntfromname; - copystr((below ? ":" : ":"), tmp, len, &done); - len -= done - 1; - tmp += done - 1; - copystr(target, tmp, len, NULL); + snprintf(mp->mnt_stat.f_mntfromname, MNAMELEN, "<%s>:%s", + below ? "below" : "above", target); UNIONFSDEBUG("unionfs_mount: from %s, on %s\n", mp->mnt_stat.f_mntfromname, mp->mnt_stat.f_mntonname); Modified: head/sys/i386/i386/support.s ============================================================================== --- head/sys/i386/i386/support.s Mon May 25 16:06:30 2020 (r361465) +++ head/sys/i386/i386/support.s Mon May 25 16:40:48 2020 (r361466) @@ -233,47 +233,6 @@ ENTRY(memcpy) ret END(memcpy) -/* - * copystr(from, to, maxlen, int *lencopied) - MP SAFE - */ -ENTRY(copystr) - pushl %esi - pushl %edi - - movl 12(%esp),%esi /* %esi = from */ - movl 16(%esp),%edi /* %edi = to */ - movl 20(%esp),%edx /* %edx = maxlen */ - incl %edx -1: - decl %edx - jz 4f - lodsb - stosb - orb %al,%al - jnz 1b - - /* Success -- 0 byte reached */ - decl %edx - xorl %eax,%eax - jmp 6f -4: - /* edx is zero -- return ENAMETOOLONG */ - movl $ENAMETOOLONG,%eax - -6: - /* set *lencopied and return %eax */ - movl 20(%esp),%ecx - subl %edx,%ecx - movl 24(%esp),%edx - testl %edx,%edx - jz 7f - movl %ecx,(%edx) -7: - popl %edi - popl %esi - ret -END(copystr) - ENTRY(bcmp) pushl %edi pushl %esi Modified: head/sys/kern/subr_csan.c ============================================================================== --- head/sys/kern/subr_csan.c Mon May 25 16:06:30 2020 (r361465) +++ head/sys/kern/subr_csan.c Mon May 25 16:40:48 2020 (r361466) @@ -350,19 +350,11 @@ kcsan_strlen(const char *str) return (s - str); } -#undef copystr #undef copyin #undef copyin_nofault #undef copyinstr #undef copyout #undef copyout_nofault - -int -kcsan_copystr(const void *kfaddr, void *kdaddr, size_t len, size_t *done) -{ - kcsan_access((uintptr_t)kdaddr, len, true, false, __RET_ADDR); - return copystr(kfaddr, kdaddr, len, done); -} int kcsan_copyin(const void *uaddr, void *kaddr, size_t len) Modified: head/sys/mips/mips/support.S ============================================================================== --- head/sys/mips/mips/support.S Mon May 25 16:06:30 2020 (r361465) +++ head/sys/mips/mips/support.S Mon May 25 16:40:48 2020 (r361466) @@ -105,12 +105,22 @@ .text /* - * int copystr(void *kfaddr, void *kdaddr, size_t maxlen, size_t *lencopied) - * Copy a NIL-terminated string, at most maxlen characters long. Return the - * number of characters copied (including the NIL) in *lencopied. If the - * string is too long, return ENAMETOOLONG; else return 0. + * Copy a null terminated string from the user address space into + * the kernel address space. + * + * copyinstr(fromaddr, toaddr, maxlength, &lencopied) + * caddr_t fromaddr; + * caddr_t toaddr; + * u_int maxlength; + * u_int *lencopied; */ -LEAF(copystr) +LEAF(copyinstr) + PTR_LA v0, __copyinstr_err + blt a0, zero, __copyinstr_err # make sure address is in user space + GET_CPU_PCPU(v1) + PTR_L v1, PC_CURPCB(v1) + PTR_S v0, U_PCB_ONFAULT(v1) + move t0, a2 beq a2, zero, 4f 1: @@ -128,37 +138,14 @@ LEAF(copystr) PTR_SUBU a2, t0, a2 # if the 4th arg was non-NULL PTR_S a2, 0(a3) 3: - j ra # v0 is 0 or ENAMETOOLONG + + PTR_S zero, U_PCB_ONFAULT(v1) + j ra nop -END(copystr) - -/* - * Copy a null terminated string from the user address space into - * the kernel address space. - * - * copyinstr(fromaddr, toaddr, maxlength, &lencopied) - * caddr_t fromaddr; - * caddr_t toaddr; - * u_int maxlength; - * u_int *lencopied; - */ -NESTED(copyinstr, CALLFRAME_SIZ, ra) - PTR_SUBU sp, sp, CALLFRAME_SIZ - .mask 0x80000000, (CALLFRAME_RA - CALLFRAME_SIZ) - PTR_LA v0, copyerr - blt a0, zero, _C_LABEL(copyerr) # make sure address is in user space - REG_S ra, CALLFRAME_RA(sp) - GET_CPU_PCPU(v1) - PTR_L v1, PC_CURPCB(v1) - jal _C_LABEL(copystr) - PTR_S v0, U_PCB_ONFAULT(v1) - REG_L ra, CALLFRAME_RA(sp) - GET_CPU_PCPU(v1) - PTR_L v1, PC_CURPCB(v1) - PTR_S zero, U_PCB_ONFAULT(v1) - j ra - PTR_ADDU sp, sp, CALLFRAME_SIZ +__copyinstr_err: + j ra + li v0, EFAULT END(copyinstr) /* Modified: head/sys/sys/systm.h ============================================================================== --- head/sys/sys/systm.h Mon May 25 16:06:30 2020 (r361465) +++ head/sys/sys/systm.h Mon May 25 16:40:48 2020 (r361466) @@ -366,9 +366,17 @@ void *memcpy_early(void * _Nonnull to, const void * _N void *memmove_early(void * _Nonnull dest, const void * _Nonnull src, size_t n); #define bcopy_early(from, to, len) memmove_early((to), (from), (len)) -int copystr(const void * _Nonnull __restrict kfaddr, - void * _Nonnull __restrict kdaddr, size_t len, - size_t * __restrict lencopied); +#define copystr(src, dst, len, outlen) ({ \ + size_t __r, __len, *__outlen; \ + \ + __len = (len); \ + __outlen = (outlen); \ + __r = strlcpy((dst), (src), __len); \ + if (__outlen != NULL) \ + *__outlen = ((__r >= __len) ? __len : __r + 1); \ + ((__r >= __len) ? ENAMETOOLONG : 0); \ +}) + int copyinstr(const void * __restrict udaddr, void * _Nonnull __restrict kaddr, size_t len, size_t * __restrict lencopied); @@ -382,11 +390,9 @@ int copyout_nofault(const void * _Nonnull __restrict k void * __restrict udaddr, size_t len); #ifdef KCSAN -int kcsan_copystr(const void *, void *, size_t, size_t *); int kcsan_copyin(const void *, void *, size_t); int kcsan_copyinstr(const void *, void *, size_t, size_t *); int kcsan_copyout(const void *, void *, size_t); -#define copystr(kf, k, l, lc) kcsan_copystr((kf), (k), (l), (lc)) #define copyin(u, k, l) kcsan_copyin((u), (k), (l)) #define copyinstr(u, k, l, lc) kcsan_copyinstr((u), (k), (l), (lc)) #define copyout(k, u, l) kcsan_copyout((k), (u), (l)) Added: head/tools/coccinelle/copystr9.cocci ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/tools/coccinelle/copystr9.cocci Mon May 25 16:40:48 2020 (r361466) @@ -0,0 +1,39 @@ +@ nostorederror_nostoredlen @ + expression __src, __dst, __len; + statement S1; +@@ + + S1 +-copystr(__src, __dst, __len, NULL); ++strlcpy(__dst, __src, __len); + +@ ifcondition_nostoredlen @ + expression __src, __dst, __len; + statement S1; +@@ + if ( +( +-copystr(__src, __dst, __len, NULL) == ENAMETOOLONG +| +-copystr(__src, __dst, __len, NULL) != 0 +| +-copystr(__src, __dst, __len, NULL) +) ++strlcpy(__dst, __src, __len) >= __len + ) S1 + +@ nostorederror_storedlen1 @ + expression __src, __dst, __len; + identifier __done; + statement S1; +@@ + S1 +( +-copystr(__src, __dst, __len, &__done); ++__done = strlcpy(__dst, __src, __len); ++__done = MIN(__done, __len); +| +-copystr(__src, __dst, __len, __done); ++ *__done = strlcpy(__dst, __src, __len); ++ *__done = MIN(*__done, __len); +) From owner-svn-src-all@freebsd.org Mon May 25 17:41:21 2020 Return-Path: Delivered-To: svn-src-all@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 2507032D04F; Mon, 25 May 2020 17:41:21 +0000 (UTC) (envelope-from mw@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49W4C45cZfz4D42; Mon, 25 May 2020 17:41:20 +0000 (UTC) (envelope-from mw@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 BBA6C160A8; Mon, 25 May 2020 17:41:20 +0000 (UTC) (envelope-from mw@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04PHfKed026307; Mon, 25 May 2020 17:41:20 GMT (envelope-from mw@FreeBSD.org) Received: (from mw@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04PHfKT5026305; Mon, 25 May 2020 17:41:20 GMT (envelope-from mw@FreeBSD.org) Message-Id: <202005251741.04PHfKT5026305@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mw set sender to mw@FreeBSD.org using -f From: Marcin Wojtas Date: Mon, 25 May 2020 17:41:20 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org Subject: svn commit: r361467 - in stable/11: share/man/man4 sys/contrib/ena-com sys/contrib/ena-com/ena_defs sys/dev/ena sys/modules/ena X-SVN-Group: stable-11 X-SVN-Commit-Author: mw X-SVN-Commit-Paths: in stable/11: share/man/man4 sys/contrib/ena-com sys/contrib/ena-com/ena_defs sys/dev/ena sys/modules/ena X-SVN-Commit-Revision: 361467 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2020 17:41:21 -0000 Author: mw Date: Mon May 25 17:41:20 2020 New Revision: 361467 URL: https://svnweb.freebsd.org/changeset/base/361467 Log: MFC: Merge ENA v2.0.0 driver r348416 Update ENA version to v2.0.0 r348414 Fix ENA manual issues r348413 Improve ENA reset handling r348412 Fix NULL pointer dereference in ena_up() r348411 Unify new line characters in the ENA driver r348410 Fix Tx offloads for fragmented pkt headers in ENA r348409 Split ENA reset routine into restore and destroy stages r348408 Use bitfield for storing global ENA device states r348407 Fix error handling when ENA reset fails r348406 Fill bdf field of the host_info structure in ENA r348405 Add additional doorbells on ENA Tx path r348404 Limit maximum size of Rx refill threshold in ENA r348403 Add support for the LLQv2 and WC in ENA r348402 Lock optimization in ENA r348401 Add tuneable drbr ring size and hw queues depth for ENA r348400 Fix error in validate_tx_req_id() in ENA r348399 Change attach order to prevent crash upon failure in ENA r348398 Change order of ifp release on ENA detach r348397 Check for number of MSI-x upon partial allocation in ENA r348396 Set error value when allocation of IO irq fails in ENA r348395 Set vaddr and paddr as NULL when DMA alloc fails in ENA r348394 Fix DMA synchronization in the ENA driver Tx and Rx paths r348393 Check for missing MSI-x and Tx completions in ENA r348392 Fill number of CPUs field on ENA host_info structure r348391 Print ENA Tx error conditionally r348390 Trigger reset in ENA if there are too many Rx descriptors r348389 Remove RSS support in ENA r348388 Add notification AENQ handler for ENA r348387 Print information when ENA admin error occurs r348386 Do not specify active media type in ENA r348385 Adjust ENA driver to the new ena-com Sponsored by: Amazon, Inc. Modified: stable/11/share/man/man4/ena.4 stable/11/sys/contrib/ena-com/ena_com.c stable/11/sys/contrib/ena-com/ena_com.h stable/11/sys/contrib/ena-com/ena_defs/ena_admin_defs.h stable/11/sys/contrib/ena-com/ena_defs/ena_common_defs.h stable/11/sys/contrib/ena-com/ena_defs/ena_eth_io_defs.h stable/11/sys/contrib/ena-com/ena_defs/ena_gen_info.h stable/11/sys/contrib/ena-com/ena_defs/ena_regs_defs.h stable/11/sys/contrib/ena-com/ena_eth_com.c stable/11/sys/contrib/ena-com/ena_eth_com.h stable/11/sys/contrib/ena-com/ena_plat.h stable/11/sys/dev/ena/ena.c stable/11/sys/dev/ena/ena.h stable/11/sys/dev/ena/ena_sysctl.c stable/11/sys/dev/ena/ena_sysctl.h stable/11/sys/modules/ena/Makefile Directory Properties: stable/11/ (props changed) Modified: stable/11/share/man/man4/ena.4 ============================================================================== --- stable/11/share/man/man4/ena.4 Mon May 25 16:40:48 2020 (r361466) +++ stable/11/share/man/man4/ena.4 Mon May 25 17:41:20 2020 (r361467) @@ -27,7 +27,7 @@ .\" .\" $FreeBSD$ .\" -.Dd May 04, 2017 +.Dd August 16, 2017 .Dt ENA 4 .Os .Sh NAME @@ -35,7 +35,7 @@ .Nd "FreeBSD kernel driver for Elastic Network Adapter (ENA) family" .Sh SYNOPSIS To compile this driver into the kernel, -place the following line in your +place the following line in the kernel configuration file: .Bd -ragged -offset indent .Cd "device ena" @@ -59,8 +59,9 @@ The driver supports a range of ENA devices, is link-sp (i.e., the same driver is used for 10GbE, 25GbE, 40GbE, etc.), and has a negotiated and extendable feature set. .Pp -Some ENA devices support SR-IOV. This driver is used for both the -SR-IOV Physical Function (PF) and Virtual Function (VF) devices. +Some ENA devices support SR-IOV. +This driver is used for both the SR-IOV Physical Function (PF) and Virtual +Function (VF) devices. .Pp The ENA devices enable high speed and low overhead network traffic processing by providing multiple Tx/Rx queue pairs (the maximum number @@ -82,8 +83,8 @@ to recover in a manner transparent to the application, debug logs. .Pp Some of the ENA devices support a working mode called Low-latency -Queue (LLQ), which saves several more microseconds. This feature will -be implemented for driver in future releases. +Queue (LLQ), which saves several more microseconds. +This feature will be implemented for driver in future releases. .Sh HARDWARE Supported PCI vendor ID/device IDs: .Pp @@ -105,19 +106,23 @@ Supported PCI vendor ID/device IDs: Error occurred during initialization of the mmio register read request. .It ena%d: Can not reset device .Pp -Device could not be reset; device may not be responding or is already -during reset. +Device could not be reset. +.br +Device may not be responding or is already during reset. .It ena%d: device version is too low .Pp -Version of the controller is too low and it is not supported by the driver. +Version of the controller is too old and it is not supported by the driver. .It ena%d: Invalid dma width value %d .Pp -The controller is able to request dma transcation width. Device stopped -responding or it demanded invalid value. +The controller is able to request dma transaction width. +.br +Device stopped responding or it demanded invalid value. .It ena%d: Can not initialize ena admin queue with device .Pp -Initialization of the Admin Queue failed; device may not be responding or there -was a problem with initialization of the resources. +Initialization of the Admin Queue failed. +.br +Device may not be responding or there was a problem with initialization of +the resources. .It ena%d: Cannot get attribute for ena device rc: %d .Pp Failed to get attributes of the device from the controller. @@ -141,11 +146,14 @@ Errors occurred when trying to configure AENQ groups. .It ena%d: could not allocate irq vector: %d .It ena%d: Unable to allocate bus resource: registers .Pp -Resource allocation failed when initializing the device; driver will not -be attached. +Resource allocation failed when initializing the device. +.br +Driver will not be attached. .It ena%d: ENA device init failed (err: %d) .Pp -Device initialization failed; driver will not be attached. +Device initialization failed. +.br +Driver will not be attached. .It ena%d: could not activate irq vector: %d .Pp Error occurred when trying to activate interrupt vectors for Admin Queue. @@ -157,13 +165,16 @@ Error occurred when trying to register Admin Queue int Error occurred during configuration of the Admin Queue interrupts. .It ena%d: Enable MSI-X failed .Pp -Configuration of the MSI-X for Admin Queue failed; there could be lack -of resources or interrupts could not have been configured; driver will -not be attached. +Configuration of the MSI-X for Admin Queue failed. +.br +There could be lack of resources or interrupts could not have been configured. +.br +Driver will not be attached. .It ena%d: VLAN is in use, detach first .Pp -VLANs are being used when trying to detach the driver; VLANs should be detached -first and then detach routine should be called again. +VLANs are being used when trying to detach the driver. +.br +VLANs must be detached first and then detach routine have to be called again. .It ena%d: Unmapped RX DMA tag associations .It ena%d: Unmapped TX DMA tag associations .Pp @@ -175,8 +186,9 @@ Error occurred when trying to destroy RX/TX DMA tag. .It ena%d: Cannot fill hash control .It ena%d: WARNING: RSS was not properly initialized, it will affect bandwidth .Pp -Error occurred during initialization of one of RSS resources; device is still -going to work but it will affect performance because all RX packets will be +Error occurred during initialization of one of RSS resources. +.br +The device will work with reduced performance because all RX packets will be passed to queue 0 and there will be no hash information. .It ena%d: failed to tear down irq: %d .It ena%d: dev has no parent while releasing res for irq: %d @@ -196,16 +208,20 @@ Requested MTU value is not supported and will not be s Device stopped responding and will be reset. .It ena%d: Found a Tx that wasn't completed on time, qid %d, index %d. .Pp -Packet was pushed to the NIC but not sent within given time limit; it may -be caused by hang of the IO queue. +Packet was pushed to the NIC but not sent within given time limit. +.br +It may be caused by hang of the IO queue. .It ena%d: The number of lost tx completion is aboce the threshold (%d > %d). Reset the device .Pp -If too many Tx wasn't completed on time the device is going to be reset; it may -be caused by hanged queue or device. +If too many Tx wasn't completed on time the device is going to be reset. +.br +It may be caused by hanged queue or device. .It ena%d: trigger reset is on .Pp -Device will be reset; reset is triggered either by watchdog or if too many TX -packets were not completed on time. +Device will be reset. +.br +Reset is triggered either by watchdog or if too many TX packets were not +completed on time. .It ena%d: invalid value recvd .Pp Link status received from the device in the AENQ handler is invalid. @@ -220,7 +236,9 @@ Link status received from the device in the AENQ handl .It ena%d: could not allocate irq vector: %d .It ena%d: failed to register interrupt handler for irq %ju: %d .Pp -IO resources initialization failed. Interface will not be brought up. +IO resources initialization failed. +.br +Interface will not be brought up. .It ena%d: LRO[%d] Initialization failed! .Pp Initialization of the LRO for the RX ring failed. @@ -228,20 +246,26 @@ Initialization of the LRO for the RX ring failed. .It ena%d: failed to add buffer for rx queue %d .It ena%d: refilled rx queue %d with %d pages only .Pp -Allocation of resources used on RX path failed; if happened during -initialization of the IO queue, the interface will not be brought up. +Allocation of resources used on RX path failed. +.br +If happened during initialization of the IO queue, the interface will not be +brought up. .It ena%d: ioctl promisc/allmulti .Pp -IOCTL request for the device to work in promiscuous/allmulti mode; see +IOCTL request for the device to work in promiscuous/allmulti mode. +.br +See .Xr ifconfig 8 for more details. .It ena%d: too many fragments. Last fragment: %d! .Pp Packet with unsupported number of segments was queued for sending to the -device; packet will be dropped. +device. +.br +Packet will be dropped. .Sh SUPPORT -If an issue is identified with the released source code with a supported adapter -email the specific information related to the issue to +If an issue is identified with the released source code with a supported +adapter, please email the specific information related to the issue to .Aq Mt mk@semihalf.com and .Aq Mt mw@semihalf.com . Modified: stable/11/sys/contrib/ena-com/ena_com.c ============================================================================== --- stable/11/sys/contrib/ena-com/ena_com.c Mon May 25 16:40:48 2020 (r361466) +++ stable/11/sys/contrib/ena-com/ena_com.c Mon May 25 17:41:20 2020 (r361467) @@ -1,7 +1,7 @@ /*- * BSD LICENSE * - * Copyright (c) 2015-2017 Amazon.com, Inc. or its affiliates. + * Copyright (c) 2015-2019 Amazon.com, Inc. or its affiliates. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -32,9 +32,6 @@ */ #include "ena_com.h" -#ifdef ENA_INTERNAL -#include "ena_gen_info.h" -#endif /*****************************************************************************/ /*****************************************************************************/ @@ -52,9 +49,6 @@ #define ENA_EXTENDED_STAT_GET_QUEUE(_funct_queue) (_funct_queue >> 16) #endif /* ENA_EXTENDED_STATS */ -#define MIN_ENA_VER (((ENA_COMMON_SPEC_VERSION_MAJOR) << \ - ENA_REGS_VERSION_MAJOR_VERSION_SHIFT) \ - | (ENA_COMMON_SPEC_VERSION_MINOR)) #define ENA_CTRL_MAJOR 0 #define ENA_CTRL_MINOR 0 @@ -76,6 +70,8 @@ #define ENA_REGS_ADMIN_INTR_MASK 1 +#define ENA_POLL_MS 5 + /*****************************************************************************/ /*****************************************************************************/ /*****************************************************************************/ @@ -112,8 +108,8 @@ static inline int ena_com_mem_addr_set(struct ena_com_ return ENA_COM_INVAL; } - ena_addr->mem_addr_low = (u32)addr; - ena_addr->mem_addr_high = (u16)((u64)addr >> 32); + ena_addr->mem_addr_low = lower_32_bits(addr); + ena_addr->mem_addr_high = (u16)upper_32_bits(addr); return 0; } @@ -127,7 +123,7 @@ static int ena_com_admin_init_sq(struct ena_com_admin_ sq->mem_handle); if (!sq->entries) { - ena_trc_err("memory allocation failed"); + ena_trc_err("memory allocation failed\n"); return ENA_COM_NO_MEM; } @@ -149,7 +145,7 @@ static int ena_com_admin_init_cq(struct ena_com_admin_ cq->mem_handle); if (!cq->entries) { - ena_trc_err("memory allocation failed"); + ena_trc_err("memory allocation failed\n"); return ENA_COM_NO_MEM; } @@ -174,7 +170,7 @@ static int ena_com_admin_init_aenq(struct ena_com_dev aenq->mem_handle); if (!aenq->entries) { - ena_trc_err("memory allocation failed"); + ena_trc_err("memory allocation failed\n"); return ENA_COM_NO_MEM; } @@ -249,7 +245,7 @@ static struct ena_comp_ctx *__ena_com_submit_admin_cmd tail_masked = admin_queue->sq.tail & queue_size_mask; /* In case of queue FULL */ - cnt = ATOMIC32_READ(&admin_queue->outstanding_cmds); + cnt = (u16)ATOMIC32_READ(&admin_queue->outstanding_cmds); if (cnt >= admin_queue->q_depth) { ena_trc_dbg("admin queue is full.\n"); admin_queue->stats.out_of_space++; @@ -301,7 +297,7 @@ static inline int ena_com_init_comp_ctxt(struct ena_co queue->comp_ctx = ENA_MEM_ALLOC(queue->q_dmadev, size); if (unlikely(!queue->comp_ctx)) { - ena_trc_err("memory allocation failed"); + ena_trc_err("memory allocation failed\n"); return ENA_COM_NO_MEM; } @@ -320,7 +316,7 @@ static struct ena_comp_ctx *ena_com_submit_admin_cmd(s struct ena_admin_acq_entry *comp, size_t comp_size_in_bytes) { - unsigned long flags; + unsigned long flags = 0; struct ena_comp_ctx *comp_ctx; ENA_SPINLOCK_LOCK(admin_queue->q_lock, flags); @@ -332,7 +328,7 @@ static struct ena_comp_ctx *ena_com_submit_admin_cmd(s cmd_size_in_bytes, comp, comp_size_in_bytes); - if (unlikely(IS_ERR(comp_ctx))) + if (IS_ERR(comp_ctx)) admin_queue->running_state = false; ENA_SPINLOCK_UNLOCK(admin_queue->q_lock, flags); @@ -348,6 +344,7 @@ static int ena_com_init_io_sq(struct ena_com_dev *ena_ memset(&io_sq->desc_addr, 0x0, sizeof(io_sq->desc_addr)); + io_sq->dma_addr_bits = (u8)ena_dev->dma_addr_bits; io_sq->desc_entry_size = (io_sq->direction == ENA_COM_IO_QUEUE_DIRECTION_TX) ? sizeof(struct ena_eth_io_tx_desc) : @@ -373,18 +370,21 @@ static int ena_com_init_io_sq(struct ena_com_dev *ena_ } if (!io_sq->desc_addr.virt_addr) { - ena_trc_err("memory allocation failed"); + ena_trc_err("memory allocation failed\n"); return ENA_COM_NO_MEM; } } if (io_sq->mem_queue_type == ENA_ADMIN_PLACEMENT_POLICY_DEV) { /* Allocate bounce buffers */ - io_sq->bounce_buf_ctrl.buffer_size = ena_dev->llq_info.desc_list_entry_size; - io_sq->bounce_buf_ctrl.buffers_num = ENA_COM_BOUNCE_BUFFER_CNTRL_CNT; + io_sq->bounce_buf_ctrl.buffer_size = + ena_dev->llq_info.desc_list_entry_size; + io_sq->bounce_buf_ctrl.buffers_num = + ENA_COM_BOUNCE_BUFFER_CNTRL_CNT; io_sq->bounce_buf_ctrl.next_to_use = 0; - size = io_sq->bounce_buf_ctrl.buffer_size * io_sq->bounce_buf_ctrl.buffers_num; + size = io_sq->bounce_buf_ctrl.buffer_size * + io_sq->bounce_buf_ctrl.buffers_num; ENA_MEM_ALLOC_NODE(ena_dev->dmadev, size, @@ -395,11 +395,12 @@ static int ena_com_init_io_sq(struct ena_com_dev *ena_ io_sq->bounce_buf_ctrl.base_buffer = ENA_MEM_ALLOC(ena_dev->dmadev, size); if (!io_sq->bounce_buf_ctrl.base_buffer) { - ena_trc_err("bounce buffer memory allocation failed"); + ena_trc_err("bounce buffer memory allocation failed\n"); return ENA_COM_NO_MEM; } - memcpy(&io_sq->llq_info, &ena_dev->llq_info, sizeof(io_sq->llq_info)); + memcpy(&io_sq->llq_info, &ena_dev->llq_info, + sizeof(io_sq->llq_info)); /* Initiate the first bounce buffer */ io_sq->llq_buf_ctrl.curr_bounce_buf = @@ -408,6 +409,10 @@ static int ena_com_init_io_sq(struct ena_com_dev *ena_ 0x0, io_sq->llq_info.desc_list_entry_size); io_sq->llq_buf_ctrl.descs_left_in_line = io_sq->llq_info.descs_num_before_header; + + if (io_sq->llq_info.max_entries_in_tx_burst > 0) + io_sq->entries_in_tx_burst_left = + io_sq->llq_info.max_entries_in_tx_burst; } io_sq->tail = 0; @@ -451,7 +456,7 @@ static int ena_com_init_io_cq(struct ena_com_dev *ena_ } if (!io_cq->cdesc_addr.virt_addr) { - ena_trc_err("memory allocation failed"); + ena_trc_err("memory allocation failed\n"); return ENA_COM_NO_MEM; } @@ -500,12 +505,12 @@ static void ena_com_handle_admin_completion(struct ena cqe = &admin_queue->cq.entries[head_masked]; /* Go over all the completions */ - while ((cqe->acq_common_descriptor.flags & + while ((READ_ONCE8(cqe->acq_common_descriptor.flags) & ENA_ADMIN_ACQ_COMMON_DESC_PHASE_MASK) == phase) { /* Do not read the rest of the completion entry before the * phase bit was validated */ - rmb(); + dma_rmb(); ena_com_handle_single_admin_completion(admin_queue, cqe); head_masked++; @@ -552,7 +557,8 @@ static int ena_com_comp_status_to_errno(u8 comp_status static int ena_com_wait_and_process_admin_cq_polling(struct ena_comp_ctx *comp_ctx, struct ena_com_admin_queue *admin_queue) { - unsigned long flags, timeout; + unsigned long flags = 0; + unsigned long timeout; int ret; timeout = ENA_GET_SYSTEM_TIMEOUT(admin_queue->completion_timeout); @@ -577,7 +583,7 @@ static int ena_com_wait_and_process_admin_cq_polling(s goto err; } - ENA_MSLEEP(100); + ENA_MSLEEP(ENA_POLL_MS); } if (unlikely(comp_ctx->status == ENA_CMD_ABORTED)) { @@ -598,42 +604,113 @@ err: return ret; } +/** + * Set the LLQ configurations of the firmware + * + * The driver provides only the enabled feature values to the device, + * which in turn, checks if they are supported. + */ +static int ena_com_set_llq(struct ena_com_dev *ena_dev) +{ + struct ena_com_admin_queue *admin_queue; + struct ena_admin_set_feat_cmd cmd; + struct ena_admin_set_feat_resp resp; + struct ena_com_llq_info *llq_info = &ena_dev->llq_info; + int ret; + + memset(&cmd, 0x0, sizeof(cmd)); + admin_queue = &ena_dev->admin_queue; + + cmd.aq_common_descriptor.opcode = ENA_ADMIN_SET_FEATURE; + cmd.feat_common.feature_id = ENA_ADMIN_LLQ; + + cmd.u.llq.header_location_ctrl_enabled = llq_info->header_location_ctrl; + cmd.u.llq.entry_size_ctrl_enabled = llq_info->desc_list_entry_size_ctrl; + cmd.u.llq.desc_num_before_header_enabled = llq_info->descs_num_before_header; + cmd.u.llq.descriptors_stride_ctrl_enabled = llq_info->desc_stride_ctrl; + + ret = ena_com_execute_admin_command(admin_queue, + (struct ena_admin_aq_entry *)&cmd, + sizeof(cmd), + (struct ena_admin_acq_entry *)&resp, + sizeof(resp)); + + if (unlikely(ret)) + ena_trc_err("Failed to set LLQ configurations: %d\n", ret); + + return ret; +} + static int ena_com_config_llq_info(struct ena_com_dev *ena_dev, - struct ena_admin_feature_llq_desc *llq_desc) + struct ena_admin_feature_llq_desc *llq_features, + struct ena_llq_configurations *llq_default_cfg) { struct ena_com_llq_info *llq_info = &ena_dev->llq_info; + u16 supported_feat; + int rc; memset(llq_info, 0, sizeof(*llq_info)); - switch (llq_desc->header_location_ctrl) { - case ENA_ADMIN_INLINE_HEADER: - llq_info->inline_header = true; - break; - case ENA_ADMIN_HEADER_RING: - llq_info->inline_header = false; - break; - default: - ena_trc_err("Invalid header location control\n"); + supported_feat = llq_features->header_location_ctrl_supported; + + if (likely(supported_feat & llq_default_cfg->llq_header_location)) { + llq_info->header_location_ctrl = + llq_default_cfg->llq_header_location; + } else { + ena_trc_err("Invalid header location control, supported: 0x%x\n", + supported_feat); return -EINVAL; } - switch (llq_desc->entry_size_ctrl) { - case ENA_ADMIN_LIST_ENTRY_SIZE_128B: - llq_info->desc_list_entry_size = 128; - break; - case ENA_ADMIN_LIST_ENTRY_SIZE_192B: - llq_info->desc_list_entry_size = 192; - break; - case ENA_ADMIN_LIST_ENTRY_SIZE_256B: - llq_info->desc_list_entry_size = 256; - break; - default: - ena_trc_err("Invalid entry_size_ctrl %d\n", - llq_desc->entry_size_ctrl); - return -EINVAL; + if (likely(llq_info->header_location_ctrl == ENA_ADMIN_INLINE_HEADER)) { + supported_feat = llq_features->descriptors_stride_ctrl_supported; + if (likely(supported_feat & llq_default_cfg->llq_stride_ctrl)) { + llq_info->desc_stride_ctrl = llq_default_cfg->llq_stride_ctrl; + } else { + if (supported_feat & ENA_ADMIN_MULTIPLE_DESCS_PER_ENTRY) { + llq_info->desc_stride_ctrl = ENA_ADMIN_MULTIPLE_DESCS_PER_ENTRY; + } else if (supported_feat & ENA_ADMIN_SINGLE_DESC_PER_ENTRY) { + llq_info->desc_stride_ctrl = ENA_ADMIN_SINGLE_DESC_PER_ENTRY; + } else { + ena_trc_err("Invalid desc_stride_ctrl, supported: 0x%x\n", + supported_feat); + return -EINVAL; + } + + ena_trc_err("Default llq stride ctrl is not supported, performing fallback, default: 0x%x, supported: 0x%x, used: 0x%x\n", + llq_default_cfg->llq_stride_ctrl, + supported_feat, + llq_info->desc_stride_ctrl); + } + } else { + llq_info->desc_stride_ctrl = 0; } - if ((llq_info->desc_list_entry_size & 0x7)) { + supported_feat = llq_features->entry_size_ctrl_supported; + if (likely(supported_feat & llq_default_cfg->llq_ring_entry_size)) { + llq_info->desc_list_entry_size_ctrl = llq_default_cfg->llq_ring_entry_size; + llq_info->desc_list_entry_size = llq_default_cfg->llq_ring_entry_size_value; + } else { + if (supported_feat & ENA_ADMIN_LIST_ENTRY_SIZE_128B) { + llq_info->desc_list_entry_size_ctrl = ENA_ADMIN_LIST_ENTRY_SIZE_128B; + llq_info->desc_list_entry_size = 128; + } else if (supported_feat & ENA_ADMIN_LIST_ENTRY_SIZE_192B) { + llq_info->desc_list_entry_size_ctrl = ENA_ADMIN_LIST_ENTRY_SIZE_192B; + llq_info->desc_list_entry_size = 192; + } else if (supported_feat & ENA_ADMIN_LIST_ENTRY_SIZE_256B) { + llq_info->desc_list_entry_size_ctrl = ENA_ADMIN_LIST_ENTRY_SIZE_256B; + llq_info->desc_list_entry_size = 256; + } else { + ena_trc_err("Invalid entry_size_ctrl, supported: 0x%x\n", supported_feat); + return -EINVAL; + } + + ena_trc_err("Default llq ring entry size is not supported, performing fallback, default: 0x%x, supported: 0x%x, used: 0x%x\n", + llq_default_cfg->llq_ring_entry_size, + supported_feat, + llq_info->desc_list_entry_size); + } + if (unlikely(llq_info->desc_list_entry_size & 0x7)) { /* The desc list entry size should be whole multiply of 8 * This requirement comes from __iowrite64_copy() */ @@ -642,35 +719,50 @@ static int ena_com_config_llq_info(struct ena_com_dev return -EINVAL; } - if (llq_info->inline_header) { - llq_info->desc_stride_ctrl = llq_desc->descriptors_stride_ctrl; - if ((llq_info->desc_stride_ctrl != ENA_ADMIN_SINGLE_DESC_PER_ENTRY) && - (llq_info->desc_stride_ctrl != ENA_ADMIN_MULTIPLE_DESCS_PER_ENTRY)) { - ena_trc_err("Invalid desc_stride_ctrl %d\n", - llq_info->desc_stride_ctrl); - return -EINVAL; - } - } else { - llq_info->desc_stride_ctrl = ENA_ADMIN_SINGLE_DESC_PER_ENTRY; - } - - if (llq_info->desc_stride_ctrl == ENA_ADMIN_SINGLE_DESC_PER_ENTRY) + if (llq_info->desc_stride_ctrl == ENA_ADMIN_MULTIPLE_DESCS_PER_ENTRY) llq_info->descs_per_entry = llq_info->desc_list_entry_size / sizeof(struct ena_eth_io_tx_desc); else llq_info->descs_per_entry = 1; - llq_info->descs_num_before_header = llq_desc->desc_num_before_header_ctrl; + supported_feat = llq_features->desc_num_before_header_supported; + if (likely(supported_feat & llq_default_cfg->llq_num_decs_before_header)) { + llq_info->descs_num_before_header = llq_default_cfg->llq_num_decs_before_header; + } else { + if (supported_feat & ENA_ADMIN_LLQ_NUM_DESCS_BEFORE_HEADER_2) { + llq_info->descs_num_before_header = ENA_ADMIN_LLQ_NUM_DESCS_BEFORE_HEADER_2; + } else if (supported_feat & ENA_ADMIN_LLQ_NUM_DESCS_BEFORE_HEADER_1) { + llq_info->descs_num_before_header = ENA_ADMIN_LLQ_NUM_DESCS_BEFORE_HEADER_1; + } else if (supported_feat & ENA_ADMIN_LLQ_NUM_DESCS_BEFORE_HEADER_4) { + llq_info->descs_num_before_header = ENA_ADMIN_LLQ_NUM_DESCS_BEFORE_HEADER_4; + } else if (supported_feat & ENA_ADMIN_LLQ_NUM_DESCS_BEFORE_HEADER_8) { + llq_info->descs_num_before_header = ENA_ADMIN_LLQ_NUM_DESCS_BEFORE_HEADER_8; + } else { + ena_trc_err("Invalid descs_num_before_header, supported: 0x%x\n", + supported_feat); + return -EINVAL; + } - return 0; -} + ena_trc_err("Default llq num descs before header is not supported, performing fallback, default: 0x%x, supported: 0x%x, used: 0x%x\n", + llq_default_cfg->llq_num_decs_before_header, + supported_feat, + llq_info->descs_num_before_header); + } + llq_info->max_entries_in_tx_burst = + (u16)(llq_features->max_tx_burst_size / llq_default_cfg->llq_ring_entry_size_value); + rc = ena_com_set_llq(ena_dev); + if (rc) + ena_trc_err("Cannot set LLQ configuration: %d\n", rc); + return 0; +} + static int ena_com_wait_and_process_admin_cq_interrupts(struct ena_comp_ctx *comp_ctx, struct ena_com_admin_queue *admin_queue) { - unsigned long flags; + unsigned long flags = 0; int ret; ENA_WAIT_EVENT_WAIT(comp_ctx->wait_event, @@ -715,7 +807,7 @@ static u32 ena_com_reg_bar_read32(struct ena_com_dev * volatile struct ena_admin_ena_mmio_req_read_less_resp *read_resp = mmio_read->read_resp; u32 mmio_read_reg, ret, i; - unsigned long flags; + unsigned long flags = 0; u32 timeout = mmio_read->reg_read_to; ENA_MIGHT_SLEEP(); @@ -736,15 +828,11 @@ static u32 ena_com_reg_bar_read32(struct ena_com_dev * mmio_read_reg |= mmio_read->seq_num & ENA_REGS_MMIO_REG_READ_REQ_ID_MASK; - /* make sure read_resp->req_id get updated before the hw can write - * there - */ - wmb(); + ENA_REG_WRITE32(ena_dev->bus, mmio_read_reg, + ena_dev->reg_bar + ENA_REGS_MMIO_REG_READ_OFF); - ENA_REG_WRITE32(ena_dev->bus, mmio_read_reg, ena_dev->reg_bar + ENA_REGS_MMIO_REG_READ_OFF); - for (i = 0; i < timeout; i++) { - if (read_resp->req_id == mmio_read->seq_num) + if (READ_ONCE16(read_resp->req_id) == mmio_read->seq_num) break; ENA_UDELAY(1); @@ -761,7 +849,7 @@ static u32 ena_com_reg_bar_read32(struct ena_com_dev * } if (read_resp->reg_off != offset) { - ena_trc_err("Read failure: wrong offset provided"); + ena_trc_err("Read failure: wrong offset provided\n"); ret = ENA_MMIO_READ_TIMEOUT; } else { ret = read_resp->reg_val; @@ -856,7 +944,6 @@ static void ena_com_io_queue_free(struct ena_com_dev * } if (io_sq->bounce_buf_ctrl.base_buffer) { - size = io_sq->llq_info.desc_list_entry_size * ENA_COM_BOUNCE_BUFFER_CNTRL_CNT; ENA_MEM_FREE(ena_dev->dmadev, io_sq->bounce_buf_ctrl.base_buffer); io_sq->bounce_buf_ctrl.base_buffer = NULL; } @@ -867,6 +954,9 @@ static int wait_for_reset_state(struct ena_com_dev *en { u32 val, i; + /* Convert timeout from resolution of 100ms to ENA_POLL_MS */ + timeout = (timeout * 100) / ENA_POLL_MS; + for (i = 0; i < timeout; i++) { val = ena_com_reg_bar_read32(ena_dev, ENA_REGS_DEV_STS_OFF); @@ -879,8 +969,7 @@ static int wait_for_reset_state(struct ena_com_dev *en exp_state) return 0; - /* The resolution of the timeout is 100ms */ - ENA_MSLEEP(100); + ENA_MSLEEP(ENA_POLL_MS); } return ENA_COM_TIMER_EXPIRED; @@ -903,7 +992,8 @@ static int ena_com_get_feature_ex(struct ena_com_dev * struct ena_admin_get_feat_resp *get_resp, enum ena_admin_aq_feature_id feature_id, dma_addr_t control_buf_dma_addr, - u32 control_buff_size) + u32 control_buff_size, + u8 feature_ver) { struct ena_com_admin_queue *admin_queue; struct ena_admin_get_feat_cmd get_cmd; @@ -934,7 +1024,7 @@ static int ena_com_get_feature_ex(struct ena_com_dev * } get_cmd.control_buffer.length = control_buff_size; - + get_cmd.feat_common.feature_version = feature_ver; get_cmd.feat_common.feature_id = feature_id; ret = ena_com_execute_admin_command(admin_queue, @@ -954,13 +1044,15 @@ static int ena_com_get_feature_ex(struct ena_com_dev * static int ena_com_get_feature(struct ena_com_dev *ena_dev, struct ena_admin_get_feat_resp *get_resp, - enum ena_admin_aq_feature_id feature_id) + enum ena_admin_aq_feature_id feature_id, + u8 feature_ver) { return ena_com_get_feature_ex(ena_dev, get_resp, feature_id, 0, - 0); + 0, + feature_ver); } static int ena_com_hash_key_allocate(struct ena_com_dev *ena_dev) @@ -1030,7 +1122,7 @@ static int ena_com_indirect_table_allocate(struct ena_ int ret; ret = ena_com_get_feature(ena_dev, &get_resp, - ENA_ADMIN_RSS_REDIRECTION_TABLE_CONFIG); + ENA_ADMIN_RSS_REDIRECTION_TABLE_CONFIG, 0); if (unlikely(ret)) return ret; @@ -1269,7 +1361,7 @@ int ena_com_execute_admin_command(struct ena_com_admin comp_ctx = ena_com_submit_admin_cmd(admin_queue, cmd, cmd_size, comp, comp_size); - if (unlikely(IS_ERR(comp_ctx))) { + if (IS_ERR(comp_ctx)) { if (comp_ctx == ERR_PTR(ENA_COM_NO_DEVICE)) ena_trc_dbg("Failed to submit command [%ld]\n", PTR_ERR(comp_ctx)); @@ -1389,12 +1481,12 @@ void ena_com_abort_admin_commands(struct ena_com_dev * void ena_com_wait_for_abort_completion(struct ena_com_dev *ena_dev) { struct ena_com_admin_queue *admin_queue = &ena_dev->admin_queue; - unsigned long flags; + unsigned long flags = 0; ENA_SPINLOCK_LOCK(admin_queue->q_lock, flags); while (ATOMIC32_READ(&admin_queue->outstanding_cmds) != 0) { ENA_SPINLOCK_UNLOCK(admin_queue->q_lock, flags); - ENA_MSLEEP(20); + ENA_MSLEEP(ENA_POLL_MS); ENA_SPINLOCK_LOCK(admin_queue->q_lock, flags); } ENA_SPINLOCK_UNLOCK(admin_queue->q_lock, flags); @@ -1433,7 +1525,7 @@ bool ena_com_get_admin_running_state(struct ena_com_de void ena_com_set_admin_running_state(struct ena_com_dev *ena_dev, bool state) { struct ena_com_admin_queue *admin_queue = &ena_dev->admin_queue; - unsigned long flags; + unsigned long flags = 0; ENA_SPINLOCK_LOCK(admin_queue->q_lock, flags); ena_dev->admin_queue.running_state = state; @@ -1460,14 +1552,14 @@ int ena_com_set_aenq_config(struct ena_com_dev *ena_de struct ena_admin_get_feat_resp get_resp; int ret; - ret = ena_com_get_feature(ena_dev, &get_resp, ENA_ADMIN_AENQ_CONFIG); + ret = ena_com_get_feature(ena_dev, &get_resp, ENA_ADMIN_AENQ_CONFIG, 0); if (ret) { ena_trc_info("Can't get aenq configuration\n"); return ret; } if ((get_resp.u.aenq.supported_groups & groups_flag) != groups_flag) { - ena_trc_warn("Trying to set unsupported aenq events. supported flag: %x asked flag: %x\n", + ena_trc_warn("Trying to set unsupported aenq events. supported flag: 0x%x asked flag: 0x%x\n", get_resp.u.aenq.supported_groups, groups_flag); return ENA_COM_UNSUPPORTED; @@ -1542,11 +1634,6 @@ int ena_com_validate_version(struct ena_com_dev *ena_d ENA_REGS_VERSION_MAJOR_VERSION_SHIFT, ver & ENA_REGS_VERSION_MINOR_VERSION_MASK); - if (ver < MIN_ENA_VER) { - ena_trc_err("ENA version is lower than the minimal version the driver supports\n"); - return -1; - } - ena_trc_info("ena controller version: %d.%d.%d implementation version %d\n", (ctrl_ver & ENA_REGS_CONTROLLER_VERSION_MAJOR_VERSION_MASK) >> ENA_REGS_CONTROLLER_VERSION_MAJOR_VERSION_SHIFT, @@ -1579,9 +1666,6 @@ void ena_com_admin_destroy(struct ena_com_dev *ena_dev u16 size; ENA_WAIT_EVENT_DESTROY(admin_queue->comp_ctx->wait_event); - - ENA_SPINLOCK_DESTROY(admin_queue->q_lock); - if (admin_queue->comp_ctx) ENA_MEM_FREE(ena_dev->dmadev, admin_queue->comp_ctx); admin_queue->comp_ctx = NULL; @@ -1602,6 +1686,7 @@ void ena_com_admin_destroy(struct ena_com_dev *ena_dev ENA_MEM_FREE_COHERENT(ena_dev->dmadev, size, aenq->entries, aenq->dma_addr, aenq->mem_handle); aenq->entries = NULL; + ENA_SPINLOCK_DESTROY(admin_queue->q_lock); } void ena_com_set_admin_polling_mode(struct ena_com_dev *ena_dev, bool polling) @@ -1611,7 +1696,8 @@ void ena_com_set_admin_polling_mode(struct ena_com_dev if (polling) mask_value = ENA_REGS_ADMIN_INTR_MASK; - ENA_REG_WRITE32(ena_dev->bus, mask_value, ena_dev->reg_bar + ENA_REGS_INTR_MASK_OFF); + ENA_REG_WRITE32(ena_dev->bus, mask_value, + ena_dev->reg_bar + ENA_REGS_INTR_MASK_OFF); ena_dev->admin_queue.polling = polling; } @@ -1626,7 +1712,7 @@ int ena_com_mmio_reg_read_request_init(struct ena_com_ mmio_read->read_resp_dma_addr, mmio_read->read_resp_mem_handle); if (unlikely(!mmio_read->read_resp)) - return ENA_COM_NO_MEM; + goto err; ena_com_mmio_reg_read_request_write_dev_addr(ena_dev); @@ -1635,6 +1721,10 @@ int ena_com_mmio_reg_read_request_init(struct ena_com_ mmio_read->readless_supported = true; return 0; + +err: + ENA_SPINLOCK_DESTROY(mmio_read->lock); + return ENA_COM_NO_MEM; } void ena_com_set_mmio_read_mode(struct ena_com_dev *ena_dev, bool readless_supported) @@ -1658,7 +1748,6 @@ void ena_com_mmio_reg_read_request_destroy(struct ena_ mmio_read->read_resp_mem_handle); mmio_read->read_resp = NULL; - ENA_SPINLOCK_DESTROY(mmio_read->lock); } @@ -1675,17 +1764,12 @@ void ena_com_mmio_reg_read_request_write_dev_addr(stru } int ena_com_admin_init(struct ena_com_dev *ena_dev, - struct ena_aenq_handlers *aenq_handlers, - bool init_spinlock) + struct ena_aenq_handlers *aenq_handlers) { struct ena_com_admin_queue *admin_queue = &ena_dev->admin_queue; u32 aq_caps, acq_caps, dev_sts, addr_low, addr_high; int ret; -#ifdef ENA_INTERNAL - ena_trc_info("ena_defs : Version:[%s] Build date [%s]", - ENA_GEN_COMMIT, ENA_GEN_DATE); -#endif dev_sts = ena_com_reg_bar_read32(ena_dev, ENA_REGS_DEV_STS_OFF); if (unlikely(dev_sts == ENA_MMIO_READ_TIMEOUT)) { @@ -1707,8 +1791,7 @@ int ena_com_admin_init(struct ena_com_dev *ena_dev, ATOMIC32_SET(&admin_queue->outstanding_cmds, 0); - if (init_spinlock) - ENA_SPINLOCK_INIT(admin_queue->q_lock); + ENA_SPINLOCK_INIT(admin_queue->q_lock); ret = ena_com_init_comp_ctxt(admin_queue); if (ret) @@ -1848,9 +1931,65 @@ void ena_com_destroy_io_queue(struct ena_com_dev *ena_ int ena_com_get_link_params(struct ena_com_dev *ena_dev, struct ena_admin_get_feat_resp *resp) { - return ena_com_get_feature(ena_dev, resp, ENA_ADMIN_LINK_CONFIG); + return ena_com_get_feature(ena_dev, resp, ENA_ADMIN_LINK_CONFIG, 0); } +int ena_com_extra_properties_strings_init(struct ena_com_dev *ena_dev) +{ + struct ena_admin_get_feat_resp resp; + struct ena_extra_properties_strings *extra_properties_strings = + &ena_dev->extra_properties_strings; + u32 rc; + extra_properties_strings->size = ENA_ADMIN_EXTRA_PROPERTIES_COUNT * + ENA_ADMIN_EXTRA_PROPERTIES_STRING_LEN; + + ENA_MEM_ALLOC_COHERENT(ena_dev->dmadev, + extra_properties_strings->size, + extra_properties_strings->virt_addr, + extra_properties_strings->dma_addr, + extra_properties_strings->dma_handle); + if (unlikely(!extra_properties_strings->virt_addr)) { + ena_trc_err("Failed to allocate extra properties strings\n"); + return 0; + } + + rc = ena_com_get_feature_ex(ena_dev, &resp, + ENA_ADMIN_EXTRA_PROPERTIES_STRINGS, + extra_properties_strings->dma_addr, + extra_properties_strings->size, 0); + if (rc) { + ena_trc_dbg("Failed to get extra properties strings\n"); + goto err; + } + + return resp.u.extra_properties_strings.count; +err: + ena_com_delete_extra_properties_strings(ena_dev); + return 0; +} + +void ena_com_delete_extra_properties_strings(struct ena_com_dev *ena_dev) +{ + struct ena_extra_properties_strings *extra_properties_strings = + &ena_dev->extra_properties_strings; + + if (extra_properties_strings->virt_addr) { + ENA_MEM_FREE_COHERENT(ena_dev->dmadev, + extra_properties_strings->size, + extra_properties_strings->virt_addr, + extra_properties_strings->dma_addr, + extra_properties_strings->dma_handle); + extra_properties_strings->virt_addr = NULL; + } +} + +int ena_com_get_extra_properties_flags(struct ena_com_dev *ena_dev, + struct ena_admin_get_feat_resp *resp) +{ + return ena_com_get_feature(ena_dev, resp, + ENA_ADMIN_EXTRA_PROPERTIES_FLAGS, 0); +} + int ena_com_get_dev_attr_feat(struct ena_com_dev *ena_dev, struct ena_com_dev_get_features_ctx *get_feat_ctx) { @@ -1858,7 +1997,7 @@ int ena_com_get_dev_attr_feat(struct ena_com_dev *ena_ int rc; rc = ena_com_get_feature(ena_dev, &get_resp, - ENA_ADMIN_DEVICE_ATTRIBUTES); + ENA_ADMIN_DEVICE_ATTRIBUTES, 0); if (rc) return rc; @@ -1866,17 +2005,34 @@ int ena_com_get_dev_attr_feat(struct ena_com_dev *ena_ sizeof(get_resp.u.dev_attr)); ena_dev->supported_features = get_resp.u.dev_attr.supported_features; - rc = ena_com_get_feature(ena_dev, &get_resp, - ENA_ADMIN_MAX_QUEUES_NUM); - if (rc) - return rc; + if (ena_dev->supported_features & BIT(ENA_ADMIN_MAX_QUEUES_EXT)) { + rc = ena_com_get_feature(ena_dev, &get_resp, + ENA_ADMIN_MAX_QUEUES_EXT, + ENA_FEATURE_MAX_QUEUE_EXT_VER); + if (rc) + return rc; - memcpy(&get_feat_ctx->max_queues, &get_resp.u.max_queue, - sizeof(get_resp.u.max_queue)); - ena_dev->tx_max_header_size = get_resp.u.max_queue.max_header_size; + if (get_resp.u.max_queue_ext.version != ENA_FEATURE_MAX_QUEUE_EXT_VER) + return -EINVAL; + memcpy(&get_feat_ctx->max_queue_ext, &get_resp.u.max_queue_ext, + sizeof(get_resp.u.max_queue_ext)); + ena_dev->tx_max_header_size = + get_resp.u.max_queue_ext.max_queue_ext.max_tx_header_size; + } else { + rc = ena_com_get_feature(ena_dev, &get_resp, + ENA_ADMIN_MAX_QUEUES_NUM, 0); + memcpy(&get_feat_ctx->max_queues, &get_resp.u.max_queue, + sizeof(get_resp.u.max_queue)); + ena_dev->tx_max_header_size = + get_resp.u.max_queue.max_header_size; + + if (rc) + return rc; + } + rc = ena_com_get_feature(ena_dev, &get_resp, - ENA_ADMIN_AENQ_CONFIG); + ENA_ADMIN_AENQ_CONFIG, 0); if (rc) return rc; @@ -1884,7 +2040,7 @@ int ena_com_get_dev_attr_feat(struct ena_com_dev *ena_ sizeof(get_resp.u.aenq)); *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@freebsd.org Mon May 25 17:47:32 2020 Return-Path: Delivered-To: svn-src-all@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 6856D32CF53; Mon, 25 May 2020 17:47:32 +0000 (UTC) (envelope-from mw@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49W4LD2PG1z4Djs; Mon, 25 May 2020 17:47:32 +0000 (UTC) (envelope-from mw@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 4D30F15A79; Mon, 25 May 2020 17:47:32 +0000 (UTC) (envelope-from mw@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04PHlWuP027426; Mon, 25 May 2020 17:47:32 GMT (envelope-from mw@FreeBSD.org) Received: (from mw@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04PHlWDk027423; Mon, 25 May 2020 17:47:32 GMT (envelope-from mw@FreeBSD.org) Message-Id: <202005251747.04PHlWDk027423@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mw set sender to mw@FreeBSD.org using -f From: Marcin Wojtas Date: Mon, 25 May 2020 17:47:32 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org Subject: svn commit: r361468 - in stable/11/sys: contrib/ena-com dev/ena modules/ena X-SVN-Group: stable-11 X-SVN-Commit-Author: mw X-SVN-Commit-Paths: in stable/11/sys: contrib/ena-com dev/ena modules/ena X-SVN-Commit-Revision: 361468 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2020 17:47:32 -0000 Author: mw Date: Mon May 25 17:47:31 2020 New Revision: 361468 URL: https://svnweb.freebsd.org/changeset/base/361468 Log: MFC: ENA netmap support and bug fixes r360777 Optimize ENA Rx refill for low memory conditions r358289 Rework and simplify Tx DMA mapping in ENA r354242 Make valdiate_rx_req_id static inline because it uses other static r354225 Update ENA version to v2.1.0 r354224 Add support for ENA NETMAP partial initialization r354223 Add support for ENA NETMAP Tx r354222 Add support for ENA NETMAP Rx r354221 Introduce NETMAP support in ENA r354220 Split Rx/Tx from initialization code in ENA driver r354219 Fix ENA keep-alive timeout due to prolonged reset Sponsored by: Amazon, Inc. Added: stable/11/sys/dev/ena/ena_datapath.c - copied, changed from r354225, head/sys/dev/ena/ena_datapath.c stable/11/sys/dev/ena/ena_datapath.h - copied unchanged from r354225, head/sys/dev/ena/ena_datapath.h stable/11/sys/dev/ena/ena_netmap.c - copied unchanged from r354225, head/sys/dev/ena/ena_netmap.c stable/11/sys/dev/ena/ena_netmap.h - copied unchanged from r354225, head/sys/dev/ena/ena_netmap.h Modified: stable/11/sys/contrib/ena-com/ena_plat.h stable/11/sys/dev/ena/ena.c stable/11/sys/dev/ena/ena.h stable/11/sys/dev/ena/ena_sysctl.c stable/11/sys/dev/ena/ena_sysctl.h stable/11/sys/modules/ena/Makefile Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/contrib/ena-com/ena_plat.h ============================================================================== --- stable/11/sys/contrib/ena-com/ena_plat.h Mon May 25 17:41:20 2020 (r361467) +++ stable/11/sys/contrib/ena-com/ena_plat.h Mon May 25 17:47:31 2020 (r361468) @@ -103,6 +103,7 @@ extern struct ena_bus_space ebs; #define ENA_RSC (1 << 6) /* Goes with TXPTH or RXPTH, free/alloc res. */ #define ENA_IOQ (1 << 7) /* Detailed info about IO queues. */ #define ENA_ADMQ (1 << 8) /* Detailed info about admin queue. */ +#define ENA_NETMAP (1 << 9) /* Detailed info about netmap. */ extern int ena_log_level; Modified: stable/11/sys/dev/ena/ena.c ============================================================================== --- stable/11/sys/dev/ena/ena.c Mon May 25 17:41:20 2020 (r361467) +++ stable/11/sys/dev/ena/ena.c Mon May 25 17:47:31 2020 (r361468) @@ -76,9 +76,14 @@ __FBSDID("$FreeBSD$"); #include #include +#include "ena_datapath.h" #include "ena.h" #include "ena_sysctl.h" +#ifdef DEV_NETMAP +#include "ena_netmap.h" +#endif /* DEV_NETMAP */ + /********************************************************* * Function prototypes *********************************************************/ @@ -98,11 +103,11 @@ static int ena_setup_tx_dma_tag(struct ena_adapter *); static int ena_free_tx_dma_tag(struct ena_adapter *); static int ena_setup_rx_dma_tag(struct ena_adapter *); static int ena_free_rx_dma_tag(struct ena_adapter *); +static void ena_release_all_tx_dmamap(struct ena_ring *); static int ena_setup_tx_resources(struct ena_adapter *, int); static void ena_free_tx_resources(struct ena_adapter *, int); static int ena_setup_all_tx_resources(struct ena_adapter *); static void ena_free_all_tx_resources(struct ena_adapter *); -static inline int validate_rx_req_id(struct ena_ring *, uint16_t); static int ena_setup_rx_resources(struct ena_adapter *, unsigned int); static void ena_free_rx_resources(struct ena_adapter *, unsigned int); static int ena_setup_all_rx_resources(struct ena_adapter *); @@ -111,7 +116,6 @@ static inline int ena_alloc_rx_mbuf(struct ena_adapter struct ena_rx_buffer *); static void ena_free_rx_mbuf(struct ena_adapter *, struct ena_ring *, struct ena_rx_buffer *); -static int ena_refill_rx_bufs(struct ena_ring *, uint32_t); static void ena_free_rx_bufs(struct ena_adapter *, unsigned int); static void ena_refill_all_rx_bufs(struct ena_adapter *); static void ena_free_all_rx_bufs(struct ena_adapter *); @@ -121,16 +125,6 @@ static void ena_destroy_all_tx_queues(struct ena_adapt static void ena_destroy_all_rx_queues(struct ena_adapter *); static void ena_destroy_all_io_queues(struct ena_adapter *); static int ena_create_io_queues(struct ena_adapter *); -static int ena_tx_cleanup(struct ena_ring *); -static int ena_rx_cleanup(struct ena_ring *); -static inline int validate_tx_req_id(struct ena_ring *, uint16_t); -static void ena_rx_hash_mbuf(struct ena_ring *, struct ena_com_rx_ctx *, - struct mbuf *); -static struct mbuf* ena_rx_mbuf(struct ena_ring *, struct ena_com_rx_buf_info *, - struct ena_com_rx_ctx *, uint16_t *); -static inline void ena_rx_checksum(struct ena_ring *, struct ena_com_rx_ctx *, - struct mbuf *); -static void ena_cleanup(void *arg, int pending); static int ena_handle_msix(void *); static int ena_enable_msix(struct ena_adapter *); static void ena_setup_mgmnt_intr(struct ena_adapter *); @@ -144,8 +138,6 @@ static void ena_disable_msix(struct ena_adapter *); static void ena_unmask_all_io_irqs(struct ena_adapter *); static int ena_rss_configure(struct ena_adapter *); static int ena_up_complete(struct ena_adapter *); -static int ena_up(struct ena_adapter *); -static void ena_down(struct ena_adapter *); static uint64_t ena_get_counter(if_t, ift_counter); static int ena_media_change(if_t); static void ena_media_status(if_t, struct ifmediareq *); @@ -156,15 +148,6 @@ static void ena_update_host_info(struct ena_admin_host static void ena_update_hwassist(struct ena_adapter *); static int ena_setup_ifnet(device_t, struct ena_adapter *, struct ena_com_dev_get_features_ctx *); -static void ena_tx_csum(struct ena_com_tx_ctx *, struct mbuf *); -static int ena_check_and_collapse_mbuf(struct ena_ring *tx_ring, - struct mbuf **mbuf); -static void ena_dmamap_llq(void *, bus_dma_segment_t *, int, int); -static int ena_xmit_mbuf(struct ena_ring *, struct mbuf **); -static void ena_start_xmit(struct ena_ring *); -static int ena_mq_start(if_t, struct mbuf *); -static void ena_deferred_mq_start(void *, int); -static void ena_qflush(if_t); static int ena_enable_wc(struct resource *); static int ena_set_queues_placement_policy(device_t, struct ena_com_dev *, struct ena_admin_feature_llq_desc *, struct ena_llq_configurations *); @@ -385,6 +368,7 @@ ena_init_io_rings_common(struct ena_adapter *adapter, ring->ena_dev = adapter->ena_dev; ring->first_interrupt = false; ring->no_interrupt_event_cnt = 0; + ring->rx_mbuf_sz = ena_mbuf_sz; } static void @@ -525,9 +509,9 @@ ena_setup_rx_dma_tag(struct ena_adapter *adapter) ENA_DMA_BIT_MASK(adapter->dma_width), /* lowaddr of excl window */ BUS_SPACE_MAXADDR, /* highaddr of excl window */ NULL, NULL, /* filter, filterarg */ - MJUM16BYTES, /* maxsize */ + ena_mbuf_sz, /* maxsize */ adapter->max_rx_sgl_size, /* nsegments */ - MJUM16BYTES, /* maxsegsize */ + ena_mbuf_sz, /* maxsegsize */ 0, /* flags */ NULL, /* lockfunc */ NULL, /* lockarg */ @@ -549,6 +533,39 @@ ena_free_rx_dma_tag(struct ena_adapter *adapter) return (ret); } +static void +ena_release_all_tx_dmamap(struct ena_ring *tx_ring) +{ + struct ena_adapter *adapter = tx_ring->adapter; + struct ena_tx_buffer *tx_info; + bus_dma_tag_t tx_tag = adapter->tx_buf_tag;; + int i; +#ifdef DEV_NETMAP + struct ena_netmap_tx_info *nm_info; + int j; +#endif /* DEV_NETMAP */ + + for (i = 0; i < tx_ring->ring_size; ++i) { + tx_info = &tx_ring->tx_buffer_info[i]; +#ifdef DEV_NETMAP + if (adapter->ifp->if_capenable & IFCAP_NETMAP) { + nm_info = &tx_info->nm_info; + for (j = 0; j < ENA_PKT_MAX_BUFS; ++j) { + if (nm_info->map_seg[j] != NULL) { + bus_dmamap_destroy(tx_tag, + nm_info->map_seg[j]); + nm_info->map_seg[j] = NULL; + } + } + } +#endif /* DEV_NETMAP */ + if (tx_info->dmamap != NULL) { + bus_dmamap_destroy(tx_tag, tx_info->dmamap); + tx_info->dmamap = NULL; + } + } +} + /** * ena_setup_tx_resources - allocate Tx resources (Descriptors) * @adapter: network interface device structure @@ -562,7 +579,13 @@ ena_setup_tx_resources(struct ena_adapter *adapter, in struct ena_que *que = &adapter->que[qid]; struct ena_ring *tx_ring = que->tx_ring; int size, i, err; +#ifdef DEV_NETMAP + bus_dmamap_t *map; + int j; + ena_netmap_reset_tx_ring(adapter, qid); +#endif /* DEV_NETMAP */ + size = sizeof(struct ena_tx_buffer) * tx_ring->ring_size; tx_ring->tx_buffer_info = malloc(size, M_DEVBUF, M_NOWAIT | M_ZERO); @@ -600,24 +623,28 @@ ena_setup_tx_resources(struct ena_adapter *adapter, in /* ... and create the buffer DMA maps */ for (i = 0; i < tx_ring->ring_size; i++) { err = bus_dmamap_create(adapter->tx_buf_tag, 0, - &tx_ring->tx_buffer_info[i].map_head); + &tx_ring->tx_buffer_info[i].dmamap); if (unlikely(err != 0)) { ena_trace(ENA_ALERT, - "Unable to create Tx DMA map_head for buffer %d\n", + "Unable to create Tx DMA map for buffer %d\n", i); - goto err_buf_info_unmap; + goto err_map_release; } - tx_ring->tx_buffer_info[i].seg_mapped = false; - err = bus_dmamap_create(adapter->tx_buf_tag, 0, - &tx_ring->tx_buffer_info[i].map_seg); - if (unlikely(err != 0)) { - ena_trace(ENA_ALERT, - "Unable to create Tx DMA map_seg for buffer %d\n", - i); - goto err_buf_info_head_unmap; +#ifdef DEV_NETMAP + if (adapter->ifp->if_capenable & IFCAP_NETMAP) { + map = tx_ring->tx_buffer_info[i].nm_info.map_seg; + for (j = 0; j < ENA_PKT_MAX_BUFS; j++) { + err = bus_dmamap_create(adapter->tx_buf_tag, 0, + &map[j]); + if (unlikely(err != 0)) { + ena_trace(ENA_ALERT, "Unable to create " + "Tx DMA for buffer %d %d\n", i, j); + goto err_map_release; + } + } } - tx_ring->tx_buffer_info[i].head_mapped = false; +#endif /* DEV_NETMAP */ } /* Allocate taskqueues */ @@ -628,7 +655,7 @@ ena_setup_tx_resources(struct ena_adapter *adapter, in ena_trace(ENA_ALERT, "Unable to create taskqueue for enqueue task\n"); i = tx_ring->ring_size; - goto err_buf_info_unmap; + goto err_map_release; } tx_ring->running = true; @@ -638,17 +665,8 @@ ena_setup_tx_resources(struct ena_adapter *adapter, in return (0); -err_buf_info_head_unmap: - bus_dmamap_destroy(adapter->tx_buf_tag, - tx_ring->tx_buffer_info[i].map_head); -err_buf_info_unmap: - while (i--) { - bus_dmamap_destroy(adapter->tx_buf_tag, - tx_ring->tx_buffer_info[i].map_head); - bus_dmamap_destroy(adapter->tx_buf_tag, - tx_ring->tx_buffer_info[i].map_seg); - } - free(tx_ring->push_buf_intermediate_buf, M_DEVBUF); +err_map_release: + ena_release_all_tx_dmamap(tx_ring); err_tx_ids_free: free(tx_ring->free_tx_ids, M_DEVBUF); tx_ring->free_tx_ids = NULL; @@ -670,6 +688,10 @@ static void ena_free_tx_resources(struct ena_adapter *adapter, int qid) { struct ena_ring *tx_ring = &adapter->tx_ring[qid]; +#ifdef DEV_NETMAP + struct ena_netmap_tx_info *nm_info; + int j; +#endif /* DEV_NETMAP */ while (taskqueue_cancel(tx_ring->enqueue_tq, &tx_ring->enqueue_task, NULL)) @@ -683,27 +705,30 @@ ena_free_tx_resources(struct ena_adapter *adapter, int /* Free buffer DMA maps, */ for (int i = 0; i < tx_ring->ring_size; i++) { - if (tx_ring->tx_buffer_info[i].head_mapped == true) { - bus_dmamap_sync(adapter->tx_buf_tag, - tx_ring->tx_buffer_info[i].map_head, - BUS_DMASYNC_POSTWRITE); - bus_dmamap_unload(adapter->tx_buf_tag, - tx_ring->tx_buffer_info[i].map_head); - tx_ring->tx_buffer_info[i].head_mapped = false; - } + bus_dmamap_sync(adapter->tx_buf_tag, + tx_ring->tx_buffer_info[i].dmamap, BUS_DMASYNC_POSTWRITE); + bus_dmamap_unload(adapter->tx_buf_tag, + tx_ring->tx_buffer_info[i].dmamap); bus_dmamap_destroy(adapter->tx_buf_tag, - tx_ring->tx_buffer_info[i].map_head); + tx_ring->tx_buffer_info[i].dmamap); - if (tx_ring->tx_buffer_info[i].seg_mapped == true) { - bus_dmamap_sync(adapter->tx_buf_tag, - tx_ring->tx_buffer_info[i].map_seg, - BUS_DMASYNC_POSTWRITE); - bus_dmamap_unload(adapter->tx_buf_tag, - tx_ring->tx_buffer_info[i].map_seg); - tx_ring->tx_buffer_info[i].seg_mapped = false; +#ifdef DEV_NETMAP + if (adapter->ifp->if_capenable & IFCAP_NETMAP) { + nm_info = &tx_ring->tx_buffer_info[i].nm_info; + for (j = 0; j < ENA_PKT_MAX_BUFS; j++) { + if (nm_info->socket_buf_idx[j] != 0) { + bus_dmamap_sync(adapter->tx_buf_tag, + nm_info->map_seg[j], + BUS_DMASYNC_POSTWRITE); + ena_netmap_unload(adapter, + nm_info->map_seg[j]); + } + bus_dmamap_destroy(adapter->tx_buf_tag, + nm_info->map_seg[j]); + nm_info->socket_buf_idx[j] = 0; + } } - bus_dmamap_destroy(adapter->tx_buf_tag, - tx_ring->tx_buffer_info[i].map_seg); +#endif /* DEV_NETMAP */ m_freem(tx_ring->tx_buffer_info[i].mbuf); tx_ring->tx_buffer_info[i].mbuf = NULL; @@ -766,25 +791,6 @@ ena_free_all_tx_resources(struct ena_adapter *adapter) ena_free_tx_resources(adapter, i); } -static inline int -validate_rx_req_id(struct ena_ring *rx_ring, uint16_t req_id) -{ - if (likely(req_id < rx_ring->ring_size)) - return (0); - - device_printf(rx_ring->adapter->pdev, "Invalid rx req_id: %hu\n", - req_id); - counter_u64_add(rx_ring->rx_stats.bad_req_id, 1); - - /* Trigger device reset */ - if (likely(!ENA_FLAG_ISSET(ENA_FLAG_TRIGGER_RESET, rx_ring->adapter))) { - rx_ring->adapter->reset_reason = ENA_REGS_RESET_INV_RX_REQ_ID; - ENA_FLAG_SET_ATOMIC(ENA_FLAG_TRIGGER_RESET, rx_ring->adapter); - } - - return (EFAULT); -} - /** * ena_setup_rx_resources - allocate Rx resources (Descriptors) * @adapter: network interface device structure @@ -801,6 +807,11 @@ ena_setup_rx_resources(struct ena_adapter *adapter, un size = sizeof(struct ena_rx_buffer) * rx_ring->ring_size; +#ifdef DEV_NETMAP + ena_netmap_reset_rx_ring(adapter, qid); + rx_ring->initialized = false; +#endif /* DEV_NETMAP */ + /* * Alloc extra element so in rx path * we can always prefetch rx_info + 1 @@ -953,7 +964,8 @@ ena_alloc_rx_mbuf(struct ena_adapter *adapter, return (0); /* Get mbuf using UMA allocator */ - rx_info->mbuf = m_getjcl(M_NOWAIT, MT_DATA, M_PKTHDR, MJUM16BYTES); + rx_info->mbuf = m_getjcl(M_NOWAIT, MT_DATA, M_PKTHDR, + rx_ring->rx_mbuf_sz); if (unlikely(rx_info->mbuf == NULL)) { counter_u64_add(rx_ring->rx_stats.mjum_alloc_fail, 1); @@ -964,7 +976,7 @@ ena_alloc_rx_mbuf(struct ena_adapter *adapter, } mlen = MCLBYTES; } else { - mlen = MJUM16BYTES; + mlen = rx_ring->rx_mbuf_sz; } /* Set mbuf length*/ rx_info->mbuf->m_pkthdr.len = rx_info->mbuf->m_len = mlen; @@ -1024,7 +1036,7 @@ ena_free_rx_mbuf(struct ena_adapter *adapter, struct e * @num: number of descriptors to refill * Refills the ring with newly allocated DMA-mapped mbufs for receiving **/ -static int +int ena_refill_rx_bufs(struct ena_ring *rx_ring, uint32_t num) { struct ena_adapter *adapter = rx_ring->adapter; @@ -1045,8 +1057,12 @@ ena_refill_rx_bufs(struct ena_ring *rx_ring, uint32_t req_id = rx_ring->free_rx_ids[next_to_use]; rx_info = &rx_ring->rx_buffer_info[req_id]; - - rc = ena_alloc_rx_mbuf(adapter, rx_ring, rx_info); +#ifdef DEV_NETMAP + if (ena_rx_ring_in_netmap(adapter, rx_ring->qid)) + rc = ena_netmap_alloc_rx_slot(adapter, rx_ring, rx_info); + else +#endif /* DEV_NETMAP */ + rc = ena_alloc_rx_mbuf(adapter, rx_ring, rx_info); if (unlikely(rc != 0)) { ena_trace(ENA_WARNING, "failed to alloc buffer for rx queue %d\n", @@ -1091,6 +1107,14 @@ ena_free_rx_bufs(struct ena_adapter *adapter, unsigned if (rx_info->mbuf != NULL) ena_free_rx_mbuf(adapter, rx_ring, rx_info); +#ifdef DEV_NETMAP + if (((if_getflags(adapter->ifp) & IFF_DYING) == 0) && + (adapter->ifp->if_capenable & IFCAP_NETMAP)) { + if (rx_info->netmap_buf_idx != 0) + ena_netmap_free_rx_slot(adapter, rx_ring, + rx_info); + } +#endif /* DEV_NETMAP */ } } @@ -1109,10 +1133,12 @@ ena_refill_all_rx_bufs(struct ena_adapter *adapter) rx_ring = &adapter->rx_ring[i]; bufs_num = rx_ring->ring_size - 1; rc = ena_refill_rx_bufs(rx_ring, bufs_num); - if (unlikely(rc != bufs_num)) ena_trace(ENA_WARNING, "refilling Queue %d failed. " "Allocated %d buffers from: %d\n", i, rc, bufs_num); +#ifdef DEV_NETMAP + rx_ring->initialized = true; +#endif /* DEV_NETMAP */ } } @@ -1154,22 +1180,10 @@ ena_free_tx_bufs(struct ena_adapter *adapter, unsigned qid, i); } - if (tx_info->head_mapped == true) { - bus_dmamap_sync(adapter->tx_buf_tag, tx_info->map_head, - BUS_DMASYNC_POSTWRITE); - bus_dmamap_unload(adapter->tx_buf_tag, - tx_info->map_head); - tx_info->head_mapped = false; - } + bus_dmamap_sync(adapter->tx_buf_tag, tx_info->dmamap, + BUS_DMASYNC_POSTWRITE); + bus_dmamap_unload(adapter->tx_buf_tag, tx_info->dmamap); - if (tx_info->seg_mapped == true) { - bus_dmamap_sync(adapter->tx_buf_tag, tx_info->map_seg, - BUS_DMASYNC_POSTWRITE); - bus_dmamap_unload(adapter->tx_buf_tag, - tx_info->map_seg); - tx_info->seg_mapped = false; - } - m_free(tx_info->mbuf); tx_info->mbuf = NULL; } @@ -1227,30 +1241,6 @@ ena_destroy_all_io_queues(struct ena_adapter *adapter) ena_destroy_all_rx_queues(adapter); } -static inline int -validate_tx_req_id(struct ena_ring *tx_ring, uint16_t req_id) -{ - struct ena_adapter *adapter = tx_ring->adapter; - struct ena_tx_buffer *tx_info = NULL; - - if (likely(req_id < tx_ring->ring_size)) { - tx_info = &tx_ring->tx_buffer_info[req_id]; - if (tx_info->mbuf != NULL) - return (0); - device_printf(adapter->pdev, - "tx_info doesn't have valid mbuf\n"); - } - - device_printf(adapter->pdev, "Invalid req_id: %hu\n", req_id); - counter_u64_add(tx_ring->tx_stats.bad_req_id, 1); - - /* Trigger device reset */ - adapter->reset_reason = ENA_REGS_RESET_INV_TX_REQ_ID; - ENA_FLAG_SET_ATOMIC(ENA_FLAG_TRIGGER_RESET, adapter); - - return (EFAULT); -} - static int ena_create_io_queues(struct ena_adapter *adapter) { @@ -1344,475 +1334,6 @@ err_tx: return (ENXIO); } -/** - * ena_tx_cleanup - clear sent packets and corresponding descriptors - * @tx_ring: ring for which we want to clean packets - * - * Once packets are sent, we ask the device in a loop for no longer used - * descriptors. We find the related mbuf chain in a map (index in an array) - * and free it, then update ring state. - * This is performed in "endless" loop, updating ring pointers every - * TX_COMMIT. The first check of free descriptor is performed before the actual - * loop, then repeated at the loop end. - **/ -static int -ena_tx_cleanup(struct ena_ring *tx_ring) -{ - struct ena_adapter *adapter; - struct ena_com_io_cq* io_cq; - uint16_t next_to_clean; - uint16_t req_id; - uint16_t ena_qid; - unsigned int total_done = 0; - int rc; - int commit = TX_COMMIT; - int budget = TX_BUDGET; - int work_done; - bool above_thresh; - - adapter = tx_ring->que->adapter; - ena_qid = ENA_IO_TXQ_IDX(tx_ring->que->id); - io_cq = &adapter->ena_dev->io_cq_queues[ena_qid]; - next_to_clean = tx_ring->next_to_clean; - - do { - struct ena_tx_buffer *tx_info; - struct mbuf *mbuf; - - rc = ena_com_tx_comp_req_id_get(io_cq, &req_id); - if (unlikely(rc != 0)) - break; - - rc = validate_tx_req_id(tx_ring, req_id); - if (unlikely(rc != 0)) - break; - - tx_info = &tx_ring->tx_buffer_info[req_id]; - - mbuf = tx_info->mbuf; - - tx_info->mbuf = NULL; - bintime_clear(&tx_info->timestamp); - - /* Map is no longer required */ - if (tx_info->head_mapped == true) { - bus_dmamap_sync(adapter->tx_buf_tag, tx_info->map_head, - BUS_DMASYNC_POSTWRITE); - bus_dmamap_unload(adapter->tx_buf_tag, - tx_info->map_head); - tx_info->head_mapped = false; - } - if (tx_info->seg_mapped == true) { - bus_dmamap_sync(adapter->tx_buf_tag, tx_info->map_seg, - BUS_DMASYNC_POSTWRITE); - bus_dmamap_unload(adapter->tx_buf_tag, - tx_info->map_seg); - tx_info->seg_mapped = false; - } - - ena_trace(ENA_DBG | ENA_TXPTH, "tx: q %d mbuf %p completed\n", - tx_ring->qid, mbuf); - - m_freem(mbuf); - - total_done += tx_info->tx_descs; - - tx_ring->free_tx_ids[next_to_clean] = req_id; - next_to_clean = ENA_TX_RING_IDX_NEXT(next_to_clean, - tx_ring->ring_size); - - if (unlikely(--commit == 0)) { - commit = TX_COMMIT; - /* update ring state every TX_COMMIT descriptor */ - tx_ring->next_to_clean = next_to_clean; - ena_com_comp_ack( - &adapter->ena_dev->io_sq_queues[ena_qid], - total_done); - ena_com_update_dev_comp_head(io_cq); - total_done = 0; - } - } while (likely(--budget)); - - work_done = TX_BUDGET - budget; - - ena_trace(ENA_DBG | ENA_TXPTH, "tx: q %d done. total pkts: %d\n", - tx_ring->qid, work_done); - - /* If there is still something to commit update ring state */ - if (likely(commit != TX_COMMIT)) { - tx_ring->next_to_clean = next_to_clean; - ena_com_comp_ack(&adapter->ena_dev->io_sq_queues[ena_qid], - total_done); - ena_com_update_dev_comp_head(io_cq); - } - - /* - * Need to make the rings circular update visible to - * ena_xmit_mbuf() before checking for tx_ring->running. - */ - mb(); - - above_thresh = ena_com_sq_have_enough_space(tx_ring->ena_com_io_sq, - ENA_TX_RESUME_THRESH); - if (unlikely(!tx_ring->running && above_thresh)) { - ENA_RING_MTX_LOCK(tx_ring); - above_thresh = - ena_com_sq_have_enough_space(tx_ring->ena_com_io_sq, - ENA_TX_RESUME_THRESH); - if (!tx_ring->running && above_thresh) { - tx_ring->running = true; - counter_u64_add(tx_ring->tx_stats.queue_wakeup, 1); - taskqueue_enqueue(tx_ring->enqueue_tq, - &tx_ring->enqueue_task); - } - ENA_RING_MTX_UNLOCK(tx_ring); - } - - return (work_done); -} - -static void -ena_rx_hash_mbuf(struct ena_ring *rx_ring, struct ena_com_rx_ctx *ena_rx_ctx, - struct mbuf *mbuf) -{ - struct ena_adapter *adapter = rx_ring->adapter; - - if (likely(ENA_FLAG_ISSET(ENA_FLAG_RSS_ACTIVE, adapter))) { - mbuf->m_pkthdr.flowid = ena_rx_ctx->hash; - - if (ena_rx_ctx->frag && - (ena_rx_ctx->l3_proto != ENA_ETH_IO_L3_PROTO_UNKNOWN)) { - M_HASHTYPE_SET(mbuf, M_HASHTYPE_OPAQUE_HASH); - return; - } - - switch (ena_rx_ctx->l3_proto) { - case ENA_ETH_IO_L3_PROTO_IPV4: - switch (ena_rx_ctx->l4_proto) { - case ENA_ETH_IO_L4_PROTO_TCP: - M_HASHTYPE_SET(mbuf, M_HASHTYPE_RSS_TCP_IPV4); - break; - case ENA_ETH_IO_L4_PROTO_UDP: - M_HASHTYPE_SET(mbuf, M_HASHTYPE_RSS_UDP_IPV4); - break; - default: - M_HASHTYPE_SET(mbuf, M_HASHTYPE_RSS_IPV4); - } - break; - case ENA_ETH_IO_L3_PROTO_IPV6: - switch (ena_rx_ctx->l4_proto) { - case ENA_ETH_IO_L4_PROTO_TCP: - M_HASHTYPE_SET(mbuf, M_HASHTYPE_RSS_TCP_IPV6); - break; - case ENA_ETH_IO_L4_PROTO_UDP: - M_HASHTYPE_SET(mbuf, M_HASHTYPE_RSS_UDP_IPV6); - break; - default: - M_HASHTYPE_SET(mbuf, M_HASHTYPE_RSS_IPV6); - } - break; - case ENA_ETH_IO_L3_PROTO_UNKNOWN: - M_HASHTYPE_SET(mbuf, M_HASHTYPE_NONE); - break; - default: - M_HASHTYPE_SET(mbuf, M_HASHTYPE_OPAQUE_HASH); - } - } else { - mbuf->m_pkthdr.flowid = rx_ring->qid; - M_HASHTYPE_SET(mbuf, M_HASHTYPE_NONE); - } -} - -/** - * ena_rx_mbuf - assemble mbuf from descriptors - * @rx_ring: ring for which we want to clean packets - * @ena_bufs: buffer info - * @ena_rx_ctx: metadata for this packet(s) - * @next_to_clean: ring pointer, will be updated only upon success - * - **/ -static struct mbuf* -ena_rx_mbuf(struct ena_ring *rx_ring, struct ena_com_rx_buf_info *ena_bufs, - struct ena_com_rx_ctx *ena_rx_ctx, uint16_t *next_to_clean) -{ - struct mbuf *mbuf; - struct ena_rx_buffer *rx_info; - struct ena_adapter *adapter; - unsigned int descs = ena_rx_ctx->descs; - int rc; - uint16_t ntc, len, req_id, buf = 0; - - ntc = *next_to_clean; - adapter = rx_ring->adapter; - - len = ena_bufs[buf].len; - req_id = ena_bufs[buf].req_id; - rc = validate_rx_req_id(rx_ring, req_id); - if (unlikely(rc != 0)) - return (NULL); - - rx_info = &rx_ring->rx_buffer_info[req_id]; - if (unlikely(rx_info->mbuf == NULL)) { - device_printf(adapter->pdev, "NULL mbuf in rx_info"); - return (NULL); - } - - ena_trace(ENA_DBG | ENA_RXPTH, "rx_info %p, mbuf %p, paddr %jx\n", - rx_info, rx_info->mbuf, (uintmax_t)rx_info->ena_buf.paddr); - - bus_dmamap_sync(adapter->rx_buf_tag, rx_info->map, - BUS_DMASYNC_POSTREAD); - mbuf = rx_info->mbuf; - mbuf->m_flags |= M_PKTHDR; - mbuf->m_pkthdr.len = len; - mbuf->m_len = len; - mbuf->m_pkthdr.rcvif = rx_ring->que->adapter->ifp; - - /* Fill mbuf with hash key and it's interpretation for optimization */ - ena_rx_hash_mbuf(rx_ring, ena_rx_ctx, mbuf); - - ena_trace(ENA_DBG | ENA_RXPTH, "rx mbuf 0x%p, flags=0x%x, len: %d\n", - mbuf, mbuf->m_flags, mbuf->m_pkthdr.len); - - /* DMA address is not needed anymore, unmap it */ - bus_dmamap_unload(rx_ring->adapter->rx_buf_tag, rx_info->map); - - rx_info->mbuf = NULL; - rx_ring->free_rx_ids[ntc] = req_id; - ntc = ENA_RX_RING_IDX_NEXT(ntc, rx_ring->ring_size); - - /* - * While we have more than 1 descriptors for one rcvd packet, append - * other mbufs to the main one - */ - while (--descs) { - ++buf; - len = ena_bufs[buf].len; - req_id = ena_bufs[buf].req_id; - rc = validate_rx_req_id(rx_ring, req_id); - if (unlikely(rc != 0)) { - /* - * If the req_id is invalid, then the device will be - * reset. In that case we must free all mbufs that - * were already gathered. - */ - m_freem(mbuf); - return (NULL); - } - rx_info = &rx_ring->rx_buffer_info[req_id]; - - if (unlikely(rx_info->mbuf == NULL)) { - device_printf(adapter->pdev, "NULL mbuf in rx_info"); - /* - * If one of the required mbufs was not allocated yet, - * we can break there. - * All earlier used descriptors will be reallocated - * later and not used mbufs can be reused. - * The next_to_clean pointer will not be updated in case - * of an error, so caller should advance it manually - * in error handling routine to keep it up to date - * with hw ring. - */ - m_freem(mbuf); - return (NULL); - } - - bus_dmamap_sync(adapter->rx_buf_tag, rx_info->map, - BUS_DMASYNC_POSTREAD); - if (unlikely(m_append(mbuf, len, rx_info->mbuf->m_data) == 0)) { - counter_u64_add(rx_ring->rx_stats.mbuf_alloc_fail, 1); - ena_trace(ENA_WARNING, "Failed to append Rx mbuf %p\n", - mbuf); - } - - ena_trace(ENA_DBG | ENA_RXPTH, - "rx mbuf updated. len %d\n", mbuf->m_pkthdr.len); - - /* Free already appended mbuf, it won't be useful anymore */ - bus_dmamap_unload(rx_ring->adapter->rx_buf_tag, rx_info->map); - m_freem(rx_info->mbuf); - rx_info->mbuf = NULL; - - rx_ring->free_rx_ids[ntc] = req_id; - ntc = ENA_RX_RING_IDX_NEXT(ntc, rx_ring->ring_size); - } - - *next_to_clean = ntc; - - return (mbuf); -} - -/** - * ena_rx_checksum - indicate in mbuf if hw indicated a good cksum - **/ -static inline void -ena_rx_checksum(struct ena_ring *rx_ring, struct ena_com_rx_ctx *ena_rx_ctx, - struct mbuf *mbuf) -{ - - /* if IP and error */ - if (unlikely((ena_rx_ctx->l3_proto == ENA_ETH_IO_L3_PROTO_IPV4) && - ena_rx_ctx->l3_csum_err)) { - /* ipv4 checksum error */ - mbuf->m_pkthdr.csum_flags = 0; - counter_u64_add(rx_ring->rx_stats.bad_csum, 1); - ena_trace(ENA_DBG, "RX IPv4 header checksum error\n"); - return; - } - - /* if TCP/UDP */ - if ((ena_rx_ctx->l4_proto == ENA_ETH_IO_L4_PROTO_TCP) || - (ena_rx_ctx->l4_proto == ENA_ETH_IO_L4_PROTO_UDP)) { - if (ena_rx_ctx->l4_csum_err) { - /* TCP/UDP checksum error */ - mbuf->m_pkthdr.csum_flags = 0; - counter_u64_add(rx_ring->rx_stats.bad_csum, 1); - ena_trace(ENA_DBG, "RX L4 checksum error\n"); - } else { - mbuf->m_pkthdr.csum_flags = CSUM_IP_CHECKED; - mbuf->m_pkthdr.csum_flags |= CSUM_IP_VALID; - } - } -} - -/** - * ena_rx_cleanup - handle rx irq - * @arg: ring for which irq is being handled - **/ -static int -ena_rx_cleanup(struct ena_ring *rx_ring) -{ - struct ena_adapter *adapter; - struct mbuf *mbuf; - struct ena_com_rx_ctx ena_rx_ctx; - struct ena_com_io_cq* io_cq; - struct ena_com_io_sq* io_sq; - if_t ifp; - uint16_t ena_qid; - uint16_t next_to_clean; - uint32_t refill_required; - uint32_t refill_threshold; - uint32_t do_if_input = 0; - unsigned int qid; - int rc, i; - int budget = RX_BUDGET; - - adapter = rx_ring->que->adapter; - ifp = adapter->ifp; - qid = rx_ring->que->id; - ena_qid = ENA_IO_RXQ_IDX(qid); - io_cq = &adapter->ena_dev->io_cq_queues[ena_qid]; - io_sq = &adapter->ena_dev->io_sq_queues[ena_qid]; - next_to_clean = rx_ring->next_to_clean; - - ena_trace(ENA_DBG, "rx: qid %d\n", qid); - - do { - ena_rx_ctx.ena_bufs = rx_ring->ena_bufs; - ena_rx_ctx.max_bufs = adapter->max_rx_sgl_size; - ena_rx_ctx.descs = 0; - bus_dmamap_sync(io_cq->cdesc_addr.mem_handle.tag, - io_cq->cdesc_addr.mem_handle.map, BUS_DMASYNC_POSTREAD); - rc = ena_com_rx_pkt(io_cq, io_sq, &ena_rx_ctx); - - if (unlikely(rc != 0)) - goto error; - - if (unlikely(ena_rx_ctx.descs == 0)) - break; - - ena_trace(ENA_DBG | ENA_RXPTH, "rx: q %d got packet from ena. " - "descs #: %d l3 proto %d l4 proto %d hash: %x\n", - rx_ring->qid, ena_rx_ctx.descs, ena_rx_ctx.l3_proto, - ena_rx_ctx.l4_proto, ena_rx_ctx.hash); - - /* Receive mbuf from the ring */ - mbuf = ena_rx_mbuf(rx_ring, rx_ring->ena_bufs, - &ena_rx_ctx, &next_to_clean); - bus_dmamap_sync(io_cq->cdesc_addr.mem_handle.tag, - io_cq->cdesc_addr.mem_handle.map, BUS_DMASYNC_PREREAD); - /* Exit if we failed to retrieve a buffer */ - if (unlikely(mbuf == NULL)) { - for (i = 0; i < ena_rx_ctx.descs; ++i) { - rx_ring->free_rx_ids[next_to_clean] = - rx_ring->ena_bufs[i].req_id; - next_to_clean = - ENA_RX_RING_IDX_NEXT(next_to_clean, - rx_ring->ring_size); - - } - break; - } - - if (((ifp->if_capenable & IFCAP_RXCSUM) != 0) || - ((ifp->if_capenable & IFCAP_RXCSUM_IPV6) != 0)) { - ena_rx_checksum(rx_ring, &ena_rx_ctx, mbuf); - } - - counter_enter(); - counter_u64_add_protected(rx_ring->rx_stats.bytes, - mbuf->m_pkthdr.len); - counter_u64_add_protected(adapter->hw_stats.rx_bytes, - mbuf->m_pkthdr.len); - counter_exit(); - /* - * LRO is only for IP/TCP packets and TCP checksum of the packet - * should be computed by hardware. - */ - do_if_input = 1; - if (((ifp->if_capenable & IFCAP_LRO) != 0) && - ((mbuf->m_pkthdr.csum_flags & CSUM_IP_VALID) != 0) && - (ena_rx_ctx.l4_proto == ENA_ETH_IO_L4_PROTO_TCP)) { - /* - * Send to the stack if: - * - LRO not enabled, or - * - no LRO resources, or - * - lro enqueue fails - */ - if ((rx_ring->lro.lro_cnt != 0) && - (tcp_lro_rx(&rx_ring->lro, mbuf, 0) == 0)) - do_if_input = 0; - } - if (do_if_input != 0) { - ena_trace(ENA_DBG | ENA_RXPTH, - "calling if_input() with mbuf %p\n", mbuf); - (*ifp->if_input)(ifp, mbuf); - } - - counter_enter(); - counter_u64_add_protected(rx_ring->rx_stats.cnt, 1); - counter_u64_add_protected(adapter->hw_stats.rx_packets, 1); - counter_exit(); - } while (--budget); - - rx_ring->next_to_clean = next_to_clean; - - refill_required = ena_com_free_desc(io_sq); - refill_threshold = min_t(int, - rx_ring->ring_size / ENA_RX_REFILL_THRESH_DIVIDER, - ENA_RX_REFILL_THRESH_PACKET); - - if (refill_required > refill_threshold) { - ena_com_update_dev_comp_head(rx_ring->ena_com_io_cq); - ena_refill_rx_bufs(rx_ring, refill_required); - } - - tcp_lro_flush_all(&rx_ring->lro); - - return (RX_BUDGET - budget); - -error: - counter_u64_add(rx_ring->rx_stats.bad_desc_num, 1); - - /* Too many desc from the device. Trigger reset */ - if (likely(!ENA_FLAG_ISSET(ENA_FLAG_TRIGGER_RESET, adapter))) { - adapter->reset_reason = ENA_REGS_RESET_TOO_MANY_RX_DESCS; - ENA_FLAG_SET_ATOMIC(ENA_FLAG_TRIGGER_RESET, adapter); - } - - return (0); -} - /********************************************************************* * * MSIX & Interrupt Service routine @@ -1833,52 +1354,6 @@ ena_intr_msix_mgmnt(void *arg) ena_com_aenq_intr_handler(adapter->ena_dev, arg); } -static void -ena_cleanup(void *arg, int pending) -{ - struct ena_que *que = arg; - struct ena_adapter *adapter = que->adapter; - if_t ifp = adapter->ifp; - struct ena_ring *tx_ring; - struct ena_ring *rx_ring; - struct ena_com_io_cq* io_cq; - struct ena_eth_io_intr_reg intr_reg; - int qid, ena_qid; - int txc, rxc, i; - - if (unlikely((if_getdrvflags(ifp) & IFF_DRV_RUNNING) == 0)) - return; - - ena_trace(ENA_DBG, "MSI-X TX/RX routine\n"); - - tx_ring = que->tx_ring; - rx_ring = que->rx_ring; - qid = que->id; - ena_qid = ENA_IO_TXQ_IDX(qid); - io_cq = &adapter->ena_dev->io_cq_queues[ena_qid]; - - tx_ring->first_interrupt = true; - rx_ring->first_interrupt = true; - - for (i = 0; i < CLEAN_BUDGET; ++i) { - rxc = ena_rx_cleanup(rx_ring); - txc = ena_tx_cleanup(tx_ring); - - if (unlikely((if_getdrvflags(ifp) & IFF_DRV_RUNNING) == 0)) - return; - - if ((txc != TX_BUDGET) && (rxc != RX_BUDGET)) - break; - } - - /* Signal that work is done and unmask interrupt */ - ena_com_update_intr_reg(&intr_reg, - RX_IRQ_INTERVAL, - TX_IRQ_INTERVAL, - true); - ena_com_unmask_intr(io_cq, &intr_reg); -} - /** * ena_handle_msix - MSIX Interrupt Handler for Tx/Rx * @arg: queue @@ -2289,7 +1764,7 @@ ena_up_complete(struct ena_adapter *adapter) return (0); } -static int +int ena_up(struct ena_adapter *adapter) { int rc = 0; @@ -2350,8 +1825,14 @@ ena_up(struct ena_adapter *adapter) *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@freebsd.org Mon May 25 19:36:37 2020 Return-Path: Delivered-To: svn-src-all@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 001142C8B98 for ; Mon, 25 May 2020 19:36:36 +0000 (UTC) (envelope-from mw@semihalf.com) Received: from mail-qk1-x72d.google.com (mail-qk1-x72d.google.com [IPv6:2607:f8b0:4864:20::72d]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "GTS CA 1O1" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 49W6m36gFFz4Rqg for ; Mon, 25 May 2020 19:36:35 +0000 (UTC) (envelope-from mw@semihalf.com) Received: by mail-qk1-x72d.google.com with SMTP id w3so12867458qkb.6 for ; Mon, 25 May 2020 12:36:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=semihalf-com.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=+TnBh131y/ljWTEQCvgj/aKaIhDAiuD5NJjXsNJNUPw=; b=jMc7yi7KFax+CmVNJ97+pebxd+JK8LIcBDlS9LYrRdis1cPVne0uTWIoB3YOfP7EO4 V1D7N0Rq7iZMtDf00cpXIfW9QoPcHUIPIXfkifoE91qbmSQGP3jZd2XHB3ZU5zcHtBxM XZ4DTWWV5RK4HaK53bTR0302gtx5EWTOYt+rwWcMyJjlio5LJklNO98ymzM9o14Wpts1 461V4dfpunZcL40Lgzx2YmT4m/VYmX4PrWf1jML9deP+qVzuO4nmuM9VbGyGD28sl/Nt II5WPnUAxr90PObn6MRkwx55OTAxLcZ5GSP/f9r2gCnC1H+5tpSWH7KmdEEeSFrg0unB 44Fg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=+TnBh131y/ljWTEQCvgj/aKaIhDAiuD5NJjXsNJNUPw=; b=BaQCTiOjEk+WzyKbXycldgb5xeYsAhaU0peBdNhANcSqpP80omYVFqV5XMbDXIxvNe bpSXM5w/mc3w1cETj6+SWfTdmzPGNRmHo7noh7T/DEIOvk0MaJRr6rcCRmcG+u4KYjfH GAo81taS0IY2Am8iqi/EmJAmyKljeDLNC/0yZmHHoQgr7YGeyMDmm1Gdv+Xe+r/AELW8 OZny2IBIfJfQt6AlqMujHlMQQpbJNB1s+4PnyAdtgPDm5PojnLPC7h1Y7b0Yr4p5Vp1K 5+JfRnLSg+LujTOpg/qxa4o9tdJTcu9Gh/9nogGSUdHTM+Ta2VAfj6JKrlspMsw9toFS uOdA== X-Gm-Message-State: AOAM531KRdeh3DNIKYbiCeVHMOM1h6Ee+O9FUULIGEZo5Cdo3yV6/9u1 MkvTREPw+MWlsNCROFxrWCr+XcUVCqNjkwAXLHaLzg== X-Google-Smtp-Source: ABdhPJwumxGYsKSrTtHIj9PLLM4h9GtJtlGqjQUUzXOsnUU6fznwgQaGBf/kPKh9hV+qKoFrZmORYoTd64Whlypl/Js= X-Received: by 2002:a05:620a:4e2:: with SMTP id b2mr14986863qkh.16.1590435394574; Mon, 25 May 2020 12:36:34 -0700 (PDT) MIME-Version: 1.0 References: <202005251455.04PEtbSp021864@repo.freebsd.org> <20200525111843.0f858315@titan.knownspace> In-Reply-To: <20200525111843.0f858315@titan.knownspace> From: Marcin Wojtas Date: Mon, 25 May 2020 21:36:23 +0200 Message-ID: Subject: Re: svn commit: r361460 - in head/sys: arm64/conf arm64/qoriq conf To: Justin Hibbits Cc: Marcin Wojtas , src-committers , svn-src-all@freebsd.org, svn-src-head@freebsd.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: 49W6m36gFFz4Rqg X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org; dkim=pass header.d=semihalf-com.20150623.gappssmtp.com header.s=20150623 header.b=jMc7yi7K; dmarc=none; spf=none (mx1.freebsd.org: domain of mw@semihalf.com has no SPF policy when checking 2607:f8b0:4864:20::72d) smtp.mailfrom=mw@semihalf.com X-Spamd-Result: default: False [-2.20 / 15.00]; ARC_NA(0.00)[]; NEURAL_HAM_MEDIUM(-0.94)[-0.941]; R_DKIM_ALLOW(-0.20)[semihalf-com.20150623.gappssmtp.com:s=20150623]; FROM_HAS_DN(0.00)[]; TO_DN_SOME(0.00)[]; NEURAL_SPAM_SHORT(0.00)[0.004]; NEURAL_HAM_LONG(-0.96)[-0.960]; MIME_GOOD(-0.10)[text/plain]; PREVIOUSLY_DELIVERED(0.00)[svn-src-all@freebsd.org]; DMARC_NA(0.00)[semihalf.com]; RCPT_COUNT_FIVE(0.00)[5]; TO_MATCH_ENVRCPT_SOME(0.00)[]; DKIM_TRACE(0.00)[semihalf-com.20150623.gappssmtp.com:+]; RCVD_IN_DNSWL_NONE(0.00)[2607:f8b0:4864:20::72d:from]; R_SPF_NA(0.00)[no SPF record]; FREEMAIL_TO(0.00)[gmail.com]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; ASN(0.00)[asn:15169, ipnet:2607:f8b0::/32, country:US]; RCVD_COUNT_TWO(0.00)[2]; RCVD_TLS_ALL(0.00)[] X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2020 19:36:37 -0000 Hi Justin, pon., 25 maj 2020 o 18:18 Justin Hibbits napisa=C5= =82(a): > > Hi Marcin, > > On Mon, 25 May 2020 14:55:37 +0000 (UTC) > Marcin Wojtas wrote: > > > Author: mw > > Date: Mon May 25 14:55:37 2020 > > New Revision: 361460 > > URL: https://svnweb.freebsd.org/changeset/base/361460 > > > > Log: > > Add GPIO support for QorIQ boards. > > > > This patch adds a GPIO controller support targeted for NXP LS1046A > > SoC. The driver implements the following features: > > * setting direction of each pin (IN or OUT) > > * setting the mode of output pins (PUSHPULL or OPENDRAIN) > > * setting the state of each output pin (1 or 0) > > * reading the state of each input pin (1 or 0) > > > > Submitted by: Kamil Koczurek > > Dawid Gorecki > > Reviewed by: manu > > Obtained from: Semihalf > > Sponsored by: Alstom Group > > Differential Revision: https://reviews.freebsd.org/D24353 > > > > Added: > > head/sys/arm64/qoriq/ls1046_gpio.c (contents, props changed) > > Modified: > > head/sys/arm64/conf/GENERIC > > head/sys/conf/files.arm64 > > > > Modified: head/sys/arm64/conf/GENERIC > > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D > > --- head/sys/arm64/conf/GENERIC Mon May 25 14:45:18 > > 2020 (r361459) +++ head/sys/arm64/conf/GENERIC Mon May > > 25 14:55:37 2020 (r361460) @@ -248,6 +248,7 @@ device > > gpio device gpioled > > device fdt_pinctrl > > device gpioregulator > > +device ls1046_gpio # LS1046A GPIO controller > > device mv_gpio # Marvell GPIO > > controller device mvebu_pinctrl # Marvell > > Pinmux Controller device rk_gpio # > > RockChip GPIO Controller > > > > Added: head/sys/arm64/qoriq/ls1046_gpio.c > > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D > > --- /dev/null 00:00:00 1970 (empty, because file is > > newly added) +++ head/sys/arm64/qoriq/ls1046_gpio.c Mon May 25 > > 14:55:37 2020 (r361460) @@ -0,0 +1,586 @@ > > +/*- > > + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD > > + * > > + * Copyright (c) 2020 Alstom Group. > > + * Copyright (c) 2020 Semihalf. > > + * > > + * Redistribution and use in source and binary forms, with or without > > + * modification, are permitted provided that the following conditions > > + * are met: > > + * 1. Redistributions of source code must retain the above copyright > > + * notice, this list of conditions and the following disclaimer. > > + * 2. Redistributions in binary form must reproduce the above > > copyright > > + * notice, this list of conditions and the following disclaimer > > in the > > + * documentation and/or other materials provided with the > > distribution. > > + * > > + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS > > IS'' AND > > + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, > > THE > > + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A > > PARTICULAR PURPOSE > > + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE > > LIABLE > > + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR > > CONSEQUENTIAL > > + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE > > GOODS > > + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS > > INTERRUPTION) > > + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN > > CONTRACT, STRICT > > + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN > > ANY WAY > > + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE > > POSSIBILITY OF > > + * SUCH DAMAGE. > > + */ > > + > > +#include > > +__FBSDID("$FreeBSD$"); > > + > > +#include > > + > > +#include > > +#include > > +#include > > +#include > > +#include > > +#include > > + > > +#include > > +#include > > +#include > > + > > +#include "gpio_if.h" > > + > > +/* constants */ > > +enum { > > + DIRECTION =3D 0x0, > > + OPEN_DRAIN =3D 0x4, > > + DATA =3D 0x8, > > + INT_EV =3D 0xC, > > + INT_MASK =3D 0x10, > > + INT_CTRL =3D 0x14 > > +}; > > This looks a lot like the GPIO module whose driver is in > sys/powerpc/mpc85xx/qoriq_gpio.c. Is there any difference in hardware? > If not, can you merge this driver with that, if there's anything to > merge, to reduce duplication? > Thanks, will check. Best regards, Marcin From owner-svn-src-all@freebsd.org Mon May 25 20:04:10 2020 Return-Path: Delivered-To: svn-src-all@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 73FEB2C9694; Mon, 25 May 2020 20:04:10 +0000 (UTC) (envelope-from tuexen@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49W7Mt2Xlhz4TjX; Mon, 25 May 2020 20:04:10 +0000 (UTC) (envelope-from tuexen@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 527881763F; Mon, 25 May 2020 20:04:10 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04PK4Aq1018383; Mon, 25 May 2020 20:04:10 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04PK4ALr018382; Mon, 25 May 2020 20:04:10 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <202005252004.04PK4ALr018382@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Mon, 25 May 2020 20:04:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org Subject: svn commit: r361469 - stable/11/sys/netinet X-SVN-Group: stable-11 X-SVN-Commit-Author: tuexen X-SVN-Commit-Paths: stable/11/sys/netinet X-SVN-Commit-Revision: 361469 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2020 20:04:10 -0000 Author: tuexen Date: Mon May 25 20:04:09 2020 New Revision: 361469 URL: https://svnweb.freebsd.org/changeset/base/361469 Log: MFC r360869: Fix bug in PR-SCTP Only drop DATA chunk with lower priorities as specified in RFC 7496. This issue was found by looking at a reproducer generated by syzkaller. Modified: stable/11/sys/netinet/sctp_output.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/netinet/sctp_output.c ============================================================================== --- stable/11/sys/netinet/sctp_output.c Mon May 25 17:47:31 2020 (r361468) +++ stable/11/sys/netinet/sctp_output.c Mon May 25 20:04:09 2020 (r361469) @@ -6198,11 +6198,11 @@ sctp_prune_prsctp(struct sctp_tcb *stcb, * This one is PR-SCTP AND buffer space * limited type */ - if (chk->rec.data.timetodrop.tv_sec >= (long)srcv->sinfo_timetolive) { + if (chk->rec.data.timetodrop.tv_sec > (long)srcv->sinfo_timetolive) { /* * Lower numbers equates to higher * priority so if the one we are - * looking at has a larger or equal + * looking at has a larger * priority we want to drop the data * and NOT retransmit it. */ @@ -6233,7 +6233,7 @@ sctp_prune_prsctp(struct sctp_tcb *stcb, TAILQ_FOREACH_SAFE(chk, &asoc->send_queue, sctp_next, nchk) { /* Here we must move to the sent queue and mark */ if (PR_SCTP_BUF_ENABLED(chk->flags)) { - if (chk->rec.data.timetodrop.tv_sec >= (long)srcv->sinfo_timetolive) { + if (chk->rec.data.timetodrop.tv_sec > (long)srcv->sinfo_timetolive) { if (chk->data) { /* * We release the book_size @@ -12614,7 +12614,7 @@ sctp_lower_sosend(struct socket *so, top = SCTP_HEADER_TO_CHAIN(i_pak); sndlen = SCTP_HEADER_LEN(i_pak); } - SCTPDBG(SCTP_DEBUG_OUTPUT1, "Send called addr:%p send length %zu\n", + SCTPDBG(SCTP_DEBUG_OUTPUT1, "Send called addr:%p send length %zd\n", (void *)addr, sndlen); if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) && From owner-svn-src-all@freebsd.org Mon May 25 20:07:25 2020 Return-Path: Delivered-To: svn-src-all@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 24EA12C935D; Mon, 25 May 2020 20:07:25 +0000 (UTC) (envelope-from tuexen@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49W7Rd0C5Yz4V5y; Mon, 25 May 2020 20:07:25 +0000 (UTC) (envelope-from tuexen@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 0201D179B8; Mon, 25 May 2020 20:07:25 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04PK7OgT018719; Mon, 25 May 2020 20:07:24 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04PK7NTl018712; Mon, 25 May 2020 20:07:23 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <202005252007.04PK7NTl018712@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Mon, 25 May 2020 20:07:23 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org Subject: svn commit: r361471 - stable/11/sys/netinet X-SVN-Group: stable-11 X-SVN-Commit-Author: tuexen X-SVN-Commit-Paths: stable/11/sys/netinet X-SVN-Commit-Revision: 361471 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2020 20:07:25 -0000 Author: tuexen Date: Mon May 25 20:07:23 2020 New Revision: 361471 URL: https://svnweb.freebsd.org/changeset/base/361471 Log: MFC r360878, r360942: Improve SCTP timer handling Ensure that we have a path when starting the T3 RXT timer. Modified: stable/11/sys/netinet/sctp_asconf.c stable/11/sys/netinet/sctp_indata.c stable/11/sys/netinet/sctp_input.c stable/11/sys/netinet/sctp_timer.c stable/11/sys/netinet/sctputil.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/netinet/sctp_asconf.c ============================================================================== --- stable/11/sys/netinet/sctp_asconf.c Mon May 25 20:07:13 2020 (r361470) +++ stable/11/sys/netinet/sctp_asconf.c Mon May 25 20:07:23 2020 (r361471) @@ -1032,9 +1032,14 @@ sctp_assoc_immediate_retrans(struct sctp_tcb *stcb, st (stcb->asoc.sent_queue_cnt > 0)) { struct sctp_tmit_chunk *chk; - chk = TAILQ_FIRST(&stcb->asoc.sent_queue); - sctp_timer_start(SCTP_TIMER_TYPE_SEND, stcb->sctp_ep, - stcb, chk->whoTo); + TAILQ_FOREACH(chk, &stcb->asoc.sent_queue, sctp_next) { + if (chk->whoTo != NULL) { + break; + } + } + if (chk != NULL) { + sctp_timer_start(SCTP_TIMER_TYPE_SEND, stcb->sctp_ep, stcb, chk->whoTo); + } } } return; Modified: stable/11/sys/netinet/sctp_indata.c ============================================================================== --- stable/11/sys/netinet/sctp_indata.c Mon May 25 20:07:13 2020 (r361470) +++ stable/11/sys/netinet/sctp_indata.c Mon May 25 20:07:23 2020 (r361471) @@ -4439,7 +4439,12 @@ again: } } } - if (lchk) { + for (; lchk != NULL; lchk = TAILQ_NEXT(lchk, sctp_next)) { + if (lchk->whoTo != NULL) { + break; + } + } + if (lchk != NULL) { /* Assure a timer is up */ sctp_timer_start(SCTP_TIMER_TYPE_SEND, stcb->sctp_ep, stcb, lchk->whoTo); @@ -5281,7 +5286,12 @@ again: } } } - if (lchk) { + for (; lchk != NULL; lchk = TAILQ_NEXT(lchk, sctp_next)) { + if (lchk->whoTo != NULL) { + break; + } + } + if (lchk != NULL) { /* Assure a timer is up */ sctp_timer_start(SCTP_TIMER_TYPE_SEND, stcb->sctp_ep, stcb, lchk->whoTo); Modified: stable/11/sys/netinet/sctp_input.c ============================================================================== --- stable/11/sys/netinet/sctp_input.c Mon May 25 20:07:13 2020 (r361470) +++ stable/11/sys/netinet/sctp_input.c Mon May 25 20:07:23 2020 (r361471) @@ -2960,6 +2960,7 @@ sctp_handle_cookie_ack(struct sctp_cookie_ack_chunk *c { /* cp must not be used, others call this without a c-ack :-) */ struct sctp_association *asoc; + struct sctp_tmit_chunk *chk; SCTPDBG(SCTP_DEBUG_INPUT2, "sctp_handle_cookie_ack: handling COOKIE-ACK\n"); @@ -3063,11 +3064,13 @@ sctp_handle_cookie_ack(struct sctp_cookie_ack_chunk *c closed_socket: /* Toss the cookie if I can */ sctp_toss_old_cookies(stcb, asoc); - if (!TAILQ_EMPTY(&asoc->sent_queue)) { - /* Restart the timer if we have pending data */ - struct sctp_tmit_chunk *chk; - - chk = TAILQ_FIRST(&asoc->sent_queue); + /* Restart the timer if we have pending data */ + TAILQ_FOREACH(chk, &asoc->sent_queue, sctp_next) { + if (chk->whoTo != NULL) { + break; + } + } + if (chk != NULL) { sctp_timer_start(SCTP_TIMER_TYPE_SEND, stcb->sctp_ep, stcb, chk->whoTo); } } @@ -5151,6 +5154,7 @@ process_control_chunks: } else { struct mbuf *ret_buf; struct sctp_inpcb *linp; + struct sctp_tmit_chunk *chk; if (stcb) { linp = NULL; @@ -5212,14 +5216,13 @@ process_control_chunks: got_auth = 1; auth_skipped = 0; } - if (!TAILQ_EMPTY(&stcb->asoc.sent_queue)) { - /* - * Restart the timer if we have - * pending data - */ - struct sctp_tmit_chunk *chk; - - chk = TAILQ_FIRST(&stcb->asoc.sent_queue); + /* Restart the timer if we have pending data */ + TAILQ_FOREACH(chk, &stcb->asoc.sent_queue, sctp_next) { + if (chk->whoTo != NULL) { + break; + } + } + if (chk != NULL) { sctp_timer_start(SCTP_TIMER_TYPE_SEND, stcb->sctp_ep, stcb, chk->whoTo); } } Modified: stable/11/sys/netinet/sctp_timer.c ============================================================================== --- stable/11/sys/netinet/sctp_timer.c Mon May 25 20:07:13 2020 (r361470) +++ stable/11/sys/netinet/sctp_timer.c Mon May 25 20:07:23 2020 (r361471) @@ -975,7 +975,12 @@ sctp_t3rxt_timer(struct sctp_inpcb *inp, /* C3. See if we need to send a Fwd-TSN */ if (SCTP_TSN_GT(stcb->asoc.advanced_peer_ack_point, stcb->asoc.last_acked_seq)) { send_forward_tsn(stcb, &stcb->asoc); - if (lchk) { + for (; lchk != NULL; lchk = TAILQ_NEXT(lchk, sctp_next)) { + if (lchk->whoTo != NULL) { + break; + } + } + if (lchk != NULL) { /* Assure a timer is up */ sctp_timer_start(SCTP_TIMER_TYPE_SEND, stcb->sctp_ep, stcb, lchk->whoTo); } Modified: stable/11/sys/netinet/sctputil.c ============================================================================== --- stable/11/sys/netinet/sctputil.c Mon May 25 20:07:13 2020 (r361470) +++ stable/11/sys/netinet/sctputil.c Mon May 25 20:07:23 2020 (r361471) @@ -1759,14 +1759,19 @@ sctp_timeout_handler(void *t) struct sctp_tmit_chunk *chk; /* - * safeguard. If there on some on the sent queue + * Safeguard. If there on some on the sent queue * somewhere but no timers running something is * wrong... so we start a timer on the first chunk * on the send queue on whatever net it is sent to. */ - chk = TAILQ_FIRST(&stcb->asoc.sent_queue); - sctp_timer_start(SCTP_TIMER_TYPE_SEND, inp, stcb, - chk->whoTo); + TAILQ_FOREACH(chk, &stcb->asoc.sent_queue, sctp_next) { + if (chk->whoTo != NULL) { + break; + } + } + if (chk != NULL) { + sctp_timer_start(SCTP_TIMER_TYPE_SEND, stcb->sctp_ep, stcb, chk->whoTo); + } } break; case SCTP_TIMER_TYPE_INIT: From owner-svn-src-all@freebsd.org Mon May 25 20:09:18 2020 Return-Path: Delivered-To: svn-src-all@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 AF3EB2C97A3; Mon, 25 May 2020 20:09:18 +0000 (UTC) (envelope-from tuexen@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49W7Tp4872z4VJJ; Mon, 25 May 2020 20:09:18 +0000 (UTC) (envelope-from tuexen@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 8569D17641; Mon, 25 May 2020 20:09:18 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04PK9I0W018960; Mon, 25 May 2020 20:09:18 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04PK9I03018959; Mon, 25 May 2020 20:09:18 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <202005252009.04PK9I03018959@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Mon, 25 May 2020 20:09:18 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org Subject: svn commit: r361472 - stable/11/sys/netinet X-SVN-Group: stable-11 X-SVN-Commit-Author: tuexen X-SVN-Commit-Paths: stable/11/sys/netinet X-SVN-Commit-Revision: 361472 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2020 20:09:18 -0000 Author: tuexen Date: Mon May 25 20:09:18 2020 New Revision: 361472 URL: https://svnweb.freebsd.org/changeset/base/361472 Log: MFC 360885: Improve SCTP iterator Ensure that the SCTP iterator runs with an stcb and inp, which belong to each other. Modified: stable/11/sys/netinet/sctputil.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/netinet/sctputil.c ============================================================================== --- stable/11/sys/netinet/sctputil.c Mon May 25 20:07:23 2020 (r361471) +++ stable/11/sys/netinet/sctputil.c Mon May 25 20:09:18 2020 (r361472) @@ -1409,6 +1409,7 @@ select_a_new_ep: } tinp = it->inp; it->inp = LIST_NEXT(it->inp, sctp_list); + it->stcb = NULL; SCTP_INP_RUNLOCK(tinp); if (it->inp == NULL) { goto done_with_iterator; @@ -1478,6 +1479,9 @@ select_a_new_ep: atomic_add_int(&it->stcb->asoc.refcnt, -1); iteration_count = 0; } + KASSERT(it->inp == it->stcb->sctp_ep, + ("%s: stcb %p does not belong to inp %p, but inp %p", + __func__, it->stcb, it->inp, it->stcb->sctp_ep)); /* run function on this one */ (*it->function_assoc) (it->inp, it->stcb, it->pointer, it->val); @@ -1510,6 +1514,7 @@ no_stcb: } else { it->inp = LIST_NEXT(it->inp, sctp_list); } + it->stcb = NULL; if (it->inp == NULL) { goto done_with_iterator; } From owner-svn-src-all@freebsd.org Mon May 25 20:11:27 2020 Return-Path: Delivered-To: svn-src-all@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 36B5F2C93D1; Mon, 25 May 2020 20:11:27 +0000 (UTC) (envelope-from tuexen@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49W7XH0lMGz4VRc; Mon, 25 May 2020 20:11:27 +0000 (UTC) (envelope-from tuexen@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 14DC217E0C; Mon, 25 May 2020 20:11:27 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04PKBQam020265; Mon, 25 May 2020 20:11:26 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04PKBQTW020264; Mon, 25 May 2020 20:11:26 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <202005252011.04PKBQTW020264@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Mon, 25 May 2020 20:11:26 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org Subject: svn commit: r361473 - stable/11/sys/netinet X-SVN-Group: stable-11 X-SVN-Commit-Author: tuexen X-SVN-Commit-Paths: stable/11/sys/netinet X-SVN-Commit-Revision: 361473 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2020 20:11:27 -0000 Author: tuexen Date: Mon May 25 20:11:26 2020 New Revision: 361473 URL: https://svnweb.freebsd.org/changeset/base/361473 Log: MFC r361116: Improve stcb handling during teardown Ensure that an stcb is not dereferenced when it is about to be freed. This issue was found by SYZKALLER. Modified: stable/11/sys/netinet/sctp_indata.c stable/11/sys/netinet/sctp_indata.h Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/netinet/sctp_indata.c ============================================================================== --- stable/11/sys/netinet/sctp_indata.c Mon May 25 20:09:18 2020 (r361472) +++ stable/11/sys/netinet/sctp_indata.c Mon May 25 20:11:26 2020 (r361473) @@ -162,6 +162,9 @@ sctp_build_readq_entry(struct sctp_tcb *stcb, read_queue_e->data = dm; read_queue_e->stcb = stcb; read_queue_e->port_from = stcb->rport; + if (stcb->asoc.state & SCTP_STATE_ABOUT_TO_BE_FREED) { + read_queue_e->do_not_ref_stcb = 1; + } failed_build: return (read_queue_e); } @@ -773,6 +776,7 @@ sctp_build_readq_entry_from_ctl(struct sctp_queued_to_ atomic_add_int(&nc->whoFrom->ref_count, 1); nc->stcb = control->stcb; nc->port_from = control->port_from; + nc->do_not_ref_stcb = control->do_not_ref_stcb; } static void Modified: stable/11/sys/netinet/sctp_indata.h ============================================================================== --- stable/11/sys/netinet/sctp_indata.h Mon May 25 20:09:18 2020 (r361472) +++ stable/11/sys/netinet/sctp_indata.h Mon May 25 20:11:26 2020 (r361473) @@ -66,6 +66,9 @@ sctp_build_readq_entry(struct sctp_tcb *stcb, (_ctl)->data = dm; \ (_ctl)->stcb = (in_it); \ (_ctl)->port_from = (in_it)->rport; \ + if ((in_it)->asoc.state & SCTP_STATE_ABOUT_TO_BE_FREED) { \ + (_ctl)->do_not_ref_stcb = 1; \ + }\ } \ } while (0) From owner-svn-src-all@freebsd.org Mon May 25 20:14:35 2020 Return-Path: Delivered-To: svn-src-all@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 694E32C9876; Mon, 25 May 2020 20:14:35 +0000 (UTC) (envelope-from tuexen@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49W7bv1z4sz4W5Y; Mon, 25 May 2020 20:14:35 +0000 (UTC) (envelope-from tuexen@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 3F00317F00; Mon, 25 May 2020 20:14:35 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04PKEZbh025613; Mon, 25 May 2020 20:14:35 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04PKEZ86025612; Mon, 25 May 2020 20:14:35 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <202005252014.04PKEZ86025612@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Mon, 25 May 2020 20:14:35 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org Subject: svn commit: r361474 - stable/11/sys/netinet X-SVN-Group: stable-11 X-SVN-Commit-Author: tuexen X-SVN-Commit-Paths: stable/11/sys/netinet X-SVN-Commit-Revision: 361474 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2020 20:14:35 -0000 Author: tuexen Date: Mon May 25 20:14:34 2020 New Revision: 361474 URL: https://svnweb.freebsd.org/changeset/base/361474 Log: MFC r361214: Correctly ignore impossible RTT measurements Fix logical condition by looking at usecs. This issue was found by cpp-check running on the userland stack. Modified: stable/11/sys/netinet/sctputil.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/netinet/sctputil.c ============================================================================== --- stable/11/sys/netinet/sctputil.c Mon May 25 20:11:26 2020 (r361473) +++ stable/11/sys/netinet/sctputil.c Mon May 25 20:14:34 2020 (r361474) @@ -2555,7 +2555,7 @@ sctp_calculate_rto(struct sctp_tcb *stcb, (void)SCTP_GETTIME_TIMEVAL(&now); } if ((old->tv_sec > now.tv_sec) || - ((old->tv_sec == now.tv_sec) && (old->tv_sec > now.tv_sec))) { + ((old->tv_sec == now.tv_sec) && (old->tv_usec > now.tv_usec))) { /* The starting point is in the future. */ return (0); } From owner-svn-src-all@freebsd.org Mon May 25 20:16:07 2020 Return-Path: Delivered-To: svn-src-all@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 53F232C9D8E; Mon, 25 May 2020 20:16:07 +0000 (UTC) (envelope-from tuexen@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49W7dg1X8Tz4W4S; Mon, 25 May 2020 20:16:07 +0000 (UTC) (envelope-from tuexen@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 2F580179CB; Mon, 25 May 2020 20:16:07 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04PKG6H3025880; Mon, 25 May 2020 20:16:06 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04PKG6fe025879; Mon, 25 May 2020 20:16:06 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <202005252016.04PKG6fe025879@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Mon, 25 May 2020 20:16:06 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org Subject: svn commit: r361475 - stable/11/sys/netinet X-SVN-Group: stable-11 X-SVN-Commit-Author: tuexen X-SVN-Commit-Paths: stable/11/sys/netinet X-SVN-Commit-Revision: 361475 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2020 20:16:07 -0000 Author: tuexen Date: Mon May 25 20:16:06 2020 New Revision: 361475 URL: https://svnweb.freebsd.org/changeset/base/361475 Log: MFC r361221: Remove redundant check. Modified: stable/11/sys/netinet/sctp_asconf.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/netinet/sctp_asconf.c ============================================================================== --- stable/11/sys/netinet/sctp_asconf.c Mon May 25 20:14:34 2020 (r361474) +++ stable/11/sys/netinet/sctp_asconf.c Mon May 25 20:16:06 2020 (r361475) @@ -3044,10 +3044,6 @@ sctp_check_address_list_ep(struct sctp_tcb *stcb, stru "check_addr_list_ep: laddr->ifa is NULL"); continue; } - if (laddr->ifa == NULL) { - SCTPDBG(SCTP_DEBUG_ASCONF1, "check_addr_list_ep: laddr->ifa->ifa_addr is NULL"); - continue; - } /* do i have it implicitly? */ if (sctp_cmpaddr(&laddr->ifa->address.sa, init_addr)) { continue; From owner-svn-src-all@freebsd.org Mon May 25 20:17:35 2020 Return-Path: Delivered-To: svn-src-all@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 2CA722C9D21; Mon, 25 May 2020 20:17:35 +0000 (UTC) (envelope-from tuexen@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49W7gM0T4Mz4W7N; Mon, 25 May 2020 20:17:35 +0000 (UTC) (envelope-from tuexen@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 0B23B17E86; Mon, 25 May 2020 20:17:35 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04PKHYKT026136; Mon, 25 May 2020 20:17:34 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04PKHYln026135; Mon, 25 May 2020 20:17:34 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <202005252017.04PKHYln026135@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Mon, 25 May 2020 20:17:34 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org Subject: svn commit: r361476 - stable/11/sys/netinet X-SVN-Group: stable-11 X-SVN-Commit-Author: tuexen X-SVN-Commit-Paths: stable/11/sys/netinet X-SVN-Commit-Revision: 361476 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2020 20:17:35 -0000 Author: tuexen Date: Mon May 25 20:17:34 2020 New Revision: 361476 URL: https://svnweb.freebsd.org/changeset/base/361476 Log: MFC r361222: Improve ASCONF handling Avoid an integer underflow. Modified: stable/11/sys/netinet/sctp_asconf.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/netinet/sctp_asconf.c ============================================================================== --- stable/11/sys/netinet/sctp_asconf.c Mon May 25 20:16:06 2020 (r361475) +++ stable/11/sys/netinet/sctp_asconf.c Mon May 25 20:17:34 2020 (r361476) @@ -1802,9 +1802,9 @@ sctp_handle_asconf_ack(struct mbuf *m, int offset, } /* switch */ /* update remaining ASCONF-ACK message length to process */ - ack_length -= SCTP_SIZE32(param_length); - if (ack_length <= 0) { - /* no more data in the mbuf chain */ + if (ack_length > SCTP_SIZE32(param_length)) { + ack_length -= SCTP_SIZE32(param_length); + } else { break; } offset += SCTP_SIZE32(param_length); From owner-svn-src-all@freebsd.org Mon May 25 20:19:09 2020 Return-Path: Delivered-To: svn-src-all@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 CB3B72C9F8D; Mon, 25 May 2020 20:19:09 +0000 (UTC) (envelope-from tuexen@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49W7j9552Rz4WVg; Mon, 25 May 2020 20:19:09 +0000 (UTC) (envelope-from tuexen@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 A9B4317F04; Mon, 25 May 2020 20:19:09 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04PKJ9pj026518; Mon, 25 May 2020 20:19:09 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04PKJ9nV026517; Mon, 25 May 2020 20:19:09 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <202005252019.04PKJ9nV026517@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Mon, 25 May 2020 20:19:09 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org Subject: svn commit: r361477 - stable/11/sys/netinet X-SVN-Group: stable-11 X-SVN-Commit-Author: tuexen X-SVN-Commit-Paths: stable/11/sys/netinet X-SVN-Commit-Revision: 361477 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2020 20:19:09 -0000 Author: tuexen Date: Mon May 25 20:19:09 2020 New Revision: 361477 URL: https://svnweb.freebsd.org/changeset/base/361477 Log: MFC r361224: Cleanup. No functional change Modified: stable/11/sys/netinet/sctp_pcb.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/netinet/sctp_pcb.c ============================================================================== --- stable/11/sys/netinet/sctp_pcb.c Mon May 25 20:17:34 2020 (r361476) +++ stable/11/sys/netinet/sctp_pcb.c Mon May 25 20:19:09 2020 (r361477) @@ -5212,16 +5212,12 @@ sctp_free_assoc(struct sctp_inpcb *inp, struct sctp_tc SCTP_FREE_SHOULD_USE_GRACEFUL_CLOSE, SCTP_CALLED_DIRECTLY_NOCMPSET); SCTP_INP_DECR_REF(inp); - goto out_of; } else { /* The socket is still open. */ SCTP_INP_DECR_REF(inp); + SCTP_INP_RUNLOCK(inp); } } - if (from_inpcbfree == SCTP_NORMAL_PROC) { - SCTP_INP_RUNLOCK(inp); - } -out_of: /* destroyed the asoc */ #ifdef SCTP_LOG_CLOSING sctp_log_closing(inp, NULL, 11); From owner-svn-src-all@freebsd.org Mon May 25 20:21:39 2020 Return-Path: Delivered-To: svn-src-all@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 B42A52C9ED5; Mon, 25 May 2020 20:21:39 +0000 (UTC) (envelope-from tuexen@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49W7m34Lcsz4Wyc; Mon, 25 May 2020 20:21:39 +0000 (UTC) (envelope-from tuexen@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 904E017F14; Mon, 25 May 2020 20:21:39 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04PKLdT7028524; Mon, 25 May 2020 20:21:39 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04PKLdAu028523; Mon, 25 May 2020 20:21:39 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <202005252021.04PKLdAu028523@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Mon, 25 May 2020 20:21:39 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org Subject: svn commit: r361478 - stable/11/sys/netinet X-SVN-Group: stable-11 X-SVN-Commit-Author: tuexen X-SVN-Commit-Paths: stable/11/sys/netinet X-SVN-Commit-Revision: 361478 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2020 20:21:39 -0000 Author: tuexen Date: Mon May 25 20:21:39 2020 New Revision: 361478 URL: https://svnweb.freebsd.org/changeset/base/361478 Log: MFC r361225: Remove redundant assignment Modified: stable/11/sys/netinet/sctputil.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/netinet/sctputil.c ============================================================================== --- stable/11/sys/netinet/sctputil.c Mon May 25 20:19:09 2020 (r361477) +++ stable/11/sys/netinet/sctputil.c Mon May 25 20:21:39 2020 (r361478) @@ -1067,7 +1067,6 @@ sctp_init_asoc(struct sctp_inpcb *inp, struct sctp_tcb asoc->sctp_cmt_on_off = inp->sctp_cmt_on_off; asoc->ecn_supported = inp->ecn_supported; asoc->prsctp_supported = inp->prsctp_supported; - asoc->idata_supported = inp->idata_supported; asoc->auth_supported = inp->auth_supported; asoc->asconf_supported = inp->asconf_supported; asoc->reconfig_supported = inp->reconfig_supported; From owner-svn-src-all@freebsd.org Mon May 25 20:23:39 2020 Return-Path: Delivered-To: svn-src-all@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 08A972C9FB1; Mon, 25 May 2020 20:23:39 +0000 (UTC) (envelope-from tuexen@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49W7pL6V3Cz4X9G; Mon, 25 May 2020 20:23:38 +0000 (UTC) (envelope-from tuexen@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 DA00717F2A; Mon, 25 May 2020 20:23:38 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04PKNcf6032699; Mon, 25 May 2020 20:23:38 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04PKNcRj032698; Mon, 25 May 2020 20:23:38 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <202005252023.04PKNcRj032698@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Mon, 25 May 2020 20:23:38 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org Subject: svn commit: r361479 - stable/11/sys/netinet X-SVN-Group: stable-11 X-SVN-Commit-Author: tuexen X-SVN-Commit-Paths: stable/11/sys/netinet X-SVN-Commit-Revision: 361479 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2020 20:23:39 -0000 Author: tuexen Date: Mon May 25 20:23:38 2020 New Revision: 361479 URL: https://svnweb.freebsd.org/changeset/base/361479 Log: MFC r361226: Cleanup Don't check an unsigned variable for being negative. Modified: stable/11/sys/netinet/sctp_usrreq.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/netinet/sctp_usrreq.c ============================================================================== --- stable/11/sys/netinet/sctp_usrreq.c Mon May 25 20:21:39 2020 (r361478) +++ stable/11/sys/netinet/sctp_usrreq.c Mon May 25 20:23:38 2020 (r361479) @@ -1028,7 +1028,7 @@ sctp_fill_up_addresses_vrf(struct sctp_inpcb *inp, struct sctp_vrf *vrf; actual = 0; - if (limit <= 0) + if (limit == 0) return (actual); if (stcb) { From owner-svn-src-all@freebsd.org Mon May 25 21:14:24 2020 Return-Path: Delivered-To: svn-src-all@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 6A8D62CBB0A; Mon, 25 May 2020 21:14:24 +0000 (UTC) (envelope-from tuexen@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49W8ww2FSZz4bqk; Mon, 25 May 2020 21:14:24 +0000 (UTC) (envelope-from tuexen@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 4811318670; Mon, 25 May 2020 21:14:24 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04PLEOZ1065109; Mon, 25 May 2020 21:14:24 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04PLEOht065108; Mon, 25 May 2020 21:14:24 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <202005252114.04PLEOht065108@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Mon, 25 May 2020 21:14:24 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org Subject: svn commit: r361480 - stable/11/sys/netinet X-SVN-Group: stable-11 X-SVN-Commit-Author: tuexen X-SVN-Commit-Paths: stable/11/sys/netinet X-SVN-Commit-Revision: 361480 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2020 21:14:24 -0000 Author: tuexen Date: Mon May 25 21:14:23 2020 New Revision: 361480 URL: https://svnweb.freebsd.org/changeset/base/361480 Log: MFC r361227: remove assignment without effect. Modified: stable/11/sys/netinet/sctp_auth.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/netinet/sctp_auth.c ============================================================================== --- stable/11/sys/netinet/sctp_auth.c Mon May 25 20:23:38 2020 (r361479) +++ stable/11/sys/netinet/sctp_auth.c Mon May 25 21:14:23 2020 (r361480) @@ -656,7 +656,6 @@ sctp_free_hmaclist(sctp_hmaclist_t *list) { if (list != NULL) { SCTP_FREE(list, SCTP_M_AUTH_HL); - list = NULL; } } From owner-svn-src-all@freebsd.org Mon May 25 22:12:06 2020 Return-Path: Delivered-To: svn-src-all@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 4BDB62CCAC4; Mon, 25 May 2020 22:12:06 +0000 (UTC) (envelope-from jhb@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49WBCV1cygz3TLK; Mon, 25 May 2020 22:12:06 +0000 (UTC) (envelope-from jhb@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 32D2D18CF8; Mon, 25 May 2020 22:12:06 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04PMC6Rw002309; Mon, 25 May 2020 22:12:06 GMT (envelope-from jhb@FreeBSD.org) Received: (from jhb@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04PMC4qo002298; Mon, 25 May 2020 22:12:04 GMT (envelope-from jhb@FreeBSD.org) Message-Id: <202005252212.04PMC4qo002298@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: jhb set sender to jhb@FreeBSD.org using -f From: John Baldwin Date: Mon, 25 May 2020 22:12:04 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361481 - in head: share/man/man9 sys/crypto/ccp sys/dev/cxgbe/crypto sys/dev/hifn sys/dev/safe sys/geom/eli sys/kern sys/kgssapi/krb5 sys/netipsec sys/opencrypto sys/sys X-SVN-Group: head X-SVN-Commit-Author: jhb X-SVN-Commit-Paths: in head: share/man/man9 sys/crypto/ccp sys/dev/cxgbe/crypto sys/dev/hifn sys/dev/safe sys/geom/eli sys/kern sys/kgssapi/krb5 sys/netipsec sys/opencrypto sys/sys X-SVN-Commit-Revision: 361481 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2020 22:12:06 -0000 Author: jhb Date: Mon May 25 22:12:04 2020 New Revision: 361481 URL: https://svnweb.freebsd.org/changeset/base/361481 Log: Add support for optional separate output buffers to in-kernel crypto. Some crypto consumers such as GELI and KTLS for file-backed sendfile need to store their output in a separate buffer from the input. Currently these consumers copy the contents of the input buffer into the output buffer and queue an in-place crypto operation on the output buffer. Using a separate output buffer avoids this copy. - Create a new 'struct crypto_buffer' describing a crypto buffer containing a type and type-specific fields. crp_ilen is gone, instead buffers that use a flat kernel buffer have a cb_buf_len field for their length. The length of other buffer types is inferred from the backing store (e.g. uio_resid for a uio). Requests now have two such structures: crp_buf for the input buffer, and crp_obuf for the output buffer. - Consumers now use helper functions (crypto_use_*, e.g. crypto_use_mbuf()) to configure the input buffer. If an output buffer is not configured, the request still modifies the input buffer in-place. A consumer uses a second set of helper functions (crypto_use_output_*) to configure an output buffer. - Consumers must request support for separate output buffers when creating a crypto session via the CSP_F_SEPARATE_OUTPUT flag and are only permitted to queue a request with a separate output buffer on sessions with this flag set. Existing drivers already reject sessions with unknown flags, so this permits drivers to be modified to support this extension without requiring all drivers to change. - Several data-related functions now have matching versions that operate on an explicit buffer (e.g. crypto_apply_buf, crypto_contiguous_subsegment_buf, bus_dma_load_crp_buf). - Most of the existing data-related functions operate on the input buffer. However crypto_copyback always writes to the output buffer if a request uses a separate output buffer. - For the regions in input/output buffers, the following conventions are followed: - AAD and IV are always present in input only and their fields are offsets into the input buffer. - payload is always present in both buffers. If a request uses a separate output buffer, it must set a new crp_payload_start_output field to the offset of the payload in the output buffer. - digest is in the input buffer for verify operations, and in the output buffer for compute operations. crp_digest_start is relative to the appropriate buffer. - Add a crypto buffer cursor abstraction. This is a more general form of some bits in the cryptosoft driver that tried to always use uio's. However, compared to the original code, this avoids rewalking the uio iovec array for requests with multiple vectors. It also avoids allocate an iovec array for mbufs and populating it by instead walking the mbuf chain directly. - Update the cryptosoft(4) driver to support separate output buffers making use of the cursor abstraction. Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D24545 Added: head/share/man/man9/crypto_buffer.9 (contents, props changed) Modified: head/share/man/man9/Makefile head/share/man/man9/bus_dma.9 head/share/man/man9/crypto_driver.9 head/share/man/man9/crypto_request.9 head/share/man/man9/crypto_session.9 head/sys/crypto/ccp/ccp.c head/sys/dev/cxgbe/crypto/t4_crypto.c head/sys/dev/hifn/hifn7751.c head/sys/dev/safe/safe.c head/sys/geom/eli/g_eli_crypto.c head/sys/geom/eli/g_eli_integrity.c head/sys/geom/eli/g_eli_privacy.c head/sys/kern/subr_bus_dma.c head/sys/kgssapi/krb5/kcrypto_aes.c head/sys/netipsec/xform_ah.c head/sys/netipsec/xform_esp.c head/sys/netipsec/xform_ipcomp.c head/sys/opencrypto/criov.c head/sys/opencrypto/crypto.c head/sys/opencrypto/cryptodev.c head/sys/opencrypto/cryptodev.h head/sys/opencrypto/cryptosoft.c head/sys/opencrypto/ktls_ocf.c head/sys/sys/bus_dma.h Modified: head/share/man/man9/Makefile ============================================================================== --- head/share/man/man9/Makefile Mon May 25 21:14:23 2020 (r361480) +++ head/share/man/man9/Makefile Mon May 25 22:12:04 2020 (r361481) @@ -72,6 +72,7 @@ MAN= accept_filter.9 \ cr_seeotheruids.9 \ crypto.9 \ crypto_asym.9 \ + crypto_buffer.9 \ crypto_driver.9 \ crypto_request.9 \ crypto_session.9 \ @@ -648,6 +649,8 @@ MLINKS+=bus_dma.9 busdma.9 \ bus_dma.9 bus_dmamap_load.9 \ bus_dma.9 bus_dmamap_load_bio.9 \ bus_dma.9 bus_dmamap_load_ccb.9 \ + bus_dma.9 bus_dmamap_load_crp.9 \ + bus_dma.9 bus_dmamap_load_crp_buffer.9 \ bus_dma.9 bus_dmamap_load_mbuf.9 \ bus_dma.9 bus_dmamap_load_mbuf_sg.9 \ bus_dma.9 bus_dmamap_load_uio.9 \ @@ -897,9 +900,20 @@ MLINKS+=crypto_asym.9 crypto_kdispatch.9 \ crypto_asym.9 crypto_kdone.9 \ crypto_asym.9 crypto_kregister.9 \ crypto_asym.9 CRYPTODEV_KPROCESS.9 -MLINKS+=crypto_driver.9 crypto_apply.9 \ - crypto_driver.9 crypto_contiguous_segment.9 \ - crypto_driver.9 crypto_copyback.9 \ +MLINKS+=crypto_buffer.9 crypto_apply.9 \ + crypto_buffer.9 crypto_apply_buf.9 \ + crypto_buffer.9 crypto_buffer_contiguous_segment.9 \ + crypto_buffer.9 crypto_buffer_len.9 \ + crypto_buffer.9 crypto_contiguous_segment.9 \ + crypto_buffer.9 crypto_cursor_init.9 \ + crypto_buffer.9 crypto_cursor_advance.9 \ + crypto_buffer.9 crypto_cursor_copyback.9 \ + crypto_buffer.9 crypto_cursor_copydata.9 \ + crypto_buffer.9 crypto_cursor_copydata_noadv.9 \ + crypto_buffer.9 crypto_cursor_segbase.9 \ + crypto_buffer.9 crypto_cursor_seglen.9 \ + crypto_buffer.9 CRYPTO_HAS_OUTPUT_BUFFER.9 +MLINKS+=crypto_driver.9 crypto_copyback.9 \ crypto_driver.9 crypto_copydata.9 \ crypto_driver.9 crypto_done.9 \ crypto_driver.9 crypto_get_driverid.9 \ @@ -915,7 +929,13 @@ MLINKS+=crypto_driver.9 crypto_apply.9 \ crypto_driver.9 hmac_init_opad.9 MLINKS+=crypto_request.9 crypto_dispatch.9 \ crypto_request.9 crypto_freereq.9 \ - crypto_request.9 crypto_getreq.9 + crypto_request.9 crypto_getreq.9 \ + crypto_request.9 crypto_use_buf.9 \ + crypto_request.9 crypto_use_mbuf.9 \ + crypto_request.9 crypto_use_output_buf.9 \ + crypto_request.9 crypto_use_output_mbuf.9 \ + crypto_request.9 crypto_use_output_uio.9 \ + crypto_request.9 crypto_use_uio.9 \ MLINKS+=crypto_session.9 crypto_auth_hash.9 \ crypto_session.9 crypto_cipher.9 \ crypto_session.9 crypto_get_params.9 \ Modified: head/share/man/man9/bus_dma.9 ============================================================================== --- head/share/man/man9/bus_dma.9 Mon May 25 21:14:23 2020 (r361480) +++ head/share/man/man9/bus_dma.9 Mon May 25 22:12:04 2020 (r361481) @@ -53,7 +53,7 @@ .\" $FreeBSD$ .\" $NetBSD: bus_dma.9,v 1.25 2002/10/14 13:43:16 wiz Exp $ .\" -.Dd April 14, 2020 +.Dd May 25, 2020 .Dt BUS_DMA 9 .Os .Sh NAME @@ -69,6 +69,7 @@ .Nm bus_dmamap_load_bio , .Nm bus_dmamap_load_ccb , .Nm bus_dmamap_load_crp , +.Nm bus_dmamap_load_crp_buffer , .Nm bus_dmamap_load_mbuf , .Nm bus_dmamap_load_mbuf_sg , .Nm bus_dmamap_load_uio , @@ -123,6 +124,10 @@ "struct crypto *crp" "bus_dmamap_callback_t *callback" "void *callback_arg" \ "int flags" .Ft int +.Fn bus_dmamap_load_crp_buffer "bus_dma_tag_t dmat" "bus_dmamap_t map" \ +"struct crypto_buffer *cb" "bus_dmamap_callback_t *callback" \ +"void *callback_arg" "int flags" +.Ft int .Fn bus_dmamap_load_mbuf "bus_dma_tag_t dmat" "bus_dmamap_t map" \ "struct mbuf *mbuf" "bus_dmamap_callback2_t *callback" "void *callback_arg" \ "int flags" @@ -394,8 +399,9 @@ via .Fn bus_dmamap_load , .Fn bus_dmamap_load_bio , .Fn bus_dmamap_load_ccb , +.Fn bus_dmamap_load_crp , or -.Fn bus_dmamap_load_crp . +.Fn bus_dmamap_load_crp_buffer . Callbacks are of the format: .Bl -tag -width indent .It Ft void @@ -885,8 +891,18 @@ XPT_SCSI_IO .It Fn bus_dmamap_load_crp "dmat" "map" "crp" "callback" "callback_arg" "flags" This is a variation of .Fn bus_dmamap_load -which maps buffers pointed to by +which maps the input buffer pointed to by .Fa crp +for DMA transfers. +The +.Dv BUS_DMA_NOWAIT +flag is implied, thus no callback deferral will happen. +.It Fn bus_dmamap_load_crp_buffer "dmat" "map" "cb" "callback" "callback_arg" \ +"flags" +This is a variation of +.Fn bus_dmamap_load +which maps the crypto data buffer pointed to by +.Fa cb for DMA transfers. The .Dv BUS_DMA_NOWAIT Added: head/share/man/man9/crypto_buffer.9 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/share/man/man9/crypto_buffer.9 Mon May 25 22:12:04 2020 (r361481) @@ -0,0 +1,307 @@ +.\" Copyright (c) 2020, Chelsio Inc +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions are met: +.\" +.\" 1. Redistributions of source code must retain the above copyright notice, +.\" this list of conditions and the following disclaimer. +.\" +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" +.\" 3. Neither the name of the Chelsio Inc nor the names of its +.\" contributors may be used to endorse or promote products derived from +.\" this software without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +.\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +.\" LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +.\" POSSIBILITY OF SUCH DAMAGE. +.\" +.\" * Other names and brands may be claimed as the property of others. +.\" +.\" $FreeBSD$ +.\" +.Dd May 25, 2020 +.Dt CRYPTO_BUFFER 9 +.Os +.Sh NAME +.Nm crypto_buffer +.Nd symmetric cryptographic request buffers +.Sh SYNOPSIS +.In opencrypto/cryptodev.h +.Ft int +.Fo crypto_apply +.Fa "struct cryptop *crp" +.Fa "int off" +.Fa "int len" +.Fa "int (*f)(void *, void *, u_int)" +.Fa "void *arg" +.Fc +.Ft int +.Fo crypto_apply_buf +.Fa "struct crypto_buffer *cb" +.Fa "int off" +.Fa "int len" +.Fa "int (*f)(void *, void *, u_int)" +.Fa "void *arg" +.Fc +.Ft void * +.Fo crypto_buffer_contiguous_subsegment +.Fa "struct crypto_buffer *cb" +.Fa "size_t skip" +.Fa "size_t len" +.Fc +.Ft size_t +.Fn crypto_buffer_len "struct crypto_buffer *cb" +.Ft void * +.Fo crypto_contiguous_subsegment +.Fa "struct cryptop *crp" +.Fa "size_t skip" +.Fa "size_t len" +.Fc +.Ft void +.Fo crypto_cursor_init +.Fa "struct crypto_buffer_cursor *cc" +.Fa "const struct crypto_buffer *cb" +.Fc +.Ft void +.Fn crypto_cursor_advance "struct crypto_buffer_cursor *cc" "size_t amount" +.Ft void +.Fo crypto_cursor_copyback +.Fa "struct crypto_buffer_cursor *cc" +.Fa "int size" +.Fa "const void *src" +.Fc +.Ft void +.Fo crypto_cursor_copydata +.Fa "struct crypto_buffer_cursor *cc" +.Fa "int size" +.Fa "void *dst" +.Fc +.Ft void +.Fo crypto_cursor_copydata_noadv +.Fa "struct crypto_buffer_cursor *cc" +.Fa "int size" +.Fa "void *dst" +.Fc +.Ft void * +.Fn crypto_cursor_segbase "struct crypto_buffer_cursor *cc" +.Ft size_t +.Fn crypto_cursor_seglen "struct crypto_buffer_cursor *cc" +.Ft bool +.Fn CRYPTO_HAS_OUTPUT_BUFFER "struct cryptop *crp" +.Sh DESCRIPTION +Symmetric cryptographic requests use data buffers to describe the data to +be modified. +Requests can either specify a single data buffer whose contents are modified +in place, +or requests may specify separate data buffers for input and output. +.Vt struct crypto_buffer +provides an abstraction that permits cryptographic requests to operate on +different types of buffers. +.Vt struct crypto_cursor +allows cryptographic drivers to iterate over a data buffer. +.Pp +.Fn CRYPTO_HAS_OUTPUT_BUFFER +returns true if +.Fa crp +uses separate buffers for input and output and false if +.Fa crp +uses a single buffer. +.Pp +.Fn crypto_buffer_len +returns the length of data buffer +.Fa cb +in bytes. +.Pp +.Fn crypto_apply_buf +invokes a caller-supplied function +to a region of the data buffer +.Fa cb . +The function +.Fa f +is called one or more times. +For each invocation, +the first argument to +.Fa f +is the value of +.Fa arg +passed to +.Fn crypto_apply_buf . +The second and third arguments to +.Fa f +are a pointer and length to a segment of the buffer mapped into the kernel. +The function is called enough times to cover the +.Fa len +bytes of the data buffer which starts at an offset +.Fa off . +If any invocation of +.Fa f +returns a non-zero value, +.Fn crypto_apply_buf +immediately returns that value without invoking +.Fa f +on any remaining segments of the region, +otherwise +.Fn crypto_apply_buf +returns the value from the final call to +.Fa f . +.Fn crypto_apply +invokes the callback +.Fa f +on a region of the input data buffer for +.Fa crp . +.Pp +.Fn crypto_buffer_contiguous_subsegment +attempts to locate a single, virtually-contiguous segment of the data buffer +.Fa cb . +The segment must be +.Fa len +bytes long and start at an offset of +.Fa skip +bytes. +If a segment is found, +a pointer to the start of the segment is returned. +Otherwise, +.Dv NULL +is returned. +.Fn crypto_contiguous_subsegment +attempts to locate a single, virtually-contiguous segment in the input data +buffer for +.Fa crp . +.Ss Data Buffers +Data buffers are described by an instance of +.Vt struct crypto buffer . +The +.Fa cb_type +member contains the type of the data buffer. +The following types are supported: +.Bl -tag -width " CRYPTO_BUF_CONTIG" +.It Dv CRYPTO_BUF_NONE +An invalid buffer. +Used to mark the output buffer when a crypto request uses a single data buffer. +.It Dv CRYPTO_BUF_CONTIG +An array of bytes mapped into the kernel's address space. +.It Dv CRYPTO_BUF_UIO +A scatter/gather list of kernel buffers as described in +.Xr uio 9 . +.It Dv CRYPTO_BUF_MBUF +A network memory buffer as described in +.Xr mbuf 9 . +.El +.Pp +The structure also contains the following type-specific fields: +.Bl -tag -width " cb_buf_len" +.It Fa cb_buf +A pointer to the start of a +.Dv CRYPTO_BUF_CONTIG +data buffer. +.It Fa cb_buf_len +The length of a +.Dv CRYPTO_BUF_CONTIG +data buffer +.It Fa cb_mbuf +A pointer to a +.Vt struct mbuf +for +.Dv CRYPTO_BUF_MBUF . +.It Fa cb_uio +A pointer to a +.Vt struct uio +for +.Dv CRYPTO_BUF_UIO . +.El +.Ss Cursors +Cursors provide a mechanism for iterating over a data buffer. +They are primarily intended for use in software drivers which access data +buffers via virtual addresses. +.Pp +.Fn crypto_cursor_init +initializes the cursor +.Fa cc +to reference the start of the data buffer +.Fa cb . +.Pp +.Fn crypto_cursor_advance +advances the cursor +.Fa amount +bytes forward in the data buffer. +.Pp +.Fn crypto_cursor_copyback +copies +.Fa size +bytes from the local buffer pointed to by +.Fa src +into the data buffer associated with +.Fa cc . +The bytes are written to the current position of +.Fa cc , +and the cursor is then advanced by +.Fa size +bytes. +.Pp +.Fn crypto_cursor_copydata +copies +.Fa size +bytes out of the data buffer associated with +.Fa cc +into a local buffer pointed to by +.Fa dst . +The bytes are read from the current position of +.Fa cc , +and the cursor is then advanced by +.Fa size +bytes. +.Pp +.Fn crypto_cursor_copydata_noadv +is similar to +.Fn crypto_cursor_copydata +except that it does not change the current position of +.Fa cc . +.Pp +.Fn crypto_cursor_segbase +and +.Fn crypto_cursor_seglen +return the start and length, respectively, +of the virtually-contiguous segment at the current position of +.Fa cc . +.Sh RETURN VALUES +.Fn crypto_apply +and +.Fn crypto_apply_buf +return the return value from the caller-supplied callback function. +.Pp +.Fn crypto_buffer_contiguous_subsegment , +.Fn crypto_contiguous_subsegment , +and +.Fn crypto_cursor_segbase , +return a pointer to a contiguous segment or +.Dv NULL . +.Pp +.Fn crypto_buffer_len +returns the length of a buffer in bytes. +.Pp +.Fn crypto_cursor_seglen +returns the length in bytes of a contiguous segment. +.Pp +.Fn CRYPTO_HAS_OUTPUT_BUFFER +returns true if the request uses a separate output buffer. +.Sh SEE ALSO +.Xr ipsec 4 , +.Xr bus_dma 9 , +.Xr crypto 7 , +.Xr crypto 9 , +.Xr crypto_request 9 , +.Xr crypto_driver 9 , +.Xr crypto_session 9 , +.Xr mbuf 9 +.Xr uio 9 Modified: head/share/man/man9/crypto_driver.9 ============================================================================== --- head/share/man/man9/crypto_driver.9 Mon May 25 21:14:23 2020 (r361480) +++ head/share/man/man9/crypto_driver.9 Mon May 25 22:12:04 2020 (r361481) @@ -30,7 +30,7 @@ .\" .\" $FreeBSD$ .\" -.Dd April 20, 2020 +.Dd May 25, 2020 .Dt CRYPTO_DRIVER 9 .Os .Sh NAME @@ -38,20 +38,6 @@ .Nd interface for symmetric cryptographic drivers .Sh SYNOPSIS .In opencrypto/cryptodev.h -.Ft int -.Fo crypto_apply -.Fa "struct cryptop *crp" -.Fa "int off" -.Fa "int len" -.Fa "int (*f)(void *, void *, u_int)" -.Fa "void *arg" -.Fc -.Ft void * -.Fo crypto_contiguous_subsegment -.Fa "struct cryptop *crp" -.Fa "size_t skip" -.Fa "size_t len" -.Fc .Ft void .Fn crypto_copyback "struct cryptop *crp" "int off" "int size" "const void *src" .Ft void @@ -244,29 +230,29 @@ callbacks. .Fn crypto_copydata copies .Fa size -bytes out of the data buffer for +bytes out of the input buffer for .Fa crp into a local buffer pointed to by .Fa dst . The bytes are read starting at an offset of .Fa off -bytes in the request's data buffer. +bytes in the request's input buffer. .Pp .Fn crypto_copyback copies .Fa size bytes from the local buffer pointed to by .Fa src -into the data buffer for +into the output buffer for .Fa crp . The bytes are written starting at an offset of .Fa off -bytes in the request's data buffer. +bytes in the request's output buffer. .Pp .Fn crypto_read_iv copies the IV or nonce for .Fa crp -into the the local buffer pointed to by +into the local buffer pointed to by .Fa iv . .Pp A driver calls @@ -306,53 +292,7 @@ indicates that the driver is able to handle asymmetric .Fn CRYPTODEV_KPROCESS . .El .Pp -.Fn crypto_apply -is a helper routine that can be used to invoke a caller-supplied function -to a region of the data buffer for -.Fa crp . -The function -.Fa f -is called one or more times. -For each invocation, -the first argument to -.Fa f -is the value of -.Fa arg passed to -.Fn crypto_apply . -The second and third arguments to -.Fa f -are a pointer and length to a segment of the buffer mapped into the kernel. -The function is called enough times to cover the -.Fa len -bytes of the data buffer which starts at an offset -.Fa off . -If any invocation of -.Fa f -returns a non-zero value, -.Fn crypto_apply -immediately returns that value without invoking -.Fa f -on any remaining segments of the region, -otherwise -.Fn crypto_apply -returns the value from the final call to -.Fa f . .Pp -.Fn crypto_contiguous_subsegment -attempts to locate a single, virtually-contiguous segment of the data buffer -for -.Fa crp . -The segment must be -.Fa len -bytes long and start at an offset of -.Fa skip -bytes. -If a segment is found, -a pointer to the start of the segment is returned. -Otherwise, -.Dv NULL -is returned. -.Pp .Fn hmac_init_ipad prepares an authentication context to generate the inner hash of an HMAC. .Fa axf @@ -396,5 +336,6 @@ returns a negative value on success or an error on fai .Sh SEE ALSO .Xr crypto 7 , .Xr crypto 9 , +.Xr crypto_buffer 9 , .Xr crypto_request 9 , .Xr crypto_session 9 Modified: head/share/man/man9/crypto_request.9 ============================================================================== --- head/share/man/man9/crypto_request.9 Mon May 25 21:14:23 2020 (r361480) +++ head/share/man/man9/crypto_request.9 Mon May 25 22:12:04 2020 (r361481) @@ -30,7 +30,7 @@ .\" .\" $FreeBSD$ .\" -.Dd April 20, 2020 +.Dd May 25, 2020 .Dt CRYPTO_REQUEST 9 .Os .Sh NAME @@ -44,6 +44,18 @@ .Fn crypto_freereq "struct cryptop *crp" .Ft "struct cryptop *" .Fn crypto_getreq "crypto_session_t cses" "int how" +.Ft void +.Fn crypto_use_buf "struct cryptop *crp" "void *buf" "int len" +.Ft void +.Fn crypto_use_mbuf "struct cryptop *crp" "struct mbuf *m" +.Ft void +.Fn crypto_use_uio "struct cryptop *crp" "struct uio *uio" +.Ft void +.Fn crypto_use_output_buf "struct cryptop *crp" "void *buf" "int len" +.Ft void +.Fn crypto_use_output_mbuf "struct cryptop *crp" "struct mbuf *m" +.Ft void +.Fn crypto_use_output_uio "struct cryptop *crp" "struct uio *uio" .Sh DESCRIPTION Each symmetric cryptographic operation in the kernel is described by an instance of @@ -84,57 +96,65 @@ it should be feed via .Fn crypto_freereq . .Pp Cryptographic operations include several fields to describe the request. -.Ss Buffer Types -Requests are associated with a single data buffer that is modified in place. -The type of the data buffer and the buffer itself are described by the -following fields: -.Bl -tag -width crp_buf_type -.It Fa crp_buf_type -The type of the data buffer. -The following types are supported: -.Bl -tag -width CRYPTO_BUF_CONTIG -.It Dv CRYPTO_BUF_CONTIG -An array of bytes mapped into the kernel's address space. -.It Dv CRYPTO_BUF_UIO -A scatter/gather list of kernel buffers as described in -.Xr uio 9 . -.It Dv CRYPTO_BUF_MBUF -A network memory buffer as described in -.Xr mbuf 9 . +.Ss Request Buffers +Requests can either specify a single data buffer that is modified in place +.Po +.Fa crp_buf +.Pc +or separate input +.Po +.Fa crp_buf +.Pc +and output +.Po +.Fa crp_obuf +.Pc +buffers. +Note that separate input and output buffers are not supported for compression +mode requests. +.Pp +All requests must have a valid +.Fa crp_buf +initialized by one of the following functions: +.Bl -tag -width "Fn crypto_use_mbuf" +.It Fn crypto_use_buf +Uses an array of +.Fa len +bytes pointed to by +.Fa buf +as the data buffer. +.It Fn crypto_use_mbuf +Uses the network memory buffer +.Fa m +as the data buffer. +.It Fn crypto_use_uio +Uses the scatter/gather list +.Fa uio +as the data buffer. .El -.It Fa crp_buf -A pointer to the start of a -.Dv CRYPTO_BUF_CONTIG -data buffer. -.It Fa crp_ilen -The length of a -.Dv CRYPTO_BUF_CONTIG -data buffer -.It Fa crp_mbuf -A pointer to a -.Vt struct mbuf -for -.Dv CRYPTO_BUF_MBUF . -.It Fa crp_uio -A pointer to a -.Vt struct uio -for -.Dv CRYPTO_BUF_UIO . -.It Fa crp_olen -Used with compression and decompression requests to describe the updated -length of the payload region in the data buffer. .Pp -If a compression request increases the size of the payload, -then the data buffer is unmodified, the request completes successfully, -and -.Fa crp_olen -is set to the size the compressed data would have used. -Callers can compare this to the payload region length to determine if -the compressed data was discarded. +One of the following functions should be used to initialize +.Fa crp_obuf +for requests that use separate input and output buffers: +.Bl -tag -width "Fn crypto_use_output_mbuf" +.It Fn crypto_use_output_buf +Uses an array of +.Fa len +bytes pointed to by +.Fa buf +as the output buffer. +.It Fn crypto_use_output_mbuf +Uses the network memory buffer +.Fa m +as the output buffer. +.It Fn crypto_use_output_uio +Uses the scatter/gather list +.Fa uio +as the output buffer. .El .Ss Request Regions -Each request describes one or more regions in the data buffer using. -Each region is described by an offset relative to the start of the +Each request describes one or more regions in the data buffers. +Each region is described by an offset relative to the start of a data buffer and a length. The length of some regions is the same for all requests belonging to a session. @@ -142,18 +162,43 @@ Those lengths are set in the session parameters of the session. All requests must define a payload region. Other regions are only required for specific session modes. +.Pp +For requests with separate input and output data buffers, +the AAD, IV, and payload regions are always defined as regions in the +input buffer, +and a separate payload output region is defined to hold the output of +encryption or decryption in the output buffer. +The digest region describes a region in the input data buffer for +requests that verify an existing digest. +For requests that compute a digest, +the digest region describes a region in the output data buffer. +Note that the only data written to the output buffer is the encryption +or decryption result and any computed digest. +AAD and IV regions are not copied from the input buffer into the output +buffer but are only used as inputs. +.Pp The following regions are defined: -.Bl -column "Payload" "crp_payload_start" "crp_payload_length" -.It Sy Region Ta Sy Start Ta Sy Length Ta Sy Description -.It AAD Ta Fa crp_aad_start Ta Fa crp_aad_length Ta +.Bl -column "Payload Output" "Input/Output" +.It Sy Region Ta Sy Buffer Ta Sy Description +.It AAD Ta Input Ta Additional Authenticated Data -.It IV Ta Fa crp_iv_start Ta Fa csp_ivlen Ta +.It IV Ta Input Ta Embedded IV or nonce -.It Payload Ta Fa crp_payload_start Ta Fa crp_payload_length Ta +.It Payload Ta Input Ta Data to encrypt, decrypt, compress, or decompress -.It Digest Ta Fa crp_digest_start Ta Fa csp_auth_mlen Ta +.It Payload Output Ta Output Ta +Encrypted or decrypted data +.It Digest Ta Input/Output Ta Authentication digest, hash, or tag .El +.Bl -column "Payload Output" ".Fa crp_payload_output_start" +.It Sy Region Ta Sy Start Ta Sy Length +.It AAD Ta Fa crp_aad_start Ta Fa crp_aad_length +.It IV Ta Fa crp_iv_start Ta Fa csp_ivlen +.It Payload Ta Fa crp_payload_start Ta Fa crp_payload_length +.It Payload Output Ta Fa crp_payload_output_start Ta Fa crp_payload_length +.It Digest Ta Fa crp_digest_start Ta Fa csp_auth_mlen +.El .Pp Requests are permitted to operate on only a subset of the data buffer. For example, @@ -223,7 +268,7 @@ If the IV is stored in should be set in .Fa crp_flags and -.Fa crp_digest_start +.Fa crp_iv_start should be left as zero. .Pp Requests that store part, but not all, of the IV in the data buffer should @@ -380,6 +425,17 @@ The callback function should inspect to determine the status of the completed operation. It should also arrange for the request to be freed via .Fn crypto_freereq . +.It Fa crp_olen +Used with compression and decompression requests to describe the updated +length of the payload region in the data buffer. +.Pp +If a compression request increases the size of the payload, +then the data buffer is unmodified, the request completes successfully, +and +.Fa crp_olen +is set to the size the compressed data would have used. +Callers can compare this to the payload region length to determine if +the compressed data was discarded. .El .Sh RETURN VALUES .Fn crypto_dispatch Modified: head/share/man/man9/crypto_session.9 ============================================================================== --- head/share/man/man9/crypto_session.9 Mon May 25 21:14:23 2020 (r361480) +++ head/share/man/man9/crypto_session.9 Mon May 25 22:12:04 2020 (r361481) @@ -30,7 +30,7 @@ .\" .\" $FreeBSD$ .\" -.Dd March 27, 2020 +.Dd May 25, 2020 .Dt CRYPTO_SESSION 9 .Os .Sh NAME @@ -183,8 +183,18 @@ and the authentication algorithm is specified in .Fa csp_auth_alg . .El .It Fa csp_flags -Currently, no additional flags are defined and this field should be set to -zero. +A mask of optional driver features. +Drivers will only attach to a session if they support all of the +requested features. +.Bl -tag -width CSP_F_SEPARATE_OUTPUT +.It Dv CSP_F_SEPARATE_OUTPUT +Support requests that use separate input and output buffers. +Sessions with this flag set permit requests with either a single buffer +that is modified in-place, or requests with separate input and output +buffers. +Sessions without this flag only permit requests with a single buffer that +is modified in-place. +.El .It Fa csp_ivlen If either the cipher or authentication algorithms require an explicit initialization vector (IV) or nonce, Modified: head/sys/crypto/ccp/ccp.c ============================================================================== --- head/sys/crypto/ccp/ccp.c Mon May 25 21:14:23 2020 (r361480) +++ head/sys/crypto/ccp/ccp.c Mon May 25 22:12:04 2020 (r361481) @@ -92,20 +92,20 @@ static struct random_source random_ccp = { * crypto operation buffer. */ static int -ccp_populate_sglist(struct sglist *sg, struct cryptop *crp) +ccp_populate_sglist(struct sglist *sg, struct crypto_buffer *cb) { int error; sglist_reset(sg); - switch (crp->crp_buf_type) { + switch (cb->cb_type) { case CRYPTO_BUF_MBUF: - error = sglist_append_mbuf(sg, crp->crp_mbuf); + error = sglist_append_mbuf(sg, cb->cb_mbuf); break; case CRYPTO_BUF_UIO: - error = sglist_append_uio(sg, crp->crp_uio); + error = sglist_append_uio(sg, cb->cb_uio); break; case CRYPTO_BUF_CONTIG: - error = sglist_append(sg, crp->crp_buf, crp->crp_ilen); + error = sglist_append(sg, cb->cb_buf, cb->cb_buf_len); break; default: error = EINVAL; @@ -547,7 +547,7 @@ ccp_process(device_t dev, struct cryptop *crp, int hin goto out; qpheld = true; - error = ccp_populate_sglist(qp->cq_sg_crp, crp); + error = ccp_populate_sglist(qp->cq_sg_crp, &crp->crp_buf); if (error != 0) goto out; Modified: head/sys/dev/cxgbe/crypto/t4_crypto.c ============================================================================== --- head/sys/dev/cxgbe/crypto/t4_crypto.c Mon May 25 21:14:23 2020 (r361480) +++ head/sys/dev/cxgbe/crypto/t4_crypto.c Mon May 25 22:12:04 2020 (r361481) @@ -247,26 +247,26 @@ struct ccr_softc { * requests. * * These scatter/gather lists can describe different subsets of the - * buffer described by the crypto operation. ccr_populate_sglist() - * generates a scatter/gather list that covers the entire crypto + * buffers described by the crypto operation. ccr_populate_sglist() + * generates a scatter/gather list that covers an entire crypto * operation buffer that is then used to construct the other * scatter/gather lists. */ static int -ccr_populate_sglist(struct sglist *sg, struct cryptop *crp) +ccr_populate_sglist(struct sglist *sg, struct crypto_buffer *cb) { int error; sglist_reset(sg); - switch (crp->crp_buf_type) { + switch (cb->cb_type) { case CRYPTO_BUF_MBUF: - error = sglist_append_mbuf(sg, crp->crp_mbuf); + error = sglist_append_mbuf(sg, cb->cb_mbuf); break; case CRYPTO_BUF_UIO: - error = sglist_append_uio(sg, crp->crp_uio); + error = sglist_append_uio(sg, cb->cb_uio); break; case CRYPTO_BUF_CONTIG: - error = sglist_append(sg, crp->crp_buf, crp->crp_ilen); + error = sglist_append(sg, cb->cb_buf, cb->cb_buf_len); break; default: error = EINVAL; @@ -2576,7 +2576,7 @@ ccr_process(device_t dev, struct cryptop *crp, int hin sc = device_get_softc(dev); mtx_lock(&sc->lock); - error = ccr_populate_sglist(sc->sg_crp, crp); + error = ccr_populate_sglist(sc->sg_crp, &crp->crp_buf); if (error) { sc->stats_sglist_error++; goto out; Modified: head/sys/dev/hifn/hifn7751.c ============================================================================== --- head/sys/dev/hifn/hifn7751.c Mon May 25 21:14:23 2020 (r361480) +++ head/sys/dev/hifn/hifn7751.c Mon May 25 22:12:04 2020 (r361481) @@ -1760,22 +1760,6 @@ hifn_dmamap_load_src(struct hifn_softc *sc, struct hif return (idx); } -static bus_size_t -hifn_crp_length(struct cryptop *crp) -{ - - switch (crp->crp_buf_type) { - case CRYPTO_BUF_MBUF: - return (crp->crp_mbuf->m_pkthdr.len); - case CRYPTO_BUF_UIO: - return (crp->crp_uio->uio_resid); - case CRYPTO_BUF_CONTIG: - return (crp->crp_ilen); - default: - panic("bad crp buffer type"); - } -} - static void hifn_op_cb(void* arg, bus_dma_segment_t *seg, int nsegs, int error) { @@ -1831,12 +1815,12 @@ hifn_crypto( err = ENOMEM; goto err_srcmap1; } - cmd->src_mapsize = hifn_crp_length(crp); + cmd->src_mapsize = crypto_buffer_len(&crp->crp_buf); if (hifn_dmamap_aligned(&cmd->src)) { cmd->sloplen = cmd->src_mapsize & 3; cmd->dst = cmd->src; - } else if (crp->crp_buf_type == CRYPTO_BUF_MBUF) { + } else if (crp->crp_buf.cb_type == CRYPTO_BUF_MBUF) { int totlen, len; struct mbuf *m, *m0, *mlast; @@ -1854,10 +1838,11 @@ hifn_crypto( * have no guarantee that we'll be re-entered. */ totlen = cmd->src_mapsize; - if (crp->crp_mbuf->m_flags & M_PKTHDR) { + if (crp->crp_buf.cb_mbuf->m_flags & M_PKTHDR) { len = MHLEN; MGETHDR(m0, M_NOWAIT, MT_DATA); - if (m0 && !m_dup_pkthdr(m0, crp->crp_mbuf, M_NOWAIT)) { + if (m0 && !m_dup_pkthdr(m0, crp->crp_buf.cb_mbuf, + M_NOWAIT)) { m_free(m0); m0 = NULL; } @@ -2084,7 +2069,7 @@ err_dstmap1: if (cmd->src_map != cmd->dst_map) bus_dmamap_destroy(sc->sc_dmat, cmd->dst_map); err_srcmap: - if (crp->crp_buf_type == CRYPTO_BUF_MBUF) { + if (crp->crp_buf.cb_type == CRYPTO_BUF_MBUF) { if (cmd->dst_m != NULL) m_freem(cmd->dst_m); } @@ -2626,7 +2611,7 @@ hifn_callback(struct hifn_softc *sc, struct hifn_comma BUS_DMASYNC_POSTREAD); } - if (crp->crp_buf_type == CRYPTO_BUF_MBUF) { + if (crp->crp_buf.cb_type == CRYPTO_BUF_MBUF) { if (cmd->dst_m != NULL) { totlen = cmd->src_mapsize; for (m = cmd->dst_m; m != NULL; m = m->m_next) { @@ -2636,9 +2621,10 @@ hifn_callback(struct hifn_softc *sc, struct hifn_comma } else totlen -= m->m_len; } - cmd->dst_m->m_pkthdr.len = crp->crp_mbuf->m_pkthdr.len; - m_freem(crp->crp_mbuf); - crp->crp_mbuf = cmd->dst_m; + cmd->dst_m->m_pkthdr.len = + crp->crp_buf.cb_mbuf->m_pkthdr.len; + m_freem(crp->crp_buf.cb_mbuf); + crp->crp_buf.cb_mbuf = cmd->dst_m; } } Modified: head/sys/dev/safe/safe.c ============================================================================== --- head/sys/dev/safe/safe.c Mon May 25 21:14:23 2020 (r361480) +++ head/sys/dev/safe/safe.c Mon May 25 22:12:04 2020 (r361481) @@ -752,22 +752,6 @@ safe_newsession(device_t dev, crypto_session_t cses, return (0); } -static bus_size_t -safe_crp_length(struct cryptop *crp) -{ - - switch (crp->crp_buf_type) { - case CRYPTO_BUF_MBUF: - return (crp->crp_mbuf->m_pkthdr.len); - case CRYPTO_BUF_UIO: - return (crp->crp_uio->uio_resid); - case CRYPTO_BUF_CONTIG: - return (crp->crp_ilen); - default: - panic("bad crp buffer type"); - } -} - static void *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@freebsd.org Mon May 25 22:18:34 2020 Return-Path: Delivered-To: svn-src-all@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 5FF622CCE0C; Mon, 25 May 2020 22:18:34 +0000 (UTC) (envelope-from jhb@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49WBLy1zrQz3TcX; Mon, 25 May 2020 22:18:34 +0000 (UTC) (envelope-from jhb@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 3ACC918F67; Mon, 25 May 2020 22:18:34 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04PMIYoU003524; Mon, 25 May 2020 22:18:34 GMT (envelope-from jhb@FreeBSD.org) Received: (from jhb@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04PMIXlD003522; Mon, 25 May 2020 22:18:33 GMT (envelope-from jhb@FreeBSD.org) Message-Id: <202005252218.04PMIXlD003522@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: jhb set sender to jhb@FreeBSD.org using -f From: John Baldwin Date: Mon, 25 May 2020 22:18:33 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361482 - head/sys/opencrypto X-SVN-Group: head X-SVN-Commit-Author: jhb X-SVN-Commit-Paths: head/sys/opencrypto X-SVN-Commit-Revision: 361482 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2020 22:18:34 -0000 Author: jhb Date: Mon May 25 22:18:33 2020 New Revision: 361482 URL: https://svnweb.freebsd.org/changeset/base/361482 Log: Export the _kern_crypto sysctl node from crypto.c. Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D24545 Modified: head/sys/opencrypto/crypto.c head/sys/opencrypto/cryptodev.h Modified: head/sys/opencrypto/crypto.c ============================================================================== --- head/sys/opencrypto/crypto.c Mon May 25 22:12:04 2020 (r361481) +++ head/sys/opencrypto/crypto.c Mon May 25 22:18:33 2020 (r361482) @@ -152,7 +152,7 @@ static struct mtx crypto_q_mtx; #define CRYPTO_Q_LOCK() mtx_lock(&crypto_q_mtx) #define CRYPTO_Q_UNLOCK() mtx_unlock(&crypto_q_mtx) -static SYSCTL_NODE(_kern, OID_AUTO, crypto, CTLFLAG_RW, 0, +SYSCTL_NODE(_kern, OID_AUTO, crypto, CTLFLAG_RW, 0, "In-kernel cryptography"); /* Modified: head/sys/opencrypto/cryptodev.h ============================================================================== --- head/sys/opencrypto/cryptodev.h Mon May 25 22:12:04 2020 (r361481) +++ head/sys/opencrypto/cryptodev.h Mon May 25 22:18:33 2020 (r361482) @@ -643,6 +643,10 @@ extern int crypto_usercrypto; /* userland may do cryp extern int crypto_userasymcrypto; /* userland may do asym crypto reqs */ extern int crypto_devallowsoft; /* only use hardware crypto */ +#ifdef SYSCTL_DECL +SYSCTL_DECL(_kern_crypto); +#endif + /* Helper routines for drivers to initialize auth contexts for HMAC. */ struct auth_hash; From owner-svn-src-all@freebsd.org Mon May 25 22:21:09 2020 Return-Path: Delivered-To: svn-src-all@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 BBC862CCE23; Mon, 25 May 2020 22:21:09 +0000 (UTC) (envelope-from jhb@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49WBPx4f8Vz3V6C; Mon, 25 May 2020 22:21:09 +0000 (UTC) (envelope-from jhb@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 9ACDA1959D; Mon, 25 May 2020 22:21:09 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04PML92c003767; Mon, 25 May 2020 22:21:09 GMT (envelope-from jhb@FreeBSD.org) Received: (from jhb@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04PML9qb003766; Mon, 25 May 2020 22:21:09 GMT (envelope-from jhb@FreeBSD.org) Message-Id: <202005252221.04PML9qb003766@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: jhb set sender to jhb@FreeBSD.org using -f From: John Baldwin Date: Mon, 25 May 2020 22:21:09 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361483 - head/sys/opencrypto X-SVN-Group: head X-SVN-Commit-Author: jhb X-SVN-Commit-Paths: head/sys/opencrypto X-SVN-Commit-Revision: 361483 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2020 22:21:09 -0000 Author: jhb Date: Mon May 25 22:21:09 2020 New Revision: 361483 URL: https://svnweb.freebsd.org/changeset/base/361483 Log: Add a sysctl knob to use separate output buffers for /dev/crypto. This is a testing aid to permit using testing a driver's support of separate output buffers via cryptocheck. Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D24545 Modified: head/sys/opencrypto/cryptodev.c Modified: head/sys/opencrypto/cryptodev.c ============================================================================== --- head/sys/opencrypto/cryptodev.c Mon May 25 22:18:33 2020 (r361482) +++ head/sys/opencrypto/cryptodev.c Mon May 25 22:21:09 2020 (r361483) @@ -282,6 +282,7 @@ struct cryptop_data { struct csession *cse; char *buf; + char *obuf; bool done; }; @@ -291,6 +292,11 @@ struct fcrypt { struct mtx lock; }; +static bool use_outputbuffers; +SYSCTL_BOOL(_kern_crypto, OID_AUTO, cryptodev_use_output, CTLFLAG_RW, + &use_outputbuffers, 0, + "Use separate output buffers for /dev/crypto requests."); + static int cryptof_ioctl(struct file *, u_long, void *, struct ucred *, struct thread *); static int cryptof_stat(struct file *, struct stat *, @@ -547,6 +553,8 @@ cryptof_ioctl( } memset(&csp, 0, sizeof(csp)); + if (use_outputbuffers) + csp.csp_flags |= CSP_F_SEPARATE_OUTPUT; if (sop->cipher == CRYPTO_AES_NIST_GCM_16) { switch (sop->mac) { @@ -819,6 +827,8 @@ cod_alloc(struct csession *cse, size_t len, struct thr cod->cse = cse; cod->buf = malloc(len, M_XDATA, M_WAITOK); + if (crypto_get_params(cse->cses)->csp_flags & CSP_F_SEPARATE_OUTPUT) + cod->obuf = malloc(len, M_XDATA, M_WAITOK); return (cod); } @@ -826,6 +836,7 @@ static void cod_free(struct cryptop_data *cod) { + free(cod->obuf, M_XDATA); free(cod->buf, M_XDATA); free(cod, M_XDATA); } @@ -919,6 +930,8 @@ cryptodev_op( case COP_ENCRYPT: case COP_DECRYPT: crp->crp_op = CRYPTO_OP_COMPUTE_DIGEST; + if (cod->obuf != NULL) + crp->crp_digest_start = 0; break; default: SDT_PROBE1(opencrypto, dev, ioctl, error, __LINE__); @@ -950,6 +963,8 @@ cryptodev_op( crp->crp_flags = CRYPTO_F_CBIMM | (cop->flags & COP_F_BATCH); crypto_use_buf(crp, cod->buf, cop->len + cse->hashsize); + if (cod->obuf) + crypto_use_output_buf(crp, cod->obuf, cop->len + cse->hashsize); crp->crp_callback = cryptodev_cb; crp->crp_opaque = cod; @@ -969,10 +984,12 @@ cryptodev_op( crp->crp_iv_start = 0; crp->crp_payload_start += cse->ivsize; crp->crp_payload_length -= cse->ivsize; + cop->dst += cse->ivsize; } - if (cop->mac != NULL) { - error = copyin(cop->mac, cod->buf + cop->len, cse->hashsize); + if (cop->mac != NULL && crp->crp_op & CRYPTO_OP_VERIFY_DIGEST) { + error = copyin(cop->mac, cod->buf + crp->crp_digest_start, + cse->hashsize); if (error) { SDT_PROBE1(opencrypto, dev, ioctl, error, __LINE__); goto bail; @@ -1011,15 +1028,18 @@ again: } if (cop->dst != NULL) { - error = copyout(cod->buf, cop->dst, cop->len); + error = copyout(cod->obuf != NULL ? cod->obuf : + cod->buf + crp->crp_payload_start, cop->dst, + crp->crp_payload_length); if (error) { SDT_PROBE1(opencrypto, dev, ioctl, error, __LINE__); goto bail; } } - if (cop->mac != NULL) { - error = copyout(cod->buf + cop->len, cop->mac, cse->hashsize); + if (cop->mac != NULL && (crp->crp_op & CRYPTO_OP_VERIFY_DIGEST) == 0) { + error = copyout((cod->obuf != NULL ? cod->obuf : cod->buf) + + crp->crp_digest_start, cop->mac, cse->hashsize); if (error) { SDT_PROBE1(opencrypto, dev, ioctl, error, __LINE__); goto bail; @@ -1086,25 +1106,13 @@ cryptodev_aead( } crp->crp_payload_start = caead->aadlen; crp->crp_payload_length = caead->len; - crp->crp_digest_start = caead->aadlen + caead->len; + if (caead->op == COP_ENCRYPT && cod->obuf != NULL) + crp->crp_digest_start = caead->len; + else + crp->crp_digest_start = caead->aadlen + caead->len; switch (cse->mode) { case CSP_MODE_AEAD: - switch (caead->op) { - case COP_ENCRYPT: - crp->crp_op = CRYPTO_OP_ENCRYPT | - CRYPTO_OP_COMPUTE_DIGEST; - break; - case COP_DECRYPT: - crp->crp_op = CRYPTO_OP_DECRYPT | - CRYPTO_OP_VERIFY_DIGEST; - break; - default: - SDT_PROBE1(opencrypto, dev, ioctl, error, __LINE__); - error = EINVAL; - goto bail; - } - break; case CSP_MODE_ETA: switch (caead->op) { case COP_ENCRYPT: @@ -1130,6 +1138,9 @@ cryptodev_aead( crp->crp_flags = CRYPTO_F_CBIMM | (caead->flags & COP_F_BATCH); crypto_use_buf(crp, cod->buf, caead->aadlen + caead->len + cse->hashsize); + if (cod->obuf != NULL) + crypto_use_output_buf(crp, cod->obuf, caead->len + + cse->hashsize); crp->crp_callback = cryptodev_cb; crp->crp_opaque = cod; @@ -1159,13 +1170,16 @@ cryptodev_aead( crp->crp_iv_start = crp->crp_payload_start; crp->crp_payload_start += cse->ivsize; crp->crp_payload_length -= cse->ivsize; + caead->dst += cse->ivsize; } - error = copyin(caead->tag, cod->buf + caead->len + caead->aadlen, - cse->hashsize); - if (error) { - SDT_PROBE1(opencrypto, dev, ioctl, error, __LINE__); - goto bail; + if (crp->crp_op & CRYPTO_OP_VERIFY_DIGEST) { + error = copyin(caead->tag, cod->buf + crp->crp_digest_start, + cse->hashsize); + if (error) { + SDT_PROBE1(opencrypto, dev, ioctl, error, __LINE__); + goto bail; + } } again: /* @@ -1200,19 +1214,22 @@ again: } if (caead->dst != NULL) { - error = copyout(cod->buf + caead->aadlen, caead->dst, - caead->len); + error = copyout(cod->obuf != NULL ? cod->obuf : + cod->buf + crp->crp_payload_start, caead->dst, + crp->crp_payload_length); if (error) { SDT_PROBE1(opencrypto, dev, ioctl, error, __LINE__); goto bail; } } - error = copyout(cod->buf + caead->aadlen + caead->len, caead->tag, - cse->hashsize); - if (error) { - SDT_PROBE1(opencrypto, dev, ioctl, error, __LINE__); - goto bail; + if ((crp->crp_op & CRYPTO_OP_VERIFY_DIGEST) == 0) { + error = copyout((cod->obuf != NULL ? cod->obuf : cod->buf) + + crp->crp_digest_start, caead->tag, cse->hashsize); + if (error) { + SDT_PROBE1(opencrypto, dev, ioctl, error, __LINE__); + goto bail; + } } bail: From owner-svn-src-all@freebsd.org Mon May 25 22:23:13 2020 Return-Path: Delivered-To: svn-src-all@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 E8A5C2CCF68; Mon, 25 May 2020 22:23:13 +0000 (UTC) (envelope-from jhb@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49WBSK5wPtz3VRr; Mon, 25 May 2020 22:23:13 +0000 (UTC) (envelope-from jhb@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 C61C919272; Mon, 25 May 2020 22:23:13 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04PMNDFU009790; Mon, 25 May 2020 22:23:13 GMT (envelope-from jhb@FreeBSD.org) Received: (from jhb@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04PMND8G009789; Mon, 25 May 2020 22:23:13 GMT (envelope-from jhb@FreeBSD.org) Message-Id: <202005252223.04PMND8G009789@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: jhb set sender to jhb@FreeBSD.org using -f From: John Baldwin Date: Mon, 25 May 2020 22:23:13 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361484 - head/sys/dev/cxgbe/crypto X-SVN-Group: head X-SVN-Commit-Author: jhb X-SVN-Commit-Paths: head/sys/dev/cxgbe/crypto X-SVN-Commit-Revision: 361484 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2020 22:23:14 -0000 Author: jhb Date: Mon May 25 22:23:13 2020 New Revision: 361484 URL: https://svnweb.freebsd.org/changeset/base/361484 Log: Support separate output buffers in ccr(4). Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D24545 Modified: head/sys/dev/cxgbe/crypto/t4_crypto.c Modified: head/sys/dev/cxgbe/crypto/t4_crypto.c ============================================================================== --- head/sys/dev/cxgbe/crypto/t4_crypto.c Mon May 25 22:21:09 2020 (r361483) +++ head/sys/dev/cxgbe/crypto/t4_crypto.c Mon May 25 22:23:13 2020 (r361484) @@ -193,13 +193,16 @@ struct ccr_softc { /* * Pre-allocate S/G lists used when preparing a work request. - * 'sg_crp' contains an sglist describing the entire buffer - * for a 'struct cryptop'. 'sg_ulptx' is used to describe - * the data the engine should DMA as input via ULPTX_SGL. - * 'sg_dsgl' is used to describe the destination that cipher - * text and a tag should be written to. + * 'sg_input' contains an sglist describing the entire input + * buffer for a 'struct cryptop'. 'sg_output' contains an + * sglist describing the entire output buffer. 'sg_ulptx' is + * used to describe the data the engine should DMA as input + * via ULPTX_SGL. 'sg_dsgl' is used to describe the + * destination that cipher text and a tag should be written + * to. */ - struct sglist *sg_crp; + struct sglist *sg_input; + struct sglist *sg_output; struct sglist *sg_ulptx; struct sglist *sg_dsgl; @@ -495,7 +498,7 @@ ccr_hash(struct ccr_softc *sc, struct ccr_session *s, } else { imm_len = 0; sglist_reset(sc->sg_ulptx); - error = sglist_append_sglist(sc->sg_ulptx, sc->sg_crp, + error = sglist_append_sglist(sc->sg_ulptx, sc->sg_input, crp->crp_payload_start, crp->crp_payload_length); if (error) return (error); @@ -617,10 +620,14 @@ ccr_blkcipher(struct ccr_softc *sc, struct ccr_session op_type = CHCR_ENCRYPT_OP; else op_type = CHCR_DECRYPT_OP; - + sglist_reset(sc->sg_dsgl); - error = sglist_append_sglist(sc->sg_dsgl, sc->sg_crp, - crp->crp_payload_start, crp->crp_payload_length); + if (CRYPTO_HAS_OUTPUT_BUFFER(crp)) + error = sglist_append_sglist(sc->sg_dsgl, sc->sg_output, + crp->crp_payload_output_start, crp->crp_payload_length); + else + error = sglist_append_sglist(sc->sg_dsgl, sc->sg_input, + crp->crp_payload_start, crp->crp_payload_length); if (error) return (error); dsgl_nsegs = ccr_count_sgl(sc->sg_dsgl, DSGL_SGE_MAXLEN); @@ -645,7 +652,7 @@ ccr_blkcipher(struct ccr_softc *sc, struct ccr_session } else { imm_len = 0; sglist_reset(sc->sg_ulptx); - error = sglist_append_sglist(sc->sg_ulptx, sc->sg_crp, + error = sglist_append_sglist(sc->sg_ulptx, sc->sg_input, crp->crp_payload_start, crp->crp_payload_length); if (error) return (error); @@ -844,13 +851,21 @@ ccr_eta(struct ccr_softc *sc, struct ccr_session *s, s iv_len + crp->crp_aad_length); if (error) return (error); - error = sglist_append_sglist(sc->sg_dsgl, sc->sg_crp, - crp->crp_payload_start, crp->crp_payload_length); + if (CRYPTO_HAS_OUTPUT_BUFFER(crp)) + error = sglist_append_sglist(sc->sg_dsgl, sc->sg_output, + crp->crp_payload_output_start, crp->crp_payload_length); + else + error = sglist_append_sglist(sc->sg_dsgl, sc->sg_input, + crp->crp_payload_start, crp->crp_payload_length); if (error) return (error); if (op_type == CHCR_ENCRYPT_OP) { - error = sglist_append_sglist(sc->sg_dsgl, sc->sg_crp, - crp->crp_digest_start, hash_size_in_response); + if (CRYPTO_HAS_OUTPUT_BUFFER(crp)) + error = sglist_append_sglist(sc->sg_dsgl, sc->sg_output, + crp->crp_digest_start, hash_size_in_response); + else + error = sglist_append_sglist(sc->sg_dsgl, sc->sg_input, + crp->crp_digest_start, hash_size_in_response); if (error) return (error); } @@ -903,17 +918,17 @@ ccr_eta(struct ccr_softc *sc, struct ccr_session *s, s imm_len = 0; sglist_reset(sc->sg_ulptx); if (crp->crp_aad_length != 0) { - error = sglist_append_sglist(sc->sg_ulptx, sc->sg_crp, + error = sglist_append_sglist(sc->sg_ulptx, sc->sg_input, crp->crp_aad_start, crp->crp_aad_length); if (error) return (error); } - error = sglist_append_sglist(sc->sg_ulptx, sc->sg_crp, + error = sglist_append_sglist(sc->sg_ulptx, sc->sg_input, crp->crp_payload_start, crp->crp_payload_length); if (error) return (error); if (op_type == CHCR_DECRYPT_OP) { - error = sglist_append_sglist(sc->sg_ulptx, sc->sg_crp, + error = sglist_append_sglist(sc->sg_ulptx, sc->sg_input, crp->crp_digest_start, hash_size_in_response); if (error) return (error); @@ -1153,13 +1168,21 @@ ccr_gcm(struct ccr_softc *sc, struct ccr_session *s, s crp->crp_aad_length); if (error) return (error); - error = sglist_append_sglist(sc->sg_dsgl, sc->sg_crp, - crp->crp_payload_start, crp->crp_payload_length); + if (CRYPTO_HAS_OUTPUT_BUFFER(crp)) + error = sglist_append_sglist(sc->sg_dsgl, sc->sg_output, + crp->crp_payload_output_start, crp->crp_payload_length); + else + error = sglist_append_sglist(sc->sg_dsgl, sc->sg_input, + crp->crp_payload_start, crp->crp_payload_length); if (error) return (error); if (op_type == CHCR_ENCRYPT_OP) { - error = sglist_append_sglist(sc->sg_dsgl, sc->sg_crp, - crp->crp_digest_start, hash_size_in_response); + if (CRYPTO_HAS_OUTPUT_BUFFER(crp)) + error = sglist_append_sglist(sc->sg_dsgl, sc->sg_output, + crp->crp_digest_start, hash_size_in_response); + else + error = sglist_append_sglist(sc->sg_dsgl, sc->sg_input, + crp->crp_digest_start, hash_size_in_response); if (error) return (error); } @@ -1199,17 +1222,17 @@ ccr_gcm(struct ccr_softc *sc, struct ccr_session *s, s imm_len = 0; sglist_reset(sc->sg_ulptx); if (crp->crp_aad_length != 0) { - error = sglist_append_sglist(sc->sg_ulptx, sc->sg_crp, + error = sglist_append_sglist(sc->sg_ulptx, sc->sg_input, crp->crp_aad_start, crp->crp_aad_length); if (error) return (error); } - error = sglist_append_sglist(sc->sg_ulptx, sc->sg_crp, + error = sglist_append_sglist(sc->sg_ulptx, sc->sg_input, crp->crp_payload_start, crp->crp_payload_length); if (error) return (error); if (op_type == CHCR_DECRYPT_OP) { - error = sglist_append_sglist(sc->sg_ulptx, sc->sg_crp, + error = sglist_append_sglist(sc->sg_ulptx, sc->sg_input, crp->crp_digest_start, hash_size_in_response); if (error) return (error); @@ -1593,13 +1616,21 @@ ccr_ccm(struct ccr_softc *sc, struct ccr_session *s, s aad_len); if (error) return (error); - error = sglist_append_sglist(sc->sg_dsgl, sc->sg_crp, - crp->crp_payload_start, crp->crp_payload_length); + if (CRYPTO_HAS_OUTPUT_BUFFER(crp)) + error = sglist_append_sglist(sc->sg_dsgl, sc->sg_output, + crp->crp_payload_output_start, crp->crp_payload_length); + else + error = sglist_append_sglist(sc->sg_dsgl, sc->sg_input, + crp->crp_payload_start, crp->crp_payload_length); if (error) return (error); if (op_type == CHCR_ENCRYPT_OP) { - error = sglist_append_sglist(sc->sg_dsgl, sc->sg_crp, - crp->crp_digest_start, hash_size_in_response); + if (CRYPTO_HAS_OUTPUT_BUFFER(crp)) + error = sglist_append_sglist(sc->sg_dsgl, sc->sg_output, + crp->crp_digest_start, hash_size_in_response); + else + error = sglist_append_sglist(sc->sg_dsgl, sc->sg_input, + crp->crp_digest_start, hash_size_in_response); if (error) return (error); } @@ -1641,17 +1672,17 @@ ccr_ccm(struct ccr_softc *sc, struct ccr_session *s, s sglist_reset(sc->sg_ulptx); if (crp->crp_aad_length != 0) { - error = sglist_append_sglist(sc->sg_ulptx, sc->sg_crp, + error = sglist_append_sglist(sc->sg_ulptx, sc->sg_input, crp->crp_aad_start, crp->crp_aad_length); if (error) return (error); } - error = sglist_append_sglist(sc->sg_ulptx, sc->sg_crp, + error = sglist_append_sglist(sc->sg_ulptx, sc->sg_input, crp->crp_payload_start, crp->crp_payload_length); if (error) return (error); if (op_type == CHCR_DECRYPT_OP) { - error = sglist_append_sglist(sc->sg_ulptx, sc->sg_crp, + error = sglist_append_sglist(sc->sg_ulptx, sc->sg_input, crp->crp_digest_start, hash_size_in_response); if (error) return (error); @@ -2080,7 +2111,8 @@ ccr_attach(device_t dev) sc->adapter->ccr_softc = sc; mtx_init(&sc->lock, "ccr", NULL, MTX_DEF); - sc->sg_crp = sglist_alloc(TX_SGL_SEGS, M_WAITOK); + sc->sg_input = sglist_alloc(TX_SGL_SEGS, M_WAITOK); + sc->sg_output = sglist_alloc(TX_SGL_SEGS, M_WAITOK); sc->sg_ulptx = sglist_alloc(TX_SGL_SEGS, M_WAITOK); sc->sg_dsgl = sglist_alloc(MAX_RX_PHYS_DSGL_SGE, M_WAITOK); sc->iv_aad_buf = malloc(MAX_AAD_LEN, M_CCR, M_WAITOK); @@ -2108,7 +2140,8 @@ ccr_detach(device_t dev) free(sc->iv_aad_buf, M_CCR); sglist_free(sc->sg_dsgl); sglist_free(sc->sg_ulptx); - sglist_free(sc->sg_crp); + sglist_free(sc->sg_output); + sglist_free(sc->sg_input); sc->adapter->ccr_softc = NULL; return (0); } @@ -2294,7 +2327,7 @@ ccr_probesession(device_t dev, const struct crypto_ses { unsigned int cipher_mode; - if (csp->csp_flags != 0) + if ((csp->csp_flags & ~(CSP_F_SEPARATE_OUTPUT)) != 0) return (EINVAL); switch (csp->csp_mode) { case CSP_MODE_DIGEST: @@ -2576,7 +2609,9 @@ ccr_process(device_t dev, struct cryptop *crp, int hin sc = device_get_softc(dev); mtx_lock(&sc->lock); - error = ccr_populate_sglist(sc->sg_crp, &crp->crp_buf); + error = ccr_populate_sglist(sc->sg_input, &crp->crp_buf); + if (error == 0 && CRYPTO_HAS_OUTPUT_BUFFER(crp)) + error = ccr_populate_sglist(sc->sg_output, &crp->crp_obuf); if (error) { sc->stats_sglist_error++; goto out; From owner-svn-src-all@freebsd.org Mon May 25 22:30:44 2020 Return-Path: Delivered-To: svn-src-all@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 EC6CB2CD29B; Mon, 25 May 2020 22:30:44 +0000 (UTC) (envelope-from jhb@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49WBd05tMfz3WP5; Mon, 25 May 2020 22:30:44 +0000 (UTC) (envelope-from jhb@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 C51531986E; Mon, 25 May 2020 22:30:44 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04PMUiM3012634; Mon, 25 May 2020 22:30:44 GMT (envelope-from jhb@FreeBSD.org) Received: (from jhb@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04PMUi4x012633; Mon, 25 May 2020 22:30:44 GMT (envelope-from jhb@FreeBSD.org) Message-Id: <202005252230.04PMUi4x012633@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: jhb set sender to jhb@FreeBSD.org using -f From: John Baldwin Date: Mon, 25 May 2020 22:30:44 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361485 - head/sys/crypto/aesni X-SVN-Group: head X-SVN-Commit-Author: jhb X-SVN-Commit-Paths: head/sys/crypto/aesni X-SVN-Commit-Revision: 361485 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2020 22:30:45 -0000 Author: jhb Date: Mon May 25 22:30:44 2020 New Revision: 361485 URL: https://svnweb.freebsd.org/changeset/base/361485 Log: Support separate output buffers for aesni(4). The backend routines aesni(4) call for specific encryption modes all expect virtually contiguous input/output buffers. If the existing output buffer is virtually contiguous, always write to the output buffer directly from the mode-specific routines. If the output buffer is not contiguous, then a temporary buffer is allocated whose output is then copied to the output buffer. If the input buffer is not contiguous, then the existing buffer used to hold the input is also used to hold temporary output. Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D24545 Modified: head/sys/crypto/aesni/aesni.c Modified: head/sys/crypto/aesni/aesni.c ============================================================================== --- head/sys/crypto/aesni/aesni.c Mon May 25 22:23:13 2020 (r361484) +++ head/sys/crypto/aesni/aesni.c Mon May 25 22:30:44 2020 (r361485) @@ -253,7 +253,7 @@ aesni_probesession(device_t dev, const struct crypto_s struct aesni_softc *sc; sc = device_get_softc(dev); - if (csp->csp_flags != 0) + if ((csp->csp_flags & ~(CSP_F_SEPARATE_OUTPUT)) != 0) return (EINVAL); switch (csp->csp_mode) { case CSP_MODE_DIGEST: @@ -677,15 +677,17 @@ static int aesni_cipher_crypt(struct aesni_session *ses, struct cryptop *crp, const struct crypto_session_params *csp) { - uint8_t iv[AES_BLOCK_LEN], tag[GMAC_DIGEST_LEN], *buf, *authbuf; + uint8_t iv[AES_BLOCK_LEN], tag[GMAC_DIGEST_LEN]; + uint8_t *authbuf, *buf, *outbuf; int error; - bool encflag, allocated, authallocated; + bool encflag, allocated, authallocated, outallocated, outcopy; buf = aesni_cipher_alloc(crp, crp->crp_payload_start, crp->crp_payload_length, &allocated); if (buf == NULL) return (ENOMEM); + outallocated = false; authallocated = false; authbuf = NULL; if (csp->csp_cipher_alg == CRYPTO_AES_NIST_GCM_16 || @@ -698,6 +700,29 @@ aesni_cipher_crypt(struct aesni_session *ses, struct c } } + if (CRYPTO_HAS_OUTPUT_BUFFER(crp)) { + outbuf = crypto_buffer_contiguous_subsegment(&crp->crp_obuf, + crp->crp_payload_output_start, crp->crp_payload_length); + if (outbuf == NULL) { + outcopy = true; + if (allocated) + outbuf = buf; + else { + outbuf = malloc(crp->crp_payload_length, + M_AESNI, M_NOWAIT); + if (outbuf == NULL) { + error = ENOMEM; + goto out; + } + outallocated = true; + } + } else + outcopy = false; + } else { + outbuf = buf; + outcopy = allocated; + } + error = 0; encflag = CRYPTO_OP_IS_ENCRYPT(crp->crp_op); if (crp->crp_cipher_key != NULL) @@ -710,30 +735,33 @@ aesni_cipher_crypt(struct aesni_session *ses, struct c case CRYPTO_AES_CBC: if (encflag) aesni_encrypt_cbc(ses->rounds, ses->enc_schedule, - crp->crp_payload_length, buf, buf, iv); - else + crp->crp_payload_length, buf, outbuf, iv); + else { + if (buf != outbuf) + memcpy(outbuf, buf, crp->crp_payload_length); aesni_decrypt_cbc(ses->rounds, ses->dec_schedule, - crp->crp_payload_length, buf, iv); + crp->crp_payload_length, outbuf, iv); + } break; case CRYPTO_AES_ICM: /* encryption & decryption are the same */ aesni_encrypt_icm(ses->rounds, ses->enc_schedule, - crp->crp_payload_length, buf, buf, iv); + crp->crp_payload_length, buf, outbuf, iv); break; case CRYPTO_AES_XTS: if (encflag) aesni_encrypt_xts(ses->rounds, ses->enc_schedule, ses->xts_schedule, crp->crp_payload_length, buf, - buf, iv); + outbuf, iv); else aesni_decrypt_xts(ses->rounds, ses->dec_schedule, ses->xts_schedule, crp->crp_payload_length, buf, - buf, iv); + outbuf, iv); break; case CRYPTO_AES_NIST_GCM_16: if (encflag) { memset(tag, 0, sizeof(tag)); - AES_GCM_encrypt(buf, buf, authbuf, iv, tag, + AES_GCM_encrypt(buf, outbuf, authbuf, iv, tag, crp->crp_payload_length, crp->crp_aad_length, csp->csp_ivlen, ses->enc_schedule, ses->rounds); crypto_copyback(crp, crp->crp_digest_start, sizeof(tag), @@ -741,7 +769,7 @@ aesni_cipher_crypt(struct aesni_session *ses, struct c } else { crypto_copydata(crp, crp->crp_digest_start, sizeof(tag), tag); - if (!AES_GCM_decrypt(buf, buf, authbuf, iv, tag, + if (!AES_GCM_decrypt(buf, outbuf, authbuf, iv, tag, crp->crp_payload_length, crp->crp_aad_length, csp->csp_ivlen, ses->enc_schedule, ses->rounds)) error = EBADMSG; @@ -750,7 +778,7 @@ aesni_cipher_crypt(struct aesni_session *ses, struct c case CRYPTO_AES_CCM_16: if (encflag) { memset(tag, 0, sizeof(tag)); - AES_CCM_encrypt(buf, buf, authbuf, iv, tag, + AES_CCM_encrypt(buf, outbuf, authbuf, iv, tag, crp->crp_payload_length, crp->crp_aad_length, csp->csp_ivlen, ses->enc_schedule, ses->rounds); crypto_copyback(crp, crp->crp_digest_start, sizeof(tag), @@ -758,16 +786,17 @@ aesni_cipher_crypt(struct aesni_session *ses, struct c } else { crypto_copydata(crp, crp->crp_digest_start, sizeof(tag), tag); - if (!AES_CCM_decrypt(buf, buf, authbuf, iv, tag, + if (!AES_CCM_decrypt(buf, outbuf, authbuf, iv, tag, crp->crp_payload_length, crp->crp_aad_length, csp->csp_ivlen, ses->enc_schedule, ses->rounds)) error = EBADMSG; } break; } - if (allocated && error == 0) - crypto_copyback(crp, crp->crp_payload_start, - crp->crp_payload_length, buf); + if (outcopy && error == 0) + crypto_copyback(crp, CRYPTO_HAS_OUTPUT_BUFFER(crp) ? + crp->crp_payload_output_start : crp->crp_payload_start, + crp->crp_payload_length, outbuf); out: if (allocated) { @@ -778,6 +807,10 @@ out: explicit_bzero(authbuf, crp->crp_aad_length); free(authbuf, M_AESNI); } + if (outallocated) { + explicit_bzero(outbuf, crp->crp_payload_length); + free(outbuf, M_AESNI); + } return (error); } @@ -813,10 +846,18 @@ aesni_cipher_mac(struct aesni_session *ses, struct cry crypto_apply(crp, crp->crp_aad_start, crp->crp_aad_length, __DECONST(int (*)(void *, void *, u_int), ses->hash_update), &sctx); - crypto_apply(crp, crp->crp_payload_start, - crp->crp_payload_length, - __DECONST(int (*)(void *, void *, u_int), ses->hash_update), - &sctx); + if (CRYPTO_HAS_OUTPUT_BUFFER(crp) && + CRYPTO_OP_IS_ENCRYPT(crp->crp_op)) + crypto_apply_buf(&crp->crp_obuf, + crp->crp_payload_output_start, + crp->crp_payload_length, + __DECONST(int (*)(void *, void *, u_int), + ses->hash_update), &sctx); + else + crypto_apply(crp, crp->crp_payload_start, + crp->crp_payload_length, + __DECONST(int (*)(void *, void *, u_int), + ses->hash_update), &sctx); ses->hash_finalize(res, &sctx); /* Outer hash: (K ^ OPAD) || inner hash */ @@ -834,10 +875,18 @@ aesni_cipher_mac(struct aesni_session *ses, struct cry crypto_apply(crp, crp->crp_aad_start, crp->crp_aad_length, __DECONST(int (*)(void *, void *, u_int), ses->hash_update), &sctx); - crypto_apply(crp, crp->crp_payload_start, - crp->crp_payload_length, - __DECONST(int (*)(void *, void *, u_int), ses->hash_update), - &sctx); + if (CRYPTO_HAS_OUTPUT_BUFFER(crp) && + CRYPTO_OP_IS_ENCRYPT(crp->crp_op)) + crypto_apply_buf(&crp->crp_obuf, + crp->crp_payload_output_start, + crp->crp_payload_length, + __DECONST(int (*)(void *, void *, u_int), + ses->hash_update), &sctx); + else + crypto_apply(crp, crp->crp_payload_start, + crp->crp_payload_length, + __DECONST(int (*)(void *, void *, u_int), + ses->hash_update), &sctx); ses->hash_finalize(res, &sctx); } From owner-svn-src-all@freebsd.org Mon May 25 22:31:48 2020 Return-Path: Delivered-To: svn-src-all@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 EFD892CCE7E; Mon, 25 May 2020 22:31:48 +0000 (UTC) (envelope-from adrian@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49WBfD6THlz3WYg; Mon, 25 May 2020 22:31:48 +0000 (UTC) (envelope-from adrian@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 BF1DE196F5; Mon, 25 May 2020 22:31:48 +0000 (UTC) (envelope-from adrian@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04PMVmZx013725; Mon, 25 May 2020 22:31:48 GMT (envelope-from adrian@FreeBSD.org) Received: (from adrian@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04PMVkAr013711; Mon, 25 May 2020 22:31:46 GMT (envelope-from adrian@FreeBSD.org) Message-Id: <202005252231.04PMVkAr013711@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: adrian set sender to adrian@FreeBSD.org using -f From: Adrian Chadd Date: Mon, 25 May 2020 22:31:46 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361486 - in head/sys: contrib/dev/ath/ath_hal/ar9300 dev/ath dev/ath/ath_hal/ar5416 dev/ath/ath_hal/ar9001 dev/ath/ath_hal/ar9002 X-SVN-Group: head X-SVN-Commit-Author: adrian X-SVN-Commit-Paths: in head/sys: contrib/dev/ath/ath_hal/ar9300 dev/ath dev/ath/ath_hal/ar5416 dev/ath/ath_hal/ar9001 dev/ath/ath_hal/ar9002 X-SVN-Commit-Revision: 361486 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2020 22:31:49 -0000 Author: adrian Date: Mon May 25 22:31:45 2020 New Revision: 361486 URL: https://svnweb.freebsd.org/changeset/base/361486 Log: [ath] [ath_hal] Propagate the HAL_RESET_TYPE through to the chip reset; set it during ath_reset() Although I added the reset type field to ath_hal_reset() years ago, I never finished adding it both throughout the HALs and in if_ath.c. This will eventually deprecate the ath_hal force_full_reset option because it can be requested at the driver layer. So: * Teach ar5416ChipReset() and ar9300_chip_reset() about the HAL type * Use it in ar5416Reset() and ar9300_reset() when doing a full chip reset * Extend ath_reset() to include the HAL_RESET_TYPE parameter added in the above functions * Use HAL_RESET_NORMAL in most calls to ath_reset() * .. but use HAL_RESET_BBPANIC for the BB panics, and HAL_RESET_FORCE_COLD during fatal, beacon miss and other hardware related hangs. This should be a glorified no-op outside of actual hardware issues. I've tested things with ath_hal force_full_reset set to 1 for years now, so I know that feature and a full reset works (albeit much slower than a warm reset!) and it does unwedge hardware. The eventual aim is to use this for all the places where the driver detects a potential hang as well as if long calibration - ie, noise floor calibration - fails to complete. That's one of the big hardware related things that causes station mode operation to hang without easy recovery. Differential Revision: https://reviews.freebsd.org/D24981 Modified: head/sys/contrib/dev/ath/ath_hal/ar9300/ar9300.h head/sys/contrib/dev/ath/ath_hal/ar9300/ar9300_freebsd.c head/sys/contrib/dev/ath/ath_hal/ar9300/ar9300_reset.c head/sys/dev/ath/ath_hal/ar5416/ar5416.h head/sys/dev/ath/ath_hal/ar5416/ar5416_attach.c head/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c head/sys/dev/ath/ath_hal/ar9001/ar9130_attach.c head/sys/dev/ath/ath_hal/ar9001/ar9160_attach.c head/sys/dev/ath/ath_hal/ar9002/ar9280_attach.c head/sys/dev/ath/ath_hal/ar9002/ar9285_attach.c head/sys/dev/ath/ath_hal/ar9002/ar9287_attach.c head/sys/dev/ath/if_ath.c head/sys/dev/ath/if_ath_misc.h head/sys/dev/ath/if_ath_sysctl.c Modified: head/sys/contrib/dev/ath/ath_hal/ar9300/ar9300.h ============================================================================== --- head/sys/contrib/dev/ath/ath_hal/ar9300/ar9300.h Mon May 25 22:30:44 2020 (r361485) +++ head/sys/contrib/dev/ath/ath_hal/ar9300/ar9300.h Mon May 25 22:31:45 2020 (r361486) @@ -1390,7 +1390,7 @@ extern void ar9300_wowoffload_download_ns_info(struct extern HAL_BOOL ar9300_reset(struct ath_hal *ah, HAL_OPMODE opmode, struct ieee80211_channel *chan, HAL_HT_MACMODE macmode, u_int8_t txchainmask, u_int8_t rxchainmask, HAL_HT_EXTPROTSPACING extprotspacing, - HAL_BOOL b_channel_change, HAL_STATUS *status, int is_scan); + HAL_BOOL b_channel_change, HAL_STATUS *status, HAL_RESET_TYPE reset_type, int is_scan); extern HAL_BOOL ar9300_lean_channel_change(struct ath_hal *ah, HAL_OPMODE opmode, struct ieee80211_channel *chan, HAL_HT_MACMODE macmode, u_int8_t txchainmask, u_int8_t rxchainmask); extern HAL_BOOL ar9300_set_reset_reg(struct ath_hal *ah, u_int32_t type); @@ -1400,7 +1400,7 @@ extern u_int16_t ar9300_is_single_ant_power_save_poss extern void ar9300_set_operating_mode(struct ath_hal *ah, int opmode); extern HAL_BOOL ar9300_phy_disable(struct ath_hal *ah); extern HAL_BOOL ar9300_disable(struct ath_hal *ah); -extern HAL_BOOL ar9300_chip_reset(struct ath_hal *ah, struct ieee80211_channel *); +extern HAL_BOOL ar9300_chip_reset(struct ath_hal *ah, struct ieee80211_channel *, HAL_RESET_TYPE type); extern HAL_BOOL ar9300_calibration(struct ath_hal *ah, struct ieee80211_channel *chan, u_int8_t rxchainmask, HAL_BOOL longcal, HAL_BOOL *isIQdone, int is_scan, u_int32_t *sched_cals); extern void ar9300_reset_cal_valid(struct ath_hal *ah, Modified: head/sys/contrib/dev/ath/ath_hal/ar9300/ar9300_freebsd.c ============================================================================== --- head/sys/contrib/dev/ath/ath_hal/ar9300/ar9300_freebsd.c Mon May 25 22:30:44 2020 (r361485) +++ head/sys/contrib/dev/ath/ath_hal/ar9300/ar9300_freebsd.c Mon May 25 22:31:45 2020 (r361486) @@ -543,6 +543,7 @@ ar9300_reset_freebsd(struct ath_hal *ah, HAL_OPMODE op HAL_HT_EXTPROTSPACING_20, /* always 20Mhz channel spacing */ bChannelChange, status, + resetType, AH_FALSE); /* XXX should really extend ath_hal_reset() */ return (r); Modified: head/sys/contrib/dev/ath/ath_hal/ar9300/ar9300_reset.c ============================================================================== --- head/sys/contrib/dev/ath/ath_hal/ar9300/ar9300_reset.c Mon May 25 22:30:44 2020 (r361485) +++ head/sys/contrib/dev/ath/ath_hal/ar9300/ar9300_reset.c Mon May 25 22:31:45 2020 (r361486) @@ -2064,7 +2064,7 @@ ar9300_set_rf_mode(struct ath_hal *ah, struct ieee8021 * Places the hardware into reset and then pulls it out of reset */ HAL_BOOL -ar9300_chip_reset(struct ath_hal *ah, struct ieee80211_channel *chan) +ar9300_chip_reset(struct ath_hal *ah, struct ieee80211_channel *chan, HAL_RESET_TYPE reset_type) { struct ath_hal_9300 *ahp = AH9300(ah); int type = HAL_RESET_WARM; @@ -2080,8 +2080,13 @@ ar9300_chip_reset(struct ath_hal *ah, struct ieee80211 */ if (ahp->ah_chip_full_sleep || (ah->ah_config.ah_force_full_reset == 1) || + (reset_type == HAL_RESET_FORCE_COLD) || + (reset_type == HAL_RESET_BBPANIC) || OS_REG_READ(ah, AR_Q_TXE) || (OS_REG_READ(ah, AR_CR) & AR_CR_RXE)) { + HALDEBUG(ah, HAL_DEBUG_RESET, + "%s: full reset; reset_type=%d, full_sleep=%d\n", + __func__, reset_type, ahp->ah_chip_full_sleep); type = HAL_RESET_COLD; } @@ -4510,7 +4515,7 @@ HAL_BOOL ar9300_reset(struct ath_hal *ah, HAL_OPMODE opmode, struct ieee80211_channel *chan, HAL_HT_MACMODE macmode, u_int8_t txchainmask, u_int8_t rxchainmask, HAL_HT_EXTPROTSPACING extprotspacing, HAL_BOOL b_channel_change, - HAL_STATUS *status, int is_scan) + HAL_STATUS *status, HAL_RESET_TYPE reset_type, int is_scan) { #define FAIL(_code) do { ecode = _code; goto bad; } while (0) u_int32_t save_led_state; @@ -4864,7 +4869,7 @@ ar9300_reset(struct ath_hal *ah, HAL_OPMODE opmode, st /* Mark PHY inactive prior to reset, to be undone in ar9300_init_bb () */ ar9300_mark_phy_inactive(ah); - if (!ar9300_chip_reset(ah, chan)) { + if (!ar9300_chip_reset(ah, chan, reset_type)) { HALDEBUG(ah, HAL_DEBUG_RESET, "%s: chip reset failed\n", __func__); FAIL(HAL_EIO); } Modified: head/sys/dev/ath/ath_hal/ar5416/ar5416.h ============================================================================== --- head/sys/dev/ath/ath_hal/ar5416/ar5416.h Mon May 25 22:30:44 2020 (r361485) +++ head/sys/dev/ath/ath_hal/ar5416/ar5416.h Mon May 25 22:31:45 2020 (r361486) @@ -306,7 +306,8 @@ extern HAL_BOOL ar5416PhyDisable(struct ath_hal *ah); extern HAL_RFGAIN ar5416GetRfgain(struct ath_hal *ah); extern HAL_BOOL ar5416Disable(struct ath_hal *ah); extern HAL_BOOL ar5416ChipReset(struct ath_hal *ah, - const struct ieee80211_channel *); + const struct ieee80211_channel *, + HAL_RESET_TYPE); extern int ar5416GetRegChainOffset(struct ath_hal *ah, int i); extern HAL_BOOL ar5416SetBoardValues(struct ath_hal *, const struct ieee80211_channel *); Modified: head/sys/dev/ath/ath_hal/ar5416/ar5416_attach.c ============================================================================== --- head/sys/dev/ath/ath_hal/ar5416/ar5416_attach.c Mon May 25 22:30:44 2020 (r361485) +++ head/sys/dev/ath/ath_hal/ar5416/ar5416_attach.c Mon May 25 22:31:45 2020 (r361486) @@ -376,7 +376,7 @@ ar5416Attach(uint16_t devid, HAL_SOFTC sc, if (ecode != HAL_OK) goto bad; - if (!ar5416ChipReset(ah, AH_NULL)) { /* reset chip */ + if (!ar5416ChipReset(ah, AH_NULL, HAL_RESET_NORMAL)) { /* reset chip */ HALDEBUG(ah, HAL_DEBUG_ANY, "%s: chip reset failed\n", __func__); ecode = HAL_EIO; Modified: head/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c ============================================================================== --- head/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c Mon May 25 22:30:44 2020 (r361485) +++ head/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c Mon May 25 22:31:45 2020 (r361486) @@ -170,13 +170,15 @@ ar5416Reset(struct ath_hal *ah, HAL_OPMODE opmode, if (AR_SREV_HOWL(ah) || (AR_SREV_MERLIN(ah) && ath_hal_eepromGetFlag(ah, AR_EEP_OL_PWRCTRL)) || + (resetType == HAL_RESET_FORCE_COLD) || + (resetType == HAL_RESET_BBPANIC) || (ah->ah_config.ah_force_full_reset)) tsf = ar5416GetTsf64(ah); /* Mark PHY as inactive; marked active in ar5416InitBB() */ ar5416MarkPhyInactive(ah); - if (!ar5416ChipReset(ah, chan)) { + if (!ar5416ChipReset(ah, chan, resetType)) { HALDEBUG(ah, HAL_DEBUG_ANY, "%s: chip reset failed\n", __func__); FAIL(HAL_EIO); } @@ -775,7 +777,8 @@ ar5416SetRfMode(struct ath_hal *ah, const struct ieee8 * Places the hardware into reset and then pulls it out of reset */ HAL_BOOL -ar5416ChipReset(struct ath_hal *ah, const struct ieee80211_channel *chan) +ar5416ChipReset(struct ath_hal *ah, const struct ieee80211_channel *chan, + HAL_RESET_TYPE resetType) { OS_MARK(ah, AH_MARK_CHIPRESET, chan ? chan->ic_freq : 0); /* @@ -786,6 +789,13 @@ ar5416ChipReset(struct ath_hal *ah, const struct ieee8 if (!ar5416SetResetReg(ah, HAL_RESET_POWER_ON)) return AH_FALSE; } else if (ah->ah_config.ah_force_full_reset) { + if (!ar5416SetResetReg(ah, HAL_RESET_POWER_ON)) + return AH_FALSE; + } else if ((resetType == HAL_RESET_FORCE_COLD) || + (resetType == HAL_RESET_BBPANIC)) { + HALDEBUG(ah, HAL_DEBUG_RESET, + "%s: full reset; resetType=%d\n", + __func__, resetType); if (!ar5416SetResetReg(ah, HAL_RESET_POWER_ON)) return AH_FALSE; } else { Modified: head/sys/dev/ath/ath_hal/ar9001/ar9130_attach.c ============================================================================== --- head/sys/dev/ath/ath_hal/ar9001/ar9130_attach.c Mon May 25 22:30:44 2020 (r361485) +++ head/sys/dev/ath/ath_hal/ar9001/ar9130_attach.c Mon May 25 22:31:45 2020 (r361486) @@ -173,7 +173,7 @@ ar9130Attach(uint16_t devid, HAL_SOFTC sc, if (ecode != HAL_OK) goto bad; - if (!ar5416ChipReset(ah, AH_NULL)) { /* reset chip */ + if (!ar5416ChipReset(ah, AH_NULL, HAL_RESET_NORMAL)) { /* reset chip */ HALDEBUG(ah, HAL_DEBUG_ANY, "%s: chip reset failed\n", __func__); ecode = HAL_EIO; goto bad; Modified: head/sys/dev/ath/ath_hal/ar9001/ar9160_attach.c ============================================================================== --- head/sys/dev/ath/ath_hal/ar9001/ar9160_attach.c Mon May 25 22:30:44 2020 (r361485) +++ head/sys/dev/ath/ath_hal/ar9001/ar9160_attach.c Mon May 25 22:31:45 2020 (r361486) @@ -200,7 +200,7 @@ ar9160Attach(uint16_t devid, HAL_SOFTC sc, HAL_INI_INIT(&AH5416(ah)->ah_ini_pcieserdes, ar9160PciePhy, 2); ar5416AttachPCIE(ah); - if (!ar5416ChipReset(ah, AH_NULL)) { /* reset chip */ + if (!ar5416ChipReset(ah, AH_NULL, HAL_RESET_NORMAL)) { /* reset chip */ HALDEBUG(ah, HAL_DEBUG_ANY, "%s: chip reset failed\n", __func__); ecode = HAL_EIO; goto bad; Modified: head/sys/dev/ath/ath_hal/ar9002/ar9280_attach.c ============================================================================== --- head/sys/dev/ath/ath_hal/ar9002/ar9280_attach.c Mon May 25 22:30:44 2020 (r361485) +++ head/sys/dev/ath/ath_hal/ar9002/ar9280_attach.c Mon May 25 22:31:45 2020 (r361486) @@ -259,7 +259,7 @@ ar9280Attach(uint16_t devid, HAL_SOFTC sc, if (ecode != HAL_OK) goto bad; - if (!ar5416ChipReset(ah, AH_NULL)) { /* reset chip */ + if (!ar5416ChipReset(ah, AH_NULL, HAL_RESET_NORMAL)) { /* reset chip */ HALDEBUG(ah, HAL_DEBUG_ANY, "%s: chip reset failed\n", __func__); ecode = HAL_EIO; goto bad; Modified: head/sys/dev/ath/ath_hal/ar9002/ar9285_attach.c ============================================================================== --- head/sys/dev/ath/ath_hal/ar9002/ar9285_attach.c Mon May 25 22:30:44 2020 (r361485) +++ head/sys/dev/ath/ath_hal/ar9002/ar9285_attach.c Mon May 25 22:31:45 2020 (r361486) @@ -249,7 +249,7 @@ ar9285Attach(uint16_t devid, HAL_SOFTC sc, if (ecode != HAL_OK) goto bad; - if (!ar5416ChipReset(ah, AH_NULL)) { /* reset chip */ + if (!ar5416ChipReset(ah, AH_NULL, HAL_RESET_NORMAL)) { /* reset chip */ HALDEBUG(ah, HAL_DEBUG_ANY, "%s: chip reset failed\n", __func__); ecode = HAL_EIO; Modified: head/sys/dev/ath/ath_hal/ar9002/ar9287_attach.c ============================================================================== --- head/sys/dev/ath/ath_hal/ar9002/ar9287_attach.c Mon May 25 22:30:44 2020 (r361485) +++ head/sys/dev/ath/ath_hal/ar9002/ar9287_attach.c Mon May 25 22:31:45 2020 (r361486) @@ -242,7 +242,7 @@ ar9287Attach(uint16_t devid, HAL_SOFTC sc, if (ecode != HAL_OK) goto bad; - if (!ar5416ChipReset(ah, AH_NULL)) { /* reset chip */ + if (!ar5416ChipReset(ah, AH_NULL, HAL_RESET_NORMAL)) { /* reset chip */ HALDEBUG(ah, HAL_DEBUG_ANY, "%s: chip reset failed\n", __func__); ecode = HAL_EIO; goto bad; Modified: head/sys/dev/ath/if_ath.c ============================================================================== --- head/sys/dev/ath/if_ath.c Mon May 25 22:30:44 2020 (r361485) +++ head/sys/dev/ath/if_ath.c Mon May 25 22:31:45 2020 (r361486) @@ -2380,7 +2380,7 @@ ath_fatal_proc(void *arg, int pending) "0x%08x 0x%08x 0x%08x, 0x%08x 0x%08x 0x%08x\n", state[0], state[1] , state[2], state[3], state[4], state[5]); } - ath_reset(sc, ATH_RESET_NOLOSS); + ath_reset(sc, ATH_RESET_NOLOSS, HAL_RESET_FORCE_COLD); } static void @@ -2491,11 +2491,11 @@ ath_bmiss_proc(void *arg, int pending) * to clear. */ if (ath_hal_gethangstate(sc->sc_ah, 0xff, &hangs) && hangs != 0) { - ath_reset(sc, ATH_RESET_NOLOSS); + ath_reset(sc, ATH_RESET_NOLOSS, HAL_RESET_BBPANIC); device_printf(sc->sc_dev, "bb hang detected (0x%x), resetting\n", hangs); } else { - ath_reset(sc, ATH_RESET_NOLOSS); + ath_reset(sc, ATH_RESET_NOLOSS, HAL_RESET_FORCE_COLD); ieee80211_beacon_miss(&sc->sc_ic); } @@ -2894,7 +2894,8 @@ ath_reset_grablock(struct ath_softc *sc, int dowait) * to reset or reload hardware state. */ int -ath_reset(struct ath_softc *sc, ATH_RESET_TYPE reset_type) +ath_reset(struct ath_softc *sc, ATH_RESET_TYPE reset_type, + HAL_RESET_TYPE ah_reset_type) { struct ieee80211com *ic = &sc->sc_ic; struct ath_hal *ah = sc->sc_ah; @@ -2962,7 +2963,7 @@ ath_reset(struct ath_softc *sc, ATH_RESET_TYPE reset_t ath_hal_setchainmasks(sc->sc_ah, sc->sc_cur_txchainmask, sc->sc_cur_rxchainmask); if (!ath_hal_reset(ah, sc->sc_opmode, ic->ic_curchan, AH_TRUE, - HAL_RESET_NORMAL, &status)) + ah_reset_type, &status)) device_printf(sc->sc_dev, "%s: unable to reset hardware; hal status %u\n", __func__, status); @@ -3098,7 +3099,7 @@ ath_reset_vap(struct ieee80211vap *vap, u_long cmd) return 0; } /* XXX? Full or NOLOSS? */ - return ath_reset(sc, ATH_RESET_FULL); + return ath_reset(sc, ATH_RESET_FULL, HAL_RESET_NORMAL); } struct ath_buf * @@ -3778,7 +3779,7 @@ ath_reset_proc(void *arg, int pending) #if 0 device_printf(sc->sc_dev, "%s: resetting\n", __func__); #endif - ath_reset(sc, ATH_RESET_NOLOSS); + ath_reset(sc, ATH_RESET_NOLOSS, HAL_RESET_FORCE_COLD); } /* @@ -3805,7 +3806,7 @@ ath_bstuck_proc(void *arg, int pending) * This assumes that there's no simultaneous channel mode change * occurring. */ - ath_reset(sc, ATH_RESET_NOLOSS); + ath_reset(sc, ATH_RESET_NOLOSS, HAL_RESET_FORCE_COLD); } static int @@ -5460,6 +5461,10 @@ ath_calibrate(void *arg) * infinite NIC restart. Ideally we'd not restart if we * failed the first NF cal - that /can/ fail sometimes in * a noisy environment. + * + * Instead, we should likely temporarily shorten the longCal + * period to happen pretty quickly and if a subsequent one + * fails, do a full reset. */ if (shortCal) sc->sc_lastshortcal = ticks; Modified: head/sys/dev/ath/if_ath_misc.h ============================================================================== --- head/sys/dev/ath/if_ath_misc.h Mon May 25 22:30:44 2020 (r361485) +++ head/sys/dev/ath/if_ath_misc.h Mon May 25 22:31:45 2020 (r361486) @@ -58,7 +58,8 @@ extern void ath_freebuf(struct ath_softc *sc, struct a extern void ath_returnbuf_head(struct ath_softc *sc, struct ath_buf *bf); extern void ath_returnbuf_tail(struct ath_softc *sc, struct ath_buf *bf); -extern int ath_reset(struct ath_softc *, ATH_RESET_TYPE); +extern int ath_reset(struct ath_softc *, ATH_RESET_TYPE, + HAL_RESET_TYPE ah_reset_type); extern void ath_tx_default_comp(struct ath_softc *sc, struct ath_buf *bf, int fail); extern void ath_tx_update_ratectrl(struct ath_softc *sc, Modified: head/sys/dev/ath/if_ath_sysctl.c ============================================================================== --- head/sys/dev/ath/if_ath_sysctl.c Mon May 25 22:30:44 2020 (r361485) +++ head/sys/dev/ath/if_ath_sysctl.c Mon May 25 22:31:45 2020 (r361486) @@ -382,7 +382,8 @@ ath_sysctl_tpscale(SYSCTL_HANDLER_ARGS) goto finish; error = !ath_hal_settpscale(sc->sc_ah, scale) ? EINVAL : - (sc->sc_running) ? ath_reset(sc, ATH_RESET_NOLOSS) : 0; + (sc->sc_running) ? ath_reset(sc, ATH_RESET_NOLOSS, + HAL_RESET_NORMAL) : 0; finish: ATH_LOCK(sc); @@ -443,7 +444,8 @@ ath_sysctl_rfkill(SYSCTL_HANDLER_ARGS) error = EINVAL; goto finish; } - error = sc->sc_running ? ath_reset(sc, ATH_RESET_FULL) : 0; + error = sc->sc_running ? ath_reset(sc, ATH_RESET_FULL, + HAL_RESET_NORMAL) : 0; finish: ATH_LOCK(sc); @@ -670,7 +672,7 @@ ath_sysctl_intmit(SYSCTL_HANDLER_ARGS) * things in an inconsistent state. */ if (sc->sc_running) - ath_reset(sc, ATH_RESET_NOLOSS); + ath_reset(sc, ATH_RESET_NOLOSS, HAL_RESET_NORMAL); error = 0; From owner-svn-src-all@freebsd.org Mon May 25 23:04:18 2020 Return-Path: Delivered-To: svn-src-all@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 9FD6B2CE20E; Mon, 25 May 2020 23:04:18 +0000 (UTC) (envelope-from jhb@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49WCMk48kDz3YhL; Mon, 25 May 2020 23:04:18 +0000 (UTC) (envelope-from jhb@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 8842219D34; Mon, 25 May 2020 23:04:18 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04PN4I3i035412; Mon, 25 May 2020 23:04:18 GMT (envelope-from jhb@FreeBSD.org) Received: (from jhb@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04PN4IXi035411; Mon, 25 May 2020 23:04:18 GMT (envelope-from jhb@FreeBSD.org) Message-Id: <202005252304.04PN4IXi035411@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: jhb set sender to jhb@FreeBSD.org using -f From: John Baldwin Date: Mon, 25 May 2020 23:04:18 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361487 - head/tools/tools/crypto X-SVN-Group: head X-SVN-Commit-Author: jhb X-SVN-Commit-Paths: head/tools/tools/crypto X-SVN-Commit-Revision: 361487 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2020 23:04:18 -0000 Author: jhb Date: Mon May 25 23:04:18 2020 New Revision: 361487 URL: https://svnweb.freebsd.org/changeset/base/361487 Log: Expand coverage of different buffer sizes. - When -z is used, include small buffers from 1 to 32 bytes to test stream ciphers. Note that while AES-XTS claims to support a block size of 1 in OpenSSL, it does require a minimum of 1 block of cipher text as it is not a stream cipher but depends on CTS to pad out the final partial block. - Permit multiple AAD sizes to be set via multiple -A options, or via -z. When -z is set, use small buffers from 0 to 32 bytes followed by powers of 2 up to 256. When multiple sizes are specified, the ETA and AEAD algorithms perform the full matrix of AAD sizes by payload sizes. - Only warn on unchanged ciphertext instead of erroring. The currently generated plaintext and key for a couple of AES-CTR tests with a buffer size of 1 results in ciphertext that matches the plaintext. Reviewed by: cem Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D25006 Modified: head/tools/tools/crypto/cryptocheck.c Modified: head/tools/tools/crypto/cryptocheck.c ============================================================================== --- head/tools/tools/crypto/cryptocheck.c Mon May 25 22:31:45 2020 (r361486) +++ head/tools/tools/crypto/cryptocheck.c Mon May 25 23:04:18 2020 (r361487) @@ -216,7 +216,8 @@ const struct alg { static bool verbose; static int crid; -static size_t aad_len; +static size_t aad_sizes[48], sizes[128]; +static u_int naad_sizes, nsizes; static void usage(void) @@ -754,6 +755,20 @@ run_cipher_test(const struct alg *alg, size_t size) return; } + /* + * XTS requires at least one full block so that any partial + * block at the end has cipher text to steal. Hardcoding the + * AES block size isn't ideal, but OpenSSL doesn't have a + * notion of a "native" block size. + */ + if (EVP_CIPHER_mode(cipher) == EVP_CIPH_XTS_MODE && + size < AES_BLOCK_LEN) { + if (verbose) + printf("%s (%zu): invalid buffer size\n", alg->name, + size); + return; + } + key_len = EVP_CIPHER_key_length(cipher); iv_len = EVP_CIPHER_iv_length(cipher); @@ -766,7 +781,7 @@ run_cipher_test(const struct alg *alg, size_t size) /* OpenSSL cipher. */ openssl_cipher(alg, cipher, key, iv, cleartext, ciphertext, size, 1); if (size > 0 && memcmp(cleartext, ciphertext, size) == 0) - errx(1, "OpenSSL %s (%zu): cipher text unchanged", alg->name, + warnx("OpenSSL %s (%zu): cipher text unchanged", alg->name, size); openssl_cipher(alg, cipher, key, iv, ciphertext, buffer, size, 0); if (memcmp(cleartext, buffer, size) != 0) { @@ -877,7 +892,7 @@ ocf_eta(const struct ocf_session *ses, const struct al } static void -run_eta_test(const struct alg *alg, size_t size) +run_eta_test(const struct alg *alg, size_t aad_len, size_t size) { struct ocf_session ses; const EVP_CIPHER *cipher; @@ -892,11 +907,21 @@ run_eta_test(const struct alg *alg, size_t size) if (size % EVP_CIPHER_block_size(cipher) != 0) { if (verbose) printf( - "%s (%zu): invalid buffer size (block size %d)\n", - alg->name, size, EVP_CIPHER_block_size(cipher)); + "%s (%zu, %zu): invalid buffer size (block size %d)\n", + alg->name, aad_len, size, + EVP_CIPHER_block_size(cipher)); return; } + /* See comment in run_cipher_test. */ + if (EVP_CIPHER_mode(cipher) == EVP_CIPH_XTS_MODE && + size < AES_BLOCK_LEN) { + if (verbose) + printf("%s (%zu): invalid buffer size\n", alg->name, + size); + return; + } + memset(control_digest, 0x3c, sizeof(control_digest)); memset(test_digest, 0x3c, sizeof(test_digest)); @@ -920,13 +945,13 @@ run_eta_test(const struct alg *alg, size_t size) ciphertext + aad_len, size, 1); if (size > 0 && memcmp(cleartext + aad_len, ciphertext + aad_len, size) == 0) - errx(1, "OpenSSL %s (%zu): cipher text unchanged", alg->name, - size); + warnx("OpenSSL %s (%zu, %zu): cipher text unchanged", + alg->name, aad_len, size); digest_len = sizeof(control_digest); if (HMAC(md, auth_key, auth_key_len, (u_char *)ciphertext, aad_len + size, (u_char *)control_digest, &digest_len) == NULL) - errx(1, "OpenSSL %s (%zu) HMAC failed: %s", alg->name, - size, ERR_error_string(ERR_get_error(), NULL)); + errx(1, "OpenSSL %s (%zu, %zu) HMAC failed: %s", alg->name, + aad_len, size, ERR_error_string(ERR_get_error(), NULL)); if (!ocf_init_eta_session(alg, cipher_key, cipher_key_len, auth_key, auth_key_len, &ses)) @@ -937,12 +962,13 @@ run_eta_test(const struct alg *alg, size_t size) aad_len != 0 ? cleartext : NULL, aad_len, cleartext + aad_len, buffer + aad_len, size, test_digest, COP_ENCRYPT); if (error != 0) { - warnc(error, "cryptodev %s (%zu) ETA failed for device %s", - alg->name, size, crfind(ses.crid)); + warnc(error, "cryptodev %s (%zu, %zu) ETA failed for device %s", + alg->name, aad_len, size, crfind(ses.crid)); goto out; } if (memcmp(ciphertext + aad_len, buffer + aad_len, size) != 0) { - printf("%s (%zu) encryption mismatch:\n", alg->name, size); + printf("%s (%zu, %zu) encryption mismatch:\n", alg->name, + aad_len, size); printf("control:\n"); hexdump(ciphertext + aad_len, size, NULL, 0); printf("test (cryptodev device %s):\n", crfind(ses.crid)); @@ -951,11 +977,11 @@ run_eta_test(const struct alg *alg, size_t size) } if (memcmp(control_digest, test_digest, sizeof(control_digest)) != 0) { if (memcmp(control_digest, test_digest, EVP_MD_size(md)) == 0) - printf("%s (%zu) enc hash mismatch in trailer:\n", - alg->name, size); + printf("%s (%zu, %zu) enc hash mismatch in trailer:\n", + alg->name, aad_len, size); else - printf("%s (%zu) enc hash mismatch:\n", alg->name, - size); + printf("%s (%zu, %zu) enc hash mismatch:\n", alg->name, + aad_len, size); printf("control:\n"); hexdump(control_digest, sizeof(control_digest), NULL, 0); printf("test (cryptodev device %s):\n", crfind(ses.crid)); @@ -968,12 +994,13 @@ run_eta_test(const struct alg *alg, size_t size) aad_len != 0 ? ciphertext : NULL, aad_len, ciphertext + aad_len, buffer + aad_len, size, test_digest, COP_DECRYPT); if (error != 0) { - warnc(error, "cryptodev %s (%zu) ETA failed for device %s", - alg->name, size, crfind(ses.crid)); + warnc(error, "cryptodev %s (%zu, %zu) ETA failed for device %s", + alg->name, aad_len, size, crfind(ses.crid)); goto out; } if (memcmp(cleartext + aad_len, buffer + aad_len, size) != 0) { - printf("%s (%zu) decryption mismatch:\n", alg->name, size); + printf("%s (%zu, %zu) decryption mismatch:\n", alg->name, + aad_len, size); printf("control:\n"); hexdump(cleartext, size, NULL, 0); printf("test (cryptodev device %s):\n", crfind(ses.crid)); @@ -989,18 +1016,18 @@ run_eta_test(const struct alg *alg, size_t size) if (error != EBADMSG) { if (error != 0) warnc(error, - "cryptodev %s (%zu) corrupt tag failed for device %s", - alg->name, size, crfind(ses.crid)); + "cryptodev %s (%zu, %zu) corrupt tag failed for device %s", + alg->name, aad_len, size, crfind(ses.crid)); else warnx( - "cryptodev %s (%zu) corrupt tag didn't fail for device %s", - alg->name, size, crfind(ses.crid)); + "cryptodev %s (%zu, %zu) corrupt tag didn't fail for device %s", + alg->name, aad_len, size, crfind(ses.crid)); goto out; } if (verbose) - printf("%s (%zu) matched (cryptodev device %s)\n", - alg->name, size, crfind(ses.crid)); + printf("%s (%zu, %zu) matched (cryptodev device %s)\n", + alg->name, aad_len, size, crfind(ses.crid)); out: ocf_destroy_session(&ses); @@ -1303,7 +1330,7 @@ ocf_aead(const struct ocf_session *ses, const struct a #define AEAD_MAX_TAG_LEN MAX(AES_GMAC_HASH_LEN, AES_CBC_MAC_HASH_LEN) static void -run_aead_test(const struct alg *alg, size_t size) +run_aead_test(const struct alg *alg, size_t aad_len, size_t size) { struct ocf_session ses; const EVP_CIPHER *cipher; @@ -1317,8 +1344,9 @@ run_aead_test(const struct alg *alg, size_t size) if (size % EVP_CIPHER_block_size(cipher) != 0) { if (verbose) printf( - "%s (%zu): invalid buffer size (block size %d)\n", - alg->name, size, EVP_CIPHER_block_size(cipher)); + "%s (%zu, %zu): invalid buffer size (block size %d)\n", + alg->name, aad_len, size, + EVP_CIPHER_block_size(cipher)); return; } @@ -1366,12 +1394,13 @@ run_aead_test(const struct alg *alg, size_t size) error = ocf_aead(&ses, alg, iv, iv_len, aad, aad_len, cleartext, buffer, size, test_tag, COP_ENCRYPT); if (error != 0) { - warnc(error, "cryptodev %s (%zu) failed for device %s", - alg->name, size, crfind(ses.crid)); + warnc(error, "cryptodev %s (%zu, %zu) failed for device %s", + alg->name, aad_len, size, crfind(ses.crid)); goto out; } if (memcmp(ciphertext, buffer, size) != 0) { - printf("%s (%zu) encryption mismatch:\n", alg->name, size); + printf("%s (%zu, %zu) encryption mismatch:\n", alg->name, + aad_len, size); printf("control:\n"); hexdump(ciphertext, size, NULL, 0); printf("test (cryptodev device %s):\n", crfind(crid)); @@ -1379,7 +1408,8 @@ run_aead_test(const struct alg *alg, size_t size) goto out; } if (memcmp(control_tag, test_tag, sizeof(control_tag)) != 0) { - printf("%s (%zu) enc tag mismatch:\n", alg->name, size); + printf("%s (%zu, %zu) enc tag mismatch:\n", alg->name, aad_len, + size); printf("control:\n"); hexdump(control_tag, sizeof(control_tag), NULL, 0); printf("test (cryptodev device %s):\n", crfind(crid)); @@ -1391,12 +1421,13 @@ run_aead_test(const struct alg *alg, size_t size) error = ocf_aead(&ses, alg, iv, iv_len, aad, aad_len, ciphertext, buffer, size, control_tag, COP_DECRYPT); if (error != 0) { - warnc(error, "cryptodev %s (%zu) failed for device %s", - alg->name, size, crfind(ses.crid)); + warnc(error, "cryptodev %s (%zu, %zu) failed for device %s", + alg->name, aad_len, size, crfind(ses.crid)); goto out; } if (memcmp(cleartext, buffer, size) != 0) { - printf("%s (%zu) decryption mismatch:\n", alg->name, size); + printf("%s (%zu, %zu) decryption mismatch:\n", alg->name, + aad_len, size); printf("control:\n"); hexdump(cleartext, size, NULL, 0); printf("test (cryptodev device %s):\n", crfind(crid)); @@ -1411,18 +1442,18 @@ run_aead_test(const struct alg *alg, size_t size) if (error != EBADMSG) { if (error != 0) warnc(error, - "cryptodev %s (%zu) corrupt tag failed for device %s", - alg->name, size, crfind(ses.crid)); + "cryptodev %s (%zu, %zu) corrupt tag failed for device %s", + alg->name, aad_len, size, crfind(ses.crid)); else warnx( - "cryptodev %s (%zu) corrupt tag didn't fail for device %s", - alg->name, size, crfind(ses.crid)); + "cryptodev %s (%zu, %zu) corrupt tag didn't fail for device %s", + alg->name, aad_len, size, crfind(ses.crid)); goto out; } if (verbose) - printf("%s (%zu) matched (cryptodev device %s)\n", - alg->name, size, crfind(ses.crid)); + printf("%s (%zu, %zu) matched (cryptodev device %s)\n", + alg->name, aad_len, size, crfind(ses.crid)); out: ocf_destroy_session(&ses); @@ -1435,7 +1466,7 @@ out: } static void -run_test(const struct alg *alg, size_t size) +run_test(const struct alg *alg, size_t aad_len, size_t size) { switch (alg->type) { @@ -1452,55 +1483,65 @@ run_test(const struct alg *alg, size_t size) run_cipher_test(alg, size); break; case T_ETA: - run_eta_test(alg, size); + run_eta_test(alg, aad_len, size); break; case T_AEAD: - run_aead_test(alg, size); + run_aead_test(alg, aad_len, size); break; } } static void -run_test_sizes(const struct alg *alg, size_t *sizes, u_int nsizes) +run_test_sizes(const struct alg *alg) { - u_int i; + u_int i, j; - for (i = 0; i < nsizes; i++) - run_test(alg, sizes[i]); + switch (alg->type) { + default: + for (i = 0; i < nsizes; i++) + run_test(alg, 0, sizes[i]); + break; + case T_ETA: + case T_AEAD: + for (i = 0; i < naad_sizes; i++) + for (j = 0; j < nsizes; j++) + run_test(alg, aad_sizes[i], sizes[j]); + break; + } } static void -run_hash_tests(size_t *sizes, u_int nsizes) +run_hash_tests(void) { u_int i; for (i = 0; i < nitems(algs); i++) if (algs[i].type == T_HASH) - run_test_sizes(&algs[i], sizes, nsizes); + run_test_sizes(&algs[i]); } static void -run_mac_tests(size_t *sizes, u_int nsizes) +run_mac_tests(void) { u_int i; for (i = 0; i < nitems(algs); i++) if (algs[i].type == T_HMAC || algs[i].type == T_GMAC) - run_test_sizes(&algs[i], sizes, nsizes); + run_test_sizes(&algs[i]); } static void -run_cipher_tests(size_t *sizes, u_int nsizes) +run_cipher_tests(void) { u_int i; for (i = 0; i < nitems(algs); i++) if (algs[i].type == T_CIPHER) - run_test_sizes(&algs[i], sizes, nsizes); + run_test_sizes(&algs[i]); } static void -run_eta_tests(size_t *sizes, u_int nsizes) +run_eta_tests(void) { const struct alg *cipher, *mac; struct alg *eta; @@ -1515,20 +1556,20 @@ run_eta_tests(size_t *sizes, u_int nsizes) if (mac->type != T_HMAC) continue; eta = build_eta(cipher, mac); - run_test_sizes(eta, sizes, nsizes); + run_test_sizes(eta); free_eta(eta); } } } static void -run_aead_tests(size_t *sizes, u_int nsizes) +run_aead_tests(void) { u_int i; for (i = 0; i < nitems(algs); i++) if (algs[i].type == T_AEAD) - run_test_sizes(&algs[i], sizes, nsizes); + run_test_sizes(&algs[i]); } int @@ -1537,8 +1578,9 @@ main(int ac, char **av) const char *algname; const struct alg *alg; struct alg *eta; - size_t sizes[128]; - u_int i, nsizes; + char *cp; + size_t base_size; + u_int i; bool testall; int ch; @@ -1549,7 +1591,14 @@ main(int ac, char **av) while ((ch = getopt(ac, av, "A:a:d:vz")) != -1) switch (ch) { case 'A': - aad_len = atoi(optarg); + if (naad_sizes >= nitems(aad_sizes)) { + warnx("Too many AAD sizes, ignoring extras"); + break; + } + aad_sizes[naad_sizes] = strtol(optarg, &cp, 0); + if (*cp != '\0') + errx(1, "Bad AAD size %s", optarg); + naad_sizes++; break; case 'a': algname = optarg; @@ -1570,8 +1619,6 @@ main(int ac, char **av) av += optind; nsizes = 0; while (ac > 0) { - char *cp; - if (nsizes >= nitems(sizes)) { warnx("Too many sizes, ignoring extras"); break; @@ -1586,48 +1633,78 @@ main(int ac, char **av) if (algname == NULL) errx(1, "Algorithm required"); + + if (naad_sizes == 0) { + if (testall) { + for (i = 0; i <= 32; i++) { + aad_sizes[naad_sizes] = i; + naad_sizes++; + } + + base_size = 32; + while (base_size * 2 < 512) { + base_size *= 2; + assert(naad_sizes < nitems(aad_sizes)); + aad_sizes[naad_sizes] = base_size; + naad_sizes++; + } + } else { + aad_sizes[0] = 0; + naad_sizes = 1; + } + } + if (nsizes == 0) { - sizes[0] = 16; - nsizes++; if (testall) { - while (sizes[nsizes - 1] * 2 < 240 * 1024) { + for (i = 1; i <= 32; i++) { + sizes[nsizes] = i; + nsizes++; + } + + base_size = 32; + while (base_size * 2 < 240 * 1024) { + base_size *= 2; assert(nsizes < nitems(sizes)); - sizes[nsizes] = sizes[nsizes - 1] * 2; + sizes[nsizes] = base_size; nsizes++; } + if (sizes[nsizes - 1] < 240 * 1024) { assert(nsizes < nitems(sizes)); sizes[nsizes] = 240 * 1024; nsizes++; } + } else { + sizes[0] = 16; + nsizes = 1; } } if (strcasecmp(algname, "hash") == 0) - run_hash_tests(sizes, nsizes); + run_hash_tests(); else if (strcasecmp(algname, "mac") == 0) - run_mac_tests(sizes, nsizes); + run_mac_tests(); else if (strcasecmp(algname, "cipher") == 0) - run_cipher_tests(sizes, nsizes); + run_cipher_tests(); else if (strcasecmp(algname, "eta") == 0) - run_eta_tests(sizes, nsizes); + run_eta_tests(); else if (strcasecmp(algname, "aead") == 0) - run_aead_tests(sizes, nsizes); + run_aead_tests(); else if (strcasecmp(algname, "all") == 0) { - run_hash_tests(sizes, nsizes); - run_mac_tests(sizes, nsizes); - run_cipher_tests(sizes, nsizes); - run_eta_tests(sizes, nsizes); - run_aead_tests(sizes, nsizes); + run_hash_tests(); + run_mac_tests(); + run_cipher_tests(); + run_eta_tests(); + run_aead_tests(); } else if (strchr(algname, '+') != NULL) { eta = build_eta_name(algname); - run_test_sizes(eta, sizes, nsizes); + run_test_sizes(eta); free_eta(eta); } else { alg = find_alg(algname); if (alg == NULL) errx(1, "Invalid algorithm %s", algname); - run_test_sizes(alg, sizes, nsizes); + run_test_sizes(alg); } return (0); From owner-svn-src-all@freebsd.org Mon May 25 23:07:51 2020 Return-Path: Delivered-To: svn-src-all@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 67BEB2CDDDE; Mon, 25 May 2020 23:07:51 +0000 (UTC) (envelope-from jhb@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49WCRq28jFz3ZPs; Mon, 25 May 2020 23:07:51 +0000 (UTC) (envelope-from jhb@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 40F3219D35; Mon, 25 May 2020 23:07:51 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04PN7p6q036009; Mon, 25 May 2020 23:07:51 GMT (envelope-from jhb@FreeBSD.org) Received: (from jhb@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04PN7pOv036008; Mon, 25 May 2020 23:07:51 GMT (envelope-from jhb@FreeBSD.org) Message-Id: <202005252307.04PN7pOv036008@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: jhb set sender to jhb@FreeBSD.org using -f From: John Baldwin Date: Mon, 25 May 2020 23:07:51 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361488 - head/share/man/man9 X-SVN-Group: head X-SVN-Commit-Author: jhb X-SVN-Commit-Paths: head/share/man/man9 X-SVN-Commit-Revision: 361488 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2020 23:07:51 -0000 Author: jhb Date: Mon May 25 23:07:50 2020 New Revision: 361488 URL: https://svnweb.freebsd.org/changeset/base/361488 Log: Remove an extraneous line continuation from r361481. Modified: head/share/man/man9/Makefile Modified: head/share/man/man9/Makefile ============================================================================== --- head/share/man/man9/Makefile Mon May 25 23:04:18 2020 (r361487) +++ head/share/man/man9/Makefile Mon May 25 23:07:50 2020 (r361488) @@ -935,7 +935,7 @@ MLINKS+=crypto_request.9 crypto_dispatch.9 \ crypto_request.9 crypto_use_output_buf.9 \ crypto_request.9 crypto_use_output_mbuf.9 \ crypto_request.9 crypto_use_output_uio.9 \ - crypto_request.9 crypto_use_uio.9 \ + crypto_request.9 crypto_use_uio.9 MLINKS+=crypto_session.9 crypto_auth_hash.9 \ crypto_session.9 crypto_cipher.9 \ crypto_session.9 crypto_get_params.9 \ From owner-svn-src-all@freebsd.org Mon May 25 23:12:50 2020 Return-Path: Delivered-To: svn-src-all@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 699A42CE523; Mon, 25 May 2020 23:12:50 +0000 (UTC) (envelope-from jhb@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49WCYZ2FtCz3ZjQ; Mon, 25 May 2020 23:12:50 +0000 (UTC) (envelope-from jhb@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 4897519F2D; Mon, 25 May 2020 23:12:50 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04PNCosQ041848; Mon, 25 May 2020 23:12:50 GMT (envelope-from jhb@FreeBSD.org) Received: (from jhb@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04PNColA041847; Mon, 25 May 2020 23:12:50 GMT (envelope-from jhb@FreeBSD.org) Message-Id: <202005252312.04PNColA041847@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: jhb set sender to jhb@FreeBSD.org using -f From: John Baldwin Date: Mon, 25 May 2020 23:12:50 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361489 - head/sys/dev/cesa X-SVN-Group: head X-SVN-Commit-Author: jhb X-SVN-Commit-Paths: head/sys/dev/cesa X-SVN-Commit-Revision: 361489 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2020 23:12:50 -0000 Author: jhb Date: Mon May 25 23:12:49 2020 New Revision: 361489 URL: https://svnweb.freebsd.org/changeset/base/361489 Log: Update cesa(4) for separate output buffers changes in r361481. This does not add support for separate output buffers but updates the driver to cope with the changes. Pointy hat to: jhb Modified: head/sys/dev/cesa/cesa.c Modified: head/sys/dev/cesa/cesa.c ============================================================================== --- head/sys/dev/cesa/cesa.c Mon May 25 23:07:50 2020 (r361488) +++ head/sys/dev/cesa/cesa.c Mon May 25 23:12:49 2020 (r361489) @@ -1712,7 +1712,7 @@ cesa_process(device_t dev, struct cryptop *crp, int hi csp = crypto_get_params(crp->crp_session); /* Check and parse input */ - if (crp->crp_ilen > CESA_MAX_REQUEST_SIZE) { + if (crypto_buffer_len(&crp->crp_buf) > CESA_MAX_REQUEST_SIZE) { crp->crp_etype = E2BIG; crypto_done(crp); return (0); From owner-svn-src-all@freebsd.org Mon May 25 23:19:23 2020 Return-Path: Delivered-To: svn-src-all@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 90A262CE60C; Mon, 25 May 2020 23:19:23 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from smtp.freebsd.org (smtp.freebsd.org [96.47.72.83]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "smtp.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 49WCj733h1z3b90; Mon, 25 May 2020 23:19:23 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from John-Baldwins-MacBook-Pro-274.local (unknown [IPv6:2601:648:8203:2990:c14b:354e:8d93:9489]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) (Authenticated sender: jhb) by smtp.freebsd.org (Postfix) with ESMTPSA id 02FAA28DF8; Mon, 25 May 2020 23:19:22 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Subject: Re: svn commit: r361489 - head/sys/dev/cesa From: John Baldwin To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org References: <202005252312.04PNColA041847@repo.freebsd.org> Autocrypt: addr=jhb@FreeBSD.org; keydata= mQGiBETQ+XcRBADMFybiq69u+fJRy/0wzqTNS8jFfWaBTs5/OfcV7wWezVmf9sgwn8TW0Dk0 c9MBl0pz+H01dA2ZSGZ5fXlmFIsee1WEzqeJzpiwd/pejPgSzXB9ijbLHZ2/E0jhGBcVy5Yo /Tw5+U/+laeYKu2xb0XPvM0zMNls1ah5OnP9a6Ql6wCgupaoMySb7DXm2LHD1Z9jTsHcAQMD /1jzh2BoHriy/Q2s4KzzjVp/mQO5DSm2z14BvbQRcXU48oAosHA1u3Wrov6LfPY+0U1tG47X 1BGfnQH+rNAaH0livoSBQ0IPI/8WfIW7ub4qV6HYwWKVqkDkqwcpmGNDbz3gfaDht6nsie5Z pcuCcul4M9CW7Md6zzyvktjnbz61BADGDCopfZC4of0Z3Ka0u8Wik6UJOuqShBt1WcFS8ya1 oB4rc4tXfSHyMF63aPUBMxHR5DXeH+EO2edoSwViDMqWk1jTnYza51rbGY+pebLQOVOxAY7k do5Ordl3wklBPMVEPWoZ61SdbcjhHVwaC5zfiskcxj5wwXd2E9qYlBqRg7QeSm9obiBCYWxk d2luIDxqaGJARnJlZUJTRC5vcmc+iGAEExECACAFAkTQ+awCGwMGCwkIBwMCBBUCCAMEFgID AQIeAQIXgAAKCRBy3lIGd+N/BI6RAJ9S97fvbME+3hxzE3JUyUZ6vTewDACdE1stFuSfqMvM jomvZdYxIYyTUpC5Ag0ERND5ghAIAPwsO0B7BL+bz8sLlLoQktGxXwXQfS5cInvL17Dsgnr3 1AKa94j9EnXQyPEj7u0d+LmEe6CGEGDh1OcGFTMVrof2ZzkSy4+FkZwMKJpTiqeaShMh+Goj XlwIMDxyADYvBIg3eN5YdFKaPQpfgSqhT+7El7w+wSZZD8pPQuLAnie5iz9C8iKy4/cMSOrH YUK/tO+Nhw8Jjlw94Ik0T80iEhI2t+XBVjwdfjbq3HrJ0ehqdBwukyeJRYKmbn298KOFQVHO EVbHA4rF/37jzaMadK43FgJ0SAhPPF5l4l89z5oPu0b/+5e2inA3b8J3iGZxywjM+Csq1tqz hltEc7Q+E08AAwUIAL+15XH8bPbjNJdVyg2CMl10JNW2wWg2Q6qdljeaRqeR6zFus7EZTwtX sNzs5bP8y51PSUDJbeiy2RNCNKWFMndM22TZnk3GNG45nQd4OwYK0RZVrikalmJY5Q6m7Z16 4yrZgIXFdKj2t8F+x613/SJW1lIr9/bDp4U9tw0V1g3l2dFtD3p3ZrQ3hpoDtoK70ioIAjjH aIXIAcm3FGZFXy503DOA0KaTWwvOVdYCFLm3zWuSOmrX/GsEc7ovasOWwjPn878qVjbUKWwx Q4QkF4OhUV9zPtf9tDSAZ3x7QSwoKbCoRCZ/xbyTUPyQ1VvNy/mYrBcYlzHodsaqUDjHuW+I SQQYEQIACQUCRND5ggIbDAAKCRBy3lIGd+N/BCO8AJ9j1dWVQWxw/YdTbEyrRKOY8YZNwwCf afMAg8QvmOWnHx3wl8WslCaXaE8= Message-ID: <480e052d-9a57-de19-5ea3-dd361e9a0feb@FreeBSD.org> Date: Mon, 25 May 2020 16:19:21 -0700 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:68.0) Gecko/20100101 Thunderbird/68.6.0 MIME-Version: 1.0 In-Reply-To: <202005252312.04PNColA041847@repo.freebsd.org> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2020 23:19:23 -0000 On 5/25/20 4:12 PM, John Baldwin wrote: > Author: jhb > Date: Mon May 25 23:12:49 2020 > New Revision: 361489 > URL: https://svnweb.freebsd.org/changeset/base/361489 > > Log: > Update cesa(4) for separate output buffers changes in r361481. > > This does not add support for separate output buffers but updates the > driver to cope with the changes. > > Pointy hat to: jhb Oof, I apparently never ran a tinderbox of this. I'm working on the powerpc sec(4) driver currently and will get to the MIPS ones after that. -- John Baldwin From owner-svn-src-all@freebsd.org Mon May 25 23:20:34 2020 Return-Path: Delivered-To: svn-src-all@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 3BEE12CE61D; Mon, 25 May 2020 23:20:34 +0000 (UTC) (envelope-from jhb@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49WCkV0w0Sz3bK4; Mon, 25 May 2020 23:20:34 +0000 (UTC) (envelope-from jhb@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 1641B1A021; Mon, 25 May 2020 23:20:34 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04PNKXt1043112; Mon, 25 May 2020 23:20:33 GMT (envelope-from jhb@FreeBSD.org) Received: (from jhb@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04PNKXeY043111; Mon, 25 May 2020 23:20:33 GMT (envelope-from jhb@FreeBSD.org) Message-Id: <202005252320.04PNKXeY043111@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: jhb set sender to jhb@FreeBSD.org using -f From: John Baldwin Date: Mon, 25 May 2020 23:20:33 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361490 - head/sys/dev/sec X-SVN-Group: head X-SVN-Commit-Author: jhb X-SVN-Commit-Paths: head/sys/dev/sec X-SVN-Commit-Revision: 361490 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2020 23:20:34 -0000 Author: jhb Date: Mon May 25 23:20:33 2020 New Revision: 361490 URL: https://svnweb.freebsd.org/changeset/base/361490 Log: Update sec(4) for separate output buffers changes in r361481. This does not add support for separate output buffers but updates the driver to cope with the changes. Pointy hat to: jhb Modified: head/sys/dev/sec/sec.c Modified: head/sys/dev/sec/sec.c ============================================================================== --- head/sys/dev/sec/sec.c Mon May 25 23:12:49 2020 (r361489) +++ head/sys/dev/sec/sec.c Mon May 25 23:20:33 2020 (r361490) @@ -842,14 +842,14 @@ sec_desc_map_dma(struct sec_softc *sc, struct sec_dma_ if (dma_mem->dma_vaddr != NULL) return (EBUSY); - switch (crp->crp_buf_type) { + switch (crp->crp_buf.cb_type) { case CRYPTO_BUF_CONTIG: break; case CRYPTO_BUF_UIO: size = SEC_FREE_LT_CNT(sc) * SEC_MAX_DMA_BLOCK_SIZE; break; case CRYPTO_BUF_MBUF: - size = m_length(crp->crp_mbuf, NULL); + size = m_length(crp->crp_buf.cb_mbuf, NULL); break; default: return (EINVAL); @@ -1245,7 +1245,7 @@ sec_process(device_t dev, struct cryptop *crp, int hin csp = crypto_get_params(crp->crp_session); /* Check for input length */ - if (crp->crp_ilen > SEC_MAX_DMA_BLOCK_SIZE) { + if (crypto_buffer_len(&crp->crp_buf) > SEC_MAX_DMA_BLOCK_SIZE) { crp->crp_etype = E2BIG; crypto_done(crp); return (0); From owner-svn-src-all@freebsd.org Mon May 25 23:47:35 2020 Return-Path: Delivered-To: svn-src-all@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 142E62CF015; Mon, 25 May 2020 23:47:35 +0000 (UTC) (envelope-from chs@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49WDKf74fMz3dFV; Mon, 25 May 2020 23:47:34 +0000 (UTC) (envelope-from chs@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 EDB4C1A2CC; Mon, 25 May 2020 23:47:34 +0000 (UTC) (envelope-from chs@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04PNlYOr061037; Mon, 25 May 2020 23:47:34 GMT (envelope-from chs@FreeBSD.org) Received: (from chs@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04PNlWnm061022; Mon, 25 May 2020 23:47:32 GMT (envelope-from chs@FreeBSD.org) Message-Id: <202005252347.04PNlWnm061022@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: chs set sender to chs@FreeBSD.org using -f From: Chuck Silvers Date: Mon, 25 May 2020 23:47:32 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361491 - in head/sys: geom kern sys ufs/ffs ufs/ufs X-SVN-Group: head X-SVN-Commit-Author: chs X-SVN-Commit-Paths: in head/sys: geom kern sys ufs/ffs ufs/ufs X-SVN-Commit-Revision: 361491 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2020 23:47:35 -0000 Author: chs Date: Mon May 25 23:47:31 2020 New Revision: 361491 URL: https://svnweb.freebsd.org/changeset/base/361491 Log: This commit enables a UFS filesystem to do a forcible unmount when the underlying media fails or becomes inaccessible. For example when a USB flash memory card hosting a UFS filesystem is unplugged. The strategy for handling disk I/O errors when soft updates are enabled is to stop writing to the disk of the affected file system but continue to accept I/O requests and report that all future writes by the file system to that disk actually succeed. Then initiate an asynchronous forced unmount of the affected file system. There are two cases for disk I/O errors: - ENXIO, which means that this disk is gone and the lower layers of the storage stack already guarantee that no future I/O to this disk will succeed. - EIO (or most other errors), which means that this particular I/O request has failed but subsequent I/O requests to this disk might still succeed. For ENXIO, we can just clear the error and continue, because we know that the file system cannot affect the on-disk state after we see this error. For EIO or other errors, we arrange for the geom_vfs layer to reject all future I/O requests with ENXIO just like is done when the geom_vfs is orphaned. In both cases, the file system code can just clear the error and proceed with the forcible unmount. This new treatment of I/O errors is needed for writes of any buffer that is involved in a dependency. Most dependencies are described by a structure attached to the buffer's b_dep field. But some are created and processed as a result of the completion of the dependencies attached to the buffer. Clearing of some dependencies require a read. For example if there is a dependency that requires an inode to be written, the disk block containing that inode must be read, the updated inode copied into place in that buffer, and the buffer then written back to disk. Often the needed buffer is already in memory and can be used. But if it needs to be read from the disk, the read will fail, so we fabricate a buffer full of zeroes and pretend that the read succeeded. This zero'ed buffer can be updated and written back to disk. The only case where a buffer full of zeros causes the code to do the wrong thing is when reading an inode buffer containing an inode that still has an inode dependency in memory that will reinitialize the effective link count (i_effnlink) based on the actual link count (i_nlink) that we read. To handle this case we now store the i_nlink value that we wrote in the inode dependency so that it can be restored into the zero'ed buffer thus keeping the tracking of the inode link count consistent. Because applications depend on knowing when an attempt to write their data to stable storage has failed, the fsync(2) and msync(2) system calls need to return errors if data fails to be written to stable storage. So these operations return ENXIO for every call made on files in a file system where we have otherwise been ignoring I/O errors. Coauthered by: mckusick Reviewed by: kib Tested by: Peter Holm Approved by: mckusick (mentor) Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D24088 Modified: head/sys/geom/geom_vfs.c head/sys/kern/vfs_bio.c head/sys/sys/buf.h head/sys/ufs/ffs/ffs_alloc.c head/sys/ufs/ffs/ffs_balloc.c head/sys/ufs/ffs/ffs_extern.h head/sys/ufs/ffs/ffs_inode.c head/sys/ufs/ffs/ffs_softdep.c head/sys/ufs/ffs/ffs_subr.c head/sys/ufs/ffs/ffs_vfsops.c head/sys/ufs/ffs/ffs_vnops.c head/sys/ufs/ffs/softdep.h head/sys/ufs/ufs/ufs_vnops.c head/sys/ufs/ufs/ufsmount.h Modified: head/sys/geom/geom_vfs.c ============================================================================== --- head/sys/geom/geom_vfs.c Mon May 25 23:20:33 2020 (r361490) +++ head/sys/geom/geom_vfs.c Mon May 25 23:47:31 2020 (r361491) @@ -55,6 +55,7 @@ struct g_vfs_softc { struct bufobj *sc_bo; int sc_active; int sc_orphaned; + int sc_enxio_active; }; static struct buf_ops __g_vfs_bufops = { @@ -139,9 +140,14 @@ g_vfs_done(struct bio *bip) cp = bip->bio_from; sc = cp->geom->softc; - if (bip->bio_error && bip->bio_error != EOPNOTSUPP) + if (bip->bio_error != 0 && bip->bio_error != EOPNOTSUPP) { + if ((bp->b_xflags & BX_CVTENXIO) != 0) + sc->sc_enxio_active = 1; + if (sc->sc_enxio_active) + bip->bio_error = ENXIO; g_print_bio("g_vfs_done():", bip, "error = %d", bip->bio_error); + } bp->b_error = bip->bio_error; bp->b_ioflags = bip->bio_flags; if (bip->bio_error) @@ -172,7 +178,7 @@ g_vfs_strategy(struct bufobj *bo, struct buf *bp) * If the provider has orphaned us, just return ENXIO. */ mtx_lock(&sc->sc_mtx); - if (sc->sc_orphaned) { + if (sc->sc_orphaned || sc->sc_enxio_active) { mtx_unlock(&sc->sc_mtx); bp->b_error = ENXIO; bp->b_ioflags |= BIO_ERROR; Modified: head/sys/kern/vfs_bio.c ============================================================================== --- head/sys/kern/vfs_bio.c Mon May 25 23:20:33 2020 (r361490) +++ head/sys/kern/vfs_bio.c Mon May 25 23:47:31 2020 (r361491) @@ -2176,6 +2176,8 @@ breadn_flags(struct vnode *vp, daddr_t blkno, daddr_t bp->b_flags |= B_CKHASH; bp->b_ckhashcalc = ckhashfunc; } + if ((flags & GB_CVTENXIO) != 0) + bp->b_xflags |= BX_CVTENXIO; bp->b_ioflags &= ~BIO_ERROR; if (bp->b_rcred == NOCRED && cred != NOCRED) bp->b_rcred = crhold(cred); @@ -2773,6 +2775,7 @@ brelse(struct buf *bp) panic("brelse: not dirty"); bp->b_flags &= ~(B_ASYNC | B_NOCACHE | B_RELBUF | B_DIRECT); + bp->b_xflags &= ~(BX_CVTENXIO); /* binsfree unlocks bp. */ binsfree(bp, qindex); } @@ -2804,6 +2807,7 @@ bqrelse(struct buf *bp) return; } bp->b_flags &= ~(B_ASYNC | B_NOCACHE | B_AGE | B_RELBUF); + bp->b_xflags &= ~(BX_CVTENXIO); if (bp->b_flags & B_MANAGED) { if (bp->b_flags & B_REMFREE) Modified: head/sys/sys/buf.h ============================================================================== --- head/sys/sys/buf.h Mon May 25 23:20:33 2020 (r361490) +++ head/sys/sys/buf.h Mon May 25 23:47:31 2020 (r361491) @@ -261,12 +261,14 @@ struct buf { */ #define BX_VNDIRTY 0x00000001 /* On vnode dirty list */ #define BX_VNCLEAN 0x00000002 /* On vnode clean list */ +#define BX_CVTENXIO 0x00000004 /* Convert errors to ENXIO */ #define BX_BKGRDWRITE 0x00000010 /* Do writes in background */ #define BX_BKGRDMARKER 0x00000020 /* Mark buffer for splay tree */ #define BX_ALTDATA 0x00000040 /* Holds extended data */ #define BX_FSPRIV 0x00FF0000 /* Filesystem-specific flags mask */ -#define PRINT_BUF_XFLAGS "\20\7altdata\6bkgrdmarker\5bkgrdwrite\2clean\1dirty" +#define PRINT_BUF_XFLAGS "\20\7altdata\6bkgrdmarker\5bkgrdwrite\3cvtenxio" \ + "\2clean\1dirty" #define NOOFFSET (-1LL) /* No buffer offset calculated yet */ @@ -487,6 +489,7 @@ buf_track(struct buf *bp __unused, const char *locatio #define GB_KVAALLOC 0x0010 /* But allocate KVA. */ #define GB_CKHASH 0x0020 /* If reading, calc checksum hash */ #define GB_NOSPARSE 0x0040 /* Do not instantiate holes */ +#define GB_CVTENXIO 0x0080 /* Convert errors to ENXIO */ #ifdef _KERNEL extern int nbuf; /* The number of buffer headers */ Modified: head/sys/ufs/ffs/ffs_alloc.c ============================================================================== --- head/sys/ufs/ffs/ffs_alloc.c Mon May 25 23:20:33 2020 (r361490) +++ head/sys/ufs/ffs/ffs_alloc.c Mon May 25 23:47:31 2020 (r361491) @@ -222,6 +222,10 @@ nospace: softdep_request_cleanup(fs, ITOV(ip), cred, FLUSH_BLOCKS_WAIT); goto retry; } + if (ffs_fsfail_cleanup_locked(ump, 0)) { + UFS_UNLOCK(ump); + return (ENXIO); + } if (reclaimed > 0 && ppsratecheck(&ump->um_last_fullmsg, &ump->um_secs_fullmsg, 1)) { UFS_UNLOCK(ump); @@ -447,6 +451,12 @@ nospace: softdep_request_cleanup(fs, vp, cred, FLUSH_BLOCKS_WAIT); goto retry; } + if (bp) + brelse(bp); + if (ffs_fsfail_cleanup_locked(ump, 0)) { + UFS_UNLOCK(ump); + return (ENXIO); + } if (reclaimed > 0 && ppsratecheck(&ump->um_last_fullmsg, &ump->um_secs_fullmsg, 1)) { UFS_UNLOCK(ump); @@ -456,8 +466,6 @@ nospace: } else { UFS_UNLOCK(ump); } - if (bp) - brelse(bp); return (ENOSPC); } @@ -1102,7 +1110,7 @@ ffs_valloc(pvp, mode, cred, vpp) struct ufsmount *ump; ino_t ino, ipref; u_int cg; - int error, error1, reclaimed; + int error, reclaimed; *vpp = NULL; pip = VTOI(pvp); @@ -1137,28 +1145,21 @@ retry: (allocfcn_t *)ffs_nodealloccg); if (ino == 0) goto noinodes; - /* * Get rid of the cached old vnode, force allocation of a new vnode - * for this inode. + * for this inode. If this fails, release the allocated ino and + * return the error. */ - error = ffs_vgetf(pvp->v_mount, ino, LK_EXCLUSIVE, vpp, FFSV_REPLACE); - if (error) { - error1 = ffs_vgetf(pvp->v_mount, ino, LK_EXCLUSIVE, vpp, - FFSV_FORCEINSMQ | FFSV_REPLACE); + if ((error = ffs_vgetf(pvp->v_mount, ino, LK_EXCLUSIVE, vpp, + FFSV_FORCEINSMQ | FFSV_REPLACE)) != 0) { ffs_vfree(pvp, ino, mode); - if (error1 == 0) { - ip = VTOI(*vpp); - if (ip->i_mode) - goto dup_alloc; - UFS_INODE_SET_FLAG(ip, IN_MODIFIED); - vput(*vpp); - } return (error); } + /* + * We got an inode, so check mode and panic if it is already allocated. + */ ip = VTOI(*vpp); if (ip->i_mode) { -dup_alloc: printf("mode = 0%o, inum = %ju, fs = %s\n", ip->i_mode, (uintmax_t)ip->i_number, fs->fs_fsmnt); panic("ffs_valloc: dup alloc"); @@ -1197,6 +1198,10 @@ noinodes: softdep_request_cleanup(fs, pvp, cred, FLUSH_INODES_WAIT); goto retry; } + if (ffs_fsfail_cleanup_locked(ump, 0)) { + UFS_UNLOCK(ump); + return (ENXIO); + } if (ppsratecheck(&ump->um_last_fullmsg, &ump->um_secs_fullmsg, 1)) { UFS_UNLOCK(ump); ffs_fserr(fs, pip->i_number, "out of inodes"); @@ -2230,6 +2235,7 @@ ffs_blkfree_cg(ump, fs, devvp, bno, size, inum, dephd) struct mount *mp; struct cg *cgp; struct buf *bp; + daddr_t dbn; ufs1_daddr_t fragno, cgbno; int i, blk, frags, bbase, error; u_int cg; @@ -2262,8 +2268,23 @@ ffs_blkfree_cg(ump, fs, devvp, bno, size, inum, dephd) ffs_fserr(fs, inum, "bad block"); return; } - if ((error = ffs_getcg(fs, devvp, cg, 0, &bp, &cgp)) != 0) + if ((error = ffs_getcg(fs, devvp, cg, GB_CVTENXIO, &bp, &cgp)) != 0) { + if (!ffs_fsfail_cleanup(ump, error) || + !MOUNTEDSOFTDEP(UFSTOVFS(ump)) || devvp->v_type != VCHR) + return; + if (devvp->v_type == VREG) + dbn = fragstoblks(fs, cgtod(fs, cg)); + else + dbn = fsbtodb(fs, cgtod(fs, cg)); + error = getblkx(devvp, dbn, dbn, fs->fs_cgsize, 0, 0, 0, &bp); + KASSERT(error == 0, ("getblkx failed")); + softdep_setup_blkfree(UFSTOVFS(ump), bp, bno, + numfrags(fs, size), dephd); + bp->b_flags |= B_RELBUF | B_NOCACHE; + bp->b_flags &= ~B_CACHE; + bawrite(bp); return; + } cgbno = dtogd(fs, bno); blksfree = cg_blksfree(cgp); UFS_LOCK(ump); @@ -2783,6 +2804,7 @@ ffs_freefile(ump, fs, devvp, ino, mode, wkhd) { struct cg *cgp; struct buf *bp; + daddr_t dbn; int error; u_int cg; u_int8_t *inosused; @@ -2804,8 +2826,22 @@ ffs_freefile(ump, fs, devvp, ino, mode, wkhd) if (ino >= fs->fs_ipg * fs->fs_ncg) panic("ffs_freefile: range: dev = %s, ino = %ju, fs = %s", devtoname(dev), (uintmax_t)ino, fs->fs_fsmnt); - if ((error = ffs_getcg(fs, devvp, cg, 0, &bp, &cgp)) != 0) + if ((error = ffs_getcg(fs, devvp, cg, GB_CVTENXIO, &bp, &cgp)) != 0) { + if (!ffs_fsfail_cleanup(ump, error) || + !MOUNTEDSOFTDEP(UFSTOVFS(ump)) || devvp->v_type != VCHR) + return (error); + if (devvp->v_type == VREG) + dbn = fragstoblks(fs, cgtod(fs, cg)); + else + dbn = fsbtodb(fs, cgtod(fs, cg)); + error = getblkx(devvp, dbn, dbn, fs->fs_cgsize, 0, 0, 0, &bp); + KASSERT(error == 0, ("getblkx failed")); + softdep_setup_inofree(UFSTOVFS(ump), bp, ino, wkhd); + bp->b_flags |= B_RELBUF | B_NOCACHE; + bp->b_flags &= ~B_CACHE; + bawrite(bp); return (error); + } inosused = cg_inosused(cgp); cgino = ino % fs->fs_ipg; if (isclr(inosused, cgino)) { Modified: head/sys/ufs/ffs/ffs_balloc.c ============================================================================== --- head/sys/ufs/ffs/ffs_balloc.c Mon May 25 23:20:33 2020 (r361490) +++ head/sys/ufs/ffs/ffs_balloc.c Mon May 25 23:47:31 2020 (r361491) @@ -324,7 +324,8 @@ retry: UFS_UNLOCK(ump); goto retry; } - if (ppsratecheck(&ump->um_last_fullmsg, + if (!ffs_fsfail_cleanup_locked(ump, error) && + ppsratecheck(&ump->um_last_fullmsg, &ump->um_secs_fullmsg, 1)) { UFS_UNLOCK(ump); ffs_fserr(fs, ip->i_number, "filesystem full"); @@ -407,7 +408,8 @@ retry: UFS_UNLOCK(ump); goto retry; } - if (ppsratecheck(&ump->um_last_fullmsg, + if (!ffs_fsfail_cleanup_locked(ump, error) && + ppsratecheck(&ump->um_last_fullmsg, &ump->um_secs_fullmsg, 1)) { UFS_UNLOCK(ump); ffs_fserr(fs, ip->i_number, "filesystem full"); @@ -919,7 +921,8 @@ retry: UFS_UNLOCK(ump); goto retry; } - if (ppsratecheck(&ump->um_last_fullmsg, + if (!ffs_fsfail_cleanup_locked(ump, error) && + ppsratecheck(&ump->um_last_fullmsg, &ump->um_secs_fullmsg, 1)) { UFS_UNLOCK(ump); ffs_fserr(fs, ip->i_number, "filesystem full"); @@ -1003,7 +1006,8 @@ retry: UFS_UNLOCK(ump); goto retry; } - if (ppsratecheck(&ump->um_last_fullmsg, + if (!ffs_fsfail_cleanup_locked(ump, error) && + ppsratecheck(&ump->um_last_fullmsg, &ump->um_secs_fullmsg, 1)) { UFS_UNLOCK(ump); ffs_fserr(fs, ip->i_number, "filesystem full"); Modified: head/sys/ufs/ffs/ffs_extern.h ============================================================================== --- head/sys/ufs/ffs/ffs_extern.h Mon May 25 23:20:33 2020 (r361490) +++ head/sys/ufs/ffs/ffs_extern.h Mon May 25 23:47:31 2020 (r361491) @@ -116,6 +116,11 @@ int ffs_vfree(struct vnode *, ino_t, int); vfs_vget_t ffs_vget; int ffs_vgetf(struct mount *, ino_t, int, struct vnode **, int); void process_deferred_inactive(struct mount *mp); +int ffs_fsfail_cleanup(struct ufsmount *, int); +int ffs_fsfail_cleanup_locked(struct ufsmount *, int); +int ffs_breadz(struct ufsmount *, struct vnode *, daddr_t, daddr_t, int, + daddr_t *, int *, int, struct ucred *, int, void (*)(struct buf *), + struct buf **); /* * Flags to ffs_vgetf @@ -162,6 +167,7 @@ void softdep_uninitialize(void); int softdep_mount(struct vnode *, struct mount *, struct fs *, struct ucred *); void softdep_unmount(struct mount *); +void softdep_handle_error(struct buf *); int softdep_move_dependencies(struct buf *, struct buf *); int softdep_flushworklist(struct mount *, int *, struct thread *); int softdep_flushfiles(struct mount *, int, struct thread *); Modified: head/sys/ufs/ffs/ffs_inode.c ============================================================================== --- head/sys/ufs/ffs/ffs_inode.c Mon May 25 23:20:33 2020 (r361490) +++ head/sys/ufs/ffs/ffs_inode.c Mon May 25 23:47:31 2020 (r361491) @@ -86,6 +86,7 @@ ffs_update(vp, waitfor) struct fs *fs; struct buf *bp; struct inode *ip; + daddr_t bn; int flags, error; ASSERT_VOP_ELOCKED(vp, "ffs_update"); @@ -112,9 +113,9 @@ ffs_update(vp, waitfor) if (IS_SNAPSHOT(ip)) flags = GB_LOCK_NOWAIT; loop: - error = bread_gb(ITODEVVP(ip), - fsbtodb(fs, ino_to_fsba(fs, ip->i_number)), - (int) fs->fs_bsize, NOCRED, flags, &bp); + bn = fsbtodb(fs, ino_to_fsba(fs, ip->i_number)); + error = ffs_breadz(VFSTOUFS(vp->v_mount), ITODEVVP(ip), bn, bn, + (int) fs->fs_bsize, NULL, NULL, 0, NOCRED, flags, NULL, &bp); if (error != 0) { if (error != EBUSY) return (error); @@ -163,9 +164,11 @@ loop: */ random_harvest_queue(&(ip->i_din2), sizeof(ip->i_din2), RANDOM_FS_ATIME); } - if (waitfor) + if (waitfor) { error = bwrite(bp); - else if (vm_page_count_severe() || buf_dirty_count_severe()) { + if (ffs_fsfail_cleanup(VFSTOUFS(vp->v_mount), error)) + error = 0; + } else if (vm_page_count_severe() || buf_dirty_count_severe()) { bawrite(bp); error = 0; } else { @@ -684,7 +687,7 @@ ffs_indirtrunc(ip, lbn, dbn, lastbn, level, countp) * of having bread() attempt to calculate it using VOP_BMAP(). */ vp = ITOV(ip); - error = breadn_flags(vp, lbn, dbn, (int)fs->fs_bsize, NULL, NULL, 0, + error = ffs_breadz(ump, vp, lbn, dbn, (int)fs->fs_bsize, NULL, NULL, 0, NOCRED, 0, NULL, &bp); if (error) { *countp = 0; Modified: head/sys/ufs/ffs/ffs_softdep.c ============================================================================== --- head/sys/ufs/ffs/ffs_softdep.c Mon May 25 23:20:33 2020 (r361490) +++ head/sys/ufs/ffs/ffs_softdep.c Mon May 25 23:47:31 2020 (r361491) @@ -2271,6 +2271,7 @@ inodedep_lookup(mp, inum, flags, inodedeppp) inodedep->id_ino = inum; inodedep->id_state = ALLCOMPLETE; inodedep->id_nlinkdelta = 0; + inodedep->id_nlinkwrote = -1; inodedep->id_savedino1 = NULL; inodedep->id_savedsize = -1; inodedep->id_savedextsize = -1; @@ -3606,6 +3607,7 @@ softdep_process_journal(mp, needwk, flags) jblocks->jb_needseg = 0; WORKLIST_INSERT(&bp->b_dep, &jseg->js_list); FREE_LOCK(ump); + bp->b_xflags |= BX_CVTENXIO; pbgetvp(ump->um_devvp, bp); /* * We only do the blocking wait once we find the journal @@ -6334,7 +6336,7 @@ setup_trunc_indir(freeblks, ip, lbn, lastlbn, blkno) * the on-disk address, so we just pass it to bread() instead of * having bread() attempt to calculate it using VOP_BMAP(). */ - error = breadn_flags(ITOV(ip), lbn, blkptrtodb(ump, blkno), + error = ffs_breadz(ump, ITOV(ip), lbn, blkptrtodb(ump, blkno), (int)mp->mnt_stat.f_iosize, NULL, NULL, 0, NOCRED, 0, NULL, &bp); if (error) return (error); @@ -6485,6 +6487,15 @@ complete_trunc_indir(freework) else WORKLIST_INSERT(&indirdep->ir_freeblks->fb_freeworkhd, &freework->fw_list); + if (fwn == NULL) { + freework->fw_indir = (void *)0x0000deadbeef0000; + bp = indirdep->ir_savebp; + indirdep->ir_savebp = NULL; + free_indirdep(indirdep); + FREE_LOCK(ump); + brelse(bp); + ACQUIRE_LOCK(ump); + } } else { /* Complete when the real copy is written. */ WORKLIST_INSERT(&bp->b_dep, &freework->fw_list); @@ -6589,6 +6600,7 @@ softdep_journal_freeblocks(ip, cred, length, flags) struct buf *bp; struct vnode *vp; struct mount *mp; + daddr_t dbn; ufs2_daddr_t extblocks, datablocks; ufs_lbn_t tmpval, lbn, lastlbn; int frags, lastoff, iboff, allocblock, needj, error, i; @@ -6726,8 +6738,9 @@ softdep_journal_freeblocks(ip, cred, length, flags) */ ufs_itimes(vp); ip->i_flag &= ~(IN_LAZYACCESS | IN_LAZYMOD | IN_MODIFIED); - error = bread(ump->um_devvp, fsbtodb(fs, ino_to_fsba(fs, ip->i_number)), - (int)fs->fs_bsize, cred, &bp); + dbn = fsbtodb(fs, ino_to_fsba(fs, ip->i_number)); + error = ffs_breadz(ump, ump->um_devvp, dbn, dbn, (int)fs->fs_bsize, + NULL, NULL, 0, cred, 0, NULL, &bp); if (error) { softdep_error("softdep_journal_freeblocks", error); return; @@ -6828,13 +6841,13 @@ softdep_journal_freeblocks(ip, cred, length, flags) */ size = sblksize(fs, length, lastlbn); error = bread(vp, lastlbn, size, cred, &bp); - if (error) { + if (error == 0) { + bzero((char *)bp->b_data + lastoff, size - lastoff); + bawrite(bp); + } else if (!ffs_fsfail_cleanup(ump, error)) { softdep_error("softdep_journal_freeblks", error); return; } - bzero((char *)bp->b_data + lastoff, size - lastoff); - bawrite(bp); - } ACQUIRE_LOCK(ump); inodedep_lookup(mp, ip->i_number, DEPALLOC, &inodedep); @@ -6945,8 +6958,8 @@ softdep_setup_freeblocks(ip, length, flags) if ((error = bread(ump->um_devvp, fsbtodb(fs, ino_to_fsba(fs, ip->i_number)), (int)fs->fs_bsize, NOCRED, &bp)) != 0) { - brelse(bp); - softdep_error("softdep_setup_freeblocks", error); + if (!ffs_fsfail_cleanup(ump, error)) + softdep_error("softdep_setup_freeblocks", error); return; } freeblks = newfreeblks(mp, ip); @@ -8161,7 +8174,7 @@ indir_trunc(freework, dbn, lbn) ufs_lbn_t lbnadd, nlbn; u_long key; int nblocks, ufs1fmt, freedblocks; - int goingaway, freedeps, needj, level, cnt, i; + int goingaway, freedeps, needj, level, cnt, i, error; freeblks = freework->fw_freeblks; mp = freeblks->fb_list.wk_mp; @@ -8199,10 +8212,11 @@ indir_trunc(freework, dbn, lbn) if (indirdep == NULL || (indirdep->ir_state & GOINGAWAY) == 0) panic("indir_trunc: Bad indirdep %p from buf %p", indirdep, bp); - } else if (bread(freeblks->fb_devvp, dbn, (int)fs->fs_bsize, - NOCRED, &bp) != 0) { - brelse(bp); - return; + } else { + error = ffs_breadz(ump, freeblks->fb_devvp, dbn, dbn, + (int)fs->fs_bsize, NULL, NULL, 0, NOCRED, 0, NULL, &bp); + if (error) + return; } ACQUIRE_LOCK(ump); /* Protects against a race with complete_trunc_indir(). */ @@ -9700,6 +9714,7 @@ clear_unlinked_inodedep(inodedep) struct inodedep *idn; struct fs *fs, *bpfs; struct buf *bp; + daddr_t dbn; ino_t ino; ino_t nino; ino_t pino; @@ -9753,11 +9768,10 @@ clear_unlinked_inodedep(inodedep) bp = getblk(ump->um_devvp, btodb(fs->fs_sblockloc), (int)fs->fs_sbsize, 0, 0, 0); } else { - error = bread(ump->um_devvp, - fsbtodb(fs, ino_to_fsba(fs, pino)), - (int)fs->fs_bsize, NOCRED, &bp); - if (error) - brelse(bp); + dbn = fsbtodb(fs, ino_to_fsba(fs, pino)); + error = ffs_breadz(ump, ump->um_devvp, dbn, dbn, + (int)fs->fs_bsize, NULL, NULL, 0, NOCRED, 0, NULL, + &bp); } ACQUIRE_LOCK(ump); if (error) @@ -10578,14 +10592,16 @@ initiate_write_inodeblock_ufs2(inodedep, bp) if ((adp->ad_state & ATTACHED) == 0) panic("inodedep %p and adp %p not attached", inodedep, adp); prevlbn = adp->ad_offset; - if (adp->ad_offset < UFS_NDADDR && + if (!ffs_fsfail_cleanup(ump, 0) && + adp->ad_offset < UFS_NDADDR && dp->di_db[adp->ad_offset] != adp->ad_newblkno) panic("initiate_write_inodeblock_ufs2: " "direct pointer #%jd mismatch %jd != %jd", (intmax_t)adp->ad_offset, (intmax_t)dp->di_db[adp->ad_offset], (intmax_t)adp->ad_newblkno); - if (adp->ad_offset >= UFS_NDADDR && + if (!ffs_fsfail_cleanup(ump, 0) && + adp->ad_offset >= UFS_NDADDR && dp->di_ib[adp->ad_offset - UFS_NDADDR] != adp->ad_newblkno) panic("initiate_write_inodeblock_ufs2: " "indirect pointer #%jd mismatch %jd != %jd", @@ -10817,12 +10833,14 @@ softdep_setup_inofree(mp, bp, ino, wkhd) ("softdep_setup_inofree called on non-softdep filesystem")); ump = VFSTOUFS(mp); ACQUIRE_LOCK(ump); - fs = ump->um_fs; - cgp = (struct cg *)bp->b_data; - inosused = cg_inosused(cgp); - if (isset(inosused, ino % fs->fs_ipg)) - panic("softdep_setup_inofree: inode %ju not freed.", - (uintmax_t)ino); + if (!ffs_fsfail_cleanup(ump, 0)) { + fs = ump->um_fs; + cgp = (struct cg *)bp->b_data; + inosused = cg_inosused(cgp); + if (isset(inosused, ino % fs->fs_ipg)) + panic("softdep_setup_inofree: inode %ju not freed.", + (uintmax_t)ino); + } if (inodedep_lookup(mp, ino, 0, &inodedep)) panic("softdep_setup_inofree: ino %ju has existing inodedep %p", (uintmax_t)ino, inodedep); @@ -11091,6 +11109,26 @@ initiate_write_bmsafemap(bmsafemap, bp) wk_list); } +void +softdep_handle_error(struct buf *bp) +{ + struct ufsmount *ump; + + ump = softdep_bp_to_mp(bp); + if (ump == NULL) + return; + + if (ffs_fsfail_cleanup(ump, bp->b_error)) { + /* + * No future writes will succeed, so the on-disk image is safe. + * Pretend that this write succeeded so that the softdep state + * will be cleaned up naturally. + */ + bp->b_ioflags &= ~BIO_ERROR; + bp->b_error = 0; + } +} + /* * This routine is called during the completion interrupt * service routine for a disk write (from the procedure called @@ -11117,6 +11155,8 @@ softdep_disk_write_complete(bp) "with outstanding dependencies for buffer %p", bp)); if (ump == NULL) return; + if ((bp->b_ioflags & BIO_ERROR) != 0) + softdep_handle_error(bp); /* * If an error occurred while doing the write, then the data * has not hit the disk and the dependencies cannot be processed. @@ -12305,6 +12345,13 @@ softdep_load_inodeblock(ip) FREE_LOCK(ump); return; } + if (ip->i_nlink != inodedep->id_nlinkwrote && + inodedep->id_nlinkwrote != -1) { + KASSERT(ip->i_nlink == 0 && + (ump->um_flags & UM_FSFAIL_CLEANUP) != 0, + ("read bad i_nlink value")); + ip->i_effnlink = ip->i_nlink = inodedep->id_nlinkwrote; + } ip->i_effnlink -= inodedep->id_nlinkdelta; KASSERT(ip->i_effnlink >= 0, ("softdep_load_inodeblock: negative i_effnlink")); @@ -12367,6 +12414,11 @@ again: panic("softdep_update_inodeblock: bad link count"); return; } + KASSERT(ip->i_nlink >= inodedep->id_nlinkdelta, + ("softdep_update_inodeblock inconsistent ip %p i_nlink %d " + "inodedep %p id_nlinkdelta %jd", + ip, ip->i_nlink, inodedep, (intmax_t)inodedep->id_nlinkdelta)); + inodedep->id_nlinkwrote = ip->i_nlink; if (inodedep->id_nlinkdelta != ip->i_nlink - ip->i_effnlink) panic("softdep_update_inodeblock: bad delta"); /* @@ -12642,7 +12694,7 @@ restart: else brelse(bp); vput(pvp); - if (error != 0) + if (!ffs_fsfail_cleanup(ump, error)) return (error); ACQUIRE_LOCK(ump); if (inodedep_lookup(mp, ip->i_number, 0, &inodedep) == 0) Modified: head/sys/ufs/ffs/ffs_subr.c ============================================================================== --- head/sys/ufs/ffs/ffs_subr.c Mon May 25 23:20:33 2020 (r361490) +++ head/sys/ufs/ffs/ffs_subr.c Mon May 25 23:47:31 2020 (r361491) @@ -67,6 +67,7 @@ struct malloc_type; #include #include #include +#include #include #include @@ -136,7 +137,8 @@ ffs_load_inode(struct buf *bp, struct inode *ip, struc return (0); } dip2 = ((struct ufs2_dinode *)bp->b_data + ino_to_fsbo(fs, ino)); - if ((error = ffs_verify_dinode_ckhash(fs, dip2)) != 0) { + if ((error = ffs_verify_dinode_ckhash(fs, dip2)) != 0 && + !ffs_fsfail_cleanup(ITOUMP(ip), error)) { printf("%s: inode %jd: check-hash failed\n", fs->fs_fsmnt, (intmax_t)ino); return (error); @@ -201,6 +203,93 @@ ffs_check_blkno(struct mount *mp, ino_t inum, ufs2_dad } else if (!havemtx) UFS_UNLOCK(ump); return (EINTEGRITY); +} + +/* + * Initiate a forcible unmount. + * Used to unmount filesystems whose underlying media has gone away. + */ +static void +ffs_fsfail_unmount(void *v, int pending) +{ + struct fsfail_task *etp; + struct mount *mp; + + etp = v; + + /* + * Find our mount and get a ref on it, then try to unmount. + */ + mp = vfs_getvfs(&etp->fsid); + if (mp != NULL) + dounmount(mp, MNT_FORCE, curthread); + free(etp, M_UFSMNT); +} + +/* + * On first ENXIO error, start a task that forcibly unmounts the filesystem. + * + * Return true if a cleanup is in progress. + */ +int +ffs_fsfail_cleanup(struct ufsmount *ump, int error) +{ + int retval; + + UFS_LOCK(ump); + retval = ffs_fsfail_cleanup_locked(ump, error); + UFS_UNLOCK(ump); + return (retval); +} + +int +ffs_fsfail_cleanup_locked(struct ufsmount *ump, int error) +{ + struct fsfail_task *etp; + struct task *tp; + + mtx_assert(UFS_MTX(ump), MA_OWNED); + if (error == ENXIO && (ump->um_flags & UM_FSFAIL_CLEANUP) == 0) { + ump->um_flags |= UM_FSFAIL_CLEANUP; + /* + * Queue an async forced unmount. + */ + etp = ump->um_fsfail_task; + ump->um_fsfail_task = NULL; + if (etp != NULL) { + tp = &etp->task; + TASK_INIT(tp, 0, ffs_fsfail_unmount, etp); + taskqueue_enqueue(taskqueue_thread, tp); + printf("UFS: forcibly unmounting %s from %s\n", + ump->um_mountp->mnt_stat.f_mntfromname, + ump->um_mountp->mnt_stat.f_mntonname); + } + } + return ((ump->um_flags & UM_FSFAIL_CLEANUP) != 0); +} + +/* + * Wrapper used during ENXIO cleanup to allocate empty buffers when + * the kernel is unable to read the real one. They are needed so that + * the soft updates code can use them to unwind its dependencies. + */ +int +ffs_breadz(struct ufsmount *ump, struct vnode *vp, daddr_t lblkno, + daddr_t dblkno, int size, daddr_t *rablkno, int *rabsize, int cnt, + struct ucred *cred, int flags, void (*ckhashfunc)(struct buf *), + struct buf **bpp) +{ + int error; + + flags |= GB_CVTENXIO; + error = breadn_flags(vp, lblkno, dblkno, size, rablkno, rabsize, cnt, + cred, flags, ckhashfunc, bpp); + if (error != 0 && ffs_fsfail_cleanup(ump, error)) { + error = getblkx(vp, lblkno, dblkno, size, 0, 0, flags, bpp); + KASSERT(error == 0, ("getblkx failed")); + vfs_bio_bzero_buf(*bpp, 0, size); + } + return (error); } #endif /* _KERNEL */ Modified: head/sys/ufs/ffs/ffs_vfsops.c ============================================================================== --- head/sys/ufs/ffs/ffs_vfsops.c Mon May 25 23:20:33 2020 (r361490) +++ head/sys/ufs/ffs/ffs_vfsops.c Mon May 25 23:47:31 2020 (r361491) @@ -58,6 +58,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include @@ -148,6 +149,12 @@ static const char *ffs_opts[] = { "acls", "async", "no "multilabel", "nfsv4acls", "fsckpid", "snapshot", "nosuid", "suiddir", "nosymfollow", "sync", "union", "userquota", "untrusted", NULL }; +static int ffs_enxio_enable = 1; +SYSCTL_DECL(_vfs_ffs); +SYSCTL_INT(_vfs_ffs, OID_AUTO, enxio_enable, CTLFLAG_RWTUN, + &ffs_enxio_enable, 0, + "enable mapping of other disk I/O errors to ENXIO"); + static int ffs_mount(struct mount *mp) { @@ -795,6 +802,7 @@ ffs_mountfs(odevvp, mp, td) struct g_consumer *cp; struct mount *nmp; struct vnode *devvp; + struct fsfail_task *etp; int candelete, canspeedup; off_t loc; @@ -1085,6 +1093,9 @@ ffs_mountfs(odevvp, mp, td) (void) ufs_extattr_autostart(mp, td); #endif /* !UFS_EXTATTR_AUTOSTART */ #endif /* !UFS_EXTATTR */ + etp = malloc(sizeof *ump->um_fsfail_task, M_UFSMNT, M_WAITOK | M_ZERO); + etp->fsid = mp->mnt_stat.f_fsid; + ump->um_fsfail_task = etp; return (0); out: if (fs != NULL) { @@ -1134,7 +1145,6 @@ ffs_use_bread(void *devfd, off_t loc, void **bufp, int return (0); } -#include static int bigcgs = 0; SYSCTL_INT(_debug, OID_AUTO, bigcgs, CTLFLAG_RW, &bigcgs, 0, ""); @@ -1271,7 +1281,7 @@ ffs_unmount(mp, mntflags) error = softdep_flushfiles(mp, flags, td); else error = ffs_flushfiles(mp, flags, td); - if (error != 0 && error != ENXIO) + if (error != 0 && !ffs_fsfail_cleanup(ump, error)) goto fail; UFS_LOCK(ump); @@ -1288,7 +1298,9 @@ ffs_unmount(mp, mntflags) if (fs->fs_ronly == 0 || ump->um_fsckpid > 0) { fs->fs_clean = fs->fs_flags & (FS_UNCLEAN|FS_NEEDSFSCK) ? 0 : 1; error = ffs_sbupdate(ump, MNT_WAIT, 0); - if (error && error != ENXIO) { + if (ffs_fsfail_cleanup(ump, error)) + error = 0; + if (error != 0 && !ffs_fsfail_cleanup(ump, error)) { fs->fs_clean = 0; goto fail; } @@ -1326,6 +1338,8 @@ ffs_unmount(mp, mntflags) } free(fs->fs_csp, M_UFSMNT); free(fs, M_UFSMNT); + if (ump->um_fsfail_task != NULL) + free(ump->um_fsfail_task, M_UFSMNT); free(ump, M_UFSMNT); mp->mnt_data = NULL; MNT_ILOCK(mp); @@ -1640,6 +1654,8 @@ loop: if (waitfor == MNT_WAIT || rebooting) { if ((error = softdep_flushworklist(ump->um_mountp, &count, td))) allerror = error; + if (ffs_fsfail_cleanup(ump, allerror)) + allerror = 0; /* Flushed work items may create new vnodes to clean */ if (allerror == 0 && count) goto loop; @@ -1657,6 +1673,8 @@ loop: error = ffs_sbupdate(ump, waitfor, 0); if (error != 0) allerror = error; + if (ffs_fsfail_cleanup(ump, allerror)) + allerror = 0; if (allerror == 0 && waitfor == MNT_WAIT) goto loop; } else if (suspend != 0) { @@ -1681,6 +1699,8 @@ loop: if (fs->fs_fmod != 0 && (error = ffs_sbupdate(ump, waitfor, suspended)) != 0) allerror = error; + if (ffs_fsfail_cleanup(ump, allerror)) + allerror = 0; return (allerror); } @@ -1707,6 +1727,7 @@ ffs_vgetf(mp, ino, flags, vpp, ffs_flags) struct ufsmount *ump; struct buf *bp; struct vnode *vp; + daddr_t dbn; int error; MPASS((ffs_flags & FFSV_REPLACE) == 0 || (flags & LK_EXCLUSIVE) != 0); @@ -1796,9 +1817,10 @@ ffs_vgetf(mp, ino, flags, vpp, ffs_flags) } /* Read in the disk contents for the inode, copy into the inode. */ - error = bread(ump->um_devvp, fsbtodb(fs, ino_to_fsba(fs, ino)), - (int)fs->fs_bsize, NOCRED, &bp); - if (error) { + dbn = fsbtodb(fs, ino_to_fsba(fs, ino)); + error = ffs_breadz(ump, ump->um_devvp, dbn, dbn, (int)fs->fs_bsize, + NULL, NULL, 0, NOCRED, 0, NULL, &bp); + if (error != 0) { /* * The inode does not contain anything useful, so it would * be misleading to leave it on its hash chain. With mode @@ -1957,6 +1979,7 @@ ffs_uninit(vfsp) ret = ufs_uninit(vfsp); softdep_uninitialize(); ffs_susp_uninitialize(); + taskqueue_drain_all(taskqueue_thread); return (ret); } @@ -2039,6 +2062,8 @@ ffs_use_bwrite(void *devfd, off_t loc, void *buf, int * Writing the superblock itself. We need to do special checks for it. */ bp = devfdp->sbbp; + if (ffs_fsfail_cleanup(ump, devfdp->error)) + devfdp->error = 0; if (devfdp->error != 0) { brelse(bp); return (devfdp->error); @@ -2112,6 +2137,11 @@ ffs_backgroundwritedone(struct buf *bp) struct bufobj *bufobj; struct buf *origbp; +#ifdef SOFTUPDATES + if (!LIST_EMPTY(&bp->b_dep) && (bp->b_ioflags & BIO_ERROR) != 0) + softdep_handle_error(bp); +#endif + /* * Find the original buffer that we are writing. */ @@ -2122,7 +2152,7 @@ ffs_backgroundwritedone(struct buf *bp) /* * We should mark the cylinder group buffer origbp as - * dirty, to not loose the failed write. + * dirty, to not lose the failed write. */ if ((bp->b_ioflags & BIO_ERROR) != 0) origbp->b_vflags |= BV_BKGRDERR; @@ -2393,6 +2423,8 @@ ffs_geom_strategy(struct bufobj *bo, struct buf *bp) break; } } + if (bp->b_iocmd != BIO_READ && ffs_enxio_enable) + bp->b_xflags |= BX_CVTENXIO; g_vfs_strategy(bo, bp); } Modified: head/sys/ufs/ffs/ffs_vnops.c ============================================================================== --- head/sys/ufs/ffs/ffs_vnops.c Mon May 25 23:20:33 2020 (r361490) +++ head/sys/ufs/ffs/ffs_vnops.c Mon May 25 23:47:31 2020 (r361491) @@ -239,6 +239,8 @@ retry: } BO_UNLOCK(bo); } + if (ffs_fsfail_cleanup(VFSTOUFS(vp->v_mount), 0)) + return (ENXIO); return (0); } @@ -247,6 +249,7 @@ ffs_syncvnode(struct vnode *vp, int waitfor, int flags { struct inode *ip; struct bufobj *bo; + struct ufsmount *ump; struct buf *bp, *nbp; ufs_lbn_t lbn; int error, passes; @@ -255,14 +258,18 @@ ffs_syncvnode(struct vnode *vp, int waitfor, int flags ip = VTOI(vp); ip->i_flag &= ~IN_NEEDSYNC; bo = &vp->v_bufobj; + ump = VFSTOUFS(vp->v_mount); /* * When doing MNT_WAIT we must first flush all dependencies * on the inode. */ if (DOINGSOFTDEP(vp) && waitfor == MNT_WAIT && - (error = softdep_sync_metadata(vp)) != 0) + (error = softdep_sync_metadata(vp)) != 0) { + if (ffs_fsfail_cleanup(ump, error)) + error = 0; return (error); + } /* * Flush all dirty buffers associated with a vnode. @@ -332,7 +339,10 @@ loop: } if (wait) { bremfree(bp); - if ((error = bwrite(bp)) != 0) + error = bwrite(bp); + if (ffs_fsfail_cleanup(ump, error)) + error = 0; + if (error != 0) return (error); } else if ((bp->b_flags & B_CLUSTEROK)) { (void) vfs_bio_awrite(bp); @@ -901,8 +911,11 @@ ffs_write(ap) uio->uio_offset -= resid - uio->uio_resid; uio->uio_resid = resid; } - } else if (resid > uio->uio_resid && (ioflag & IO_SYNC)) + } else if (resid > uio->uio_resid && (ioflag & IO_SYNC)) { error = ffs_update(vp, 1); + if (ffs_fsfail_cleanup(VFSTOUFS(vp->v_mount), error)) + error = ENXIO; + } return (error); } Modified: head/sys/ufs/ffs/softdep.h ============================================================================== --- head/sys/ufs/ffs/softdep.h Mon May 25 23:20:33 2020 (r361490) +++ head/sys/ufs/ffs/softdep.h Mon May 25 23:47:31 2020 (r361491) @@ -358,6 +358,7 @@ struct inodedep { struct fs *id_fs; /* associated filesystem */ ino_t id_ino; /* dependent inode */ nlink_t id_nlinkdelta; /* saved effective link count */ + nlink_t id_nlinkwrote; /* i_nlink that we wrote to disk */ nlink_t id_savednlink; /* Link saved during rollback */ LIST_ENTRY(inodedep) id_deps; /* bmsafemap's list of inodedep's */ struct bmsafemap *id_bmsafemap; /* related bmsafemap (if pending) */ Modified: head/sys/ufs/ufs/ufs_vnops.c ============================================================================== --- head/sys/ufs/ufs/ufs_vnops.c Mon May 25 23:20:33 2020 (r361490) +++ head/sys/ufs/ufs/ufs_vnops.c Mon May 25 23:47:31 2020 (r361491) @@ -1426,6 +1426,7 @@ relock: if (DOINGSOFTDEP(tvp)) softdep_change_linkcnt(tip); } + goto bad; } if (doingdirectory && !DOINGSOFTDEP(tvp)) { /* @@ -1523,11 +1524,13 @@ unlockout: if (error == 0 && endoff != 0) { error = UFS_TRUNCATE(tdvp, endoff, IO_NORMAL | (DOINGASYNC(tdvp) ? 0 : IO_SYNC), tcnp->cn_cred); - if (error != 0) + if (error != 0 && !ffs_fsfail_cleanup(VFSTOUFS(mp), error)) vn_printf(tdvp, "ufs_rename: failed to truncate, error %d\n", error); #ifdef UFS_DIRHASH + if (error != 0) + ufsdirhash_free(tdp); else if (tdp->i_dirhash != NULL) ufsdirhash_dirtrunc(tdp, endoff); #endif Modified: head/sys/ufs/ufs/ufsmount.h ============================================================================== --- head/sys/ufs/ufs/ufsmount.h Mon May 25 23:20:33 2020 (r361490) +++ head/sys/ufs/ufs/ufsmount.h Mon May 25 23:47:31 2020 (r361491) @@ -45,6 +45,8 @@ struct ufs_args { #ifdef _KERNEL +#include *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@freebsd.org Mon May 25 23:49:47 2020 Return-Path: Delivered-To: svn-src-all@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 4A2582CECDE; Mon, 25 May 2020 23:49:47 +0000 (UTC) (envelope-from jhb@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49WDNC1J5Jz3dhQ; Mon, 25 May 2020 23:49:47 +0000 (UTC) (envelope-from jhb@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 236501A5CA; Mon, 25 May 2020 23:49:47 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04PNnkAW061209; Mon, 25 May 2020 23:49:46 GMT (envelope-from jhb@FreeBSD.org) Received: (from jhb@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04PNnkb5061206; Mon, 25 May 2020 23:49:46 GMT (envelope-from jhb@FreeBSD.org) Message-Id: <202005252349.04PNnkb5061206@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: jhb set sender to jhb@FreeBSD.org using -f From: John Baldwin Date: Mon, 25 May 2020 23:49:46 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361492 - in head/sys/mips: cavium/cryptocteon nlm/dev/sec X-SVN-Group: head X-SVN-Commit-Author: jhb X-SVN-Commit-Paths: in head/sys/mips: cavium/cryptocteon nlm/dev/sec X-SVN-Commit-Revision: 361492 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2020 23:49:47 -0000 Author: jhb Date: Mon May 25 23:49:46 2020 New Revision: 361492 URL: https://svnweb.freebsd.org/changeset/base/361492 Log: Update cryptocteon(4) and nlmsec(4) for changes in r361481. This does not add support for separate output buffers but updates the drivers to cope with the changes. Pointy hat to: jhb Modified: head/sys/mips/cavium/cryptocteon/cryptocteon.c head/sys/mips/nlm/dev/sec/nlmsec.c head/sys/mips/nlm/dev/sec/nlmseclib.c Modified: head/sys/mips/cavium/cryptocteon/cryptocteon.c ============================================================================== --- head/sys/mips/cavium/cryptocteon/cryptocteon.c Mon May 25 23:47:31 2020 (r361491) +++ head/sys/mips/cavium/cryptocteon/cryptocteon.c Mon May 25 23:49:46 2020 (r361492) @@ -295,12 +295,12 @@ cryptocteon_process(device_t dev, struct cryptop *crp, * do some error checking outside of the loop for m and IOV processing * this leaves us with valid m or uiop pointers for later */ - switch (crp->crp_buf_type) { + switch (crp->crp_buf.cb_type) { case CRYPTO_BUF_MBUF: { unsigned frags; - m = crp->crp_mbuf; + m = crp->crp_buf.cb_mbuf; for (frags = 0; m != NULL; frags++) m = m->m_next; @@ -310,11 +310,11 @@ cryptocteon_process(device_t dev, struct cryptop *crp, goto done; } - m = crp->crp_mbuf; + m = crp->crp_buf.cb_mbuf; break; } case CRYPTO_BUF_UIO: - uiop = crp->crp_uio; + uiop = crp->crp_buf.cb_uio; if (uiop->uio_iovcnt > UIO_MAXIOV) { printf("%s,%d: %d uio_iovcnt > UIO_MAXIOV", __FILE__, __LINE__, uiop->uio_iovcnt); @@ -337,7 +337,7 @@ cryptocteon_process(device_t dev, struct cryptop *crp, /* * setup the I/O vector to cover the buffer */ - switch (crp->crp_buf_type) { + switch (crp->crp_buf.cb_type) { case CRYPTO_BUF_MBUF: iovcnt = 0; iovlen = 0; @@ -360,9 +360,9 @@ cryptocteon_process(device_t dev, struct cryptop *crp, } break; case CRYPTO_BUF_CONTIG: - iovlen = crp->crp_ilen; - od->octo_iov[0].iov_base = crp->crp_buf; - od->octo_iov[0].iov_len = crp->crp_ilen; + iovlen = crp->crp_buf.cb_buf_len; + od->octo_iov[0].iov_base = crp->crp_buf.cb_buf; + od->octo_iov[0].iov_len = crp->crp_buf.cb_buf_len; iovcnt = 1; break; default: Modified: head/sys/mips/nlm/dev/sec/nlmsec.c ============================================================================== --- head/sys/mips/nlm/dev/sec/nlmsec.c Mon May 25 23:47:31 2020 (r361491) +++ head/sys/mips/nlm/dev/sec/nlmsec.c Mon May 25 23:49:46 2020 (r361492) @@ -466,12 +466,12 @@ static int xlp_get_nsegs(struct cryptop *crp, unsigned int *nsegs) { - switch (crp->crp_buf_type) { + switch (crp->crp_buf.cb_type) { case CRYPTO_BUF_MBUF: { struct mbuf *m = NULL; - m = crp->crp_mbuf; + m = crp->crp_buf.cb_mbuf; while (m != NULL) { *nsegs += NLM_CRYPTO_NUM_SEGS_REQD(m->m_len); m = m->m_next; @@ -484,8 +484,8 @@ xlp_get_nsegs(struct cryptop *crp, unsigned int *nsegs struct iovec *iov = NULL; int iol = 0; - uio = (struct uio *)crp->crp_buf; - iov = (struct iovec *)uio->uio_iov; + uio = crp->crp_buf.cb_uio; + iov = uio->uio_iov; iol = uio->uio_iovcnt; while (iol > 0) { *nsegs += NLM_CRYPTO_NUM_SEGS_REQD(iov->iov_len); @@ -495,7 +495,7 @@ xlp_get_nsegs(struct cryptop *crp, unsigned int *nsegs break; } case CRYPTO_BUF_CONTIG: - *nsegs = NLM_CRYPTO_NUM_SEGS_REQD(crp->crp_ilen); + *nsegs = NLM_CRYPTO_NUM_SEGS_REQD(crp->crp_buf.cb_buf_len); break; default: return (EINVAL); Modified: head/sys/mips/nlm/dev/sec/nlmseclib.c ============================================================================== --- head/sys/mips/nlm/dev/sec/nlmseclib.c Mon May 25 23:47:31 2020 (r361491) +++ head/sys/mips/nlm/dev/sec/nlmseclib.c Mon May 25 23:49:46 2020 (r361492) @@ -110,12 +110,12 @@ nlm_crypto_form_srcdst_segs(struct xlp_sec_command *cm } } - switch (crp->crp_buf_type) { + switch (crp->crp_buf.cb_type) { case CRYPTO_BUF_MBUF: { struct mbuf *m = NULL; - m = crp->crp_mbuf; + m = crp->crp_buf.cb_mbuf; while (m != NULL) { srcseg = nlm_crypto_fill_src_seg(cmd->paramp, srcseg, mtod(m,caddr_t), m->m_len); @@ -133,7 +133,7 @@ nlm_crypto_form_srcdst_segs(struct xlp_sec_command *cm struct iovec *iov = NULL; int iol = 0; - uio = crp->crp_uio; + uio = crp->crp_buf.cb_uio; iov = uio->uio_iov; iol = uio->uio_iovcnt; @@ -151,10 +151,10 @@ nlm_crypto_form_srcdst_segs(struct xlp_sec_command *cm } case CRYPTO_BUF_CONTIG: srcseg = nlm_crypto_fill_src_seg(cmd->paramp, srcseg, - ((caddr_t)crp->crp_buf), crp->crp_ilen); + crp->crp_buf.cb_buf, crp->crp_buf.cb_buf_len); if (csp->csp_mode != CSP_MODE_DIGEST) { dstseg = nlm_crypto_fill_dst_seg(cmd->paramp, dstseg, - ((caddr_t)crp->crp_buf), crp->crp_ilen); + crp->crp_buf.cb_buf, crp->crp_buf.cb_buf_len); } break; } From owner-svn-src-all@freebsd.org Tue May 26 02:27:11 2020 Return-Path: Delivered-To: svn-src-all@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 5AD762DC6DA; Tue, 26 May 2020 02:27:11 +0000 (UTC) (envelope-from bdragon@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49WHsq1l4Tz48Yq; Tue, 26 May 2020 02:27:11 +0000 (UTC) (envelope-from bdragon@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 370771C060; Tue, 26 May 2020 02:27:11 +0000 (UTC) (envelope-from bdragon@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04Q2RBd8062808; Tue, 26 May 2020 02:27:11 GMT (envelope-from bdragon@FreeBSD.org) Received: (from bdragon@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04Q2RB6g062807; Tue, 26 May 2020 02:27:11 GMT (envelope-from bdragon@FreeBSD.org) Message-Id: <202005260227.04Q2RB6g062807@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: bdragon set sender to bdragon@FreeBSD.org using -f From: Brandon Bergren Date: Tue, 26 May 2020 02:27:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361493 - head/sys/powerpc/powerpc X-SVN-Group: head X-SVN-Commit-Author: bdragon X-SVN-Commit-Paths: head/sys/powerpc/powerpc X-SVN-Commit-Revision: 361493 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2020 02:27:11 -0000 Author: bdragon Date: Tue May 26 02:27:10 2020 New Revision: 361493 URL: https://svnweb.freebsd.org/changeset/base/361493 Log: [PowerPC] Ensure ppc32 cpu_switch routines set up Secure-PLT. This is a correctness fix needed to enable the ifunc conversion of the pmap in D24993. Since we are making function calls that may need to go through the PLT, ensure r30 is set up correctly. This fixes crashes when booting with D24993 applied. Reviewed by: jhibbits (in IRC) Sponsored by: Tag1 Consulting, Inc. Modified: head/sys/powerpc/powerpc/swtch32.S Modified: head/sys/powerpc/powerpc/swtch32.S ============================================================================== --- head/sys/powerpc/powerpc/swtch32.S Mon May 25 23:49:46 2020 (r361492) +++ head/sys/powerpc/powerpc/swtch32.S Tue May 26 02:27:10 2020 (r361493) @@ -92,6 +92,11 @@ ENTRY(cpu_switch) mflr %r16 /* Save the link register */ stw %r16,PCB_LR(%r6) stw %r1,PCB_SP(%r6) /* Save the stack pointer */ + bl 1f +1: + mflr %r30 /* Prepare for secure-PLT calls */ + addis %r30, %r30, (_GLOBAL_OFFSET_TABLE_-1b)@ha + addi %r30, %r30, (_GLOBAL_OFFSET_TABLE_-1b)@l mr %r14,%r3 /* Copy the old thread ptr... */ mr %r2,%r4 /* and the new thread ptr in curthread */ @@ -129,6 +134,7 @@ cpu_switchin: mflr %r6 addis %r6,%r6,(_GLOBAL_OFFSET_TABLE_-1b)@ha addi %r6,%r6,(_GLOBAL_OFFSET_TABLE_-1b)@l + mr %r30, %r6 /* Prepare for secure-PLT calls */ lwz %r6,blocked_lock@got(%r6) blocked_loop: lwz %r7,TD_LOCK(%r2) From owner-svn-src-all@freebsd.org Tue May 26 03:58:20 2020 Return-Path: Delivered-To: svn-src-all@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 7A23D2DEEA5; Tue, 26 May 2020 03:58:20 +0000 (UTC) (envelope-from jhibbits@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49WKv02jdtz4HVV; Tue, 26 May 2020 03:58:20 +0000 (UTC) (envelope-from jhibbits@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 586BA1D568; Tue, 26 May 2020 03:58:20 +0000 (UTC) (envelope-from jhibbits@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04Q3wKgY020176; Tue, 26 May 2020 03:58:20 GMT (envelope-from jhibbits@FreeBSD.org) Received: (from jhibbits@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04Q3wKFo020175; Tue, 26 May 2020 03:58:20 GMT (envelope-from jhibbits@FreeBSD.org) Message-Id: <202005260358.04Q3wKFo020175@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: jhibbits set sender to jhibbits@FreeBSD.org using -f From: Justin Hibbits Date: Tue, 26 May 2020 03:58:20 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361494 - head/sys/powerpc/booke X-SVN-Group: head X-SVN-Commit-Author: jhibbits X-SVN-Commit-Paths: head/sys/powerpc/booke X-SVN-Commit-Revision: 361494 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2020 03:58:20 -0000 Author: jhibbits Date: Tue May 26 03:58:19 2020 New Revision: 361494 URL: https://svnweb.freebsd.org/changeset/base/361494 Log: powerpc/booke pmap: Fix iteration for 64-bit kernel page table creation Kernel page tables actually start at index 4096, given kernel base address of 0xc008000000000000, not index 0, which would yield 0xc000000000000000. Fix this by indexing at the real base, instead of the assumed base. Modified: head/sys/powerpc/booke/pmap_64.c Modified: head/sys/powerpc/booke/pmap_64.c ============================================================================== --- head/sys/powerpc/booke/pmap_64.c Tue May 26 02:27:10 2020 (r361493) +++ head/sys/powerpc/booke/pmap_64.c Tue May 26 03:58:19 2020 (r361494) @@ -553,7 +553,8 @@ kernel_pte_alloc(vm_offset_t data_end, vm_offset_t add } va = VM_MIN_KERNEL_ADDRESS; - for (i = 0; i < pdir_l1s; i++, l1_va += PAGE_SIZE) { + for (i = PG_ROOT_IDX(va); i < PG_ROOT_IDX(va) + pdir_l1s; + i++, l1_va += PAGE_SIZE) { kernel_pmap->pm_root[i] = (pte_t ***)l1_va; for (j = 0; j < PDIR_L1_NENTRIES && va < VM_MAX_KERNEL_ADDRESS; From owner-svn-src-all@freebsd.org Tue May 26 05:54:00 2020 Return-Path: Delivered-To: svn-src-all@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 B1DAA2F2505; Tue, 26 May 2020 05:54:00 +0000 (UTC) (envelope-from avg@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49WNSS4L50z4R4y; Tue, 26 May 2020 05:54:00 +0000 (UTC) (envelope-from avg@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 901E91E7DE; Tue, 26 May 2020 05:54:00 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04Q5s050093304; Tue, 26 May 2020 05:54:00 GMT (envelope-from avg@FreeBSD.org) Received: (from avg@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04Q5s030093303; Tue, 26 May 2020 05:54:00 GMT (envelope-from avg@FreeBSD.org) Message-Id: <202005260554.04Q5s030093303@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: avg set sender to avg@FreeBSD.org using -f From: Andriy Gapon Date: Tue, 26 May 2020 05:54:00 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org Subject: svn commit: r361495 - stable/12/sys/dev/acpica X-SVN-Group: stable-12 X-SVN-Commit-Author: avg X-SVN-Commit-Paths: stable/12/sys/dev/acpica X-SVN-Commit-Revision: 361495 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2020 05:54:00 -0000 Author: avg Date: Tue May 26 05:54:00 2020 New Revision: 361495 URL: https://svnweb.freebsd.org/changeset/base/361495 Log: MFC r360657: acpi_video: support systems without non-essential methods Only _BCL and _BCM methods seem to be essential to the driver's operation. If _BQC is missing then we can assume that the current brightness is whatever we set by the last _BCM invocation. If _DCS or _DGS is missing then we can make assumptions as well. The change is based on a patch suggested by Anthony Jenkins in PR 207086. PR: 207086 Modified: stable/12/sys/dev/acpica/acpi_video.c Directory Properties: stable/12/ (props changed) Modified: stable/12/sys/dev/acpica/acpi_video.c ============================================================================== --- stable/12/sys/dev/acpica/acpi_video.c Tue May 26 03:58:19 2020 (r361494) +++ stable/12/sys/dev/acpica/acpi_video.c Tue May 26 05:54:00 2020 (r361495) @@ -51,6 +51,8 @@ struct acpi_video_output { int num; STAILQ_ENTRY(acpi_video_output) next; } vo_unit; + int vo_hasbqc; /* Query method is present. */ + int vo_level; /* Cached level when !vo_hasbqc. */ int vo_brightness; int vo_fullpower; int vo_economy; @@ -95,8 +97,8 @@ static void vid_set_switch_policy(ACPI_HANDLE, UINT32) static int vid_enum_outputs(ACPI_HANDLE, void(*)(ACPI_HANDLE, UINT32, void *), void *); static int vo_get_brightness_levels(ACPI_HANDLE, int **); -static int vo_get_brightness(ACPI_HANDLE); -static void vo_set_brightness(ACPI_HANDLE, int); +static int vo_get_brightness(struct acpi_video_output *); +static void vo_set_brightness(struct acpi_video_output *, int); static UINT32 vo_get_device_status(ACPI_HANDLE); static UINT32 vo_get_graphics_state(ACPI_HANDLE); static void vo_set_device_state(ACPI_HANDLE, UINT32); @@ -326,9 +328,9 @@ acpi_video_resume(device_t dev) if ((vo_get_device_status(vo->handle) & DCS_ACTIVE) == 0) continue; - level = vo_get_brightness(vo->handle); + level = vo_get_brightness(vo); if (level != -1) - vo_set_brightness(vo->handle, level); + vo_set_brightness(vo, level); } ACPI_SERIAL_END(video_output); ACPI_SERIAL_END(video); @@ -418,7 +420,7 @@ acpi_video_power_profile(void *context) ACPI_SERIAL_BEGIN(video_output); STAILQ_FOREACH(vo, &sc->vid_outputs, vo_next) { if (vo->vo_levels != NULL && vo->vo_brightness == -1) - vo_set_brightness(vo->handle, + vo_set_brightness(vo, state == POWER_PROFILE_ECONOMY ? vo->vo_economy : vo->vo_fullpower); } @@ -517,6 +519,8 @@ acpi_video_vo_init(UINT32 adr) vo->handle = NULL; vo->adr = adr; vo->vo_unit.num = n; + vo->vo_hasbqc = -1; + vo->vo_level = -1; vo->vo_brightness = -1; vo->vo_fullpower = -1; /* TODO: override with tunables */ vo->vo_economy = -1; @@ -696,7 +700,7 @@ acpi_video_vo_notify_handler(ACPI_HANDLE handle, UINT3 case VID_NOTIFY_ZERO_BRN: if (vo->vo_levels == NULL) goto out; - level = vo_get_brightness(handle); + level = vo_get_brightness(vo); if (level < 0) goto out; break; @@ -740,7 +744,7 @@ acpi_video_vo_notify_handler(ACPI_HANDLE handle, UINT3 break; } if (new_level != level) { - vo_set_brightness(handle, new_level); + vo_set_brightness(vo, new_level); vo->vo_brightness = new_level; } @@ -805,7 +809,7 @@ acpi_video_vo_bright_sysctl(SYSCTL_HANDLER_ARGS) if (level != -1 && (err = acpi_video_vo_check_level(vo, level))) goto out; vo->vo_brightness = level; - vo_set_brightness(vo->handle, (level == -1) ? preset : level); + vo_set_brightness(vo, (level == -1) ? preset : level); out: ACPI_SERIAL_END(video_output); @@ -846,7 +850,7 @@ acpi_video_vo_presets_sysctl(SYSCTL_HANDLER_ARGS) goto out; if (vo->vo_brightness == -1 && (power_profile_get_state() == arg2)) - vo_set_brightness(vo->handle, level); + vo_set_brightness(vo, level); *preset = level; out: @@ -1016,15 +1020,39 @@ out: } static int -vo_get_brightness(ACPI_HANDLE handle) +vo_get_bqc(struct acpi_video_output *vo, UINT32 *level) { + ACPI_STATUS status; + + switch (vo->vo_hasbqc) { + case 1: + case -1: + status = acpi_GetInteger(vo->handle, "_BQC", level); + if (vo->vo_hasbqc == 1) + break; + vo->vo_hasbqc = status != AE_NOT_FOUND; + if (vo->vo_hasbqc == 1) + break; + /* FALLTHROUGH */ + default: + KASSERT(vo->vo_hasbqc == 0, + ("bad vo_hasbqc state %d", vo->vo_hasbqc)); + *level = vo->vo_level; + status = AE_OK; + } + return (status); +} + +static int +vo_get_brightness(struct acpi_video_output *vo) +{ UINT32 level; ACPI_STATUS status; ACPI_SERIAL_ASSERT(video_output); - status = acpi_GetInteger(handle, "_BQC", &level); + status = vo_get_bqc(vo, &level); if (ACPI_FAILURE(status)) { - printf("can't evaluate %s._BQC - %s\n", acpi_name(handle), + printf("can't evaluate %s._BQC - %s\n", acpi_name(vo->handle), AcpiFormatException(status)); return (-1); } @@ -1035,16 +1063,19 @@ vo_get_brightness(ACPI_HANDLE handle) } static void -vo_set_brightness(ACPI_HANDLE handle, int level) +vo_set_brightness(struct acpi_video_output *vo, int level) { char notify_buf[16]; ACPI_STATUS status; ACPI_SERIAL_ASSERT(video_output); - status = acpi_SetInteger(handle, "_BCM", level); - if (ACPI_FAILURE(status)) + status = acpi_SetInteger(vo->handle, "_BCM", level); + if (ACPI_FAILURE(status)) { printf("can't evaluate %s._BCM - %s\n", - acpi_name(handle), AcpiFormatException(status)); + acpi_name(vo->handle), AcpiFormatException(status)); + } else { + vo->vo_level = level; + } snprintf(notify_buf, sizeof(notify_buf), "notify=%d", level); devctl_notify("ACPI", "Video", "brightness", notify_buf); } @@ -1058,9 +1089,18 @@ vo_get_device_status(ACPI_HANDLE handle) ACPI_SERIAL_ASSERT(video_output); dcs = 0; status = acpi_GetInteger(handle, "_DCS", &dcs); - if (ACPI_FAILURE(status)) - printf("can't evaluate %s._DCS - %s\n", - acpi_name(handle), AcpiFormatException(status)); + if (ACPI_FAILURE(status)) { + /* + * If the method is missing, assume that the device is always + * operational. + */ + if (status != AE_NOT_FOUND) { + printf("can't evaluate %s._DCS - %s\n", + acpi_name(handle), AcpiFormatException(status)); + } else { + dcs = 0xff; + } + } return (dcs); } @@ -1073,9 +1113,18 @@ vo_get_graphics_state(ACPI_HANDLE handle) dgs = 0; status = acpi_GetInteger(handle, "_DGS", &dgs); - if (ACPI_FAILURE(status)) - printf("can't evaluate %s._DGS - %s\n", - acpi_name(handle), AcpiFormatException(status)); + if (ACPI_FAILURE(status)) { + /* + * If the method is missing, assume that the device is always + * operational. + */ + if (status != AE_NOT_FOUND) { + printf("can't evaluate %s._DGS - %s\n", + acpi_name(handle), AcpiFormatException(status)); + } else { + dgs = 0xff; + } + } return (dgs); } @@ -1087,7 +1136,7 @@ vo_set_device_state(ACPI_HANDLE handle, UINT32 state) ACPI_SERIAL_ASSERT(video_output); status = acpi_SetInteger(handle, "_DSS", state); - if (ACPI_FAILURE(status)) + if (ACPI_FAILURE(status) && status != AE_NOT_FOUND) printf("can't evaluate %s._DSS - %s\n", - acpi_name(handle), AcpiFormatException(status)); + acpi_name(handle), AcpiFormatException(status)); } From owner-svn-src-all@freebsd.org Tue May 26 05:55:46 2020 Return-Path: Delivered-To: svn-src-all@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 D532F2F22D2; Tue, 26 May 2020 05:55:46 +0000 (UTC) (envelope-from avg@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49WNVV5H7lz4RKx; Tue, 26 May 2020 05:55:46 +0000 (UTC) (envelope-from avg@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 B059C1EC16; Tue, 26 May 2020 05:55:46 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04Q5tknZ093491; Tue, 26 May 2020 05:55:46 GMT (envelope-from avg@FreeBSD.org) Received: (from avg@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04Q5tkhi093490; Tue, 26 May 2020 05:55:46 GMT (envelope-from avg@FreeBSD.org) Message-Id: <202005260555.04Q5tkhi093490@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: avg set sender to avg@FreeBSD.org using -f From: Andriy Gapon Date: Tue, 26 May 2020 05:55:46 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org Subject: svn commit: r361496 - stable/12/cddl/contrib/opensolaris/cmd/zfs X-SVN-Group: stable-12 X-SVN-Commit-Author: avg X-SVN-Commit-Paths: stable/12/cddl/contrib/opensolaris/cmd/zfs X-SVN-Commit-Revision: 361496 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2020 05:55:46 -0000 Author: avg Date: Tue May 26 05:55:46 2020 New Revision: 361496 URL: https://svnweb.freebsd.org/changeset/base/361496 Log: MFC r360956: zfs allow/unallow should work with numeric uid/gid And that should work even (especially) if there is no matching user or group name. This change allows to see and modify delegations for deleted groups and users. The change is originally by Xin Li. illumos report: https://www.illumos.org/issues/6037 OpenZFS (ZoL) PR: https://github.com/openzfs/zfs/pull/10280 Modified: stable/12/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c Directory Properties: stable/12/ (props changed) Modified: stable/12/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c ============================================================================== --- stable/12/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c Tue May 26 05:54:00 2020 (r361495) +++ stable/12/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c Tue May 26 05:55:46 2020 (r361496) @@ -4693,6 +4693,14 @@ parse_fs_perm(fs_perm_t *fsperm, nvlist_t *nvl) (void) strlcpy( node->who_perm.who_ug_name, nice_name, 256); + else { + /* User or group unknown */ + (void) snprintf( + node->who_perm.who_ug_name, + sizeof ( + node->who_perm.who_ug_name), + "(unknown: %d)", rid); + } } uu_avl_insert(avl, node, idx); @@ -5191,9 +5199,9 @@ construct_fsacl_list(boolean_t un, struct allow_opts * if (p != NULL) rid = p->pw_uid; - else { + else if (*endch != '\0') { (void) snprintf(errbuf, 256, gettext( - "invalid user %s"), curr); + "invalid user %s\n"), curr); allow_usage(un, B_TRUE, errbuf); } } else if (opts->group) { @@ -5205,9 +5213,9 @@ construct_fsacl_list(boolean_t un, struct allow_opts * if (g != NULL) rid = g->gr_gid; - else { + else if (*endch != '\0') { (void) snprintf(errbuf, 256, gettext( - "invalid group %s"), curr); + "invalid group %s\n"), curr); allow_usage(un, B_TRUE, errbuf); } } else { @@ -5233,7 +5241,7 @@ construct_fsacl_list(boolean_t un, struct allow_opts * rid = g->gr_gid; } else { (void) snprintf(errbuf, 256, gettext( - "invalid user/group %s"), curr); + "invalid user/group %s\n"), curr); allow_usage(un, B_TRUE, errbuf); } } From owner-svn-src-all@freebsd.org Tue May 26 06:55:04 2020 Return-Path: Delivered-To: svn-src-all@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 B9DF12F395B; Tue, 26 May 2020 06:55:04 +0000 (UTC) (envelope-from lwhsu@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49WPpw4bw2z4WfG; Tue, 26 May 2020 06:55:04 +0000 (UTC) (envelope-from lwhsu@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 7F6AE1F5F0; Tue, 26 May 2020 06:55:04 +0000 (UTC) (envelope-from lwhsu@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04Q6t4Kv030533; Tue, 26 May 2020 06:55:04 GMT (envelope-from lwhsu@FreeBSD.org) Received: (from lwhsu@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04Q6t3p3030529; Tue, 26 May 2020 06:55:03 GMT (envelope-from lwhsu@FreeBSD.org) Message-Id: <202005260655.04Q6t3p3030529@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: lwhsu set sender to lwhsu@FreeBSD.org using -f From: Li-Wen Hsu Date: Tue, 26 May 2020 06:55:03 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361497 - head/tests/sys/netipsec/tunnel X-SVN-Group: head X-SVN-Commit-Author: lwhsu X-SVN-Commit-Paths: head/tests/sys/netipsec/tunnel X-SVN-Commit-Revision: 361497 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2020 06:55:04 -0000 Author: lwhsu Date: Tue May 26 06:55:03 2020 New Revision: 361497 URL: https://svnweb.freebsd.org/changeset/base/361497 Log: Disable failing test cases in CI: sys.netipsec.tunnel.aes_cbc_128_hmac_sha1.v4 sys.netipsec.tunnel.aes_cbc_256_hmac_sha2_256.v4 sys.netipsec.tunnel.aesni_aes_cbc_128_hmac_sha1.v4 sys.netipsec.tunnel.aesni_aes_cbc_256_hmac_sha2_256.v4 PR: 246737 Sponsored by: The FreeBSD Foundation Modified: head/tests/sys/netipsec/tunnel/aes_cbc_128_hmac_sha1.sh head/tests/sys/netipsec/tunnel/aes_cbc_256_hmac_sha2_256.sh head/tests/sys/netipsec/tunnel/aesni_aes_cbc_128_hmac_sha1.sh head/tests/sys/netipsec/tunnel/aesni_aes_cbc_256_hmac_sha2_256.sh Modified: head/tests/sys/netipsec/tunnel/aes_cbc_128_hmac_sha1.sh ============================================================================== --- head/tests/sys/netipsec/tunnel/aes_cbc_128_hmac_sha1.sh Tue May 26 05:55:46 2020 (r361496) +++ head/tests/sys/netipsec/tunnel/aes_cbc_128_hmac_sha1.sh Tue May 26 06:55:03 2020 (r361497) @@ -11,6 +11,10 @@ v4_head() v4_body() { + if [ "$(atf_config_get ci false)" = "true" ]; then + atf_skip "https://bugs.freebsd.org/246737" + fi + # Unload AESNI module if loaded kldstat -q -n aesni && kldunload aesni Modified: head/tests/sys/netipsec/tunnel/aes_cbc_256_hmac_sha2_256.sh ============================================================================== --- head/tests/sys/netipsec/tunnel/aes_cbc_256_hmac_sha2_256.sh Tue May 26 05:55:46 2020 (r361496) +++ head/tests/sys/netipsec/tunnel/aes_cbc_256_hmac_sha2_256.sh Tue May 26 06:55:03 2020 (r361497) @@ -11,6 +11,10 @@ v4_head() v4_body() { + if [ "$(atf_config_get ci false)" = "true" ]; then + atf_skip "https://bugs.freebsd.org/246737" + fi + # load AESNI module if not already kldstat -q -n aesni || kldload aesni Modified: head/tests/sys/netipsec/tunnel/aesni_aes_cbc_128_hmac_sha1.sh ============================================================================== --- head/tests/sys/netipsec/tunnel/aesni_aes_cbc_128_hmac_sha1.sh Tue May 26 05:55:46 2020 (r361496) +++ head/tests/sys/netipsec/tunnel/aesni_aes_cbc_128_hmac_sha1.sh Tue May 26 06:55:03 2020 (r361497) @@ -11,6 +11,10 @@ v4_head() v4_body() { + if [ "$(atf_config_get ci false)" = "true" ]; then + atf_skip "https://bugs.freebsd.org/246737" + fi + # load AESNI module if not already kldstat -q -n aesni || kldload aesni Modified: head/tests/sys/netipsec/tunnel/aesni_aes_cbc_256_hmac_sha2_256.sh ============================================================================== --- head/tests/sys/netipsec/tunnel/aesni_aes_cbc_256_hmac_sha2_256.sh Tue May 26 05:55:46 2020 (r361496) +++ head/tests/sys/netipsec/tunnel/aesni_aes_cbc_256_hmac_sha2_256.sh Tue May 26 06:55:03 2020 (r361497) @@ -11,6 +11,10 @@ v4_head() v4_body() { + if [ "$(atf_config_get ci false)" = "true" ]; then + atf_skip "https://bugs.freebsd.org/246737" + fi + # Unload AESNI module if loaded kldstat -q -n aesni && kldunload aesni From owner-svn-src-all@freebsd.org Tue May 26 07:41:47 2020 Return-Path: Delivered-To: svn-src-all@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 B59372F47A6; Tue, 26 May 2020 07:41:47 +0000 (UTC) (envelope-from hselasky@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49WQrq4SXXz4Zr2; Tue, 26 May 2020 07:41:47 +0000 (UTC) (envelope-from hselasky@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 9468D2021D; Tue, 26 May 2020 07:41:47 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04Q7flMN060647; Tue, 26 May 2020 07:41:47 GMT (envelope-from hselasky@FreeBSD.org) Received: (from hselasky@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04Q7flDn060645; Tue, 26 May 2020 07:41:47 GMT (envelope-from hselasky@FreeBSD.org) Message-Id: <202005260741.04Q7flDn060645@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: hselasky set sender to hselasky@FreeBSD.org using -f From: Hans Petter Selasky Date: Tue, 26 May 2020 07:41:47 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361498 - in head/sys/dev/mlx5: . mlx5_core X-SVN-Group: head X-SVN-Commit-Author: hselasky X-SVN-Commit-Paths: in head/sys/dev/mlx5: . mlx5_core X-SVN-Commit-Revision: 361498 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2020 07:41:47 -0000 Author: hselasky Date: Tue May 26 07:41:46 2020 New Revision: 361498 URL: https://svnweb.freebsd.org/changeset/base/361498 Log: Sync with Linux packet pacing enhancements in mlx5en(4). Linux commit: 05d3ac978ed25b753bfe34fe76c50c31ee506a82 MFC after: 1 week Sponsored by: Mellanox Technologies Modified: head/sys/dev/mlx5/mlx5_core/mlx5_rl.c head/sys/dev/mlx5/mlx5_ifc.h Modified: head/sys/dev/mlx5/mlx5_core/mlx5_rl.c ============================================================================== --- head/sys/dev/mlx5/mlx5_core/mlx5_rl.c Tue May 26 06:55:03 2020 (r361497) +++ head/sys/dev/mlx5/mlx5_core/mlx5_rl.c Tue May 26 07:41:46 2020 (r361498) @@ -58,16 +58,14 @@ static struct mlx5_rl_entry *find_rl_entry(struct mlx5 static int mlx5_set_rate_limit_cmd(struct mlx5_core_dev *dev, u32 rate, u32 burst, u16 index) { - u32 in[MLX5_ST_SZ_DW(set_rate_limit_in)] = {0}; - u32 out[MLX5_ST_SZ_DW(set_rate_limit_out)] = {0}; + u32 in[MLX5_ST_SZ_DW(set_rate_limit_in)] = {}; + u32 out[MLX5_ST_SZ_DW(set_rate_limit_out)] = {}; - MLX5_SET(set_rate_limit_in, in, opcode, - MLX5_CMD_OP_SET_RATE_LIMIT); + MLX5_SET(set_rate_limit_in, in, opcode, MLX5_CMD_OP_SET_RATE_LIMIT); MLX5_SET(set_rate_limit_in, in, rate_limit_index, index); MLX5_SET(set_rate_limit_in, in, rate_limit, rate); - - if (MLX5_CAP_QOS(dev, packet_pacing_burst_bound)) - MLX5_SET(set_rate_limit_in, in, burst_upper_bound, burst); + MLX5_SET(set_rate_limit_in, in, burst_upper_bound, burst); + MLX5_SET(set_rate_limit_in, in, typical_packet_size, 0 /* use MTU */); return mlx5_cmd_exec(dev, in, sizeof(in), out, sizeof(out)); } Modified: head/sys/dev/mlx5/mlx5_ifc.h ============================================================================== --- head/sys/dev/mlx5/mlx5_ifc.h Tue May 26 06:55:03 2020 (r361497) +++ head/sys/dev/mlx5/mlx5_ifc.h Tue May 26 07:41:46 2020 (r361498) @@ -690,7 +690,8 @@ struct mlx5_ifc_qos_cap_bits { u8 esw_rate_limit[0x1]; u8 hll[0x1]; u8 packet_pacing_burst_bound[0x1]; - u8 reserved_at_6[0x1a]; + u8 packet_pacing_typical_size[0x1]; + u8 reserved_at_7[0x19]; u8 reserved_at_20[0x20]; @@ -7790,7 +7791,13 @@ struct mlx5_ifc_set_rate_limit_in_bits { u8 reserved_at_60[0x20]; u8 rate_limit[0x20]; + u8 burst_upper_bound[0x20]; + + u8 reserved_at_c0[0x10]; + u8 typical_packet_size[0x10]; + + u8 reserved_at_e0[0x120]; }; struct mlx5_ifc_access_register_out_bits { From owner-svn-src-all@freebsd.org Tue May 26 08:25:25 2020 Return-Path: Delivered-To: svn-src-all@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 04A7B2F54F2; Tue, 26 May 2020 08:25:25 +0000 (UTC) (envelope-from hselasky@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49WRq86MyPz4fHw; Tue, 26 May 2020 08:25:24 +0000 (UTC) (envelope-from hselasky@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 D611A2098F; Tue, 26 May 2020 08:25:24 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04Q8POFI087115; Tue, 26 May 2020 08:25:24 GMT (envelope-from hselasky@FreeBSD.org) Received: (from hselasky@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04Q8POcq087114; Tue, 26 May 2020 08:25:24 GMT (envelope-from hselasky@FreeBSD.org) Message-Id: <202005260825.04Q8POcq087114@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: hselasky set sender to hselasky@FreeBSD.org using -f From: Hans Petter Selasky Date: Tue, 26 May 2020 08:25:24 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361499 - head/sys/kern X-SVN-Group: head X-SVN-Commit-Author: hselasky X-SVN-Commit-Paths: head/sys/kern X-SVN-Commit-Revision: 361499 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2020 08:25:25 -0000 Author: hselasky Date: Tue May 26 08:25:24 2020 New Revision: 361499 URL: https://svnweb.freebsd.org/changeset/base/361499 Log: Fix build issue after r360292 when using both RSS and KERN_TLS options. Sponsored by: Mellanox Technologies Modified: head/sys/kern/uipc_ktls.c Modified: head/sys/kern/uipc_ktls.c ============================================================================== --- head/sys/kern/uipc_ktls.c Tue May 26 07:41:46 2020 (r361498) +++ head/sys/kern/uipc_ktls.c Tue May 26 08:25:24 2020 (r361499) @@ -58,7 +58,6 @@ __FBSDID("$FreeBSD$"); #include #ifdef RSS #include -#include #include #endif #include From owner-svn-src-all@freebsd.org Tue May 26 10:24:07 2020 Return-Path: Delivered-To: svn-src-all@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 85FE52F8ABC; Tue, 26 May 2020 10:24:07 +0000 (UTC) (envelope-from royger@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49WVS7322hz3c0Z; Tue, 26 May 2020 10:24:07 +0000 (UTC) (envelope-from royger@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 631862215A; Tue, 26 May 2020 10:24:07 +0000 (UTC) (envelope-from royger@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04QAO7oM062921; Tue, 26 May 2020 10:24:07 GMT (envelope-from royger@FreeBSD.org) Received: (from royger@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04QAO7DL062920; Tue, 26 May 2020 10:24:07 GMT (envelope-from royger@FreeBSD.org) Message-Id: <202005261024.04QAO7DL062920@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: royger set sender to royger@FreeBSD.org using -f From: =?UTF-8?Q?Roger_Pau_Monn=c3=a9?= Date: Tue, 26 May 2020 10:24:07 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361500 - head/sys/amd64/amd64 X-SVN-Group: head X-SVN-Commit-Author: royger X-SVN-Commit-Paths: head/sys/amd64/amd64 X-SVN-Commit-Revision: 361500 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2020 10:24:07 -0000 Author: royger Date: Tue May 26 10:24:06 2020 New Revision: 361500 URL: https://svnweb.freebsd.org/changeset/base/361500 Log: xen-locore: fix size in GDT descriptor There was an off-by-one in the GDT descriptor size field used by the early Xen boot code. The GDT descriptor size should be the size of the GDT minus one. No functional change expected as a result of this change. Sponsored by: Citrix Systems R&D Modified: head/sys/amd64/amd64/xen-locore.S Modified: head/sys/amd64/amd64/xen-locore.S ============================================================================== --- head/sys/amd64/amd64/xen-locore.S Tue May 26 08:25:24 2020 (r361499) +++ head/sys/amd64/amd64/xen-locore.S Tue May 26 10:24:06 2020 (r361500) @@ -207,7 +207,7 @@ PT2: /* 64bit GDT */ gdtdesc: - .word gdtend - gdt + .word gdtend - gdt - 1 .long VTOP(gdt) # low .long 0 # high gdt: @@ -221,7 +221,7 @@ gdtend: /* 32bit GDT */ gdtdesc32: - .word gdt32end - gdt32 + .word gdt32end - gdt32 - 1 .long VTOP(gdt32) .long 0 gdt32: From owner-svn-src-all@freebsd.org Tue May 26 13:35:42 2020 Return-Path: Delivered-To: svn-src-all@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 8AA1A2FEC3E; Tue, 26 May 2020 13:35:42 +0000 (UTC) (envelope-from kib@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49WZjB36nWz49h4; Tue, 26 May 2020 13:35:42 +0000 (UTC) (envelope-from kib@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 6620D244F5; Tue, 26 May 2020 13:35:42 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04QDZgxQ089507; Tue, 26 May 2020 13:35:42 GMT (envelope-from kib@FreeBSD.org) Received: (from kib@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04QDZgU4089506; Tue, 26 May 2020 13:35:42 GMT (envelope-from kib@FreeBSD.org) Message-Id: <202005261335.04QDZgU4089506@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kib set sender to kib@FreeBSD.org using -f From: Konstantin Belousov Date: Tue, 26 May 2020 13:35:42 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org Subject: svn commit: r361501 - stable/12/include X-SVN-Group: stable-12 X-SVN-Commit-Author: kib X-SVN-Commit-Paths: stable/12/include X-SVN-Commit-Revision: 361501 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2020 13:35:42 -0000 Author: kib Date: Tue May 26 13:35:41 2020 New Revision: 361501 URL: https://svnweb.freebsd.org/changeset/base/361501 Log: MFC r360984: Make include/malloc.h usable again. Modified: stable/12/include/malloc.h Directory Properties: stable/12/ (props changed) Modified: stable/12/include/malloc.h ============================================================================== --- stable/12/include/malloc.h Tue May 26 10:24:06 2020 (r361500) +++ stable/12/include/malloc.h Tue May 26 13:35:41 2020 (r361501) @@ -1,6 +1,6 @@ -/* $FreeBSD$ */ -#if __STDC__ -#error " has been replaced by " -#else +/*- + * This file is in the public domain. + * $FreeBSD$ + */ #include -#endif +#include From owner-svn-src-all@freebsd.org Tue May 26 13:57:14 2020 Return-Path: Delivered-To: svn-src-all@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 C5DE32FF88D; Tue, 26 May 2020 13:57:14 +0000 (UTC) (envelope-from mav@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49WbB24tJgz4CNf; Tue, 26 May 2020 13:57:14 +0000 (UTC) (envelope-from mav@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 A29BF246B3; Tue, 26 May 2020 13:57:14 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04QDvE5L002037; Tue, 26 May 2020 13:57:14 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04QDvEsh002036; Tue, 26 May 2020 13:57:14 GMT (envelope-from mav@FreeBSD.org) Message-Id: <202005261357.04QDvEsh002036@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Tue, 26 May 2020 13:57:14 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361502 - head/sys/cam/ctl X-SVN-Group: head X-SVN-Commit-Author: mav X-SVN-Commit-Paths: head/sys/cam/ctl X-SVN-Commit-Revision: 361502 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2020 13:57:14 -0000 Author: mav Date: Tue May 26 13:57:14 2020 New Revision: 361502 URL: https://svnweb.freebsd.org/changeset/base/361502 Log: Do not remove upcall if we haven't yet. This fixes assertion if we failed to bind listening HA socket. MFC after: 1 week Sponsored by: iXsystems, Inc. Modified: head/sys/cam/ctl/ctl_ha.c Modified: head/sys/cam/ctl/ctl_ha.c ============================================================================== --- head/sys/cam/ctl/ctl_ha.c Tue May 26 13:35:41 2020 (r361501) +++ head/sys/cam/ctl/ctl_ha.c Tue May 26 13:57:14 2020 (r361502) @@ -197,7 +197,8 @@ ctl_ha_lclose(struct ha_softc *softc) if (softc->ha_lso) { SOCKBUF_LOCK(&softc->ha_lso->so_rcv); - soupcall_clear(softc->ha_lso, SO_RCV); + if (softc->ha_lso->so_rcv.sb_upcall != NULL) + soupcall_clear(softc->ha_lso, SO_RCV); SOCKBUF_UNLOCK(&softc->ha_lso->so_rcv); soclose(softc->ha_lso); softc->ha_lso = NULL; From owner-svn-src-all@freebsd.org Tue May 26 14:05:07 2020 Return-Path: Delivered-To: svn-src-all@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 5487B2FFB91; Tue, 26 May 2020 14:05:07 +0000 (UTC) (envelope-from markj@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49WbM71g9hz4Crk; Tue, 26 May 2020 14:05:07 +0000 (UTC) (envelope-from markj@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 346EB24A14; Tue, 26 May 2020 14:05:07 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04QE5763008309; Tue, 26 May 2020 14:05:07 GMT (envelope-from markj@FreeBSD.org) Received: (from markj@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04QE57bU008308; Tue, 26 May 2020 14:05:07 GMT (envelope-from markj@FreeBSD.org) Message-Id: <202005261405.04QE57bU008308@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: markj set sender to markj@FreeBSD.org using -f From: Mark Johnston Date: Tue, 26 May 2020 14:05:07 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org Subject: svn commit: r361503 - stable/12/sys/kern X-SVN-Group: stable-12 X-SVN-Commit-Author: markj X-SVN-Commit-Paths: stable/12/sys/kern X-SVN-Commit-Revision: 361503 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2020 14:05:07 -0000 Author: markj Date: Tue May 26 14:05:06 2020 New Revision: 361503 URL: https://svnweb.freebsd.org/changeset/base/361503 Log: MFC r361262: Use the symbolic name for "modmetadata_set". Modified: stable/12/sys/kern/kern_linker.c Directory Properties: stable/12/ (props changed) Modified: stable/12/sys/kern/kern_linker.c ============================================================================== --- stable/12/sys/kern/kern_linker.c Tue May 26 13:57:14 2020 (r361502) +++ stable/12/sys/kern/kern_linker.c Tue May 26 14:05:06 2020 (r361503) @@ -370,8 +370,7 @@ linker_file_register_modules(linker_file_t lf) sx_assert(&kld_sx, SA_XLOCKED); - if (linker_file_lookup_set(lf, "modmetadata_set", &start, - &stop, NULL) != 0) { + if (linker_file_lookup_set(lf, MDT_SETNAME, &start, &stop, NULL) != 0) { /* * This fallback should be unnecessary, but if we get booted * from boot2 instead of loader and we are missing our From owner-svn-src-all@freebsd.org Tue May 26 14:05:38 2020 Return-Path: Delivered-To: svn-src-all@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 863B92FFD84; Tue, 26 May 2020 14:05:38 +0000 (UTC) (envelope-from markj@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49WbMk32vRz4CsC; Tue, 26 May 2020 14:05:38 +0000 (UTC) (envelope-from markj@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 62F6E24561; Tue, 26 May 2020 14:05:38 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04QE5cST008377; Tue, 26 May 2020 14:05:38 GMT (envelope-from markj@FreeBSD.org) Received: (from markj@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04QE5c9a008376; Tue, 26 May 2020 14:05:38 GMT (envelope-from markj@FreeBSD.org) Message-Id: <202005261405.04QE5c9a008376@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: markj set sender to markj@FreeBSD.org using -f From: Mark Johnston Date: Tue, 26 May 2020 14:05:38 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org Subject: svn commit: r361504 - stable/12/lib/librtld_db X-SVN-Group: stable-12 X-SVN-Commit-Author: markj X-SVN-Commit-Paths: stable/12/lib/librtld_db X-SVN-Commit-Revision: 361504 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2020 14:05:38 -0000 Author: markj Date: Tue May 26 14:05:37 2020 New Revision: 361504 URL: https://svnweb.freebsd.org/changeset/base/361504 Log: MFC r360979: librtld_db: Fix shlib mapping offsets. PR: 244732 Modified: stable/12/lib/librtld_db/rtld_db.c Directory Properties: stable/12/ (props changed) Modified: stable/12/lib/librtld_db/rtld_db.c ============================================================================== --- stable/12/lib/librtld_db/rtld_db.c Tue May 26 14:05:06 2020 (r361503) +++ stable/12/lib/librtld_db/rtld_db.c Tue May 26 14:05:37 2020 (r361504) @@ -160,9 +160,12 @@ rd_err_e rd_loadobj_iter(rd_agent_t *rdap, rl_iter_f *cb, void *clnt_data) { struct kinfo_vmentry *kves, *kve; + const char *path; + uint64_t fileid; rd_loadobj_t rdl; rd_err_e ret; - int cnt, i, lastvn; + uintptr_t base; + int cnt, i; DPRINTF("%s\n", __func__); @@ -171,27 +174,38 @@ rd_loadobj_iter(rd_agent_t *rdap, rl_iter_f *cb, void return (RD_ERR); } + base = 0; + fileid = 0; + path = NULL; ret = RD_OK; - lastvn = 0; for (i = 0; i < cnt; i++) { - kve = kves + i; - if (kve->kve_type == KVME_TYPE_VNODE) - lastvn = i; + kve = &kves[i]; + /* + * Cache the base offset of the file mapping. The kve_offset + * field gives the file offset of a particular mapping into the + * file, but we want the mapping offset relative to the base + * mapping. + */ + if (kve->kve_type == KVME_TYPE_VNODE && + kve->kve_vn_fileid != fileid) { + base = kve->kve_start; + fileid = kve->kve_vn_fileid; + path = kve->kve_path; + } memset(&rdl, 0, sizeof(rdl)); /* * Map the kinfo_vmentry struct to the rd_loadobj structure. */ rdl.rdl_saddr = kve->kve_start; rdl.rdl_eaddr = kve->kve_end; - rdl.rdl_offset = kve->kve_offset; + rdl.rdl_offset = kve->kve_start - base; if (kve->kve_protection & KVME_PROT_READ) rdl.rdl_prot |= RD_RDL_R; if (kve->kve_protection & KVME_PROT_WRITE) rdl.rdl_prot |= RD_RDL_W; if (kve->kve_protection & KVME_PROT_EXEC) rdl.rdl_prot |= RD_RDL_X; - strlcpy(rdl.rdl_path, kves[lastvn].kve_path, - sizeof(rdl.rdl_path)); + strlcpy(rdl.rdl_path, path, sizeof(rdl.rdl_path)); if ((*cb)(&rdl, clnt_data) != 0) { ret = RD_ERR; break; From owner-svn-src-all@freebsd.org Tue May 26 14:06:07 2020 Return-Path: Delivered-To: svn-src-all@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 D90332FFAD1; Tue, 26 May 2020 14:06:07 +0000 (UTC) (envelope-from markj@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49WbNH5RP5z4DKh; Tue, 26 May 2020 14:06:07 +0000 (UTC) (envelope-from markj@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 B5EAF24B13; Tue, 26 May 2020 14:06:07 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04QE67o5008459; Tue, 26 May 2020 14:06:07 GMT (envelope-from markj@FreeBSD.org) Received: (from markj@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04QE67Yd008458; Tue, 26 May 2020 14:06:07 GMT (envelope-from markj@FreeBSD.org) Message-Id: <202005261406.04QE67Yd008458@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: markj set sender to markj@FreeBSD.org using -f From: Mark Johnston Date: Tue, 26 May 2020 14:06:07 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org Subject: svn commit: r361505 - stable/12/lib/libproc/tests X-SVN-Group: stable-12 X-SVN-Commit-Author: markj X-SVN-Commit-Paths: stable/12/lib/libproc/tests X-SVN-Commit-Revision: 361505 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2020 14:06:07 -0000 Author: markj Date: Tue May 26 14:06:07 2020 New Revision: 361505 URL: https://svnweb.freebsd.org/changeset/base/361505 Log: MFC r360980: Re-enable proc_test:symbol_lookup after r360979. PR: 244732 Modified: stable/12/lib/libproc/tests/proc_test.c Directory Properties: stable/12/ (props changed) Modified: stable/12/lib/libproc/tests/proc_test.c ============================================================================== --- stable/12/lib/libproc/tests/proc_test.c Tue May 26 14:05:37 2020 (r361504) +++ stable/12/lib/libproc/tests/proc_test.c Tue May 26 14:06:07 2020 (r361505) @@ -270,9 +270,6 @@ ATF_TC_BODY(symbol_lookup, tc) u_long saved; int error; - if (atf_tc_get_config_var_as_bool_wd(tc, "ci", false)) - atf_tc_skip("https://bugs.freebsd.org/244732"); - phdl = start_prog(tc, false); error = proc_name2sym(phdl, target_prog_file, "main", &main_sym, NULL); From owner-svn-src-all@freebsd.org Tue May 26 14:10:53 2020 Return-Path: Delivered-To: svn-src-all@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 A31022FFF08; Tue, 26 May 2020 14:10:53 +0000 (UTC) (envelope-from mw@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49WbTn3v9Rz4Dft; Tue, 26 May 2020 14:10:53 +0000 (UTC) (envelope-from mw@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 8126C24B1C; Tue, 26 May 2020 14:10:53 +0000 (UTC) (envelope-from mw@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04QEArlD009498; Tue, 26 May 2020 14:10:53 GMT (envelope-from mw@FreeBSD.org) Received: (from mw@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04QEAr1D009497; Tue, 26 May 2020 14:10:53 GMT (envelope-from mw@FreeBSD.org) Message-Id: <202005261410.04QEAr1D009497@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mw set sender to mw@FreeBSD.org using -f From: Marcin Wojtas Date: Tue, 26 May 2020 14:10:53 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361506 - head/sys/arm/mv X-SVN-Group: head X-SVN-Commit-Author: mw X-SVN-Commit-Paths: head/sys/arm/mv X-SVN-Commit-Revision: 361506 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2020 14:10:53 -0000 Author: mw Date: Tue May 26 14:10:53 2020 New Revision: 361506 URL: https://svnweb.freebsd.org/changeset/base/361506 Log: Restore XHCI operation on Armada 38x r347343 split generic xhci driver into three files. Include generic_xhci_fdt.c when building kernel for Armada SoCs. This brings back XHCI support on these platforms and also others, which use GENERIC config. Submitted by: Kornel Duleba Obtained from: Semihalf MFC after: 1 week Sponsored by: Stormshield Differential Revision: https://reviews.freebsd.org/D24944 Modified: head/sys/arm/mv/files.arm7 Modified: head/sys/arm/mv/files.arm7 ============================================================================== --- head/sys/arm/mv/files.arm7 Tue May 26 14:06:07 2020 (r361505) +++ head/sys/arm/mv/files.arm7 Tue May 26 14:10:53 2020 (r361506) @@ -34,4 +34,5 @@ dev/uart/uart_dev_ns8250.c optional uart dev/uart/uart_dev_snps.c optional uart dev/usb/controller/ehci_mv.c optional ehci dev/usb/controller/generic_xhci.c optional xhci +dev/usb/controller/generic_xhci_fdt.c optional xhci dev/ahci/ahci_mv_fdt.c optional ahci From owner-svn-src-all@freebsd.org Tue May 26 14:16:27 2020 Return-Path: Delivered-To: svn-src-all@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 37E302FFDFA; Tue, 26 May 2020 14:16:27 +0000 (UTC) (envelope-from mw@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49WbcC0mGNz4F14; Tue, 26 May 2020 14:16:27 +0000 (UTC) (envelope-from mw@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 F10B224851; Tue, 26 May 2020 14:16:26 +0000 (UTC) (envelope-from mw@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04QEGQeB014380; Tue, 26 May 2020 14:16:26 GMT (envelope-from mw@FreeBSD.org) Received: (from mw@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04QEGQtN014379; Tue, 26 May 2020 14:16:26 GMT (envelope-from mw@FreeBSD.org) Message-Id: <202005261416.04QEGQtN014379@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mw set sender to mw@FreeBSD.org using -f From: Marcin Wojtas Date: Tue, 26 May 2020 14:16:26 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361507 - head/sys/netipsec X-SVN-Group: head X-SVN-Commit-Author: mw X-SVN-Commit-Paths: head/sys/netipsec X-SVN-Commit-Revision: 361507 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2020 14:16:27 -0000 Author: mw Date: Tue May 26 14:16:26 2020 New Revision: 361507 URL: https://svnweb.freebsd.org/changeset/base/361507 Log: Fix AES-CTR compatibility issue in ipsec r361390 decreased blocksize of AES-CTR from 16 to 1. Because of that ESP payload is no longer aligned to 16 bytes before being encrypted and sent. This is a good change since RFC3686 specifies that the last block doesn't need to be aligned. Since FreeBSD before r361390 couldn't decrypt partial blocks encrypted with AES-CTR we need to enforce 16 byte alignment in order to preserve compatibility. Add a sysctl(on by default) to control it. Submitted by: Kornel Duleba Reviewed by: jhb Obtained from: Semihalf Sponsored by: Stormshield Differential Revision: https://reviews.freebsd.org/D24999 Modified: head/sys/netipsec/xform_esp.c Modified: head/sys/netipsec/xform_esp.c ============================================================================== --- head/sys/netipsec/xform_esp.c Tue May 26 14:10:53 2020 (r361506) +++ head/sys/netipsec/xform_esp.c Tue May 26 14:16:26 2020 (r361507) @@ -80,6 +80,8 @@ #include VNET_DEFINE(int, esp_enable) = 1; +VNET_DEFINE_STATIC(int, esp_ctr_compatibility) = 1; +#define V_esp_ctr_compatibility VNET(esp_ctr_compatibility) VNET_PCPUSTAT_DEFINE(struct espstat, espstat); VNET_PCPUSTAT_SYSINIT(espstat); @@ -90,6 +92,9 @@ VNET_PCPUSTAT_SYSUNINIT(espstat); SYSCTL_DECL(_net_inet_esp); SYSCTL_INT(_net_inet_esp, OID_AUTO, esp_enable, CTLFLAG_VNET | CTLFLAG_RW, &VNET_NAME(esp_enable), 0, ""); +SYSCTL_INT(_net_inet_esp, OID_AUTO, ctr_compatibility, + CTLFLAG_VNET | CTLFLAG_RW, &VNET_NAME(esp_ctr_compatibility), 0, + "Align AES-CTR encrypted transmitted frames to blocksize"); SYSCTL_VNET_PCPUSTAT(_net_inet_esp, IPSECCTL_STATS, stats, struct espstat, espstat, "ESP statistics (struct espstat, netipsec/esp_var.h"); @@ -652,8 +657,14 @@ esp_output(struct mbuf *m, struct secpolicy *sp, struc rlen = m->m_pkthdr.len - skip; /* Raw payload length. */ /* * RFC4303 2.4 Requires 4 byte alignment. + * Old versions of FreeBSD can't decrypt partial blocks encrypted + * with AES-CTR. Align payload to native_blocksize (16 bytes) + * in order to preserve compatibility. */ - blks = MAX(4, espx->blocksize); /* Cipher blocksize */ + if (SAV_ISCTR(sav) && V_esp_ctr_compatibility) + blks = MAX(4, espx->native_blocksize); /* Cipher blocksize */ + else + blks = MAX(4, espx->blocksize); /* XXX clamp padding length a la KAME??? */ padding = ((blks - ((rlen + 2) % blks)) % blks) + 2; From owner-svn-src-all@freebsd.org Tue May 26 15:04:50 2020 Return-Path: Delivered-To: svn-src-all@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 439AC2CA0F1; Tue, 26 May 2020 15:04:50 +0000 (UTC) (envelope-from mw@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49Wch21Q7qz4JxL; Tue, 26 May 2020 15:04:50 +0000 (UTC) (envelope-from mw@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 2B8EB255BE; Tue, 26 May 2020 15:04:50 +0000 (UTC) (envelope-from mw@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04QF4oGx045105; Tue, 26 May 2020 15:04:50 GMT (envelope-from mw@FreeBSD.org) Received: (from mw@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04QF4nUc045102; Tue, 26 May 2020 15:04:49 GMT (envelope-from mw@FreeBSD.org) Message-Id: <202005261504.04QF4nUc045102@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mw set sender to mw@FreeBSD.org using -f From: Marcin Wojtas Date: Tue, 26 May 2020 15:04:49 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r361508 - in vendor-sys/ena-com/dist: . ena_defs X-SVN-Group: vendor-sys X-SVN-Commit-Author: mw X-SVN-Commit-Paths: in vendor-sys/ena-com/dist: . ena_defs X-SVN-Commit-Revision: 361508 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2020 15:04:50 -0000 Author: mw Date: Tue May 26 15:04:49 2020 New Revision: 361508 URL: https://svnweb.freebsd.org/changeset/base/361508 Log: Upgrade ENA HAL to the version from 20.04.2020 This version of the HAL supports newest generation ENA HW, random RSS generation upon device initialization and also includes bug fixes in the platform file, like fix for IO write/read macros regarding using barriers. Submitted by: Michal Krawczyk Obtained from: Semihalf Sponsored by: Amazon, Inc. Modified: vendor-sys/ena-com/dist/ena_com.c vendor-sys/ena-com/dist/ena_com.h vendor-sys/ena-com/dist/ena_defs/ena_admin_defs.h vendor-sys/ena-com/dist/ena_defs/ena_common_defs.h vendor-sys/ena-com/dist/ena_defs/ena_eth_io_defs.h vendor-sys/ena-com/dist/ena_defs/ena_gen_info.h vendor-sys/ena-com/dist/ena_defs/ena_regs_defs.h vendor-sys/ena-com/dist/ena_eth_com.c vendor-sys/ena-com/dist/ena_eth_com.h vendor-sys/ena-com/dist/ena_plat.h Modified: vendor-sys/ena-com/dist/ena_com.c ============================================================================== --- vendor-sys/ena-com/dist/ena_com.c Tue May 26 14:16:26 2020 (r361507) +++ vendor-sys/ena-com/dist/ena_com.c Tue May 26 15:04:49 2020 (r361508) @@ -1,7 +1,7 @@ /*- * BSD LICENSE * - * Copyright (c) 2015-2019 Amazon.com, Inc. or its affiliates. + * Copyright (c) 2015-2020 Amazon.com, Inc. or its affiliates. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -70,8 +70,10 @@ #define ENA_REGS_ADMIN_INTR_MASK 1 -#define ENA_POLL_MS 5 +#define ENA_MIN_POLL_US 100 +#define ENA_MAX_POLL_US 5000 + /*****************************************************************************/ /*****************************************************************************/ /*****************************************************************************/ @@ -99,7 +101,7 @@ struct ena_com_stats_ctx { struct ena_admin_acq_get_stats_resp get_resp; }; -static inline int ena_com_mem_addr_set(struct ena_com_dev *ena_dev, +static int ena_com_mem_addr_set(struct ena_com_dev *ena_dev, struct ena_common_mem_addr *ena_addr, dma_addr_t addr) { @@ -200,7 +202,7 @@ static int ena_com_admin_init_aenq(struct ena_com_dev return 0; } -static inline void comp_ctxt_release(struct ena_com_admin_queue *queue, +static void comp_ctxt_release(struct ena_com_admin_queue *queue, struct ena_comp_ctx *comp_ctx) { comp_ctx->occupied = false; @@ -216,6 +218,11 @@ static struct ena_comp_ctx *get_comp_ctxt(struct ena_c return NULL; } + if (unlikely(!queue->comp_ctx)) { + ena_trc_err("Completion context is NULL\n"); + return NULL; + } + if (unlikely(queue->comp_ctx[command_id].occupied && capture)) { ena_trc_err("Completion context is occupied\n"); return NULL; @@ -289,7 +296,7 @@ static struct ena_comp_ctx *__ena_com_submit_admin_cmd return comp_ctx; } -static inline int ena_com_init_comp_ctxt(struct ena_com_admin_queue *queue) +static int ena_com_init_comp_ctxt(struct ena_com_admin_queue *queue) { size_t size = queue->q_depth * sizeof(struct ena_comp_ctx); struct ena_comp_ctx *comp_ctx; @@ -409,6 +416,8 @@ static int ena_com_init_io_sq(struct ena_com_dev *ena_ 0x0, io_sq->llq_info.desc_list_entry_size); io_sq->llq_buf_ctrl.descs_left_in_line = io_sq->llq_info.descs_num_before_header; + io_sq->disable_meta_caching = + io_sq->llq_info.disable_meta_caching; if (io_sq->llq_info.max_entries_in_tx_burst > 0) io_sq->entries_in_tx_burst_left = @@ -534,12 +543,9 @@ static int ena_com_comp_status_to_errno(u8 comp_status if (unlikely(comp_status != 0)) ena_trc_err("admin command failed[%u]\n", comp_status); - if (unlikely(comp_status > ENA_ADMIN_UNKNOWN_ERROR)) - return ENA_COM_INVAL; - switch (comp_status) { case ENA_ADMIN_SUCCESS: - return 0; + return ENA_COM_OK; case ENA_ADMIN_RESOURCE_ALLOCATION_FAILURE: return ENA_COM_NO_MEM; case ENA_ADMIN_UNSUPPORTED_OPCODE: @@ -551,24 +557,32 @@ static int ena_com_comp_status_to_errno(u8 comp_status return ENA_COM_INVAL; } - return 0; + return ENA_COM_INVAL; } +static inline void ena_delay_exponential_backoff_us(u32 exp, u32 delay_us) +{ + delay_us = ENA_MAX32(ENA_MIN_POLL_US, delay_us); + delay_us = ENA_MIN32(delay_us * (1 << exp), ENA_MAX_POLL_US); + ENA_USLEEP(delay_us); +} + static int ena_com_wait_and_process_admin_cq_polling(struct ena_comp_ctx *comp_ctx, struct ena_com_admin_queue *admin_queue) { unsigned long flags = 0; - unsigned long timeout; + ena_time_t timeout; int ret; + u32 exp = 0; timeout = ENA_GET_SYSTEM_TIMEOUT(admin_queue->completion_timeout); while (1) { - ENA_SPINLOCK_LOCK(admin_queue->q_lock, flags); - ena_com_handle_admin_completion(admin_queue); - ENA_SPINLOCK_UNLOCK(admin_queue->q_lock, flags); + ENA_SPINLOCK_LOCK(admin_queue->q_lock, flags); + ena_com_handle_admin_completion(admin_queue); + ENA_SPINLOCK_UNLOCK(admin_queue->q_lock, flags); - if (comp_ctx->status != ENA_CMD_SUBMITTED) + if (comp_ctx->status != ENA_CMD_SUBMITTED) break; if (ENA_TIME_EXPIRE(timeout)) { @@ -583,7 +597,7 @@ static int ena_com_wait_and_process_admin_cq_polling(s goto err; } - ENA_MSLEEP(ENA_POLL_MS); + ena_delay_exponential_backoff_us(exp++, admin_queue->ena_dev->ena_min_poll_delay_us); } if (unlikely(comp_ctx->status == ENA_CMD_ABORTED)) { @@ -629,6 +643,14 @@ static int ena_com_set_llq(struct ena_com_dev *ena_dev cmd.u.llq.desc_num_before_header_enabled = llq_info->descs_num_before_header; cmd.u.llq.descriptors_stride_ctrl_enabled = llq_info->desc_stride_ctrl; + if (llq_info->disable_meta_caching) + cmd.u.llq.accel_mode.u.set.enabled_flags |= + BIT(ENA_ADMIN_DISABLE_META_CACHING); + + if (llq_info->max_entries_in_tx_burst) + cmd.u.llq.accel_mode.u.set.enabled_flags |= + BIT(ENA_ADMIN_LIMIT_TX_BURST); + ret = ena_com_execute_admin_command(admin_queue, (struct ena_admin_aq_entry *)&cmd, sizeof(cmd), @@ -748,15 +770,21 @@ static int ena_com_config_llq_info(struct ena_com_dev supported_feat, llq_info->descs_num_before_header); } + /* Check for accelerated queue supported */ + llq_info->disable_meta_caching = + llq_features->accel_mode.u.get.supported_flags & + BIT(ENA_ADMIN_DISABLE_META_CACHING); - llq_info->max_entries_in_tx_burst = - (u16)(llq_features->max_tx_burst_size / llq_default_cfg->llq_ring_entry_size_value); + if (llq_features->accel_mode.u.get.supported_flags & BIT(ENA_ADMIN_LIMIT_TX_BURST)) + llq_info->max_entries_in_tx_burst = + llq_features->accel_mode.u.get.max_tx_burst_size / + llq_default_cfg->llq_ring_entry_size_value; rc = ena_com_set_llq(ena_dev); if (rc) ena_trc_err("Cannot set LLQ configuration: %d\n", rc); - return 0; + return rc; } static int ena_com_wait_and_process_admin_cq_interrupts(struct ena_comp_ctx *comp_ctx, @@ -779,16 +807,25 @@ static int ena_com_wait_and_process_admin_cq_interrupt admin_queue->stats.no_completion++; ENA_SPINLOCK_UNLOCK(admin_queue->q_lock, flags); - if (comp_ctx->status == ENA_CMD_COMPLETED) - ena_trc_err("The ena device have completion but the driver didn't receive any MSI-X interrupt (cmd %d)\n", - comp_ctx->cmd_opcode); - else - ena_trc_err("The ena device doesn't send any completion for the admin cmd %d status %d\n", + if (comp_ctx->status == ENA_CMD_COMPLETED) { + ena_trc_err("The ena device sent a completion but the driver didn't receive a MSI-X interrupt (cmd %d), autopolling mode is %s\n", + comp_ctx->cmd_opcode, admin_queue->auto_polling ? "ON" : "OFF"); + /* Check if fallback to polling is enabled */ + if (admin_queue->auto_polling) + admin_queue->polling = true; + } else { + ena_trc_err("The ena device didn't send a completion for the admin cmd %d status %d\n", comp_ctx->cmd_opcode, comp_ctx->status); - - admin_queue->running_state = false; - ret = ENA_COM_TIMER_EXPIRED; - goto err; + } + /* Check if shifted to polling mode. + * This will happen if there is a completion without an interrupt + * and autopolling mode is enabled. Continuing normal execution in such case + */ + if (!admin_queue->polling) { + admin_queue->running_state = false; + ret = ENA_COM_TIMER_EXPIRED; + goto err; + } } ret = ena_com_comp_status_to_errno(comp_ctx->comp_status); @@ -944,7 +981,9 @@ static void ena_com_io_queue_free(struct ena_com_dev * } if (io_sq->bounce_buf_ctrl.base_buffer) { - ENA_MEM_FREE(ena_dev->dmadev, io_sq->bounce_buf_ctrl.base_buffer); + ENA_MEM_FREE(ena_dev->dmadev, + io_sq->bounce_buf_ctrl.base_buffer, + (io_sq->llq_info.desc_list_entry_size * ENA_COM_BOUNCE_BUFFER_CNTRL_CNT)); io_sq->bounce_buf_ctrl.base_buffer = NULL; } } @@ -952,12 +991,13 @@ static void ena_com_io_queue_free(struct ena_com_dev * static int wait_for_reset_state(struct ena_com_dev *ena_dev, u32 timeout, u16 exp_state) { - u32 val, i; + u32 val, exp = 0; + ena_time_t timeout_stamp; - /* Convert timeout from resolution of 100ms to ENA_POLL_MS */ - timeout = (timeout * 100) / ENA_POLL_MS; + /* Convert timeout from resolution of 100ms to us resolution. */ + timeout_stamp = ENA_GET_SYSTEM_TIMEOUT(100 * 1000 * timeout); - for (i = 0; i < timeout; i++) { + while (1) { val = ena_com_reg_bar_read32(ena_dev, ENA_REGS_DEV_STS_OFF); if (unlikely(val == ENA_MMIO_READ_TIMEOUT)) { @@ -969,10 +1009,11 @@ static int wait_for_reset_state(struct ena_com_dev *en exp_state) return 0; - ENA_MSLEEP(ENA_POLL_MS); - } + if (ENA_TIME_EXPIRE(timeout_stamp)) + return ENA_COM_TIMER_EXPIRED; - return ENA_COM_TIMER_EXPIRED; + ena_delay_exponential_backoff_us(exp++, ena_dev->ena_min_poll_delay_us); + } } static bool ena_com_check_supported_feature_id(struct ena_com_dev *ena_dev, @@ -1055,10 +1096,34 @@ static int ena_com_get_feature(struct ena_com_dev *ena feature_ver); } +int ena_com_get_current_hash_function(struct ena_com_dev *ena_dev) +{ + return ena_dev->rss.hash_func; +} + +static void ena_com_hash_key_fill_default_key(struct ena_com_dev *ena_dev) +{ + struct ena_admin_feature_rss_flow_hash_control *hash_key = + (ena_dev->rss).hash_key; + + ENA_RSS_FILL_KEY(&hash_key->key, sizeof(hash_key->key)); + /* The key buffer is stored in the device in an array of + * uint32 elements. Therefore the number of elements can be derived + * by dividing the buffer length by the size of each array element. + * In current implementation each element is sized at uint32_t + * so it's actually a division by 4 but if the element size changes, + * there is no need to rewrite this code. + */ + hash_key->keys_num = sizeof(hash_key->key) / sizeof(hash_key->key[0]); +} + static int ena_com_hash_key_allocate(struct ena_com_dev *ena_dev) { struct ena_rss *rss = &ena_dev->rss; + if (!ena_com_check_supported_feature_id(ena_dev, ENA_ADMIN_RSS_HASH_FUNCTION)) + return ENA_COM_UNSUPPORTED; + ENA_MEM_ALLOC_COHERENT(ena_dev->dmadev, sizeof(*rss->hash_key), rss->hash_key, @@ -1186,7 +1251,9 @@ static void ena_com_indirect_table_destroy(struct ena_ rss->rss_ind_tbl = NULL; if (rss->host_rss_ind_tbl) - ENA_MEM_FREE(ena_dev->dmadev, rss->host_rss_ind_tbl); + ENA_MEM_FREE(ena_dev->dmadev, + rss->host_rss_ind_tbl, + ((1ULL << rss->tbl_log_size) * sizeof(u16))); rss->host_rss_ind_tbl = NULL; } @@ -1287,63 +1354,29 @@ static int ena_com_ind_tbl_convert_to_device(struct en return 0; } -static int ena_com_ind_tbl_convert_from_device(struct ena_com_dev *ena_dev) -{ - u16 dev_idx_to_host_tbl[ENA_TOTAL_NUM_QUEUES] = { (u16)-1 }; - struct ena_rss *rss = &ena_dev->rss; - u8 idx; - u16 i; - - for (i = 0; i < ENA_TOTAL_NUM_QUEUES; i++) - dev_idx_to_host_tbl[ena_dev->io_sq_queues[i].idx] = i; - - for (i = 0; i < 1 << rss->tbl_log_size; i++) { - if (rss->rss_ind_tbl[i].cq_idx > ENA_TOTAL_NUM_QUEUES) - return ENA_COM_INVAL; - idx = (u8)rss->rss_ind_tbl[i].cq_idx; - - if (dev_idx_to_host_tbl[idx] > ENA_TOTAL_NUM_QUEUES) - return ENA_COM_INVAL; - - rss->host_rss_ind_tbl[i] = dev_idx_to_host_tbl[idx]; - } - - return 0; -} - -static int ena_com_init_interrupt_moderation_table(struct ena_com_dev *ena_dev) -{ - size_t size; - - size = sizeof(struct ena_intr_moder_entry) * ENA_INTR_MAX_NUM_OF_LEVELS; - - ena_dev->intr_moder_tbl = ENA_MEM_ALLOC(ena_dev->dmadev, size); - if (!ena_dev->intr_moder_tbl) - return ENA_COM_NO_MEM; - - ena_com_config_default_interrupt_moderation_table(ena_dev); - - return 0; -} - static void ena_com_update_intr_delay_resolution(struct ena_com_dev *ena_dev, u16 intr_delay_resolution) { - struct ena_intr_moder_entry *intr_moder_tbl = ena_dev->intr_moder_tbl; - unsigned int i; + u16 prev_intr_delay_resolution = ena_dev->intr_delay_resolution; - if (!intr_delay_resolution) { + if (unlikely(!intr_delay_resolution)) { ena_trc_err("Illegal intr_delay_resolution provided. Going to use default 1 usec resolution\n"); - intr_delay_resolution = 1; + intr_delay_resolution = ENA_DEFAULT_INTR_DELAY_RESOLUTION; } - ena_dev->intr_delay_resolution = intr_delay_resolution; /* update Rx */ - for (i = 0; i < ENA_INTR_MAX_NUM_OF_LEVELS; i++) - intr_moder_tbl[i].intr_moder_interval /= intr_delay_resolution; + ena_dev->intr_moder_rx_interval = + ena_dev->intr_moder_rx_interval * + prev_intr_delay_resolution / + intr_delay_resolution; /* update Tx */ - ena_dev->intr_moder_tx_interval /= intr_delay_resolution; + ena_dev->intr_moder_tx_interval = + ena_dev->intr_moder_tx_interval * + prev_intr_delay_resolution / + intr_delay_resolution; + + ena_dev->intr_delay_resolution = intr_delay_resolution; } /*****************************************************************************/ @@ -1482,11 +1515,12 @@ void ena_com_wait_for_abort_completion(struct ena_com_ { struct ena_com_admin_queue *admin_queue = &ena_dev->admin_queue; unsigned long flags = 0; + u32 exp = 0; ENA_SPINLOCK_LOCK(admin_queue->q_lock, flags); while (ATOMIC32_READ(&admin_queue->outstanding_cmds) != 0) { ENA_SPINLOCK_UNLOCK(admin_queue->q_lock, flags); - ENA_MSLEEP(ENA_POLL_MS); + ena_delay_exponential_backoff_us(exp++, ena_dev->ena_min_poll_delay_us); ENA_SPINLOCK_LOCK(admin_queue->q_lock, flags); } ENA_SPINLOCK_UNLOCK(admin_queue->q_lock, flags); @@ -1667,7 +1701,9 @@ void ena_com_admin_destroy(struct ena_com_dev *ena_dev ENA_WAIT_EVENT_DESTROY(admin_queue->comp_ctx->wait_event); if (admin_queue->comp_ctx) - ENA_MEM_FREE(ena_dev->dmadev, admin_queue->comp_ctx); + ENA_MEM_FREE(ena_dev->dmadev, + admin_queue->comp_ctx, + (admin_queue->q_depth * sizeof(struct ena_comp_ctx))); admin_queue->comp_ctx = NULL; size = ADMIN_SQ_SIZE(admin_queue->q_depth); if (sq->entries) @@ -1701,6 +1737,17 @@ void ena_com_set_admin_polling_mode(struct ena_com_dev ena_dev->admin_queue.polling = polling; } +bool ena_com_get_admin_polling_mode(struct ena_com_dev *ena_dev) +{ + return ena_dev->admin_queue.polling; +} + +void ena_com_set_admin_auto_polling_mode(struct ena_com_dev *ena_dev, + bool polling) +{ + ena_dev->admin_queue.auto_polling = polling; +} + int ena_com_mmio_reg_read_request_init(struct ena_com_dev *ena_dev) { struct ena_com_mmio_read *mmio_read = &ena_dev->mmio_read; @@ -1838,6 +1885,7 @@ int ena_com_admin_init(struct ena_com_dev *ena_dev, if (ret) goto error; + admin_queue->ena_dev = ena_dev; admin_queue->running_state = true; return 0; @@ -1934,62 +1982,6 @@ int ena_com_get_link_params(struct ena_com_dev *ena_de return ena_com_get_feature(ena_dev, resp, ENA_ADMIN_LINK_CONFIG, 0); } -int ena_com_extra_properties_strings_init(struct ena_com_dev *ena_dev) -{ - struct ena_admin_get_feat_resp resp; - struct ena_extra_properties_strings *extra_properties_strings = - &ena_dev->extra_properties_strings; - u32 rc; - extra_properties_strings->size = ENA_ADMIN_EXTRA_PROPERTIES_COUNT * - ENA_ADMIN_EXTRA_PROPERTIES_STRING_LEN; - - ENA_MEM_ALLOC_COHERENT(ena_dev->dmadev, - extra_properties_strings->size, - extra_properties_strings->virt_addr, - extra_properties_strings->dma_addr, - extra_properties_strings->dma_handle); - if (unlikely(!extra_properties_strings->virt_addr)) { - ena_trc_err("Failed to allocate extra properties strings\n"); - return 0; - } - - rc = ena_com_get_feature_ex(ena_dev, &resp, - ENA_ADMIN_EXTRA_PROPERTIES_STRINGS, - extra_properties_strings->dma_addr, - extra_properties_strings->size, 0); - if (rc) { - ena_trc_dbg("Failed to get extra properties strings\n"); - goto err; - } - - return resp.u.extra_properties_strings.count; -err: - ena_com_delete_extra_properties_strings(ena_dev); - return 0; -} - -void ena_com_delete_extra_properties_strings(struct ena_com_dev *ena_dev) -{ - struct ena_extra_properties_strings *extra_properties_strings = - &ena_dev->extra_properties_strings; - - if (extra_properties_strings->virt_addr) { - ENA_MEM_FREE_COHERENT(ena_dev->dmadev, - extra_properties_strings->size, - extra_properties_strings->virt_addr, - extra_properties_strings->dma_addr, - extra_properties_strings->dma_handle); - extra_properties_strings->virt_addr = NULL; - } -} - -int ena_com_get_extra_properties_flags(struct ena_com_dev *ena_dev, - struct ena_admin_get_feat_resp *resp) -{ - return ena_com_get_feature(ena_dev, resp, - ENA_ADMIN_EXTRA_PROPERTIES_FLAGS, 0); -} - int ena_com_get_dev_attr_feat(struct ena_com_dev *ena_dev, struct ena_com_dev_get_features_ctx *get_feat_ctx) { @@ -2111,7 +2103,7 @@ void ena_com_aenq_intr_handler(struct ena_com_dev *dev struct ena_admin_aenq_entry *aenq_e; struct ena_admin_aenq_common_desc *aenq_common; struct ena_com_aenq *aenq = &dev->aenq; - unsigned long long timestamp; + u64 timestamp; ena_aenq_handler handler_cb; u16 masked_head, processed = 0; u8 phase; @@ -2129,9 +2121,9 @@ void ena_com_aenq_intr_handler(struct ena_com_dev *dev */ dma_rmb(); - timestamp = (unsigned long long)aenq_common->timestamp_low | - ((unsigned long long)aenq_common->timestamp_high << 32); - ena_trc_dbg("AENQ! Group[%x] Syndrom[%x] timestamp: [%llus]\n", + timestamp = (u64)aenq_common->timestamp_low | + ((u64)aenq_common->timestamp_high << 32); + ena_trc_dbg("AENQ! Group[%x] Syndrom[%x] timestamp: [%" ENA_PRIu64 "s]\n", aenq_common->group, aenq_common->syndrom, timestamp); @@ -2452,12 +2444,14 @@ int ena_com_fill_hash_function(struct ena_com_dev *ena enum ena_admin_hash_functions func, const u8 *key, u16 key_len, u32 init_val) { - struct ena_rss *rss = &ena_dev->rss; + struct ena_admin_feature_rss_flow_hash_control *hash_key; struct ena_admin_get_feat_resp get_resp; - struct ena_admin_feature_rss_flow_hash_control *hash_key = - rss->hash_key; + enum ena_admin_hash_functions old_func; + struct ena_rss *rss = &ena_dev->rss; int rc; + hash_key = rss->hash_key; + /* Make sure size is a mult of DWs */ if (unlikely(key_len & 0x3)) return ENA_COM_INVAL; @@ -2469,22 +2463,23 @@ int ena_com_fill_hash_function(struct ena_com_dev *ena if (unlikely(rc)) return rc; - if (!((1 << func) & get_resp.u.flow_hash_func.supported_func)) { + if (!(BIT(func) & get_resp.u.flow_hash_func.supported_func)) { ena_trc_err("Flow hash function %d isn't supported\n", func); return ENA_COM_UNSUPPORTED; } switch (func) { case ENA_ADMIN_TOEPLITZ: - if (key_len > sizeof(hash_key->key)) { - ena_trc_err("key len (%hu) is bigger than the max supported (%zu)\n", - key_len, sizeof(hash_key->key)); - return ENA_COM_INVAL; + if (key) { + if (key_len != sizeof(hash_key->key)) { + ena_trc_err("key len (%hu) doesn't equal the supported size (%zu)\n", + key_len, sizeof(hash_key->key)); + return ENA_COM_INVAL; + } + memcpy(hash_key->key, key, key_len); + rss->hash_init_val = init_val; + hash_key->keys_num = key_len / sizeof(hash_key->key[0]); } - - memcpy(hash_key->key, key, key_len); - rss->hash_init_val = init_val; - hash_key->keys_num = key_len >> 2; break; case ENA_ADMIN_CRC32: rss->hash_init_val = init_val; @@ -2494,26 +2489,27 @@ int ena_com_fill_hash_function(struct ena_com_dev *ena return ENA_COM_INVAL; } + old_func = rss->hash_func; rss->hash_func = func; rc = ena_com_set_hash_function(ena_dev); /* Restore the old function */ if (unlikely(rc)) - ena_com_get_hash_function(ena_dev, NULL, NULL); + rss->hash_func = old_func; return rc; } int ena_com_get_hash_function(struct ena_com_dev *ena_dev, - enum ena_admin_hash_functions *func, - u8 *key) + enum ena_admin_hash_functions *func) { struct ena_rss *rss = &ena_dev->rss; struct ena_admin_get_feat_resp get_resp; - struct ena_admin_feature_rss_flow_hash_control *hash_key = - rss->hash_key; int rc; + if (unlikely(!func)) + return ENA_COM_INVAL; + rc = ena_com_get_feature_ex(ena_dev, &get_resp, ENA_ADMIN_RSS_HASH_FUNCTION, rss->hash_key_dma_addr, @@ -2521,10 +2517,21 @@ int ena_com_get_hash_function(struct ena_com_dev *ena_ if (unlikely(rc)) return rc; - rss->hash_func = get_resp.u.flow_hash_func.selected_func; - if (func) - *func = rss->hash_func; + /* ENA_FFS() returns 1 in case the lsb is set */ + rss->hash_func = ENA_FFS(get_resp.u.flow_hash_func.selected_func); + if (rss->hash_func) + rss->hash_func--; + *func = rss->hash_func; + + return 0; +} + +int ena_com_get_hash_key(struct ena_com_dev *ena_dev, u8 *key) +{ + struct ena_admin_feature_rss_flow_hash_control *hash_key = + ena_dev->rss.hash_key; + if (key) memcpy(key, hash_key->key, (size_t)(hash_key->keys_num) << 2); @@ -2785,10 +2792,6 @@ int ena_com_indirect_table_get(struct ena_com_dev *ena if (!ind_tbl) return 0; - rc = ena_com_ind_tbl_convert_from_device(ena_dev); - if (unlikely(rc)) - return rc; - for (i = 0; i < (1 << rss->tbl_log_size); i++) ind_tbl[i] = rss->host_rss_ind_tbl[i]; @@ -2805,8 +2808,14 @@ int ena_com_rss_init(struct ena_com_dev *ena_dev, u16 if (unlikely(rc)) goto err_indr_tbl; + /* The following function might return unsupported in case the + * device doesn't support setting the key / hash function. We can safely + * ignore this error and have indirection table support only. + */ rc = ena_com_hash_key_allocate(ena_dev); - if (unlikely(rc)) + if (likely(!rc)) + ena_com_hash_key_fill_default_key(ena_dev); + else if (rc != ENA_COM_UNSUPPORTED) goto err_hash_key; rc = ena_com_hash_ctrl_init(ena_dev); @@ -2956,42 +2965,35 @@ bool ena_com_interrupt_moderation_supported(struct ena ENA_ADMIN_INTERRUPT_MODERATION); } -int ena_com_update_nonadaptive_moderation_interval_tx(struct ena_com_dev *ena_dev, - u32 tx_coalesce_usecs) +static int ena_com_update_nonadaptive_moderation_interval(u32 coalesce_usecs, + u32 intr_delay_resolution, + u32 *intr_moder_interval) { - if (!ena_dev->intr_delay_resolution) { + if (!intr_delay_resolution) { ena_trc_err("Illegal interrupt delay granularity value\n"); return ENA_COM_FAULT; } - ena_dev->intr_moder_tx_interval = tx_coalesce_usecs / - ena_dev->intr_delay_resolution; + *intr_moder_interval = coalesce_usecs / intr_delay_resolution; return 0; } -int ena_com_update_nonadaptive_moderation_interval_rx(struct ena_com_dev *ena_dev, - u32 rx_coalesce_usecs) -{ - if (!ena_dev->intr_delay_resolution) { - ena_trc_err("Illegal interrupt delay granularity value\n"); - return ENA_COM_FAULT; - } - /* We use LOWEST entry of moderation table for storing - * nonadaptive interrupt coalescing values - */ - ena_dev->intr_moder_tbl[ENA_INTR_MODER_LOWEST].intr_moder_interval = - rx_coalesce_usecs / ena_dev->intr_delay_resolution; - - return 0; +int ena_com_update_nonadaptive_moderation_interval_tx(struct ena_com_dev *ena_dev, + u32 tx_coalesce_usecs) +{ + return ena_com_update_nonadaptive_moderation_interval(tx_coalesce_usecs, + ena_dev->intr_delay_resolution, + &ena_dev->intr_moder_tx_interval); } -void ena_com_destroy_interrupt_moderation(struct ena_com_dev *ena_dev) +int ena_com_update_nonadaptive_moderation_interval_rx(struct ena_com_dev *ena_dev, + u32 rx_coalesce_usecs) { - if (ena_dev->intr_moder_tbl) - ENA_MEM_FREE(ena_dev->dmadev, ena_dev->intr_moder_tbl); - ena_dev->intr_moder_tbl = NULL; + return ena_com_update_nonadaptive_moderation_interval(rx_coalesce_usecs, + ena_dev->intr_delay_resolution, + &ena_dev->intr_moder_rx_interval); } int ena_com_init_interrupt_moderation(struct ena_com_dev *ena_dev) @@ -3018,64 +3020,16 @@ int ena_com_init_interrupt_moderation(struct ena_com_d return rc; } - rc = ena_com_init_interrupt_moderation_table(ena_dev); - if (rc) - goto err; - /* if moderation is supported by device we set adaptive moderation */ delay_resolution = get_resp.u.intr_moderation.intr_delay_resolution; ena_com_update_intr_delay_resolution(ena_dev, delay_resolution); - ena_com_enable_adaptive_moderation(ena_dev); + /* Disable adaptive moderation by default - can be enabled later */ + ena_com_disable_adaptive_moderation(ena_dev); + return 0; -err: - ena_com_destroy_interrupt_moderation(ena_dev); - return rc; } -void ena_com_config_default_interrupt_moderation_table(struct ena_com_dev *ena_dev) -{ - struct ena_intr_moder_entry *intr_moder_tbl = ena_dev->intr_moder_tbl; - - if (!intr_moder_tbl) - return; - - intr_moder_tbl[ENA_INTR_MODER_LOWEST].intr_moder_interval = - ENA_INTR_LOWEST_USECS; - intr_moder_tbl[ENA_INTR_MODER_LOWEST].pkts_per_interval = - ENA_INTR_LOWEST_PKTS; - intr_moder_tbl[ENA_INTR_MODER_LOWEST].bytes_per_interval = - ENA_INTR_LOWEST_BYTES; - - intr_moder_tbl[ENA_INTR_MODER_LOW].intr_moder_interval = - ENA_INTR_LOW_USECS; - intr_moder_tbl[ENA_INTR_MODER_LOW].pkts_per_interval = - ENA_INTR_LOW_PKTS; - intr_moder_tbl[ENA_INTR_MODER_LOW].bytes_per_interval = - ENA_INTR_LOW_BYTES; - - intr_moder_tbl[ENA_INTR_MODER_MID].intr_moder_interval = - ENA_INTR_MID_USECS; - intr_moder_tbl[ENA_INTR_MODER_MID].pkts_per_interval = - ENA_INTR_MID_PKTS; - intr_moder_tbl[ENA_INTR_MODER_MID].bytes_per_interval = - ENA_INTR_MID_BYTES; - - intr_moder_tbl[ENA_INTR_MODER_HIGH].intr_moder_interval = - ENA_INTR_HIGH_USECS; - intr_moder_tbl[ENA_INTR_MODER_HIGH].pkts_per_interval = - ENA_INTR_HIGH_PKTS; - intr_moder_tbl[ENA_INTR_MODER_HIGH].bytes_per_interval = - ENA_INTR_HIGH_BYTES; - - intr_moder_tbl[ENA_INTR_MODER_HIGHEST].intr_moder_interval = - ENA_INTR_HIGHEST_USECS; - intr_moder_tbl[ENA_INTR_MODER_HIGHEST].pkts_per_interval = - ENA_INTR_HIGHEST_PKTS; - intr_moder_tbl[ENA_INTR_MODER_HIGHEST].bytes_per_interval = - ENA_INTR_HIGHEST_BYTES; -} - unsigned int ena_com_get_nonadaptive_moderation_interval_tx(struct ena_com_dev *ena_dev) { return ena_dev->intr_moder_tx_interval; @@ -3083,57 +3037,15 @@ unsigned int ena_com_get_nonadaptive_moderation_interv unsigned int ena_com_get_nonadaptive_moderation_interval_rx(struct ena_com_dev *ena_dev) { - struct ena_intr_moder_entry *intr_moder_tbl = ena_dev->intr_moder_tbl; - - if (intr_moder_tbl) - return intr_moder_tbl[ENA_INTR_MODER_LOWEST].intr_moder_interval; - - return 0; + return ena_dev->intr_moder_rx_interval; } -void ena_com_init_intr_moderation_entry(struct ena_com_dev *ena_dev, - enum ena_intr_moder_level level, - struct ena_intr_moder_entry *entry) -{ - struct ena_intr_moder_entry *intr_moder_tbl = ena_dev->intr_moder_tbl; - - if (level >= ENA_INTR_MAX_NUM_OF_LEVELS) - return; - - intr_moder_tbl[level].intr_moder_interval = entry->intr_moder_interval; - if (ena_dev->intr_delay_resolution) - intr_moder_tbl[level].intr_moder_interval /= - ena_dev->intr_delay_resolution; - intr_moder_tbl[level].pkts_per_interval = entry->pkts_per_interval; - - /* use hardcoded value until ethtool supports bytecount parameter */ - if (entry->bytes_per_interval != ENA_INTR_BYTE_COUNT_NOT_SUPPORTED) - intr_moder_tbl[level].bytes_per_interval = entry->bytes_per_interval; -} - -void ena_com_get_intr_moderation_entry(struct ena_com_dev *ena_dev, - enum ena_intr_moder_level level, - struct ena_intr_moder_entry *entry) -{ - struct ena_intr_moder_entry *intr_moder_tbl = ena_dev->intr_moder_tbl; - - if (level >= ENA_INTR_MAX_NUM_OF_LEVELS) - return; - - entry->intr_moder_interval = intr_moder_tbl[level].intr_moder_interval; - if (ena_dev->intr_delay_resolution) - entry->intr_moder_interval *= ena_dev->intr_delay_resolution; - entry->pkts_per_interval = - intr_moder_tbl[level].pkts_per_interval; - entry->bytes_per_interval = intr_moder_tbl[level].bytes_per_interval; -} - int ena_com_config_dev_mode(struct ena_com_dev *ena_dev, struct ena_admin_feature_llq_desc *llq_features, struct ena_llq_configurations *llq_default_cfg) { + struct ena_com_llq_info *llq_info = &ena_dev->llq_info; int rc; - int size; if (!llq_features->max_llq_num) { ena_dev->tx_mem_queue_type = ENA_ADMIN_PLACEMENT_POLICY_HOST; @@ -3144,14 +3056,12 @@ int ena_com_config_dev_mode(struct ena_com_dev *ena_de if (rc) return rc; - /* Validate the descriptor is not too big */ - size = ena_dev->tx_max_header_size; - size += ena_dev->llq_info.descs_num_before_header * - sizeof(struct ena_eth_io_tx_desc); + ena_dev->tx_max_header_size = llq_info->desc_list_entry_size - + (llq_info->descs_num_before_header * sizeof(struct ena_eth_io_tx_desc)); - if (unlikely(ena_dev->llq_info.desc_list_entry_size < size)) { + if (unlikely(ena_dev->tx_max_header_size == 0)) { ena_trc_err("the size of the LLQ entry is smaller than needed\n"); - return ENA_COM_INVAL; + return -EINVAL; } ena_dev->tx_mem_queue_type = ENA_ADMIN_PLACEMENT_POLICY_DEV; Modified: vendor-sys/ena-com/dist/ena_com.h ============================================================================== --- vendor-sys/ena-com/dist/ena_com.h Tue May 26 14:16:26 2020 (r361507) +++ vendor-sys/ena-com/dist/ena_com.h Tue May 26 15:04:49 2020 (r361508) @@ -1,7 +1,7 @@ /*- * BSD LICENSE * - * Copyright (c) 2015-2019 Amazon.com, Inc. or its affiliates. + * Copyright (c) 2015-2020 Amazon.com, Inc. or its affiliates. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -36,9 +36,9 @@ #include "ena_plat.h" -#define ENA_MAX_NUM_IO_QUEUES 128U +#define ENA_MAX_NUM_IO_QUEUES 128U /* We need to queues for each IO (on for Tx and one for Rx) */ -#define ENA_TOTAL_NUM_QUEUES (2 * (ENA_MAX_NUM_IO_QUEUES)) +#define ENA_TOTAL_NUM_QUEUES (2 * (ENA_MAX_NUM_IO_QUEUES)) #define ENA_MAX_HANDLERS 256 @@ -55,46 +55,16 @@ /*****************************************************************************/ /* ENA adaptive interrupt moderation settings */ -#define ENA_INTR_LOWEST_USECS (0) -#define ENA_INTR_LOWEST_PKTS (3) -#define ENA_INTR_LOWEST_BYTES (2 * 1524) +#define ENA_INTR_INITIAL_TX_INTERVAL_USECS ENA_INTR_INITIAL_TX_INTERVAL_USECS_PLAT +#define ENA_INTR_INITIAL_RX_INTERVAL_USECS 0 +#define ENA_DEFAULT_INTR_DELAY_RESOLUTION 1 -#define ENA_INTR_LOW_USECS (32) -#define ENA_INTR_LOW_PKTS (12) -#define ENA_INTR_LOW_BYTES (16 * 1024) +#define ENA_HASH_KEY_SIZE 40 -#define ENA_INTR_MID_USECS (80) -#define ENA_INTR_MID_PKTS (48) -#define ENA_INTR_MID_BYTES (64 * 1024) +#define ENA_HW_HINTS_NO_TIMEOUT 0xFFFF -#define ENA_INTR_HIGH_USECS (128) -#define ENA_INTR_HIGH_PKTS (96) -#define ENA_INTR_HIGH_BYTES (128 * 1024) +#define ENA_FEATURE_MAX_QUEUE_EXT_VER 1 -#define ENA_INTR_HIGHEST_USECS (192) -#define ENA_INTR_HIGHEST_PKTS (128) -#define ENA_INTR_HIGHEST_BYTES (192 * 1024) - -#define ENA_INTR_INITIAL_TX_INTERVAL_USECS 196 -#define ENA_INTR_INITIAL_RX_INTERVAL_USECS 4 -#define ENA_INTR_DELAY_OLD_VALUE_WEIGHT 6 -#define ENA_INTR_DELAY_NEW_VALUE_WEIGHT 4 -#define ENA_INTR_MODER_LEVEL_STRIDE 1 -#define ENA_INTR_BYTE_COUNT_NOT_SUPPORTED 0xFFFFFF - -#define ENA_HW_HINTS_NO_TIMEOUT 0xFFFF - -#define ENA_FEATURE_MAX_QUEUE_EXT_VER 1 - -enum ena_intr_moder_level { - ENA_INTR_MODER_LOWEST = 0, - ENA_INTR_MODER_LOW, - ENA_INTR_MODER_MID, - ENA_INTR_MODER_HIGH, - ENA_INTR_MODER_HIGHEST, - ENA_INTR_MAX_NUM_OF_LEVELS, -}; - struct ena_llq_configurations { enum ena_admin_llq_header_location llq_header_location; enum ena_admin_llq_ring_entry_size llq_ring_entry_size; @@ -103,12 +73,6 @@ struct ena_llq_configurations { u16 llq_ring_entry_size_value; }; -struct ena_intr_moder_entry { - unsigned int intr_moder_interval; - unsigned int pkts_per_interval; - unsigned int bytes_per_interval; -}; - enum queue_direction { ENA_COM_IO_QUEUE_DIRECTION_TX, ENA_COM_IO_QUEUE_DIRECTION_RX @@ -146,6 +110,7 @@ struct ena_com_llq_info { u16 descs_num_before_header; u16 descs_per_entry; u16 max_entries_in_tx_burst; + bool disable_meta_caching; }; struct ena_com_io_cq { @@ -210,6 +175,8 @@ struct ena_com_io_sq { enum queue_direction direction; enum ena_admin_placement_policy_type mem_queue_type; + bool disable_meta_caching; + u32 msix_vector; struct ena_com_tx_meta cached_tx_meta; struct ena_com_llq_info llq_info; @@ -253,16 +220,17 @@ struct ena_com_admin_sq { }; struct ena_com_stats_admin { - u32 aborted_cmd; - u32 submitted_cmd; - u32 completed_cmd; - u32 out_of_space; - u32 no_completion; + u64 aborted_cmd; + u64 submitted_cmd; + u64 completed_cmd; + u64 out_of_space; + u64 no_completion; }; struct ena_com_admin_queue { void *q_dmadev; void *bus; + struct ena_com_dev *ena_dev; ena_spinlock_t q_lock; /* spinlock for the admin queue */ struct ena_comp_ctx *comp_ctx; @@ -274,6 +242,9 @@ struct ena_com_admin_queue { /* Indicate if the admin queue should poll for completion */ bool polling; + /* Define if fallback to polling mode should occur */ + bool auto_polling; + u16 curr_cmd_id; /* Indicate that the ena was initialized and can @@ -345,13 +316,6 @@ struct ena_host_attribute { ena_mem_handle_t host_info_dma_handle; }; -struct ena_extra_properties_strings { - u8 *virt_addr; - dma_addr_t dma_addr; - ena_mem_handle_t dma_handle; *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@freebsd.org Tue May 26 15:08:35 2020 Return-Path: Delivered-To: svn-src-all@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 ED3832C9E70; Tue, 26 May 2020 15:08:35 +0000 (UTC) (envelope-from mav@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49WcmM65Fnz4K8R; Tue, 26 May 2020 15:08:35 +0000 (UTC) (envelope-from mav@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 CA8EE2570C; Tue, 26 May 2020 15:08:35 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04QF8ZiL045489; Tue, 26 May 2020 15:08:35 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04QF8Z7i045488; Tue, 26 May 2020 15:08:35 GMT (envelope-from mav@FreeBSD.org) Message-Id: <202005261508.04QF8Z7i045488@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Tue, 26 May 2020 15:08:35 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361509 - head/sys/cam/ctl X-SVN-Group: head X-SVN-Commit-Author: mav X-SVN-Commit-Paths: head/sys/cam/ctl X-SVN-Commit-Revision: 361509 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2020 15:08:36 -0000 Author: mav Date: Tue May 26 15:08:35 2020 New Revision: 361509 URL: https://svnweb.freebsd.org/changeset/base/361509 Log: Fix fallout of r319722 in CTL HA. ha_lso is a listening socket (unless bind() has failed), so should use solisten_upcall_set(NULL, NULL), not soupcall_clear(). MFC after: 1 week Sponsored by: iXsystems, Inc. Modified: head/sys/cam/ctl/ctl_ha.c Modified: head/sys/cam/ctl/ctl_ha.c ============================================================================== --- head/sys/cam/ctl/ctl_ha.c Tue May 26 15:04:49 2020 (r361508) +++ head/sys/cam/ctl/ctl_ha.c Tue May 26 15:08:35 2020 (r361509) @@ -196,10 +196,11 @@ ctl_ha_lclose(struct ha_softc *softc) { if (softc->ha_lso) { - SOCKBUF_LOCK(&softc->ha_lso->so_rcv); - if (softc->ha_lso->so_rcv.sb_upcall != NULL) - soupcall_clear(softc->ha_lso, SO_RCV); - SOCKBUF_UNLOCK(&softc->ha_lso->so_rcv); + if (SOLISTENING(softc->ha_lso)) { + SOLISTEN_LOCK(softc->ha_lso); + solisten_upcall_set(softc->ha_lso, NULL, NULL); + SOLISTEN_UNLOCK(softc->ha_lso); + } soclose(softc->ha_lso); softc->ha_lso = NULL; } From owner-svn-src-all@freebsd.org Tue May 26 15:12:10 2020 Return-Path: Delivered-To: svn-src-all@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 771A12CA5E4; Tue, 26 May 2020 15:12:10 +0000 (UTC) (envelope-from mw@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49WcrV2cTwz4KWx; Tue, 26 May 2020 15:12:10 +0000 (UTC) (envelope-from mw@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 3B688255DE; Tue, 26 May 2020 15:12:10 +0000 (UTC) (envelope-from mw@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04QFCAoH050492; Tue, 26 May 2020 15:12:10 GMT (envelope-from mw@FreeBSD.org) Received: (from mw@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04QFCAp5050491; Tue, 26 May 2020 15:12:10 GMT (envelope-from mw@FreeBSD.org) Message-Id: <202005261512.04QFCAp5050491@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mw set sender to mw@FreeBSD.org using -f From: Marcin Wojtas Date: Tue, 26 May 2020 15:12:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r361510 - vendor-sys/ena-com/2.2.0 X-SVN-Group: vendor-sys X-SVN-Commit-Author: mw X-SVN-Commit-Paths: vendor-sys/ena-com/2.2.0 X-SVN-Commit-Revision: 361510 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2020 15:12:10 -0000 Author: mw Date: Tue May 26 15:12:09 2020 New Revision: 361510 URL: https://svnweb.freebsd.org/changeset/base/361510 Log: Create 2.0.0 tag in ena-com Tag is added after updating the ENA HAL to the newest in r361508. Obtained from: Semihalf Sponsored by: Amazon, Inc. Added: vendor-sys/ena-com/2.2.0/ - copied from r361509, vendor-sys/ena-com/dist/ From owner-svn-src-all@freebsd.org Tue May 26 15:29:19 2020 Return-Path: Delivered-To: svn-src-all@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 AAA7A2CB20A; Tue, 26 May 2020 15:29:19 +0000 (UTC) (envelope-from mw@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49WdDH4M7Gz4LjD; Tue, 26 May 2020 15:29:19 +0000 (UTC) (envelope-from mw@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 9087E254F7; Tue, 26 May 2020 15:29:19 +0000 (UTC) (envelope-from mw@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04QFTJ6F057932; Tue, 26 May 2020 15:29:19 GMT (envelope-from mw@FreeBSD.org) Received: (from mw@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04QFTJZ1057929; Tue, 26 May 2020 15:29:19 GMT (envelope-from mw@FreeBSD.org) Message-Id: <202005261529.04QFTJZ1057929@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mw set sender to mw@FreeBSD.org using -f From: Marcin Wojtas Date: Tue, 26 May 2020 15:29:19 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361511 - in head/sys: contrib/ena-com contrib/ena-com/ena_defs dev/ena X-SVN-Group: head X-SVN-Commit-Author: mw X-SVN-Commit-Paths: in head/sys: contrib/ena-com contrib/ena-com/ena_defs dev/ena X-SVN-Commit-Revision: 361511 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2020 15:29:19 -0000 Author: mw Date: Tue May 26 15:29:19 2020 New Revision: 361511 URL: https://svnweb.freebsd.org/changeset/base/361511 Log: Adjust ENA driver to the new HAL * Removed adaptive interrupt moderation (not suported on FreeBSD). * Use ena_com_free_q_entries instead of ena_com_free_desc. * Don't use ENA_MEM_FREE outside of the ena_com. * Don't use barriers before calling doorbells as it's already done in the HAL. * Add function that generates random RSS key, common for all driver's interfaces. * Change admin stats sysctls to U64. Submitted by: Michal Krawczyk Obtained from: Semihalf Sponsored by: Amazon, Inc. Modified: head/sys/contrib/ena-com/ena_com.c head/sys/contrib/ena-com/ena_com.h head/sys/contrib/ena-com/ena_defs/ena_admin_defs.h head/sys/contrib/ena-com/ena_defs/ena_common_defs.h head/sys/contrib/ena-com/ena_defs/ena_eth_io_defs.h head/sys/contrib/ena-com/ena_defs/ena_gen_info.h head/sys/contrib/ena-com/ena_defs/ena_regs_defs.h head/sys/contrib/ena-com/ena_eth_com.c head/sys/contrib/ena-com/ena_eth_com.h head/sys/contrib/ena-com/ena_plat.h head/sys/dev/ena/ena.c head/sys/dev/ena/ena.h head/sys/dev/ena/ena_datapath.c head/sys/dev/ena/ena_netmap.c head/sys/dev/ena/ena_sysctl.c Directory Properties: head/sys/contrib/ena-com/ (props changed) Modified: head/sys/contrib/ena-com/ena_com.c ============================================================================== --- head/sys/contrib/ena-com/ena_com.c Tue May 26 15:12:09 2020 (r361510) +++ head/sys/contrib/ena-com/ena_com.c Tue May 26 15:29:19 2020 (r361511) @@ -1,7 +1,7 @@ /*- * BSD LICENSE * - * Copyright (c) 2015-2019 Amazon.com, Inc. or its affiliates. + * Copyright (c) 2015-2020 Amazon.com, Inc. or its affiliates. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -70,8 +70,10 @@ #define ENA_REGS_ADMIN_INTR_MASK 1 -#define ENA_POLL_MS 5 +#define ENA_MIN_POLL_US 100 +#define ENA_MAX_POLL_US 5000 + /*****************************************************************************/ /*****************************************************************************/ /*****************************************************************************/ @@ -99,7 +101,7 @@ struct ena_com_stats_ctx { struct ena_admin_acq_get_stats_resp get_resp; }; -static inline int ena_com_mem_addr_set(struct ena_com_dev *ena_dev, +static int ena_com_mem_addr_set(struct ena_com_dev *ena_dev, struct ena_common_mem_addr *ena_addr, dma_addr_t addr) { @@ -200,7 +202,7 @@ static int ena_com_admin_init_aenq(struct ena_com_dev return 0; } -static inline void comp_ctxt_release(struct ena_com_admin_queue *queue, +static void comp_ctxt_release(struct ena_com_admin_queue *queue, struct ena_comp_ctx *comp_ctx) { comp_ctx->occupied = false; @@ -216,6 +218,11 @@ static struct ena_comp_ctx *get_comp_ctxt(struct ena_c return NULL; } + if (unlikely(!queue->comp_ctx)) { + ena_trc_err("Completion context is NULL\n"); + return NULL; + } + if (unlikely(queue->comp_ctx[command_id].occupied && capture)) { ena_trc_err("Completion context is occupied\n"); return NULL; @@ -289,7 +296,7 @@ static struct ena_comp_ctx *__ena_com_submit_admin_cmd return comp_ctx; } -static inline int ena_com_init_comp_ctxt(struct ena_com_admin_queue *queue) +static int ena_com_init_comp_ctxt(struct ena_com_admin_queue *queue) { size_t size = queue->q_depth * sizeof(struct ena_comp_ctx); struct ena_comp_ctx *comp_ctx; @@ -409,6 +416,8 @@ static int ena_com_init_io_sq(struct ena_com_dev *ena_ 0x0, io_sq->llq_info.desc_list_entry_size); io_sq->llq_buf_ctrl.descs_left_in_line = io_sq->llq_info.descs_num_before_header; + io_sq->disable_meta_caching = + io_sq->llq_info.disable_meta_caching; if (io_sq->llq_info.max_entries_in_tx_burst > 0) io_sq->entries_in_tx_burst_left = @@ -534,12 +543,9 @@ static int ena_com_comp_status_to_errno(u8 comp_status if (unlikely(comp_status != 0)) ena_trc_err("admin command failed[%u]\n", comp_status); - if (unlikely(comp_status > ENA_ADMIN_UNKNOWN_ERROR)) - return ENA_COM_INVAL; - switch (comp_status) { case ENA_ADMIN_SUCCESS: - return 0; + return ENA_COM_OK; case ENA_ADMIN_RESOURCE_ALLOCATION_FAILURE: return ENA_COM_NO_MEM; case ENA_ADMIN_UNSUPPORTED_OPCODE: @@ -551,24 +557,32 @@ static int ena_com_comp_status_to_errno(u8 comp_status return ENA_COM_INVAL; } - return 0; + return ENA_COM_INVAL; } +static inline void ena_delay_exponential_backoff_us(u32 exp, u32 delay_us) +{ + delay_us = ENA_MAX32(ENA_MIN_POLL_US, delay_us); + delay_us = ENA_MIN32(delay_us * (1 << exp), ENA_MAX_POLL_US); + ENA_USLEEP(delay_us); +} + static int ena_com_wait_and_process_admin_cq_polling(struct ena_comp_ctx *comp_ctx, struct ena_com_admin_queue *admin_queue) { unsigned long flags = 0; - unsigned long timeout; + ena_time_t timeout; int ret; + u32 exp = 0; timeout = ENA_GET_SYSTEM_TIMEOUT(admin_queue->completion_timeout); while (1) { - ENA_SPINLOCK_LOCK(admin_queue->q_lock, flags); - ena_com_handle_admin_completion(admin_queue); - ENA_SPINLOCK_UNLOCK(admin_queue->q_lock, flags); + ENA_SPINLOCK_LOCK(admin_queue->q_lock, flags); + ena_com_handle_admin_completion(admin_queue); + ENA_SPINLOCK_UNLOCK(admin_queue->q_lock, flags); - if (comp_ctx->status != ENA_CMD_SUBMITTED) + if (comp_ctx->status != ENA_CMD_SUBMITTED) break; if (ENA_TIME_EXPIRE(timeout)) { @@ -583,7 +597,7 @@ static int ena_com_wait_and_process_admin_cq_polling(s goto err; } - ENA_MSLEEP(ENA_POLL_MS); + ena_delay_exponential_backoff_us(exp++, admin_queue->ena_dev->ena_min_poll_delay_us); } if (unlikely(comp_ctx->status == ENA_CMD_ABORTED)) { @@ -629,6 +643,14 @@ static int ena_com_set_llq(struct ena_com_dev *ena_dev cmd.u.llq.desc_num_before_header_enabled = llq_info->descs_num_before_header; cmd.u.llq.descriptors_stride_ctrl_enabled = llq_info->desc_stride_ctrl; + if (llq_info->disable_meta_caching) + cmd.u.llq.accel_mode.u.set.enabled_flags |= + BIT(ENA_ADMIN_DISABLE_META_CACHING); + + if (llq_info->max_entries_in_tx_burst) + cmd.u.llq.accel_mode.u.set.enabled_flags |= + BIT(ENA_ADMIN_LIMIT_TX_BURST); + ret = ena_com_execute_admin_command(admin_queue, (struct ena_admin_aq_entry *)&cmd, sizeof(cmd), @@ -748,15 +770,21 @@ static int ena_com_config_llq_info(struct ena_com_dev supported_feat, llq_info->descs_num_before_header); } + /* Check for accelerated queue supported */ + llq_info->disable_meta_caching = + llq_features->accel_mode.u.get.supported_flags & + BIT(ENA_ADMIN_DISABLE_META_CACHING); - llq_info->max_entries_in_tx_burst = - (u16)(llq_features->max_tx_burst_size / llq_default_cfg->llq_ring_entry_size_value); + if (llq_features->accel_mode.u.get.supported_flags & BIT(ENA_ADMIN_LIMIT_TX_BURST)) + llq_info->max_entries_in_tx_burst = + llq_features->accel_mode.u.get.max_tx_burst_size / + llq_default_cfg->llq_ring_entry_size_value; rc = ena_com_set_llq(ena_dev); if (rc) ena_trc_err("Cannot set LLQ configuration: %d\n", rc); - return 0; + return rc; } static int ena_com_wait_and_process_admin_cq_interrupts(struct ena_comp_ctx *comp_ctx, @@ -779,16 +807,25 @@ static int ena_com_wait_and_process_admin_cq_interrupt admin_queue->stats.no_completion++; ENA_SPINLOCK_UNLOCK(admin_queue->q_lock, flags); - if (comp_ctx->status == ENA_CMD_COMPLETED) - ena_trc_err("The ena device have completion but the driver didn't receive any MSI-X interrupt (cmd %d)\n", - comp_ctx->cmd_opcode); - else - ena_trc_err("The ena device doesn't send any completion for the admin cmd %d status %d\n", + if (comp_ctx->status == ENA_CMD_COMPLETED) { + ena_trc_err("The ena device sent a completion but the driver didn't receive a MSI-X interrupt (cmd %d), autopolling mode is %s\n", + comp_ctx->cmd_opcode, admin_queue->auto_polling ? "ON" : "OFF"); + /* Check if fallback to polling is enabled */ + if (admin_queue->auto_polling) + admin_queue->polling = true; + } else { + ena_trc_err("The ena device didn't send a completion for the admin cmd %d status %d\n", comp_ctx->cmd_opcode, comp_ctx->status); - - admin_queue->running_state = false; - ret = ENA_COM_TIMER_EXPIRED; - goto err; + } + /* Check if shifted to polling mode. + * This will happen if there is a completion without an interrupt + * and autopolling mode is enabled. Continuing normal execution in such case + */ + if (!admin_queue->polling) { + admin_queue->running_state = false; + ret = ENA_COM_TIMER_EXPIRED; + goto err; + } } ret = ena_com_comp_status_to_errno(comp_ctx->comp_status); @@ -944,7 +981,9 @@ static void ena_com_io_queue_free(struct ena_com_dev * } if (io_sq->bounce_buf_ctrl.base_buffer) { - ENA_MEM_FREE(ena_dev->dmadev, io_sq->bounce_buf_ctrl.base_buffer); + ENA_MEM_FREE(ena_dev->dmadev, + io_sq->bounce_buf_ctrl.base_buffer, + (io_sq->llq_info.desc_list_entry_size * ENA_COM_BOUNCE_BUFFER_CNTRL_CNT)); io_sq->bounce_buf_ctrl.base_buffer = NULL; } } @@ -952,12 +991,13 @@ static void ena_com_io_queue_free(struct ena_com_dev * static int wait_for_reset_state(struct ena_com_dev *ena_dev, u32 timeout, u16 exp_state) { - u32 val, i; + u32 val, exp = 0; + ena_time_t timeout_stamp; - /* Convert timeout from resolution of 100ms to ENA_POLL_MS */ - timeout = (timeout * 100) / ENA_POLL_MS; + /* Convert timeout from resolution of 100ms to us resolution. */ + timeout_stamp = ENA_GET_SYSTEM_TIMEOUT(100 * 1000 * timeout); - for (i = 0; i < timeout; i++) { + while (1) { val = ena_com_reg_bar_read32(ena_dev, ENA_REGS_DEV_STS_OFF); if (unlikely(val == ENA_MMIO_READ_TIMEOUT)) { @@ -969,10 +1009,11 @@ static int wait_for_reset_state(struct ena_com_dev *en exp_state) return 0; - ENA_MSLEEP(ENA_POLL_MS); - } + if (ENA_TIME_EXPIRE(timeout_stamp)) + return ENA_COM_TIMER_EXPIRED; - return ENA_COM_TIMER_EXPIRED; + ena_delay_exponential_backoff_us(exp++, ena_dev->ena_min_poll_delay_us); + } } static bool ena_com_check_supported_feature_id(struct ena_com_dev *ena_dev, @@ -1055,10 +1096,34 @@ static int ena_com_get_feature(struct ena_com_dev *ena feature_ver); } +int ena_com_get_current_hash_function(struct ena_com_dev *ena_dev) +{ + return ena_dev->rss.hash_func; +} + +static void ena_com_hash_key_fill_default_key(struct ena_com_dev *ena_dev) +{ + struct ena_admin_feature_rss_flow_hash_control *hash_key = + (ena_dev->rss).hash_key; + + ENA_RSS_FILL_KEY(&hash_key->key, sizeof(hash_key->key)); + /* The key buffer is stored in the device in an array of + * uint32 elements. Therefore the number of elements can be derived + * by dividing the buffer length by the size of each array element. + * In current implementation each element is sized at uint32_t + * so it's actually a division by 4 but if the element size changes, + * there is no need to rewrite this code. + */ + hash_key->keys_num = sizeof(hash_key->key) / sizeof(hash_key->key[0]); +} + static int ena_com_hash_key_allocate(struct ena_com_dev *ena_dev) { struct ena_rss *rss = &ena_dev->rss; + if (!ena_com_check_supported_feature_id(ena_dev, ENA_ADMIN_RSS_HASH_FUNCTION)) + return ENA_COM_UNSUPPORTED; + ENA_MEM_ALLOC_COHERENT(ena_dev->dmadev, sizeof(*rss->hash_key), rss->hash_key, @@ -1186,7 +1251,9 @@ static void ena_com_indirect_table_destroy(struct ena_ rss->rss_ind_tbl = NULL; if (rss->host_rss_ind_tbl) - ENA_MEM_FREE(ena_dev->dmadev, rss->host_rss_ind_tbl); + ENA_MEM_FREE(ena_dev->dmadev, + rss->host_rss_ind_tbl, + ((1ULL << rss->tbl_log_size) * sizeof(u16))); rss->host_rss_ind_tbl = NULL; } @@ -1287,63 +1354,29 @@ static int ena_com_ind_tbl_convert_to_device(struct en return 0; } -static int ena_com_ind_tbl_convert_from_device(struct ena_com_dev *ena_dev) -{ - u16 dev_idx_to_host_tbl[ENA_TOTAL_NUM_QUEUES] = { (u16)-1 }; - struct ena_rss *rss = &ena_dev->rss; - u8 idx; - u16 i; - - for (i = 0; i < ENA_TOTAL_NUM_QUEUES; i++) - dev_idx_to_host_tbl[ena_dev->io_sq_queues[i].idx] = i; - - for (i = 0; i < 1 << rss->tbl_log_size; i++) { - if (rss->rss_ind_tbl[i].cq_idx > ENA_TOTAL_NUM_QUEUES) - return ENA_COM_INVAL; - idx = (u8)rss->rss_ind_tbl[i].cq_idx; - - if (dev_idx_to_host_tbl[idx] > ENA_TOTAL_NUM_QUEUES) - return ENA_COM_INVAL; - - rss->host_rss_ind_tbl[i] = dev_idx_to_host_tbl[idx]; - } - - return 0; -} - -static int ena_com_init_interrupt_moderation_table(struct ena_com_dev *ena_dev) -{ - size_t size; - - size = sizeof(struct ena_intr_moder_entry) * ENA_INTR_MAX_NUM_OF_LEVELS; - - ena_dev->intr_moder_tbl = ENA_MEM_ALLOC(ena_dev->dmadev, size); - if (!ena_dev->intr_moder_tbl) - return ENA_COM_NO_MEM; - - ena_com_config_default_interrupt_moderation_table(ena_dev); - - return 0; -} - static void ena_com_update_intr_delay_resolution(struct ena_com_dev *ena_dev, u16 intr_delay_resolution) { - struct ena_intr_moder_entry *intr_moder_tbl = ena_dev->intr_moder_tbl; - unsigned int i; + u16 prev_intr_delay_resolution = ena_dev->intr_delay_resolution; - if (!intr_delay_resolution) { + if (unlikely(!intr_delay_resolution)) { ena_trc_err("Illegal intr_delay_resolution provided. Going to use default 1 usec resolution\n"); - intr_delay_resolution = 1; + intr_delay_resolution = ENA_DEFAULT_INTR_DELAY_RESOLUTION; } - ena_dev->intr_delay_resolution = intr_delay_resolution; /* update Rx */ - for (i = 0; i < ENA_INTR_MAX_NUM_OF_LEVELS; i++) - intr_moder_tbl[i].intr_moder_interval /= intr_delay_resolution; + ena_dev->intr_moder_rx_interval = + ena_dev->intr_moder_rx_interval * + prev_intr_delay_resolution / + intr_delay_resolution; /* update Tx */ - ena_dev->intr_moder_tx_interval /= intr_delay_resolution; + ena_dev->intr_moder_tx_interval = + ena_dev->intr_moder_tx_interval * + prev_intr_delay_resolution / + intr_delay_resolution; + + ena_dev->intr_delay_resolution = intr_delay_resolution; } /*****************************************************************************/ @@ -1482,11 +1515,12 @@ void ena_com_wait_for_abort_completion(struct ena_com_ { struct ena_com_admin_queue *admin_queue = &ena_dev->admin_queue; unsigned long flags = 0; + u32 exp = 0; ENA_SPINLOCK_LOCK(admin_queue->q_lock, flags); while (ATOMIC32_READ(&admin_queue->outstanding_cmds) != 0) { ENA_SPINLOCK_UNLOCK(admin_queue->q_lock, flags); - ENA_MSLEEP(ENA_POLL_MS); + ena_delay_exponential_backoff_us(exp++, ena_dev->ena_min_poll_delay_us); ENA_SPINLOCK_LOCK(admin_queue->q_lock, flags); } ENA_SPINLOCK_UNLOCK(admin_queue->q_lock, flags); @@ -1667,7 +1701,9 @@ void ena_com_admin_destroy(struct ena_com_dev *ena_dev ENA_WAIT_EVENT_DESTROY(admin_queue->comp_ctx->wait_event); if (admin_queue->comp_ctx) - ENA_MEM_FREE(ena_dev->dmadev, admin_queue->comp_ctx); + ENA_MEM_FREE(ena_dev->dmadev, + admin_queue->comp_ctx, + (admin_queue->q_depth * sizeof(struct ena_comp_ctx))); admin_queue->comp_ctx = NULL; size = ADMIN_SQ_SIZE(admin_queue->q_depth); if (sq->entries) @@ -1701,6 +1737,17 @@ void ena_com_set_admin_polling_mode(struct ena_com_dev ena_dev->admin_queue.polling = polling; } +bool ena_com_get_admin_polling_mode(struct ena_com_dev *ena_dev) +{ + return ena_dev->admin_queue.polling; +} + +void ena_com_set_admin_auto_polling_mode(struct ena_com_dev *ena_dev, + bool polling) +{ + ena_dev->admin_queue.auto_polling = polling; +} + int ena_com_mmio_reg_read_request_init(struct ena_com_dev *ena_dev) { struct ena_com_mmio_read *mmio_read = &ena_dev->mmio_read; @@ -1838,6 +1885,7 @@ int ena_com_admin_init(struct ena_com_dev *ena_dev, if (ret) goto error; + admin_queue->ena_dev = ena_dev; admin_queue->running_state = true; return 0; @@ -1934,62 +1982,6 @@ int ena_com_get_link_params(struct ena_com_dev *ena_de return ena_com_get_feature(ena_dev, resp, ENA_ADMIN_LINK_CONFIG, 0); } -int ena_com_extra_properties_strings_init(struct ena_com_dev *ena_dev) -{ - struct ena_admin_get_feat_resp resp; - struct ena_extra_properties_strings *extra_properties_strings = - &ena_dev->extra_properties_strings; - u32 rc; - extra_properties_strings->size = ENA_ADMIN_EXTRA_PROPERTIES_COUNT * - ENA_ADMIN_EXTRA_PROPERTIES_STRING_LEN; - - ENA_MEM_ALLOC_COHERENT(ena_dev->dmadev, - extra_properties_strings->size, - extra_properties_strings->virt_addr, - extra_properties_strings->dma_addr, - extra_properties_strings->dma_handle); - if (unlikely(!extra_properties_strings->virt_addr)) { - ena_trc_err("Failed to allocate extra properties strings\n"); - return 0; - } - - rc = ena_com_get_feature_ex(ena_dev, &resp, - ENA_ADMIN_EXTRA_PROPERTIES_STRINGS, - extra_properties_strings->dma_addr, - extra_properties_strings->size, 0); - if (rc) { - ena_trc_dbg("Failed to get extra properties strings\n"); - goto err; - } - - return resp.u.extra_properties_strings.count; -err: - ena_com_delete_extra_properties_strings(ena_dev); - return 0; -} - -void ena_com_delete_extra_properties_strings(struct ena_com_dev *ena_dev) -{ - struct ena_extra_properties_strings *extra_properties_strings = - &ena_dev->extra_properties_strings; - - if (extra_properties_strings->virt_addr) { - ENA_MEM_FREE_COHERENT(ena_dev->dmadev, - extra_properties_strings->size, - extra_properties_strings->virt_addr, - extra_properties_strings->dma_addr, - extra_properties_strings->dma_handle); - extra_properties_strings->virt_addr = NULL; - } -} - -int ena_com_get_extra_properties_flags(struct ena_com_dev *ena_dev, - struct ena_admin_get_feat_resp *resp) -{ - return ena_com_get_feature(ena_dev, resp, - ENA_ADMIN_EXTRA_PROPERTIES_FLAGS, 0); -} - int ena_com_get_dev_attr_feat(struct ena_com_dev *ena_dev, struct ena_com_dev_get_features_ctx *get_feat_ctx) { @@ -2111,7 +2103,7 @@ void ena_com_aenq_intr_handler(struct ena_com_dev *dev struct ena_admin_aenq_entry *aenq_e; struct ena_admin_aenq_common_desc *aenq_common; struct ena_com_aenq *aenq = &dev->aenq; - unsigned long long timestamp; + u64 timestamp; ena_aenq_handler handler_cb; u16 masked_head, processed = 0; u8 phase; @@ -2129,9 +2121,9 @@ void ena_com_aenq_intr_handler(struct ena_com_dev *dev */ dma_rmb(); - timestamp = (unsigned long long)aenq_common->timestamp_low | - ((unsigned long long)aenq_common->timestamp_high << 32); - ena_trc_dbg("AENQ! Group[%x] Syndrom[%x] timestamp: [%llus]\n", + timestamp = (u64)aenq_common->timestamp_low | + ((u64)aenq_common->timestamp_high << 32); + ena_trc_dbg("AENQ! Group[%x] Syndrom[%x] timestamp: [%" ENA_PRIu64 "s]\n", aenq_common->group, aenq_common->syndrom, timestamp); @@ -2452,12 +2444,14 @@ int ena_com_fill_hash_function(struct ena_com_dev *ena enum ena_admin_hash_functions func, const u8 *key, u16 key_len, u32 init_val) { - struct ena_rss *rss = &ena_dev->rss; + struct ena_admin_feature_rss_flow_hash_control *hash_key; struct ena_admin_get_feat_resp get_resp; - struct ena_admin_feature_rss_flow_hash_control *hash_key = - rss->hash_key; + enum ena_admin_hash_functions old_func; + struct ena_rss *rss = &ena_dev->rss; int rc; + hash_key = rss->hash_key; + /* Make sure size is a mult of DWs */ if (unlikely(key_len & 0x3)) return ENA_COM_INVAL; @@ -2469,22 +2463,23 @@ int ena_com_fill_hash_function(struct ena_com_dev *ena if (unlikely(rc)) return rc; - if (!((1 << func) & get_resp.u.flow_hash_func.supported_func)) { + if (!(BIT(func) & get_resp.u.flow_hash_func.supported_func)) { ena_trc_err("Flow hash function %d isn't supported\n", func); return ENA_COM_UNSUPPORTED; } switch (func) { case ENA_ADMIN_TOEPLITZ: - if (key_len > sizeof(hash_key->key)) { - ena_trc_err("key len (%hu) is bigger than the max supported (%zu)\n", - key_len, sizeof(hash_key->key)); - return ENA_COM_INVAL; + if (key) { + if (key_len != sizeof(hash_key->key)) { + ena_trc_err("key len (%hu) doesn't equal the supported size (%zu)\n", + key_len, sizeof(hash_key->key)); + return ENA_COM_INVAL; + } + memcpy(hash_key->key, key, key_len); + rss->hash_init_val = init_val; + hash_key->keys_num = key_len / sizeof(hash_key->key[0]); } - - memcpy(hash_key->key, key, key_len); - rss->hash_init_val = init_val; - hash_key->keys_num = key_len >> 2; break; case ENA_ADMIN_CRC32: rss->hash_init_val = init_val; @@ -2494,26 +2489,27 @@ int ena_com_fill_hash_function(struct ena_com_dev *ena return ENA_COM_INVAL; } + old_func = rss->hash_func; rss->hash_func = func; rc = ena_com_set_hash_function(ena_dev); /* Restore the old function */ if (unlikely(rc)) - ena_com_get_hash_function(ena_dev, NULL, NULL); + rss->hash_func = old_func; return rc; } int ena_com_get_hash_function(struct ena_com_dev *ena_dev, - enum ena_admin_hash_functions *func, - u8 *key) + enum ena_admin_hash_functions *func) { struct ena_rss *rss = &ena_dev->rss; struct ena_admin_get_feat_resp get_resp; - struct ena_admin_feature_rss_flow_hash_control *hash_key = - rss->hash_key; int rc; + if (unlikely(!func)) + return ENA_COM_INVAL; + rc = ena_com_get_feature_ex(ena_dev, &get_resp, ENA_ADMIN_RSS_HASH_FUNCTION, rss->hash_key_dma_addr, @@ -2521,10 +2517,21 @@ int ena_com_get_hash_function(struct ena_com_dev *ena_ if (unlikely(rc)) return rc; - rss->hash_func = get_resp.u.flow_hash_func.selected_func; - if (func) - *func = rss->hash_func; + /* ENA_FFS() returns 1 in case the lsb is set */ + rss->hash_func = ENA_FFS(get_resp.u.flow_hash_func.selected_func); + if (rss->hash_func) + rss->hash_func--; + *func = rss->hash_func; + + return 0; +} + +int ena_com_get_hash_key(struct ena_com_dev *ena_dev, u8 *key) +{ + struct ena_admin_feature_rss_flow_hash_control *hash_key = + ena_dev->rss.hash_key; + if (key) memcpy(key, hash_key->key, (size_t)(hash_key->keys_num) << 2); @@ -2785,10 +2792,6 @@ int ena_com_indirect_table_get(struct ena_com_dev *ena if (!ind_tbl) return 0; - rc = ena_com_ind_tbl_convert_from_device(ena_dev); - if (unlikely(rc)) - return rc; - for (i = 0; i < (1 << rss->tbl_log_size); i++) ind_tbl[i] = rss->host_rss_ind_tbl[i]; @@ -2805,8 +2808,14 @@ int ena_com_rss_init(struct ena_com_dev *ena_dev, u16 if (unlikely(rc)) goto err_indr_tbl; + /* The following function might return unsupported in case the + * device doesn't support setting the key / hash function. We can safely + * ignore this error and have indirection table support only. + */ rc = ena_com_hash_key_allocate(ena_dev); - if (unlikely(rc)) + if (likely(!rc)) + ena_com_hash_key_fill_default_key(ena_dev); + else if (rc != ENA_COM_UNSUPPORTED) goto err_hash_key; rc = ena_com_hash_ctrl_init(ena_dev); @@ -2956,42 +2965,35 @@ bool ena_com_interrupt_moderation_supported(struct ena ENA_ADMIN_INTERRUPT_MODERATION); } -int ena_com_update_nonadaptive_moderation_interval_tx(struct ena_com_dev *ena_dev, - u32 tx_coalesce_usecs) +static int ena_com_update_nonadaptive_moderation_interval(u32 coalesce_usecs, + u32 intr_delay_resolution, + u32 *intr_moder_interval) { - if (!ena_dev->intr_delay_resolution) { + if (!intr_delay_resolution) { ena_trc_err("Illegal interrupt delay granularity value\n"); return ENA_COM_FAULT; } - ena_dev->intr_moder_tx_interval = tx_coalesce_usecs / - ena_dev->intr_delay_resolution; + *intr_moder_interval = coalesce_usecs / intr_delay_resolution; return 0; } -int ena_com_update_nonadaptive_moderation_interval_rx(struct ena_com_dev *ena_dev, - u32 rx_coalesce_usecs) -{ - if (!ena_dev->intr_delay_resolution) { - ena_trc_err("Illegal interrupt delay granularity value\n"); - return ENA_COM_FAULT; - } - /* We use LOWEST entry of moderation table for storing - * nonadaptive interrupt coalescing values - */ - ena_dev->intr_moder_tbl[ENA_INTR_MODER_LOWEST].intr_moder_interval = - rx_coalesce_usecs / ena_dev->intr_delay_resolution; - - return 0; +int ena_com_update_nonadaptive_moderation_interval_tx(struct ena_com_dev *ena_dev, + u32 tx_coalesce_usecs) +{ + return ena_com_update_nonadaptive_moderation_interval(tx_coalesce_usecs, + ena_dev->intr_delay_resolution, + &ena_dev->intr_moder_tx_interval); } -void ena_com_destroy_interrupt_moderation(struct ena_com_dev *ena_dev) +int ena_com_update_nonadaptive_moderation_interval_rx(struct ena_com_dev *ena_dev, + u32 rx_coalesce_usecs) { - if (ena_dev->intr_moder_tbl) - ENA_MEM_FREE(ena_dev->dmadev, ena_dev->intr_moder_tbl); - ena_dev->intr_moder_tbl = NULL; + return ena_com_update_nonadaptive_moderation_interval(rx_coalesce_usecs, + ena_dev->intr_delay_resolution, + &ena_dev->intr_moder_rx_interval); } int ena_com_init_interrupt_moderation(struct ena_com_dev *ena_dev) @@ -3018,64 +3020,16 @@ int ena_com_init_interrupt_moderation(struct ena_com_d return rc; } - rc = ena_com_init_interrupt_moderation_table(ena_dev); - if (rc) - goto err; - /* if moderation is supported by device we set adaptive moderation */ delay_resolution = get_resp.u.intr_moderation.intr_delay_resolution; ena_com_update_intr_delay_resolution(ena_dev, delay_resolution); - ena_com_enable_adaptive_moderation(ena_dev); + /* Disable adaptive moderation by default - can be enabled later */ + ena_com_disable_adaptive_moderation(ena_dev); + return 0; -err: - ena_com_destroy_interrupt_moderation(ena_dev); - return rc; } -void ena_com_config_default_interrupt_moderation_table(struct ena_com_dev *ena_dev) -{ - struct ena_intr_moder_entry *intr_moder_tbl = ena_dev->intr_moder_tbl; - - if (!intr_moder_tbl) - return; - - intr_moder_tbl[ENA_INTR_MODER_LOWEST].intr_moder_interval = - ENA_INTR_LOWEST_USECS; - intr_moder_tbl[ENA_INTR_MODER_LOWEST].pkts_per_interval = - ENA_INTR_LOWEST_PKTS; - intr_moder_tbl[ENA_INTR_MODER_LOWEST].bytes_per_interval = - ENA_INTR_LOWEST_BYTES; - - intr_moder_tbl[ENA_INTR_MODER_LOW].intr_moder_interval = - ENA_INTR_LOW_USECS; - intr_moder_tbl[ENA_INTR_MODER_LOW].pkts_per_interval = - ENA_INTR_LOW_PKTS; - intr_moder_tbl[ENA_INTR_MODER_LOW].bytes_per_interval = - ENA_INTR_LOW_BYTES; - - intr_moder_tbl[ENA_INTR_MODER_MID].intr_moder_interval = - ENA_INTR_MID_USECS; - intr_moder_tbl[ENA_INTR_MODER_MID].pkts_per_interval = - ENA_INTR_MID_PKTS; - intr_moder_tbl[ENA_INTR_MODER_MID].bytes_per_interval = - ENA_INTR_MID_BYTES; - - intr_moder_tbl[ENA_INTR_MODER_HIGH].intr_moder_interval = - ENA_INTR_HIGH_USECS; - intr_moder_tbl[ENA_INTR_MODER_HIGH].pkts_per_interval = - ENA_INTR_HIGH_PKTS; - intr_moder_tbl[ENA_INTR_MODER_HIGH].bytes_per_interval = - ENA_INTR_HIGH_BYTES; - - intr_moder_tbl[ENA_INTR_MODER_HIGHEST].intr_moder_interval = - ENA_INTR_HIGHEST_USECS; - intr_moder_tbl[ENA_INTR_MODER_HIGHEST].pkts_per_interval = - ENA_INTR_HIGHEST_PKTS; - intr_moder_tbl[ENA_INTR_MODER_HIGHEST].bytes_per_interval = - ENA_INTR_HIGHEST_BYTES; -} - unsigned int ena_com_get_nonadaptive_moderation_interval_tx(struct ena_com_dev *ena_dev) { return ena_dev->intr_moder_tx_interval; @@ -3083,57 +3037,15 @@ unsigned int ena_com_get_nonadaptive_moderation_interv unsigned int ena_com_get_nonadaptive_moderation_interval_rx(struct ena_com_dev *ena_dev) { - struct ena_intr_moder_entry *intr_moder_tbl = ena_dev->intr_moder_tbl; - - if (intr_moder_tbl) - return intr_moder_tbl[ENA_INTR_MODER_LOWEST].intr_moder_interval; - - return 0; + return ena_dev->intr_moder_rx_interval; } -void ena_com_init_intr_moderation_entry(struct ena_com_dev *ena_dev, - enum ena_intr_moder_level level, - struct ena_intr_moder_entry *entry) -{ - struct ena_intr_moder_entry *intr_moder_tbl = ena_dev->intr_moder_tbl; - - if (level >= ENA_INTR_MAX_NUM_OF_LEVELS) - return; - - intr_moder_tbl[level].intr_moder_interval = entry->intr_moder_interval; - if (ena_dev->intr_delay_resolution) - intr_moder_tbl[level].intr_moder_interval /= - ena_dev->intr_delay_resolution; - intr_moder_tbl[level].pkts_per_interval = entry->pkts_per_interval; - - /* use hardcoded value until ethtool supports bytecount parameter */ - if (entry->bytes_per_interval != ENA_INTR_BYTE_COUNT_NOT_SUPPORTED) - intr_moder_tbl[level].bytes_per_interval = entry->bytes_per_interval; -} - -void ena_com_get_intr_moderation_entry(struct ena_com_dev *ena_dev, - enum ena_intr_moder_level level, - struct ena_intr_moder_entry *entry) -{ - struct ena_intr_moder_entry *intr_moder_tbl = ena_dev->intr_moder_tbl; - - if (level >= ENA_INTR_MAX_NUM_OF_LEVELS) - return; - - entry->intr_moder_interval = intr_moder_tbl[level].intr_moder_interval; - if (ena_dev->intr_delay_resolution) - entry->intr_moder_interval *= ena_dev->intr_delay_resolution; - entry->pkts_per_interval = - intr_moder_tbl[level].pkts_per_interval; - entry->bytes_per_interval = intr_moder_tbl[level].bytes_per_interval; -} - int ena_com_config_dev_mode(struct ena_com_dev *ena_dev, struct ena_admin_feature_llq_desc *llq_features, struct ena_llq_configurations *llq_default_cfg) { + struct ena_com_llq_info *llq_info = &ena_dev->llq_info; int rc; - int size; if (!llq_features->max_llq_num) { ena_dev->tx_mem_queue_type = ENA_ADMIN_PLACEMENT_POLICY_HOST; @@ -3144,14 +3056,12 @@ int ena_com_config_dev_mode(struct ena_com_dev *ena_de if (rc) return rc; - /* Validate the descriptor is not too big */ - size = ena_dev->tx_max_header_size; - size += ena_dev->llq_info.descs_num_before_header * - sizeof(struct ena_eth_io_tx_desc); + ena_dev->tx_max_header_size = llq_info->desc_list_entry_size - + (llq_info->descs_num_before_header * sizeof(struct ena_eth_io_tx_desc)); - if (unlikely(ena_dev->llq_info.desc_list_entry_size < size)) { + if (unlikely(ena_dev->tx_max_header_size == 0)) { ena_trc_err("the size of the LLQ entry is smaller than needed\n"); - return ENA_COM_INVAL; + return -EINVAL; } ena_dev->tx_mem_queue_type = ENA_ADMIN_PLACEMENT_POLICY_DEV; Modified: head/sys/contrib/ena-com/ena_com.h ============================================================================== --- head/sys/contrib/ena-com/ena_com.h Tue May 26 15:12:09 2020 (r361510) +++ head/sys/contrib/ena-com/ena_com.h Tue May 26 15:29:19 2020 (r361511) @@ -1,7 +1,7 @@ /*- * BSD LICENSE * - * Copyright (c) 2015-2019 Amazon.com, Inc. or its affiliates. + * Copyright (c) 2015-2020 Amazon.com, Inc. or its affiliates. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -36,9 +36,9 @@ #include "ena_plat.h" -#define ENA_MAX_NUM_IO_QUEUES 128U +#define ENA_MAX_NUM_IO_QUEUES 128U /* We need to queues for each IO (on for Tx and one for Rx) */ -#define ENA_TOTAL_NUM_QUEUES (2 * (ENA_MAX_NUM_IO_QUEUES)) +#define ENA_TOTAL_NUM_QUEUES (2 * (ENA_MAX_NUM_IO_QUEUES)) #define ENA_MAX_HANDLERS 256 @@ -55,46 +55,16 @@ /*****************************************************************************/ /* ENA adaptive interrupt moderation settings */ -#define ENA_INTR_LOWEST_USECS (0) -#define ENA_INTR_LOWEST_PKTS (3) -#define ENA_INTR_LOWEST_BYTES (2 * 1524) +#define ENA_INTR_INITIAL_TX_INTERVAL_USECS ENA_INTR_INITIAL_TX_INTERVAL_USECS_PLAT +#define ENA_INTR_INITIAL_RX_INTERVAL_USECS 0 +#define ENA_DEFAULT_INTR_DELAY_RESOLUTION 1 -#define ENA_INTR_LOW_USECS (32) -#define ENA_INTR_LOW_PKTS (12) -#define ENA_INTR_LOW_BYTES (16 * 1024) +#define ENA_HASH_KEY_SIZE 40 -#define ENA_INTR_MID_USECS (80) -#define ENA_INTR_MID_PKTS (48) -#define ENA_INTR_MID_BYTES (64 * 1024) +#define ENA_HW_HINTS_NO_TIMEOUT 0xFFFF -#define ENA_INTR_HIGH_USECS (128) -#define ENA_INTR_HIGH_PKTS (96) -#define ENA_INTR_HIGH_BYTES (128 * 1024) +#define ENA_FEATURE_MAX_QUEUE_EXT_VER 1 -#define ENA_INTR_HIGHEST_USECS (192) -#define ENA_INTR_HIGHEST_PKTS (128) -#define ENA_INTR_HIGHEST_BYTES (192 * 1024) - -#define ENA_INTR_INITIAL_TX_INTERVAL_USECS 196 -#define ENA_INTR_INITIAL_RX_INTERVAL_USECS 4 -#define ENA_INTR_DELAY_OLD_VALUE_WEIGHT 6 -#define ENA_INTR_DELAY_NEW_VALUE_WEIGHT 4 -#define ENA_INTR_MODER_LEVEL_STRIDE 1 -#define ENA_INTR_BYTE_COUNT_NOT_SUPPORTED 0xFFFFFF - -#define ENA_HW_HINTS_NO_TIMEOUT 0xFFFF - -#define ENA_FEATURE_MAX_QUEUE_EXT_VER 1 - -enum ena_intr_moder_level { - ENA_INTR_MODER_LOWEST = 0, - ENA_INTR_MODER_LOW, - ENA_INTR_MODER_MID, - ENA_INTR_MODER_HIGH, - ENA_INTR_MODER_HIGHEST, - ENA_INTR_MAX_NUM_OF_LEVELS, -}; - struct ena_llq_configurations { enum ena_admin_llq_header_location llq_header_location; enum ena_admin_llq_ring_entry_size llq_ring_entry_size; @@ -103,12 +73,6 @@ struct ena_llq_configurations { u16 llq_ring_entry_size_value; }; -struct ena_intr_moder_entry { - unsigned int intr_moder_interval; - unsigned int pkts_per_interval; - unsigned int bytes_per_interval; -}; - enum queue_direction { ENA_COM_IO_QUEUE_DIRECTION_TX, ENA_COM_IO_QUEUE_DIRECTION_RX @@ -146,6 +110,7 @@ struct ena_com_llq_info { u16 descs_num_before_header; u16 descs_per_entry; u16 max_entries_in_tx_burst; + bool disable_meta_caching; }; struct ena_com_io_cq { @@ -210,6 +175,8 @@ struct ena_com_io_sq { enum queue_direction direction; enum ena_admin_placement_policy_type mem_queue_type; + bool disable_meta_caching; + u32 msix_vector; struct ena_com_tx_meta cached_tx_meta; struct ena_com_llq_info llq_info; @@ -253,16 +220,17 @@ struct ena_com_admin_sq { }; struct ena_com_stats_admin { - u32 aborted_cmd; - u32 submitted_cmd; - u32 completed_cmd; - u32 out_of_space; - u32 no_completion; + u64 aborted_cmd; + u64 submitted_cmd; + u64 completed_cmd; + u64 out_of_space; + u64 no_completion; }; struct ena_com_admin_queue { void *q_dmadev; void *bus; + struct ena_com_dev *ena_dev; ena_spinlock_t q_lock; /* spinlock for the admin queue */ struct ena_comp_ctx *comp_ctx; @@ -274,6 +242,9 @@ struct ena_com_admin_queue { /* Indicate if the admin queue should poll for completion */ bool polling; + /* Define if fallback to polling mode should occur */ + bool auto_polling; + u16 curr_cmd_id; /* Indicate that the ena was initialized and can @@ -345,13 +316,6 @@ struct ena_host_attribute { ena_mem_handle_t host_info_dma_handle; }; -struct ena_extra_properties_strings { - u8 *virt_addr; - dma_addr_t dma_addr; - ena_mem_handle_t dma_handle; *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@freebsd.org Tue May 26 15:31:29 2020 Return-Path: Delivered-To: svn-src-all@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 ABEA92CB055; Tue, 26 May 2020 15:31:29 +0000 (UTC) (envelope-from mw@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49WdGn47BWz4MPg; Tue, 26 May 2020 15:31:29 +0000 (UTC) (envelope-from mw@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 6F1A1259E9; Tue, 26 May 2020 15:31:29 +0000 (UTC) (envelope-from mw@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04QFVTuN062355; Tue, 26 May 2020 15:31:29 GMT (envelope-from mw@FreeBSD.org) Received: (from mw@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04QFVSJ6062353; Tue, 26 May 2020 15:31:28 GMT (envelope-from mw@FreeBSD.org) Message-Id: <202005261531.04QFVSJ6062353@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mw set sender to mw@FreeBSD.org using -f From: Marcin Wojtas Date: Tue, 26 May 2020 15:31:28 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361512 - head/sys/dev/ena X-SVN-Group: head X-SVN-Commit-Author: mw X-SVN-Commit-Paths: head/sys/dev/ena X-SVN-Commit-Revision: 361512 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2020 15:31:29 -0000 Author: mw Date: Tue May 26 15:31:28 2020 New Revision: 361512 URL: https://svnweb.freebsd.org/changeset/base/361512 Log: Enable Tx drops reporting in the ENA driver Tx drops statistics are fetched from HW every ena_keepalive_wd() call and are observable using one of the commands: * sysctl dev.ena.0.hw_stats.tx_drops * netstat -I ena0 -d Submitted by: Maciej Bielski Obtained from: Semihalf Sponsored by: Amazon, Inc. Modified: head/sys/dev/ena/ena.c head/sys/dev/ena/ena.h head/sys/dev/ena/ena_sysctl.c Modified: head/sys/dev/ena/ena.c ============================================================================== --- head/sys/dev/ena/ena.c Tue May 26 15:29:19 2020 (r361511) +++ head/sys/dev/ena/ena.c Tue May 26 15:31:28 2020 (r361512) @@ -1888,6 +1888,8 @@ ena_get_counter(if_t ifp, ift_counter cnt) return (counter_u64_fetch(stats->tx_bytes)); case IFCOUNTER_IQDROPS: return (counter_u64_fetch(stats->rx_drops)); + case IFCOUNTER_OQDROPS: + return (counter_u64_fetch(stats->tx_drops)); default: return (if_get_counter_default(ifp, cnt)); } @@ -2710,12 +2712,16 @@ static void ena_keep_alive_wd(void *adapter_data, struct ena_admin_aenq_keep_alive_desc *desc; sbintime_t stime; uint64_t rx_drops; + uint64_t tx_drops; desc = (struct ena_admin_aenq_keep_alive_desc *)aenq_e; rx_drops = ((uint64_t)desc->rx_drops_high << 32) | desc->rx_drops_low; + tx_drops = ((uint64_t)desc->tx_drops_high << 32) | desc->tx_drops_low; counter_u64_zero(adapter->hw_stats.rx_drops); counter_u64_add(adapter->hw_stats.rx_drops, rx_drops); + counter_u64_zero(adapter->hw_stats.tx_drops); + counter_u64_add(adapter->hw_stats.tx_drops, tx_drops); stime = getsbinuptime(); atomic_store_rel_64(&adapter->keep_alive_timestamp, stime); Modified: head/sys/dev/ena/ena.h ============================================================================== --- head/sys/dev/ena/ena.h Tue May 26 15:29:19 2020 (r361511) +++ head/sys/dev/ena/ena.h Tue May 26 15:31:28 2020 (r361512) @@ -380,6 +380,7 @@ struct ena_hw_stats { counter_u64_t tx_bytes; counter_u64_t rx_drops; + counter_u64_t tx_drops; }; /* Board specific private data structure */ Modified: head/sys/dev/ena/ena_sysctl.c ============================================================================== --- head/sys/dev/ena/ena_sysctl.c Tue May 26 15:29:19 2020 (r361511) +++ head/sys/dev/ena/ena_sysctl.c Tue May 26 15:31:28 2020 (r361512) @@ -267,6 +267,8 @@ ena_sysctl_add_stats(struct ena_adapter *adapter) &hw_stats->tx_bytes, "Bytes transmitted"); SYSCTL_ADD_COUNTER_U64(ctx, hw_list, OID_AUTO, "rx_drops", CTLFLAG_RD, &hw_stats->rx_drops, "Receive packet drops"); + SYSCTL_ADD_COUNTER_U64(ctx, hw_list, OID_AUTO, "tx_drops", CTLFLAG_RD, + &hw_stats->tx_drops, "Transmit packet drops"); /* ENA Admin queue stats */ admin_node = SYSCTL_ADD_NODE(ctx, child, OID_AUTO, "admin_stats", From owner-svn-src-all@freebsd.org Tue May 26 15:33:44 2020 Return-Path: Delivered-To: svn-src-all@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 251272CB066; Tue, 26 May 2020 15:33:44 +0000 (UTC) (envelope-from mw@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49WdKM6PQXz4MpG; Tue, 26 May 2020 15:33:43 +0000 (UTC) (envelope-from mw@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 D6EEB25D04; Tue, 26 May 2020 15:33:43 +0000 (UTC) (envelope-from mw@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04QFXhuG063949; Tue, 26 May 2020 15:33:43 GMT (envelope-from mw@FreeBSD.org) Received: (from mw@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04QFXhUr063948; Tue, 26 May 2020 15:33:43 GMT (envelope-from mw@FreeBSD.org) Message-Id: <202005261533.04QFXhUr063948@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mw set sender to mw@FreeBSD.org using -f From: Marcin Wojtas Date: Tue, 26 May 2020 15:33:43 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361513 - head/sys/dev/ena X-SVN-Group: head X-SVN-Commit-Author: mw X-SVN-Commit-Paths: head/sys/dev/ena X-SVN-Commit-Revision: 361513 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2020 15:33:44 -0000 Author: mw Date: Tue May 26 15:33:43 2020 New Revision: 361513 URL: https://svnweb.freebsd.org/changeset/base/361513 Log: Remove unused argument from static function in ena.c The function ena_enable_msix_and_set_admin_interrupts takes two arguments while the second is not used and so can be spared. This is a static function, only ena.c is affected. Submitted by: Maciej Bielski Obtained from: Semihalf Sponsored by: Amazon, Inc. Modified: head/sys/dev/ena/ena.c Modified: head/sys/dev/ena/ena.c ============================================================================== --- head/sys/dev/ena/ena.c Tue May 26 15:31:28 2020 (r361512) +++ head/sys/dev/ena/ena.c Tue May 26 15:33:43 2020 (r361513) @@ -164,8 +164,7 @@ static int ena_attach(device_t); static int ena_detach(device_t); static int ena_device_init(struct ena_adapter *, device_t, struct ena_com_dev_get_features_ctx *, int *); -static int ena_enable_msix_and_set_admin_interrupts(struct ena_adapter *, - int); +static int ena_enable_msix_and_set_admin_interrupts(struct ena_adapter *); static void ena_update_on_link_change(void *, struct ena_admin_aenq_entry *); static void unimplemented_aenq_handler(void *, struct ena_admin_aenq_entry *); @@ -2672,8 +2671,7 @@ err_mmio_read_less: return (rc); } -static int ena_enable_msix_and_set_admin_interrupts(struct ena_adapter *adapter, - int io_vectors) +static int ena_enable_msix_and_set_admin_interrupts(struct ena_adapter *adapter) { struct ena_com_dev *ena_dev = adapter->ena_dev; int rc; @@ -3136,8 +3134,7 @@ ena_restore_device(struct ena_adapter *adapter) if (ENA_FLAG_ISSET(ENA_FLAG_LINK_UP, adapter)) if_link_state_change(ifp, LINK_STATE_UP); - rc = ena_enable_msix_and_set_admin_interrupts(adapter, - adapter->num_queues); + rc = ena_enable_msix_and_set_admin_interrupts(adapter); if (rc != 0) { device_printf(dev, "Enable MSI-X failed\n"); goto err_device_destroy; @@ -3365,7 +3362,7 @@ ena_attach(device_t pdev) calc_queue_ctx.tx_queue_size); ena_init_io_rings(adapter); - rc = ena_enable_msix_and_set_admin_interrupts(adapter, io_queue_num); + rc = ena_enable_msix_and_set_admin_interrupts(adapter); if (unlikely(rc != 0)) { device_printf(pdev, "Failed to enable and set the admin interrupts\n"); From owner-svn-src-all@freebsd.org Tue May 26 15:35:22 2020 Return-Path: Delivered-To: svn-src-all@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 AD4722CB24B; Tue, 26 May 2020 15:35:22 +0000 (UTC) (envelope-from mw@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49WdMG47gRz4Mdn; Tue, 26 May 2020 15:35:22 +0000 (UTC) (envelope-from mw@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 8948E258B9; Tue, 26 May 2020 15:35:22 +0000 (UTC) (envelope-from mw@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04QFZM3S064077; Tue, 26 May 2020 15:35:22 GMT (envelope-from mw@FreeBSD.org) Received: (from mw@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04QFZMJd064076; Tue, 26 May 2020 15:35:22 GMT (envelope-from mw@FreeBSD.org) Message-Id: <202005261535.04QFZMJd064076@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mw set sender to mw@FreeBSD.org using -f From: Marcin Wojtas Date: Tue, 26 May 2020 15:35:22 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361514 - head/sys/dev/ena X-SVN-Group: head X-SVN-Commit-Author: mw X-SVN-Commit-Paths: head/sys/dev/ena X-SVN-Commit-Revision: 361514 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2020 15:35:22 -0000 Author: mw Date: Tue May 26 15:35:22 2020 New Revision: 361514 URL: https://svnweb.freebsd.org/changeset/base/361514 Log: Provide ENA driver version in a sysctl node Usage example: $ sysctl hw.ena.driver_version Submitted by: Maciej Bielski Obtained from: Semihalf Sponsored by: Amazon, Inc. Modified: head/sys/dev/ena/ena_sysctl.c Modified: head/sys/dev/ena/ena_sysctl.c ============================================================================== --- head/sys/dev/ena/ena_sysctl.c Tue May 26 15:33:43 2020 (r361513) +++ head/sys/dev/ena/ena_sysctl.c Tue May 26 15:35:22 2020 (r361514) @@ -48,6 +48,9 @@ int ena_log_level = ENA_ALERT | ENA_WARNING; SYSCTL_INT(_hw_ena, OID_AUTO, log_level, CTLFLAG_RWTUN, &ena_log_level, 0, "Logging level indicating verbosity of the logs"); +SYSCTL_CONST_STRING(_hw_ena, OID_AUTO, driver_version, CTLFLAG_RD, + DRV_MODULE_VERSION, "ENA driver version"); + /* * Use 9k mbufs for the Rx buffers. Default to 0 (use page size mbufs instead). * Using 9k mbufs in low memory conditions might cause allocation to take a lot From owner-svn-src-all@freebsd.org Tue May 26 15:37:56 2020 Return-Path: Delivered-To: svn-src-all@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 D7CE22CB265; Tue, 26 May 2020 15:37:56 +0000 (UTC) (envelope-from mw@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49WdQD5GJ5z4NCD; Tue, 26 May 2020 15:37:56 +0000 (UTC) (envelope-from mw@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 AB1E7258BA; Tue, 26 May 2020 15:37:56 +0000 (UTC) (envelope-from mw@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04QFbuwP064235; Tue, 26 May 2020 15:37:56 GMT (envelope-from mw@FreeBSD.org) Received: (from mw@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04QFbt9k064231; Tue, 26 May 2020 15:37:55 GMT (envelope-from mw@FreeBSD.org) Message-Id: <202005261537.04QFbt9k064231@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mw set sender to mw@FreeBSD.org using -f From: Marcin Wojtas Date: Tue, 26 May 2020 15:37:55 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361515 - head/sys/dev/ena X-SVN-Group: head X-SVN-Commit-Author: mw X-SVN-Commit-Paths: head/sys/dev/ena X-SVN-Commit-Revision: 361515 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2020 15:37:56 -0000 Author: mw Date: Tue May 26 15:37:55 2020 New Revision: 361515 URL: https://svnweb.freebsd.org/changeset/base/361515 Log: Add trigger reset function in the ENA driver As the reset triggering is no longer a simple macro that was just setting appropriate flag, the new function for triggering reset was added. It improves code readability a lot, as we are avoiding additional indentation. Submitted by: Michal Krawczyk Obtained from: Semihalf Sponsored by: Amazon, Inc. Modified: head/sys/dev/ena/ena.c head/sys/dev/ena/ena.h head/sys/dev/ena/ena_datapath.c head/sys/dev/ena/ena_netmap.c Modified: head/sys/dev/ena/ena.c ============================================================================== --- head/sys/dev/ena/ena.c Tue May 26 15:35:22 2020 (r361514) +++ head/sys/dev/ena/ena.c Tue May 26 15:37:55 2020 (r361515) @@ -2742,10 +2742,7 @@ static void check_for_missing_keep_alive(struct ena_ad device_printf(adapter->pdev, "Keep alive watchdog timeout.\n"); counter_u64_add(adapter->dev_stats.wd_expired, 1); - if (likely(!ENA_FLAG_ISSET(ENA_FLAG_TRIGGER_RESET, adapter))) { - adapter->reset_reason = ENA_REGS_RESET_KEEP_ALIVE_TO; - ENA_FLAG_SET_ATOMIC(ENA_FLAG_TRIGGER_RESET, adapter); - } + ena_trigger_reset(adapter, ENA_REGS_RESET_KEEP_ALIVE_TO); } } @@ -2757,10 +2754,7 @@ static void check_for_admin_com_state(struct ena_adapt device_printf(adapter->pdev, "ENA admin queue is not in running state!\n"); counter_u64_add(adapter->dev_stats.admin_q_pause, 1); - if (likely(!ENA_FLAG_ISSET(ENA_FLAG_TRIGGER_RESET, adapter))) { - adapter->reset_reason = ENA_REGS_RESET_ADMIN_TO; - ENA_FLAG_SET_ATOMIC(ENA_FLAG_TRIGGER_RESET, adapter); - } + ena_trigger_reset(adapter, ENA_REGS_RESET_ADMIN_TO); } } @@ -2779,10 +2773,7 @@ check_for_rx_interrupt_queue(struct ena_adapter *adapt if (rx_ring->no_interrupt_event_cnt == ENA_MAX_NO_INTERRUPT_ITERATIONS) { device_printf(adapter->pdev, "Potential MSIX issue on Rx side " "Queue = %d. Reset the device\n", rx_ring->qid); - if (likely(!ENA_FLAG_ISSET(ENA_FLAG_TRIGGER_RESET, adapter))) { - adapter->reset_reason = ENA_REGS_RESET_MISS_INTERRUPT; - ENA_FLAG_SET_ATOMIC(ENA_FLAG_TRIGGER_RESET, adapter); - } + ena_trigger_reset(adapter, ENA_REGS_RESET_MISS_INTERRUPT); return (EIO); } @@ -2820,13 +2811,8 @@ check_missing_comp_in_tx_queue(struct ena_adapter *ada device_printf(adapter->pdev, "Potential MSIX issue on Tx side Queue = %d. " "Reset the device\n", tx_ring->qid); - if (likely(!ENA_FLAG_ISSET(ENA_FLAG_TRIGGER_RESET, - adapter))) { - adapter->reset_reason = - ENA_REGS_RESET_MISS_INTERRUPT; - ENA_FLAG_SET_ATOMIC(ENA_FLAG_TRIGGER_RESET, - adapter); - } + ena_trigger_reset(adapter, + ENA_REGS_RESET_MISS_INTERRUPT); return (EIO); } @@ -2848,10 +2834,7 @@ check_missing_comp_in_tx_queue(struct ena_adapter *ada "The number of lost tx completion is above the threshold " "(%d > %d). Reset the device\n", missed_tx, adapter->missing_tx_threshold); - if (likely(!ENA_FLAG_ISSET(ENA_FLAG_TRIGGER_RESET, adapter))) { - adapter->reset_reason = ENA_REGS_RESET_MISS_TX_CMPL; - ENA_FLAG_SET_ATOMIC(ENA_FLAG_TRIGGER_RESET, adapter); - } + ena_trigger_reset(adapter, ENA_REGS_RESET_MISS_TX_CMPL); rc = EIO; } Modified: head/sys/dev/ena/ena.h ============================================================================== --- head/sys/dev/ena/ena.h Tue May 26 15:35:22 2020 (r361514) +++ head/sys/dev/ena/ena.h Tue May 26 15:37:55 2020 (r361515) @@ -484,6 +484,16 @@ int ena_restore_device(struct ena_adapter *); void ena_destroy_device(struct ena_adapter *, bool); int ena_refill_rx_bufs(struct ena_ring *, uint32_t); +static inline void +ena_trigger_reset(struct ena_adapter *adapter, + enum ena_regs_reset_reason_types reset_reason) +{ + if (likely(!ENA_FLAG_ISSET(ENA_FLAG_TRIGGER_RESET, adapter))) { + adapter->reset_reason = reset_reason; + ENA_FLAG_SET_ATOMIC(ENA_FLAG_TRIGGER_RESET, adapter); + } +} + static inline int validate_rx_req_id(struct ena_ring *rx_ring, uint16_t req_id) { @@ -495,10 +505,7 @@ validate_rx_req_id(struct ena_ring *rx_ring, uint16_t counter_u64_add(rx_ring->rx_stats.bad_req_id, 1); /* Trigger device reset */ - if (likely(!ENA_FLAG_ISSET(ENA_FLAG_TRIGGER_RESET, rx_ring->adapter))) { - rx_ring->adapter->reset_reason = ENA_REGS_RESET_INV_RX_REQ_ID; - ENA_FLAG_SET_ATOMIC(ENA_FLAG_TRIGGER_RESET, rx_ring->adapter); - } + ena_trigger_reset(rx_ring->adapter, ENA_REGS_RESET_INV_RX_REQ_ID); return (EFAULT); } Modified: head/sys/dev/ena/ena_datapath.c ============================================================================== --- head/sys/dev/ena/ena_datapath.c Tue May 26 15:35:22 2020 (r361514) +++ head/sys/dev/ena/ena_datapath.c Tue May 26 15:37:55 2020 (r361515) @@ -201,8 +201,7 @@ validate_tx_req_id(struct ena_ring *tx_ring, uint16_t counter_u64_add(tx_ring->tx_stats.bad_req_id, 1); /* Trigger device reset */ - adapter->reset_reason = ENA_REGS_RESET_INV_TX_REQ_ID; - ENA_FLAG_SET_ATOMIC(ENA_FLAG_TRIGGER_RESET, adapter); + ena_trigger_reset(adapter, ENA_REGS_RESET_INV_TX_REQ_ID); return (EFAULT); } @@ -670,10 +669,7 @@ error: counter_u64_add(rx_ring->rx_stats.bad_desc_num, 1); /* Too many desc from the device. Trigger reset */ - if (likely(!ENA_FLAG_ISSET(ENA_FLAG_TRIGGER_RESET, adapter))) { - adapter->reset_reason = ENA_REGS_RESET_TOO_MANY_RX_DESCS; - ENA_FLAG_SET_ATOMIC(ENA_FLAG_TRIGGER_RESET, adapter); - } + ena_trigger_reset(adapter, ENA_REGS_RESET_TOO_MANY_RX_DESCS); return (0); } Modified: head/sys/dev/ena/ena_netmap.c ============================================================================== --- head/sys/dev/ena/ena_netmap.c Tue May 26 15:35:22 2020 (r361514) +++ head/sys/dev/ena/ena_netmap.c Tue May 26 15:37:55 2020 (r361515) @@ -885,8 +885,7 @@ validate_tx_req_id(struct ena_ring *tx_ring, uint16_t ena_trace(ENA_WARNING, "Invalid req_id: %hu\n", req_id); counter_u64_add(tx_ring->tx_stats.bad_req_id, 1); - adapter->reset_reason = ENA_REGS_RESET_INV_TX_REQ_ID; - ENA_FLAG_SET_ATOMIC(ENA_FLAG_TRIGGER_RESET, adapter); + ena_trigger_reset(adapter, ENA_REGS_RESET_INV_TX_REQ_ID); return (EFAULT); } @@ -962,8 +961,8 @@ ena_netmap_rx_frame(struct ena_netmap_ctx *ctx) if (unlikely(rc != 0)) { ena_trace(ENA_ALERT, "Too many desc from the device.\n"); counter_u64_add(ctx->ring->rx_stats.bad_desc_num, 1); - ctx->adapter->reset_reason = ENA_REGS_RESET_TOO_MANY_RX_DESCS; - ENA_FLAG_SET_ATOMIC(ENA_FLAG_TRIGGER_RESET, ctx->adapter); + ena_trigger_reset(ctx->adapter, + ENA_REGS_RESET_TOO_MANY_RX_DESCS); return (rc); } if (unlikely(ena_rx_ctx.descs == 0)) From owner-svn-src-all@freebsd.org Tue May 26 15:39:42 2020 Return-Path: Delivered-To: svn-src-all@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 62B722CB719; Tue, 26 May 2020 15:39:42 +0000 (UTC) (envelope-from mw@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49WdSG22QKz4NJH; Tue, 26 May 2020 15:39:42 +0000 (UTC) (envelope-from mw@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 3CC2E25B16; Tue, 26 May 2020 15:39:42 +0000 (UTC) (envelope-from mw@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04QFdgA6064354; Tue, 26 May 2020 15:39:42 GMT (envelope-from mw@FreeBSD.org) Received: (from mw@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04QFdfkJ064351; Tue, 26 May 2020 15:39:41 GMT (envelope-from mw@FreeBSD.org) Message-Id: <202005261539.04QFdfkJ064351@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mw set sender to mw@FreeBSD.org using -f From: Marcin Wojtas Date: Tue, 26 May 2020 15:39:41 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361516 - head/sys/dev/ena X-SVN-Group: head X-SVN-Commit-Author: mw X-SVN-Commit-Paths: head/sys/dev/ena X-SVN-Commit-Revision: 361516 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2020 15:39:42 -0000 Author: mw Date: Tue May 26 15:39:41 2020 New Revision: 361516 URL: https://svnweb.freebsd.org/changeset/base/361516 Log: Use single global lock in the ENA driver Currently, the driver had 2 global locks - one was sx lock used for up/down synchronization and the second one was mutex, which was used for link configuration and timer service callout. It is better to have single lock for that. We cannot use mutex, as it can sleep and cause witness errors in up/down configuration, so sx lock seems to be the only choice. Callout cannot use sx lock, but the timer service is MP safe, so we just need to avoid race between ena_down() and ena_detach(). It can be avoided by acquiring sx lock. Simple macros were added that are encapsulating implementation of the lock and makes the code cleaner. Submitted by: Michal Krawczyk Obtained from: Semihalf Sponsored by: Amazon, Inc. Modified: head/sys/dev/ena/ena.c head/sys/dev/ena/ena.h head/sys/dev/ena/ena_netmap.c Modified: head/sys/dev/ena/ena.c ============================================================================== --- head/sys/dev/ena/ena.c Tue May 26 15:37:55 2020 (r361515) +++ head/sys/dev/ena/ena.c Tue May 26 15:39:41 2020 (r361516) @@ -1907,13 +1907,13 @@ ena_media_status(if_t ifp, struct ifmediareq *ifmr) struct ena_adapter *adapter = if_getsoftc(ifp); ena_trace(ENA_DBG, "enter\n"); - mtx_lock(&adapter->global_mtx); + ENA_LOCK_LOCK(adapter); ifmr->ifm_status = IFM_AVALID; ifmr->ifm_active = IFM_ETHER; if (!ENA_FLAG_ISSET(ENA_FLAG_LINK_UP, adapter)) { - mtx_unlock(&adapter->global_mtx); + ENA_LOCK_UNLOCK(adapter); ena_trace(ENA_INFO, "Link is down\n"); return; } @@ -1921,7 +1921,7 @@ ena_media_status(if_t ifp, struct ifmediareq *ifmr) ifmr->ifm_status |= IFM_ACTIVE; ifmr->ifm_active |= IFM_UNKNOWN | IFM_FDX; - mtx_unlock(&adapter->global_mtx); + ENA_LOCK_UNLOCK(adapter); } static void @@ -1930,9 +1930,9 @@ ena_init(void *arg) struct ena_adapter *adapter = (struct ena_adapter *)arg; if (!ENA_FLAG_ISSET(ENA_FLAG_DEV_UP, adapter)) { - sx_xlock(&adapter->ioctl_sx); + ENA_LOCK_LOCK(adapter); ena_up(adapter); - sx_unlock(&adapter->ioctl_sx); + ENA_LOCK_UNLOCK(adapter); } } @@ -1954,13 +1954,13 @@ ena_ioctl(if_t ifp, u_long command, caddr_t data) case SIOCSIFMTU: if (ifp->if_mtu == ifr->ifr_mtu) break; - sx_xlock(&adapter->ioctl_sx); + ENA_LOCK_LOCK(adapter); ena_down(adapter); ena_change_mtu(ifp, ifr->ifr_mtu); rc = ena_up(adapter); - sx_unlock(&adapter->ioctl_sx); + ENA_LOCK_UNLOCK(adapter); break; case SIOCSIFFLAGS: @@ -1972,15 +1972,15 @@ ena_ioctl(if_t ifp, u_long command, caddr_t data) "ioctl promisc/allmulti\n"); } } else { - sx_xlock(&adapter->ioctl_sx); + ENA_LOCK_LOCK(adapter); rc = ena_up(adapter); - sx_unlock(&adapter->ioctl_sx); + ENA_LOCK_UNLOCK(adapter); } } else { if ((if_getdrvflags(ifp) & IFF_DRV_RUNNING) != 0) { - sx_xlock(&adapter->ioctl_sx); + ENA_LOCK_LOCK(adapter); ena_down(adapter); - sx_unlock(&adapter->ioctl_sx); + ENA_LOCK_UNLOCK(adapter); } } break; @@ -2005,10 +2005,10 @@ ena_ioctl(if_t ifp, u_long command, caddr_t data) if ((reinit != 0) && ((if_getdrvflags(ifp) & IFF_DRV_RUNNING) != 0)) { - sx_xlock(&adapter->ioctl_sx); + ENA_LOCK_LOCK(adapter); ena_down(adapter); rc = ena_up(adapter); - sx_unlock(&adapter->ioctl_sx); + ENA_LOCK_UNLOCK(adapter); } } @@ -3180,10 +3180,10 @@ ena_reset_task(void *arg, int pending) return; } - sx_xlock(&adapter->ioctl_sx); + ENA_LOCK_LOCK(adapter); ena_destroy_device(adapter, false); ena_restore_device(adapter); - sx_unlock(&adapter->ioctl_sx); + ENA_LOCK_UNLOCK(adapter); } /** @@ -3212,11 +3212,13 @@ ena_attach(device_t pdev) adapter = device_get_softc(pdev); adapter->pdev = pdev; - mtx_init(&adapter->global_mtx, "ENA global mtx", NULL, MTX_DEF); - sx_init(&adapter->ioctl_sx, "ENA ioctl sx"); + ENA_LOCK_INIT(adapter); - /* Set up the timer service */ - callout_init_mtx(&adapter->timer_service, &adapter->global_mtx, 0); + /* + * Set up the timer service - driver is responsible for avoiding + * concurrency, as the callout won't be using any locking inside. + */ + callout_init(&adapter->timer_service, true); adapter->keep_alive_timeout = DEFAULT_KEEP_ALIVE_TO; adapter->missing_tx_timeout = DEFAULT_TX_CMP_TO; adapter->missing_tx_max_queues = DEFAULT_TX_MONITORED_QUEUES; @@ -3435,16 +3437,20 @@ ena_detach(device_t pdev) ether_ifdetach(adapter->ifp); - /* Free reset task and callout */ + /* Stop timer service */ + ENA_LOCK_LOCK(adapter); callout_drain(&adapter->timer_service); + ENA_LOCK_UNLOCK(adapter); + + /* Release reset task */ while (taskqueue_cancel(adapter->reset_tq, &adapter->reset_task, NULL)) taskqueue_drain(adapter->reset_tq, &adapter->reset_task); taskqueue_free(adapter->reset_tq); - sx_xlock(&adapter->ioctl_sx); + ENA_LOCK_LOCK(adapter); ena_down(adapter); ena_destroy_device(adapter, true); - sx_unlock(&adapter->ioctl_sx); + ENA_LOCK_UNLOCK(adapter); #ifdef DEV_NETMAP netmap_detach(adapter->ifp); @@ -3476,8 +3482,7 @@ ena_detach(device_t pdev) ena_com_delete_host_info(ena_dev); - mtx_destroy(&adapter->global_mtx); - sx_destroy(&adapter->ioctl_sx); + ENA_LOCK_DESTROY(adapter); if_free(adapter->ifp); Modified: head/sys/dev/ena/ena.h ============================================================================== --- head/sys/dev/ena/ena.h Tue May 26 15:37:55 2020 (r361515) +++ head/sys/dev/ena/ena.h Tue May 26 15:39:41 2020 (r361516) @@ -396,8 +396,7 @@ struct ena_adapter { struct resource *memory; struct resource *registers; - struct mtx global_mtx; - struct sx ioctl_sx; + struct sx global_lock; /* MSI-X */ struct msix_entry *msix_entries; @@ -467,6 +466,12 @@ struct ena_adapter { #define ENA_RING_MTX_LOCK(_ring) mtx_lock(&(_ring)->ring_mtx) #define ENA_RING_MTX_TRYLOCK(_ring) mtx_trylock(&(_ring)->ring_mtx) #define ENA_RING_MTX_UNLOCK(_ring) mtx_unlock(&(_ring)->ring_mtx) + +#define ENA_LOCK_INIT(adapter) \ + sx_init(&(adapter)->global_lock, "ENA global lock") +#define ENA_LOCK_DESTROY(adapter) sx_destroy(&(adapter)->global_lock) +#define ENA_LOCK_LOCK(adapter) sx_xlock(&(adapter)->global_lock) +#define ENA_LOCK_UNLOCK(adapter) sx_unlock(&(adapter)->global_lock) static inline int ena_mbuf_count(struct mbuf *mbuf) { Modified: head/sys/dev/ena/ena_netmap.c ============================================================================== --- head/sys/dev/ena/ena_netmap.c Tue May 26 15:37:55 2020 (r361515) +++ head/sys/dev/ena/ena_netmap.c Tue May 26 15:39:41 2020 (r361516) @@ -277,7 +277,7 @@ ena_netmap_reg(struct netmap_adapter *na, int onoff) enum txrx t; int rc, i; - sx_xlock(&adapter->ioctl_sx); + ENA_LOCK_LOCK(adapter); ENA_FLAG_CLEAR_ATOMIC(ENA_FLAG_TRIGGER_RESET, adapter); ena_down(adapter); @@ -314,7 +314,7 @@ ena_netmap_reg(struct netmap_adapter *na, int onoff) ENA_FLAG_SET_ATOMIC(ENA_FLAG_DEV_UP_BEFORE_RESET, adapter); rc = ena_restore_device(adapter); } - sx_unlock(&adapter->ioctl_sx); + ENA_LOCK_UNLOCK(adapter); return (rc); } From owner-svn-src-all@freebsd.org Tue May 26 15:41:54 2020 Return-Path: Delivered-To: svn-src-all@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 4A2072CBB09; Tue, 26 May 2020 15:41:54 +0000 (UTC) (envelope-from mw@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49WdVp19dFz4NcY; Tue, 26 May 2020 15:41:54 +0000 (UTC) (envelope-from mw@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 2376925D90; Tue, 26 May 2020 15:41:54 +0000 (UTC) (envelope-from mw@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04QFfs8n066790; Tue, 26 May 2020 15:41:54 GMT (envelope-from mw@FreeBSD.org) Received: (from mw@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04QFfrMx066787; Tue, 26 May 2020 15:41:53 GMT (envelope-from mw@FreeBSD.org) Message-Id: <202005261541.04QFfrMx066787@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mw set sender to mw@FreeBSD.org using -f From: Marcin Wojtas Date: Tue, 26 May 2020 15:41:53 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361517 - head/sys/dev/ena X-SVN-Group: head X-SVN-Commit-Author: mw X-SVN-Commit-Paths: head/sys/dev/ena X-SVN-Commit-Revision: 361517 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2020 15:41:54 -0000 Author: mw Date: Tue May 26 15:41:53 2020 New Revision: 361517 URL: https://svnweb.freebsd.org/changeset/base/361517 Log: Expose argument names for non static ENA driver functions As functions which are declared in the header files are intended to be the interface and are going to be used by other files, it's better to include argument names in the definition, so the caller won't have to check the .c file in order to check their meaning and order. Submitted by: Michal Krawczyk Obtained from: Semihalf Sponsored by: Amazon, Inc. Modified: head/sys/dev/ena/ena.h head/sys/dev/ena/ena_datapath.h head/sys/dev/ena/ena_netmap.h head/sys/dev/ena/ena_sysctl.h Modified: head/sys/dev/ena/ena.h ============================================================================== --- head/sys/dev/ena/ena.h Tue May 26 15:39:41 2020 (r361516) +++ head/sys/dev/ena/ena.h Tue May 26 15:41:53 2020 (r361517) @@ -483,11 +483,11 @@ static inline int ena_mbuf_count(struct mbuf *mbuf) return count; } -int ena_up(struct ena_adapter *); -void ena_down(struct ena_adapter *); -int ena_restore_device(struct ena_adapter *); -void ena_destroy_device(struct ena_adapter *, bool); -int ena_refill_rx_bufs(struct ena_ring *, uint32_t); +int ena_up(struct ena_adapter *adapter); +void ena_down(struct ena_adapter *adapter); +int ena_restore_device(struct ena_adapter *adapter); +void ena_destroy_device(struct ena_adapter *adapter, bool graceful); +int ena_refill_rx_bufs(struct ena_ring *rx_ring, uint32_t num); static inline void ena_trigger_reset(struct ena_adapter *adapter, Modified: head/sys/dev/ena/ena_datapath.h ============================================================================== --- head/sys/dev/ena/ena_datapath.h Tue May 26 15:39:41 2020 (r361516) +++ head/sys/dev/ena/ena_datapath.h Tue May 26 15:41:53 2020 (r361517) @@ -34,9 +34,9 @@ #ifndef ENA_TXRX_H #define ENA_TXRX_H -void ena_cleanup(void *, int); -void ena_qflush(if_t); -int ena_mq_start(if_t, struct mbuf *); -void ena_deferred_mq_start(void *, int); +void ena_cleanup(void *arg, int pending); +void ena_qflush(if_t ifp); +int ena_mq_start(if_t ifp, struct mbuf *m); +void ena_deferred_mq_start(void *arg, int pending); #endif /* ENA_TXRX_H */ Modified: head/sys/dev/ena/ena_netmap.h ============================================================================== --- head/sys/dev/ena/ena_netmap.h Tue May 26 15:39:41 2020 (r361516) +++ head/sys/dev/ena/ena_netmap.h Tue May 26 15:41:53 2020 (r361517) @@ -46,15 +46,15 @@ #include #include -int ena_netmap_attach(struct ena_adapter *); -int ena_netmap_alloc_rx_slot(struct ena_adapter *, struct ena_ring *, - struct ena_rx_buffer *); -void ena_netmap_free_rx_slot(struct ena_adapter *, struct ena_ring *, - struct ena_rx_buffer *); -bool ena_rx_ring_in_netmap(struct ena_adapter *, int); -bool ena_tx_ring_in_netmap(struct ena_adapter *, int); -void ena_netmap_reset_rx_ring(struct ena_adapter *, int); -void ena_netmap_reset_tx_ring(struct ena_adapter *, int); -void ena_netmap_unload(struct ena_adapter *, bus_dmamap_t); +int ena_netmap_attach(struct ena_adapter *adapter); +int ena_netmap_alloc_rx_slot(struct ena_adapter *adapter, + struct ena_ring *rx_ring, struct ena_rx_buffer *rx_info); +void ena_netmap_free_rx_slot(struct ena_adapter *adapter, + struct ena_ring *rx_ring, struct ena_rx_buffer *rx_info); +bool ena_rx_ring_in_netmap(struct ena_adapter *adapter, int qid); +bool ena_tx_ring_in_netmap(struct ena_adapter *adapter, int qid); +void ena_netmap_reset_rx_ring(struct ena_adapter *adapter, int qid); +void ena_netmap_reset_tx_ring(struct ena_adapter *adapter, int qid); +void ena_netmap_unload(struct ena_adapter *adapter, bus_dmamap_t map); #endif /* _ENA_NETMAP_H_ */ Modified: head/sys/dev/ena/ena_sysctl.h ============================================================================== --- head/sys/dev/ena/ena_sysctl.h Tue May 26 15:39:41 2020 (r361516) +++ head/sys/dev/ena/ena_sysctl.h Tue May 26 15:41:53 2020 (r361517) @@ -39,7 +39,7 @@ #include "ena.h" -void ena_sysctl_add_nodes(struct ena_adapter *); +void ena_sysctl_add_nodes(struct ena_adapter *adapter); extern int ena_enable_9k_mbufs; #define ena_mbuf_sz (ena_enable_9k_mbufs ? MJUM9BYTES : MJUMPAGESIZE) From owner-svn-src-all@freebsd.org Tue May 26 15:44:09 2020 Return-Path: Delivered-To: svn-src-all@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 4B2922CB8E6; Tue, 26 May 2020 15:44:09 +0000 (UTC) (envelope-from mw@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49WdYP1Dycz4PDt; Tue, 26 May 2020 15:44:09 +0000 (UTC) (envelope-from mw@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 25D3825D3C; Tue, 26 May 2020 15:44:09 +0000 (UTC) (envelope-from mw@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04QFi9uD070213; Tue, 26 May 2020 15:44:09 GMT (envelope-from mw@FreeBSD.org) Received: (from mw@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04QFi9BK070212; Tue, 26 May 2020 15:44:09 GMT (envelope-from mw@FreeBSD.org) Message-Id: <202005261544.04QFi9BK070212@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mw set sender to mw@FreeBSD.org using -f From: Marcin Wojtas Date: Tue, 26 May 2020 15:44:09 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361518 - head/sys/dev/ena X-SVN-Group: head X-SVN-Commit-Author: mw X-SVN-Commit-Paths: head/sys/dev/ena X-SVN-Commit-Revision: 361518 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2020 15:44:09 -0000 Author: mw Date: Tue May 26 15:44:08 2020 New Revision: 361518 URL: https://svnweb.freebsd.org/changeset/base/361518 Log: Improve indentation in ena_up() and ena_down() If the conditional check for ENA_FLAG_DEV_UP is negated, the body of the function can have smaller indentation and it makes the code cleaner. Submitted by: Michal Krawczyk Obtained from: Semihalf Sponsored by: Amazon, Inc. Modified: head/sys/dev/ena/ena.c Modified: head/sys/dev/ena/ena.c ============================================================================== --- head/sys/dev/ena/ena.c Tue May 26 15:41:53 2020 (r361517) +++ head/sys/dev/ena/ena.c Tue May 26 15:44:08 2020 (r361518) @@ -1788,71 +1788,72 @@ ena_up(struct ena_adapter *adapter) return (ENXIO); } - if (!ENA_FLAG_ISSET(ENA_FLAG_DEV_UP, adapter)) { - device_printf(adapter->pdev, "device is going UP\n"); + if (ENA_FLAG_ISSET(ENA_FLAG_DEV_UP, adapter)) + return (0); - /* setup interrupts for IO queues */ - rc = ena_setup_io_intr(adapter); - if (unlikely(rc != 0)) { - ena_trace(ENA_ALERT, "error setting up IO interrupt\n"); - goto error; - } - rc = ena_request_io_irq(adapter); - if (unlikely(rc != 0)) { - ena_trace(ENA_ALERT, "err_req_irq\n"); - goto error; - } + device_printf(adapter->pdev, "device is going UP\n"); - /* allocate transmit descriptors */ - rc = ena_setup_all_tx_resources(adapter); - if (unlikely(rc != 0)) { - ena_trace(ENA_ALERT, "err_setup_tx\n"); - goto err_setup_tx; - } + /* setup interrupts for IO queues */ + rc = ena_setup_io_intr(adapter); + if (unlikely(rc != 0)) { + ena_trace(ENA_ALERT, "error setting up IO interrupt\n"); + goto error; + } + rc = ena_request_io_irq(adapter); + if (unlikely(rc != 0)) { + ena_trace(ENA_ALERT, "err_req_irq\n"); + goto error; + } - /* allocate receive descriptors */ - rc = ena_setup_all_rx_resources(adapter); - if (unlikely(rc != 0)) { - ena_trace(ENA_ALERT, "err_setup_rx\n"); - goto err_setup_rx; - } + /* allocate transmit descriptors */ + rc = ena_setup_all_tx_resources(adapter); + if (unlikely(rc != 0)) { + ena_trace(ENA_ALERT, "err_setup_tx\n"); + goto err_setup_tx; + } - /* create IO queues for Rx & Tx */ - rc = ena_create_io_queues(adapter); - if (unlikely(rc != 0)) { - ena_trace(ENA_ALERT, - "create IO queues failed\n"); - goto err_io_que; - } + /* allocate receive descriptors */ + rc = ena_setup_all_rx_resources(adapter); + if (unlikely(rc != 0)) { + ena_trace(ENA_ALERT, "err_setup_rx\n"); + goto err_setup_rx; + } - if (ENA_FLAG_ISSET(ENA_FLAG_LINK_UP, adapter)) - if_link_state_change(adapter->ifp, LINK_STATE_UP); + /* create IO queues for Rx & Tx */ + rc = ena_create_io_queues(adapter); + if (unlikely(rc != 0)) { + ena_trace(ENA_ALERT, + "create IO queues failed\n"); + goto err_io_que; + } - rc = ena_up_complete(adapter); - if (unlikely(rc != 0)) - goto err_up_complete; + if (ENA_FLAG_ISSET(ENA_FLAG_LINK_UP, adapter)) + if_link_state_change(adapter->ifp, LINK_STATE_UP); - counter_u64_add(adapter->dev_stats.interface_up, 1); + rc = ena_up_complete(adapter); + if (unlikely(rc != 0)) + goto err_up_complete; - ena_update_hwassist(adapter); + counter_u64_add(adapter->dev_stats.interface_up, 1); - if_setdrvflagbits(adapter->ifp, IFF_DRV_RUNNING, - IFF_DRV_OACTIVE); + ena_update_hwassist(adapter); - /* Activate timer service only if the device is running. - * If this flag is not set, it means that the driver is being - * reset and timer service will be activated afterwards. - */ - if (ENA_FLAG_ISSET(ENA_FLAG_DEVICE_RUNNING, adapter)) { - callout_reset_sbt(&adapter->timer_service, SBT_1S, - SBT_1S, ena_timer_service, (void *)adapter, 0); - } + if_setdrvflagbits(adapter->ifp, IFF_DRV_RUNNING, + IFF_DRV_OACTIVE); - ENA_FLAG_SET_ATOMIC(ENA_FLAG_DEV_UP, adapter); - - ena_unmask_all_io_irqs(adapter); + /* Activate timer service only if the device is running. + * If this flag is not set, it means that the driver is being + * reset and timer service will be activated afterwards. + */ + if (ENA_FLAG_ISSET(ENA_FLAG_DEVICE_RUNNING, adapter)) { + callout_reset_sbt(&adapter->timer_service, SBT_1S, + SBT_1S, ena_timer_service, (void *)adapter, 0); } + ENA_FLAG_SET_ATOMIC(ENA_FLAG_DEV_UP, adapter); + + ena_unmask_all_io_irqs(adapter); + return (0); err_up_complete: @@ -2162,34 +2163,35 @@ ena_down(struct ena_adapter *adapter) { int rc; - if (ENA_FLAG_ISSET(ENA_FLAG_DEV_UP, adapter)) { - device_printf(adapter->pdev, "device is going DOWN\n"); + if (!ENA_FLAG_ISSET(ENA_FLAG_DEV_UP, adapter)) + return; - callout_drain(&adapter->timer_service); + device_printf(adapter->pdev, "device is going DOWN\n"); - ENA_FLAG_CLEAR_ATOMIC(ENA_FLAG_DEV_UP, adapter); - if_setdrvflagbits(adapter->ifp, IFF_DRV_OACTIVE, - IFF_DRV_RUNNING); + callout_drain(&adapter->timer_service); - ena_free_io_irq(adapter); + ENA_FLAG_CLEAR_ATOMIC(ENA_FLAG_DEV_UP, adapter); + if_setdrvflagbits(adapter->ifp, IFF_DRV_OACTIVE, + IFF_DRV_RUNNING); - if (ENA_FLAG_ISSET(ENA_FLAG_TRIGGER_RESET, adapter)) { - rc = ena_com_dev_reset(adapter->ena_dev, - adapter->reset_reason); - if (unlikely(rc != 0)) - device_printf(adapter->pdev, - "Device reset failed\n"); - } + ena_free_io_irq(adapter); - ena_destroy_all_io_queues(adapter); + if (ENA_FLAG_ISSET(ENA_FLAG_TRIGGER_RESET, adapter)) { + rc = ena_com_dev_reset(adapter->ena_dev, + adapter->reset_reason); + if (unlikely(rc != 0)) + device_printf(adapter->pdev, + "Device reset failed\n"); + } - ena_free_all_tx_bufs(adapter); - ena_free_all_rx_bufs(adapter); - ena_free_all_tx_resources(adapter); - ena_free_all_rx_resources(adapter); + ena_destroy_all_io_queues(adapter); - counter_u64_add(adapter->dev_stats.interface_down, 1); - } + ena_free_all_tx_bufs(adapter); + ena_free_all_rx_bufs(adapter); + ena_free_all_tx_resources(adapter); + ena_free_all_rx_resources(adapter); + + counter_u64_add(adapter->dev_stats.interface_down, 1); } static int From owner-svn-src-all@freebsd.org Tue May 26 15:45:55 2020 Return-Path: Delivered-To: svn-src-all@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 0E2B82CBC9D; Tue, 26 May 2020 15:45:55 +0000 (UTC) (envelope-from mw@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49WdbQ6c7tz4PFs; Tue, 26 May 2020 15:45:54 +0000 (UTC) (envelope-from mw@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 DDF7225D3F; Tue, 26 May 2020 15:45:54 +0000 (UTC) (envelope-from mw@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04QFjs0i070347; Tue, 26 May 2020 15:45:54 GMT (envelope-from mw@FreeBSD.org) Received: (from mw@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04QFjspS070346; Tue, 26 May 2020 15:45:54 GMT (envelope-from mw@FreeBSD.org) Message-Id: <202005261545.04QFjspS070346@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mw set sender to mw@FreeBSD.org using -f From: Marcin Wojtas Date: Tue, 26 May 2020 15:45:54 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361519 - head/sys/dev/ena X-SVN-Group: head X-SVN-Commit-Author: mw X-SVN-Commit-Paths: head/sys/dev/ena X-SVN-Commit-Revision: 361519 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2020 15:45:55 -0000 Author: mw Date: Tue May 26 15:45:54 2020 New Revision: 361519 URL: https://svnweb.freebsd.org/changeset/base/361519 Log: Mark the ENA driver as epoch ready Recent changes to the epoch requires driver to notify that they knows epoch in order to prevent input packet function to enter epoch each time the packet is received. ENA is using NET_TASK for handling Rx, so it's entering epoch automatically whenever this task is being executed. Submitted by: Michal Krawczyk Obtained from: Semihalf Sponsored by: Amazon, Inc. Modified: head/sys/dev/ena/ena.c Modified: head/sys/dev/ena/ena.c ============================================================================== --- head/sys/dev/ena/ena.c Tue May 26 15:44:08 2020 (r361518) +++ head/sys/dev/ena/ena.c Tue May 26 15:45:54 2020 (r361519) @@ -2116,7 +2116,8 @@ ena_setup_ifnet(device_t pdev, struct ena_adapter *ada if_setdev(ifp, pdev); if_setsoftc(ifp, adapter); - if_setflags(ifp, IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST); + if_setflags(ifp, IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST | + IFF_KNOWSEPOCH); if_setinitfn(ifp, ena_init); if_settransmitfn(ifp, ena_mq_start); if_setqflushfn(ifp, ena_qflush); From owner-svn-src-all@freebsd.org Tue May 26 15:46:20 2020 Return-Path: Delivered-To: svn-src-all@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 2715B2CBCA6; Tue, 26 May 2020 15:46:20 +0000 (UTC) (envelope-from takawata@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49Wdbw0JVQz4PTh; Tue, 26 May 2020 15:46:20 +0000 (UTC) (envelope-from takawata@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 04F5225C25; Tue, 26 May 2020 15:46:20 +0000 (UTC) (envelope-from takawata@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04QFkJP7070413; Tue, 26 May 2020 15:46:19 GMT (envelope-from takawata@FreeBSD.org) Received: (from takawata@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04QFkJWa070409; Tue, 26 May 2020 15:46:19 GMT (envelope-from takawata@FreeBSD.org) Message-Id: <202005261546.04QFkJWa070409@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: takawata set sender to takawata@FreeBSD.org using -f From: Takanori Watanabe Date: Tue, 26 May 2020 15:46:19 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361520 - head/usr.sbin/bluetooth/hccontrol X-SVN-Group: head X-SVN-Commit-Author: takawata X-SVN-Commit-Paths: head/usr.sbin/bluetooth/hccontrol X-SVN-Commit-Revision: 361520 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2020 15:46:20 -0000 Author: takawata Date: Tue May 26 15:46:18 2020 New Revision: 361520 URL: https://svnweb.freebsd.org/changeset/base/361520 Log: Add le_connect command to connect to an LE device. PR:246664 Submitted by:MarcVeldman Modified: head/usr.sbin/bluetooth/hccontrol/hccontrol.8 head/usr.sbin/bluetooth/hccontrol/hccontrol.h head/usr.sbin/bluetooth/hccontrol/le.c head/usr.sbin/bluetooth/hccontrol/util.c Modified: head/usr.sbin/bluetooth/hccontrol/hccontrol.8 ============================================================================== --- head/usr.sbin/bluetooth/hccontrol/hccontrol.8 Tue May 26 15:45:54 2020 (r361519) +++ head/usr.sbin/bluetooth/hccontrol/hccontrol.8 Tue May 26 15:46:18 2020 (r361520) @@ -161,6 +161,7 @@ are: .It Cm LE_Clear_White_List .It Cm LE_Add_Device_To_White_List .It Cm LE_Remove_Device_From_White_List +.It Cm LE_Connect .El .Pp The currently supported node commands in Modified: head/usr.sbin/bluetooth/hccontrol/hccontrol.h ============================================================================== --- head/usr.sbin/bluetooth/hccontrol/hccontrol.h Tue May 26 15:45:54 2020 (r361519) +++ head/usr.sbin/bluetooth/hccontrol/hccontrol.h Tue May 26 15:46:18 2020 (r361520) @@ -80,6 +80,8 @@ char const * hci_con_state2str (int); char const * hci_status2str (int); char const * hci_bdaddr2str (bdaddr_t const *); char const * hci_addrtype2str (int type); +char const * hci_role2str (int role); +char const * hci_mc_accuracy2str (int accuracy); void dump_adv_data(int len, uint8_t* advdata); void print_adv_data(int len, uint8_t* advdata); Modified: head/usr.sbin/bluetooth/hccontrol/le.c ============================================================================== --- head/usr.sbin/bluetooth/hccontrol/le.c Tue May 26 15:45:54 2020 (r361519) +++ head/usr.sbin/bluetooth/hccontrol/le.c Tue May 26 15:46:18 2020 (r361520) @@ -67,6 +67,8 @@ static int le_read_white_list_size(int s, int argc, ch static int le_clear_white_list(int s, int argc, char *argv[]); static int le_add_device_to_white_list(int s, int argc, char *argv[]); static int le_remove_device_from_white_list(int s, int argc, char *argv[]); +static int le_connect(int s, int argc, char *argv[]); +static void handle_le_connection_event(ng_hci_event_pkt_t* e, bool verbose); static int le_set_scan_param(int s, int argc, char *argv[]) @@ -933,6 +935,157 @@ le_remove_device_from_white_list(int s, int argc, char return (OK); } +static int +le_connect(int s, int argc, char *argv[]) +{ + ng_hci_le_create_connection_cp cp; + ng_hci_status_rp rp; + char b[512]; + ng_hci_event_pkt_t *e = (ng_hci_event_pkt_t *) b; + + int n, scancount, bufsize; + char ch; + bool addr_set = false; + bool verbose = false; + + optreset = 1; + optind = 0; + + /* minimal scan interval (2.5ms) */ + cp.scan_interval = htole16(4); + cp.scan_window = htole16(4); + + /* Don't use the whitelist */ + cp.filter_policy = 0x00; + + /* Default to public peer address */ + cp.peer_addr_type = 0x00; + + /* Own address type public */ + cp.own_address_type = 0x00; + + /* 18.75ms min connection interval */ + cp.conn_interval_min = htole16(0x000F); + /* 18.75ms max connection interval */ + cp.conn_interval_max = htole16(0x000F); + + /* 0 events connection latency */ + cp.conn_latency = htole16(0x0000); + + /* 32s supervision timeout */ + cp.supervision_timeout = htole16(0x0C80); + + /* Min CE Length 0.625 ms */ + cp.min_ce_length = htole16(1); + /* Max CE Length 0.625 ms */ + cp.max_ce_length = htole16(1); + + while ((ch = getopt(argc, argv , "a:t:v")) != -1) { + switch(ch) { + case 't': + if (strcmp(optarg, "public") == 0) + cp.peer_addr_type = 0x00; + else if (strcmp(optarg, "random") == 0) + cp.peer_addr_type = 0x01; + else + return (USAGE); + break; + case 'a': + addr_set = true; + if (!bt_aton(optarg, &cp.peer_addr)) { + struct hostent *he = NULL; + + if ((he = bt_gethostbyname(optarg)) == NULL) + return (USAGE); + + memcpy(&cp.peer_addr, he->h_addr, + sizeof(cp.peer_addr)); + } + break; + case 'v': + verbose = true; + break; + } + } + + if (addr_set == false) + return (USAGE); + + n = sizeof(rp); + if (hci_request(s, NG_HCI_OPCODE(NG_HCI_OGF_LE, + NG_HCI_OCF_LE_CREATE_CONNECTION), + (void *)&cp, sizeof(cp), (void *)&rp, &n) == ERROR) + return (ERROR); + + if (rp.status != 0x00) { + fprintf(stdout, + "Create connection failed. Status: %s [%#02x]\n", + hci_status2str(rp.status), rp.status); + return (FAILED); + } + + scancount = 0; + while (scancount < 3) { + /* wait for connection events */ + bufsize = sizeof(b); + if (hci_recv(s, b, &bufsize) == ERROR) { + return (ERROR); + } + + if (bufsize < sizeof(*e)) { + errno = EIO; + return (ERROR); + } + scancount++; + if (e->event == NG_HCI_EVENT_LE) { + handle_le_connection_event(e, verbose); + break; + } + } + + return (OK); +} + +static void handle_le_connection_event(ng_hci_event_pkt_t* e, bool verbose) +{ + ng_hci_le_ep *ev_pkt; + ng_hci_le_connection_complete_ep *conn_event; + + ev_pkt = (ng_hci_le_ep *)(e + 1); + + if (ev_pkt->subevent_code == NG_HCI_LEEV_CON_COMPL) { + conn_event =(ng_hci_le_connection_complete_ep *)(ev_pkt + 1); + fprintf(stdout, "Handle: %d\n", le16toh(conn_event->handle)); + if (verbose) { + fprintf(stdout, + "Status: %s\n", + hci_status2str(conn_event->status)); + fprintf(stdout, + "Role: %s\n", + hci_role2str(conn_event->role)); + fprintf(stdout, + "Address Type: %s\n", + hci_addrtype2str(conn_event->address_type)); + fprintf(stdout, + "Address: %s\n", + hci_bdaddr2str(&conn_event->address)); + fprintf(stdout, + "Interval: %.2fms\n", + 6.25 * le16toh(conn_event->interval)); + fprintf(stdout, + "Latency: %d events\n", conn_event->latency); + fprintf(stdout, + "Supervision timeout: %dms\n", + 10 * le16toh(conn_event->supervision_timeout)); + fprintf(stdout, + "Master clock accuracy: %sn", + hci_mc_accuracy2str( + conn_event->master_clock_accuracy)); + } + } + return; +} + struct hci_command le_commands[] = { { "le_enable", @@ -1036,5 +1189,11 @@ struct hci_command le_commands[] = { "[-t public|random] -a address\n" "Remove device from the white list", &le_remove_device_from_white_list + }, + { + "le_connect", + "le_connect -a address [-t public|random] [-v]\n" + "Connect to an LE device", + &le_connect }, }; Modified: head/usr.sbin/bluetooth/hccontrol/util.c ============================================================================== --- head/usr.sbin/bluetooth/hccontrol/util.c Tue May 26 15:45:54 2020 (r361519) +++ head/usr.sbin/bluetooth/hccontrol/util.c Tue May 26 15:46:18 2020 (r361520) @@ -3295,3 +3295,30 @@ hci_addrtype2str(int type) return (type >= SIZE(t)? "?" : t[type]); } /* hci_addrtype2str */ +char const * +hci_role2str(int role) +{ + static char const * const roles[] = { + /* 0x00 */ "Master", + /* 0x01 */ "Slave", + }; + + return (role >= SIZE(roles)? "Unknown role" : roles[role]); +} /* hci_role2str */ + +char const * +hci_mc_accuracy2str(int accuracy) +{ + static char const * const acc[] = { + /* 0x00 */ "500 ppm", + /* 0x01 */ "250 ppm", + /* 0x02 */ "150 ppm", + /* 0x03 */ "100 ppm", + /* 0x04 */ "75 ppm", + /* 0x05 */ "50 ppm", + /* 0x06 */ "30 ppm", + /* 0x07 */ "20 ppm", + }; + + return (accuracy >= SIZE(acc)? "Unknown accuracy" : acc[accuracy]); +} /* hci_mc_accuracy2str */ From owner-svn-src-all@freebsd.org Tue May 26 15:48:07 2020 Return-Path: Delivered-To: svn-src-all@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 B184E2CBCAF; Tue, 26 May 2020 15:48:07 +0000 (UTC) (envelope-from mw@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49Wddz4Vw3z4PXr; Tue, 26 May 2020 15:48:07 +0000 (UTC) (envelope-from mw@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 95ACF25D40; Tue, 26 May 2020 15:48:07 +0000 (UTC) (envelope-from mw@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04QFm7oo070556; Tue, 26 May 2020 15:48:07 GMT (envelope-from mw@FreeBSD.org) Received: (from mw@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04QFm6qh070551; Tue, 26 May 2020 15:48:06 GMT (envelope-from mw@FreeBSD.org) Message-Id: <202005261548.04QFm6qh070551@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mw set sender to mw@FreeBSD.org using -f From: Marcin Wojtas Date: Tue, 26 May 2020 15:48:06 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361521 - head/sys/dev/ena X-SVN-Group: head X-SVN-Commit-Author: mw X-SVN-Commit-Paths: head/sys/dev/ena X-SVN-Commit-Revision: 361521 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2020 15:48:07 -0000 Author: mw Date: Tue May 26 15:48:06 2020 New Revision: 361521 URL: https://svnweb.freebsd.org/changeset/base/361521 Log: Rework ENA Rx queue size configuration This patch reworks how the Rx queue size is being reconfigured and how the information from the device is being processed. Reconfiguration of the queues and reset of the device in order to make the changes alive isn't the best approach. It can be done synchronously and it will let to pass information if the reconfiguration was successful to the user. It now is done in the ena_update_queue_size() function. To avoid reallocation of the ring buffer, statistic counters and the reinitialization of the mutexes when only new size has to be assigned, the io queues initialization function has been split into 2 stages: basic, which is just copying appropriate fields and the advanced, which allocates and inits more advanced structures for the IO rings. Moreover, now the max allowed Rx and Tx ring size is being kept statically in the adapter and the size of the variables holding those values has been changed to uint32_t everywhere. Information about IO queues size is now being logged in the up routine instead of the attach. Submitted by: Michal Krawczyk Obtained from: Semihalf Sponsored by: Amazon, Inc. Modified: head/sys/dev/ena/ena.c head/sys/dev/ena/ena.h head/sys/dev/ena/ena_datapath.c head/sys/dev/ena/ena_netmap.c head/sys/dev/ena/ena_sysctl.c Modified: head/sys/dev/ena/ena.c ============================================================================== --- head/sys/dev/ena/ena.c Tue May 26 15:46:18 2020 (r361520) +++ head/sys/dev/ena/ena.c Tue May 26 15:48:06 2020 (r361521) @@ -96,6 +96,8 @@ static inline void ena_free_counters(counter_u64_t *, static inline void ena_reset_counters(counter_u64_t *, int); static void ena_init_io_rings_common(struct ena_adapter *, struct ena_ring *, uint16_t); +static void ena_init_io_rings_basic(struct ena_adapter *); +static void ena_init_io_rings_advanced(struct ena_adapter *); static void ena_init_io_rings(struct ena_adapter *); static void ena_free_io_ring_resources(struct ena_adapter *, unsigned int); static void ena_free_all_io_rings_resources(struct ena_adapter *); @@ -151,12 +153,9 @@ static int ena_setup_ifnet(device_t, struct ena_adapte static int ena_enable_wc(struct resource *); static int ena_set_queues_placement_policy(device_t, struct ena_com_dev *, struct ena_admin_feature_llq_desc *, struct ena_llq_configurations *); -static int ena_calc_io_queue_num(struct ena_adapter *, +static uint32_t ena_calc_max_io_queue_num(device_t, struct ena_com_dev *, struct ena_com_dev_get_features_ctx *); -static int ena_calc_queue_size(struct ena_adapter *, - struct ena_calc_queue_size_ctx *); -static int ena_handle_updated_queues(struct ena_adapter *, - struct ena_com_dev_get_features_ctx *); +static int ena_calc_io_queue_size(struct ena_calc_queue_size_ctx *); static int ena_rss_init_default(struct ena_adapter *); static void ena_rss_init_default_deferred(void *); static void ena_config_host_info(struct ena_com_dev *, device_t); @@ -388,11 +387,10 @@ ena_init_io_rings_common(struct ena_adapter *adapter, ring->ena_dev = adapter->ena_dev; ring->first_interrupt = false; ring->no_interrupt_event_cnt = 0; - ring->rx_mbuf_sz = ena_mbuf_sz; } static void -ena_init_io_rings(struct ena_adapter *adapter) +ena_init_io_rings_basic(struct ena_adapter *adapter) { struct ena_com_dev *ena_dev; struct ena_ring *txr, *rxr; @@ -401,7 +399,7 @@ ena_init_io_rings(struct ena_adapter *adapter) ena_dev = adapter->ena_dev; - for (i = 0; i < adapter->num_queues; i++) { + for (i = 0; i < adapter->num_io_queues; i++) { txr = &adapter->tx_ring[i]; rxr = &adapter->rx_ring[i]; @@ -414,19 +412,43 @@ ena_init_io_rings(struct ena_adapter *adapter) txr->tx_max_header_size = ena_dev->tx_max_header_size; txr->tx_mem_queue_type = ena_dev->tx_mem_queue_type; + /* RX specific ring state */ + rxr->ring_size = adapter->rx_ring_size; + + que = &adapter->que[i]; + que->adapter = adapter; + que->id = i; + que->tx_ring = txr; + que->rx_ring = rxr; + + txr->que = que; + rxr->que = que; + + rxr->empty_rx_queue = 0; + rxr->rx_mbuf_sz = ena_mbuf_sz; + } +} + +static void +ena_init_io_rings_advanced(struct ena_adapter *adapter) +{ + struct ena_ring *txr, *rxr; + int i; + + for (i = 0; i < adapter->num_io_queues; i++) { + txr = &adapter->tx_ring[i]; + rxr = &adapter->rx_ring[i]; + /* Allocate a buf ring */ txr->buf_ring_size = adapter->buf_ring_size; txr->br = buf_ring_alloc(txr->buf_ring_size, M_DEVBUF, M_WAITOK, &txr->ring_mtx); - /* Alloc TX statistics. */ + /* Allocate Tx statistics. */ ena_alloc_counters((counter_u64_t *)&txr->tx_stats, sizeof(txr->tx_stats)); - /* RX specific ring state */ - rxr->ring_size = adapter->rx_ring_size; - - /* Alloc RX statistics. */ + /* Allocate Rx statistics. */ ena_alloc_counters((counter_u64_t *)&rxr->rx_stats, sizeof(rxr->rx_stats)); @@ -437,21 +459,23 @@ ena_init_io_rings(struct ena_adapter *adapter) device_get_nameunit(adapter->pdev), i); mtx_init(&txr->ring_mtx, txr->mtx_name, NULL, MTX_DEF); - - que = &adapter->que[i]; - que->adapter = adapter; - que->id = i; - que->tx_ring = txr; - que->rx_ring = rxr; - - txr->que = que; - rxr->que = que; - - rxr->empty_rx_queue = 0; } } static void +ena_init_io_rings(struct ena_adapter *adapter) +{ + /* + * IO rings initialization can be divided into the 2 steps: + * 1. Initialize variables and fields with initial values and copy + * them from adapter/ena_dev (basic) + * 2. Allocate mutex, counters and buf_ring (advanced) + */ + ena_init_io_rings_basic(adapter); + ena_init_io_rings_advanced(adapter); +} + +static void ena_free_io_ring_resources(struct ena_adapter *adapter, unsigned int qid) { struct ena_ring *txr = &adapter->tx_ring[qid]; @@ -474,7 +498,7 @@ ena_free_all_io_rings_resources(struct ena_adapter *ad { int i; - for (i = 0; i < adapter->num_queues; i++) + for (i = 0; i < adapter->num_io_queues; i++) ena_free_io_ring_resources(adapter, i); } @@ -773,7 +797,7 @@ ena_setup_all_tx_resources(struct ena_adapter *adapter { int i, rc; - for (i = 0; i < adapter->num_queues; i++) { + for (i = 0; i < adapter->num_io_queues; i++) { rc = ena_setup_tx_resources(adapter, i); if (rc != 0) { device_printf(adapter->pdev, @@ -802,7 +826,7 @@ ena_free_all_tx_resources(struct ena_adapter *adapter) { int i; - for (i = 0; i < adapter->num_queues; i++) + for (i = 0; i < adapter->num_io_queues; i++) ena_free_tx_resources(adapter, i); } @@ -933,7 +957,7 @@ ena_setup_all_rx_resources(struct ena_adapter *adapter { int i, rc = 0; - for (i = 0; i < adapter->num_queues; i++) { + for (i = 0; i < adapter->num_io_queues; i++) { rc = ena_setup_rx_resources(adapter, i); if (rc != 0) { device_printf(adapter->pdev, @@ -961,7 +985,7 @@ ena_free_all_rx_resources(struct ena_adapter *adapter) { int i; - for (i = 0; i < adapter->num_queues; i++) + for (i = 0; i < adapter->num_io_queues; i++) ena_free_rx_resources(adapter, i); } @@ -1110,6 +1134,61 @@ ena_refill_rx_bufs(struct ena_ring *rx_ring, uint32_t return (i); } +int +ena_update_queue_size(struct ena_adapter *adapter, uint32_t new_tx_size, + uint32_t new_rx_size) +{ + uint32_t old_tx_size, old_rx_size; + int rc = 0; + bool dev_was_up; + + ENA_LOCK_LOCK(adapter); + + old_tx_size = adapter->tx_ring_size; + old_rx_size = adapter->rx_ring_size; + adapter->tx_ring_size = new_tx_size; + adapter->rx_ring_size = new_rx_size; + + dev_was_up = ENA_FLAG_ISSET(ENA_FLAG_DEV_UP, adapter); + ena_down(adapter); + + /* Configure queues with new size. */ + ena_init_io_rings_basic(adapter); + if (dev_was_up) { + rc = ena_up(adapter); + if (unlikely(rc != 0)) { + device_printf(adapter->pdev, + "Failed to configure device with the new sizes - Tx: %u Rx: %u. Reverting old values - Tx: %u Rx: %u\n", + new_tx_size, new_rx_size, old_tx_size, old_rx_size); + + /* Revert old size. */ + adapter->tx_ring_size = old_tx_size; + adapter->rx_ring_size = old_rx_size; + ena_init_io_rings_basic(adapter); + + /* And try again. */ + rc = ena_up(adapter); + if (unlikely(rc != 0)) { + device_printf(adapter->pdev, + "Failed to revert old queue sizes. Triggering device reset.\n"); + /* + * If we've failed again, something had to go + * wrong. After reset, the device should try to + * go up + */ + ENA_FLAG_SET_ATOMIC( + ENA_FLAG_DEV_UP_BEFORE_RESET, adapter); + ena_trigger_reset(adapter, + ENA_REGS_RESET_OS_TRIGGER); + } + } + } + + ENA_LOCK_UNLOCK(adapter); + + return (rc); +} + static void ena_free_rx_bufs(struct ena_adapter *adapter, unsigned int qid) { @@ -1143,7 +1222,7 @@ ena_refill_all_rx_bufs(struct ena_adapter *adapter) struct ena_ring *rx_ring; int i, rc, bufs_num; - for (i = 0; i < adapter->num_queues; i++) { + for (i = 0; i < adapter->num_io_queues; i++) { rx_ring = &adapter->rx_ring[i]; bufs_num = rx_ring->ring_size - 1; rc = ena_refill_rx_bufs(rx_ring, bufs_num); @@ -1161,7 +1240,7 @@ ena_free_all_rx_bufs(struct ena_adapter *adapter) { int i; - for (i = 0; i < adapter->num_queues; i++) + for (i = 0; i < adapter->num_io_queues; i++) ena_free_rx_bufs(adapter, i); } @@ -1208,7 +1287,7 @@ static void ena_free_all_tx_bufs(struct ena_adapter *adapter) { - for (int i = 0; i < adapter->num_queues; i++) + for (int i = 0; i < adapter->num_io_queues; i++) ena_free_tx_bufs(adapter, i); } @@ -1218,7 +1297,7 @@ ena_destroy_all_tx_queues(struct ena_adapter *adapter) uint16_t ena_qid; int i; - for (i = 0; i < adapter->num_queues; i++) { + for (i = 0; i < adapter->num_io_queues; i++) { ena_qid = ENA_IO_TXQ_IDX(i); ena_com_destroy_io_queue(adapter->ena_dev, ena_qid); } @@ -1230,7 +1309,7 @@ ena_destroy_all_rx_queues(struct ena_adapter *adapter) uint16_t ena_qid; int i; - for (i = 0; i < adapter->num_queues; i++) { + for (i = 0; i < adapter->num_io_queues; i++) { ena_qid = ENA_IO_RXQ_IDX(i); ena_com_destroy_io_queue(adapter->ena_dev, ena_qid); } @@ -1242,7 +1321,7 @@ ena_destroy_all_io_queues(struct ena_adapter *adapter) struct ena_que *queue; int i; - for (i = 0; i < adapter->num_queues; i++) { + for (i = 0; i < adapter->num_io_queues; i++) { queue = &adapter->que[i]; while (taskqueue_cancel(queue->cleanup_tq, &queue->cleanup_task, NULL)) @@ -1267,7 +1346,7 @@ ena_create_io_queues(struct ena_adapter *adapter) int rc, i; /* Create TX queues */ - for (i = 0; i < adapter->num_queues; i++) { + for (i = 0; i < adapter->num_io_queues; i++) { msix_vector = ENA_IO_IRQ_IDX(i); ena_qid = ENA_IO_TXQ_IDX(i); ctx.mem_queue_type = ena_dev->tx_mem_queue_type; @@ -1295,7 +1374,7 @@ ena_create_io_queues(struct ena_adapter *adapter) } /* Create RX queues */ - for (i = 0; i < adapter->num_queues; i++) { + for (i = 0; i < adapter->num_io_queues; i++) { msix_vector = ENA_IO_IRQ_IDX(i); ena_qid = ENA_IO_RXQ_IDX(i); ctx.mem_queue_type = ENA_ADMIN_PLACEMENT_POLICY_HOST; @@ -1323,7 +1402,7 @@ ena_create_io_queues(struct ena_adapter *adapter) } } - for (i = 0; i < adapter->num_queues; i++) { + for (i = 0; i < adapter->num_io_queues; i++) { queue = &adapter->que[i]; NET_TASK_INIT(&queue->cleanup_task, 0, ena_cleanup, queue); @@ -1340,7 +1419,7 @@ ena_create_io_queues(struct ena_adapter *adapter) err_rx: while (i--) ena_com_destroy_io_queue(ena_dev, ENA_IO_RXQ_IDX(i)); - i = adapter->num_queues; + i = adapter->num_io_queues; err_tx: while (i--) ena_com_destroy_io_queue(ena_dev, ENA_IO_TXQ_IDX(i)); @@ -1400,7 +1479,7 @@ ena_enable_msix(struct ena_adapter *adapter) } /* Reserved the max msix vectors we might need */ - msix_vecs = ENA_MAX_MSIX_VEC(adapter->num_queues); + msix_vecs = ENA_MAX_MSIX_VEC(adapter->max_num_io_queues); adapter->msix_entries = malloc(msix_vecs * sizeof(struct msix_entry), M_DEVBUF, M_WAITOK | M_ZERO); @@ -1434,7 +1513,7 @@ ena_enable_msix(struct ena_adapter *adapter) } device_printf(dev, "Enable only %d MSI-x (out of %d), reduce " "the number of queues\n", msix_vecs, msix_req); - adapter->num_queues = msix_vecs - ENA_ADMIN_MSIX_VEC; + adapter->num_io_queues = msix_vecs - ENA_ADMIN_MSIX_VEC; } adapter->msix_vecs = msix_vecs; @@ -1475,7 +1554,7 @@ ena_setup_io_intr(struct ena_adapter *adapter) if (adapter->msix_entries == NULL) return (EINVAL); - for (int i = 0; i < adapter->num_queues; i++) { + for (int i = 0; i < adapter->num_io_queues; i++) { irq_idx = ENA_IO_IRQ_IDX(i); snprintf(adapter->irq_tbl[irq_idx].name, ENA_IRQNAME_SIZE, @@ -1723,7 +1802,7 @@ ena_unmask_all_io_irqs(struct ena_adapter *adapter) int i; /* Unmask interrupts for all queues */ - for (i = 0; i < adapter->num_queues; i++) { + for (i = 0; i < adapter->num_io_queues; i++) { ena_qid = ENA_IO_TXQ_IDX(i); io_cq = &adapter->ena_dev->io_cq_queues[ena_qid]; ena_com_update_intr_reg(&intr_reg, 0, 0, true); @@ -1805,6 +1884,14 @@ ena_up(struct ena_adapter *adapter) goto error; } + device_printf(adapter->pdev, + "Creating %u IO queues. Rx queue size: %d, Tx queue size: %d, LLQ is %s\n", + adapter->num_io_queues, + adapter->rx_ring_size, + adapter->tx_ring_size, + (adapter->ena_dev->tx_mem_queue_type == ENA_ADMIN_PLACEMENT_POLICY_DEV) ? + "ENABLED" : "DISABLED"); + /* allocate transmit descriptors */ rc = ena_setup_all_tx_resources(adapter); if (unlikely(rc != 0)) { @@ -2195,12 +2282,11 @@ ena_down(struct ena_adapter *adapter) counter_u64_add(adapter->dev_stats.interface_down, 1); } -static int -ena_calc_io_queue_num(struct ena_adapter *adapter, +static uint32_t +ena_calc_max_io_queue_num(device_t pdev, struct ena_com_dev *ena_dev, struct ena_com_dev_get_features_ctx *get_feat_ctx) { - struct ena_com_dev *ena_dev = adapter->ena_dev; - int io_tx_sq_num, io_tx_cq_num, io_rx_num, io_queue_num; + uint32_t io_tx_sq_num, io_tx_cq_num, io_rx_num, max_num_io_queues; /* Regular queues capabilities */ if (ena_dev->supported_features & BIT(ENA_ADMIN_MAX_QUEUES_EXT)) { @@ -2223,15 +2309,15 @@ ena_calc_io_queue_num(struct ena_adapter *adapter, if (ena_dev->tx_mem_queue_type == ENA_ADMIN_PLACEMENT_POLICY_DEV) io_tx_sq_num = get_feat_ctx->llq.max_llq_num; - io_queue_num = min_t(int, mp_ncpus, ENA_MAX_NUM_IO_QUEUES); - io_queue_num = min_t(int, io_queue_num, io_rx_num); - io_queue_num = min_t(int, io_queue_num, io_tx_sq_num); - io_queue_num = min_t(int, io_queue_num, io_tx_cq_num); + max_num_io_queues = min_t(uint32_t, mp_ncpus, ENA_MAX_NUM_IO_QUEUES); + max_num_io_queues = min_t(uint32_t, max_num_io_queues, io_rx_num); + max_num_io_queues = min_t(uint32_t, max_num_io_queues, io_tx_sq_num); + max_num_io_queues = min_t(uint32_t, max_num_io_queues, io_tx_cq_num); /* 1 IRQ for for mgmnt and 1 IRQ for each TX/RX pair */ - io_queue_num = min_t(int, io_queue_num, - pci_msix_count(adapter->pdev) - 1); + max_num_io_queues = min_t(uint32_t, max_num_io_queues, + pci_msix_count(pdev) - 1); - return (io_queue_num); + return (max_num_io_queues); } static int @@ -2324,141 +2410,78 @@ void set_default_llq_configurations(struct ena_llq_con } static int -ena_calc_queue_size(struct ena_adapter *adapter, - struct ena_calc_queue_size_ctx *ctx) +ena_calc_io_queue_size(struct ena_calc_queue_size_ctx *ctx) { struct ena_admin_feature_llq_desc *llq = &ctx->get_feat_ctx->llq; struct ena_com_dev *ena_dev = ctx->ena_dev; uint32_t tx_queue_size = ENA_DEFAULT_RING_SIZE; - uint32_t rx_queue_size = adapter->rx_ring_size; + uint32_t rx_queue_size = ENA_DEFAULT_RING_SIZE; + uint32_t max_tx_queue_size; + uint32_t max_rx_queue_size; if (ena_dev->supported_features & BIT(ENA_ADMIN_MAX_QUEUES_EXT)) { struct ena_admin_queue_ext_feature_fields *max_queue_ext = &ctx->get_feat_ctx->max_queue_ext.max_queue_ext; - rx_queue_size = min_t(uint32_t, rx_queue_size, - max_queue_ext->max_rx_cq_depth); - rx_queue_size = min_t(uint32_t, rx_queue_size, + max_rx_queue_size = min_t(uint32_t, + max_queue_ext->max_rx_cq_depth, max_queue_ext->max_rx_sq_depth); - tx_queue_size = min_t(uint32_t, tx_queue_size, - max_queue_ext->max_tx_cq_depth); + max_tx_queue_size = max_queue_ext->max_tx_cq_depth; if (ena_dev->tx_mem_queue_type == ENA_ADMIN_PLACEMENT_POLICY_DEV) - tx_queue_size = min_t(uint32_t, tx_queue_size, + max_tx_queue_size = min_t(uint32_t, max_tx_queue_size, llq->max_llq_depth); else - tx_queue_size = min_t(uint32_t, tx_queue_size, + max_tx_queue_size = min_t(uint32_t, max_tx_queue_size, max_queue_ext->max_tx_sq_depth); - ctx->max_rx_sgl_size = min_t(uint16_t, ENA_PKT_MAX_BUFS, - max_queue_ext->max_per_packet_rx_descs); ctx->max_tx_sgl_size = min_t(uint16_t, ENA_PKT_MAX_BUFS, max_queue_ext->max_per_packet_tx_descs); + ctx->max_rx_sgl_size = min_t(uint16_t, ENA_PKT_MAX_BUFS, + max_queue_ext->max_per_packet_rx_descs); } else { struct ena_admin_queue_feature_desc *max_queues = &ctx->get_feat_ctx->max_queues; - rx_queue_size = min_t(uint32_t, rx_queue_size, - max_queues->max_cq_depth); - rx_queue_size = min_t(uint32_t, rx_queue_size, + max_rx_queue_size = min_t(uint32_t, + max_queues->max_cq_depth, max_queues->max_sq_depth); - tx_queue_size = min_t(uint32_t, tx_queue_size, - max_queues->max_cq_depth); + max_tx_queue_size = max_queues->max_cq_depth; if (ena_dev->tx_mem_queue_type == ENA_ADMIN_PLACEMENT_POLICY_DEV) - tx_queue_size = min_t(uint32_t, tx_queue_size, + max_tx_queue_size = min_t(uint32_t, max_tx_queue_size, llq->max_llq_depth); else - tx_queue_size = min_t(uint32_t, tx_queue_size, + max_tx_queue_size = min_t(uint32_t, max_tx_queue_size, max_queues->max_sq_depth); - ctx->max_rx_sgl_size = min_t(uint16_t, ENA_PKT_MAX_BUFS, - max_queues->max_packet_tx_descs); ctx->max_tx_sgl_size = min_t(uint16_t, ENA_PKT_MAX_BUFS, + max_queues->max_packet_tx_descs); + ctx->max_rx_sgl_size = min_t(uint16_t, ENA_PKT_MAX_BUFS, max_queues->max_packet_rx_descs); } /* round down to the nearest power of 2 */ - rx_queue_size = 1 << (fls(rx_queue_size) - 1); - tx_queue_size = 1 << (fls(tx_queue_size) - 1); + max_tx_queue_size = 1 << (flsl(max_tx_queue_size) - 1); + max_rx_queue_size = 1 << (flsl(max_rx_queue_size) - 1); - if (unlikely(rx_queue_size == 0 || tx_queue_size == 0)) { - device_printf(ctx->pdev, "Invalid queue size\n"); - return (EFAULT); - } + tx_queue_size = clamp_val(tx_queue_size, ENA_MIN_RING_SIZE, + max_tx_queue_size); + rx_queue_size = clamp_val(rx_queue_size, ENA_MIN_RING_SIZE, + max_rx_queue_size); - ctx->rx_queue_size = rx_queue_size; + tx_queue_size = 1 << (flsl(tx_queue_size) - 1); + rx_queue_size = 1 << (flsl(rx_queue_size) - 1); + + ctx->max_tx_queue_size = max_tx_queue_size; + ctx->max_rx_queue_size = max_rx_queue_size; ctx->tx_queue_size = tx_queue_size; + ctx->rx_queue_size = rx_queue_size; return (0); } static int -ena_handle_updated_queues(struct ena_adapter *adapter, - struct ena_com_dev_get_features_ctx *get_feat_ctx) -{ - struct ena_com_dev *ena_dev = adapter->ena_dev; - struct ena_calc_queue_size_ctx calc_queue_ctx = { 0 }; - device_t pdev = adapter->pdev; - bool are_queues_changed = false; - int io_queue_num, rc; - - calc_queue_ctx.ena_dev = ena_dev; - calc_queue_ctx.get_feat_ctx = get_feat_ctx; - calc_queue_ctx.pdev = pdev; - - io_queue_num = ena_calc_io_queue_num(adapter, get_feat_ctx); - rc = ena_calc_queue_size(adapter, &calc_queue_ctx); - if (unlikely(rc != 0 || io_queue_num <= 0)) - return EFAULT; - - if (adapter->tx_ring->buf_ring_size != adapter->buf_ring_size) - are_queues_changed = true; - - if (unlikely(adapter->tx_ring_size > calc_queue_ctx.tx_queue_size || - adapter->rx_ring_size > calc_queue_ctx.rx_queue_size)) { - device_printf(pdev, - "Not enough resources to allocate requested queue sizes " - "(TX,RX)=(%d,%d), falling back to queue sizes " - "(TX,RX)=(%d,%d)\n", - adapter->tx_ring_size, - adapter->rx_ring_size, - calc_queue_ctx.tx_queue_size, - calc_queue_ctx.rx_queue_size); - adapter->tx_ring_size = calc_queue_ctx.tx_queue_size; - adapter->rx_ring_size = calc_queue_ctx.rx_queue_size; - adapter->max_tx_sgl_size = calc_queue_ctx.max_tx_sgl_size; - adapter->max_rx_sgl_size = calc_queue_ctx.max_rx_sgl_size; - are_queues_changed = true; - } - - if (unlikely(adapter->num_queues > io_queue_num)) { - device_printf(pdev, - "Not enough resources to allocate %d queues, " - "falling back to %d queues\n", - adapter->num_queues, io_queue_num); - adapter->num_queues = io_queue_num; - if (ENA_FLAG_ISSET(ENA_FLAG_RSS_ACTIVE, adapter)) { - ena_com_rss_destroy(ena_dev); - rc = ena_rss_init_default(adapter); - if (unlikely(rc != 0) && (rc != EOPNOTSUPP)) { - device_printf(pdev, "Cannot init RSS rc: %d\n", - rc); - return (rc); - } - } - are_queues_changed = true; - } - - if (unlikely(are_queues_changed)) { - ena_free_all_io_rings_resources(adapter); - ena_init_io_rings(adapter); - } - - return (0); -} - -static int ena_rss_init_default(struct ena_adapter *adapter) { struct ena_com_dev *ena_dev = adapter->ena_dev; @@ -2472,7 +2495,7 @@ ena_rss_init_default(struct ena_adapter *adapter) } for (i = 0; i < ENA_RX_RSS_TABLE_SIZE; i++) { - qid = i % adapter->num_queues; + qid = i % adapter->num_io_queues; rc = ena_com_indirect_table_fill_entry(ena_dev, i, ENA_IO_RXQ_IDX(qid)); if (unlikely((rc != 0) && (rc != EOPNOTSUPP))) { @@ -2873,7 +2896,7 @@ check_for_missing_completions(struct ena_adapter *adap budget = adapter->missing_tx_max_queues; - for (i = adapter->next_monitored_tx_qid; i < adapter->num_queues; i++) { + for (i = adapter->next_monitored_tx_qid; i < adapter->num_io_queues; i++) { tx_ring = &adapter->tx_ring[i]; rx_ring = &adapter->rx_ring[i]; @@ -2892,7 +2915,7 @@ check_for_missing_completions(struct ena_adapter *adap } } - adapter->next_monitored_tx_qid = i % adapter->num_queues; + adapter->next_monitored_tx_qid = i % adapter->num_io_queues; } /* trigger rx cleanup after 2 consecutive detections */ @@ -2919,7 +2942,7 @@ check_for_empty_rx_ring(struct ena_adapter *adapter) if (ENA_FLAG_ISSET(ENA_FLAG_TRIGGER_RESET, adapter)) return; - for (i = 0; i < adapter->num_queues; i++) { + for (i = 0; i < adapter->num_io_queues; i++) { rx_ring = &adapter->rx_ring[i]; refill_required = ena_com_free_q_entries(rx_ring->ena_com_io_sq); @@ -3026,8 +3049,6 @@ ena_destroy_device(struct ena_adapter *adapter, bool g dev_up = ENA_FLAG_ISSET(ENA_FLAG_DEV_UP, adapter); if (dev_up) ENA_FLAG_SET_ATOMIC(ENA_FLAG_DEV_UP_BEFORE_RESET, adapter); - else - ENA_FLAG_CLEAR_ATOMIC(ENA_FLAG_DEV_UP_BEFORE_RESET, adapter); if (!graceful) ena_com_set_admin_running_state(ena_dev, false); @@ -3111,10 +3132,6 @@ ena_restore_device(struct ena_adapter *adapter) goto err_device_destroy; } - rc = ena_handle_updated_queues(adapter, &get_feat_ctx); - if (rc != 0) - goto err_device_destroy; - ENA_FLAG_CLEAR_ATOMIC(ENA_FLAG_ONGOING_RESET, adapter); /* Make sure we don't have a race with AENQ Links state handler */ if (ENA_FLAG_ISSET(ENA_FLAG_LINK_UP, adapter)) @@ -3149,6 +3166,7 @@ ena_restore_device(struct ena_adapter *adapter) callout_reset_sbt(&adapter->timer_service, SBT_1S, SBT_1S, ena_timer_service, (void *)adapter, 0); } + ENA_FLAG_CLEAR_ATOMIC(ENA_FLAG_DEV_UP_BEFORE_RESET, adapter); device_printf(dev, "Device reset completed successfully, Driver info: %s\n", ena_version); @@ -3208,8 +3226,7 @@ ena_attach(device_t pdev) static int version_printed; struct ena_adapter *adapter; struct ena_com_dev *ena_dev = NULL; - const char *queue_type_str; - int io_queue_num; + uint32_t max_num_io_queues; int rid, rc; adapter = device_get_softc(pdev); @@ -3285,12 +3302,6 @@ ena_attach(device_t pdev) goto err_com_free; } - if (ena_dev->tx_mem_queue_type == ENA_ADMIN_PLACEMENT_POLICY_HOST) - queue_type_str = "Regular"; - else - queue_type_str = "Low Latency"; - device_printf(pdev, "Placement policy: %s\n", queue_type_str); - adapter->keep_alive_timestamp = getsbinuptime(); adapter->tx_offload_cap = get_feat_ctx.offload.tx; @@ -3298,37 +3309,35 @@ ena_attach(device_t pdev) memcpy(adapter->mac_addr, get_feat_ctx.dev_attr.mac_addr, ETHER_ADDR_LEN); + calc_queue_ctx.pdev = pdev; calc_queue_ctx.ena_dev = ena_dev; calc_queue_ctx.get_feat_ctx = &get_feat_ctx; - calc_queue_ctx.pdev = pdev; - /* calculate IO queue number to create */ - io_queue_num = ena_calc_io_queue_num(adapter, &get_feat_ctx); - - ENA_ASSERT(io_queue_num > 0, "Invalid queue number: %d\n", - io_queue_num); - adapter->num_queues = io_queue_num; - - adapter->max_mtu = get_feat_ctx.dev_attr.max_mtu; - // Set the requested Rx ring size - adapter->rx_ring_size = ENA_DEFAULT_RING_SIZE; - /* calculatre ring sizes */ - rc = ena_calc_queue_size(adapter, &calc_queue_ctx); - if (unlikely((rc != 0) || (io_queue_num <= 0))) { + /* Calculate initial and maximum IO queue number and size */ + max_num_io_queues = ena_calc_max_io_queue_num(pdev, ena_dev, + &get_feat_ctx); + rc = ena_calc_io_queue_size(&calc_queue_ctx); + if (unlikely((rc != 0) || (max_num_io_queues <= 0))) { rc = EFAULT; goto err_com_free; } - adapter->reset_reason = ENA_REGS_RESET_NORMAL; - adapter->tx_ring_size = calc_queue_ctx.tx_queue_size; adapter->rx_ring_size = calc_queue_ctx.rx_queue_size; - + adapter->max_tx_ring_size = calc_queue_ctx.max_tx_queue_size; + adapter->max_rx_ring_size = calc_queue_ctx.max_rx_queue_size; adapter->max_tx_sgl_size = calc_queue_ctx.max_tx_sgl_size; adapter->max_rx_sgl_size = calc_queue_ctx.max_rx_sgl_size; + adapter->max_num_io_queues = max_num_io_queues; + adapter->num_io_queues = max_num_io_queues; + adapter->buf_ring_size = ENA_DEFAULT_BUF_RING_SIZE; + adapter->max_mtu = get_feat_ctx.dev_attr.max_mtu; + + adapter->reset_reason = ENA_REGS_RESET_NORMAL; + /* set up dma tags for rx and tx buffers */ rc = ena_setup_tx_dma_tag(adapter); if (unlikely(rc != 0)) { @@ -3343,11 +3352,6 @@ ena_attach(device_t pdev) } /* initialize rings basic information */ - device_printf(pdev, - "Creating %d io queues. Rx queue size: %d, Tx queue size: %d\n", - io_queue_num, - calc_queue_ctx.rx_queue_size, - calc_queue_ctx.tx_queue_size); ena_init_io_rings(adapter); rc = ena_enable_msix_and_set_admin_interrupts(adapter); Modified: head/sys/dev/ena/ena.h ============================================================================== --- head/sys/dev/ena/ena.h Tue May 26 15:46:18 2020 (r361520) +++ head/sys/dev/ena/ena.h Tue May 26 15:48:06 2020 (r361521) @@ -69,6 +69,7 @@ #define ENA_DEFAULT_BUF_RING_SIZE 4096 #define ENA_DEFAULT_RING_SIZE 1024 +#define ENA_MIN_RING_SIZE 256 /* * Refill Rx queue when number of required descriptors is above @@ -220,8 +221,10 @@ struct ena_calc_queue_size_ctx { struct ena_com_dev_get_features_ctx *get_feat_ctx; struct ena_com_dev *ena_dev; device_t pdev; - uint16_t rx_queue_size; - uint16_t tx_queue_size; + uint32_t tx_queue_size; + uint32_t rx_queue_size; + uint32_t max_tx_queue_size; + uint32_t max_rx_queue_size; uint16_t max_tx_sgl_size; uint16_t max_rx_sgl_size; }; @@ -409,17 +412,20 @@ struct ena_adapter { uint32_t max_mtu; + uint32_t num_io_queues; + uint32_t max_num_io_queues; + + uint32_t tx_ring_size; + uint32_t rx_ring_size; + + uint32_t max_tx_ring_size; + uint32_t max_rx_ring_size; + uint16_t max_tx_sgl_size; uint16_t max_rx_sgl_size; uint32_t tx_offload_cap; - /* Tx fast path data */ - int num_queues; - - unsigned int tx_ring_size; - unsigned int rx_ring_size; - uint16_t buf_ring_size; /* RSS*/ @@ -473,6 +479,9 @@ struct ena_adapter { #define ENA_LOCK_LOCK(adapter) sx_xlock(&(adapter)->global_lock) #define ENA_LOCK_UNLOCK(adapter) sx_unlock(&(adapter)->global_lock) +#define clamp_t(type, _x, min, max) min_t(type, max_t(type, _x, min), max) +#define clamp_val(val, lo, hi) clamp_t(__typeof(val), val, lo, hi) + static inline int ena_mbuf_count(struct mbuf *mbuf) { int count = 1; @@ -488,6 +497,8 @@ void ena_down(struct ena_adapter *adapter); int ena_restore_device(struct ena_adapter *adapter); void ena_destroy_device(struct ena_adapter *adapter, bool graceful); int ena_refill_rx_bufs(struct ena_ring *rx_ring, uint32_t num); +int ena_update_queue_size(struct ena_adapter *adapter, uint32_t new_tx_size, + uint32_t new_rx_size); static inline void ena_trigger_reset(struct ena_adapter *adapter, Modified: head/sys/dev/ena/ena_datapath.c ============================================================================== --- head/sys/dev/ena/ena_datapath.c Tue May 26 15:46:18 2020 (r361520) +++ head/sys/dev/ena/ena_datapath.c Tue May 26 15:48:06 2020 (r361521) @@ -138,9 +138,9 @@ ena_mq_start(if_t ifp, struct mbuf *m) * It should improve performance. */ if (M_HASHTYPE_GET(m) != M_HASHTYPE_NONE) { - i = m->m_pkthdr.flowid % adapter->num_queues; + i = m->m_pkthdr.flowid % adapter->num_io_queues; } else { - i = curcpu % adapter->num_queues; + i = curcpu % adapter->num_io_queues; } tx_ring = &adapter->tx_ring[i]; @@ -169,7 +169,7 @@ ena_qflush(if_t ifp) struct ena_ring *tx_ring = adapter->tx_ring; int i; - for(i = 0; i < adapter->num_queues; ++i, ++tx_ring) + for(i = 0; i < adapter->num_io_queues; ++i, ++tx_ring) if (!drbr_empty(ifp, tx_ring->br)) { ENA_RING_MTX_LOCK(tx_ring); drbr_flush(ifp, tx_ring->br); Modified: head/sys/dev/ena/ena_netmap.c ============================================================================== --- head/sys/dev/ena/ena_netmap.c Tue May 26 15:46:18 2020 (r361520) +++ head/sys/dev/ena/ena_netmap.c Tue May 26 15:48:06 2020 (r361521) @@ -95,8 +95,8 @@ ena_netmap_attach(struct ena_adapter *adapter) na.ifp = adapter->ifp; na.num_tx_desc = adapter->tx_ring_size; na.num_rx_desc = adapter->rx_ring_size; - na.num_tx_rings = adapter->num_queues; - na.num_rx_rings = adapter->num_queues; + na.num_tx_rings = adapter->num_io_queues; + na.num_rx_rings = adapter->num_io_queues; na.rx_buf_maxsize = adapter->buf_ring_size; na.nm_txsync = ena_netmap_txsync; na.nm_rxsync = ena_netmap_rxsync; Modified: head/sys/dev/ena/ena_sysctl.c ============================================================================== --- head/sys/dev/ena/ena_sysctl.c Tue May 26 15:46:18 2020 (r361520) +++ head/sys/dev/ena/ena_sysctl.c Tue May 26 15:48:06 2020 (r361521) @@ -161,7 +161,7 @@ ena_sysctl_add_stats(struct ena_adapter *adapter) CTLFLAG_RD, &dev_stats->admin_q_pause, "Admin queue pauses"); - for (i = 0; i < adapter->num_queues; ++i, ++tx_ring, ++rx_ring) { + for (i = 0; i < adapter->num_io_queues; ++i, ++tx_ring, ++rx_ring) { snprintf(namebuf, QUEUE_NAME_LEN, "queue%d", i); queue_node = SYSCTL_ADD_NODE(ctx, child, OID_AUTO, @@ -310,11 +310,11 @@ ena_sysctl_add_tuneables(struct ena_adapter *adapter) CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, adapter, 0, ena_sysctl_buf_ring_size, "I", "Size of the bufring"); - /* Tuneable number of Rx ring size */ + /* Tuneable number of the Rx ring size */ SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "rx_queue_size", - CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, adapter, 0, - ena_sysctl_rx_queue_size, "I", "Size of the Rx ring. " - "The size should be a power of 2. Max value is 8K"); + CTLTYPE_U32 | CTLFLAG_RW | CTLFLAG_MPSAFE, adapter, 0, + ena_sysctl_rx_queue_size, "I", + "Size of the Rx ring. The size should be a power of 2."); } @@ -353,29 +353,45 @@ static int ena_sysctl_rx_queue_size(SYSCTL_HANDLER_ARGS) { struct ena_adapter *adapter = arg1; - int val; + uint32_t val; int error; val = 0; - error = sysctl_wire_old_buffer(req, sizeof(int)); + error = sysctl_wire_old_buffer(req, sizeof(val)); if (error == 0) { val = adapter->rx_ring_size; - error = sysctl_handle_int(oidp, &val, 0, req); + error = sysctl_handle_32(oidp, &val, 0, req); } if (error != 0 || req->newptr == NULL) return (error); - if (val < 16) + + if (val < ENA_MIN_RING_SIZE || val > adapter->max_rx_ring_size) { + device_printf(adapter->pdev, + "Requested new Rx queue size (%u) is out of range: [%u, %u]\n", + val, ENA_MIN_RING_SIZE, adapter->max_rx_ring_size); return (EINVAL); + } - device_printf(adapter->pdev, - "Requested new rx queue size: %d. Old size: %d\n", - val, adapter->rx_ring_size); + /* Check if the parameter is power of 2 */ + if (!powerof2(val)) { + device_printf(adapter->pdev, + "Requested new Rx queue size (%u) is not a power of 2\n", + val); + return (EINVAL); + } if (val != adapter->rx_ring_size) { - adapter->rx_ring_size = val; - adapter->reset_reason = ENA_REGS_RESET_OS_TRIGGER; - ENA_FLAG_SET_ATOMIC(ENA_FLAG_TRIGGER_RESET, adapter); + device_printf(adapter->pdev, + "Requested new Rx queue size: %u. Old size: %u\n", + val, adapter->rx_ring_size); + + error = ena_update_queue_size(adapter, adapter->tx_ring_size, + val); + } else { + device_printf(adapter->pdev, + "New Rx queue size is the same as already used: %u\n", + adapter->rx_ring_size); } - return (0); + return (error); } From owner-svn-src-all@freebsd.org Tue May 26 15:48:29 2020 Return-Path: Delivered-To: svn-src-all@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 2AD3C2CBC3A; Tue, 26 May 2020 15:48:29 +0000 (UTC) (envelope-from tuexen@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49WdfP06bPz4Ppd; Tue, 26 May 2020 15:48:29 +0000 (UTC) (envelope-from tuexen@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 F361E25C27; Tue, 26 May 2020 15:48:28 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04QFmSkl070619; Tue, 26 May 2020 15:48:28 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04QFmRR0070614; Tue, 26 May 2020 15:48:27 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <202005261548.04QFmRR0070614@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Tue, 26 May 2020 15:48:27 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-releng@freebsd.org Subject: svn commit: r361522 - releng/11.4/sys/netinet X-SVN-Group: releng X-SVN-Commit-Author: tuexen X-SVN-Commit-Paths: releng/11.4/sys/netinet X-SVN-Commit-Revision: 361522 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2020 15:48:29 -0000 Author: tuexen Date: Tue May 26 15:48:27 2020 New Revision: 361522 URL: https://svnweb.freebsd.org/changeset/base/361522 Log: MFS r361469: Fix bug in PR-SCTP Only drop DATA chunk with lower priorities as specified in RFC 7496. This issue was found by looking at a reproducer generated by syzkaller. MFS r361472: Improve SCTP iterator Ensure that the SCTP iterator runs with an stcb and inp, which belong to each other. MFS r361473: Improve stcb handling during teardown Ensure that an stcb is not dereferenced when it is about to be freed. This issue was found by SYZKALLER. MFS r361476: Improve ASCONF handling Avoid an integer underflow. Approved by: re(gjb) Modified: releng/11.4/sys/netinet/sctp_asconf.c releng/11.4/sys/netinet/sctp_indata.c releng/11.4/sys/netinet/sctp_indata.h releng/11.4/sys/netinet/sctp_output.c releng/11.4/sys/netinet/sctputil.c Directory Properties: releng/11.4/ (props changed) Modified: releng/11.4/sys/netinet/sctp_asconf.c ============================================================================== --- releng/11.4/sys/netinet/sctp_asconf.c Tue May 26 15:48:06 2020 (r361521) +++ releng/11.4/sys/netinet/sctp_asconf.c Tue May 26 15:48:27 2020 (r361522) @@ -1797,9 +1797,9 @@ sctp_handle_asconf_ack(struct mbuf *m, int offset, } /* switch */ /* update remaining ASCONF-ACK message length to process */ - ack_length -= SCTP_SIZE32(param_length); - if (ack_length <= 0) { - /* no more data in the mbuf chain */ + if (ack_length > SCTP_SIZE32(param_length)) { + ack_length -= SCTP_SIZE32(param_length); + } else { break; } offset += SCTP_SIZE32(param_length); Modified: releng/11.4/sys/netinet/sctp_indata.c ============================================================================== --- releng/11.4/sys/netinet/sctp_indata.c Tue May 26 15:48:06 2020 (r361521) +++ releng/11.4/sys/netinet/sctp_indata.c Tue May 26 15:48:27 2020 (r361522) @@ -162,6 +162,9 @@ sctp_build_readq_entry(struct sctp_tcb *stcb, read_queue_e->data = dm; read_queue_e->stcb = stcb; read_queue_e->port_from = stcb->rport; + if (stcb->asoc.state & SCTP_STATE_ABOUT_TO_BE_FREED) { + read_queue_e->do_not_ref_stcb = 1; + } failed_build: return (read_queue_e); } @@ -773,6 +776,7 @@ sctp_build_readq_entry_from_ctl(struct sctp_queued_to_ atomic_add_int(&nc->whoFrom->ref_count, 1); nc->stcb = control->stcb; nc->port_from = control->port_from; + nc->do_not_ref_stcb = control->do_not_ref_stcb; } static void Modified: releng/11.4/sys/netinet/sctp_indata.h ============================================================================== --- releng/11.4/sys/netinet/sctp_indata.h Tue May 26 15:48:06 2020 (r361521) +++ releng/11.4/sys/netinet/sctp_indata.h Tue May 26 15:48:27 2020 (r361522) @@ -66,6 +66,9 @@ sctp_build_readq_entry(struct sctp_tcb *stcb, (_ctl)->data = dm; \ (_ctl)->stcb = (in_it); \ (_ctl)->port_from = (in_it)->rport; \ + if ((in_it)->asoc.state & SCTP_STATE_ABOUT_TO_BE_FREED) { \ + (_ctl)->do_not_ref_stcb = 1; \ + }\ } \ } while (0) Modified: releng/11.4/sys/netinet/sctp_output.c ============================================================================== --- releng/11.4/sys/netinet/sctp_output.c Tue May 26 15:48:06 2020 (r361521) +++ releng/11.4/sys/netinet/sctp_output.c Tue May 26 15:48:27 2020 (r361522) @@ -6198,11 +6198,11 @@ sctp_prune_prsctp(struct sctp_tcb *stcb, * This one is PR-SCTP AND buffer space * limited type */ - if (chk->rec.data.timetodrop.tv_sec >= (long)srcv->sinfo_timetolive) { + if (chk->rec.data.timetodrop.tv_sec > (long)srcv->sinfo_timetolive) { /* * Lower numbers equates to higher * priority so if the one we are - * looking at has a larger or equal + * looking at has a larger * priority we want to drop the data * and NOT retransmit it. */ @@ -6233,7 +6233,7 @@ sctp_prune_prsctp(struct sctp_tcb *stcb, TAILQ_FOREACH_SAFE(chk, &asoc->send_queue, sctp_next, nchk) { /* Here we must move to the sent queue and mark */ if (PR_SCTP_BUF_ENABLED(chk->flags)) { - if (chk->rec.data.timetodrop.tv_sec >= (long)srcv->sinfo_timetolive) { + if (chk->rec.data.timetodrop.tv_sec > (long)srcv->sinfo_timetolive) { if (chk->data) { /* * We release the book_size @@ -12614,7 +12614,7 @@ sctp_lower_sosend(struct socket *so, top = SCTP_HEADER_TO_CHAIN(i_pak); sndlen = SCTP_HEADER_LEN(i_pak); } - SCTPDBG(SCTP_DEBUG_OUTPUT1, "Send called addr:%p send length %zu\n", + SCTPDBG(SCTP_DEBUG_OUTPUT1, "Send called addr:%p send length %zd\n", (void *)addr, sndlen); if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) && Modified: releng/11.4/sys/netinet/sctputil.c ============================================================================== --- releng/11.4/sys/netinet/sctputil.c Tue May 26 15:48:06 2020 (r361521) +++ releng/11.4/sys/netinet/sctputil.c Tue May 26 15:48:27 2020 (r361522) @@ -1409,6 +1409,7 @@ select_a_new_ep: } tinp = it->inp; it->inp = LIST_NEXT(it->inp, sctp_list); + it->stcb = NULL; SCTP_INP_RUNLOCK(tinp); if (it->inp == NULL) { goto done_with_iterator; @@ -1478,6 +1479,9 @@ select_a_new_ep: atomic_add_int(&it->stcb->asoc.refcnt, -1); iteration_count = 0; } + KASSERT(it->inp == it->stcb->sctp_ep, + ("%s: stcb %p does not belong to inp %p, but inp %p", + __func__, it->stcb, it->inp, it->stcb->sctp_ep)); /* run function on this one */ (*it->function_assoc) (it->inp, it->stcb, it->pointer, it->val); @@ -1510,6 +1514,7 @@ no_stcb: } else { it->inp = LIST_NEXT(it->inp, sctp_list); } + it->stcb = NULL; if (it->inp == NULL) { goto done_with_iterator; } From owner-svn-src-all@freebsd.org Tue May 26 15:50:31 2020 Return-Path: Delivered-To: svn-src-all@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 1D0332CBE47; Tue, 26 May 2020 15:50:31 +0000 (UTC) (envelope-from mw@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49Wdhk71xVz4PwL; Tue, 26 May 2020 15:50:30 +0000 (UTC) (envelope-from mw@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 EC7EE25D42; Tue, 26 May 2020 15:50:30 +0000 (UTC) (envelope-from mw@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04QFoUvp070797; Tue, 26 May 2020 15:50:30 GMT (envelope-from mw@FreeBSD.org) Received: (from mw@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04QFoUbd070794; Tue, 26 May 2020 15:50:30 GMT (envelope-from mw@FreeBSD.org) Message-Id: <202005261550.04QFoUbd070794@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mw set sender to mw@FreeBSD.org using -f From: Marcin Wojtas Date: Tue, 26 May 2020 15:50:30 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361523 - head/sys/dev/ena X-SVN-Group: head X-SVN-Commit-Author: mw X-SVN-Commit-Paths: head/sys/dev/ena X-SVN-Commit-Revision: 361523 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2020 15:50:31 -0000 Author: mw Date: Tue May 26 15:50:30 2020 New Revision: 361523 URL: https://svnweb.freebsd.org/changeset/base/361523 Log: Rework ENA Tx buffer ring size reconfiguration This method has been aligned with the way how the Rx queue size is being updated - so it's now done synchronously instead of resetting the device. Moreover, the input parameter is now being validated if it's a power of 2. Without this, it can cause kernel panic. Submitted by: Michal Krawczyk Obtained from: Semihalf Sponsored by: Amazon, Inc. Modified: head/sys/dev/ena/ena.c head/sys/dev/ena/ena.h head/sys/dev/ena/ena_sysctl.c Modified: head/sys/dev/ena/ena.c ============================================================================== --- head/sys/dev/ena/ena.c Tue May 26 15:48:27 2020 (r361522) +++ head/sys/dev/ena/ena.c Tue May 26 15:50:30 2020 (r361523) @@ -1135,6 +1135,55 @@ ena_refill_rx_bufs(struct ena_ring *rx_ring, uint32_t } int +ena_update_buf_ring_size(struct ena_adapter *adapter, + uint32_t new_buf_ring_size) +{ + uint32_t old_buf_ring_size; + int rc = 0; + bool dev_was_up; + + ENA_LOCK_LOCK(adapter); + + old_buf_ring_size = adapter->buf_ring_size; + adapter->buf_ring_size = new_buf_ring_size; + + dev_was_up = ENA_FLAG_ISSET(ENA_FLAG_DEV_UP, adapter); + ena_down(adapter); + + /* Reconfigure buf ring for all Tx rings. */ + ena_free_all_io_rings_resources(adapter); + ena_init_io_rings_advanced(adapter); + if (dev_was_up) { + /* + * If ena_up() fails, it's not because of recent buf_ring size + * changes. Because of that, we just want to revert old drbr + * value and trigger the reset because something else had to + * go wrong. + */ + rc = ena_up(adapter); + if (unlikely(rc != 0)) { + device_printf(adapter->pdev, + "Failed to configure device after setting new drbr size: %u. Reverting old value: %u and triggering the reset\n", + new_buf_ring_size, old_buf_ring_size); + + /* Revert old size and trigger the reset */ + adapter->buf_ring_size = old_buf_ring_size; + ena_free_all_io_rings_resources(adapter); + ena_init_io_rings_advanced(adapter); + + ENA_FLAG_SET_ATOMIC(ENA_FLAG_DEV_UP_BEFORE_RESET, + adapter); + ena_trigger_reset(adapter, ENA_REGS_RESET_OS_TRIGGER); + + } + } + + ENA_LOCK_UNLOCK(adapter); + + return (rc); +} + +int ena_update_queue_size(struct ena_adapter *adapter, uint32_t new_tx_size, uint32_t new_rx_size) { Modified: head/sys/dev/ena/ena.h ============================================================================== --- head/sys/dev/ena/ena.h Tue May 26 15:48:27 2020 (r361522) +++ head/sys/dev/ena/ena.h Tue May 26 15:50:30 2020 (r361523) @@ -426,7 +426,7 @@ struct ena_adapter { uint32_t tx_offload_cap; - uint16_t buf_ring_size; + uint32_t buf_ring_size; /* RSS*/ uint8_t rss_ind_tbl[ENA_RX_RSS_TABLE_SIZE]; @@ -497,6 +497,8 @@ void ena_down(struct ena_adapter *adapter); int ena_restore_device(struct ena_adapter *adapter); void ena_destroy_device(struct ena_adapter *adapter, bool graceful); int ena_refill_rx_bufs(struct ena_ring *rx_ring, uint32_t num); +int ena_update_buf_ring_size(struct ena_adapter *adapter, + uint32_t new_buf_ring_size); int ena_update_queue_size(struct ena_adapter *adapter, uint32_t new_tx_size, uint32_t new_rx_size); Modified: head/sys/dev/ena/ena_sysctl.c ============================================================================== --- head/sys/dev/ena/ena_sysctl.c Tue May 26 15:48:27 2020 (r361522) +++ head/sys/dev/ena/ena_sysctl.c Tue May 26 15:50:30 2020 (r361523) @@ -307,8 +307,9 @@ ena_sysctl_add_tuneables(struct ena_adapter *adapter) /* Tuneable number of buffers in the buf-ring (drbr) */ SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "buf_ring_size", - CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, adapter, 0, - ena_sysctl_buf_ring_size, "I", "Size of the bufring"); + CTLTYPE_U32 | CTLFLAG_RW | CTLFLAG_MPSAFE, adapter, 0, + ena_sysctl_buf_ring_size, "I", + "Size of the Tx buffer ring (drbr)."); /* Tuneable number of the Rx ring size */ SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "rx_queue_size", @@ -322,31 +323,38 @@ static int ena_sysctl_buf_ring_size(SYSCTL_HANDLER_ARGS) { struct ena_adapter *adapter = arg1; - int val; + uint32_t val; int error; val = 0; - error = sysctl_wire_old_buffer(req, sizeof(int)); + error = sysctl_wire_old_buffer(req, sizeof(val)); if (error == 0) { val = adapter->buf_ring_size; error = sysctl_handle_int(oidp, &val, 0, req); } if (error != 0 || req->newptr == NULL) return (error); - if (val < 0) + + if (!powerof2(val) || val == 0) { + device_printf(adapter->pdev, + "Requested new Tx buffer ring size (%u) is not a power of 2\n", + val); return (EINVAL); + } - device_printf(adapter->pdev, - "Requested new buf ring size: %d. Old size: %d\n", - val, adapter->buf_ring_size); - if (val != adapter->buf_ring_size) { - adapter->buf_ring_size = val; - adapter->reset_reason = ENA_REGS_RESET_OS_TRIGGER; - ENA_FLAG_SET_ATOMIC(ENA_FLAG_TRIGGER_RESET, adapter); + device_printf(adapter->pdev, + "Requested new Tx buffer ring size: %d. Old size: %d\n", + val, adapter->buf_ring_size); + + error = ena_update_buf_ring_size(adapter, val); + } else { + device_printf(adapter->pdev, + "New Tx buffer ring size is the same as already used: %u\n", + adapter->buf_ring_size); } - return (0); + return (error); } static int From owner-svn-src-all@freebsd.org Tue May 26 15:54:33 2020 Return-Path: Delivered-To: svn-src-all@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 7779F2CC385; Tue, 26 May 2020 15:54:33 +0000 (UTC) (envelope-from mw@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49WdnP2frMz4QT5; Tue, 26 May 2020 15:54:33 +0000 (UTC) (envelope-from mw@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 568E52608D; Tue, 26 May 2020 15:54:33 +0000 (UTC) (envelope-from mw@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04QFsXQw076562; Tue, 26 May 2020 15:54:33 GMT (envelope-from mw@FreeBSD.org) Received: (from mw@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04QFsXBF076561; Tue, 26 May 2020 15:54:33 GMT (envelope-from mw@FreeBSD.org) Message-Id: <202005261554.04QFsXBF076561@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mw set sender to mw@FreeBSD.org using -f From: Marcin Wojtas Date: Tue, 26 May 2020 15:54:33 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361524 - head/sys/dev/ena X-SVN-Group: head X-SVN-Commit-Author: mw X-SVN-Commit-Paths: head/sys/dev/ena X-SVN-Commit-Revision: 361524 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2020 15:54:33 -0000 Author: mw Date: Tue May 26 15:54:32 2020 New Revision: 361524 URL: https://svnweb.freebsd.org/changeset/base/361524 Log: Fix assumptions about number of IO queues in the ENA Make the ena_adapter::num_io_queues a number of effectively used IO queues. While the ena_adapter::max_num_io_queues is an upper-bound specified by the HW, the ena_adapter::num_io_queues may be lower than that, depending on runtime system resources availability. On reset, there are called ena_destroy_device() and then ena_restore_device(). The latter calls, in turn, ena_enable_msix(), which will attempt to re-acquire ena_adapter::max_num_io_queues of MSIX vectors again. Thus, the value of ena_adapter::num_io_queues may be different before and after reset. For this reason, free the IO rings structures (drbr, counters) in ena_destroy_device() and allocate again in ena_restore_device(). Submitted by: Maciej Bielski Obtained from: Semihalf Sponsored by: Amazon, Inc. Modified: head/sys/dev/ena/ena.c Modified: head/sys/dev/ena/ena.c ============================================================================== --- head/sys/dev/ena/ena.c Tue May 26 15:50:30 2020 (r361523) +++ head/sys/dev/ena/ena.c Tue May 26 15:54:32 2020 (r361524) @@ -1562,7 +1562,6 @@ ena_enable_msix(struct ena_adapter *adapter) } device_printf(dev, "Enable only %d MSI-x (out of %d), reduce " "the number of queues\n", msix_vecs, msix_req); - adapter->num_io_queues = msix_vecs - ENA_ADMIN_MSIX_VEC; } adapter->msix_vecs = msix_vecs; @@ -3116,6 +3115,15 @@ ena_destroy_device(struct ena_adapter *adapter, bool g ena_disable_msix(adapter); + /* + * IO rings resources should be freed because `ena_restore_device()` + * calls (not directly) `ena_enable_msix()`, which re-allocates MSIX + * vectors. The amount of MSIX vectors after destroy-restore may be + * different than before. Therefore, IO rings resources should be + * established from scratch each time. + */ + ena_free_all_io_rings_resources(adapter); + ena_com_abort_admin_commands(ena_dev); ena_com_wait_for_abort_completion(ena_dev); @@ -3192,6 +3200,18 @@ ena_restore_device(struct ena_adapter *adapter) goto err_device_destroy; } + /* + * Effective value of used MSIX vectors should be the same as before + * `ena_destroy_device()`, if possible, or closest to it if less vectors + * are available. + */ + if ((adapter->msix_vecs - ENA_ADMIN_MSIX_VEC) < adapter->num_io_queues) + adapter->num_io_queues = + adapter->msix_vecs - ENA_ADMIN_MSIX_VEC; + + /* Re-initialize rings basic information */ + ena_init_io_rings(adapter); + /* If the interface was up before the reset bring it up */ if (ENA_FLAG_ISSET(ENA_FLAG_DEV_UP_BEFORE_RESET, adapter)) { rc = ena_up(adapter); @@ -3379,7 +3399,6 @@ ena_attach(device_t pdev) adapter->max_rx_sgl_size = calc_queue_ctx.max_rx_sgl_size; adapter->max_num_io_queues = max_num_io_queues; - adapter->num_io_queues = max_num_io_queues; adapter->buf_ring_size = ENA_DEFAULT_BUF_RING_SIZE; @@ -3400,15 +3419,26 @@ ena_attach(device_t pdev) goto err_tx_tag_free; } - /* initialize rings basic information */ - ena_init_io_rings(adapter); - + /* + * The amount of requested MSIX vectors is equal to + * adapter::max_num_io_queues (see `ena_enable_msix()`), plus a constant + * number of admin queue interrupts. The former is initially determined + * by HW capabilities (see `ena_calc_max_io_queue_num())` but may not be + * achieved if there are not enough system resources. By default, the + * number of effectively used IO queues is the same but later on it can + * be limited by the user using sysctl interface. + */ rc = ena_enable_msix_and_set_admin_interrupts(adapter); if (unlikely(rc != 0)) { device_printf(pdev, "Failed to enable and set the admin interrupts\n"); goto err_io_free; } + /* By default all of allocated MSIX vectors are actively used */ + adapter->num_io_queues = adapter->msix_vecs - ENA_ADMIN_MSIX_VEC; + + /* initialize rings basic information */ + ena_init_io_rings(adapter); /* setup network interface */ rc = ena_setup_ifnet(pdev, adapter, &get_feat_ctx); From owner-svn-src-all@freebsd.org Tue May 26 15:57:04 2020 Return-Path: Delivered-To: svn-src-all@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 0C1512CC2BE; Tue, 26 May 2020 15:57:04 +0000 (UTC) (envelope-from mw@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49WdrH6cwVz4Qj0; Tue, 26 May 2020 15:57:03 +0000 (UTC) (envelope-from mw@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 D9CBF25C4B; Tue, 26 May 2020 15:57:03 +0000 (UTC) (envelope-from mw@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04QFv3u2076756; Tue, 26 May 2020 15:57:03 GMT (envelope-from mw@FreeBSD.org) Received: (from mw@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04QFv3PQ076753; Tue, 26 May 2020 15:57:03 GMT (envelope-from mw@FreeBSD.org) Message-Id: <202005261557.04QFv3PQ076753@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mw set sender to mw@FreeBSD.org using -f From: Marcin Wojtas Date: Tue, 26 May 2020 15:57:03 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361525 - head/sys/dev/ena X-SVN-Group: head X-SVN-Commit-Author: mw X-SVN-Commit-Paths: head/sys/dev/ena X-SVN-Commit-Revision: 361525 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2020 15:57:04 -0000 Author: mw Date: Tue May 26 15:57:02 2020 New Revision: 361525 URL: https://svnweb.freebsd.org/changeset/base/361525 Log: Add sysctl node for ENA IO queues number adjustment By default, in ena_attach() the driver attempts to acquire ena_adapter::max_num_io_queues MSI-X vectors for the purpose of IO queues, however this is not guaranteed. The number of vectors acquired depends also on system resources availability. Regardless of that, enable the number of effectively used IO queues to be further limited through the sysctl node. Example: Assumming that there are 8 IO queues configured by default, the command $ sysctl dev.ena.0.io_queues_nb=4 will reduce the number of available IO queues to 4. Similarly, the value can be also increased up to maximum supported value. A value higher than maximum supported number of IO queues is ignored. Zero is ignored too. Submitted by: Maciej Bielski Obtained from: Semihalf Sponsored by: Amazon, Inc. Modified: head/sys/dev/ena/ena.c head/sys/dev/ena/ena.h head/sys/dev/ena/ena_sysctl.c Modified: head/sys/dev/ena/ena.c ============================================================================== --- head/sys/dev/ena/ena.c Tue May 26 15:54:32 2020 (r361524) +++ head/sys/dev/ena/ena.c Tue May 26 15:57:02 2020 (r361525) @@ -1239,6 +1239,61 @@ ena_update_queue_size(struct ena_adapter *adapter, uin } static void +ena_update_io_rings(struct ena_adapter *adapter, uint32_t num) +{ + ena_free_all_io_rings_resources(adapter); + /* Force indirection table to be reinitialized */ + ena_com_rss_destroy(adapter->ena_dev); + + adapter->num_io_queues = num; + ena_init_io_rings(adapter); +} + +/* Caller should sanitize new_num */ +int +ena_update_io_queue_nb(struct ena_adapter *adapter, uint32_t new_num) +{ + uint32_t old_num; + int rc = 0; + bool dev_was_up; + + ENA_LOCK_LOCK(adapter); + + dev_was_up = ENA_FLAG_ISSET(ENA_FLAG_DEV_UP, adapter); + old_num = adapter->num_io_queues; + ena_down(adapter); + + ena_update_io_rings(adapter, new_num); + + if (dev_was_up) { + rc = ena_up(adapter); + if (unlikely(rc != 0)) { + device_printf(adapter->pdev, + "Failed to configure device with %u IO queues. " + "Reverting to previous value: %u\n", + new_num, old_num); + + ena_update_io_rings(adapter, old_num); + + rc = ena_up(adapter); + if (unlikely(rc != 0)) { + device_printf(adapter->pdev, + "Failed to revert to previous setup IO " + "queues. Triggering device reset.\n"); + ENA_FLAG_SET_ATOMIC( + ENA_FLAG_DEV_UP_BEFORE_RESET, adapter); + ena_trigger_reset(adapter, + ENA_REGS_RESET_OS_TRIGGER); + } + } + } + + ENA_LOCK_UNLOCK(adapter); + + return (rc); +} + +static void ena_free_rx_bufs(struct ena_adapter *adapter, unsigned int qid) { struct ena_ring *rx_ring = &adapter->rx_ring[qid]; @@ -1865,6 +1920,18 @@ ena_rss_configure(struct ena_adapter *adapter) struct ena_com_dev *ena_dev = adapter->ena_dev; int rc; + /* In case the RSS table was destroyed */ + if (!ena_dev->rss.tbl_log_size) { + rc = ena_rss_init_default(adapter); + if (unlikely((rc != 0) && (rc != EOPNOTSUPP))) { + device_printf(adapter->pdev, + "WARNING: RSS was not properly re-initialized," + " it will affect bandwidth\n"); + ENA_FLAG_CLEAR_ATOMIC(ENA_FLAG_RSS_ACTIVE, adapter); + return (rc); + } + } + /* Set indirect table */ rc = ena_com_indirect_table_set(ena_dev); if (unlikely((rc != 0) && (rc != EOPNOTSUPP))) @@ -1890,8 +1957,11 @@ ena_up_complete(struct ena_adapter *adapter) if (likely(ENA_FLAG_ISSET(ENA_FLAG_RSS_ACTIVE, adapter))) { rc = ena_rss_configure(adapter); - if (rc != 0) + if (rc != 0) { + device_printf(adapter->pdev, + "Failed to configure RSS\n"); return (rc); + } } rc = ena_change_mtu(adapter->ifp, adapter->ifp->if_mtu); Modified: head/sys/dev/ena/ena.h ============================================================================== --- head/sys/dev/ena/ena.h Tue May 26 15:54:32 2020 (r361524) +++ head/sys/dev/ena/ena.h Tue May 26 15:57:02 2020 (r361525) @@ -501,6 +501,7 @@ int ena_update_buf_ring_size(struct ena_adapter *adapt uint32_t new_buf_ring_size); int ena_update_queue_size(struct ena_adapter *adapter, uint32_t new_tx_size, uint32_t new_rx_size); +int ena_update_io_queue_nb(struct ena_adapter *adapter, uint32_t new_num); static inline void ena_trigger_reset(struct ena_adapter *adapter, Modified: head/sys/dev/ena/ena_sysctl.c ============================================================================== --- head/sys/dev/ena/ena_sysctl.c Tue May 26 15:54:32 2020 (r361524) +++ head/sys/dev/ena/ena_sysctl.c Tue May 26 15:57:02 2020 (r361525) @@ -37,6 +37,7 @@ static void ena_sysctl_add_stats(struct ena_adapter *) static void ena_sysctl_add_tuneables(struct ena_adapter *); static int ena_sysctl_buf_ring_size(SYSCTL_HANDLER_ARGS); static int ena_sysctl_rx_queue_size(SYSCTL_HANDLER_ARGS); +static int ena_sysctl_io_queues_nb(SYSCTL_HANDLER_ARGS); static SYSCTL_NODE(_hw, OID_AUTO, ena, CTLFLAG_RD | CTLFLAG_MPSAFE, 0, "ENA driver parameters"); @@ -316,6 +317,11 @@ ena_sysctl_add_tuneables(struct ena_adapter *adapter) CTLTYPE_U32 | CTLFLAG_RW | CTLFLAG_MPSAFE, adapter, 0, ena_sysctl_rx_queue_size, "I", "Size of the Rx ring. The size should be a power of 2."); + + /* Tuneable number of IO queues */ + SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "io_queues_nb", + CTLTYPE_U32 | CTLFLAG_RW | CTLFLAG_MPSAFE, adapter, 0, + ena_sysctl_io_queues_nb, "I", "Number of IO queues."); } @@ -399,6 +405,58 @@ ena_sysctl_rx_queue_size(SYSCTL_HANDLER_ARGS) device_printf(adapter->pdev, "New Rx queue size is the same as already used: %u\n", adapter->rx_ring_size); + } + + return (error); +} + +/* + * Change number of effectively used IO queues adapter->num_io_queues + */ +static int +ena_sysctl_io_queues_nb(SYSCTL_HANDLER_ARGS) +{ + struct ena_adapter *adapter = arg1; + uint32_t tmp = 0; + int error; + + error = sysctl_wire_old_buffer(req, sizeof(tmp)); + if (error == 0) { + tmp = adapter->num_io_queues; + error = sysctl_handle_int(oidp, &tmp, 0, req); + } + if (error != 0 || req->newptr == NULL) + return (error); + + if (tmp == 0) { + device_printf(adapter->pdev, + "Requested number of IO queues is zero\n"); + return (EINVAL); + } + + /* + * The adapter::max_num_io_queues is the HW capability. The system + * resources availability may potentially be a tighter limit. Therefore + * the relation `adapter::max_num_io_queues >= adapter::msix_vecs` + * always holds true, while the `adapter::msix_vecs` is variable across + * device reset (`ena_destroy_device()` + `ena_restore_device()`). + */ + if (tmp > (adapter->msix_vecs - ENA_ADMIN_MSIX_VEC)) { + device_printf(adapter->pdev, + "Requested number of IO queues is higher than maximum " + "allowed (%u)\n", adapter->msix_vecs - ENA_ADMIN_MSIX_VEC); + return (EINVAL); + } + if (tmp == adapter->num_io_queues) { + device_printf(adapter->pdev, + "Requested number of IO queues is equal to current value " + "(%u)\n", adapter->num_io_queues); + } else { + device_printf(adapter->pdev, + "Requested new number of IO queues: %u, current value: " + "%u\n", tmp, adapter->num_io_queues); + + error = ena_update_io_queue_nb(adapter, tmp); } return (error); From owner-svn-src-all@freebsd.org Tue May 26 15:58:49 2020 Return-Path: Delivered-To: svn-src-all@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 3B6192CC33C; Tue, 26 May 2020 15:58:49 +0000 (UTC) (envelope-from mw@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49WdtK0qdNz4Qgr; Tue, 26 May 2020 15:58:49 +0000 (UTC) (envelope-from mw@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 134BE25F18; Tue, 26 May 2020 15:58:49 +0000 (UTC) (envelope-from mw@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04QFwmVM076875; Tue, 26 May 2020 15:58:48 GMT (envelope-from mw@FreeBSD.org) Received: (from mw@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04QFwmr6076870; Tue, 26 May 2020 15:58:48 GMT (envelope-from mw@FreeBSD.org) Message-Id: <202005261558.04QFwmr6076870@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mw set sender to mw@FreeBSD.org using -f From: Marcin Wojtas Date: Tue, 26 May 2020 15:58:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361526 - head/sys/dev/ena X-SVN-Group: head X-SVN-Commit-Author: mw X-SVN-Commit-Paths: head/sys/dev/ena X-SVN-Commit-Revision: 361526 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2020 15:58:49 -0000 Author: mw Date: Tue May 26 15:58:48 2020 New Revision: 361526 URL: https://svnweb.freebsd.org/changeset/base/361526 Log: Create ENA IO queues with optional backoff If requested size of IO queues is not supported try to decrease it until finding the highest value that can be satisfied. Submitted by: Maciej Bielski Obtained from: Semihalf Sponsored by: Amazon, Inc. Modified: head/sys/dev/ena/ena.c head/sys/dev/ena/ena.h head/sys/dev/ena/ena_netmap.c head/sys/dev/ena/ena_sysctl.c Modified: head/sys/dev/ena/ena.c ============================================================================== --- head/sys/dev/ena/ena.c Tue May 26 15:57:02 2020 (r361525) +++ head/sys/dev/ena/ena.c Tue May 26 15:58:48 2020 (r361526) @@ -408,13 +408,9 @@ ena_init_io_rings_basic(struct ena_adapter *adapter) ena_init_io_rings_common(adapter, rxr, i); /* TX specific ring state */ - txr->ring_size = adapter->tx_ring_size; txr->tx_max_header_size = ena_dev->tx_max_header_size; txr->tx_mem_queue_type = ena_dev->tx_mem_queue_type; - /* RX specific ring state */ - rxr->ring_size = adapter->rx_ring_size; - que = &adapter->que[i]; que->adapter = adapter; que->id = i; @@ -1193,10 +1189,10 @@ ena_update_queue_size(struct ena_adapter *adapter, uin ENA_LOCK_LOCK(adapter); - old_tx_size = adapter->tx_ring_size; - old_rx_size = adapter->rx_ring_size; - adapter->tx_ring_size = new_tx_size; - adapter->rx_ring_size = new_rx_size; + old_tx_size = adapter->requested_tx_ring_size; + old_rx_size = adapter->requested_rx_ring_size; + adapter->requested_tx_ring_size = new_tx_size; + adapter->requested_rx_ring_size = new_rx_size; dev_was_up = ENA_FLAG_ISSET(ENA_FLAG_DEV_UP, adapter); ena_down(adapter); @@ -1211,8 +1207,8 @@ ena_update_queue_size(struct ena_adapter *adapter, uin new_tx_size, new_rx_size, old_tx_size, old_rx_size); /* Revert old size. */ - adapter->tx_ring_size = old_tx_size; - adapter->rx_ring_size = old_rx_size; + adapter->requested_tx_ring_size = old_tx_size; + adapter->requested_rx_ring_size = old_rx_size; ena_init_io_rings_basic(adapter); /* And try again. */ @@ -1455,7 +1451,7 @@ ena_create_io_queues(struct ena_adapter *adapter) ena_qid = ENA_IO_TXQ_IDX(i); ctx.mem_queue_type = ena_dev->tx_mem_queue_type; ctx.direction = ENA_COM_IO_QUEUE_DIRECTION_TX; - ctx.queue_size = adapter->tx_ring_size; + ctx.queue_size = adapter->requested_tx_ring_size; ctx.msix_vector = msix_vector; ctx.qid = ena_qid; rc = ena_com_create_io_queue(ena_dev, &ctx); @@ -1483,7 +1479,7 @@ ena_create_io_queues(struct ena_adapter *adapter) ena_qid = ENA_IO_RXQ_IDX(i); ctx.mem_queue_type = ENA_ADMIN_PLACEMENT_POLICY_HOST; ctx.direction = ENA_COM_IO_QUEUE_DIRECTION_RX; - ctx.queue_size = adapter->rx_ring_size; + ctx.queue_size = adapter->requested_rx_ring_size; ctx.msix_vector = msix_vector; ctx.qid = ena_qid; rc = ena_com_create_io_queue(ena_dev, &ctx); @@ -1975,6 +1971,104 @@ ena_up_complete(struct ena_adapter *adapter) return (0); } +static void +set_io_rings_size(struct ena_adapter *adapter, int new_tx_size, + int new_rx_size) +{ + int i; + + for (i = 0; i < adapter->num_io_queues; i++) { + adapter->tx_ring[i].ring_size = new_tx_size; + adapter->rx_ring[i].ring_size = new_rx_size; + } +} + +static int +create_queues_with_size_backoff(struct ena_adapter *adapter) +{ + int rc; + uint32_t cur_rx_ring_size, cur_tx_ring_size; + uint32_t new_rx_ring_size, new_tx_ring_size; + + /* + * Current queue sizes might be set to smaller than the requested + * ones due to past queue allocation failures. + */ + set_io_rings_size(adapter, adapter->requested_tx_ring_size, + adapter->requested_rx_ring_size); + + while (1) { + /* Allocate transmit descriptors */ + rc = ena_setup_all_tx_resources(adapter); + if (unlikely(rc != 0)) { + ena_trace(ENA_ALERT, "err_setup_tx\n"); + goto err_setup_tx; + } + + /* Allocate receive descriptors */ + rc = ena_setup_all_rx_resources(adapter); + if (unlikely(rc != 0)) { + ena_trace(ENA_ALERT, "err_setup_rx\n"); + goto err_setup_rx; + } + + /* Create IO queues for Rx & Tx */ + rc = ena_create_io_queues(adapter); + if (unlikely(rc != 0)) { + ena_trace(ENA_ALERT, + "create IO queues failed\n"); + goto err_io_que; + } + + return (0); + +err_io_que: + ena_free_all_rx_resources(adapter); +err_setup_rx: + ena_free_all_tx_resources(adapter); +err_setup_tx: + /* + * Lower the ring size if ENOMEM. Otherwise, return the + * error straightaway. + */ + if (unlikely(rc != ENOMEM)) { + ena_trace(ENA_ALERT, + "Queue creation failed with error code: %d\n", rc); + return (rc); + } + + cur_tx_ring_size = adapter->tx_ring[0].ring_size; + cur_rx_ring_size = adapter->rx_ring[0].ring_size; + + device_printf(adapter->pdev, + "Not enough memory to create queues with sizes TX=%d, RX=%d\n", + cur_tx_ring_size, cur_rx_ring_size); + + new_tx_ring_size = cur_tx_ring_size; + new_rx_ring_size = cur_rx_ring_size; + + /* + * Decrease the size of a larger queue, or decrease both if they are + * the same size. + */ + if (cur_rx_ring_size <= cur_tx_ring_size) + new_tx_ring_size = cur_tx_ring_size / 2; + if (cur_rx_ring_size >= cur_tx_ring_size) + new_rx_ring_size = cur_rx_ring_size / 2; + + if (new_tx_ring_size < ENA_MIN_RING_SIZE || + new_rx_ring_size < ENA_MIN_RING_SIZE) { + device_printf(adapter->pdev, + "Queue creation failed with the smallest possible queue size" + "of %d for both queues. Not retrying with smaller queues\n", + ENA_MIN_RING_SIZE); + return (rc); + } + + set_io_rings_size(adapter, new_tx_ring_size, new_rx_ring_size); + } +} + int ena_up(struct ena_adapter *adapter) { @@ -2003,33 +2097,19 @@ ena_up(struct ena_adapter *adapter) } device_printf(adapter->pdev, - "Creating %u IO queues. Rx queue size: %d, Tx queue size: %d, LLQ is %s\n", + "Creating %u IO queues. Rx queue size: %d, Tx queue size: %d, " + "LLQ is %s\n", adapter->num_io_queues, - adapter->rx_ring_size, - adapter->tx_ring_size, - (adapter->ena_dev->tx_mem_queue_type == ENA_ADMIN_PLACEMENT_POLICY_DEV) ? - "ENABLED" : "DISABLED"); + adapter->requested_rx_ring_size, + adapter->requested_tx_ring_size, + (adapter->ena_dev->tx_mem_queue_type == + ENA_ADMIN_PLACEMENT_POLICY_DEV) ? "ENABLED" : "DISABLED"); - /* allocate transmit descriptors */ - rc = ena_setup_all_tx_resources(adapter); + rc = create_queues_with_size_backoff(adapter); if (unlikely(rc != 0)) { - ena_trace(ENA_ALERT, "err_setup_tx\n"); - goto err_setup_tx; - } - - /* allocate receive descriptors */ - rc = ena_setup_all_rx_resources(adapter); - if (unlikely(rc != 0)) { - ena_trace(ENA_ALERT, "err_setup_rx\n"); - goto err_setup_rx; - } - - /* create IO queues for Rx & Tx */ - rc = ena_create_io_queues(adapter); - if (unlikely(rc != 0)) { ena_trace(ENA_ALERT, - "create IO queues failed\n"); - goto err_io_que; + "error creating queues with size backoff\n"); + goto err_create_queues_with_backoff; } if (ENA_FLAG_ISSET(ENA_FLAG_LINK_UP, adapter)) @@ -2063,11 +2143,9 @@ ena_up(struct ena_adapter *adapter) err_up_complete: ena_destroy_all_io_queues(adapter); -err_io_que: ena_free_all_rx_resources(adapter); -err_setup_rx: ena_free_all_tx_resources(adapter); -err_setup_tx: +err_create_queues_with_backoff: ena_free_io_irq(adapter); error: return (rc); @@ -2329,7 +2407,7 @@ ena_setup_ifnet(device_t pdev, struct ena_adapter *ada if_setioctlfn(ifp, ena_ioctl); if_setgetcounterfn(ifp, ena_get_counter); - if_setsendqlen(ifp, adapter->tx_ring_size); + if_setsendqlen(ifp, adapter->requested_tx_ring_size); if_setsendqready(ifp); if_setmtu(ifp, ETHERMTU); if_setbaudrate(ifp, 0); @@ -3461,8 +3539,8 @@ ena_attach(device_t pdev) goto err_com_free; } - adapter->tx_ring_size = calc_queue_ctx.tx_queue_size; - adapter->rx_ring_size = calc_queue_ctx.rx_queue_size; + adapter->requested_tx_ring_size = calc_queue_ctx.tx_queue_size; + adapter->requested_rx_ring_size = calc_queue_ctx.rx_queue_size; adapter->max_tx_ring_size = calc_queue_ctx.max_tx_queue_size; adapter->max_rx_ring_size = calc_queue_ctx.max_rx_queue_size; adapter->max_tx_sgl_size = calc_queue_ctx.max_tx_sgl_size; Modified: head/sys/dev/ena/ena.h ============================================================================== --- head/sys/dev/ena/ena.h Tue May 26 15:57:02 2020 (r361525) +++ head/sys/dev/ena/ena.h Tue May 26 15:58:48 2020 (r361526) @@ -415,8 +415,8 @@ struct ena_adapter { uint32_t num_io_queues; uint32_t max_num_io_queues; - uint32_t tx_ring_size; - uint32_t rx_ring_size; + uint32_t requested_tx_ring_size; + uint32_t requested_rx_ring_size; uint32_t max_tx_ring_size; uint32_t max_rx_ring_size; Modified: head/sys/dev/ena/ena_netmap.c ============================================================================== --- head/sys/dev/ena/ena_netmap.c Tue May 26 15:57:02 2020 (r361525) +++ head/sys/dev/ena/ena_netmap.c Tue May 26 15:58:48 2020 (r361526) @@ -93,8 +93,8 @@ ena_netmap_attach(struct ena_adapter *adapter) bzero(&na, sizeof(na)); na.na_flags = NAF_MOREFRAG; na.ifp = adapter->ifp; - na.num_tx_desc = adapter->tx_ring_size; - na.num_rx_desc = adapter->rx_ring_size; + na.num_tx_desc = adapter->requested_tx_ring_size; + na.num_rx_desc = adapter->requested_rx_ring_size; na.num_tx_rings = adapter->num_io_queues; na.num_rx_rings = adapter->num_io_queues; na.rx_buf_maxsize = adapter->buf_ring_size; Modified: head/sys/dev/ena/ena_sysctl.c ============================================================================== --- head/sys/dev/ena/ena_sysctl.c Tue May 26 15:57:02 2020 (r361525) +++ head/sys/dev/ena/ena_sysctl.c Tue May 26 15:58:48 2020 (r361526) @@ -373,7 +373,7 @@ ena_sysctl_rx_queue_size(SYSCTL_HANDLER_ARGS) val = 0; error = sysctl_wire_old_buffer(req, sizeof(val)); if (error == 0) { - val = adapter->rx_ring_size; + val = adapter->requested_rx_ring_size; error = sysctl_handle_32(oidp, &val, 0, req); } if (error != 0 || req->newptr == NULL) @@ -394,17 +394,17 @@ ena_sysctl_rx_queue_size(SYSCTL_HANDLER_ARGS) return (EINVAL); } - if (val != adapter->rx_ring_size) { + if (val != adapter->requested_rx_ring_size) { device_printf(adapter->pdev, "Requested new Rx queue size: %u. Old size: %u\n", - val, adapter->rx_ring_size); + val, adapter->requested_rx_ring_size); - error = ena_update_queue_size(adapter, adapter->tx_ring_size, - val); + error = ena_update_queue_size(adapter, + adapter->requested_tx_ring_size, val); } else { device_printf(adapter->pdev, "New Rx queue size is the same as already used: %u\n", - adapter->rx_ring_size); + adapter->requested_rx_ring_size); } return (error); From owner-svn-src-all@freebsd.org Tue May 26 16:00:32 2020 Return-Path: Delivered-To: svn-src-all@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 003EB2CC4BA; Tue, 26 May 2020 16:00:32 +0000 (UTC) (envelope-from mw@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49WdwH6D0Kz4R3N; Tue, 26 May 2020 16:00:31 +0000 (UTC) (envelope-from mw@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 D0B1826042; Tue, 26 May 2020 16:00:31 +0000 (UTC) (envelope-from mw@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04QG0Ve6077075; Tue, 26 May 2020 16:00:31 GMT (envelope-from mw@FreeBSD.org) Received: (from mw@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04QG0VjQ077072; Tue, 26 May 2020 16:00:31 GMT (envelope-from mw@FreeBSD.org) Message-Id: <202005261600.04QG0VjQ077072@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mw set sender to mw@FreeBSD.org using -f From: Marcin Wojtas Date: Tue, 26 May 2020 16:00:31 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361527 - head/sys/dev/ena X-SVN-Group: head X-SVN-Commit-Author: mw X-SVN-Commit-Paths: head/sys/dev/ena X-SVN-Commit-Revision: 361527 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2020 16:00:32 -0000 Author: mw Date: Tue May 26 16:00:30 2020 New Revision: 361527 URL: https://svnweb.freebsd.org/changeset/base/361527 Log: Allow disabling meta caching for ENA Tx path Determined by a flag passed from the device. No metadata is set within ena_tx_csum when caching is disabled. Submitted by: Maciej Bielski Obtained from: Semihalf Sponsored by: Amazon, Inc. Modified: head/sys/dev/ena/ena.c head/sys/dev/ena/ena.h head/sys/dev/ena/ena_datapath.c Modified: head/sys/dev/ena/ena.c ============================================================================== --- head/sys/dev/ena/ena.c Tue May 26 15:58:48 2020 (r361526) +++ head/sys/dev/ena/ena.c Tue May 26 16:00:30 2020 (r361527) @@ -3519,6 +3519,11 @@ ena_attach(device_t pdev) goto err_com_free; } + if (ena_dev->tx_mem_queue_type == ENA_ADMIN_PLACEMENT_POLICY_DEV) + adapter->disable_meta_caching = + !!(get_feat_ctx.llq.accel_mode.u.get.supported_flags & + BIT(ENA_ADMIN_DISABLE_META_CACHING)); + adapter->keep_alive_timestamp = getsbinuptime(); adapter->tx_offload_cap = get_feat_ctx.offload.tx; Modified: head/sys/dev/ena/ena.h ============================================================================== --- head/sys/dev/ena/ena.h Tue May 26 15:58:48 2020 (r361526) +++ head/sys/dev/ena/ena.h Tue May 26 16:00:30 2020 (r361527) @@ -461,6 +461,7 @@ struct ena_adapter { sbintime_t missing_tx_timeout; uint32_t missing_tx_max_queues; uint32_t missing_tx_threshold; + bool disable_meta_caching; /* Statistics */ struct ena_stats_dev dev_stats; Modified: head/sys/dev/ena/ena_datapath.c ============================================================================== --- head/sys/dev/ena/ena_datapath.c Tue May 26 15:58:48 2020 (r361526) +++ head/sys/dev/ena/ena_datapath.c Tue May 26 16:00:30 2020 (r361527) @@ -49,7 +49,7 @@ static struct mbuf* ena_rx_mbuf(struct ena_ring *, str struct ena_com_rx_ctx *, uint16_t *); static inline void ena_rx_checksum(struct ena_ring *, struct ena_com_rx_ctx *, struct mbuf *); -static void ena_tx_csum(struct ena_com_tx_ctx *, struct mbuf *); +static void ena_tx_csum(struct ena_com_tx_ctx *, struct mbuf *, bool); static int ena_check_and_collapse_mbuf(struct ena_ring *tx_ring, struct mbuf **mbuf); static int ena_xmit_mbuf(struct ena_ring *, struct mbuf **); @@ -675,7 +675,8 @@ error: } static void -ena_tx_csum(struct ena_com_tx_ctx *ena_tx_ctx, struct mbuf *mbuf) +ena_tx_csum(struct ena_com_tx_ctx *ena_tx_ctx, struct mbuf *mbuf, + bool disable_meta_caching) { struct ena_com_tx_meta *ena_meta; struct ether_vlan_header *eh; @@ -703,7 +704,12 @@ ena_tx_csum(struct ena_com_tx_ctx *ena_tx_ctx, struct offload = true; if (!offload) { - ena_tx_ctx->meta_valid = 0; + if (disable_meta_caching) { + memset(ena_meta, 0, sizeof(*ena_meta)); + ena_tx_ctx->meta_valid = 1; + } else { + ena_tx_ctx->meta_valid = 0; + } return; } @@ -989,7 +995,7 @@ ena_xmit_mbuf(struct ena_ring *tx_ring, struct mbuf ** ena_tx_ctx.header_len = header_len; /* Set flags and meta data */ - ena_tx_csum(&ena_tx_ctx, *mbuf); + ena_tx_csum(&ena_tx_ctx, *mbuf, adapter->disable_meta_caching); if (tx_ring->acum_pkts == DB_THRESHOLD || ena_com_is_doorbell_needed(tx_ring->ena_com_io_sq, &ena_tx_ctx)) { From owner-svn-src-all@freebsd.org Tue May 26 16:02:11 2020 Return-Path: Delivered-To: svn-src-all@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 5920A2CC1BB; Tue, 26 May 2020 16:02:11 +0000 (UTC) (envelope-from mw@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49WdyC1jzBz4RBK; Tue, 26 May 2020 16:02:11 +0000 (UTC) (envelope-from mw@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 365F0260B6; Tue, 26 May 2020 16:02:11 +0000 (UTC) (envelope-from mw@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04QG2Bjg081958; Tue, 26 May 2020 16:02:11 GMT (envelope-from mw@FreeBSD.org) Received: (from mw@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04QG2Bwg081957; Tue, 26 May 2020 16:02:11 GMT (envelope-from mw@FreeBSD.org) Message-Id: <202005261602.04QG2Bwg081957@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mw set sender to mw@FreeBSD.org using -f From: Marcin Wojtas Date: Tue, 26 May 2020 16:02:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361528 - head/sys/dev/ena X-SVN-Group: head X-SVN-Commit-Author: mw X-SVN-Commit-Paths: head/sys/dev/ena X-SVN-Commit-Revision: 361528 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2020 16:02:11 -0000 Author: mw Date: Tue May 26 16:02:10 2020 New Revision: 361528 URL: https://svnweb.freebsd.org/changeset/base/361528 Log: Fix double-free bug within ena_detach() There is ena_free_all_io_rings_resources() called twice on device detach: ena_detach(): ena_destroy_device(): /* First call */ ena_free_all_io_rings_resources() /* Second call */ ena_free_all_io_rings_resources() The double-free causes panic() on kldunload, for example. As the ena_destroy_device() is also called by ena_reset_task() it is better to stay unchanged. Thus, remove the "Second call" of the function. Submitted by: Maciej Bielski Obtained from: Semihalf Sponsored by: Amazon, Inc. Modified: head/sys/dev/ena/ena.c Modified: head/sys/dev/ena/ena.c ============================================================================== --- head/sys/dev/ena/ena.c Tue May 26 16:00:30 2020 (r361527) +++ head/sys/dev/ena/ena.c Tue May 26 16:02:10 2020 (r361528) @@ -3695,8 +3695,6 @@ ena_detach(device_t pdev) netmap_detach(adapter->ifp); #endif /* DEV_NETMAP */ - ena_free_all_io_rings_resources(adapter); - ena_free_counters((counter_u64_t *)&adapter->hw_stats, sizeof(struct ena_hw_stats)); ena_free_counters((counter_u64_t *)&adapter->dev_stats, From owner-svn-src-all@freebsd.org Tue May 26 16:05:42 2020 Return-Path: Delivered-To: svn-src-all@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 9C7262CC3FA; Tue, 26 May 2020 16:05:42 +0000 (UTC) (envelope-from mw@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49Wf2G3hGxz4RYH; Tue, 26 May 2020 16:05:42 +0000 (UTC) (envelope-from mw@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 79B19260BD; Tue, 26 May 2020 16:05:42 +0000 (UTC) (envelope-from mw@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04QG5gv6083144; Tue, 26 May 2020 16:05:42 GMT (envelope-from mw@FreeBSD.org) Received: (from mw@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04QG5g10083143; Tue, 26 May 2020 16:05:42 GMT (envelope-from mw@FreeBSD.org) Message-Id: <202005261605.04QG5g10083143@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mw set sender to mw@FreeBSD.org using -f From: Marcin Wojtas Date: Tue, 26 May 2020 16:05:42 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361529 - head/sys/dev/ena X-SVN-Group: head X-SVN-Commit-Author: mw X-SVN-Commit-Paths: head/sys/dev/ena X-SVN-Commit-Revision: 361529 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2020 16:05:42 -0000 Author: mw Date: Tue May 26 16:05:42 2020 New Revision: 361529 URL: https://svnweb.freebsd.org/changeset/base/361529 Log: Refactor ena_tx_map_mbuf() function There is no guarantee from bus_dmamap_load_mbuf_sg() for matching mbuf chain segments to dma physical segments. This patch ensure correctly mapping to LLQ header and DMA segments. Submitted by: Ido Segev Obtained from: Amazon, Inc. Modified: head/sys/dev/ena/ena_datapath.c Modified: head/sys/dev/ena/ena_datapath.c ============================================================================== --- head/sys/dev/ena/ena_datapath.c Tue May 26 16:02:10 2020 (r361528) +++ head/sys/dev/ena/ena_datapath.c Tue May 26 16:05:42 2020 (r361529) @@ -812,9 +812,8 @@ ena_tx_map_mbuf(struct ena_ring *tx_ring, struct ena_t struct ena_com_buf *ena_buf; bus_dma_segment_t segs[ENA_BUS_DMA_SEGS]; size_t iseg = 0; - uint32_t mbuf_head_len, frag_len; - uint16_t push_len = 0; - uint16_t delta = 0; + uint32_t mbuf_head_len; + uint16_t offset; int rc, nsegs; mbuf_head_len = mbuf->m_len; @@ -833,7 +832,6 @@ ena_tx_map_mbuf(struct ena_ring *tx_ring, struct ena_t goto dma_error; } - if (tx_ring->tx_mem_queue_type == ENA_ADMIN_PLACEMENT_POLICY_DEV) { /* * When the device is LLQ mode, the driver will copy @@ -845,44 +843,48 @@ ena_tx_map_mbuf(struct ena_ring *tx_ring, struct ena_t * First check if header fits in the mbuf. If not, copy it to * separate buffer that will be holding linearized data. */ - push_len = min_t(uint32_t, mbuf->m_pkthdr.len, - tx_ring->tx_max_header_size); - *header_len = push_len; + *header_len = min_t(uint32_t, mbuf->m_pkthdr.len, tx_ring->tx_max_header_size); + /* If header is in linear space, just point into mbuf's data. */ - if (likely(push_len <= mbuf_head_len)) { + if (likely(*header_len <= mbuf_head_len)) { *push_hdr = mbuf->m_data; /* * Otherwise, copy whole portion of header from multiple mbufs * to intermediate buffer. */ } else { - m_copydata(mbuf, 0, push_len, - tx_ring->push_buf_intermediate_buf); + m_copydata(mbuf, 0, *header_len, tx_ring->push_buf_intermediate_buf); *push_hdr = tx_ring->push_buf_intermediate_buf; counter_u64_add(tx_ring->tx_stats.llq_buffer_copy, 1); - delta = push_len - mbuf_head_len; } ena_trace(ENA_DBG | ENA_TXPTH, "mbuf: %p header_buf->vaddr: %p push_len: %d\n", - mbuf, *push_hdr, push_len); + mbuf, *push_hdr, *header_len); - /* - * If header was in linear memory space, map for the dma rest of the data - * in the first mbuf of the mbuf chain. - */ - if (mbuf_head_len > push_len) { - ena_buf->paddr = segs[iseg].ds_addr + push_len; - ena_buf->len = segs[iseg].ds_len - push_len; - ena_buf++; - tx_info->num_of_bufs++; + /* If packet is fitted in LLQ header, no need for DMA segments. */ + if (mbuf->m_pkthdr.len <= tx_ring->tx_max_header_size) { + return (0); + } else { + offset = tx_ring->tx_max_header_size; + /* + * As Header part is mapped to LLQ header, we can skip it and just + * map the residuum of the mbuf to DMA Segments. + */ + while (offset > 0) { + if (offset >= segs[iseg].ds_len) { + offset -= segs[iseg].ds_len; + } else { + ena_buf->paddr = segs[iseg].ds_addr + offset; + ena_buf->len = segs[iseg].ds_len - offset; + ena_buf++; + tx_info->num_of_bufs++; + offset = 0; + } + iseg++; + } } - /* - * Advance the seg index as either the 1st mbuf was mapped or is - * a part of push_hdr. - */ - iseg++; } else { *push_hdr = NULL; /* @@ -893,41 +895,6 @@ ena_tx_map_mbuf(struct ena_ring *tx_ring, struct ena_t * header on it's own. */ *header_len = 0; - } - - /* - * If header is in non linear space (delta > 0), then skip mbufs - * containing header and map the last one containing both header and the - * packet data. - * The first segment is already counted in. - * If LLQ is not supported, the loop will be skipped. - */ - while (delta > 0) { - frag_len = segs[iseg].ds_len; - - /* - * If whole segment contains header just move to the - * next one and reduce delta. - */ - if (unlikely(delta >= frag_len)) { - delta -= frag_len; - } else { - /* - * Map rest of the packet data that was contained in - * the mbuf. - */ - ena_buf->paddr = segs[iseg].ds_addr + delta; - ena_buf->len = frag_len - delta; - ena_buf++; - tx_info->num_of_bufs++; - - delta = 0; - } - iseg++; - } - - if (mbuf == NULL) { - return (0); } /* Map rest of the mbuf */ From owner-svn-src-all@freebsd.org Tue May 26 16:11:48 2020 Return-Path: Delivered-To: svn-src-all@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 AD8382CC479; Tue, 26 May 2020 16:11:48 +0000 (UTC) (envelope-from mw@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49Wf9J4Bcqz4SFW; Tue, 26 May 2020 16:11:48 +0000 (UTC) (envelope-from mw@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 8B1B026310; Tue, 26 May 2020 16:11:48 +0000 (UTC) (envelope-from mw@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04QGBmH0085203; Tue, 26 May 2020 16:11:48 GMT (envelope-from mw@FreeBSD.org) Received: (from mw@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04QGBlHb085195; Tue, 26 May 2020 16:11:47 GMT (envelope-from mw@FreeBSD.org) Message-Id: <202005261611.04QGBlHb085195@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mw set sender to mw@FreeBSD.org using -f From: Marcin Wojtas Date: Tue, 26 May 2020 16:11:47 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361530 - head/sys/dev/ena X-SVN-Group: head X-SVN-Commit-Author: mw X-SVN-Commit-Paths: head/sys/dev/ena X-SVN-Commit-Revision: 361530 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2020 16:11:48 -0000 Author: mw Date: Tue May 26 16:11:46 2020 New Revision: 361530 URL: https://svnweb.freebsd.org/changeset/base/361530 Log: Update ENA driver version to v2.2.0 Driver version upgrade is connected with support for the new device fetures, like Tx drops reporting or disabling meta caching. Moreover, the driver configuration from the sysctl was reworked to provide safer and better flow for configuring: * number of IO queues (new feature), * drbr size on Tx, * Rx queue size. Moreover, a lot of minor bug fixes and improvements were added. Copyright date in the license of the modified files in this release was updated to 2020. Submitted by: Michal Krawczyk Obtained from: Semihalf Sponsored by: Amazon, Inc. Modified: head/sys/dev/ena/ena.c head/sys/dev/ena/ena.h head/sys/dev/ena/ena_datapath.c head/sys/dev/ena/ena_datapath.h head/sys/dev/ena/ena_netmap.c head/sys/dev/ena/ena_netmap.h head/sys/dev/ena/ena_sysctl.c head/sys/dev/ena/ena_sysctl.h Modified: head/sys/dev/ena/ena.c ============================================================================== --- head/sys/dev/ena/ena.c Tue May 26 16:05:42 2020 (r361529) +++ head/sys/dev/ena/ena.c Tue May 26 16:11:46 2020 (r361530) @@ -1,7 +1,7 @@ /*- * BSD LICENSE * - * Copyright (c) 2015-2019 Amazon.com, Inc. or its affiliates. + * Copyright (c) 2015-2020 Amazon.com, Inc. or its affiliates. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: head/sys/dev/ena/ena.h ============================================================================== --- head/sys/dev/ena/ena.h Tue May 26 16:05:42 2020 (r361529) +++ head/sys/dev/ena/ena.h Tue May 26 16:11:46 2020 (r361530) @@ -1,7 +1,7 @@ /*- * BSD LICENSE * - * Copyright (c) 2015-2019 Amazon.com, Inc. or its affiliates. + * Copyright (c) 2015-2020 Amazon.com, Inc. or its affiliates. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -40,8 +40,8 @@ #include "ena-com/ena_eth_com.h" #define DRV_MODULE_VER_MAJOR 2 -#define DRV_MODULE_VER_MINOR 1 -#define DRV_MODULE_VER_SUBMINOR 2 +#define DRV_MODULE_VER_MINOR 2 +#define DRV_MODULE_VER_SUBMINOR 0 #define DRV_MODULE_NAME "ena" Modified: head/sys/dev/ena/ena_datapath.c ============================================================================== --- head/sys/dev/ena/ena_datapath.c Tue May 26 16:05:42 2020 (r361529) +++ head/sys/dev/ena/ena_datapath.c Tue May 26 16:11:46 2020 (r361530) @@ -1,7 +1,7 @@ /*- * BSD LICENSE * - * Copyright (c) 2015-2019 Amazon.com, Inc. or its affiliates. + * Copyright (c) 2015-2020 Amazon.com, Inc. or its affiliates. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: head/sys/dev/ena/ena_datapath.h ============================================================================== --- head/sys/dev/ena/ena_datapath.h Tue May 26 16:05:42 2020 (r361529) +++ head/sys/dev/ena/ena_datapath.h Tue May 26 16:11:46 2020 (r361530) @@ -1,7 +1,7 @@ /*- * BSD LICENSE * - * Copyright (c) 2015-2019 Amazon.com, Inc. or its affiliates. + * Copyright (c) 2015-2020 Amazon.com, Inc. or its affiliates. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: head/sys/dev/ena/ena_netmap.c ============================================================================== --- head/sys/dev/ena/ena_netmap.c Tue May 26 16:05:42 2020 (r361529) +++ head/sys/dev/ena/ena_netmap.c Tue May 26 16:11:46 2020 (r361530) @@ -1,7 +1,7 @@ /*- * BSD LICENSE * - * Copyright (c) 2015-2019 Amazon.com, Inc. or its affiliates. + * Copyright (c) 2015-2020 Amazon.com, Inc. or its affiliates. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: head/sys/dev/ena/ena_netmap.h ============================================================================== --- head/sys/dev/ena/ena_netmap.h Tue May 26 16:05:42 2020 (r361529) +++ head/sys/dev/ena/ena_netmap.h Tue May 26 16:11:46 2020 (r361530) @@ -1,7 +1,7 @@ /*- * BSD LICENSE * - * Copyright (c) 2015-2019 Amazon.com, Inc. or its affiliates. + * Copyright (c) 2015-2020 Amazon.com, Inc. or its affiliates. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: head/sys/dev/ena/ena_sysctl.c ============================================================================== --- head/sys/dev/ena/ena_sysctl.c Tue May 26 16:05:42 2020 (r361529) +++ head/sys/dev/ena/ena_sysctl.c Tue May 26 16:11:46 2020 (r361530) @@ -1,7 +1,7 @@ /*- * BSD LICENSE * - * Copyright (c) 2015-2019 Amazon.com, Inc. or its affiliates. + * Copyright (c) 2015-2020 Amazon.com, Inc. or its affiliates. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: head/sys/dev/ena/ena_sysctl.h ============================================================================== --- head/sys/dev/ena/ena_sysctl.h Tue May 26 16:05:42 2020 (r361529) +++ head/sys/dev/ena/ena_sysctl.h Tue May 26 16:11:46 2020 (r361530) @@ -1,7 +1,7 @@ /*- * BSD LICENSE * - * Copyright (c) 2015-2019 Amazon.com, Inc. or its affiliates. + * Copyright (c) 2015-2020 Amazon.com, Inc. or its affiliates. * All rights reserved. * * Redistribution and use in source and binary forms, with or without From owner-svn-src-all@freebsd.org Tue May 26 16:14:22 2020 Return-Path: Delivered-To: svn-src-all@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 A8CC92CCB1F; Tue, 26 May 2020 16:14:22 +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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49WfDG3WYKz4SZd; Tue, 26 May 2020 16:14:22 +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 6FA6A260E3; Tue, 26 May 2020 16:14:22 +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 04QGEM6D089289; Tue, 26 May 2020 16:14:22 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04QGELTn089287; Tue, 26 May 2020 16:14:21 GMT (envelope-from dim@FreeBSD.org) Message-Id: <202005261614.04QGELTn089287@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Tue, 26 May 2020 16:14:21 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-releng@freebsd.org Subject: svn commit: r361531 - in releng/11.4/lib/clang/include: clang/Config llvm/Config X-SVN-Group: releng X-SVN-Commit-Author: dim X-SVN-Commit-Paths: in releng/11.4/lib/clang/include: clang/Config llvm/Config X-SVN-Commit-Revision: 361531 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2020 16:14:22 -0000 Author: dim Date: Tue May 26 16:14:21 2020 New Revision: 361531 URL: https://svnweb.freebsd.org/changeset/base/361531 Log: MF11 r361465: Regenerate llvm config headers to correctly enable zlib support During the initial upgrade to 10.0.0 in r357120, I generated these headers once, but they were missing zlib-related settings at that time. These should have been regenerated again during the merge of the final 10.0.0 release. Direct commit to stable/{11,12}, since head has gotten 10.0.1 in the mean time, with up-to-date generated headers. Approved by: re (gjb) Reported by: hyama99@gmail.com PR: 246244 Modified: releng/11.4/lib/clang/include/clang/Config/config.h releng/11.4/lib/clang/include/llvm/Config/config.h releng/11.4/lib/clang/include/llvm/Config/llvm-config.h Directory Properties: releng/11.4/ (props changed) Modified: releng/11.4/lib/clang/include/clang/Config/config.h ============================================================================== --- releng/11.4/lib/clang/include/clang/Config/config.h Tue May 26 16:11:46 2020 (r361530) +++ releng/11.4/lib/clang/include/clang/Config/config.h Tue May 26 16:14:21 2020 (r361531) @@ -62,7 +62,7 @@ #define CLANG_HAVE_RLIMITS 1 /* The LLVM product name and version */ -#define BACKEND_PACKAGE_STRING "LLVM 10.0.0git" +#define BACKEND_PACKAGE_STRING "LLVM 10.0.0" /* Linker version detected at compile time. */ /* #undef HOST_LINK_VERSION */ Modified: releng/11.4/lib/clang/include/llvm/Config/config.h ============================================================================== --- releng/11.4/lib/clang/include/llvm/Config/config.h Tue May 26 16:11:46 2020 (r361530) +++ releng/11.4/lib/clang/include/llvm/Config/config.h Tue May 26 16:14:21 2020 (r361531) @@ -110,6 +110,9 @@ /* Define to 1 if you have the `pthread_setname_np' function. */ /* #undef HAVE_PTHREAD_SETNAME_NP */ +/* Define to 1 if you have the `z' library (-lz). */ +#define HAVE_LIBZ 1 + /* Define to 1 if you have the header file. */ #define HAVE_LINK_H 1 @@ -224,6 +227,9 @@ /* Define to 1 if you have the header file. */ /* #undef HAVE_VALGRIND_VALGRIND_H */ +/* Define to 1 if you have the header file. */ +#define HAVE_ZLIB_H 1 + /* Have host's _alloca */ /* #undef HAVE__ALLOCA */ @@ -316,10 +322,10 @@ #define PACKAGE_NAME "LLVM" /* Define to the full name and version of this package. */ -#define PACKAGE_STRING "LLVM 10.0.0git" +#define PACKAGE_STRING "LLVM 10.0.0" /* Define to the version of this package. */ -#define PACKAGE_VERSION "10.0.0git" +#define PACKAGE_VERSION "10.0.0" /* Define to the vendor of this package. */ /* #undef PACKAGE_VENDOR */ Modified: releng/11.4/lib/clang/include/llvm/Config/llvm-config.h ============================================================================== --- releng/11.4/lib/clang/include/llvm/Config/llvm-config.h Tue May 26 16:11:46 2020 (r361530) +++ releng/11.4/lib/clang/include/llvm/Config/llvm-config.h Tue May 26 16:14:21 2020 (r361531) @@ -73,7 +73,7 @@ #define LLVM_VERSION_PATCH 0 /* LLVM version string */ -#define LLVM_VERSION_STRING "10.0.0git" +#define LLVM_VERSION_STRING "10.0.0" /* Whether LLVM records statistics for use with GetStatistics(), * PrintStatistics() or PrintStatisticsJSON() From owner-svn-src-all@freebsd.org Tue May 26 16:40:41 2020 Return-Path: Delivered-To: svn-src-all@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 7B6DD2CD6B2; Tue, 26 May 2020 16:40:41 +0000 (UTC) (envelope-from br@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49Wfpd2n3xz4VHj; Tue, 26 May 2020 16:40:41 +0000 (UTC) (envelope-from br@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 415A4267F7; Tue, 26 May 2020 16:40:41 +0000 (UTC) (envelope-from br@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04QGefdk004020; Tue, 26 May 2020 16:40:41 GMT (envelope-from br@FreeBSD.org) Received: (from br@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04QGeeQ9003813; Tue, 26 May 2020 16:40:40 GMT (envelope-from br@FreeBSD.org) Message-Id: <202005261640.04QGeeQ9003813@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: br set sender to br@FreeBSD.org using -f From: Ruslan Bukin Date: Tue, 26 May 2020 16:40:40 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361532 - in head/sys: dev/acpica dev/pci x86/iommu X-SVN-Group: head X-SVN-Commit-Author: br X-SVN-Commit-Paths: in head/sys: dev/acpica dev/pci x86/iommu X-SVN-Commit-Revision: 361532 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2020 16:40:41 -0000 Author: br Date: Tue May 26 16:40:40 2020 New Revision: 361532 URL: https://svnweb.freebsd.org/changeset/base/361532 Log: Rename dmar_get_dma_tag() to acpi_iommu_get_dma_tag(). This is needed for a new IOMMU controller support. Reviewed by: kib Differential Revision: https://reviews.freebsd.org/D24943 Modified: head/sys/dev/acpica/acpi_pci.c head/sys/dev/pci/pci.c head/sys/x86/iommu/busdma_dmar.c head/sys/x86/iommu/busdma_dmar.h Modified: head/sys/dev/acpica/acpi_pci.c ============================================================================== --- head/sys/dev/acpica/acpi_pci.c Tue May 26 16:14:21 2020 (r361531) +++ head/sys/dev/acpica/acpi_pci.c Tue May 26 16:40:40 2020 (r361532) @@ -456,15 +456,15 @@ acpi_pci_detach(device_t dev) } #ifdef ACPI_DMAR -bus_dma_tag_t dmar_get_dma_tag(device_t dev, device_t child); +bus_dma_tag_t acpi_iommu_get_dma_tag(device_t dev, device_t child); static bus_dma_tag_t acpi_pci_get_dma_tag(device_t bus, device_t child) { bus_dma_tag_t tag; if (device_get_parent(child) == bus) { - /* try dmar and return if it works */ - tag = dmar_get_dma_tag(bus, child); + /* try iommu and return if it works */ + tag = acpi_iommu_get_dma_tag(bus, child); } else tag = NULL; if (tag == NULL) Modified: head/sys/dev/pci/pci.c ============================================================================== --- head/sys/dev/pci/pci.c Tue May 26 16:14:21 2020 (r361531) +++ head/sys/dev/pci/pci.c Tue May 26 16:40:40 2020 (r361532) @@ -5682,7 +5682,7 @@ pci_get_resource_list (device_t dev, device_t child) } #ifdef ACPI_DMAR -bus_dma_tag_t dmar_get_dma_tag(device_t dev, device_t child); +bus_dma_tag_t acpi_iommu_get_dma_tag(device_t dev, device_t child); bus_dma_tag_t pci_get_dma_tag(device_t bus, device_t dev) { @@ -5690,8 +5690,8 @@ pci_get_dma_tag(device_t bus, device_t dev) struct pci_softc *sc; if (device_get_parent(dev) == bus) { - /* try dmar and return if it works */ - tag = dmar_get_dma_tag(bus, dev); + /* try iommu and return if it works */ + tag = acpi_iommu_get_dma_tag(bus, dev); } else tag = NULL; if (tag == NULL) { Modified: head/sys/x86/iommu/busdma_dmar.c ============================================================================== --- head/sys/x86/iommu/busdma_dmar.c Tue May 26 16:14:21 2020 (r361531) +++ head/sys/x86/iommu/busdma_dmar.c Tue May 26 16:40:40 2020 (r361532) @@ -269,7 +269,7 @@ dmar_instantiate_ctx(struct dmar_unit *dmar, device_t } bus_dma_tag_t -dmar_get_dma_tag(device_t dev, device_t child) +acpi_iommu_get_dma_tag(device_t dev, device_t child) { struct dmar_unit *dmar; struct dmar_ctx *ctx; Modified: head/sys/x86/iommu/busdma_dmar.h ============================================================================== --- head/sys/x86/iommu/busdma_dmar.h Tue May 26 16:14:21 2020 (r361531) +++ head/sys/x86/iommu/busdma_dmar.h Tue May 26 16:40:40 2020 (r361532) @@ -62,6 +62,6 @@ struct bus_dmamap_dmar { extern struct bus_dma_impl bus_dma_dmar_impl; -bus_dma_tag_t dmar_get_dma_tag(device_t dev, device_t child); +bus_dma_tag_t acpi_iommu_get_dma_tag(device_t dev, device_t child); #endif From owner-svn-src-all@freebsd.org Tue May 26 16:44:05 2020 Return-Path: Delivered-To: svn-src-all@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 C33E12CD862; Tue, 26 May 2020 16:44:05 +0000 (UTC) (envelope-from br@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49WftY4sgpz4WDm; Tue, 26 May 2020 16:44:05 +0000 (UTC) (envelope-from br@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 A26B3265DB; Tue, 26 May 2020 16:44:05 +0000 (UTC) (envelope-from br@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04QGi5oY008279; Tue, 26 May 2020 16:44:05 GMT (envelope-from br@FreeBSD.org) Received: (from br@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04QGi5Lt008277; Tue, 26 May 2020 16:44:05 GMT (envelope-from br@FreeBSD.org) Message-Id: <202005261644.04QGi5Lt008277@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: br set sender to br@FreeBSD.org using -f From: Ruslan Bukin Date: Tue, 26 May 2020 16:44:05 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361533 - in head/sys: cddl/dev/dtrace/riscv riscv/riscv X-SVN-Group: head X-SVN-Commit-Author: br X-SVN-Commit-Paths: in head/sys: cddl/dev/dtrace/riscv riscv/riscv X-SVN-Commit-Revision: 361533 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2020 16:44:05 -0000 Author: br Date: Tue May 26 16:44:05 2020 New Revision: 361533 URL: https://svnweb.freebsd.org/changeset/base/361533 Log: Fix entering KDB with dtrace-enabled kernel. Reviewed by: markj, jhb Differential Revision: https://reviews.freebsd.org/D24018 Modified: head/sys/cddl/dev/dtrace/riscv/dtrace_subr.c head/sys/riscv/riscv/trap.c Modified: head/sys/cddl/dev/dtrace/riscv/dtrace_subr.c ============================================================================== --- head/sys/cddl/dev/dtrace/riscv/dtrace_subr.c Tue May 26 16:40:40 2020 (r361532) +++ head/sys/cddl/dev/dtrace/riscv/dtrace_subr.c Tue May 26 16:44:05 2020 (r361533) @@ -255,6 +255,8 @@ dtrace_invop_start(struct trapframe *frame) int invop; invop = dtrace_invop(frame->tf_sepc, frame, frame->tf_sepc); + if (invop == 0) + return (-1); if (match_opcode(invop, (MATCH_SD | RS2_RA | RS1_SP), (MASK_SD | RS2_MASK | RS1_MASK))) { @@ -291,6 +293,10 @@ dtrace_invop_start(struct trapframe *frame) frame->tf_sepc = frame->tf_ra; return (0); } + +#ifdef INVARIANTS + panic("Instruction %x doesn't match any opcode.", invop); +#endif return (-1); } Modified: head/sys/riscv/riscv/trap.c ============================================================================== --- head/sys/riscv/riscv/trap.c Tue May 26 16:40:40 2020 (r361532) +++ head/sys/riscv/riscv/trap.c Tue May 26 16:44:05 2020 (r361533) @@ -274,10 +274,9 @@ do_trap_supervisor(struct trapframe *frame) break; case EXCP_BREAKPOINT: #ifdef KDTRACE_HOOKS - if (dtrace_invop_jump_addr != 0) { - dtrace_invop_jump_addr(frame); - break; - } + if (dtrace_invop_jump_addr != NULL && + dtrace_invop_jump_addr(frame) == 0) + break; #endif #ifdef KDB kdb_trap(exception, 0, frame); From owner-svn-src-all@freebsd.org Tue May 26 17:54:12 2020 Return-Path: Delivered-To: svn-src-all@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 4B1DB2CF649; Tue, 26 May 2020 17:54:12 +0000 (UTC) (envelope-from mw@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49WhRS1W0bz4cdl; Tue, 26 May 2020 17:54:12 +0000 (UTC) (envelope-from mw@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 2E47027758; Tue, 26 May 2020 17:54:12 +0000 (UTC) (envelope-from mw@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04QHsC0Y051496; Tue, 26 May 2020 17:54:12 GMT (envelope-from mw@FreeBSD.org) Received: (from mw@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04QHsBk1051493; Tue, 26 May 2020 17:54:11 GMT (envelope-from mw@FreeBSD.org) Message-Id: <202005261754.04QHsBk1051493@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mw set sender to mw@FreeBSD.org using -f From: Marcin Wojtas Date: Tue, 26 May 2020 17:54:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org Subject: svn commit: r361534 - in stable/11/sys: contrib/ena-com contrib/ena-com/ena_defs dev/ena X-SVN-Group: stable-11 X-SVN-Commit-Author: mw X-SVN-Commit-Paths: in stable/11/sys: contrib/ena-com contrib/ena-com/ena_defs dev/ena X-SVN-Commit-Revision: 361534 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2020 17:54:12 -0000 Author: mw Date: Tue May 26 17:54:11 2020 New Revision: 361534 URL: https://svnweb.freebsd.org/changeset/base/361534 Log: MFC: Merge ENA v2.2.0 driver r361530 Update ENA driver version to v2.2.0 r361529 Refactor ena_tx_map_mbuf() function r361528 Fix double-free bug within ena_detach() r361527 Allow disabling meta caching for ENA Tx path r361526 Create ENA IO queues with optional backoff r361525 Add sysctl node for ENA IO queues number adjustment r361524 Fix assumptions about number of IO queues in the ENA r361523 Rework ENA Tx buffer ring size reconfiguration r361521 Rework ENA Rx queue size configuration r361518 Improve indentation in ena_up() and ena_down() r361517 Expose argument names for non static ENA driver functions r361516 Use single global lock in the ENA driver r361515 Add trigger reset function in the ENA driver r361514 Provide ENA driver version in a sysctl node r361513 Remove unused argument from static function in ena.c r361512 Enable Tx drops reporting in the ENA driver r361511 Adjust ENA driver to the new HAL Sponsored by: Amazon, Inc. Modified: stable/11/sys/contrib/ena-com/ena_com.c stable/11/sys/contrib/ena-com/ena_com.h stable/11/sys/contrib/ena-com/ena_defs/ena_admin_defs.h stable/11/sys/contrib/ena-com/ena_defs/ena_common_defs.h stable/11/sys/contrib/ena-com/ena_defs/ena_eth_io_defs.h stable/11/sys/contrib/ena-com/ena_defs/ena_gen_info.h stable/11/sys/contrib/ena-com/ena_defs/ena_regs_defs.h stable/11/sys/contrib/ena-com/ena_eth_com.c stable/11/sys/contrib/ena-com/ena_eth_com.h stable/11/sys/contrib/ena-com/ena_plat.h stable/11/sys/dev/ena/ena.c stable/11/sys/dev/ena/ena.h stable/11/sys/dev/ena/ena_datapath.c stable/11/sys/dev/ena/ena_datapath.h stable/11/sys/dev/ena/ena_netmap.c stable/11/sys/dev/ena/ena_netmap.h stable/11/sys/dev/ena/ena_sysctl.c stable/11/sys/dev/ena/ena_sysctl.h Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/contrib/ena-com/ena_com.c ============================================================================== --- stable/11/sys/contrib/ena-com/ena_com.c Tue May 26 16:44:05 2020 (r361533) +++ stable/11/sys/contrib/ena-com/ena_com.c Tue May 26 17:54:11 2020 (r361534) @@ -1,7 +1,7 @@ /*- * BSD LICENSE * - * Copyright (c) 2015-2019 Amazon.com, Inc. or its affiliates. + * Copyright (c) 2015-2020 Amazon.com, Inc. or its affiliates. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -70,8 +70,10 @@ #define ENA_REGS_ADMIN_INTR_MASK 1 -#define ENA_POLL_MS 5 +#define ENA_MIN_POLL_US 100 +#define ENA_MAX_POLL_US 5000 + /*****************************************************************************/ /*****************************************************************************/ /*****************************************************************************/ @@ -99,7 +101,7 @@ struct ena_com_stats_ctx { struct ena_admin_acq_get_stats_resp get_resp; }; -static inline int ena_com_mem_addr_set(struct ena_com_dev *ena_dev, +static int ena_com_mem_addr_set(struct ena_com_dev *ena_dev, struct ena_common_mem_addr *ena_addr, dma_addr_t addr) { @@ -200,7 +202,7 @@ static int ena_com_admin_init_aenq(struct ena_com_dev return 0; } -static inline void comp_ctxt_release(struct ena_com_admin_queue *queue, +static void comp_ctxt_release(struct ena_com_admin_queue *queue, struct ena_comp_ctx *comp_ctx) { comp_ctx->occupied = false; @@ -216,6 +218,11 @@ static struct ena_comp_ctx *get_comp_ctxt(struct ena_c return NULL; } + if (unlikely(!queue->comp_ctx)) { + ena_trc_err("Completion context is NULL\n"); + return NULL; + } + if (unlikely(queue->comp_ctx[command_id].occupied && capture)) { ena_trc_err("Completion context is occupied\n"); return NULL; @@ -289,7 +296,7 @@ static struct ena_comp_ctx *__ena_com_submit_admin_cmd return comp_ctx; } -static inline int ena_com_init_comp_ctxt(struct ena_com_admin_queue *queue) +static int ena_com_init_comp_ctxt(struct ena_com_admin_queue *queue) { size_t size = queue->q_depth * sizeof(struct ena_comp_ctx); struct ena_comp_ctx *comp_ctx; @@ -409,6 +416,8 @@ static int ena_com_init_io_sq(struct ena_com_dev *ena_ 0x0, io_sq->llq_info.desc_list_entry_size); io_sq->llq_buf_ctrl.descs_left_in_line = io_sq->llq_info.descs_num_before_header; + io_sq->disable_meta_caching = + io_sq->llq_info.disable_meta_caching; if (io_sq->llq_info.max_entries_in_tx_burst > 0) io_sq->entries_in_tx_burst_left = @@ -534,12 +543,9 @@ static int ena_com_comp_status_to_errno(u8 comp_status if (unlikely(comp_status != 0)) ena_trc_err("admin command failed[%u]\n", comp_status); - if (unlikely(comp_status > ENA_ADMIN_UNKNOWN_ERROR)) - return ENA_COM_INVAL; - switch (comp_status) { case ENA_ADMIN_SUCCESS: - return 0; + return ENA_COM_OK; case ENA_ADMIN_RESOURCE_ALLOCATION_FAILURE: return ENA_COM_NO_MEM; case ENA_ADMIN_UNSUPPORTED_OPCODE: @@ -551,24 +557,32 @@ static int ena_com_comp_status_to_errno(u8 comp_status return ENA_COM_INVAL; } - return 0; + return ENA_COM_INVAL; } +static inline void ena_delay_exponential_backoff_us(u32 exp, u32 delay_us) +{ + delay_us = ENA_MAX32(ENA_MIN_POLL_US, delay_us); + delay_us = ENA_MIN32(delay_us * (1 << exp), ENA_MAX_POLL_US); + ENA_USLEEP(delay_us); +} + static int ena_com_wait_and_process_admin_cq_polling(struct ena_comp_ctx *comp_ctx, struct ena_com_admin_queue *admin_queue) { unsigned long flags = 0; - unsigned long timeout; + ena_time_t timeout; int ret; + u32 exp = 0; timeout = ENA_GET_SYSTEM_TIMEOUT(admin_queue->completion_timeout); while (1) { - ENA_SPINLOCK_LOCK(admin_queue->q_lock, flags); - ena_com_handle_admin_completion(admin_queue); - ENA_SPINLOCK_UNLOCK(admin_queue->q_lock, flags); + ENA_SPINLOCK_LOCK(admin_queue->q_lock, flags); + ena_com_handle_admin_completion(admin_queue); + ENA_SPINLOCK_UNLOCK(admin_queue->q_lock, flags); - if (comp_ctx->status != ENA_CMD_SUBMITTED) + if (comp_ctx->status != ENA_CMD_SUBMITTED) break; if (ENA_TIME_EXPIRE(timeout)) { @@ -583,7 +597,7 @@ static int ena_com_wait_and_process_admin_cq_polling(s goto err; } - ENA_MSLEEP(ENA_POLL_MS); + ena_delay_exponential_backoff_us(exp++, admin_queue->ena_dev->ena_min_poll_delay_us); } if (unlikely(comp_ctx->status == ENA_CMD_ABORTED)) { @@ -629,6 +643,14 @@ static int ena_com_set_llq(struct ena_com_dev *ena_dev cmd.u.llq.desc_num_before_header_enabled = llq_info->descs_num_before_header; cmd.u.llq.descriptors_stride_ctrl_enabled = llq_info->desc_stride_ctrl; + if (llq_info->disable_meta_caching) + cmd.u.llq.accel_mode.u.set.enabled_flags |= + BIT(ENA_ADMIN_DISABLE_META_CACHING); + + if (llq_info->max_entries_in_tx_burst) + cmd.u.llq.accel_mode.u.set.enabled_flags |= + BIT(ENA_ADMIN_LIMIT_TX_BURST); + ret = ena_com_execute_admin_command(admin_queue, (struct ena_admin_aq_entry *)&cmd, sizeof(cmd), @@ -748,15 +770,21 @@ static int ena_com_config_llq_info(struct ena_com_dev supported_feat, llq_info->descs_num_before_header); } + /* Check for accelerated queue supported */ + llq_info->disable_meta_caching = + llq_features->accel_mode.u.get.supported_flags & + BIT(ENA_ADMIN_DISABLE_META_CACHING); - llq_info->max_entries_in_tx_burst = - (u16)(llq_features->max_tx_burst_size / llq_default_cfg->llq_ring_entry_size_value); + if (llq_features->accel_mode.u.get.supported_flags & BIT(ENA_ADMIN_LIMIT_TX_BURST)) + llq_info->max_entries_in_tx_burst = + llq_features->accel_mode.u.get.max_tx_burst_size / + llq_default_cfg->llq_ring_entry_size_value; rc = ena_com_set_llq(ena_dev); if (rc) ena_trc_err("Cannot set LLQ configuration: %d\n", rc); - return 0; + return rc; } static int ena_com_wait_and_process_admin_cq_interrupts(struct ena_comp_ctx *comp_ctx, @@ -779,16 +807,25 @@ static int ena_com_wait_and_process_admin_cq_interrupt admin_queue->stats.no_completion++; ENA_SPINLOCK_UNLOCK(admin_queue->q_lock, flags); - if (comp_ctx->status == ENA_CMD_COMPLETED) - ena_trc_err("The ena device have completion but the driver didn't receive any MSI-X interrupt (cmd %d)\n", - comp_ctx->cmd_opcode); - else - ena_trc_err("The ena device doesn't send any completion for the admin cmd %d status %d\n", + if (comp_ctx->status == ENA_CMD_COMPLETED) { + ena_trc_err("The ena device sent a completion but the driver didn't receive a MSI-X interrupt (cmd %d), autopolling mode is %s\n", + comp_ctx->cmd_opcode, admin_queue->auto_polling ? "ON" : "OFF"); + /* Check if fallback to polling is enabled */ + if (admin_queue->auto_polling) + admin_queue->polling = true; + } else { + ena_trc_err("The ena device didn't send a completion for the admin cmd %d status %d\n", comp_ctx->cmd_opcode, comp_ctx->status); - - admin_queue->running_state = false; - ret = ENA_COM_TIMER_EXPIRED; - goto err; + } + /* Check if shifted to polling mode. + * This will happen if there is a completion without an interrupt + * and autopolling mode is enabled. Continuing normal execution in such case + */ + if (!admin_queue->polling) { + admin_queue->running_state = false; + ret = ENA_COM_TIMER_EXPIRED; + goto err; + } } ret = ena_com_comp_status_to_errno(comp_ctx->comp_status); @@ -944,7 +981,9 @@ static void ena_com_io_queue_free(struct ena_com_dev * } if (io_sq->bounce_buf_ctrl.base_buffer) { - ENA_MEM_FREE(ena_dev->dmadev, io_sq->bounce_buf_ctrl.base_buffer); + ENA_MEM_FREE(ena_dev->dmadev, + io_sq->bounce_buf_ctrl.base_buffer, + (io_sq->llq_info.desc_list_entry_size * ENA_COM_BOUNCE_BUFFER_CNTRL_CNT)); io_sq->bounce_buf_ctrl.base_buffer = NULL; } } @@ -952,12 +991,13 @@ static void ena_com_io_queue_free(struct ena_com_dev * static int wait_for_reset_state(struct ena_com_dev *ena_dev, u32 timeout, u16 exp_state) { - u32 val, i; + u32 val, exp = 0; + ena_time_t timeout_stamp; - /* Convert timeout from resolution of 100ms to ENA_POLL_MS */ - timeout = (timeout * 100) / ENA_POLL_MS; + /* Convert timeout from resolution of 100ms to us resolution. */ + timeout_stamp = ENA_GET_SYSTEM_TIMEOUT(100 * 1000 * timeout); - for (i = 0; i < timeout; i++) { + while (1) { val = ena_com_reg_bar_read32(ena_dev, ENA_REGS_DEV_STS_OFF); if (unlikely(val == ENA_MMIO_READ_TIMEOUT)) { @@ -969,10 +1009,11 @@ static int wait_for_reset_state(struct ena_com_dev *en exp_state) return 0; - ENA_MSLEEP(ENA_POLL_MS); - } + if (ENA_TIME_EXPIRE(timeout_stamp)) + return ENA_COM_TIMER_EXPIRED; - return ENA_COM_TIMER_EXPIRED; + ena_delay_exponential_backoff_us(exp++, ena_dev->ena_min_poll_delay_us); + } } static bool ena_com_check_supported_feature_id(struct ena_com_dev *ena_dev, @@ -1055,10 +1096,34 @@ static int ena_com_get_feature(struct ena_com_dev *ena feature_ver); } +int ena_com_get_current_hash_function(struct ena_com_dev *ena_dev) +{ + return ena_dev->rss.hash_func; +} + +static void ena_com_hash_key_fill_default_key(struct ena_com_dev *ena_dev) +{ + struct ena_admin_feature_rss_flow_hash_control *hash_key = + (ena_dev->rss).hash_key; + + ENA_RSS_FILL_KEY(&hash_key->key, sizeof(hash_key->key)); + /* The key buffer is stored in the device in an array of + * uint32 elements. Therefore the number of elements can be derived + * by dividing the buffer length by the size of each array element. + * In current implementation each element is sized at uint32_t + * so it's actually a division by 4 but if the element size changes, + * there is no need to rewrite this code. + */ + hash_key->keys_num = sizeof(hash_key->key) / sizeof(hash_key->key[0]); +} + static int ena_com_hash_key_allocate(struct ena_com_dev *ena_dev) { struct ena_rss *rss = &ena_dev->rss; + if (!ena_com_check_supported_feature_id(ena_dev, ENA_ADMIN_RSS_HASH_FUNCTION)) + return ENA_COM_UNSUPPORTED; + ENA_MEM_ALLOC_COHERENT(ena_dev->dmadev, sizeof(*rss->hash_key), rss->hash_key, @@ -1186,7 +1251,9 @@ static void ena_com_indirect_table_destroy(struct ena_ rss->rss_ind_tbl = NULL; if (rss->host_rss_ind_tbl) - ENA_MEM_FREE(ena_dev->dmadev, rss->host_rss_ind_tbl); + ENA_MEM_FREE(ena_dev->dmadev, + rss->host_rss_ind_tbl, + ((1ULL << rss->tbl_log_size) * sizeof(u16))); rss->host_rss_ind_tbl = NULL; } @@ -1287,63 +1354,29 @@ static int ena_com_ind_tbl_convert_to_device(struct en return 0; } -static int ena_com_ind_tbl_convert_from_device(struct ena_com_dev *ena_dev) -{ - u16 dev_idx_to_host_tbl[ENA_TOTAL_NUM_QUEUES] = { (u16)-1 }; - struct ena_rss *rss = &ena_dev->rss; - u8 idx; - u16 i; - - for (i = 0; i < ENA_TOTAL_NUM_QUEUES; i++) - dev_idx_to_host_tbl[ena_dev->io_sq_queues[i].idx] = i; - - for (i = 0; i < 1 << rss->tbl_log_size; i++) { - if (rss->rss_ind_tbl[i].cq_idx > ENA_TOTAL_NUM_QUEUES) - return ENA_COM_INVAL; - idx = (u8)rss->rss_ind_tbl[i].cq_idx; - - if (dev_idx_to_host_tbl[idx] > ENA_TOTAL_NUM_QUEUES) - return ENA_COM_INVAL; - - rss->host_rss_ind_tbl[i] = dev_idx_to_host_tbl[idx]; - } - - return 0; -} - -static int ena_com_init_interrupt_moderation_table(struct ena_com_dev *ena_dev) -{ - size_t size; - - size = sizeof(struct ena_intr_moder_entry) * ENA_INTR_MAX_NUM_OF_LEVELS; - - ena_dev->intr_moder_tbl = ENA_MEM_ALLOC(ena_dev->dmadev, size); - if (!ena_dev->intr_moder_tbl) - return ENA_COM_NO_MEM; - - ena_com_config_default_interrupt_moderation_table(ena_dev); - - return 0; -} - static void ena_com_update_intr_delay_resolution(struct ena_com_dev *ena_dev, u16 intr_delay_resolution) { - struct ena_intr_moder_entry *intr_moder_tbl = ena_dev->intr_moder_tbl; - unsigned int i; + u16 prev_intr_delay_resolution = ena_dev->intr_delay_resolution; - if (!intr_delay_resolution) { + if (unlikely(!intr_delay_resolution)) { ena_trc_err("Illegal intr_delay_resolution provided. Going to use default 1 usec resolution\n"); - intr_delay_resolution = 1; + intr_delay_resolution = ENA_DEFAULT_INTR_DELAY_RESOLUTION; } - ena_dev->intr_delay_resolution = intr_delay_resolution; /* update Rx */ - for (i = 0; i < ENA_INTR_MAX_NUM_OF_LEVELS; i++) - intr_moder_tbl[i].intr_moder_interval /= intr_delay_resolution; + ena_dev->intr_moder_rx_interval = + ena_dev->intr_moder_rx_interval * + prev_intr_delay_resolution / + intr_delay_resolution; /* update Tx */ - ena_dev->intr_moder_tx_interval /= intr_delay_resolution; + ena_dev->intr_moder_tx_interval = + ena_dev->intr_moder_tx_interval * + prev_intr_delay_resolution / + intr_delay_resolution; + + ena_dev->intr_delay_resolution = intr_delay_resolution; } /*****************************************************************************/ @@ -1482,11 +1515,12 @@ void ena_com_wait_for_abort_completion(struct ena_com_ { struct ena_com_admin_queue *admin_queue = &ena_dev->admin_queue; unsigned long flags = 0; + u32 exp = 0; ENA_SPINLOCK_LOCK(admin_queue->q_lock, flags); while (ATOMIC32_READ(&admin_queue->outstanding_cmds) != 0) { ENA_SPINLOCK_UNLOCK(admin_queue->q_lock, flags); - ENA_MSLEEP(ENA_POLL_MS); + ena_delay_exponential_backoff_us(exp++, ena_dev->ena_min_poll_delay_us); ENA_SPINLOCK_LOCK(admin_queue->q_lock, flags); } ENA_SPINLOCK_UNLOCK(admin_queue->q_lock, flags); @@ -1667,7 +1701,9 @@ void ena_com_admin_destroy(struct ena_com_dev *ena_dev ENA_WAIT_EVENT_DESTROY(admin_queue->comp_ctx->wait_event); if (admin_queue->comp_ctx) - ENA_MEM_FREE(ena_dev->dmadev, admin_queue->comp_ctx); + ENA_MEM_FREE(ena_dev->dmadev, + admin_queue->comp_ctx, + (admin_queue->q_depth * sizeof(struct ena_comp_ctx))); admin_queue->comp_ctx = NULL; size = ADMIN_SQ_SIZE(admin_queue->q_depth); if (sq->entries) @@ -1701,6 +1737,17 @@ void ena_com_set_admin_polling_mode(struct ena_com_dev ena_dev->admin_queue.polling = polling; } +bool ena_com_get_admin_polling_mode(struct ena_com_dev *ena_dev) +{ + return ena_dev->admin_queue.polling; +} + +void ena_com_set_admin_auto_polling_mode(struct ena_com_dev *ena_dev, + bool polling) +{ + ena_dev->admin_queue.auto_polling = polling; +} + int ena_com_mmio_reg_read_request_init(struct ena_com_dev *ena_dev) { struct ena_com_mmio_read *mmio_read = &ena_dev->mmio_read; @@ -1838,6 +1885,7 @@ int ena_com_admin_init(struct ena_com_dev *ena_dev, if (ret) goto error; + admin_queue->ena_dev = ena_dev; admin_queue->running_state = true; return 0; @@ -1934,62 +1982,6 @@ int ena_com_get_link_params(struct ena_com_dev *ena_de return ena_com_get_feature(ena_dev, resp, ENA_ADMIN_LINK_CONFIG, 0); } -int ena_com_extra_properties_strings_init(struct ena_com_dev *ena_dev) -{ - struct ena_admin_get_feat_resp resp; - struct ena_extra_properties_strings *extra_properties_strings = - &ena_dev->extra_properties_strings; - u32 rc; - extra_properties_strings->size = ENA_ADMIN_EXTRA_PROPERTIES_COUNT * - ENA_ADMIN_EXTRA_PROPERTIES_STRING_LEN; - - ENA_MEM_ALLOC_COHERENT(ena_dev->dmadev, - extra_properties_strings->size, - extra_properties_strings->virt_addr, - extra_properties_strings->dma_addr, - extra_properties_strings->dma_handle); - if (unlikely(!extra_properties_strings->virt_addr)) { - ena_trc_err("Failed to allocate extra properties strings\n"); - return 0; - } - - rc = ena_com_get_feature_ex(ena_dev, &resp, - ENA_ADMIN_EXTRA_PROPERTIES_STRINGS, - extra_properties_strings->dma_addr, - extra_properties_strings->size, 0); - if (rc) { - ena_trc_dbg("Failed to get extra properties strings\n"); - goto err; - } - - return resp.u.extra_properties_strings.count; -err: - ena_com_delete_extra_properties_strings(ena_dev); - return 0; -} - -void ena_com_delete_extra_properties_strings(struct ena_com_dev *ena_dev) -{ - struct ena_extra_properties_strings *extra_properties_strings = - &ena_dev->extra_properties_strings; - - if (extra_properties_strings->virt_addr) { - ENA_MEM_FREE_COHERENT(ena_dev->dmadev, - extra_properties_strings->size, - extra_properties_strings->virt_addr, - extra_properties_strings->dma_addr, - extra_properties_strings->dma_handle); - extra_properties_strings->virt_addr = NULL; - } -} - -int ena_com_get_extra_properties_flags(struct ena_com_dev *ena_dev, - struct ena_admin_get_feat_resp *resp) -{ - return ena_com_get_feature(ena_dev, resp, - ENA_ADMIN_EXTRA_PROPERTIES_FLAGS, 0); -} - int ena_com_get_dev_attr_feat(struct ena_com_dev *ena_dev, struct ena_com_dev_get_features_ctx *get_feat_ctx) { @@ -2111,7 +2103,7 @@ void ena_com_aenq_intr_handler(struct ena_com_dev *dev struct ena_admin_aenq_entry *aenq_e; struct ena_admin_aenq_common_desc *aenq_common; struct ena_com_aenq *aenq = &dev->aenq; - unsigned long long timestamp; + u64 timestamp; ena_aenq_handler handler_cb; u16 masked_head, processed = 0; u8 phase; @@ -2129,9 +2121,9 @@ void ena_com_aenq_intr_handler(struct ena_com_dev *dev */ dma_rmb(); - timestamp = (unsigned long long)aenq_common->timestamp_low | - ((unsigned long long)aenq_common->timestamp_high << 32); - ena_trc_dbg("AENQ! Group[%x] Syndrom[%x] timestamp: [%llus]\n", + timestamp = (u64)aenq_common->timestamp_low | + ((u64)aenq_common->timestamp_high << 32); + ena_trc_dbg("AENQ! Group[%x] Syndrom[%x] timestamp: [%" ENA_PRIu64 "s]\n", aenq_common->group, aenq_common->syndrom, timestamp); @@ -2452,12 +2444,14 @@ int ena_com_fill_hash_function(struct ena_com_dev *ena enum ena_admin_hash_functions func, const u8 *key, u16 key_len, u32 init_val) { - struct ena_rss *rss = &ena_dev->rss; + struct ena_admin_feature_rss_flow_hash_control *hash_key; struct ena_admin_get_feat_resp get_resp; - struct ena_admin_feature_rss_flow_hash_control *hash_key = - rss->hash_key; + enum ena_admin_hash_functions old_func; + struct ena_rss *rss = &ena_dev->rss; int rc; + hash_key = rss->hash_key; + /* Make sure size is a mult of DWs */ if (unlikely(key_len & 0x3)) return ENA_COM_INVAL; @@ -2469,22 +2463,23 @@ int ena_com_fill_hash_function(struct ena_com_dev *ena if (unlikely(rc)) return rc; - if (!((1 << func) & get_resp.u.flow_hash_func.supported_func)) { + if (!(BIT(func) & get_resp.u.flow_hash_func.supported_func)) { ena_trc_err("Flow hash function %d isn't supported\n", func); return ENA_COM_UNSUPPORTED; } switch (func) { case ENA_ADMIN_TOEPLITZ: - if (key_len > sizeof(hash_key->key)) { - ena_trc_err("key len (%hu) is bigger than the max supported (%zu)\n", - key_len, sizeof(hash_key->key)); - return ENA_COM_INVAL; + if (key) { + if (key_len != sizeof(hash_key->key)) { + ena_trc_err("key len (%hu) doesn't equal the supported size (%zu)\n", + key_len, sizeof(hash_key->key)); + return ENA_COM_INVAL; + } + memcpy(hash_key->key, key, key_len); + rss->hash_init_val = init_val; + hash_key->keys_num = key_len / sizeof(hash_key->key[0]); } - - memcpy(hash_key->key, key, key_len); - rss->hash_init_val = init_val; - hash_key->keys_num = key_len >> 2; break; case ENA_ADMIN_CRC32: rss->hash_init_val = init_val; @@ -2494,26 +2489,27 @@ int ena_com_fill_hash_function(struct ena_com_dev *ena return ENA_COM_INVAL; } + old_func = rss->hash_func; rss->hash_func = func; rc = ena_com_set_hash_function(ena_dev); /* Restore the old function */ if (unlikely(rc)) - ena_com_get_hash_function(ena_dev, NULL, NULL); + rss->hash_func = old_func; return rc; } int ena_com_get_hash_function(struct ena_com_dev *ena_dev, - enum ena_admin_hash_functions *func, - u8 *key) + enum ena_admin_hash_functions *func) { struct ena_rss *rss = &ena_dev->rss; struct ena_admin_get_feat_resp get_resp; - struct ena_admin_feature_rss_flow_hash_control *hash_key = - rss->hash_key; int rc; + if (unlikely(!func)) + return ENA_COM_INVAL; + rc = ena_com_get_feature_ex(ena_dev, &get_resp, ENA_ADMIN_RSS_HASH_FUNCTION, rss->hash_key_dma_addr, @@ -2521,10 +2517,21 @@ int ena_com_get_hash_function(struct ena_com_dev *ena_ if (unlikely(rc)) return rc; - rss->hash_func = get_resp.u.flow_hash_func.selected_func; - if (func) - *func = rss->hash_func; + /* ENA_FFS() returns 1 in case the lsb is set */ + rss->hash_func = ENA_FFS(get_resp.u.flow_hash_func.selected_func); + if (rss->hash_func) + rss->hash_func--; + *func = rss->hash_func; + + return 0; +} + +int ena_com_get_hash_key(struct ena_com_dev *ena_dev, u8 *key) +{ + struct ena_admin_feature_rss_flow_hash_control *hash_key = + ena_dev->rss.hash_key; + if (key) memcpy(key, hash_key->key, (size_t)(hash_key->keys_num) << 2); @@ -2785,10 +2792,6 @@ int ena_com_indirect_table_get(struct ena_com_dev *ena if (!ind_tbl) return 0; - rc = ena_com_ind_tbl_convert_from_device(ena_dev); - if (unlikely(rc)) - return rc; - for (i = 0; i < (1 << rss->tbl_log_size); i++) ind_tbl[i] = rss->host_rss_ind_tbl[i]; @@ -2805,8 +2808,14 @@ int ena_com_rss_init(struct ena_com_dev *ena_dev, u16 if (unlikely(rc)) goto err_indr_tbl; + /* The following function might return unsupported in case the + * device doesn't support setting the key / hash function. We can safely + * ignore this error and have indirection table support only. + */ rc = ena_com_hash_key_allocate(ena_dev); - if (unlikely(rc)) + if (likely(!rc)) + ena_com_hash_key_fill_default_key(ena_dev); + else if (rc != ENA_COM_UNSUPPORTED) goto err_hash_key; rc = ena_com_hash_ctrl_init(ena_dev); @@ -2956,42 +2965,35 @@ bool ena_com_interrupt_moderation_supported(struct ena ENA_ADMIN_INTERRUPT_MODERATION); } -int ena_com_update_nonadaptive_moderation_interval_tx(struct ena_com_dev *ena_dev, - u32 tx_coalesce_usecs) +static int ena_com_update_nonadaptive_moderation_interval(u32 coalesce_usecs, + u32 intr_delay_resolution, + u32 *intr_moder_interval) { - if (!ena_dev->intr_delay_resolution) { + if (!intr_delay_resolution) { ena_trc_err("Illegal interrupt delay granularity value\n"); return ENA_COM_FAULT; } - ena_dev->intr_moder_tx_interval = tx_coalesce_usecs / - ena_dev->intr_delay_resolution; + *intr_moder_interval = coalesce_usecs / intr_delay_resolution; return 0; } -int ena_com_update_nonadaptive_moderation_interval_rx(struct ena_com_dev *ena_dev, - u32 rx_coalesce_usecs) -{ - if (!ena_dev->intr_delay_resolution) { - ena_trc_err("Illegal interrupt delay granularity value\n"); - return ENA_COM_FAULT; - } - /* We use LOWEST entry of moderation table for storing - * nonadaptive interrupt coalescing values - */ - ena_dev->intr_moder_tbl[ENA_INTR_MODER_LOWEST].intr_moder_interval = - rx_coalesce_usecs / ena_dev->intr_delay_resolution; - - return 0; +int ena_com_update_nonadaptive_moderation_interval_tx(struct ena_com_dev *ena_dev, + u32 tx_coalesce_usecs) +{ + return ena_com_update_nonadaptive_moderation_interval(tx_coalesce_usecs, + ena_dev->intr_delay_resolution, + &ena_dev->intr_moder_tx_interval); } -void ena_com_destroy_interrupt_moderation(struct ena_com_dev *ena_dev) +int ena_com_update_nonadaptive_moderation_interval_rx(struct ena_com_dev *ena_dev, + u32 rx_coalesce_usecs) { - if (ena_dev->intr_moder_tbl) - ENA_MEM_FREE(ena_dev->dmadev, ena_dev->intr_moder_tbl); - ena_dev->intr_moder_tbl = NULL; + return ena_com_update_nonadaptive_moderation_interval(rx_coalesce_usecs, + ena_dev->intr_delay_resolution, + &ena_dev->intr_moder_rx_interval); } int ena_com_init_interrupt_moderation(struct ena_com_dev *ena_dev) @@ -3018,64 +3020,16 @@ int ena_com_init_interrupt_moderation(struct ena_com_d return rc; } - rc = ena_com_init_interrupt_moderation_table(ena_dev); - if (rc) - goto err; - /* if moderation is supported by device we set adaptive moderation */ delay_resolution = get_resp.u.intr_moderation.intr_delay_resolution; ena_com_update_intr_delay_resolution(ena_dev, delay_resolution); - ena_com_enable_adaptive_moderation(ena_dev); + /* Disable adaptive moderation by default - can be enabled later */ + ena_com_disable_adaptive_moderation(ena_dev); + return 0; -err: - ena_com_destroy_interrupt_moderation(ena_dev); - return rc; } -void ena_com_config_default_interrupt_moderation_table(struct ena_com_dev *ena_dev) -{ - struct ena_intr_moder_entry *intr_moder_tbl = ena_dev->intr_moder_tbl; - - if (!intr_moder_tbl) - return; - - intr_moder_tbl[ENA_INTR_MODER_LOWEST].intr_moder_interval = - ENA_INTR_LOWEST_USECS; - intr_moder_tbl[ENA_INTR_MODER_LOWEST].pkts_per_interval = - ENA_INTR_LOWEST_PKTS; - intr_moder_tbl[ENA_INTR_MODER_LOWEST].bytes_per_interval = - ENA_INTR_LOWEST_BYTES; - - intr_moder_tbl[ENA_INTR_MODER_LOW].intr_moder_interval = - ENA_INTR_LOW_USECS; - intr_moder_tbl[ENA_INTR_MODER_LOW].pkts_per_interval = - ENA_INTR_LOW_PKTS; - intr_moder_tbl[ENA_INTR_MODER_LOW].bytes_per_interval = - ENA_INTR_LOW_BYTES; - - intr_moder_tbl[ENA_INTR_MODER_MID].intr_moder_interval = - ENA_INTR_MID_USECS; - intr_moder_tbl[ENA_INTR_MODER_MID].pkts_per_interval = - ENA_INTR_MID_PKTS; - intr_moder_tbl[ENA_INTR_MODER_MID].bytes_per_interval = - ENA_INTR_MID_BYTES; - - intr_moder_tbl[ENA_INTR_MODER_HIGH].intr_moder_interval = - ENA_INTR_HIGH_USECS; - intr_moder_tbl[ENA_INTR_MODER_HIGH].pkts_per_interval = - ENA_INTR_HIGH_PKTS; - intr_moder_tbl[ENA_INTR_MODER_HIGH].bytes_per_interval = - ENA_INTR_HIGH_BYTES; - - intr_moder_tbl[ENA_INTR_MODER_HIGHEST].intr_moder_interval = - ENA_INTR_HIGHEST_USECS; - intr_moder_tbl[ENA_INTR_MODER_HIGHEST].pkts_per_interval = - ENA_INTR_HIGHEST_PKTS; - intr_moder_tbl[ENA_INTR_MODER_HIGHEST].bytes_per_interval = - ENA_INTR_HIGHEST_BYTES; -} - unsigned int ena_com_get_nonadaptive_moderation_interval_tx(struct ena_com_dev *ena_dev) { return ena_dev->intr_moder_tx_interval; @@ -3083,57 +3037,15 @@ unsigned int ena_com_get_nonadaptive_moderation_interv unsigned int ena_com_get_nonadaptive_moderation_interval_rx(struct ena_com_dev *ena_dev) { - struct ena_intr_moder_entry *intr_moder_tbl = ena_dev->intr_moder_tbl; - - if (intr_moder_tbl) - return intr_moder_tbl[ENA_INTR_MODER_LOWEST].intr_moder_interval; - - return 0; + return ena_dev->intr_moder_rx_interval; } -void ena_com_init_intr_moderation_entry(struct ena_com_dev *ena_dev, - enum ena_intr_moder_level level, - struct ena_intr_moder_entry *entry) -{ - struct ena_intr_moder_entry *intr_moder_tbl = ena_dev->intr_moder_tbl; - - if (level >= ENA_INTR_MAX_NUM_OF_LEVELS) - return; - - intr_moder_tbl[level].intr_moder_interval = entry->intr_moder_interval; - if (ena_dev->intr_delay_resolution) - intr_moder_tbl[level].intr_moder_interval /= - ena_dev->intr_delay_resolution; - intr_moder_tbl[level].pkts_per_interval = entry->pkts_per_interval; - - /* use hardcoded value until ethtool supports bytecount parameter */ - if (entry->bytes_per_interval != ENA_INTR_BYTE_COUNT_NOT_SUPPORTED) - intr_moder_tbl[level].bytes_per_interval = entry->bytes_per_interval; -} - -void ena_com_get_intr_moderation_entry(struct ena_com_dev *ena_dev, - enum ena_intr_moder_level level, - struct ena_intr_moder_entry *entry) -{ - struct ena_intr_moder_entry *intr_moder_tbl = ena_dev->intr_moder_tbl; - - if (level >= ENA_INTR_MAX_NUM_OF_LEVELS) - return; - - entry->intr_moder_interval = intr_moder_tbl[level].intr_moder_interval; - if (ena_dev->intr_delay_resolution) - entry->intr_moder_interval *= ena_dev->intr_delay_resolution; - entry->pkts_per_interval = - intr_moder_tbl[level].pkts_per_interval; - entry->bytes_per_interval = intr_moder_tbl[level].bytes_per_interval; -} - int ena_com_config_dev_mode(struct ena_com_dev *ena_dev, struct ena_admin_feature_llq_desc *llq_features, struct ena_llq_configurations *llq_default_cfg) { + struct ena_com_llq_info *llq_info = &ena_dev->llq_info; int rc; - int size; if (!llq_features->max_llq_num) { ena_dev->tx_mem_queue_type = ENA_ADMIN_PLACEMENT_POLICY_HOST; @@ -3144,14 +3056,12 @@ int ena_com_config_dev_mode(struct ena_com_dev *ena_de if (rc) return rc; - /* Validate the descriptor is not too big */ - size = ena_dev->tx_max_header_size; - size += ena_dev->llq_info.descs_num_before_header * - sizeof(struct ena_eth_io_tx_desc); + ena_dev->tx_max_header_size = llq_info->desc_list_entry_size - + (llq_info->descs_num_before_header * sizeof(struct ena_eth_io_tx_desc)); - if (unlikely(ena_dev->llq_info.desc_list_entry_size < size)) { + if (unlikely(ena_dev->tx_max_header_size == 0)) { ena_trc_err("the size of the LLQ entry is smaller than needed\n"); - return ENA_COM_INVAL; + return -EINVAL; } ena_dev->tx_mem_queue_type = ENA_ADMIN_PLACEMENT_POLICY_DEV; Modified: stable/11/sys/contrib/ena-com/ena_com.h ============================================================================== --- stable/11/sys/contrib/ena-com/ena_com.h Tue May 26 16:44:05 2020 (r361533) +++ stable/11/sys/contrib/ena-com/ena_com.h Tue May 26 17:54:11 2020 (r361534) @@ -1,7 +1,7 @@ /*- * BSD LICENSE * - * Copyright (c) 2015-2019 Amazon.com, Inc. or its affiliates. + * Copyright (c) 2015-2020 Amazon.com, Inc. or its affiliates. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -36,9 +36,9 @@ #include "ena_plat.h" -#define ENA_MAX_NUM_IO_QUEUES 128U +#define ENA_MAX_NUM_IO_QUEUES 128U /* We need to queues for each IO (on for Tx and one for Rx) */ -#define ENA_TOTAL_NUM_QUEUES (2 * (ENA_MAX_NUM_IO_QUEUES)) +#define ENA_TOTAL_NUM_QUEUES (2 * (ENA_MAX_NUM_IO_QUEUES)) #define ENA_MAX_HANDLERS 256 @@ -55,46 +55,16 @@ /*****************************************************************************/ /* ENA adaptive interrupt moderation settings */ -#define ENA_INTR_LOWEST_USECS (0) -#define ENA_INTR_LOWEST_PKTS (3) -#define ENA_INTR_LOWEST_BYTES (2 * 1524) +#define ENA_INTR_INITIAL_TX_INTERVAL_USECS ENA_INTR_INITIAL_TX_INTERVAL_USECS_PLAT +#define ENA_INTR_INITIAL_RX_INTERVAL_USECS 0 +#define ENA_DEFAULT_INTR_DELAY_RESOLUTION 1 -#define ENA_INTR_LOW_USECS (32) -#define ENA_INTR_LOW_PKTS (12) -#define ENA_INTR_LOW_BYTES (16 * 1024) +#define ENA_HASH_KEY_SIZE 40 -#define ENA_INTR_MID_USECS (80) -#define ENA_INTR_MID_PKTS (48) -#define ENA_INTR_MID_BYTES (64 * 1024) +#define ENA_HW_HINTS_NO_TIMEOUT 0xFFFF -#define ENA_INTR_HIGH_USECS (128) -#define ENA_INTR_HIGH_PKTS (96) -#define ENA_INTR_HIGH_BYTES (128 * 1024) +#define ENA_FEATURE_MAX_QUEUE_EXT_VER 1 -#define ENA_INTR_HIGHEST_USECS (192) -#define ENA_INTR_HIGHEST_PKTS (128) -#define ENA_INTR_HIGHEST_BYTES (192 * 1024) - -#define ENA_INTR_INITIAL_TX_INTERVAL_USECS 196 -#define ENA_INTR_INITIAL_RX_INTERVAL_USECS 4 -#define ENA_INTR_DELAY_OLD_VALUE_WEIGHT 6 -#define ENA_INTR_DELAY_NEW_VALUE_WEIGHT 4 -#define ENA_INTR_MODER_LEVEL_STRIDE 1 -#define ENA_INTR_BYTE_COUNT_NOT_SUPPORTED 0xFFFFFF - -#define ENA_HW_HINTS_NO_TIMEOUT 0xFFFF - -#define ENA_FEATURE_MAX_QUEUE_EXT_VER 1 - -enum ena_intr_moder_level { - ENA_INTR_MODER_LOWEST = 0, - ENA_INTR_MODER_LOW, - ENA_INTR_MODER_MID, - ENA_INTR_MODER_HIGH, - ENA_INTR_MODER_HIGHEST, - ENA_INTR_MAX_NUM_OF_LEVELS, -}; - struct ena_llq_configurations { enum ena_admin_llq_header_location llq_header_location; enum ena_admin_llq_ring_entry_size llq_ring_entry_size; @@ -103,12 +73,6 @@ struct ena_llq_configurations { u16 llq_ring_entry_size_value; }; -struct ena_intr_moder_entry { - unsigned int intr_moder_interval; - unsigned int pkts_per_interval; - unsigned int bytes_per_interval; -}; - enum queue_direction { ENA_COM_IO_QUEUE_DIRECTION_TX, ENA_COM_IO_QUEUE_DIRECTION_RX @@ -146,6 +110,7 @@ struct ena_com_llq_info { u16 descs_num_before_header; u16 descs_per_entry; u16 max_entries_in_tx_burst; + bool disable_meta_caching; }; struct ena_com_io_cq { @@ -210,6 +175,8 @@ struct ena_com_io_sq { enum queue_direction direction; enum ena_admin_placement_policy_type mem_queue_type; + bool disable_meta_caching; + u32 msix_vector; struct ena_com_tx_meta cached_tx_meta; struct ena_com_llq_info llq_info; @@ -253,16 +220,17 @@ struct ena_com_admin_sq { }; struct ena_com_stats_admin { - u32 aborted_cmd; - u32 submitted_cmd; - u32 completed_cmd; - u32 out_of_space; - u32 no_completion; + u64 aborted_cmd; + u64 submitted_cmd; + u64 completed_cmd; + u64 out_of_space; + u64 no_completion; }; struct ena_com_admin_queue { void *q_dmadev; void *bus; + struct ena_com_dev *ena_dev; ena_spinlock_t q_lock; /* spinlock for the admin queue */ struct ena_comp_ctx *comp_ctx; @@ -274,6 +242,9 @@ struct ena_com_admin_queue { /* Indicate if the admin queue should poll for completion */ bool polling; + /* Define if fallback to polling mode should occur */ + bool auto_polling; + u16 curr_cmd_id; /* Indicate that the ena was initialized and can @@ -345,13 +316,6 @@ struct ena_host_attribute { ena_mem_handle_t host_info_dma_handle; }; -struct ena_extra_properties_strings { - u8 *virt_addr; - dma_addr_t dma_addr; - ena_mem_handle_t dma_handle; *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@freebsd.org Tue May 26 19:03:46 2020 Return-Path: Delivered-To: svn-src-all@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 1A2CE2F1682; Tue, 26 May 2020 19:03:46 +0000 (UTC) (envelope-from bdragon@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49Wjzj71C0z3V6p; Tue, 26 May 2020 19:03:45 +0000 (UTC) (envelope-from bdragon@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 EBE5782B9; Tue, 26 May 2020 19:03:45 +0000 (UTC) (envelope-from bdragon@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04QJ3jdO094462; Tue, 26 May 2020 19:03:45 GMT (envelope-from bdragon@FreeBSD.org) Received: (from bdragon@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04QJ3j6P094461; Tue, 26 May 2020 19:03:45 GMT (envelope-from bdragon@FreeBSD.org) Message-Id: <202005261903.04QJ3j6P094461@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: bdragon set sender to bdragon@FreeBSD.org using -f From: Brandon Bergren Date: Tue, 26 May 2020 19:03:45 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361535 - head/sys/powerpc/include X-SVN-Group: head X-SVN-Commit-Author: bdragon X-SVN-Commit-Paths: head/sys/powerpc/include X-SVN-Commit-Revision: 361535 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2020 19:03:46 -0000 Author: bdragon Date: Tue May 26 19:03:45 2020 New Revision: 361535 URL: https://svnweb.freebsd.org/changeset/base/361535 Log: [PowerPC] Fix atomic_cmpset_masked(). A recent kernel change caused the previously unused atomic_cmpset_masked() to be used. It had a typo in it. Instead of reading the old value from an uninitialized variable, read it from the passed-in pointer as intended. This fixes crashes on 64 bit Book-E. Obtained from: jhibbits Modified: head/sys/powerpc/include/atomic.h Modified: head/sys/powerpc/include/atomic.h ============================================================================== --- head/sys/powerpc/include/atomic.h Tue May 26 17:54:11 2020 (r361534) +++ head/sys/powerpc/include/atomic.h Tue May 26 19:03:45 2020 (r361535) @@ -621,7 +621,7 @@ atomic_cmpset_masked(uint32_t *p, uint32_t cmpval, uin uint32_t tmp; __asm __volatile ( - "1:\tlwarx %2, 0, %2\n\t" /* load old value */ + "1:\tlwarx %2, 0, %3\n\t" /* load old value */ "and %0, %2, %7\n\t" "cmplw %4, %0\n\t" /* compare */ "bne- 2f\n\t" /* exit if not equal */ From owner-svn-src-all@freebsd.org Tue May 26 19:09:20 2020 Return-Path: Delivered-To: svn-src-all@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 776FB2F16A8; Tue, 26 May 2020 19:09:20 +0000 (UTC) (envelope-from mav@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49Wk682DRzz3VT2; Tue, 26 May 2020 19:09:20 +0000 (UTC) (envelope-from mav@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 436478592; Tue, 26 May 2020 19:09:20 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04QJ9KwN094924; Tue, 26 May 2020 19:09:20 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04QJ9KNZ094923; Tue, 26 May 2020 19:09:20 GMT (envelope-from mav@FreeBSD.org) Message-Id: <202005261909.04QJ9KNZ094923@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Tue, 26 May 2020 19:09:20 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361536 - head/sys/cam/ctl X-SVN-Group: head X-SVN-Commit-Author: mav X-SVN-Commit-Paths: head/sys/cam/ctl X-SVN-Commit-Revision: 361536 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2020 19:09:20 -0000 Author: mav Date: Tue May 26 19:09:19 2020 New Revision: 361536 URL: https://svnweb.freebsd.org/changeset/base/361536 Log: Properly check kern_sg_entries for S/G list. ctl_data_print() is called in core context, so does not even know meaning of ext_sg_entries. MFC after: 1 week Sponsored by: iXsystems, Inc. Modified: head/sys/cam/ctl/ctl_util.c Modified: head/sys/cam/ctl/ctl_util.c ============================================================================== --- head/sys/cam/ctl/ctl_util.c Tue May 26 19:03:45 2020 (r361535) +++ head/sys/cam/ctl/ctl_util.c Tue May 26 19:09:19 2020 (r361536) @@ -861,7 +861,7 @@ ctl_data_print(union ctl_io *io) return; if (io->io_hdr.flags & CTL_FLAG_BUS_ADDR) return; - if (io->scsiio.ext_sg_entries > 0) /* XXX: Implement */ + if (io->scsiio.kern_sg_entries > 0) /* XXX: Implement */ return; ctl_scsi_path_string(io, path_str, sizeof(path_str)); len = min(io->scsiio.kern_data_len, 4096); From owner-svn-src-all@freebsd.org Tue May 26 19:09:28 2020 Return-Path: Delivered-To: svn-src-all@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 955212F15CE; Tue, 26 May 2020 19:09:28 +0000 (UTC) (envelope-from bdragon@FreeBSD.org) Received: from smtp.freebsd.org (smtp.freebsd.org [IPv6:2610:1c1:1:606c::24b:4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "smtp.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 49Wk6H0219z3VcD; Tue, 26 May 2020 19:09:26 +0000 (UTC) (envelope-from bdragon@FreeBSD.org) Received: from auth1-smtp.messagingengine.com (auth1-smtp.messagingengine.com [66.111.4.227]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) (Authenticated sender: bdragon/mail) by smtp.freebsd.org (Postfix) with ESMTPSA id 0BB781190F; Tue, 26 May 2020 19:09:25 +0000 (UTC) (envelope-from bdragon@FreeBSD.org) Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailauth.nyi.internal (Postfix) with ESMTP id 3C96E27C005A; Tue, 26 May 2020 15:09:25 -0400 (EDT) Received: from imap1 ([10.202.2.51]) by compute4.internal (MEProxy); Tue, 26 May 2020 15:09:25 -0400 X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduhedruddvvddguddvlecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfgh necuuegrihhlohhuthemuceftddtnecufghrlhcuvffnffculddutddmnecujfgurhepof gfggfkjghffffhvffutgesthdtredtreertdenucfhrhhomhepfdeurhgrnhguohhnuceu vghrghhrvghnfdcuoegsughrrghgohhnsefhrhgvvgeuufffrdhorhhgqeenucggtffrrg htthgvrhhnpeetteelffduvddttdeuvdfhfeehjedvvdfgvdekvdeftefhgeekvdekleev uedvudenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpe gsughrrghgohhnodhmvghsmhhtphgruhhthhhpvghrshhonhgrlhhithihqddutdegvdef heekieegqddukedutdekheduqdgsughrrghgohhnpeephfhrvggvuefuffdrohhrghesih hmrghprdgttg X-ME-Proxy: Received: by mailuser.nyi.internal (Postfix, from userid 501) id DB4ECC200A5; Tue, 26 May 2020 15:09:24 -0400 (EDT) X-Mailer: MessagingEngine.com Webmail Interface User-Agent: Cyrus-JMAP/3.3.0-dev0-488-g9249dd4-fm-20200522.001-g9249dd48 Mime-Version: 1.0 Message-Id: <8985a02b-0930-45bb-9863-68d440621a1d@www.fastmail.com> In-Reply-To: <202005261903.04QJ3j6P094461@repo.freebsd.org> References: <202005261903.04QJ3j6P094461@repo.freebsd.org> Date: Tue, 26 May 2020 14:08:59 -0500 From: "Brandon Bergren" To: "Brandon Bergren" , src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r361535 - head/sys/powerpc/include Content-Type: text/plain X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2020 19:09:29 -0000 On Tue, May 26, 2020, at 2:03 PM, Brandon Bergren wrote: > > Obtained from: jhibbits Of course I meant "Submitted By:" here. -- Brandon Bergren bdragon@FreeBSD.org From owner-svn-src-all@freebsd.org Tue May 26 19:22:47 2020 Return-Path: Delivered-To: svn-src-all@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 828422F1EE4; Tue, 26 May 2020 19:22:47 +0000 (UTC) (envelope-from kib@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49WkPg2zg5z3X86; Tue, 26 May 2020 19:22:47 +0000 (UTC) (envelope-from kib@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 60D288894; Tue, 26 May 2020 19:22:47 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04QJMlOZ006945; Tue, 26 May 2020 19:22:47 GMT (envelope-from kib@FreeBSD.org) Received: (from kib@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04QJMk5q006943; Tue, 26 May 2020 19:22:46 GMT (envelope-from kib@FreeBSD.org) Message-Id: <202005261922.04QJMk5q006943@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kib set sender to kib@FreeBSD.org using -f From: Konstantin Belousov Date: Tue, 26 May 2020 19:22:46 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361537 - head/libexec/rtld-elf X-SVN-Group: head X-SVN-Commit-Author: kib X-SVN-Commit-Paths: head/libexec/rtld-elf X-SVN-Commit-Revision: 361537 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2020 19:22:47 -0000 Author: kib Date: Tue May 26 19:22:46 2020 New Revision: 361537 URL: https://svnweb.freebsd.org/changeset/base/361537 Log: Add version indicators to rtld. It is wrong to relate on __FreeBSD_version, either from include/param.h, kernel, or libc, to check for rtld features. Rtld might be from newer world than the running userspace. Add special private symbols exported by rtld itself, to indicate the changes in runtime behavior, and features that cannot be otherwise detected or deduced at runtime. Note that the symbols are not exported from libc, so they intentionally cannot be linked against, and exported from the private namespace from rtld. Consumers are required to use dlsym(3). For instance, for _rtld_version_laddr_offset, user should do ptr = dlsym(RTLD_DEFAULT, "_rtld_version_laddr_offset") or even ptr = dlvsym(RTLD_DEFAULT, "_rtld_version_laddr_offset", "FBSDprivate_1.0"); Non-null ptr means that the change is present. Also add _rtld_version__FreeBSD_version indicator to report the headers version used at time of the rtld build. Reviewed by: jhb Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D24982 Modified: head/libexec/rtld-elf/Symbol.map head/libexec/rtld-elf/rtld.1 head/libexec/rtld-elf/rtld.c Modified: head/libexec/rtld-elf/Symbol.map ============================================================================== --- head/libexec/rtld-elf/Symbol.map Tue May 26 19:09:19 2020 (r361536) +++ head/libexec/rtld-elf/Symbol.map Tue May 26 19:22:46 2020 (r361537) @@ -32,4 +32,6 @@ FBSDprivate_1.0 { _rtld_get_stack_prot; _rtld_is_dlopened; _r_debug_postinit; + _rtld_version__FreeBSD_version; + _rtld_version_laddr_offset; }; Modified: head/libexec/rtld-elf/rtld.1 ============================================================================== --- head/libexec/rtld-elf/rtld.1 Tue May 26 19:09:19 2020 (r361536) +++ head/libexec/rtld-elf/rtld.1 Tue May 26 19:22:46 2020 (r361537) @@ -355,6 +355,54 @@ ignores and is naturally prone to race conditions. Environments which rely on such restrictions are weak and breakable on their own. +.Sh VERSIONING +Newer +.Nm +might provide some features or changes in runtime behavior that cannot be +easily detected at runtime by checking of the normal exported symbols. +Note that it is almost always wrong to verify +.Dv __FreeBSD_version +in userspace to detect features, either at compile or at run time, +because either kernel, or libc, or environment variables could not +match the running +.Nm . +.Pp +To solve the problem, +.Nm +exports some feature indicators in the +.Fx +private symbols namespace +.Dv FBSDprivate_1.0 . +Symbols start with the +.Dv _rtld_version +prefix. +Current list of defined symbols and corresponding features is: +.Bl -tag -width indent +.It Dv _rtld_version__FreeBSD_version +Symbol exports the value of the +.Dv __FreeBSD_version +definition as it was provided during the +.Nm +build. +The symbol is always present since the +.Dv _rtld_version +facility was introduced. +.It Dv _rtld_version_laddr_offset +The +.Va l_addr +member of the +.Vt link_map +structure contains the load offset of the shared object. +Before that, +.Va l_addr +contained the base address of the library. +See +.Xr dlinfo 3 . +.Pp +Also it indicates the presence of +.Va l_refname +member of the structure. +.El .Sh FILES .Bl -tag -width ".Pa /var/run/ld-elf32.so.hints" -compact .It Pa /var/run/ld-elf.so.hints @@ -369,6 +417,7 @@ The libmap configuration file for 32-bit binaries on 6 .Sh SEE ALSO .Xr ld 1 , .Xr ldd 1 , +.Xr dlinfo 3 , .Xr capsicum 4 , .Xr elf 5 , .Xr libmap.conf 5 , Modified: head/libexec/rtld-elf/rtld.c ============================================================================== --- head/libexec/rtld-elf/rtld.c Tue May 26 19:09:19 2020 (r361536) +++ head/libexec/rtld-elf/rtld.c Tue May 26 19:22:46 2020 (r361537) @@ -5785,3 +5785,9 @@ realloc(void *cp, size_t nbytes) return (__crt_realloc(cp, nbytes)); } + +extern int _rtld_version__FreeBSD_version __exported; +int _rtld_version__FreeBSD_version = __FreeBSD_version; + +extern char _rtld_version_laddr_offset __exported; +char _rtld_version_laddr_offset; From owner-svn-src-all@freebsd.org Tue May 26 19:34:06 2020 Return-Path: Delivered-To: svn-src-all@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 172622F255B; Tue, 26 May 2020 19:34:06 +0000 (UTC) (envelope-from kevans@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49Wkfj6vwkz3Xp2; Tue, 26 May 2020 19:34:05 +0000 (UTC) (envelope-from kevans@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 E866A8AA3; Tue, 26 May 2020 19:34:05 +0000 (UTC) (envelope-from kevans@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04QJY5G7013261; Tue, 26 May 2020 19:34:05 GMT (envelope-from kevans@FreeBSD.org) Received: (from kevans@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04QJY5Oh013260; Tue, 26 May 2020 19:34:05 GMT (envelope-from kevans@FreeBSD.org) Message-Id: <202005261934.04QJY5Oh013260@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kevans set sender to kevans@FreeBSD.org using -f From: Kyle Evans Date: Tue, 26 May 2020 19:34:05 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org Subject: svn commit: r361538 - in stable: 11/stand/common 12/stand/common X-SVN-Group: stable-12 X-SVN-Commit-Author: kevans X-SVN-Commit-Paths: in stable: 11/stand/common 12/stand/common X-SVN-Commit-Revision: 361538 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2020 19:34:06 -0000 Author: kevans Date: Tue May 26 19:34:05 2020 New Revision: 361538 URL: https://svnweb.freebsd.org/changeset/base/361538 Log: loader: fix userboot's ability to detect a guest's interpreter Some time after r338418, I believe with -Os/-Oz -ffunction-sections -fdata-sections, the bootprog_interp variable that held our "$Interpreter:" marker started getting strip from all loaders, with exception to userboot since it used bootprog_interp to determine what flavor of userboot it was. At some point, it had been brought to my attention that this was no longer working and I had worked up some potential solutions to use the variable that involved printing it out. My vague recollection is that this was rejected, and I forgot to explore the alternatives; I cannot find records of this discussion anymore. Fast forward to present day, Andrew reported that it was non-functional and offered (effectively) this patch (sans comment) to stop the compiler from optimizing it out by assigning it to a volatile variable. This removes concerns about user-facing change while retaining the interpreter marker. Furthermore, it could certainly be uglier. Modified: stable/12/stand/common/interp.c Directory Properties: stable/12/ (props changed) Changes in other areas also in this revision: Modified: stable/11/stand/common/interp.c Directory Properties: stable/11/ (props changed) Modified: stable/12/stand/common/interp.c ============================================================================== --- stable/12/stand/common/interp.c Tue May 26 19:22:46 2020 (r361537) +++ stable/12/stand/common/interp.c Tue May 26 19:34:05 2020 (r361538) @@ -45,8 +45,17 @@ __FBSDID("$FreeBSD$"); void interact(void) { - static char input[256]; /* big enough? */ + static char input[256]; /* big enough? */ + const char * volatile interp_identifier; + /* + * Because interp_identifier is volatile, it cannot be optimized out by + * the compiler as it's considered an externally observable event. This + * prevents the compiler from optimizing out our carefully placed + * $Interpreter:4th string that userboot may use to determine that + * we need to switch interpreters. + */ + interp_identifier = bootprog_interp; interp_init(); printf("\n"); From owner-svn-src-all@freebsd.org Tue May 26 19:34:05 2020 Return-Path: Delivered-To: svn-src-all@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 BE63B2F2414; Tue, 26 May 2020 19:34:05 +0000 (UTC) (envelope-from kevans@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49Wkfj4Vr0z3Xy0; Tue, 26 May 2020 19:34:05 +0000 (UTC) (envelope-from kevans@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 95EAA8BC6; Tue, 26 May 2020 19:34:05 +0000 (UTC) (envelope-from kevans@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04QJY5vF013255; Tue, 26 May 2020 19:34:05 GMT (envelope-from kevans@FreeBSD.org) Received: (from kevans@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04QJY5HI013254; Tue, 26 May 2020 19:34:05 GMT (envelope-from kevans@FreeBSD.org) Message-Id: <202005261934.04QJY5HI013254@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kevans set sender to kevans@FreeBSD.org using -f From: Kyle Evans Date: Tue, 26 May 2020 19:34:05 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org Subject: svn commit: r361538 - in stable: 11/stand/common 12/stand/common X-SVN-Group: stable-11 X-SVN-Commit-Author: kevans X-SVN-Commit-Paths: in stable: 11/stand/common 12/stand/common X-SVN-Commit-Revision: 361538 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2020 19:34:05 -0000 Author: kevans Date: Tue May 26 19:34:05 2020 New Revision: 361538 URL: https://svnweb.freebsd.org/changeset/base/361538 Log: loader: fix userboot's ability to detect a guest's interpreter Some time after r338418, I believe with -Os/-Oz -ffunction-sections -fdata-sections, the bootprog_interp variable that held our "$Interpreter:" marker started getting strip from all loaders, with exception to userboot since it used bootprog_interp to determine what flavor of userboot it was. At some point, it had been brought to my attention that this was no longer working and I had worked up some potential solutions to use the variable that involved printing it out. My vague recollection is that this was rejected, and I forgot to explore the alternatives; I cannot find records of this discussion anymore. Fast forward to present day, Andrew reported that it was non-functional and offered (effectively) this patch (sans comment) to stop the compiler from optimizing it out by assigning it to a volatile variable. This removes concerns about user-facing change while retaining the interpreter marker. Furthermore, it could certainly be uglier. Modified: stable/11/stand/common/interp.c Directory Properties: stable/11/ (props changed) Changes in other areas also in this revision: Modified: stable/12/stand/common/interp.c Directory Properties: stable/12/ (props changed) Modified: stable/11/stand/common/interp.c ============================================================================== --- stable/11/stand/common/interp.c Tue May 26 19:22:46 2020 (r361537) +++ stable/11/stand/common/interp.c Tue May 26 19:34:05 2020 (r361538) @@ -45,8 +45,17 @@ __FBSDID("$FreeBSD$"); void interact(void) { - static char input[256]; /* big enough? */ + static char input[256]; /* big enough? */ + const char * volatile interp_identifier; + /* + * Because interp_identifier is volatile, it cannot be optimized out by + * the compiler as it's considered an externally observable event. This + * prevents the compiler from optimizing out our carefully placed + * $Interpreter:4th string that userboot may use to determine that + * we need to switch interpreters. + */ + interp_identifier = bootprog_interp; interp_init(); printf("\n"); From owner-svn-src-all@freebsd.org Tue May 26 22:41:12 2020 Return-Path: Delivered-To: svn-src-all@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 BE3A92F640E; Tue, 26 May 2020 22:41:12 +0000 (UTC) (envelope-from mw@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49Wppc4y1kz45CH; Tue, 26 May 2020 22:41:12 +0000 (UTC) (envelope-from mw@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 A5057ADA7; Tue, 26 May 2020 22:41:12 +0000 (UTC) (envelope-from mw@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04QMfCqG026537; Tue, 26 May 2020 22:41:12 GMT (envelope-from mw@FreeBSD.org) Received: (from mw@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04QMfCOV026534; Tue, 26 May 2020 22:41:12 GMT (envelope-from mw@FreeBSD.org) Message-Id: <202005262241.04QMfCOV026534@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mw set sender to mw@FreeBSD.org using -f From: Marcin Wojtas Date: Tue, 26 May 2020 22:41:12 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-releng@freebsd.org Subject: svn commit: r361539 - in releng/11.4: share/man/man4 sys/contrib/ena-com sys/contrib/ena-com/ena_defs sys/dev/ena sys/modules/ena X-SVN-Group: releng X-SVN-Commit-Author: mw X-SVN-Commit-Paths: in releng/11.4: share/man/man4 sys/contrib/ena-com sys/contrib/ena-com/ena_defs sys/dev/ena sys/modules/ena X-SVN-Commit-Revision: 361539 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2020 22:41:12 -0000 Author: mw Date: Tue May 26 22:41:12 2020 New Revision: 361539 URL: https://svnweb.freebsd.org/changeset/base/361539 Log: MF11: r361467-361468,361534 This patch upgrades the ENA driver to version 2.2.0. Approved by: re (gjb) Sponsored by: Amazon, Inc. Added: releng/11.4/sys/dev/ena/ena_datapath.c - copied, changed from r361468, stable/11/sys/dev/ena/ena_datapath.c releng/11.4/sys/dev/ena/ena_datapath.h - copied, changed from r361468, stable/11/sys/dev/ena/ena_datapath.h releng/11.4/sys/dev/ena/ena_netmap.c - copied, changed from r361468, stable/11/sys/dev/ena/ena_netmap.c releng/11.4/sys/dev/ena/ena_netmap.h - copied, changed from r361468, stable/11/sys/dev/ena/ena_netmap.h Modified: releng/11.4/share/man/man4/ena.4 releng/11.4/sys/contrib/ena-com/ena_com.c releng/11.4/sys/contrib/ena-com/ena_com.h releng/11.4/sys/contrib/ena-com/ena_defs/ena_admin_defs.h releng/11.4/sys/contrib/ena-com/ena_defs/ena_common_defs.h releng/11.4/sys/contrib/ena-com/ena_defs/ena_eth_io_defs.h releng/11.4/sys/contrib/ena-com/ena_defs/ena_gen_info.h releng/11.4/sys/contrib/ena-com/ena_defs/ena_regs_defs.h releng/11.4/sys/contrib/ena-com/ena_eth_com.c releng/11.4/sys/contrib/ena-com/ena_eth_com.h releng/11.4/sys/contrib/ena-com/ena_plat.h releng/11.4/sys/dev/ena/ena.c releng/11.4/sys/dev/ena/ena.h releng/11.4/sys/dev/ena/ena_sysctl.c releng/11.4/sys/dev/ena/ena_sysctl.h releng/11.4/sys/modules/ena/Makefile Directory Properties: releng/11.4/ (props changed) Modified: releng/11.4/share/man/man4/ena.4 ============================================================================== --- releng/11.4/share/man/man4/ena.4 Tue May 26 19:34:05 2020 (r361538) +++ releng/11.4/share/man/man4/ena.4 Tue May 26 22:41:12 2020 (r361539) @@ -27,7 +27,7 @@ .\" .\" $FreeBSD$ .\" -.Dd May 04, 2017 +.Dd August 16, 2017 .Dt ENA 4 .Os .Sh NAME @@ -35,7 +35,7 @@ .Nd "FreeBSD kernel driver for Elastic Network Adapter (ENA) family" .Sh SYNOPSIS To compile this driver into the kernel, -place the following line in your +place the following line in the kernel configuration file: .Bd -ragged -offset indent .Cd "device ena" @@ -59,8 +59,9 @@ The driver supports a range of ENA devices, is link-sp (i.e., the same driver is used for 10GbE, 25GbE, 40GbE, etc.), and has a negotiated and extendable feature set. .Pp -Some ENA devices support SR-IOV. This driver is used for both the -SR-IOV Physical Function (PF) and Virtual Function (VF) devices. +Some ENA devices support SR-IOV. +This driver is used for both the SR-IOV Physical Function (PF) and Virtual +Function (VF) devices. .Pp The ENA devices enable high speed and low overhead network traffic processing by providing multiple Tx/Rx queue pairs (the maximum number @@ -82,8 +83,8 @@ to recover in a manner transparent to the application, debug logs. .Pp Some of the ENA devices support a working mode called Low-latency -Queue (LLQ), which saves several more microseconds. This feature will -be implemented for driver in future releases. +Queue (LLQ), which saves several more microseconds. +This feature will be implemented for driver in future releases. .Sh HARDWARE Supported PCI vendor ID/device IDs: .Pp @@ -105,19 +106,23 @@ Supported PCI vendor ID/device IDs: Error occurred during initialization of the mmio register read request. .It ena%d: Can not reset device .Pp -Device could not be reset; device may not be responding or is already -during reset. +Device could not be reset. +.br +Device may not be responding or is already during reset. .It ena%d: device version is too low .Pp -Version of the controller is too low and it is not supported by the driver. +Version of the controller is too old and it is not supported by the driver. .It ena%d: Invalid dma width value %d .Pp -The controller is able to request dma transcation width. Device stopped -responding or it demanded invalid value. +The controller is able to request dma transaction width. +.br +Device stopped responding or it demanded invalid value. .It ena%d: Can not initialize ena admin queue with device .Pp -Initialization of the Admin Queue failed; device may not be responding or there -was a problem with initialization of the resources. +Initialization of the Admin Queue failed. +.br +Device may not be responding or there was a problem with initialization of +the resources. .It ena%d: Cannot get attribute for ena device rc: %d .Pp Failed to get attributes of the device from the controller. @@ -141,11 +146,14 @@ Errors occurred when trying to configure AENQ groups. .It ena%d: could not allocate irq vector: %d .It ena%d: Unable to allocate bus resource: registers .Pp -Resource allocation failed when initializing the device; driver will not -be attached. +Resource allocation failed when initializing the device. +.br +Driver will not be attached. .It ena%d: ENA device init failed (err: %d) .Pp -Device initialization failed; driver will not be attached. +Device initialization failed. +.br +Driver will not be attached. .It ena%d: could not activate irq vector: %d .Pp Error occurred when trying to activate interrupt vectors for Admin Queue. @@ -157,13 +165,16 @@ Error occurred when trying to register Admin Queue int Error occurred during configuration of the Admin Queue interrupts. .It ena%d: Enable MSI-X failed .Pp -Configuration of the MSI-X for Admin Queue failed; there could be lack -of resources or interrupts could not have been configured; driver will -not be attached. +Configuration of the MSI-X for Admin Queue failed. +.br +There could be lack of resources or interrupts could not have been configured. +.br +Driver will not be attached. .It ena%d: VLAN is in use, detach first .Pp -VLANs are being used when trying to detach the driver; VLANs should be detached -first and then detach routine should be called again. +VLANs are being used when trying to detach the driver. +.br +VLANs must be detached first and then detach routine have to be called again. .It ena%d: Unmapped RX DMA tag associations .It ena%d: Unmapped TX DMA tag associations .Pp @@ -175,8 +186,9 @@ Error occurred when trying to destroy RX/TX DMA tag. .It ena%d: Cannot fill hash control .It ena%d: WARNING: RSS was not properly initialized, it will affect bandwidth .Pp -Error occurred during initialization of one of RSS resources; device is still -going to work but it will affect performance because all RX packets will be +Error occurred during initialization of one of RSS resources. +.br +The device will work with reduced performance because all RX packets will be passed to queue 0 and there will be no hash information. .It ena%d: failed to tear down irq: %d .It ena%d: dev has no parent while releasing res for irq: %d @@ -196,16 +208,20 @@ Requested MTU value is not supported and will not be s Device stopped responding and will be reset. .It ena%d: Found a Tx that wasn't completed on time, qid %d, index %d. .Pp -Packet was pushed to the NIC but not sent within given time limit; it may -be caused by hang of the IO queue. +Packet was pushed to the NIC but not sent within given time limit. +.br +It may be caused by hang of the IO queue. .It ena%d: The number of lost tx completion is aboce the threshold (%d > %d). Reset the device .Pp -If too many Tx wasn't completed on time the device is going to be reset; it may -be caused by hanged queue or device. +If too many Tx wasn't completed on time the device is going to be reset. +.br +It may be caused by hanged queue or device. .It ena%d: trigger reset is on .Pp -Device will be reset; reset is triggered either by watchdog or if too many TX -packets were not completed on time. +Device will be reset. +.br +Reset is triggered either by watchdog or if too many TX packets were not +completed on time. .It ena%d: invalid value recvd .Pp Link status received from the device in the AENQ handler is invalid. @@ -220,7 +236,9 @@ Link status received from the device in the AENQ handl .It ena%d: could not allocate irq vector: %d .It ena%d: failed to register interrupt handler for irq %ju: %d .Pp -IO resources initialization failed. Interface will not be brought up. +IO resources initialization failed. +.br +Interface will not be brought up. .It ena%d: LRO[%d] Initialization failed! .Pp Initialization of the LRO for the RX ring failed. @@ -228,20 +246,26 @@ Initialization of the LRO for the RX ring failed. .It ena%d: failed to add buffer for rx queue %d .It ena%d: refilled rx queue %d with %d pages only .Pp -Allocation of resources used on RX path failed; if happened during -initialization of the IO queue, the interface will not be brought up. +Allocation of resources used on RX path failed. +.br +If happened during initialization of the IO queue, the interface will not be +brought up. .It ena%d: ioctl promisc/allmulti .Pp -IOCTL request for the device to work in promiscuous/allmulti mode; see +IOCTL request for the device to work in promiscuous/allmulti mode. +.br +See .Xr ifconfig 8 for more details. .It ena%d: too many fragments. Last fragment: %d! .Pp Packet with unsupported number of segments was queued for sending to the -device; packet will be dropped. +device. +.br +Packet will be dropped. .Sh SUPPORT -If an issue is identified with the released source code with a supported adapter -email the specific information related to the issue to +If an issue is identified with the released source code with a supported +adapter, please email the specific information related to the issue to .Aq Mt mk@semihalf.com and .Aq Mt mw@semihalf.com . Modified: releng/11.4/sys/contrib/ena-com/ena_com.c ============================================================================== --- releng/11.4/sys/contrib/ena-com/ena_com.c Tue May 26 19:34:05 2020 (r361538) +++ releng/11.4/sys/contrib/ena-com/ena_com.c Tue May 26 22:41:12 2020 (r361539) @@ -1,7 +1,7 @@ /*- * BSD LICENSE * - * Copyright (c) 2015-2017 Amazon.com, Inc. or its affiliates. + * Copyright (c) 2015-2020 Amazon.com, Inc. or its affiliates. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -32,9 +32,6 @@ */ #include "ena_com.h" -#ifdef ENA_INTERNAL -#include "ena_gen_info.h" -#endif /*****************************************************************************/ /*****************************************************************************/ @@ -52,9 +49,6 @@ #define ENA_EXTENDED_STAT_GET_QUEUE(_funct_queue) (_funct_queue >> 16) #endif /* ENA_EXTENDED_STATS */ -#define MIN_ENA_VER (((ENA_COMMON_SPEC_VERSION_MAJOR) << \ - ENA_REGS_VERSION_MAJOR_VERSION_SHIFT) \ - | (ENA_COMMON_SPEC_VERSION_MINOR)) #define ENA_CTRL_MAJOR 0 #define ENA_CTRL_MINOR 0 @@ -76,6 +70,10 @@ #define ENA_REGS_ADMIN_INTR_MASK 1 +#define ENA_MIN_POLL_US 100 + +#define ENA_MAX_POLL_US 5000 + /*****************************************************************************/ /*****************************************************************************/ /*****************************************************************************/ @@ -103,7 +101,7 @@ struct ena_com_stats_ctx { struct ena_admin_acq_get_stats_resp get_resp; }; -static inline int ena_com_mem_addr_set(struct ena_com_dev *ena_dev, +static int ena_com_mem_addr_set(struct ena_com_dev *ena_dev, struct ena_common_mem_addr *ena_addr, dma_addr_t addr) { @@ -112,8 +110,8 @@ static inline int ena_com_mem_addr_set(struct ena_com_ return ENA_COM_INVAL; } - ena_addr->mem_addr_low = (u32)addr; - ena_addr->mem_addr_high = (u16)((u64)addr >> 32); + ena_addr->mem_addr_low = lower_32_bits(addr); + ena_addr->mem_addr_high = (u16)upper_32_bits(addr); return 0; } @@ -127,7 +125,7 @@ static int ena_com_admin_init_sq(struct ena_com_admin_ sq->mem_handle); if (!sq->entries) { - ena_trc_err("memory allocation failed"); + ena_trc_err("memory allocation failed\n"); return ENA_COM_NO_MEM; } @@ -149,7 +147,7 @@ static int ena_com_admin_init_cq(struct ena_com_admin_ cq->mem_handle); if (!cq->entries) { - ena_trc_err("memory allocation failed"); + ena_trc_err("memory allocation failed\n"); return ENA_COM_NO_MEM; } @@ -174,7 +172,7 @@ static int ena_com_admin_init_aenq(struct ena_com_dev aenq->mem_handle); if (!aenq->entries) { - ena_trc_err("memory allocation failed"); + ena_trc_err("memory allocation failed\n"); return ENA_COM_NO_MEM; } @@ -204,7 +202,7 @@ static int ena_com_admin_init_aenq(struct ena_com_dev return 0; } -static inline void comp_ctxt_release(struct ena_com_admin_queue *queue, +static void comp_ctxt_release(struct ena_com_admin_queue *queue, struct ena_comp_ctx *comp_ctx) { comp_ctx->occupied = false; @@ -220,6 +218,11 @@ static struct ena_comp_ctx *get_comp_ctxt(struct ena_c return NULL; } + if (unlikely(!queue->comp_ctx)) { + ena_trc_err("Completion context is NULL\n"); + return NULL; + } + if (unlikely(queue->comp_ctx[command_id].occupied && capture)) { ena_trc_err("Completion context is occupied\n"); return NULL; @@ -249,7 +252,7 @@ static struct ena_comp_ctx *__ena_com_submit_admin_cmd tail_masked = admin_queue->sq.tail & queue_size_mask; /* In case of queue FULL */ - cnt = ATOMIC32_READ(&admin_queue->outstanding_cmds); + cnt = (u16)ATOMIC32_READ(&admin_queue->outstanding_cmds); if (cnt >= admin_queue->q_depth) { ena_trc_dbg("admin queue is full.\n"); admin_queue->stats.out_of_space++; @@ -293,7 +296,7 @@ static struct ena_comp_ctx *__ena_com_submit_admin_cmd return comp_ctx; } -static inline int ena_com_init_comp_ctxt(struct ena_com_admin_queue *queue) +static int ena_com_init_comp_ctxt(struct ena_com_admin_queue *queue) { size_t size = queue->q_depth * sizeof(struct ena_comp_ctx); struct ena_comp_ctx *comp_ctx; @@ -301,7 +304,7 @@ static inline int ena_com_init_comp_ctxt(struct ena_co queue->comp_ctx = ENA_MEM_ALLOC(queue->q_dmadev, size); if (unlikely(!queue->comp_ctx)) { - ena_trc_err("memory allocation failed"); + ena_trc_err("memory allocation failed\n"); return ENA_COM_NO_MEM; } @@ -320,7 +323,7 @@ static struct ena_comp_ctx *ena_com_submit_admin_cmd(s struct ena_admin_acq_entry *comp, size_t comp_size_in_bytes) { - unsigned long flags; + unsigned long flags = 0; struct ena_comp_ctx *comp_ctx; ENA_SPINLOCK_LOCK(admin_queue->q_lock, flags); @@ -332,7 +335,7 @@ static struct ena_comp_ctx *ena_com_submit_admin_cmd(s cmd_size_in_bytes, comp, comp_size_in_bytes); - if (unlikely(IS_ERR(comp_ctx))) + if (IS_ERR(comp_ctx)) admin_queue->running_state = false; ENA_SPINLOCK_UNLOCK(admin_queue->q_lock, flags); @@ -348,6 +351,7 @@ static int ena_com_init_io_sq(struct ena_com_dev *ena_ memset(&io_sq->desc_addr, 0x0, sizeof(io_sq->desc_addr)); + io_sq->dma_addr_bits = (u8)ena_dev->dma_addr_bits; io_sq->desc_entry_size = (io_sq->direction == ENA_COM_IO_QUEUE_DIRECTION_TX) ? sizeof(struct ena_eth_io_tx_desc) : @@ -373,18 +377,21 @@ static int ena_com_init_io_sq(struct ena_com_dev *ena_ } if (!io_sq->desc_addr.virt_addr) { - ena_trc_err("memory allocation failed"); + ena_trc_err("memory allocation failed\n"); return ENA_COM_NO_MEM; } } if (io_sq->mem_queue_type == ENA_ADMIN_PLACEMENT_POLICY_DEV) { /* Allocate bounce buffers */ - io_sq->bounce_buf_ctrl.buffer_size = ena_dev->llq_info.desc_list_entry_size; - io_sq->bounce_buf_ctrl.buffers_num = ENA_COM_BOUNCE_BUFFER_CNTRL_CNT; + io_sq->bounce_buf_ctrl.buffer_size = + ena_dev->llq_info.desc_list_entry_size; + io_sq->bounce_buf_ctrl.buffers_num = + ENA_COM_BOUNCE_BUFFER_CNTRL_CNT; io_sq->bounce_buf_ctrl.next_to_use = 0; - size = io_sq->bounce_buf_ctrl.buffer_size * io_sq->bounce_buf_ctrl.buffers_num; + size = io_sq->bounce_buf_ctrl.buffer_size * + io_sq->bounce_buf_ctrl.buffers_num; ENA_MEM_ALLOC_NODE(ena_dev->dmadev, size, @@ -395,11 +402,12 @@ static int ena_com_init_io_sq(struct ena_com_dev *ena_ io_sq->bounce_buf_ctrl.base_buffer = ENA_MEM_ALLOC(ena_dev->dmadev, size); if (!io_sq->bounce_buf_ctrl.base_buffer) { - ena_trc_err("bounce buffer memory allocation failed"); + ena_trc_err("bounce buffer memory allocation failed\n"); return ENA_COM_NO_MEM; } - memcpy(&io_sq->llq_info, &ena_dev->llq_info, sizeof(io_sq->llq_info)); + memcpy(&io_sq->llq_info, &ena_dev->llq_info, + sizeof(io_sq->llq_info)); /* Initiate the first bounce buffer */ io_sq->llq_buf_ctrl.curr_bounce_buf = @@ -408,6 +416,12 @@ static int ena_com_init_io_sq(struct ena_com_dev *ena_ 0x0, io_sq->llq_info.desc_list_entry_size); io_sq->llq_buf_ctrl.descs_left_in_line = io_sq->llq_info.descs_num_before_header; + io_sq->disable_meta_caching = + io_sq->llq_info.disable_meta_caching; + + if (io_sq->llq_info.max_entries_in_tx_burst > 0) + io_sq->entries_in_tx_burst_left = + io_sq->llq_info.max_entries_in_tx_burst; } io_sq->tail = 0; @@ -451,7 +465,7 @@ static int ena_com_init_io_cq(struct ena_com_dev *ena_ } if (!io_cq->cdesc_addr.virt_addr) { - ena_trc_err("memory allocation failed"); + ena_trc_err("memory allocation failed\n"); return ENA_COM_NO_MEM; } @@ -500,12 +514,12 @@ static void ena_com_handle_admin_completion(struct ena cqe = &admin_queue->cq.entries[head_masked]; /* Go over all the completions */ - while ((cqe->acq_common_descriptor.flags & + while ((READ_ONCE8(cqe->acq_common_descriptor.flags) & ENA_ADMIN_ACQ_COMMON_DESC_PHASE_MASK) == phase) { /* Do not read the rest of the completion entry before the * phase bit was validated */ - rmb(); + dma_rmb(); ena_com_handle_single_admin_completion(admin_queue, cqe); head_masked++; @@ -529,12 +543,9 @@ static int ena_com_comp_status_to_errno(u8 comp_status if (unlikely(comp_status != 0)) ena_trc_err("admin command failed[%u]\n", comp_status); - if (unlikely(comp_status > ENA_ADMIN_UNKNOWN_ERROR)) - return ENA_COM_INVAL; - switch (comp_status) { case ENA_ADMIN_SUCCESS: - return 0; + return ENA_COM_OK; case ENA_ADMIN_RESOURCE_ALLOCATION_FAILURE: return ENA_COM_NO_MEM; case ENA_ADMIN_UNSUPPORTED_OPCODE: @@ -546,23 +557,32 @@ static int ena_com_comp_status_to_errno(u8 comp_status return ENA_COM_INVAL; } - return 0; + return ENA_COM_INVAL; } +static inline void ena_delay_exponential_backoff_us(u32 exp, u32 delay_us) +{ + delay_us = ENA_MAX32(ENA_MIN_POLL_US, delay_us); + delay_us = ENA_MIN32(delay_us * (1 << exp), ENA_MAX_POLL_US); + ENA_USLEEP(delay_us); +} + static int ena_com_wait_and_process_admin_cq_polling(struct ena_comp_ctx *comp_ctx, struct ena_com_admin_queue *admin_queue) { - unsigned long flags, timeout; + unsigned long flags = 0; + ena_time_t timeout; int ret; + u32 exp = 0; timeout = ENA_GET_SYSTEM_TIMEOUT(admin_queue->completion_timeout); while (1) { - ENA_SPINLOCK_LOCK(admin_queue->q_lock, flags); - ena_com_handle_admin_completion(admin_queue); - ENA_SPINLOCK_UNLOCK(admin_queue->q_lock, flags); + ENA_SPINLOCK_LOCK(admin_queue->q_lock, flags); + ena_com_handle_admin_completion(admin_queue); + ENA_SPINLOCK_UNLOCK(admin_queue->q_lock, flags); - if (comp_ctx->status != ENA_CMD_SUBMITTED) + if (comp_ctx->status != ENA_CMD_SUBMITTED) break; if (ENA_TIME_EXPIRE(timeout)) { @@ -577,7 +597,7 @@ static int ena_com_wait_and_process_admin_cq_polling(s goto err; } - ENA_MSLEEP(100); + ena_delay_exponential_backoff_us(exp++, admin_queue->ena_dev->ena_min_poll_delay_us); } if (unlikely(comp_ctx->status == ENA_CMD_ABORTED)) { @@ -598,42 +618,121 @@ err: return ret; } +/** + * Set the LLQ configurations of the firmware + * + * The driver provides only the enabled feature values to the device, + * which in turn, checks if they are supported. + */ +static int ena_com_set_llq(struct ena_com_dev *ena_dev) +{ + struct ena_com_admin_queue *admin_queue; + struct ena_admin_set_feat_cmd cmd; + struct ena_admin_set_feat_resp resp; + struct ena_com_llq_info *llq_info = &ena_dev->llq_info; + int ret; + + memset(&cmd, 0x0, sizeof(cmd)); + admin_queue = &ena_dev->admin_queue; + + cmd.aq_common_descriptor.opcode = ENA_ADMIN_SET_FEATURE; + cmd.feat_common.feature_id = ENA_ADMIN_LLQ; + + cmd.u.llq.header_location_ctrl_enabled = llq_info->header_location_ctrl; + cmd.u.llq.entry_size_ctrl_enabled = llq_info->desc_list_entry_size_ctrl; + cmd.u.llq.desc_num_before_header_enabled = llq_info->descs_num_before_header; + cmd.u.llq.descriptors_stride_ctrl_enabled = llq_info->desc_stride_ctrl; + + if (llq_info->disable_meta_caching) + cmd.u.llq.accel_mode.u.set.enabled_flags |= + BIT(ENA_ADMIN_DISABLE_META_CACHING); + + if (llq_info->max_entries_in_tx_burst) + cmd.u.llq.accel_mode.u.set.enabled_flags |= + BIT(ENA_ADMIN_LIMIT_TX_BURST); + + ret = ena_com_execute_admin_command(admin_queue, + (struct ena_admin_aq_entry *)&cmd, + sizeof(cmd), + (struct ena_admin_acq_entry *)&resp, + sizeof(resp)); + + if (unlikely(ret)) + ena_trc_err("Failed to set LLQ configurations: %d\n", ret); + + return ret; +} + static int ena_com_config_llq_info(struct ena_com_dev *ena_dev, - struct ena_admin_feature_llq_desc *llq_desc) + struct ena_admin_feature_llq_desc *llq_features, + struct ena_llq_configurations *llq_default_cfg) { struct ena_com_llq_info *llq_info = &ena_dev->llq_info; + u16 supported_feat; + int rc; memset(llq_info, 0, sizeof(*llq_info)); - switch (llq_desc->header_location_ctrl) { - case ENA_ADMIN_INLINE_HEADER: - llq_info->inline_header = true; - break; - case ENA_ADMIN_HEADER_RING: - llq_info->inline_header = false; - break; - default: - ena_trc_err("Invalid header location control\n"); + supported_feat = llq_features->header_location_ctrl_supported; + + if (likely(supported_feat & llq_default_cfg->llq_header_location)) { + llq_info->header_location_ctrl = + llq_default_cfg->llq_header_location; + } else { + ena_trc_err("Invalid header location control, supported: 0x%x\n", + supported_feat); return -EINVAL; } - switch (llq_desc->entry_size_ctrl) { - case ENA_ADMIN_LIST_ENTRY_SIZE_128B: - llq_info->desc_list_entry_size = 128; - break; - case ENA_ADMIN_LIST_ENTRY_SIZE_192B: - llq_info->desc_list_entry_size = 192; - break; - case ENA_ADMIN_LIST_ENTRY_SIZE_256B: - llq_info->desc_list_entry_size = 256; - break; - default: - ena_trc_err("Invalid entry_size_ctrl %d\n", - llq_desc->entry_size_ctrl); - return -EINVAL; + if (likely(llq_info->header_location_ctrl == ENA_ADMIN_INLINE_HEADER)) { + supported_feat = llq_features->descriptors_stride_ctrl_supported; + if (likely(supported_feat & llq_default_cfg->llq_stride_ctrl)) { + llq_info->desc_stride_ctrl = llq_default_cfg->llq_stride_ctrl; + } else { + if (supported_feat & ENA_ADMIN_MULTIPLE_DESCS_PER_ENTRY) { + llq_info->desc_stride_ctrl = ENA_ADMIN_MULTIPLE_DESCS_PER_ENTRY; + } else if (supported_feat & ENA_ADMIN_SINGLE_DESC_PER_ENTRY) { + llq_info->desc_stride_ctrl = ENA_ADMIN_SINGLE_DESC_PER_ENTRY; + } else { + ena_trc_err("Invalid desc_stride_ctrl, supported: 0x%x\n", + supported_feat); + return -EINVAL; + } + + ena_trc_err("Default llq stride ctrl is not supported, performing fallback, default: 0x%x, supported: 0x%x, used: 0x%x\n", + llq_default_cfg->llq_stride_ctrl, + supported_feat, + llq_info->desc_stride_ctrl); + } + } else { + llq_info->desc_stride_ctrl = 0; } - if ((llq_info->desc_list_entry_size & 0x7)) { + supported_feat = llq_features->entry_size_ctrl_supported; + if (likely(supported_feat & llq_default_cfg->llq_ring_entry_size)) { + llq_info->desc_list_entry_size_ctrl = llq_default_cfg->llq_ring_entry_size; + llq_info->desc_list_entry_size = llq_default_cfg->llq_ring_entry_size_value; + } else { + if (supported_feat & ENA_ADMIN_LIST_ENTRY_SIZE_128B) { + llq_info->desc_list_entry_size_ctrl = ENA_ADMIN_LIST_ENTRY_SIZE_128B; + llq_info->desc_list_entry_size = 128; + } else if (supported_feat & ENA_ADMIN_LIST_ENTRY_SIZE_192B) { + llq_info->desc_list_entry_size_ctrl = ENA_ADMIN_LIST_ENTRY_SIZE_192B; + llq_info->desc_list_entry_size = 192; + } else if (supported_feat & ENA_ADMIN_LIST_ENTRY_SIZE_256B) { + llq_info->desc_list_entry_size_ctrl = ENA_ADMIN_LIST_ENTRY_SIZE_256B; + llq_info->desc_list_entry_size = 256; + } else { + ena_trc_err("Invalid entry_size_ctrl, supported: 0x%x\n", supported_feat); + return -EINVAL; + } + + ena_trc_err("Default llq ring entry size is not supported, performing fallback, default: 0x%x, supported: 0x%x, used: 0x%x\n", + llq_default_cfg->llq_ring_entry_size, + supported_feat, + llq_info->desc_list_entry_size); + } + if (unlikely(llq_info->desc_list_entry_size & 0x7)) { /* The desc list entry size should be whole multiply of 8 * This requirement comes from __iowrite64_copy() */ @@ -642,35 +741,56 @@ static int ena_com_config_llq_info(struct ena_com_dev return -EINVAL; } - if (llq_info->inline_header) { - llq_info->desc_stride_ctrl = llq_desc->descriptors_stride_ctrl; - if ((llq_info->desc_stride_ctrl != ENA_ADMIN_SINGLE_DESC_PER_ENTRY) && - (llq_info->desc_stride_ctrl != ENA_ADMIN_MULTIPLE_DESCS_PER_ENTRY)) { - ena_trc_err("Invalid desc_stride_ctrl %d\n", - llq_info->desc_stride_ctrl); - return -EINVAL; - } - } else { - llq_info->desc_stride_ctrl = ENA_ADMIN_SINGLE_DESC_PER_ENTRY; - } - - if (llq_info->desc_stride_ctrl == ENA_ADMIN_SINGLE_DESC_PER_ENTRY) + if (llq_info->desc_stride_ctrl == ENA_ADMIN_MULTIPLE_DESCS_PER_ENTRY) llq_info->descs_per_entry = llq_info->desc_list_entry_size / sizeof(struct ena_eth_io_tx_desc); else llq_info->descs_per_entry = 1; - llq_info->descs_num_before_header = llq_desc->desc_num_before_header_ctrl; + supported_feat = llq_features->desc_num_before_header_supported; + if (likely(supported_feat & llq_default_cfg->llq_num_decs_before_header)) { + llq_info->descs_num_before_header = llq_default_cfg->llq_num_decs_before_header; + } else { + if (supported_feat & ENA_ADMIN_LLQ_NUM_DESCS_BEFORE_HEADER_2) { + llq_info->descs_num_before_header = ENA_ADMIN_LLQ_NUM_DESCS_BEFORE_HEADER_2; + } else if (supported_feat & ENA_ADMIN_LLQ_NUM_DESCS_BEFORE_HEADER_1) { + llq_info->descs_num_before_header = ENA_ADMIN_LLQ_NUM_DESCS_BEFORE_HEADER_1; + } else if (supported_feat & ENA_ADMIN_LLQ_NUM_DESCS_BEFORE_HEADER_4) { + llq_info->descs_num_before_header = ENA_ADMIN_LLQ_NUM_DESCS_BEFORE_HEADER_4; + } else if (supported_feat & ENA_ADMIN_LLQ_NUM_DESCS_BEFORE_HEADER_8) { + llq_info->descs_num_before_header = ENA_ADMIN_LLQ_NUM_DESCS_BEFORE_HEADER_8; + } else { + ena_trc_err("Invalid descs_num_before_header, supported: 0x%x\n", + supported_feat); + return -EINVAL; + } - return 0; -} + ena_trc_err("Default llq num descs before header is not supported, performing fallback, default: 0x%x, supported: 0x%x, used: 0x%x\n", + llq_default_cfg->llq_num_decs_before_header, + supported_feat, + llq_info->descs_num_before_header); + } + /* Check for accelerated queue supported */ + llq_info->disable_meta_caching = + llq_features->accel_mode.u.get.supported_flags & + BIT(ENA_ADMIN_DISABLE_META_CACHING); + if (llq_features->accel_mode.u.get.supported_flags & BIT(ENA_ADMIN_LIMIT_TX_BURST)) + llq_info->max_entries_in_tx_burst = + llq_features->accel_mode.u.get.max_tx_burst_size / + llq_default_cfg->llq_ring_entry_size_value; + rc = ena_com_set_llq(ena_dev); + if (rc) + ena_trc_err("Cannot set LLQ configuration: %d\n", rc); + return rc; +} + static int ena_com_wait_and_process_admin_cq_interrupts(struct ena_comp_ctx *comp_ctx, struct ena_com_admin_queue *admin_queue) { - unsigned long flags; + unsigned long flags = 0; int ret; ENA_WAIT_EVENT_WAIT(comp_ctx->wait_event, @@ -687,16 +807,25 @@ static int ena_com_wait_and_process_admin_cq_interrupt admin_queue->stats.no_completion++; ENA_SPINLOCK_UNLOCK(admin_queue->q_lock, flags); - if (comp_ctx->status == ENA_CMD_COMPLETED) - ena_trc_err("The ena device have completion but the driver didn't receive any MSI-X interrupt (cmd %d)\n", - comp_ctx->cmd_opcode); - else - ena_trc_err("The ena device doesn't send any completion for the admin cmd %d status %d\n", + if (comp_ctx->status == ENA_CMD_COMPLETED) { + ena_trc_err("The ena device sent a completion but the driver didn't receive a MSI-X interrupt (cmd %d), autopolling mode is %s\n", + comp_ctx->cmd_opcode, admin_queue->auto_polling ? "ON" : "OFF"); + /* Check if fallback to polling is enabled */ + if (admin_queue->auto_polling) + admin_queue->polling = true; + } else { + ena_trc_err("The ena device didn't send a completion for the admin cmd %d status %d\n", comp_ctx->cmd_opcode, comp_ctx->status); - - admin_queue->running_state = false; - ret = ENA_COM_TIMER_EXPIRED; - goto err; + } + /* Check if shifted to polling mode. + * This will happen if there is a completion without an interrupt + * and autopolling mode is enabled. Continuing normal execution in such case + */ + if (!admin_queue->polling) { + admin_queue->running_state = false; + ret = ENA_COM_TIMER_EXPIRED; + goto err; + } } ret = ena_com_comp_status_to_errno(comp_ctx->comp_status); @@ -715,7 +844,7 @@ static u32 ena_com_reg_bar_read32(struct ena_com_dev * volatile struct ena_admin_ena_mmio_req_read_less_resp *read_resp = mmio_read->read_resp; u32 mmio_read_reg, ret, i; - unsigned long flags; + unsigned long flags = 0; u32 timeout = mmio_read->reg_read_to; ENA_MIGHT_SLEEP(); @@ -736,15 +865,11 @@ static u32 ena_com_reg_bar_read32(struct ena_com_dev * mmio_read_reg |= mmio_read->seq_num & ENA_REGS_MMIO_REG_READ_REQ_ID_MASK; - /* make sure read_resp->req_id get updated before the hw can write - * there - */ - wmb(); + ENA_REG_WRITE32(ena_dev->bus, mmio_read_reg, + ena_dev->reg_bar + ENA_REGS_MMIO_REG_READ_OFF); - ENA_REG_WRITE32(ena_dev->bus, mmio_read_reg, ena_dev->reg_bar + ENA_REGS_MMIO_REG_READ_OFF); - for (i = 0; i < timeout; i++) { - if (read_resp->req_id == mmio_read->seq_num) + if (READ_ONCE16(read_resp->req_id) == mmio_read->seq_num) break; ENA_UDELAY(1); @@ -761,7 +886,7 @@ static u32 ena_com_reg_bar_read32(struct ena_com_dev * } if (read_resp->reg_off != offset) { - ena_trc_err("Read failure: wrong offset provided"); + ena_trc_err("Read failure: wrong offset provided\n"); ret = ENA_MMIO_READ_TIMEOUT; } else { ret = read_resp->reg_val; @@ -856,8 +981,9 @@ static void ena_com_io_queue_free(struct ena_com_dev * } if (io_sq->bounce_buf_ctrl.base_buffer) { - size = io_sq->llq_info.desc_list_entry_size * ENA_COM_BOUNCE_BUFFER_CNTRL_CNT; - ENA_MEM_FREE(ena_dev->dmadev, io_sq->bounce_buf_ctrl.base_buffer); + ENA_MEM_FREE(ena_dev->dmadev, + io_sq->bounce_buf_ctrl.base_buffer, + (io_sq->llq_info.desc_list_entry_size * ENA_COM_BOUNCE_BUFFER_CNTRL_CNT)); io_sq->bounce_buf_ctrl.base_buffer = NULL; } } @@ -865,9 +991,13 @@ static void ena_com_io_queue_free(struct ena_com_dev * static int wait_for_reset_state(struct ena_com_dev *ena_dev, u32 timeout, u16 exp_state) { - u32 val, i; + u32 val, exp = 0; + ena_time_t timeout_stamp; - for (i = 0; i < timeout; i++) { + /* Convert timeout from resolution of 100ms to us resolution. */ + timeout_stamp = ENA_GET_SYSTEM_TIMEOUT(100 * 1000 * timeout); + + while (1) { val = ena_com_reg_bar_read32(ena_dev, ENA_REGS_DEV_STS_OFF); if (unlikely(val == ENA_MMIO_READ_TIMEOUT)) { @@ -879,11 +1009,11 @@ static int wait_for_reset_state(struct ena_com_dev *en exp_state) return 0; - /* The resolution of the timeout is 100ms */ - ENA_MSLEEP(100); - } + if (ENA_TIME_EXPIRE(timeout_stamp)) + return ENA_COM_TIMER_EXPIRED; - return ENA_COM_TIMER_EXPIRED; + ena_delay_exponential_backoff_us(exp++, ena_dev->ena_min_poll_delay_us); + } } static bool ena_com_check_supported_feature_id(struct ena_com_dev *ena_dev, @@ -903,7 +1033,8 @@ static int ena_com_get_feature_ex(struct ena_com_dev * struct ena_admin_get_feat_resp *get_resp, enum ena_admin_aq_feature_id feature_id, dma_addr_t control_buf_dma_addr, - u32 control_buff_size) + u32 control_buff_size, + u8 feature_ver) { struct ena_com_admin_queue *admin_queue; struct ena_admin_get_feat_cmd get_cmd; @@ -934,7 +1065,7 @@ static int ena_com_get_feature_ex(struct ena_com_dev * } get_cmd.control_buffer.length = control_buff_size; - + get_cmd.feat_common.feature_version = feature_ver; get_cmd.feat_common.feature_id = feature_id; ret = ena_com_execute_admin_command(admin_queue, @@ -954,19 +1085,45 @@ static int ena_com_get_feature_ex(struct ena_com_dev * static int ena_com_get_feature(struct ena_com_dev *ena_dev, struct ena_admin_get_feat_resp *get_resp, - enum ena_admin_aq_feature_id feature_id) + enum ena_admin_aq_feature_id feature_id, + u8 feature_ver) { return ena_com_get_feature_ex(ena_dev, get_resp, feature_id, 0, - 0); + 0, + feature_ver); } +int ena_com_get_current_hash_function(struct ena_com_dev *ena_dev) +{ + return ena_dev->rss.hash_func; +} + +static void ena_com_hash_key_fill_default_key(struct ena_com_dev *ena_dev) +{ + struct ena_admin_feature_rss_flow_hash_control *hash_key = + (ena_dev->rss).hash_key; + + ENA_RSS_FILL_KEY(&hash_key->key, sizeof(hash_key->key)); + /* The key buffer is stored in the device in an array of + * uint32 elements. Therefore the number of elements can be derived + * by dividing the buffer length by the size of each array element. + * In current implementation each element is sized at uint32_t + * so it's actually a division by 4 but if the element size changes, + * there is no need to rewrite this code. + */ + hash_key->keys_num = sizeof(hash_key->key) / sizeof(hash_key->key[0]); +} + static int ena_com_hash_key_allocate(struct ena_com_dev *ena_dev) { struct ena_rss *rss = &ena_dev->rss; + if (!ena_com_check_supported_feature_id(ena_dev, ENA_ADMIN_RSS_HASH_FUNCTION)) + return ENA_COM_UNSUPPORTED; + ENA_MEM_ALLOC_COHERENT(ena_dev->dmadev, sizeof(*rss->hash_key), rss->hash_key, @@ -1030,7 +1187,7 @@ static int ena_com_indirect_table_allocate(struct ena_ int ret; ret = ena_com_get_feature(ena_dev, &get_resp, - ENA_ADMIN_RSS_REDIRECTION_TABLE_CONFIG); + ENA_ADMIN_RSS_REDIRECTION_TABLE_CONFIG, 0); if (unlikely(ret)) return ret; @@ -1094,7 +1251,9 @@ static void ena_com_indirect_table_destroy(struct ena_ rss->rss_ind_tbl = NULL; if (rss->host_rss_ind_tbl) - ENA_MEM_FREE(ena_dev->dmadev, rss->host_rss_ind_tbl); + ENA_MEM_FREE(ena_dev->dmadev, + rss->host_rss_ind_tbl, + ((1ULL << rss->tbl_log_size) * sizeof(u16))); rss->host_rss_ind_tbl = NULL; } @@ -1195,63 +1354,29 @@ static int ena_com_ind_tbl_convert_to_device(struct en return 0; } -static int ena_com_ind_tbl_convert_from_device(struct ena_com_dev *ena_dev) -{ - u16 dev_idx_to_host_tbl[ENA_TOTAL_NUM_QUEUES] = { (u16)-1 }; - struct ena_rss *rss = &ena_dev->rss; - u8 idx; - u16 i; - - for (i = 0; i < ENA_TOTAL_NUM_QUEUES; i++) - dev_idx_to_host_tbl[ena_dev->io_sq_queues[i].idx] = i; - - for (i = 0; i < 1 << rss->tbl_log_size; i++) { - if (rss->rss_ind_tbl[i].cq_idx > ENA_TOTAL_NUM_QUEUES) - return ENA_COM_INVAL; - idx = (u8)rss->rss_ind_tbl[i].cq_idx; - - if (dev_idx_to_host_tbl[idx] > ENA_TOTAL_NUM_QUEUES) - return ENA_COM_INVAL; - - rss->host_rss_ind_tbl[i] = dev_idx_to_host_tbl[idx]; - } - - return 0; -} - -static int ena_com_init_interrupt_moderation_table(struct ena_com_dev *ena_dev) -{ - size_t size; - - size = sizeof(struct ena_intr_moder_entry) * ENA_INTR_MAX_NUM_OF_LEVELS; - - ena_dev->intr_moder_tbl = ENA_MEM_ALLOC(ena_dev->dmadev, size); - if (!ena_dev->intr_moder_tbl) - return ENA_COM_NO_MEM; - - ena_com_config_default_interrupt_moderation_table(ena_dev); - - return 0; -} - static void ena_com_update_intr_delay_resolution(struct ena_com_dev *ena_dev, u16 intr_delay_resolution) { - struct ena_intr_moder_entry *intr_moder_tbl = ena_dev->intr_moder_tbl; - unsigned int i; + u16 prev_intr_delay_resolution = ena_dev->intr_delay_resolution; - if (!intr_delay_resolution) { + if (unlikely(!intr_delay_resolution)) { ena_trc_err("Illegal intr_delay_resolution provided. Going to use default 1 usec resolution\n"); - intr_delay_resolution = 1; + intr_delay_resolution = ENA_DEFAULT_INTR_DELAY_RESOLUTION; } - ena_dev->intr_delay_resolution = intr_delay_resolution; /* update Rx */ - for (i = 0; i < ENA_INTR_MAX_NUM_OF_LEVELS; i++) - intr_moder_tbl[i].intr_moder_interval /= intr_delay_resolution; + ena_dev->intr_moder_rx_interval = + ena_dev->intr_moder_rx_interval * + prev_intr_delay_resolution / + intr_delay_resolution; /* update Tx */ - ena_dev->intr_moder_tx_interval /= intr_delay_resolution; + ena_dev->intr_moder_tx_interval = + ena_dev->intr_moder_tx_interval * + prev_intr_delay_resolution / + intr_delay_resolution; + + ena_dev->intr_delay_resolution = intr_delay_resolution; } *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@freebsd.org Tue May 26 23:12:58 2020 Return-Path: Delivered-To: svn-src-all@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 7B9102F6BCF; Tue, 26 May 2020 23:12:58 +0000 (UTC) (envelope-from cem@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49WqWG2lP8z47QG; Tue, 26 May 2020 23:12:58 +0000 (UTC) (envelope-from cem@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 596B8B175; Tue, 26 May 2020 23:12:58 +0000 (UTC) (envelope-from cem@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04QNCwHN050169; Tue, 26 May 2020 23:12:58 GMT (envelope-from cem@FreeBSD.org) Received: (from cem@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04QNCwZR050167; Tue, 26 May 2020 23:12:58 GMT (envelope-from cem@FreeBSD.org) Message-Id: <202005262312.04QNCwZR050167@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: cem set sender to cem@FreeBSD.org using -f From: Conrad Meyer Date: Tue, 26 May 2020 23:12:57 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361540 - in head/sys/x86: include x86 X-SVN-Group: head X-SVN-Commit-Author: cem X-SVN-Commit-Paths: in head/sys/x86: include x86 X-SVN-Commit-Revision: 361540 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2020 23:12:58 -0000 Author: cem Date: Tue May 26 23:12:57 2020 New Revision: 361540 URL: https://svnweb.freebsd.org/changeset/base/361540 Log: x86: Detect new feature bits Fix an off-by-one in AVX512VPOPCNTDQ identification. That was actually the TME bit. Reported by: debdrup Modified: head/sys/x86/include/specialreg.h head/sys/x86/x86/identcpu.c Modified: head/sys/x86/include/specialreg.h ============================================================================== --- head/sys/x86/include/specialreg.h Tue May 26 22:41:12 2020 (r361539) +++ head/sys/x86/include/specialreg.h Tue May 26 23:12:57 2020 (r361540) @@ -396,6 +396,7 @@ #define AMDFEID_IBRS_ALWAYSON 0x00010000 #define AMDFEID_STIBP_ALWAYSON 0x00020000 #define AMDFEID_PREFER_IBRS 0x00040000 +#define AMDFEID_PPIN 0x00800000 #define AMDFEID_SSBD 0x01000000 /* SSBD via MSRC001_011F instead of MSR 0x48: */ #define AMDFEID_VIRT_SSBD 0x02000000 @@ -459,7 +460,9 @@ #define CPUID_STDEXT2_VPCLMULQDQ 0x00000400 #define CPUID_STDEXT2_AVX512VNNI 0x00000800 #define CPUID_STDEXT2_AVX512BITALG 0x00001000 +#define CPUID_STDEXT2_TME 0x00002000 #define CPUID_STDEXT2_AVX512VPOPCNTDQ 0x00004000 +#define CPUID_STDEXT2_LA57 0x00010000 #define CPUID_STDEXT2_RDPID 0x00400000 #define CPUID_STDEXT2_CLDEMOTE 0x02000000 #define CPUID_STDEXT2_MOVDIRI 0x08000000 @@ -472,6 +475,7 @@ */ #define CPUID_STDEXT3_AVX5124VNNIW 0x00000004 #define CPUID_STDEXT3_AVX5124FMAPS 0x00000008 +#define CPUID_STDEXT3_FSRM 0x00000010 #define CPUID_STDEXT3_AVX512VP2INTERSECT 0x00000100 #define CPUID_STDEXT3_MD_CLEAR 0x00000400 #define CPUID_STDEXT3_TSXFA 0x00002000 Modified: head/sys/x86/x86/identcpu.c ============================================================================== --- head/sys/x86/x86/identcpu.c Tue May 26 22:41:12 2020 (r361539) +++ head/sys/x86/x86/identcpu.c Tue May 26 23:12:57 2020 (r361540) @@ -1008,7 +1008,9 @@ printcpuinfo(void) "\013VPCLMULQDQ" "\014AVX512VNNI" "\015AVX512BITALG" - "\016AVX512VPOPCNTDQ" + "\016TME" + "\017AVX512VPOPCNTDQ" + "\021LA57" "\027RDPID" "\032CLDEMOTE" "\034MOVDIRI" @@ -1095,6 +1097,7 @@ printcpuinfo(void) "\021IBRS_ALWAYSON" "\022STIBP_ALWAYSON" "\023PREFER_IBRS" + "\030PPIN" "\031SSBD" "\032VIRT_SSBD" "\033SSB_NO" From owner-svn-src-all@freebsd.org Tue May 26 23:35:12 2020 Return-Path: Delivered-To: svn-src-all@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 A196E2F7588; Tue, 26 May 2020 23:35:12 +0000 (UTC) (envelope-from erj@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49Wr0w3nrfz48W6; Tue, 26 May 2020 23:35:12 +0000 (UTC) (envelope-from erj@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 7D0B0B62B; Tue, 26 May 2020 23:35:12 +0000 (UTC) (envelope-from erj@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04QNZCEG062907; Tue, 26 May 2020 23:35:12 GMT (envelope-from erj@FreeBSD.org) Received: (from erj@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04QNZA9P062898; Tue, 26 May 2020 23:35:10 GMT (envelope-from erj@FreeBSD.org) Message-Id: <202005262335.04QNZA9P062898@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: erj set sender to erj@FreeBSD.org using -f From: Eric Joyner Date: Tue, 26 May 2020 23:35:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361541 - in head: . sys/amd64/conf sys/arm64/conf sys/conf sys/contrib/dev/ice sys/dev/ice sys/modules sys/modules/ice sys/modules/ice_ddp tools/kerneldoc/subsys X-SVN-Group: head X-SVN-Commit-Author: erj X-SVN-Commit-Paths: in head: . sys/amd64/conf sys/arm64/conf sys/conf sys/contrib/dev/ice sys/dev/ice sys/modules sys/modules/ice sys/modules/ice_ddp tools/kerneldoc/subsys X-SVN-Commit-Revision: 361541 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2020 23:35:12 -0000 Author: erj Date: Tue May 26 23:35:10 2020 New Revision: 361541 URL: https://svnweb.freebsd.org/changeset/base/361541 Log: ice(4): Introduce new driver for Intel E800 Ethernet controllers The ice(4) driver is the driver for the Intel E8xx series Ethernet controllers; currently with codenames Columbiaville and Columbia Park. These new controllers support 100G speeds, as well as introducing more queues, better virtualization support, and more offload capabilities. Future work will enable virtual functions (like in ixl(4)) and the other functionality outlined above. For full functionality, the kernel should be compiled with "device ice_ddp" like in the amd64 NOTES file, and/or ice_ddp_load="YES" should be added to /boot/loader.conf so that the DDP package file included in this commit can be downloaded to the adapter. Otherwise, the adapter will fall back to a single queue mode with limited functionality. A man page for this driver will be forthcoming. MFC after: 1 month Relnotes: yes Sponsored by: Intel Corporation Differential Revision: https://reviews.freebsd.org/D21959 Added: head/sys/contrib/dev/ice/ head/sys/contrib/dev/ice/LICENSE (contents, props changed) head/sys/contrib/dev/ice/README (contents, props changed) head/sys/contrib/dev/ice/ice-1.3.9.0.pkg (contents, props changed) head/sys/dev/ice/ head/sys/dev/ice/ice_adminq_cmd.h (contents, props changed) head/sys/dev/ice/ice_alloc.h (contents, props changed) head/sys/dev/ice/ice_bitops.h (contents, props changed) head/sys/dev/ice/ice_common.c (contents, props changed) head/sys/dev/ice/ice_common.h (contents, props changed) head/sys/dev/ice/ice_common_sysctls.h (contents, props changed) head/sys/dev/ice/ice_common_txrx.h (contents, props changed) head/sys/dev/ice/ice_controlq.c (contents, props changed) head/sys/dev/ice/ice_controlq.h (contents, props changed) head/sys/dev/ice/ice_dcb.c (contents, props changed) head/sys/dev/ice/ice_dcb.h (contents, props changed) head/sys/dev/ice/ice_devids.h (contents, props changed) head/sys/dev/ice/ice_drv_info.h (contents, props changed) head/sys/dev/ice/ice_features.h (contents, props changed) head/sys/dev/ice/ice_flex_pipe.c (contents, props changed) head/sys/dev/ice/ice_flex_pipe.h (contents, props changed) head/sys/dev/ice/ice_flex_type.h (contents, props changed) head/sys/dev/ice/ice_flow.c (contents, props changed) head/sys/dev/ice/ice_flow.h (contents, props changed) head/sys/dev/ice/ice_hw_autogen.h (contents, props changed) head/sys/dev/ice/ice_iflib.h (contents, props changed) head/sys/dev/ice/ice_iflib_recovery_txrx.c (contents, props changed) head/sys/dev/ice/ice_iflib_sysctls.h (contents, props changed) head/sys/dev/ice/ice_iflib_txrx.c (contents, props changed) head/sys/dev/ice/ice_lan_tx_rx.h (contents, props changed) head/sys/dev/ice/ice_lib.c (contents, props changed) head/sys/dev/ice/ice_lib.h (contents, props changed) head/sys/dev/ice/ice_nvm.c (contents, props changed) head/sys/dev/ice/ice_nvm.h (contents, props changed) head/sys/dev/ice/ice_opts.h (contents, props changed) head/sys/dev/ice/ice_osdep.c (contents, props changed) head/sys/dev/ice/ice_osdep.h (contents, props changed) head/sys/dev/ice/ice_protocol_type.h (contents, props changed) head/sys/dev/ice/ice_resmgr.c (contents, props changed) head/sys/dev/ice/ice_resmgr.h (contents, props changed) head/sys/dev/ice/ice_rss.h (contents, props changed) head/sys/dev/ice/ice_sbq_cmd.h (contents, props changed) head/sys/dev/ice/ice_sched.c (contents, props changed) head/sys/dev/ice/ice_sched.h (contents, props changed) head/sys/dev/ice/ice_sriov.c (contents, props changed) head/sys/dev/ice/ice_sriov.h (contents, props changed) head/sys/dev/ice/ice_status.h (contents, props changed) head/sys/dev/ice/ice_strings.c (contents, props changed) head/sys/dev/ice/ice_switch.c (contents, props changed) head/sys/dev/ice/ice_switch.h (contents, props changed) head/sys/dev/ice/ice_type.h (contents, props changed) head/sys/dev/ice/if_ice_iflib.c (contents, props changed) head/sys/dev/ice/virtchnl.h (contents, props changed) head/sys/dev/ice/virtchnl_inline_ipsec.h (contents, props changed) head/sys/modules/ice/ head/sys/modules/ice/Makefile (contents, props changed) head/sys/modules/ice_ddp/ head/sys/modules/ice_ddp/Makefile (contents, props changed) head/tools/kerneldoc/subsys/Doxyfile-dev_ice (contents, props changed) Modified: head/MAINTAINERS head/sys/amd64/conf/GENERIC head/sys/amd64/conf/NOTES head/sys/arm64/conf/NOTES head/sys/conf/files.amd64 head/sys/conf/files.arm64 head/sys/modules/Makefile Modified: head/MAINTAINERS ============================================================================== --- head/MAINTAINERS Tue May 26 23:12:57 2020 (r361540) +++ head/MAINTAINERS Tue May 26 23:35:10 2020 (r361541) @@ -99,10 +99,12 @@ sys/compat/linuxkpi hselasky If in doubt, ask. #x11 phabricator group. (to avoid drm graphics drivers impact) +sys/contrib/dev/ice erj Pre-commit phabricator review requested. sys/contrib/ipfilter cy Pre-commit review requested. sys/dev/e1000 erj Pre-commit phabricator review requested. sys/dev/ixgbe erj Pre-commit phabricator review requested. sys/dev/ixl erj Pre-commit phabricator review requested. +sys/dev/ice erj Pre-commit phabricator review requested. sys/dev/sound/usb hselasky If in doubt, ask. sys/dev/usb hselasky If in doubt, ask. sys/dev/xen royger Pre-commit review recommended. Modified: head/sys/amd64/conf/GENERIC ============================================================================== --- head/sys/amd64/conf/GENERIC Tue May 26 23:12:57 2020 (r361540) +++ head/sys/amd64/conf/GENERIC Tue May 26 23:35:10 2020 (r361541) @@ -245,6 +245,7 @@ device ix # Intel PRO/10GbE PCIE PF Ethernet device ixv # Intel PRO/10GbE PCIE VF Ethernet device ixl # Intel 700 Series Physical Function device iavf # Intel Adaptive Virtual Function +device ice # Intel 800 Series Physical Function device vmx # VMware VMXNET3 Ethernet # PCI Ethernet NICs. Modified: head/sys/amd64/conf/NOTES ============================================================================== --- head/sys/amd64/conf/NOTES Tue May 26 23:12:57 2020 (r361540) +++ head/sys/amd64/conf/NOTES Tue May 26 23:35:10 2020 (r361541) @@ -291,6 +291,8 @@ device cpufreq # bxe: Broadcom NetXtreme II (BCM5771X/BCM578XX) PCIe 10Gb Ethernet # adapters. +# ice: Intel 800 Series Physical Function +# Requires the ice_ddp module for full functionality # ipw: Intel PRO/Wireless 2100 IEEE 802.11 adapter # Requires the ipw firmware module # iwi: Intel PRO/Wireless 2200BG/2225BG/2915ABG IEEE 802.11 adapters @@ -316,6 +318,8 @@ device iwi # Intel 2200BG/2225BG/2915ABG wireless NI device iwn # Intel 4965/1000/5000/6000 wireless NICs. device ixl # Intel 700 Series Physical Function device iavf # Intel Adaptive Virtual Function +device ice # Intel 800 Series Physical Function +device ice_ddp # Intel 800 Series DDP Package device mthca # Mellanox HCA InfiniBand device mlx4 # Shared code module between IB and Ethernet device mlx4ib # Mellanox ConnectX HCA InfiniBand Modified: head/sys/arm64/conf/NOTES ============================================================================== --- head/sys/arm64/conf/NOTES Tue May 26 23:12:57 2020 (r361540) +++ head/sys/arm64/conf/NOTES Tue May 26 23:35:10 2020 (r361541) @@ -83,6 +83,8 @@ device vnic # Cavium ThunderX NIC device al_eth # Annapurna Alpine Ethernet NIC device dwc_rk # Rockchip Designware device dwc_socfpga # Altera SOCFPGA Ethernet MAC +device ice # Intel 800 Series Physical Function +device ice_ddp # Intel 800 Series DDP Package # Etherswitch devices device e6000sw # Marvell mv88e6085 based switches Modified: head/sys/conf/files.amd64 ============================================================================== --- head/sys/conf/files.amd64 Tue May 26 23:12:57 2020 (r361540) +++ head/sys/conf/files.amd64 Tue May 26 23:35:10 2020 (r361541) @@ -144,6 +144,52 @@ dev/agp/agp_via.c optional agp dev/amdgpio/amdgpio.c optional amdgpio dev/hyperv/vmbus/amd64/hyperv_machdep.c optional hyperv dev/hyperv/vmbus/amd64/vmbus_vector.S optional hyperv +dev/ice/if_ice_iflib.c optional ice pci \ + compile-with "${NORMAL_C} -I$S/dev/ice" +dev/ice/ice_lib.c optional ice pci \ + compile-with "${NORMAL_C} -I$S/dev/ice" +dev/ice/ice_osdep.c optional ice pci \ + compile-with "${NORMAL_C} -I$S/dev/ice" +dev/ice/ice_resmgr.c optional ice pci \ + compile-with "${NORMAL_C} -I$S/dev/ice" +dev/ice/ice_strings.c optional ice pci \ + compile-with "${NORMAL_C} -I$S/dev/ice" +dev/ice/ice_iflib_recovery_txrx.c optional ice pci \ + compile-with "${NORMAL_C} -I$S/dev/ice" +dev/ice/ice_iflib_txrx.c optional ice pci \ + compile-with "${NORMAL_C} -I$S/dev/ice" +dev/ice/ice_common.c optional ice pci \ + compile-with "${NORMAL_C} -I$S/dev/ice" +dev/ice/ice_controlq.c optional ice pci \ + compile-with "${NORMAL_C} -I$S/dev/ice" +dev/ice/ice_dcb.c optional ice pci \ + compile-with "${NORMAL_C} -I$S/dev/ice" +dev/ice/ice_flex_pipe.c optional ice pci \ + compile-with "${NORMAL_C} -I$S/dev/ice" +dev/ice/ice_flow.c optional ice pci \ + compile-with "${NORMAL_C} -I$S/dev/ice" +dev/ice/ice_nvm.c optional ice pci \ + compile-with "${NORMAL_C} -I$S/dev/ice" +dev/ice/ice_sched.c optional ice pci \ + compile-with "${NORMAL_C} -I$S/dev/ice" +dev/ice/ice_sriov.c optional ice pci \ + compile-with "${NORMAL_C} -I$S/dev/ice" +dev/ice/ice_switch.c optional ice pci \ + compile-with "${NORMAL_C} -I$S/dev/ice" +ice_ddp.c optional ice_ddp \ + compile-with "${AWK} -f $S/tools/fw_stub.awk ice_ddp.fw:ice_ddp:0x01030900 -mice_ddp -c${.TARGET}" \ + no-implicit-rule before-depend local \ + clean "ice_ddp.c" +ice_ddp.fwo optional ice_ddp \ + dependency "ice_ddp.fw" \ + compile-with "${NORMAL_FWO}" \ + no-implicit-rule \ + clean "ice_ddp.fwo" +ice_ddp.fw optional ice_ddp \ + dependency "$S/contrib/dev/ice/ice-1.3.9.0.pkg" \ + compile-with "${CP} $S/contrib/dev/ice/ice-1.3.9.0.pkg ice_ddp.fw" \ + no-obj no-implicit-rule \ + clean "ice_ddp.fw" dev/ioat/ioat.c optional ioat pci dev/ioat/ioat_test.c optional ioat pci dev/ixl/if_ixl.c optional ixl pci \ Modified: head/sys/conf/files.arm64 ============================================================================== --- head/sys/conf/files.arm64 Tue May 26 23:12:57 2020 (r361540) +++ head/sys/conf/files.arm64 Tue May 26 23:35:10 2020 (r361541) @@ -240,6 +240,52 @@ dev/axgbe/xgbe-dev.c optional axgbe dev/axgbe/xgbe-drv.c optional axgbe dev/axgbe/xgbe-mdio.c optional axgbe dev/cpufreq/cpufreq_dt.c optional cpufreq fdt +dev/ice/if_ice_iflib.c optional ice pci \ + compile-with "${NORMAL_C} -I$S/dev/ice" +dev/ice/ice_lib.c optional ice pci \ + compile-with "${NORMAL_C} -I$S/dev/ice" +dev/ice/ice_osdep.c optional ice pci \ + compile-with "${NORMAL_C} -I$S/dev/ice" +dev/ice/ice_resmgr.c optional ice pci \ + compile-with "${NORMAL_C} -I$S/dev/ice" +dev/ice/ice_strings.c optional ice pci \ + compile-with "${NORMAL_C} -I$S/dev/ice" +dev/ice/ice_iflib_recovery_txrx.c optional ice pci \ + compile-with "${NORMAL_C} -I$S/dev/ice" +dev/ice/ice_iflib_txrx.c optional ice pci \ + compile-with "${NORMAL_C} -I$S/dev/ice" +dev/ice/ice_common.c optional ice pci \ + compile-with "${NORMAL_C} -I$S/dev/ice" +dev/ice/ice_controlq.c optional ice pci \ + compile-with "${NORMAL_C} -I$S/dev/ice" +dev/ice/ice_dcb.c optional ice pci \ + compile-with "${NORMAL_C} -I$S/dev/ice" +dev/ice/ice_flex_pipe.c optional ice pci \ + compile-with "${NORMAL_C} -I$S/dev/ice" +dev/ice/ice_flow.c optional ice pci \ + compile-with "${NORMAL_C} -I$S/dev/ice" +dev/ice/ice_nvm.c optional ice pci \ + compile-with "${NORMAL_C} -I$S/dev/ice" +dev/ice/ice_sched.c optional ice pci \ + compile-with "${NORMAL_C} -I$S/dev/ice" +dev/ice/ice_sriov.c optional ice pci \ + compile-with "${NORMAL_C} -I$S/dev/ice" +dev/ice/ice_switch.c optional ice pci \ + compile-with "${NORMAL_C} -I$S/dev/ice" +ice_ddp.c optional ice_ddp \ + compile-with "${AWK} -f $S/tools/fw_stub.awk ice_ddp.fw:ice_ddp:0x01030900 -mice_ddp -c${.TARGET}" \ + no-implicit-rule before-depend local \ + clean "ice_ddp.c" +ice_ddp.fwo optional ice_ddp \ + dependency "ice_ddp.fw" \ + compile-with "${NORMAL_FWO}" \ + no-implicit-rule \ + clean "ice_ddp.fwo" +ice_ddp.fw optional ice_ddp \ + dependency "$S/contrib/dev/ice/ice-1.3.9.0.pkg" \ + compile-with "${CP} $S/contrib/dev/ice/ice-1.3.9.0.pkg ice_ddp.fw" \ + no-obj no-implicit-rule \ + clean "ice_ddp.fw" dev/iicbus/sy8106a.c optional sy8106a fdt dev/iicbus/twsi/mv_twsi.c optional twsi fdt dev/iicbus/twsi/a10_twsi.c optional twsi fdt Added: head/sys/contrib/dev/ice/LICENSE ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/contrib/dev/ice/LICENSE Tue May 26 23:35:10 2020 (r361541) @@ -0,0 +1,41 @@ +Copyright (c) 2006-2018, Intel Corporation. +All rights reserved. + +Redistribution. Redistribution and use in binary form, without +modification, are permitted provided that the following conditions are +met: + +* Redistributions must reproduce the above copyright notice and the + following disclaimer in the documentation and/or other materials + provided with the distribution. +* Neither the name of Intel Corporation nor the names of its suppliers + may be used to endorse or promote products derived from this software + without specific prior written permission. +* No reverse engineering, decompilation, or disassembly of this software + is permitted. + +Limited patent license. Intel Corporation grants a world-wide, +royalty-free, non-exclusive license under patents it now or hereafter +owns or controls to make, have made, use, import, offer to sell and +sell ("Utilize") this software, but solely to the extent that any +such patent is necessary to Utilize the software alone, or in +combination with an operating system licensed under an approved Open +Source license as listed by the Open Source Initiative at +http://opensource.org/licenses. The patent license shall not apply to +any other combinations which include this software. No hardware per +se is licensed hereunder. + +DISCLAIMER. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND +CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, +BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR +TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE +USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH +DAMAGE. + + Added: head/sys/contrib/dev/ice/README ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/contrib/dev/ice/README Tue May 26 23:35:10 2020 (r361541) @@ -0,0 +1,197 @@ +Dynamic Device Personalization (DDP) Package +============================================ +February 21, 2020 + + +Contents +======== +- Overview +- Safe Mode +- Notes +- Installation & Troubleshooting +- Legal + + +Overview +======== +Adapters based on the Intel(R) Ethernet Controller 800 Series require a Dynamic +Device Personalization (DDP) package file to enable advanced features (such as +dynamic tunneling, Flow Director, RSS, and ADQ). + +DDP allows you to change the packet processing pipeline of a device by applying +a profile package to the device at runtime. Profiles can be used to, for +example, add support for new protocols, change existing protocols, or change +default settings. DDP profiles can also be rolled back without rebooting the +system. + +The DDP package loads during device initialization. The driver checks to see if +the DDP package is present and compatible. If this file exists, the driver will +load it into the device. If the DDP package file is missing or incompatible +with the driver, the driver will go into Safe Mode where it will use the +configuration contained in the device's NVM. See "Safe Mode" later in this +README for more information. + +A general purpose, OS-default DDP package is automatically installed with all +supported Intel Ethernet Controller 800 Series drivers on Microsoft* Windows*, +ESX*, FreeBSD*, and Linux* operating systems. Additional DDP packages are +available to address needs for specific market segments. For example, a +telecommunications (Comms) DDP package is available to support certain +market-specific protocols in addition to the protocols in the OS-default +package. + +The OS-default DDP package supports the following: +- MAC +- EtherType +- VLAN +- IPv4 +- IPv6 +- TCP +- ARP +- UDP +- SCTP +- ICMP +- ICMPv6 +- CTRL +- LLDP +- VXLAN-GPE +- VXLAN (non-GPE) +- Geneve +- GRE +- NVGRE +- RoCEv2 + + +Safe Mode +========= +Safe Mode disables advanced and performance features, and supports only basic +traffic and minimal functionality, such as updating the NVM or downloading a +new driver or DDP package. + +See the Intel(R) Ethernet Adapters and Devices User Guide for more details on +DDP and Safe Mode. + + +Notes +===== +- You cannot update the DDP package if any PF drivers are already loaded. To +overwrite a package, unload all PFs and then reload the driver with the new +package. + +- Except for Linux, you can only use one DDP package per driver, even if you +have more than one device installed that uses the driver. + +- Only the first loaded PF per device can download a package for that device. + +- If you are using DPDK, see the DPDK documentation at https://www.dpdk.org/ +for installation instructions and more information. + + +Installation and Troubleshooting +================================ + +Microsoft* Windows* +------------------- +The DDP package is installed as part of the driver binary. You don't need to +take additional steps to install the DDP package file. + +If you encounter issues with the DDP package file, download the latest driver. + + +ESX +--- +The DDP package is installed as part of the driver binary. You don't need to +take additional steps to install the DDP package file. + +If you encounter issues with the DDP package file, download the latest driver. + + +FreeBSD +------- +The FreeBSD driver automatically installs the default DDP package file during +driver installation. See the ice driver README for general installation and +building instructions. + +The DDP package loads during device initialization. The driver looks for the +ice_ddp module and checks that it contains a valid DDP package file. + +If you encounter issues with the DDP package file, you may need to download an +updated driver or ice_ddp module. See the log messages for more information. + +NOTE: It's important to do 'make install' during initial ice driver +installation so that the driver loads the DDP package automatically. + + +Linux +----- +The Linux driver automatically installs the default DDP package file during +driver installation. See the ice driver README for general installation and +building instructions. + +The DDP package loads during device initialization. The driver looks for +intel/ice/ddp/ice.pkg in your firmware root (typically /lib/firmware/ or +/lib/firmware/updates/) and checks that it contains a valid DDP package file. +The ice.pkg file is a symbolic link to the default DDP package file installed +by the linux-firmware software package or the ice out-of-tree driver +installation. + +If you encounter issues with the DDP package file, you may need to download an +updated driver or DDP package file. See the log messages for more information. + +You can install specific DDP package files for different physical devices in +the same system. To install a specific DDP package: + +1. Download the DDP package file (ice-x.x.x.x.zip) you want for your device. In +addition to licensing information and this README, this zip file contains the +following files: + ice-x.x.x.x.pkg + ice.pkg + +NOTE: The ice.pkg file is a Linux symbolic link file pointing to +ice-x.x.x.x.pkg (in the same path). + +2. Rename the ice-x.x.x.x.pkg file as ice-xxxxxxxxxxxxxxxx.pkg, where +'xxxxxxxxxxxxxxxx' is the unique 64-bit PCI Express device serial number (in +hex) of the device you want the package downloaded on. The filename must +include the complete serial number (including leading zeros) and be all +lowercase. For example, if the 64-bit serial number is b887a3ffffca0568, then +the file name would be ice-b887a3ffffca0568.pkg. + +To find the serial number from the PCI bus address, you can use the following +command: + +# lspci -vv -s af:00.0 | grep -i Serial +Capabilities: [150 v1] Device Serial Number b8-87-a3-ff-ff-ca-05-68 + +You can use the following command to format the serial number without the +dashes: + +# lspci -vv -s af:00.0 | grep -i Serial | awk '{print $7}' | sed s/-//g +b887a3ffffca0568 + +3. Copy the renamed DDP package file to /lib/firmware/updates/intel/ice/ddp/. +If the directory does not yet exist, create it before copying the file. + +4. Unload all of the PFs on the device. + +5. Reload the driver with the new package. + +NOTE: The presence of a device-specific DDP package file overrides the loading +of the default DDP package file (ice.pkg). + + +Legal / Disclaimers +=================== +Copyright (c) 2019 - 2020, Intel Corporation. + +Intel and the Intel logo are trademarks of Intel Corporation or its +subsidiaries in the U.S. and/or other countries. + +*Other names and brands may be claimed as the property of others. + +This software and the related documents are Intel copyrighted materials, and +your use of them is governed by the express license under which they were +provided to you ("License"). Unless the License provides otherwise, you may not +use, modify, copy, publish, distribute, disclose or transmit this software or +the related documents without Intel's prior written permission. +This software and the related documents are provided as is, with no express or +implied warranties, other than those that are expressly stated in the License. Added: head/sys/contrib/dev/ice/ice-1.3.9.0.pkg ============================================================================== Binary file. No diff available. Added: head/sys/dev/ice/ice_adminq_cmd.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/dev/ice/ice_adminq_cmd.h Tue May 26 23:35:10 2020 (r361541) @@ -0,0 +1,2968 @@ +/* SPDX-License-Identifier: BSD-3-Clause */ +/* Copyright (c) 2020, Intel Corporation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * 3. Neither the name of the Intel Corporation nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ +/*$FreeBSD$*/ + +#ifndef _ICE_ADMINQ_CMD_H_ +#define _ICE_ADMINQ_CMD_H_ + +/* This header file defines the Admin Queue commands, error codes and + * descriptor format. It is shared between Firmware and Software. + */ + +#define ICE_MAX_VSI 768 +#define ICE_AQC_TOPO_MAX_LEVEL_NUM 0x9 +#define ICE_AQ_SET_MAC_FRAME_SIZE_MAX 9728 + +struct ice_aqc_generic { + __le32 param0; + __le32 param1; + __le32 addr_high; + __le32 addr_low; +}; + +/* Get version (direct 0x0001) */ +struct ice_aqc_get_ver { + __le32 rom_ver; + __le32 fw_build; + u8 fw_branch; + u8 fw_major; + u8 fw_minor; + u8 fw_patch; + u8 api_branch; + u8 api_major; + u8 api_minor; + u8 api_patch; +}; + +/* Send driver version (indirect 0x0002) */ +struct ice_aqc_driver_ver { + u8 major_ver; + u8 minor_ver; + u8 build_ver; + u8 subbuild_ver; + u8 reserved[4]; + __le32 addr_high; + __le32 addr_low; +}; + +/* Queue Shutdown (direct 0x0003) */ +struct ice_aqc_q_shutdown { + u8 driver_unloading; +#define ICE_AQC_DRIVER_UNLOADING BIT(0) + u8 reserved[15]; +}; + +/* Get Expanded Error Code (0x0005, direct) */ +struct ice_aqc_get_exp_err { + __le32 reason; +#define ICE_AQC_EXPANDED_ERROR_NOT_PROVIDED 0xFFFFFFFF + __le32 identifier; + u8 rsvd[8]; +}; + +/* Request resource ownership (direct 0x0008) + * Release resource ownership (direct 0x0009) + */ +struct ice_aqc_req_res { + __le16 res_id; +#define ICE_AQC_RES_ID_NVM 1 +#define ICE_AQC_RES_ID_SDP 2 +#define ICE_AQC_RES_ID_CHNG_LOCK 3 +#define ICE_AQC_RES_ID_GLBL_LOCK 4 + __le16 access_type; +#define ICE_AQC_RES_ACCESS_READ 1 +#define ICE_AQC_RES_ACCESS_WRITE 2 + + /* Upon successful completion, FW writes this value and driver is + * expected to release resource before timeout. This value is provided + * in milliseconds. + */ + __le32 timeout; +#define ICE_AQ_RES_NVM_READ_DFLT_TIMEOUT_MS 3000 +#define ICE_AQ_RES_NVM_WRITE_DFLT_TIMEOUT_MS 180000 +#define ICE_AQ_RES_CHNG_LOCK_DFLT_TIMEOUT_MS 1000 +#define ICE_AQ_RES_GLBL_LOCK_DFLT_TIMEOUT_MS 3000 + /* For SDP: pin ID of the SDP */ + __le32 res_number; + /* Status is only used for ICE_AQC_RES_ID_GLBL_LOCK */ + __le16 status; +#define ICE_AQ_RES_GLBL_SUCCESS 0 +#define ICE_AQ_RES_GLBL_IN_PROG 1 +#define ICE_AQ_RES_GLBL_DONE 2 + u8 reserved[2]; +}; + +/* Get function capabilities (indirect 0x000A) + * Get device capabilities (indirect 0x000B) + */ +struct ice_aqc_list_caps { + u8 cmd_flags; + u8 pf_index; + u8 reserved[2]; + __le32 count; + __le32 addr_high; + __le32 addr_low; +}; + +/* Device/Function buffer entry, repeated per reported capability */ +struct ice_aqc_list_caps_elem { + __le16 cap; +#define ICE_AQC_CAPS_SWITCHING_MODE 0x0001 +#define ICE_AQC_CAPS_MANAGEABILITY_MODE 0x0002 +#define ICE_AQC_CAPS_OS2BMC 0x0004 +#define ICE_AQC_CAPS_VALID_FUNCTIONS 0x0005 +#define ICE_AQC_MAX_VALID_FUNCTIONS 0x8 +#define ICE_AQC_CAPS_ALTERNATE_RAM 0x0006 +#define ICE_AQC_CAPS_WOL_PROXY 0x0008 +#define ICE_AQC_CAPS_SRIOV 0x0012 +#define ICE_AQC_CAPS_VF 0x0013 +#define ICE_AQC_CAPS_802_1QBG 0x0015 +#define ICE_AQC_CAPS_802_1BR 0x0016 +#define ICE_AQC_CAPS_VSI 0x0017 +#define ICE_AQC_CAPS_DCB 0x0018 +#define ICE_AQC_CAPS_RSVD 0x0021 +#define ICE_AQC_CAPS_ISCSI 0x0022 +#define ICE_AQC_CAPS_RSS 0x0040 +#define ICE_AQC_CAPS_RXQS 0x0041 +#define ICE_AQC_CAPS_TXQS 0x0042 +#define ICE_AQC_CAPS_MSIX 0x0043 +#define ICE_AQC_CAPS_MAX_MTU 0x0047 +#define ICE_AQC_CAPS_NVM_VER 0x0048 +#define ICE_AQC_CAPS_CEM 0x00F2 +#define ICE_AQC_CAPS_IWARP 0x0051 +#define ICE_AQC_CAPS_LED 0x0061 +#define ICE_AQC_CAPS_SDP 0x0062 +#define ICE_AQC_CAPS_WR_CSR_PROT 0x0064 +#define ICE_AQC_CAPS_NO_DROP_POLICY 0x0065 +#define ICE_AQC_CAPS_LOGI_TO_PHYSI_PORT_MAP 0x0073 +#define ICE_AQC_CAPS_SKU 0x0074 +#define ICE_AQC_CAPS_PORT_MAP 0x0075 +#define ICE_AQC_CAPS_NVM_MGMT 0x0080 + + u8 major_ver; + u8 minor_ver; + /* Number of resources described by this capability */ + __le32 number; + /* Only meaningful for some types of resources */ + __le32 logical_id; + /* Only meaningful for some types of resources */ + __le32 phys_id; + __le64 rsvd1; + __le64 rsvd2; +}; + +/* Manage MAC address, read command - indirect (0x0107) + * This struct is also used for the response + */ +struct ice_aqc_manage_mac_read { + __le16 flags; /* Zeroed by device driver */ +#define ICE_AQC_MAN_MAC_LAN_ADDR_VALID BIT(4) +#define ICE_AQC_MAN_MAC_SAN_ADDR_VALID BIT(5) +#define ICE_AQC_MAN_MAC_PORT_ADDR_VALID BIT(6) +#define ICE_AQC_MAN_MAC_WOL_ADDR_VALID BIT(7) +#define ICE_AQC_MAN_MAC_MC_MAG_EN BIT(8) +#define ICE_AQC_MAN_MAC_WOL_PRESERVE_ON_PFR BIT(9) +#define ICE_AQC_MAN_MAC_READ_S 4 +#define ICE_AQC_MAN_MAC_READ_M (0xF << ICE_AQC_MAN_MAC_READ_S) + u8 rsvd[2]; + u8 num_addr; /* Used in response */ + u8 rsvd1[3]; + __le32 addr_high; + __le32 addr_low; +}; + +/* Response buffer format for manage MAC read command */ +struct ice_aqc_manage_mac_read_resp { + u8 lport_num; + u8 addr_type; +#define ICE_AQC_MAN_MAC_ADDR_TYPE_LAN 0 +#define ICE_AQC_MAN_MAC_ADDR_TYPE_WOL 1 + u8 mac_addr[ETH_ALEN]; +}; + +/* Manage MAC address, write command - direct (0x0108) */ +struct ice_aqc_manage_mac_write { + u8 rsvd; + u8 flags; +#define ICE_AQC_MAN_MAC_WR_MC_MAG_EN BIT(0) +#define ICE_AQC_MAN_MAC_WR_WOL_LAA_PFR_KEEP BIT(1) +#define ICE_AQC_MAN_MAC_WR_S 6 +#define ICE_AQC_MAN_MAC_WR_M MAKEMASK(3, ICE_AQC_MAN_MAC_WR_S) +#define ICE_AQC_MAN_MAC_UPDATE_LAA 0 +#define ICE_AQC_MAN_MAC_UPDATE_LAA_WOL BIT(ICE_AQC_MAN_MAC_WR_S) + /* byte stream in network order */ + u8 mac_addr[ETH_ALEN]; + __le32 addr_high; + __le32 addr_low; +}; + +/* Clear PXE Command and response (direct 0x0110) */ +struct ice_aqc_clear_pxe { + u8 rx_cnt; +#define ICE_AQC_CLEAR_PXE_RX_CNT 0x2 + u8 reserved[15]; +}; + +/* Configure No-Drop Policy Command (direct 0x0112) */ +struct ice_aqc_config_no_drop_policy { + u8 opts; +#define ICE_AQC_FORCE_NO_DROP BIT(0) + u8 rsvd[15]; +}; + +/* Get switch configuration (0x0200) */ +struct ice_aqc_get_sw_cfg { + /* Reserved for command and copy of request flags for response */ + __le16 flags; + /* First desc in case of command and next_elem in case of response + * In case of response, if it is not zero, means all the configuration + * was not returned and new command shall be sent with this value in + * the 'first desc' field + */ + __le16 element; + /* Reserved for command, only used for response */ + __le16 num_elems; + __le16 rsvd; + __le32 addr_high; + __le32 addr_low; +}; + +/* Each entry in the response buffer is of the following type: */ +struct ice_aqc_get_sw_cfg_resp_elem { + /* VSI/Port Number */ + __le16 vsi_port_num; +#define ICE_AQC_GET_SW_CONF_RESP_VSI_PORT_NUM_S 0 +#define ICE_AQC_GET_SW_CONF_RESP_VSI_PORT_NUM_M \ + (0x3FF << ICE_AQC_GET_SW_CONF_RESP_VSI_PORT_NUM_S) +#define ICE_AQC_GET_SW_CONF_RESP_TYPE_S 14 +#define ICE_AQC_GET_SW_CONF_RESP_TYPE_M (0x3 << ICE_AQC_GET_SW_CONF_RESP_TYPE_S) +#define ICE_AQC_GET_SW_CONF_RESP_PHYS_PORT 0 +#define ICE_AQC_GET_SW_CONF_RESP_VIRT_PORT 1 +#define ICE_AQC_GET_SW_CONF_RESP_VSI 2 + + /* SWID VSI/Port belongs to */ + __le16 swid; + + /* Bit 14..0 : PF/VF number VSI belongs to + * Bit 15 : VF indication bit + */ + __le16 pf_vf_num; +#define ICE_AQC_GET_SW_CONF_RESP_FUNC_NUM_S 0 +#define ICE_AQC_GET_SW_CONF_RESP_FUNC_NUM_M \ + (0x7FFF << ICE_AQC_GET_SW_CONF_RESP_FUNC_NUM_S) +#define ICE_AQC_GET_SW_CONF_RESP_IS_VF BIT(15) +}; + +/* The response buffer is as follows. Note that the length of the + * elements array varies with the length of the command response. + */ +struct ice_aqc_get_sw_cfg_resp { + struct ice_aqc_get_sw_cfg_resp_elem elements[1]; +}; + +/* Set Port parameters, (direct, 0x0203) */ +struct ice_aqc_set_port_params { + __le16 cmd_flags; +#define ICE_AQC_SET_P_PARAMS_SAVE_BAD_PACKETS BIT(0) +#define ICE_AQC_SET_P_PARAMS_PAD_SHORT_PACKETS BIT(1) +#define ICE_AQC_SET_P_PARAMS_DOUBLE_VLAN_ENA BIT(2) + __le16 bad_frame_vsi; +#define ICE_AQC_SET_P_PARAMS_VSI_S 0 +#define ICE_AQC_SET_P_PARAMS_VSI_M (0x3FF << ICE_AQC_SET_P_PARAMS_VSI_S) +#define ICE_AQC_SET_P_PARAMS_VSI_VALID BIT(15) + __le16 swid; +#define ICE_AQC_SET_P_PARAMS_SWID_S 0 +#define ICE_AQC_SET_P_PARAMS_SWID_M (0xFF << ICE_AQC_SET_P_PARAMS_SWID_S) +#define ICE_AQC_SET_P_PARAMS_LOGI_PORT_ID_S 8 +#define ICE_AQC_SET_P_PARAMS_LOGI_PORT_ID_M \ + (0x3F << ICE_AQC_SET_P_PARAMS_LOGI_PORT_ID_S) +#define ICE_AQC_SET_P_PARAMS_IS_LOGI_PORT BIT(14) +#define ICE_AQC_SET_P_PARAMS_SWID_VALID BIT(15) + u8 reserved[10]; +}; + +/* These resource type defines are used for all switch resource + * commands where a resource type is required, such as: + * Get Resource Allocation command (indirect 0x0204) + * Allocate Resources command (indirect 0x0208) + * Free Resources command (indirect 0x0209) + * Get Allocated Resource Descriptors Command (indirect 0x020A) + */ +#define ICE_AQC_RES_TYPE_VEB_COUNTER 0x00 +#define ICE_AQC_RES_TYPE_VLAN_COUNTER 0x01 +#define ICE_AQC_RES_TYPE_MIRROR_RULE 0x02 +#define ICE_AQC_RES_TYPE_VSI_LIST_REP 0x03 +#define ICE_AQC_RES_TYPE_VSI_LIST_PRUNE 0x04 +#define ICE_AQC_RES_TYPE_RECIPE 0x05 +#define ICE_AQC_RES_TYPE_PROFILE 0x06 +#define ICE_AQC_RES_TYPE_SWID 0x07 +#define ICE_AQC_RES_TYPE_VSI 0x08 +#define ICE_AQC_RES_TYPE_FLU 0x09 +#define ICE_AQC_RES_TYPE_WIDE_TABLE_1 0x0A +#define ICE_AQC_RES_TYPE_WIDE_TABLE_2 0x0B +#define ICE_AQC_RES_TYPE_WIDE_TABLE_4 0x0C +#define ICE_AQC_RES_TYPE_GLOBAL_RSS_HASH 0x20 +#define ICE_AQC_RES_TYPE_FDIR_COUNTER_BLOCK 0x21 +#define ICE_AQC_RES_TYPE_FDIR_GUARANTEED_ENTRIES 0x22 +#define ICE_AQC_RES_TYPE_FDIR_SHARED_ENTRIES 0x23 +#define ICE_AQC_RES_TYPE_FLEX_DESC_PROG 0x30 +#define ICE_AQC_RES_TYPE_SWITCH_PROF_BLDR_PROFID 0x48 +#define ICE_AQC_RES_TYPE_SWITCH_PROF_BLDR_TCAM 0x49 +#define ICE_AQC_RES_TYPE_ACL_PROF_BLDR_PROFID 0x50 +#define ICE_AQC_RES_TYPE_ACL_PROF_BLDR_TCAM 0x51 +#define ICE_AQC_RES_TYPE_FD_PROF_BLDR_PROFID 0x58 +#define ICE_AQC_RES_TYPE_FD_PROF_BLDR_TCAM 0x59 +#define ICE_AQC_RES_TYPE_HASH_PROF_BLDR_PROFID 0x60 +#define ICE_AQC_RES_TYPE_HASH_PROF_BLDR_TCAM 0x61 +/* Resource types 0x62-67 are reserved for Hash profile builder */ +#define ICE_AQC_RES_TYPE_QHASH_PROF_BLDR_PROFID 0x68 +#define ICE_AQC_RES_TYPE_QHASH_PROF_BLDR_TCAM 0x69 + +#define ICE_AQC_RES_TYPE_FLAG_SHARED BIT(7) +#define ICE_AQC_RES_TYPE_FLAG_SCAN_BOTTOM BIT(12) +#define ICE_AQC_RES_TYPE_FLAG_IGNORE_INDEX BIT(13) + +#define ICE_AQC_RES_TYPE_FLAG_DEDICATED 0x00 + +#define ICE_AQC_RES_TYPE_S 0 +#define ICE_AQC_RES_TYPE_M (0x07F << ICE_AQC_RES_TYPE_S) + +/* Get Resource Allocation command (indirect 0x0204) */ +struct ice_aqc_get_res_alloc { + __le16 resp_elem_num; /* Used in response, reserved in command */ + u8 reserved[6]; + __le32 addr_high; + __le32 addr_low; +}; + +/* Get Resource Allocation Response Buffer per response */ +struct ice_aqc_get_res_resp_elem { + __le16 res_type; /* Types defined above cmd 0x0204 */ + __le16 total_capacity; /* Resources available to all PF's */ + __le16 total_function; /* Resources allocated for a PF */ + __le16 total_shared; /* Resources allocated as shared */ + __le16 total_free; /* Resources un-allocated/not reserved by any PF */ +}; + +/* Buffer for Get Resource command */ +struct ice_aqc_get_res_resp { + /* Number of resource entries to be calculated using + * datalen/sizeof(struct ice_aqc_cmd_resp)). + * Value of 'datalen' gets updated as part of response. + */ + struct ice_aqc_get_res_resp_elem elem[1]; +}; + +/* Allocate Resources command (indirect 0x0208) + * Free Resources command (indirect 0x0209) + */ +struct ice_aqc_alloc_free_res_cmd { + __le16 num_entries; /* Number of Resource entries */ + u8 reserved[6]; + __le32 addr_high; + __le32 addr_low; +}; + +/* Resource descriptor */ +struct ice_aqc_res_elem { + union { + __le16 sw_resp; + __le16 flu_resp; + } e; +}; + +/* Buffer for Allocate/Free Resources commands */ +struct ice_aqc_alloc_free_res_elem { + __le16 res_type; /* Types defined above cmd 0x0204 */ +#define ICE_AQC_RES_TYPE_VSI_PRUNE_LIST_S 8 +#define ICE_AQC_RES_TYPE_VSI_PRUNE_LIST_M \ + (0xF << ICE_AQC_RES_TYPE_VSI_PRUNE_LIST_S) + __le16 num_elems; + struct ice_aqc_res_elem elem[1]; +}; + +/* Get Allocated Resource Descriptors Command (indirect 0x020A) */ +struct ice_aqc_get_allocd_res_desc { + union { + struct { + __le16 res; /* Types defined above cmd 0x0204 */ + __le16 first_desc; + __le32 reserved; + } cmd; + struct { + __le16 res; + __le16 next_desc; + __le16 num_desc; + __le16 reserved; + } resp; + } ops; + __le32 addr_high; + __le32 addr_low; +}; + +struct ice_aqc_get_allocd_res_desc_resp { + struct ice_aqc_res_elem elem[1]; +}; + +/* Add VSI (indirect 0x0210) + * Update VSI (indirect 0x0211) + * Get VSI (indirect 0x0212) + * Free VSI (indirect 0x0213) + */ +struct ice_aqc_add_get_update_free_vsi { + __le16 vsi_num; +#define ICE_AQ_VSI_NUM_S 0 +#define ICE_AQ_VSI_NUM_M (0x03FF << ICE_AQ_VSI_NUM_S) +#define ICE_AQ_VSI_IS_VALID BIT(15) + __le16 cmd_flags; +#define ICE_AQ_VSI_KEEP_ALLOC 0x1 + u8 vf_id; + u8 reserved; + __le16 vsi_flags; +#define ICE_AQ_VSI_TYPE_S 0 +#define ICE_AQ_VSI_TYPE_M (0x3 << ICE_AQ_VSI_TYPE_S) +#define ICE_AQ_VSI_TYPE_VF 0x0 +#define ICE_AQ_VSI_TYPE_VMDQ2 0x1 +#define ICE_AQ_VSI_TYPE_PF 0x2 +#define ICE_AQ_VSI_TYPE_EMP_MNG 0x3 + __le32 addr_high; + __le32 addr_low; +}; + +/* Response descriptor for: + * Add VSI (indirect 0x0210) + * Update VSI (indirect 0x0211) + * Free VSI (indirect 0x0213) + */ +struct ice_aqc_add_update_free_vsi_resp { + __le16 vsi_num; + __le16 ext_status; + __le16 vsi_used; + __le16 vsi_free; + __le32 addr_high; + __le32 addr_low; +}; + +struct ice_aqc_get_vsi_resp { + __le16 vsi_num; + u8 vf_id; + /* The vsi_flags field uses the ICE_AQ_VSI_TYPE_* defines for values. + * These are found above in struct ice_aqc_add_get_update_free_vsi. + */ + u8 vsi_flags; + __le16 vsi_used; + __le16 vsi_free; + __le32 addr_high; + __le32 addr_low; +}; + +struct ice_aqc_vsi_props { + __le16 valid_sections; +#define ICE_AQ_VSI_PROP_SW_VALID BIT(0) +#define ICE_AQ_VSI_PROP_SECURITY_VALID BIT(1) +#define ICE_AQ_VSI_PROP_VLAN_VALID BIT(2) +#define ICE_AQ_VSI_PROP_OUTER_TAG_VALID BIT(3) +#define ICE_AQ_VSI_PROP_INGRESS_UP_VALID BIT(4) +#define ICE_AQ_VSI_PROP_EGRESS_UP_VALID BIT(5) +#define ICE_AQ_VSI_PROP_RXQ_MAP_VALID BIT(6) +#define ICE_AQ_VSI_PROP_Q_OPT_VALID BIT(7) +#define ICE_AQ_VSI_PROP_OUTER_UP_VALID BIT(8) +#define ICE_AQ_VSI_PROP_FLOW_DIR_VALID BIT(11) +#define ICE_AQ_VSI_PROP_PASID_VALID BIT(12) + /* switch section */ + u8 sw_id; + u8 sw_flags; +#define ICE_AQ_VSI_SW_FLAG_ALLOW_LB BIT(5) +#define ICE_AQ_VSI_SW_FLAG_LOCAL_LB BIT(6) +#define ICE_AQ_VSI_SW_FLAG_SRC_PRUNE BIT(7) + u8 sw_flags2; +#define ICE_AQ_VSI_SW_FLAG_RX_PRUNE_EN_S 0 +#define ICE_AQ_VSI_SW_FLAG_RX_PRUNE_EN_M \ + (0xF << ICE_AQ_VSI_SW_FLAG_RX_PRUNE_EN_S) +#define ICE_AQ_VSI_SW_FLAG_RX_VLAN_PRUNE_ENA BIT(0) +#define ICE_AQ_VSI_SW_FLAG_LAN_ENA BIT(4) + u8 veb_stat_id; +#define ICE_AQ_VSI_SW_VEB_STAT_ID_S 0 +#define ICE_AQ_VSI_SW_VEB_STAT_ID_M (0x1F << ICE_AQ_VSI_SW_VEB_STAT_ID_S) +#define ICE_AQ_VSI_SW_VEB_STAT_ID_VALID BIT(5) + /* security section */ + u8 sec_flags; +#define ICE_AQ_VSI_SEC_FLAG_ALLOW_DEST_OVRD BIT(0) +#define ICE_AQ_VSI_SEC_FLAG_ENA_MAC_ANTI_SPOOF BIT(2) +#define ICE_AQ_VSI_SEC_TX_PRUNE_ENA_S 4 +#define ICE_AQ_VSI_SEC_TX_PRUNE_ENA_M (0xF << ICE_AQ_VSI_SEC_TX_PRUNE_ENA_S) +#define ICE_AQ_VSI_SEC_TX_VLAN_PRUNE_ENA BIT(0) + u8 sec_reserved; + /* VLAN section */ + __le16 pvid; /* VLANS include priority bits */ + u8 pvlan_reserved[2]; + u8 vlan_flags; +#define ICE_AQ_VSI_VLAN_MODE_S 0 +#define ICE_AQ_VSI_VLAN_MODE_M (0x3 << ICE_AQ_VSI_VLAN_MODE_S) +#define ICE_AQ_VSI_VLAN_MODE_UNTAGGED 0x1 +#define ICE_AQ_VSI_VLAN_MODE_TAGGED 0x2 +#define ICE_AQ_VSI_VLAN_MODE_ALL 0x3 +#define ICE_AQ_VSI_PVLAN_INSERT_PVID BIT(2) +#define ICE_AQ_VSI_VLAN_EMOD_S 3 +#define ICE_AQ_VSI_VLAN_EMOD_M (0x3 << ICE_AQ_VSI_VLAN_EMOD_S) +#define ICE_AQ_VSI_VLAN_EMOD_STR_BOTH (0x0 << ICE_AQ_VSI_VLAN_EMOD_S) +#define ICE_AQ_VSI_VLAN_EMOD_STR_UP (0x1 << ICE_AQ_VSI_VLAN_EMOD_S) +#define ICE_AQ_VSI_VLAN_EMOD_STR (0x2 << ICE_AQ_VSI_VLAN_EMOD_S) +#define ICE_AQ_VSI_VLAN_EMOD_NOTHING (0x3 << ICE_AQ_VSI_VLAN_EMOD_S) + u8 pvlan_reserved2[3]; + /* ingress egress up sections */ + __le32 ingress_table; /* bitmap, 3 bits per up */ +#define ICE_AQ_VSI_UP_TABLE_UP0_S 0 +#define ICE_AQ_VSI_UP_TABLE_UP0_M (0x7 << ICE_AQ_VSI_UP_TABLE_UP0_S) +#define ICE_AQ_VSI_UP_TABLE_UP1_S 3 +#define ICE_AQ_VSI_UP_TABLE_UP1_M (0x7 << ICE_AQ_VSI_UP_TABLE_UP1_S) +#define ICE_AQ_VSI_UP_TABLE_UP2_S 6 +#define ICE_AQ_VSI_UP_TABLE_UP2_M (0x7 << ICE_AQ_VSI_UP_TABLE_UP2_S) +#define ICE_AQ_VSI_UP_TABLE_UP3_S 9 +#define ICE_AQ_VSI_UP_TABLE_UP3_M (0x7 << ICE_AQ_VSI_UP_TABLE_UP3_S) +#define ICE_AQ_VSI_UP_TABLE_UP4_S 12 +#define ICE_AQ_VSI_UP_TABLE_UP4_M (0x7 << ICE_AQ_VSI_UP_TABLE_UP4_S) +#define ICE_AQ_VSI_UP_TABLE_UP5_S 15 +#define ICE_AQ_VSI_UP_TABLE_UP5_M (0x7 << ICE_AQ_VSI_UP_TABLE_UP5_S) +#define ICE_AQ_VSI_UP_TABLE_UP6_S 18 +#define ICE_AQ_VSI_UP_TABLE_UP6_M (0x7 << ICE_AQ_VSI_UP_TABLE_UP6_S) +#define ICE_AQ_VSI_UP_TABLE_UP7_S 21 +#define ICE_AQ_VSI_UP_TABLE_UP7_M (0x7 << ICE_AQ_VSI_UP_TABLE_UP7_S) + __le32 egress_table; /* same defines as for ingress table */ + /* outer tags section */ + __le16 outer_tag; + u8 outer_tag_flags; +#define ICE_AQ_VSI_OUTER_TAG_MODE_S 0 +#define ICE_AQ_VSI_OUTER_TAG_MODE_M (0x3 << ICE_AQ_VSI_OUTER_TAG_MODE_S) +#define ICE_AQ_VSI_OUTER_TAG_NOTHING 0x0 +#define ICE_AQ_VSI_OUTER_TAG_REMOVE 0x1 +#define ICE_AQ_VSI_OUTER_TAG_COPY 0x2 +#define ICE_AQ_VSI_OUTER_TAG_TYPE_S 2 +#define ICE_AQ_VSI_OUTER_TAG_TYPE_M (0x3 << ICE_AQ_VSI_OUTER_TAG_TYPE_S) +#define ICE_AQ_VSI_OUTER_TAG_NONE 0x0 +#define ICE_AQ_VSI_OUTER_TAG_STAG 0x1 +#define ICE_AQ_VSI_OUTER_TAG_VLAN_8100 0x2 +#define ICE_AQ_VSI_OUTER_TAG_VLAN_9100 0x3 +#define ICE_AQ_VSI_OUTER_TAG_INSERT BIT(4) +#define ICE_AQ_VSI_OUTER_TAG_ACCEPT_HOST BIT(6) + u8 outer_tag_reserved; + /* queue mapping section */ + __le16 mapping_flags; +#define ICE_AQ_VSI_Q_MAP_CONTIG 0x0 +#define ICE_AQ_VSI_Q_MAP_NONCONTIG BIT(0) + __le16 q_mapping[16]; +#define ICE_AQ_VSI_Q_S 0 +#define ICE_AQ_VSI_Q_M (0x7FF << ICE_AQ_VSI_Q_S) + __le16 tc_mapping[8]; +#define ICE_AQ_VSI_TC_Q_OFFSET_S 0 +#define ICE_AQ_VSI_TC_Q_OFFSET_M (0x7FF << ICE_AQ_VSI_TC_Q_OFFSET_S) +#define ICE_AQ_VSI_TC_Q_NUM_S 11 *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@freebsd.org Wed May 27 00:17:06 2020 Return-Path: Delivered-To: svn-src-all@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 80C232F8F33; Wed, 27 May 2020 00:17:06 +0000 (UTC) (envelope-from bdragon@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49WrxG2nlyz4DRB; Wed, 27 May 2020 00:17:06 +0000 (UTC) (envelope-from bdragon@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 5B325BB71; Wed, 27 May 2020 00:17:06 +0000 (UTC) (envelope-from bdragon@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04R0H6fK087275; Wed, 27 May 2020 00:17:06 GMT (envelope-from bdragon@FreeBSD.org) Received: (from bdragon@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04R0H6aY087274; Wed, 27 May 2020 00:17:06 GMT (envelope-from bdragon@FreeBSD.org) Message-Id: <202005270017.04R0H6aY087274@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: bdragon set sender to bdragon@FreeBSD.org using -f From: Brandon Bergren Date: Wed, 27 May 2020 00:17:06 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361542 - head/sys/powerpc/aim X-SVN-Group: head X-SVN-Commit-Author: bdragon X-SVN-Commit-Paths: head/sys/powerpc/aim X-SVN-Commit-Revision: 361542 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2020 00:17:06 -0000 Author: bdragon Date: Wed May 27 00:17:05 2020 New Revision: 361542 URL: https://svnweb.freebsd.org/changeset/base/361542 Log: [PowerPC] Fix invalid asm in trap code In this context, 0 actually means 0 (i.e. this is a li instruction). While most assemblers will ignore this, I did have a compile failure at one point when using an external toolchain. In the future, we should use the li syntax to make this clearer. Sponsored by: Tag1 Consulting, Inc. Modified: head/sys/powerpc/aim/trap_subr32.S Modified: head/sys/powerpc/aim/trap_subr32.S ============================================================================== --- head/sys/powerpc/aim/trap_subr32.S Tue May 26 23:35:10 2020 (r361541) +++ head/sys/powerpc/aim/trap_subr32.S Wed May 27 00:17:05 2020 (r361542) @@ -426,7 +426,7 @@ instr_sec_hash: bne do_isi /* if so, go to ISI interrupt */ mfspr %r2, SPR_HASH2 /* get the second pointer */ ori %r3, %r3, 0x0040 /* change the compare value */ - addi %r1, %r0, 8 /* load 8 for counter */ + addi %r1, 0, 8 /* load 8 for counter */ addi %r2, %r2, -8 /* pre dec for update on load */ b im0 /* try second hash */ From owner-svn-src-all@freebsd.org Wed May 27 00:39:58 2020 Return-Path: Delivered-To: svn-src-all@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 1D9062F9514; Wed, 27 May 2020 00:39:58 +0000 (UTC) (envelope-from freebsd@gndrsh.dnsmgr.net) Received: from gndrsh.dnsmgr.net (br1.CN84in.dnsmgr.net [69.59.192.140]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 49WsRc50MYz4G94; Wed, 27 May 2020 00:39:56 +0000 (UTC) (envelope-from freebsd@gndrsh.dnsmgr.net) Received: from gndrsh.dnsmgr.net (localhost [127.0.0.1]) by gndrsh.dnsmgr.net (8.13.3/8.13.3) with ESMTP id 04R0dnDY087064; Tue, 26 May 2020 17:39:49 -0700 (PDT) (envelope-from freebsd@gndrsh.dnsmgr.net) Received: (from freebsd@localhost) by gndrsh.dnsmgr.net (8.13.3/8.13.3/Submit) id 04R0dnPe087063; Tue, 26 May 2020 17:39:49 -0700 (PDT) (envelope-from freebsd) From: "Rodney W. Grimes" Message-Id: <202005270039.04R0dnPe087063@gndrsh.dnsmgr.net> Subject: Re: svn commit: r361541 - in head: . sys/amd64/conf sys/arm64/conf sys/conf sys/contrib/dev/ice sys/dev/ice sys/modules sys/modules/ice sys/modules/ice_ddp tools/kerneldoc/subsys In-Reply-To: <202005262335.04QNZA9P062898@repo.freebsd.org> To: Eric Joyner Date: Tue, 26 May 2020 17:39:49 -0700 (PDT) CC: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Reply-To: rgrimes@freebsd.org X-Mailer: ELM [version 2.4ME+ PL121h (25)] MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII X-Rspamd-Queue-Id: 49WsRc50MYz4G94 X-Spamd-Bar: ---- Authentication-Results: mx1.freebsd.org; none X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[]; ASN(0.00)[asn:13868, ipnet:69.59.192.0/19, country:US] X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2020 00:39:58 -0000 [ Charset UTF-8 unsupported, converting... ] > Author: erj > Date: Tue May 26 23:35:10 2020 > New Revision: 361541 > URL: https://svnweb.freebsd.org/changeset/base/361541 > > Log: > ice(4): Introduce new driver for Intel E800 Ethernet controllers > > The ice(4) driver is the driver for the Intel E8xx series Ethernet > controllers; currently with codenames Columbiaville and > Columbia Park. > > These new controllers support 100G speeds, as well as introducing > more queues, better virtualization support, and more offload > capabilities. Future work will enable virtual functions (like > in ixl(4)) and the other functionality outlined above. > > For full functionality, the kernel should be compiled with > "device ice_ddp" like in the amd64 NOTES file, and/or > ice_ddp_load="YES" should be added to /boot/loader.conf so that > the DDP package file included in this commit can be downloaded > to the adapter. Otherwise, the adapter will fall back to a single > queue mode with limited functionality. > > A man page for this driver will be forthcoming. > > MFC after: 1 month > Relnotes: yes > Sponsored by: Intel Corporation > Differential Revision: https://reviews.freebsd.org/D21959 This code is not strickly BSD n-claused licensed. These files contain license clauses and scopes that are outside the curretly accepted "by the project" and that needs reviewed by core before this should of been committed. I do not see any huge issues, but there are some edges that might need some far more careful consideration. Oddly the file that was in the email of the commit actually does contain an "Intel'ed 3 clause BSD license?" > > Added: > head/sys/contrib/dev/ice/ > head/sys/contrib/dev/ice/LICENSE (contents, props changed) > head/sys/contrib/dev/ice/README (contents, props changed) > head/sys/contrib/dev/ice/ice-1.3.9.0.pkg (contents, props changed) > head/sys/dev/ice/ > head/sys/dev/ice/ice_adminq_cmd.h (contents, props changed) > head/sys/dev/ice/ice_alloc.h (contents, props changed) > head/sys/dev/ice/ice_bitops.h (contents, props changed) > head/sys/dev/ice/ice_common.c (contents, props changed) > head/sys/dev/ice/ice_common.h (contents, props changed) > head/sys/dev/ice/ice_common_sysctls.h (contents, props changed) > head/sys/dev/ice/ice_common_txrx.h (contents, props changed) > head/sys/dev/ice/ice_controlq.c (contents, props changed) > head/sys/dev/ice/ice_controlq.h (contents, props changed) > head/sys/dev/ice/ice_dcb.c (contents, props changed) > head/sys/dev/ice/ice_dcb.h (contents, props changed) > head/sys/dev/ice/ice_devids.h (contents, props changed) > head/sys/dev/ice/ice_drv_info.h (contents, props changed) > head/sys/dev/ice/ice_features.h (contents, props changed) > head/sys/dev/ice/ice_flex_pipe.c (contents, props changed) > head/sys/dev/ice/ice_flex_pipe.h (contents, props changed) > head/sys/dev/ice/ice_flex_type.h (contents, props changed) > head/sys/dev/ice/ice_flow.c (contents, props changed) > head/sys/dev/ice/ice_flow.h (contents, props changed) > head/sys/dev/ice/ice_hw_autogen.h (contents, props changed) > head/sys/dev/ice/ice_iflib.h (contents, props changed) > head/sys/dev/ice/ice_iflib_recovery_txrx.c (contents, props changed) > head/sys/dev/ice/ice_iflib_sysctls.h (contents, props changed) > head/sys/dev/ice/ice_iflib_txrx.c (contents, props changed) > head/sys/dev/ice/ice_lan_tx_rx.h (contents, props changed) > head/sys/dev/ice/ice_lib.c (contents, props changed) > head/sys/dev/ice/ice_lib.h (contents, props changed) > head/sys/dev/ice/ice_nvm.c (contents, props changed) > head/sys/dev/ice/ice_nvm.h (contents, props changed) > head/sys/dev/ice/ice_opts.h (contents, props changed) > head/sys/dev/ice/ice_osdep.c (contents, props changed) > head/sys/dev/ice/ice_osdep.h (contents, props changed) > head/sys/dev/ice/ice_protocol_type.h (contents, props changed) > head/sys/dev/ice/ice_resmgr.c (contents, props changed) > head/sys/dev/ice/ice_resmgr.h (contents, props changed) > head/sys/dev/ice/ice_rss.h (contents, props changed) > head/sys/dev/ice/ice_sbq_cmd.h (contents, props changed) > head/sys/dev/ice/ice_sched.c (contents, props changed) > head/sys/dev/ice/ice_sched.h (contents, props changed) > head/sys/dev/ice/ice_sriov.c (contents, props changed) > head/sys/dev/ice/ice_sriov.h (contents, props changed) > head/sys/dev/ice/ice_status.h (contents, props changed) > head/sys/dev/ice/ice_strings.c (contents, props changed) > head/sys/dev/ice/ice_switch.c (contents, props changed) > head/sys/dev/ice/ice_switch.h (contents, props changed) > head/sys/dev/ice/ice_type.h (contents, props changed) > head/sys/dev/ice/if_ice_iflib.c (contents, props changed) > head/sys/dev/ice/virtchnl.h (contents, props changed) > head/sys/dev/ice/virtchnl_inline_ipsec.h (contents, props changed) > head/sys/modules/ice/ > head/sys/modules/ice/Makefile (contents, props changed) > head/sys/modules/ice_ddp/ > head/sys/modules/ice_ddp/Makefile (contents, props changed) > head/tools/kerneldoc/subsys/Doxyfile-dev_ice (contents, props changed) > Modified: > head/MAINTAINERS > head/sys/amd64/conf/GENERIC > head/sys/amd64/conf/NOTES > head/sys/arm64/conf/NOTES > head/sys/conf/files.amd64 > head/sys/conf/files.arm64 > head/sys/modules/Makefile > > Modified: head/MAINTAINERS > ============================================================================== > --- head/MAINTAINERS Tue May 26 23:12:57 2020 (r361540) > +++ head/MAINTAINERS Tue May 26 23:35:10 2020 (r361541) > @@ -99,10 +99,12 @@ sys/compat/linuxkpi hselasky If in doubt, ask. > #x11 phabricator group. > (to avoid drm graphics drivers > impact) > +sys/contrib/dev/ice erj Pre-commit phabricator review requested. > sys/contrib/ipfilter cy Pre-commit review requested. > sys/dev/e1000 erj Pre-commit phabricator review requested. > sys/dev/ixgbe erj Pre-commit phabricator review requested. > sys/dev/ixl erj Pre-commit phabricator review requested. > +sys/dev/ice erj Pre-commit phabricator review requested. > sys/dev/sound/usb hselasky If in doubt, ask. > sys/dev/usb hselasky If in doubt, ask. > sys/dev/xen royger Pre-commit review recommended. > > Modified: head/sys/amd64/conf/GENERIC > ============================================================================== > --- head/sys/amd64/conf/GENERIC Tue May 26 23:12:57 2020 (r361540) > +++ head/sys/amd64/conf/GENERIC Tue May 26 23:35:10 2020 (r361541) > @@ -245,6 +245,7 @@ device ix # Intel PRO/10GbE PCIE PF Ethernet > device ixv # Intel PRO/10GbE PCIE VF Ethernet > device ixl # Intel 700 Series Physical Function > device iavf # Intel Adaptive Virtual Function > +device ice # Intel 800 Series Physical Function > device vmx # VMware VMXNET3 Ethernet > > # PCI Ethernet NICs. > > Modified: head/sys/amd64/conf/NOTES > ============================================================================== > --- head/sys/amd64/conf/NOTES Tue May 26 23:12:57 2020 (r361540) > +++ head/sys/amd64/conf/NOTES Tue May 26 23:35:10 2020 (r361541) > @@ -291,6 +291,8 @@ device cpufreq > > # bxe: Broadcom NetXtreme II (BCM5771X/BCM578XX) PCIe 10Gb Ethernet > # adapters. > +# ice: Intel 800 Series Physical Function > +# Requires the ice_ddp module for full functionality > # ipw: Intel PRO/Wireless 2100 IEEE 802.11 adapter > # Requires the ipw firmware module > # iwi: Intel PRO/Wireless 2200BG/2225BG/2915ABG IEEE 802.11 adapters > @@ -316,6 +318,8 @@ device iwi # Intel 2200BG/2225BG/2915ABG wireless NI > device iwn # Intel 4965/1000/5000/6000 wireless NICs. > device ixl # Intel 700 Series Physical Function > device iavf # Intel Adaptive Virtual Function > +device ice # Intel 800 Series Physical Function > +device ice_ddp # Intel 800 Series DDP Package > device mthca # Mellanox HCA InfiniBand > device mlx4 # Shared code module between IB and Ethernet > device mlx4ib # Mellanox ConnectX HCA InfiniBand > > Modified: head/sys/arm64/conf/NOTES > ============================================================================== > --- head/sys/arm64/conf/NOTES Tue May 26 23:12:57 2020 (r361540) > +++ head/sys/arm64/conf/NOTES Tue May 26 23:35:10 2020 (r361541) > @@ -83,6 +83,8 @@ device vnic # Cavium ThunderX NIC > device al_eth # Annapurna Alpine Ethernet NIC > device dwc_rk # Rockchip Designware > device dwc_socfpga # Altera SOCFPGA Ethernet MAC > +device ice # Intel 800 Series Physical Function > +device ice_ddp # Intel 800 Series DDP Package > > # Etherswitch devices > device e6000sw # Marvell mv88e6085 based switches > > Modified: head/sys/conf/files.amd64 > ============================================================================== > --- head/sys/conf/files.amd64 Tue May 26 23:12:57 2020 (r361540) > +++ head/sys/conf/files.amd64 Tue May 26 23:35:10 2020 (r361541) > @@ -144,6 +144,52 @@ dev/agp/agp_via.c optional agp > dev/amdgpio/amdgpio.c optional amdgpio > dev/hyperv/vmbus/amd64/hyperv_machdep.c optional hyperv > dev/hyperv/vmbus/amd64/vmbus_vector.S optional hyperv > +dev/ice/if_ice_iflib.c optional ice pci \ > + compile-with "${NORMAL_C} -I$S/dev/ice" > +dev/ice/ice_lib.c optional ice pci \ > + compile-with "${NORMAL_C} -I$S/dev/ice" > +dev/ice/ice_osdep.c optional ice pci \ > + compile-with "${NORMAL_C} -I$S/dev/ice" > +dev/ice/ice_resmgr.c optional ice pci \ > + compile-with "${NORMAL_C} -I$S/dev/ice" > +dev/ice/ice_strings.c optional ice pci \ > + compile-with "${NORMAL_C} -I$S/dev/ice" > +dev/ice/ice_iflib_recovery_txrx.c optional ice pci \ > + compile-with "${NORMAL_C} -I$S/dev/ice" > +dev/ice/ice_iflib_txrx.c optional ice pci \ > + compile-with "${NORMAL_C} -I$S/dev/ice" > +dev/ice/ice_common.c optional ice pci \ > + compile-with "${NORMAL_C} -I$S/dev/ice" > +dev/ice/ice_controlq.c optional ice pci \ > + compile-with "${NORMAL_C} -I$S/dev/ice" > +dev/ice/ice_dcb.c optional ice pci \ > + compile-with "${NORMAL_C} -I$S/dev/ice" > +dev/ice/ice_flex_pipe.c optional ice pci \ > + compile-with "${NORMAL_C} -I$S/dev/ice" > +dev/ice/ice_flow.c optional ice pci \ > + compile-with "${NORMAL_C} -I$S/dev/ice" > +dev/ice/ice_nvm.c optional ice pci \ > + compile-with "${NORMAL_C} -I$S/dev/ice" > +dev/ice/ice_sched.c optional ice pci \ > + compile-with "${NORMAL_C} -I$S/dev/ice" > +dev/ice/ice_sriov.c optional ice pci \ > + compile-with "${NORMAL_C} -I$S/dev/ice" > +dev/ice/ice_switch.c optional ice pci \ > + compile-with "${NORMAL_C} -I$S/dev/ice" > +ice_ddp.c optional ice_ddp \ > + compile-with "${AWK} -f $S/tools/fw_stub.awk ice_ddp.fw:ice_ddp:0x01030900 -mice_ddp -c${.TARGET}" \ > + no-implicit-rule before-depend local \ > + clean "ice_ddp.c" > +ice_ddp.fwo optional ice_ddp \ > + dependency "ice_ddp.fw" \ > + compile-with "${NORMAL_FWO}" \ > + no-implicit-rule \ > + clean "ice_ddp.fwo" > +ice_ddp.fw optional ice_ddp \ > + dependency "$S/contrib/dev/ice/ice-1.3.9.0.pkg" \ > + compile-with "${CP} $S/contrib/dev/ice/ice-1.3.9.0.pkg ice_ddp.fw" \ > + no-obj no-implicit-rule \ > + clean "ice_ddp.fw" > dev/ioat/ioat.c optional ioat pci > dev/ioat/ioat_test.c optional ioat pci > dev/ixl/if_ixl.c optional ixl pci \ > > Modified: head/sys/conf/files.arm64 > ============================================================================== > --- head/sys/conf/files.arm64 Tue May 26 23:12:57 2020 (r361540) > +++ head/sys/conf/files.arm64 Tue May 26 23:35:10 2020 (r361541) > @@ -240,6 +240,52 @@ dev/axgbe/xgbe-dev.c optional axgbe > dev/axgbe/xgbe-drv.c optional axgbe > dev/axgbe/xgbe-mdio.c optional axgbe > dev/cpufreq/cpufreq_dt.c optional cpufreq fdt > +dev/ice/if_ice_iflib.c optional ice pci \ > + compile-with "${NORMAL_C} -I$S/dev/ice" > +dev/ice/ice_lib.c optional ice pci \ > + compile-with "${NORMAL_C} -I$S/dev/ice" > +dev/ice/ice_osdep.c optional ice pci \ > + compile-with "${NORMAL_C} -I$S/dev/ice" > +dev/ice/ice_resmgr.c optional ice pci \ > + compile-with "${NORMAL_C} -I$S/dev/ice" > +dev/ice/ice_strings.c optional ice pci \ > + compile-with "${NORMAL_C} -I$S/dev/ice" > +dev/ice/ice_iflib_recovery_txrx.c optional ice pci \ > + compile-with "${NORMAL_C} -I$S/dev/ice" > +dev/ice/ice_iflib_txrx.c optional ice pci \ > + compile-with "${NORMAL_C} -I$S/dev/ice" > +dev/ice/ice_common.c optional ice pci \ > + compile-with "${NORMAL_C} -I$S/dev/ice" > +dev/ice/ice_controlq.c optional ice pci \ > + compile-with "${NORMAL_C} -I$S/dev/ice" > +dev/ice/ice_dcb.c optional ice pci \ > + compile-with "${NORMAL_C} -I$S/dev/ice" > +dev/ice/ice_flex_pipe.c optional ice pci \ > + compile-with "${NORMAL_C} -I$S/dev/ice" > +dev/ice/ice_flow.c optional ice pci \ > + compile-with "${NORMAL_C} -I$S/dev/ice" > +dev/ice/ice_nvm.c optional ice pci \ > + compile-with "${NORMAL_C} -I$S/dev/ice" > +dev/ice/ice_sched.c optional ice pci \ > + compile-with "${NORMAL_C} -I$S/dev/ice" > +dev/ice/ice_sriov.c optional ice pci \ > + compile-with "${NORMAL_C} -I$S/dev/ice" > +dev/ice/ice_switch.c optional ice pci \ > + compile-with "${NORMAL_C} -I$S/dev/ice" > +ice_ddp.c optional ice_ddp \ > + compile-with "${AWK} -f $S/tools/fw_stub.awk ice_ddp.fw:ice_ddp:0x01030900 -mice_ddp -c${.TARGET}" \ > + no-implicit-rule before-depend local \ > + clean "ice_ddp.c" > +ice_ddp.fwo optional ice_ddp \ > + dependency "ice_ddp.fw" \ > + compile-with "${NORMAL_FWO}" \ > + no-implicit-rule \ > + clean "ice_ddp.fwo" > +ice_ddp.fw optional ice_ddp \ > + dependency "$S/contrib/dev/ice/ice-1.3.9.0.pkg" \ > + compile-with "${CP} $S/contrib/dev/ice/ice-1.3.9.0.pkg ice_ddp.fw" \ > + no-obj no-implicit-rule \ > + clean "ice_ddp.fw" > dev/iicbus/sy8106a.c optional sy8106a fdt > dev/iicbus/twsi/mv_twsi.c optional twsi fdt > dev/iicbus/twsi/a10_twsi.c optional twsi fdt > > Added: head/sys/contrib/dev/ice/LICENSE > ============================================================================== > --- /dev/null 00:00:00 1970 (empty, because file is newly added) > +++ head/sys/contrib/dev/ice/LICENSE Tue May 26 23:35:10 2020 (r361541) > @@ -0,0 +1,41 @@ > +Copyright (c) 2006-2018, Intel Corporation. > +All rights reserved. > + > +Redistribution. Redistribution and use in binary form, without > +modification, are permitted provided that the following conditions are > +met: > + > +* Redistributions must reproduce the above copyright notice and the > + following disclaimer in the documentation and/or other materials > + provided with the distribution. > +* Neither the name of Intel Corporation nor the names of its suppliers > + may be used to endorse or promote products derived from this software > + without specific prior written permission. > +* No reverse engineering, decompilation, or disassembly of this software > + is permitted. That ones a bit iffy in a source released situation, what does it mean to "reverse engineer" source code? > + > +Limited patent license. Intel Corporation grants a world-wide, > +royalty-free, non-exclusive license under patents it now or hereafter > +owns or controls to make, have made, use, import, offer to sell and > +sell ("Utilize") this software, but solely to the extent that any > +such patent is necessary to Utilize the software alone, or in > +combination with an operating system licensed under an approved Open > +Source license as listed by the Open Source Initiative at > +http://opensource.org/licenses. The patent license shall not apply to > +any other combinations which include this software. No hardware per > +se is licensed hereunder. A patent clause? I do not believe we have any code in the tree with an attached patent clause. > + > +DISCLAIMER. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND > +CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, > +BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND > +FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE > +COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, > +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, > +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS > +OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND > +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR > +TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE > +USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH > +DAMAGE. > + > + > > Added: head/sys/contrib/dev/ice/README > ============================================================================== > --- /dev/null 00:00:00 1970 (empty, because file is newly added) > +++ head/sys/contrib/dev/ice/README Tue May 26 23:35:10 2020 (r361541) > @@ -0,0 +1,197 @@ > +?Dynamic Device Personalization (DDP) Package > +============================================ > +February 21, 2020 > + > + > +Contents > +======== > +- Overview > +- Safe Mode > +- Notes > +- Installation & Troubleshooting > +- Legal > + > + > +Overview > +======== > +Adapters based on the Intel(R) Ethernet Controller 800 Series require a Dynamic > +Device Personalization (DDP) package file to enable advanced features (such as > +dynamic tunneling, Flow Director, RSS, and ADQ). > + > +DDP allows you to change the packet processing pipeline of a device by applying > +a profile package to the device at runtime. Profiles can be used to, for > +example, add support for new protocols, change existing protocols, or change > +default settings. DDP profiles can also be rolled back without rebooting the > +system. > + > +The DDP package loads during device initialization. The driver checks to see if > +the DDP package is present and compatible. If this file exists, the driver will > +load it into the device. If the DDP package file is missing or incompatible > +with the driver, the driver will go into Safe Mode where it will use the > +configuration contained in the device's NVM. See "Safe Mode" later in this > +README for more information. > + > +A general purpose, OS-default DDP package is automatically installed with all > +supported Intel Ethernet Controller 800 Series drivers on Microsoft* Windows*, > +ESX*, FreeBSD*, and Linux* operating systems. Additional DDP packages are > +available to address needs for specific market segments. For example, a > +telecommunications (Comms) DDP package is available to support certain > +market-specific protocols in addition to the protocols in the OS-default > +package. > + > +The OS-default DDP package supports the following: > +- MAC > +- EtherType > +- VLAN > +- IPv4 > +- IPv6 > +- TCP > +- ARP > +- UDP > +- SCTP > +- ICMP > +- ICMPv6 > +- CTRL > +- LLDP > +- VXLAN-GPE > +- VXLAN (non-GPE) > +- Geneve > +- GRE > +- NVGRE > +- RoCEv2 > + > + > +Safe Mode > +========= > +Safe Mode disables advanced and performance features, and supports only basic > +traffic and minimal functionality, such as updating the NVM or downloading a > +new driver or DDP package. > + > +See the Intel(R) Ethernet Adapters and Devices User Guide for more details on > +DDP and Safe Mode. > + > + > +Notes > +===== > +- You cannot update the DDP package if any PF drivers are already loaded. To > +overwrite a package, unload all PFs and then reload the driver with the new > +package. > + > +- Except for Linux, you can only use one DDP package per driver, even if you > +have more than one device installed that uses the driver. > + > +- Only the first loaded PF per device can download a package for that device. > + > +- If you are using DPDK, see the DPDK documentation at https://www.dpdk.org/ > +for installation instructions and more information. > + > + > +Installation and Troubleshooting > +================================ > + > +Microsoft* Windows* > +------------------- > +The DDP package is installed as part of the driver binary. You don't need to > +take additional steps to install the DDP package file. > + > +If you encounter issues with the DDP package file, download the latest driver. > + > + > +ESX > +--- > +The DDP package is installed as part of the driver binary. You don't need to > +take additional steps to install the DDP package file. > + > +If you encounter issues with the DDP package file, download the latest driver. > + > + > +FreeBSD > +------- > +The FreeBSD driver automatically installs the default DDP package file during > +driver installation. See the ice driver README for general installation and > +building instructions. > + > +The DDP package loads during device initialization. The driver looks for the > +ice_ddp module and checks that it contains a valid DDP package file. > + > +If you encounter issues with the DDP package file, you may need to download an > +updated driver or ice_ddp module. See the log messages for more information. > + > +NOTE: It's important to do 'make install' during initial ice driver > +installation so that the driver loads the DDP package automatically. > + > + > +Linux > +----- > +The Linux driver automatically installs the default DDP package file during > +driver installation. See the ice driver README for general installation and > +building instructions. > + > +The DDP package loads during device initialization. The driver looks for > +intel/ice/ddp/ice.pkg in your firmware root (typically /lib/firmware/ or > +/lib/firmware/updates/) and checks that it contains a valid DDP package file. > +The ice.pkg file is a symbolic link to the default DDP package file installed > +by the linux-firmware software package or the ice out-of-tree driver > +installation. > + > +If you encounter issues with the DDP package file, you may need to download an > +updated driver or DDP package file. See the log messages for more information. > + > +You can install specific DDP package files for different physical devices in > +the same system. To install a specific DDP package: > + > +1. Download the DDP package file (ice-x.x.x.x.zip) you want for your device. In > +addition to licensing information and this README, this zip file contains the > +following files: > + ice-x.x.x.x.pkg > + ice.pkg > + > +NOTE: The ice.pkg file is a Linux symbolic link file pointing to > +ice-x.x.x.x.pkg (in the same path). > + > +2. Rename the ice-x.x.x.x.pkg file as ice-xxxxxxxxxxxxxxxx.pkg, where > +'xxxxxxxxxxxxxxxx' is the unique 64-bit PCI Express device serial number (in > +hex) of the device you want the package downloaded on. The filename must > +include the complete serial number (including leading zeros) and be all > +lowercase. For example, if the 64-bit serial number is b887a3ffffca0568, then > +the file name would be ice-b887a3ffffca0568.pkg. > + > +To find the serial number from the PCI bus address, you can use the following > +command: > + > +# lspci -vv -s af:00.0 | grep -i Serial > +Capabilities: [150 v1] Device Serial Number b8-87-a3-ff-ff-ca-05-68 > + > +You can use the following command to format the serial number without the > +dashes: > + > +# lspci -vv -s af:00.0 | grep -i Serial | awk '{print $7}' | sed s/-//g > +b887a3ffffca0568 > + > +3. Copy the renamed DDP package file to /lib/firmware/updates/intel/ice/ddp/. > +If the directory does not yet exist, create it before copying the file. > + > +4. Unload all of the PFs on the device. > + > +5. Reload the driver with the new package. > + > +NOTE: The presence of a device-specific DDP package file overrides the loading > +of the default DDP package file (ice.pkg). > + > + > +Legal / Disclaimers > +=================== > +Copyright (c) 2019 - 2020, Intel Corporation. > + > +Intel and the Intel logo are trademarks of Intel Corporation or its > +subsidiaries in the U.S. and/or other countries. > + > +*Other names and brands may be claimed as the property of others. > + > +This software and the related documents are Intel copyrighted materials, and > +your use of them is governed by the express license under which they were > +provided to you ("License"). Unless the License provides otherwise, you may not > +use, modify, copy, publish, distribute, disclose or transmit this software or > +the related documents without Intel's prior written permission. > +This software and the related documents are provided as is, with no express or > +implied warranties, other than those that are expressly stated in the License. It must be interpretted that an "express licenese" overrides these terms to be safe. It is not clear to me that the contentx of LICENSE file are an over riding express license to these statements here as neither is explicity in the materials covered by the license. > > Added: head/sys/contrib/dev/ice/ice-1.3.9.0.pkg > ============================================================================== > Binary file. No diff available. > > Added: head/sys/dev/ice/ice_adminq_cmd.h > ============================================================================== > --- /dev/null 00:00:00 1970 (empty, because file is newly added) > +++ head/sys/dev/ice/ice_adminq_cmd.h Tue May 26 23:35:10 2020 (r361541) > @@ -0,0 +1,2968 @@ > +/* SPDX-License-Identifier: BSD-3-Clause */ > +/* Copyright (c) 2020, Intel Corporation > + * All rights reserved. > + * > + * Redistribution and use in source and binary forms, with or without > + * modification, are permitted provided that the following conditions are met: > + * > + * 1. Redistributions of source code must retain the above copyright notice, > + * this list of conditions and the following disclaimer. > + * > + * 2. Redistributions in binary form must reproduce the above copyright > + * notice, this list of conditions and the following disclaimer in the > + * documentation and/or other materials provided with the distribution. > + * > + * 3. Neither the name of the Intel Corporation nor the names of its > + * contributors may be used to endorse or promote products derived from > + * this software without specific prior written permission. > + * > + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" > + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE > + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE > + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE > + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR > + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF > + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS > + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN > + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) > + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE > + * POSSIBILITY OF SUCH DAMAGE. > + */ > +/*$FreeBSD$*/ > + > +#ifndef _ICE_ADMINQ_CMD_H_ > +#define _ICE_ADMINQ_CMD_H_ > + > +/* This header file defines the Admin Queue commands, error codes and > + * descriptor format. It is shared between Firmware and Software. > + */ > + > +#define ICE_MAX_VSI 768 > +#define ICE_AQC_TOPO_MAX_LEVEL_NUM 0x9 > +#define ICE_AQ_SET_MAC_FRAME_SIZE_MAX 9728 > + > +struct ice_aqc_generic { > + __le32 param0; > + __le32 param1; > + __le32 addr_high; > + __le32 addr_low; > +}; > + > +/* Get version (direct 0x0001) */ > +struct ice_aqc_get_ver { > + __le32 rom_ver; > + __le32 fw_build; > + u8 fw_branch; > + u8 fw_major; > + u8 fw_minor; > + u8 fw_patch; > + u8 api_branch; > + u8 api_major; > + u8 api_minor; > + u8 api_patch; > +}; > + > +/* Send driver version (indirect 0x0002) */ > +struct ice_aqc_driver_ver { > + u8 major_ver; > + u8 minor_ver; > + u8 build_ver; > + u8 subbuild_ver; > + u8 reserved[4]; > + __le32 addr_high; > + __le32 addr_low; > +}; > + > +/* Queue Shutdown (direct 0x0003) */ > +struct ice_aqc_q_shutdown { > + u8 driver_unloading; > +#define ICE_AQC_DRIVER_UNLOADING BIT(0) > + u8 reserved[15]; > +}; > + > +/* Get Expanded Error Code (0x0005, direct) */ > +struct ice_aqc_get_exp_err { > + __le32 reason; > +#define ICE_AQC_EXPANDED_ERROR_NOT_PROVIDED 0xFFFFFFFF > + __le32 identifier; > + u8 rsvd[8]; > +}; > + > +/* Request resource ownership (direct 0x0008) > + * Release resource ownership (direct 0x0009) > + */ > +struct ice_aqc_req_res { > + __le16 res_id; > +#define ICE_AQC_RES_ID_NVM 1 > +#define ICE_AQC_RES_ID_SDP 2 > +#define ICE_AQC_RES_ID_CHNG_LOCK 3 > +#define ICE_AQC_RES_ID_GLBL_LOCK 4 > + __le16 access_type; > +#define ICE_AQC_RES_ACCESS_READ 1 > +#define ICE_AQC_RES_ACCESS_WRITE 2 > + > + /* Upon successful completion, FW writes this value and driver is > + * expected to release resource before timeout. This value is provided > + * in milliseconds. > + */ > + __le32 timeout; > +#define ICE_AQ_RES_NVM_READ_DFLT_TIMEOUT_MS 3000 > +#define ICE_AQ_RES_NVM_WRITE_DFLT_TIMEOUT_MS 180000 > +#define ICE_AQ_RES_CHNG_LOCK_DFLT_TIMEOUT_MS 1000 > +#define ICE_AQ_RES_GLBL_LOCK_DFLT_TIMEOUT_MS 3000 > + /* For SDP: pin ID of the SDP */ > + __le32 res_number; > + /* Status is only used for ICE_AQC_RES_ID_GLBL_LOCK */ > + __le16 status; > +#define ICE_AQ_RES_GLBL_SUCCESS 0 > +#define ICE_AQ_RES_GLBL_IN_PROG 1 > +#define ICE_AQ_RES_GLBL_DONE 2 > + u8 reserved[2]; > +}; > + > +/* Get function capabilities (indirect 0x000A) > + * Get device capabilities (indirect 0x000B) > + */ > +struct ice_aqc_list_caps { > + u8 cmd_flags; > + u8 pf_index; > + u8 reserved[2]; > + __le32 count; > + __le32 addr_high; > + __le32 addr_low; > +}; > + > +/* Device/Function buffer entry, repeated per reported capability */ > +struct ice_aqc_list_caps_elem { > + __le16 cap; > +#define ICE_AQC_CAPS_SWITCHING_MODE 0x0001 > +#define ICE_AQC_CAPS_MANAGEABILITY_MODE 0x0002 > +#define ICE_AQC_CAPS_OS2BMC 0x0004 > +#define ICE_AQC_CAPS_VALID_FUNCTIONS 0x0005 > +#define ICE_AQC_MAX_VALID_FUNCTIONS 0x8 > +#define ICE_AQC_CAPS_ALTERNATE_RAM 0x0006 > +#define ICE_AQC_CAPS_WOL_PROXY 0x0008 > +#define ICE_AQC_CAPS_SRIOV 0x0012 > +#define ICE_AQC_CAPS_VF 0x0013 > +#define ICE_AQC_CAPS_802_1QBG 0x0015 > +#define ICE_AQC_CAPS_802_1BR 0x0016 > +#define ICE_AQC_CAPS_VSI 0x0017 > +#define ICE_AQC_CAPS_DCB 0x0018 > +#define ICE_AQC_CAPS_RSVD 0x0021 > +#define ICE_AQC_CAPS_ISCSI 0x0022 > +#define ICE_AQC_CAPS_RSS 0x0040 > +#define ICE_AQC_CAPS_RXQS 0x0041 > +#define ICE_AQC_CAPS_TXQS 0x0042 > +#define ICE_AQC_CAPS_MSIX 0x0043 > +#define ICE_AQC_CAPS_MAX_MTU 0x0047 > +#define ICE_AQC_CAPS_NVM_VER 0x0048 > +#define ICE_AQC_CAPS_CEM 0x00F2 > +#define ICE_AQC_CAPS_IWARP 0x0051 > +#define ICE_AQC_CAPS_LED 0x0061 > +#define ICE_AQC_CAPS_SDP 0x0062 > +#define ICE_AQC_CAPS_WR_CSR_PROT 0x0064 > +#define ICE_AQC_CAPS_NO_DROP_POLICY 0x0065 > +#define ICE_AQC_CAPS_LOGI_TO_PHYSI_PORT_MAP 0x0073 > +#define ICE_AQC_CAPS_SKU 0x0074 > +#define ICE_AQC_CAPS_PORT_MAP 0x0075 > +#define ICE_AQC_CAPS_NVM_MGMT 0x0080 > + > + u8 major_ver; > + u8 minor_ver; > + /* Number of resources described by this capability */ > + __le32 number; > + /* Only meaningful for some types of resources */ > + __le32 logical_id; > + /* Only meaningful for some types of resources */ > + __le32 phys_id; > + __le64 rsvd1; > + __le64 rsvd2; > +}; > + > +/* Manage MAC address, read command - indirect (0x0107) > + * This struct is also used for the response > + */ > +struct ice_aqc_manage_mac_read { > + __le16 flags; /* Zeroed by device driver */ > +#define ICE_AQC_MAN_MAC_LAN_ADDR_VALID BIT(4) > +#define ICE_AQC_MAN_MAC_SAN_ADDR_VALID BIT(5) > +#define ICE_AQC_MAN_MAC_PORT_ADDR_VALID BIT(6) > +#define ICE_AQC_MAN_MAC_WOL_ADDR_VALID BIT(7) > +#define ICE_AQC_MAN_MAC_MC_MAG_EN BIT(8) > +#define ICE_AQC_MAN_MAC_WOL_PRESERVE_ON_PFR BIT(9) > +#define ICE_AQC_MAN_MAC_READ_S 4 > +#define ICE_AQC_MAN_MAC_READ_M (0xF << ICE_AQC_MAN_MAC_READ_S) > + u8 rsvd[2]; > + u8 num_addr; /* Used in response */ > + u8 rsvd1[3]; > + __le32 addr_high; > + __le32 addr_low; > +}; > + > +/* Response buffer format for manage MAC read command */ > +struct ice_aqc_manage_mac_read_resp { > + u8 lport_num; > + u8 addr_type; > +#define ICE_AQC_MAN_MAC_ADDR_TYPE_LAN 0 > +#define ICE_AQC_MAN_MAC_ADDR_TYPE_WOL 1 > + u8 mac_addr[ETH_ALEN]; > +}; > + > +/* Manage MAC address, write command - direct (0x0108) */ > +struct ice_aqc_manage_mac_write { > + u8 rsvd; > + u8 flags; > +#define ICE_AQC_MAN_MAC_WR_MC_MAG_EN BIT(0) > +#define ICE_AQC_MAN_MAC_WR_WOL_LAA_PFR_KEEP BIT(1) > +#define ICE_AQC_MAN_MAC_WR_S 6 > +#define ICE_AQC_MAN_MAC_WR_M MAKEMASK(3, ICE_AQC_MAN_MAC_WR_S) > +#define ICE_AQC_MAN_MAC_UPDATE_LAA 0 > +#define ICE_AQC_MAN_MAC_UPDATE_LAA_WOL BIT(ICE_AQC_MAN_MAC_WR_S) > + /* byte stream in network order */ > + u8 mac_addr[ETH_ALEN]; > + __le32 addr_high; > + __le32 addr_low; > +}; > + > +/* Clear PXE Command and response (direct 0x0110) */ > +struct ice_aqc_clear_pxe { > + u8 rx_cnt; > +#define ICE_AQC_CLEAR_PXE_RX_CNT 0x2 > + u8 reserved[15]; > +}; > + > +/* Configure No-Drop Policy Command (direct 0x0112) */ > +struct ice_aqc_config_no_drop_policy { > + u8 opts; > +#define ICE_AQC_FORCE_NO_DROP BIT(0) > + u8 rsvd[15]; > +}; > + > +/* Get switch configuration (0x0200) */ > +struct ice_aqc_get_sw_cfg { > + /* Reserved for command and copy of request flags for response */ > + __le16 flags; > + /* First desc in case of command and next_elem in case of response > + * In case of response, if it is not zero, means all the configuration > + * was not returned and new command shall be sent with this value in > + * the 'first desc' field > + */ > + __le16 element; > + /* Reserved for command, only used for response */ > + __le16 num_elems; > + __le16 rsvd; > + __le32 addr_high; > + __le32 addr_low; > +}; > + > +/* Each entry in the response buffer is of the following type: */ > +struct ice_aqc_get_sw_cfg_resp_elem { > + /* VSI/Port Number */ > + __le16 vsi_port_num; > +#define ICE_AQC_GET_SW_CONF_RESP_VSI_PORT_NUM_S 0 > +#define ICE_AQC_GET_SW_CONF_RESP_VSI_PORT_NUM_M \ > + (0x3FF << ICE_AQC_GET_SW_CONF_RESP_VSI_PORT_NUM_S) > +#define ICE_AQC_GET_SW_CONF_RESP_TYPE_S 14 > +#define ICE_AQC_GET_SW_CONF_RESP_TYPE_M (0x3 << ICE_AQC_GET_SW_CONF_RESP_TYPE_S) > +#define ICE_AQC_GET_SW_CONF_RESP_PHYS_PORT 0 > +#define ICE_AQC_GET_SW_CONF_RESP_VIRT_PORT 1 > +#define ICE_AQC_GET_SW_CONF_RESP_VSI 2 > + > + /* SWID VSI/Port belongs to */ > + __le16 swid; > + > + /* Bit 14..0 : PF/VF number VSI belongs to > + * Bit 15 : VF indication bit > + */ > + __le16 pf_vf_num; > +#define ICE_AQC_GET_SW_CONF_RESP_FUNC_NUM_S 0 > +#define ICE_AQC_GET_SW_CONF_RESP_FUNC_NUM_M \ > + (0x7FFF << ICE_AQC_GET_SW_CONF_RESP_FUNC_NUM_S) > +#define ICE_AQC_GET_SW_CONF_RESP_IS_VF BIT(15) > +}; > + > +/* The response buffer is as follows. Note that the length of the > + * elements array varies with the length of the command response. > + */ > +struct ice_aqc_get_sw_cfg_resp { > + struct ice_aqc_get_sw_cfg_resp_elem elements[1]; > +}; > + > +/* Set Port parameters, (direct, 0x0203) */ > +struct ice_aqc_set_port_params { > + __le16 cmd_flags; > +#define ICE_AQC_SET_P_PARAMS_SAVE_BAD_PACKETS BIT(0) > +#define ICE_AQC_SET_P_PARAMS_PAD_SHORT_PACKETS BIT(1) > +#define ICE_AQC_SET_P_PARAMS_DOUBLE_VLAN_ENA BIT(2) > + __le16 bad_frame_vsi; > +#define ICE_AQC_SET_P_PARAMS_VSI_S 0 > +#define ICE_AQC_SET_P_PARAMS_VSI_M (0x3FF << ICE_AQC_SET_P_PARAMS_VSI_S) > +#define ICE_AQC_SET_P_PARAMS_VSI_VALID BIT(15) > + __le16 swid; > +#define ICE_AQC_SET_P_PARAMS_SWID_S 0 > +#define ICE_AQC_SET_P_PARAMS_SWID_M (0xFF << ICE_AQC_SET_P_PARAMS_SWID_S) > +#define ICE_AQC_SET_P_PARAMS_LOGI_PORT_ID_S 8 > +#define ICE_AQC_SET_P_PARAMS_LOGI_PORT_ID_M \ > + (0x3F << ICE_AQC_SET_P_PARAMS_LOGI_PORT_ID_S) > +#define ICE_AQC_SET_P_PARAMS_IS_LOGI_PORT BIT(14) > +#define ICE_AQC_SET_P_PARAMS_SWID_VALID BIT(15) > + u8 reserved[10]; > +}; > + > +/* These resource type defines are used for all switch resource > + * commands where a resource type is required, such as: > + * Get Resource Allocation command (indirect 0x0204) > + * Allocate Resources command (indirect 0x0208) > + * Free Resources command (indirect 0x0209) > + * Get Allocated Resource Descriptors Command (indirect 0x020A) > + */ > +#define ICE_AQC_RES_TYPE_VEB_COUNTER 0x00 > +#define ICE_AQC_RES_TYPE_VLAN_COUNTER 0x01 > +#define ICE_AQC_RES_TYPE_MIRROR_RULE 0x02 > +#define ICE_AQC_RES_TYPE_VSI_LIST_REP 0x03 > +#define ICE_AQC_RES_TYPE_VSI_LIST_PRUNE 0x04 > +#define ICE_AQC_RES_TYPE_RECIPE 0x05 > +#define ICE_AQC_RES_TYPE_PROFILE 0x06 > +#define ICE_AQC_RES_TYPE_SWID 0x07 > +#define ICE_AQC_RES_TYPE_VSI 0x08 > +#define ICE_AQC_RES_TYPE_FLU 0x09 > +#define ICE_AQC_RES_TYPE_WIDE_TABLE_1 0x0A > +#define ICE_AQC_RES_TYPE_WIDE_TABLE_2 0x0B > +#define ICE_AQC_RES_TYPE_WIDE_TABLE_4 0x0C > +#define ICE_AQC_RES_TYPE_GLOBAL_RSS_HASH 0x20 > +#define ICE_AQC_RES_TYPE_FDIR_COUNTER_BLOCK 0x21 > +#define ICE_AQC_RES_TYPE_FDIR_GUARANTEED_ENTRIES 0x22 > +#define ICE_AQC_RES_TYPE_FDIR_SHARED_ENTRIES 0x23 > +#define ICE_AQC_RES_TYPE_FLEX_DESC_PROG 0x30 > +#define ICE_AQC_RES_TYPE_SWITCH_PROF_BLDR_PROFID 0x48 > +#define ICE_AQC_RES_TYPE_SWITCH_PROF_BLDR_TCAM 0x49 > +#define ICE_AQC_RES_TYPE_ACL_PROF_BLDR_PROFID 0x50 > +#define ICE_AQC_RES_TYPE_ACL_PROF_BLDR_TCAM 0x51 > +#define ICE_AQC_RES_TYPE_FD_PROF_BLDR_PROFID 0x58 > +#define ICE_AQC_RES_TYPE_FD_PROF_BLDR_TCAM 0x59 > +#define ICE_AQC_RES_TYPE_HASH_PROF_BLDR_PROFID 0x60 > +#define ICE_AQC_RES_TYPE_HASH_PROF_BLDR_TCAM 0x61 > +/* Resource types 0x62-67 are reserved for Hash profile builder */ > +#define ICE_AQC_RES_TYPE_QHASH_PROF_BLDR_PROFID 0x68 > +#define ICE_AQC_RES_TYPE_QHASH_PROF_BLDR_TCAM 0x69 > + > +#define ICE_AQC_RES_TYPE_FLAG_SHARED BIT(7) > +#define ICE_AQC_RES_TYPE_FLAG_SCAN_BOTTOM BIT(12) > +#define ICE_AQC_RES_TYPE_FLAG_IGNORE_INDEX BIT(13) > + > +#define ICE_AQC_RES_TYPE_FLAG_DEDICATED 0x00 > + > +#define ICE_AQC_RES_TYPE_S 0 > +#define ICE_AQC_RES_TYPE_M (0x07F << ICE_AQC_RES_TYPE_S) > + > +/* Get Resource Allocation command (indirect 0x0204) */ > +struct ice_aqc_get_res_alloc { > + __le16 resp_elem_num; /* Used in response, reserved in command */ > + u8 reserved[6]; > + __le32 addr_high; > + __le32 addr_low; > +}; > + > +/* Get Resource Allocation Response Buffer per response */ > +struct ice_aqc_get_res_resp_elem { > + __le16 res_type; /* Types defined above cmd 0x0204 */ > + __le16 total_capacity; /* Resources available to all PF's */ > + __le16 total_function; /* Resources allocated for a PF */ > + __le16 total_shared; /* Resources allocated as shared */ > + __le16 total_free; /* Resources un-allocated/not reserved by any PF */ > +}; > + > +/* Buffer for Get Resource command */ > +struct ice_aqc_get_res_resp { > + /* Number of resource entries to be calculated using > + * datalen/sizeof(struct ice_aqc_cmd_resp)). > + * Value of 'datalen' gets updated as part of response. > + */ > + struct ice_aqc_get_res_resp_elem elem[1]; > +}; > + > +/* Allocate Resources command (indirect 0x0208) > + * Free Resources command (indirect 0x0209) > + */ > +struct ice_aqc_alloc_free_res_cmd { > + __le16 num_entries; /* Number of Resource entries */ > + u8 reserved[6]; > + __le32 addr_high; > + __le32 addr_low; > +}; > + > +/* Resource descriptor */ > +struct ice_aqc_res_elem { > + union { > + __le16 sw_resp; > + __le16 flu_resp; > + } e; > +}; > + > +/* Buffer for Allocate/Free Resources commands */ > +struct ice_aqc_alloc_free_res_elem { > + __le16 res_type; /* Types defined above cmd 0x0204 */ > +#define ICE_AQC_RES_TYPE_VSI_PRUNE_LIST_S 8 > +#define ICE_AQC_RES_TYPE_VSI_PRUNE_LIST_M \ > + (0xF << ICE_AQC_RES_TYPE_VSI_PRUNE_LIST_S) > + __le16 num_elems; > + struct ice_aqc_res_elem elem[1]; > +}; > + > +/* Get Allocated Resource Descriptors Command (indirect 0x020A) */ > +struct ice_aqc_get_allocd_res_desc { > + union { > + struct { > + __le16 res; /* Types defined above cmd 0x0204 */ > + __le16 first_desc; > + __le32 reserved; > + } cmd; > + struct { > + __le16 res; > + __le16 next_desc; > + __le16 num_desc; > + __le16 reserved; > + } resp; > + } ops; > + __le32 addr_high; > + __le32 addr_low; > +}; > + > +struct ice_aqc_get_allocd_res_desc_resp { > + struct ice_aqc_res_elem elem[1]; > +}; > + > +/* Add VSI (indirect 0x0210) > + * Update VSI (indirect 0x0211) > + * Get VSI (indirect 0x0212) > + * Free VSI (indirect 0x0213) > + */ > +struct ice_aqc_add_get_update_free_vsi { > + __le16 vsi_num; > +#define ICE_AQ_VSI_NUM_S 0 > +#define ICE_AQ_VSI_NUM_M (0x03FF << ICE_AQ_VSI_NUM_S) > +#define ICE_AQ_VSI_IS_VALID BIT(15) > + __le16 cmd_flags; > +#define ICE_AQ_VSI_KEEP_ALLOC 0x1 > + u8 vf_id; > + u8 reserved; > + __le16 vsi_flags; > +#define ICE_AQ_VSI_TYPE_S 0 > +#define ICE_AQ_VSI_TYPE_M (0x3 << ICE_AQ_VSI_TYPE_S) > +#define ICE_AQ_VSI_TYPE_VF 0x0 > +#define ICE_AQ_VSI_TYPE_VMDQ2 0x1 > +#define ICE_AQ_VSI_TYPE_PF 0x2 > +#define ICE_AQ_VSI_TYPE_EMP_MNG 0x3 > + __le32 addr_high; > + __le32 addr_low; > +}; > + > +/* Response descriptor for: > + * Add VSI (indirect 0x0210) > + * Update VSI (indirect 0x0211) > + * Free VSI (indirect 0x0213) > + */ > +struct ice_aqc_add_update_free_vsi_resp { > + __le16 vsi_num; > + __le16 ext_status; > + __le16 vsi_used; > + __le16 vsi_free; > + __le32 addr_high; > + __le32 addr_low; > +}; > + > +struct ice_aqc_get_vsi_resp { > + __le16 vsi_num; > + u8 vf_id; > + /* The vsi_flags field uses the ICE_AQ_VSI_TYPE_* defines for values. > + * These are found above in struct ice_aqc_add_get_update_free_vsi. > + */ > + u8 vsi_flags; > + __le16 vsi_used; > + __le16 vsi_free; > + __le32 addr_high; > + __le32 addr_low; > +}; > + > +struct ice_aqc_vsi_props { > + __le16 valid_sections; > +#define ICE_AQ_VSI_PROP_SW_VALID BIT(0) > +#define ICE_AQ_VSI_PROP_SECURITY_VALID BIT(1) > +#define ICE_AQ_VSI_PROP_VLAN_VALID BIT(2) > +#define ICE_AQ_VSI_PROP_OUTER_TAG_VALID BIT(3) > +#define ICE_AQ_VSI_PROP_INGRESS_UP_VALID BIT(4) > +#define ICE_AQ_VSI_PROP_EGRESS_UP_VALID BIT(5) > +#define ICE_AQ_VSI_PROP_RXQ_MAP_VALID BIT(6) > +#define ICE_AQ_VSI_PROP_Q_OPT_VALID BIT(7) > +#define ICE_AQ_VSI_PROP_OUTER_UP_VALID BIT(8) > +#define ICE_AQ_VSI_PROP_FLOW_DIR_VALID BIT(11) > +#define ICE_AQ_VSI_PROP_PASID_VALID BIT(12) > + /* switch section */ > + u8 sw_id; > + u8 sw_flags; > +#define ICE_AQ_VSI_SW_FLAG_ALLOW_LB BIT(5) > +#define ICE_AQ_VSI_SW_FLAG_LOCAL_LB BIT(6) > +#define ICE_AQ_VSI_SW_FLAG_SRC_PRUNE BIT(7) > + u8 sw_flags2; > +#define ICE_AQ_VSI_SW_FLAG_RX_PRUNE_EN_S 0 > +#define ICE_AQ_VSI_SW_FLAG_RX_PRUNE_EN_M \ > + (0xF << ICE_AQ_VSI_SW_FLAG_RX_PRUNE_EN_S) > +#define ICE_AQ_VSI_SW_FLAG_RX_VLAN_PRUNE_ENA BIT(0) > +#define ICE_AQ_VSI_SW_FLAG_LAN_ENA BIT(4) > + u8 veb_stat_id; > +#define ICE_AQ_VSI_SW_VEB_STAT_ID_S 0 > +#define ICE_AQ_VSI_SW_VEB_STAT_ID_M (0x1F << ICE_AQ_VSI_SW_VEB_STAT_ID_S) > +#define ICE_AQ_VSI_SW_VEB_STAT_ID_VALID BIT(5) > + /* security section */ > + u8 sec_flags; > +#define ICE_AQ_VSI_SEC_FLAG_ALLOW_DEST_OVRD BIT(0) > +#define ICE_AQ_VSI_SEC_FLAG_ENA_MAC_ANTI_SPOOF BIT(2) > +#define ICE_AQ_VSI_SEC_TX_PRUNE_ENA_S 4 > +#define ICE_AQ_VSI_SEC_TX_PRUNE_ENA_M (0xF << ICE_AQ_VSI_SEC_TX_PRUNE_ENA_S) > +#define ICE_AQ_VSI_SEC_TX_VLAN_PRUNE_ENA BIT(0) > + u8 sec_reserved; > + /* VLAN section */ > + __le16 pvid; /* VLANS include priority bits */ > + u8 pvlan_reserved[2]; > + u8 vlan_flags; > +#define ICE_AQ_VSI_VLAN_MODE_S 0 > +#define ICE_AQ_VSI_VLAN_MODE_M (0x3 << ICE_AQ_VSI_VLAN_MODE_S) > +#define ICE_AQ_VSI_VLAN_MODE_UNTAGGED 0x1 > +#define ICE_AQ_VSI_VLAN_MODE_TAGGED 0x2 > +#define ICE_AQ_VSI_VLAN_MODE_ALL 0x3 > +#define ICE_AQ_VSI_PVLAN_INSERT_PVID BIT(2) > +#define ICE_AQ_VSI_VLAN_EMOD_S 3 > +#define ICE_AQ_VSI_VLAN_EMOD_M (0x3 << ICE_AQ_VSI_VLAN_EMOD_S) > +#define ICE_AQ_VSI_VLAN_EMOD_STR_BOTH (0x0 << ICE_AQ_VSI_VLAN_EMOD_S) > +#define ICE_AQ_VSI_VLAN_EMOD_STR_UP (0x1 << ICE_AQ_VSI_VLAN_EMOD_S) > +#define ICE_AQ_VSI_VLAN_EMOD_STR (0x2 << ICE_AQ_VSI_VLAN_EMOD_S) > +#define ICE_AQ_VSI_VLAN_EMOD_NOTHING (0x3 << ICE_AQ_VSI_VLAN_EMOD_S) > + u8 pvlan_reserved2[3]; > + /* ingress egress up sections */ > + __le32 ingress_table; /* bitmap, 3 bits per up */ > +#define ICE_AQ_VSI_UP_TABLE_UP0_S 0 > +#define ICE_AQ_VSI_UP_TABLE_UP0_M (0x7 << ICE_AQ_VSI_UP_TABLE_UP0_S) > +#define ICE_AQ_VSI_UP_TABLE_UP1_S 3 > +#define ICE_AQ_VSI_UP_TABLE_UP1_M (0x7 << ICE_AQ_VSI_UP_TABLE_UP1_S) > +#define ICE_AQ_VSI_UP_TABLE_UP2_S 6 > +#define ICE_AQ_VSI_UP_TABLE_UP2_M (0x7 << ICE_AQ_VSI_UP_TABLE_UP2_S) > +#define ICE_AQ_VSI_UP_TABLE_UP3_S 9 > +#define ICE_AQ_VSI_UP_TABLE_UP3_M (0x7 << ICE_AQ_VSI_UP_TABLE_UP3_S) > +#define ICE_AQ_VSI_UP_TABLE_UP4_S 12 > +#define ICE_AQ_VSI_UP_TABLE_UP4_M (0x7 << ICE_AQ_VSI_UP_TABLE_UP4_S) > +#define ICE_AQ_VSI_UP_TABLE_UP5_S 15 > +#define ICE_AQ_VSI_UP_TABLE_UP5_M (0x7 << ICE_AQ_VSI_UP_TABLE_UP5_S) > +#define ICE_AQ_VSI_UP_TABLE_UP6_S 18 > +#define ICE_AQ_VSI_UP_TABLE_UP6_M (0x7 << ICE_AQ_VSI_UP_TABLE_UP6_S) > +#define ICE_AQ_VSI_UP_TABLE_UP7_S 21 > +#define ICE_AQ_VSI_UP_TABLE_UP7_M (0x7 << ICE_AQ_VSI_UP_TABLE_UP7_S) > + __le32 egress_table; /* same defines as for ingress table */ > + /* outer tags section */ > + __le16 outer_tag; > + u8 outer_tag_flags; > +#define ICE_AQ_VSI_OUTER_TAG_MODE_S 0 > +#define ICE_AQ_VSI_OUTER_TAG_MODE_M (0x3 << ICE_AQ_VSI_OUTER_TAG_MODE_S) > +#define ICE_AQ_VSI_OUTER_TAG_NOTHING 0x0 > +#define ICE_AQ_VSI_OUTER_TAG_REMOVE 0x1 > +#define ICE_AQ_VSI_OUTER_TAG_COPY 0x2 > +#define ICE_AQ_VSI_OUTER_TAG_TYPE_S 2 > +#define ICE_AQ_VSI_OUTER_TAG_TYPE_M (0x3 << ICE_AQ_VSI_OUTER_TAG_TYPE_S) > +#define ICE_AQ_VSI_OUTER_TAG_NONE 0x0 > +#define ICE_AQ_VSI_OUTER_TAG_STAG 0x1 > +#define ICE_AQ_VSI_OUTER_TAG_VLAN_8100 0x2 > +#define ICE_AQ_VSI_OUTER_TAG_VLAN_9100 0x3 > +#define ICE_AQ_VSI_OUTER_TAG_INSERT BIT(4) > +#define ICE_AQ_VSI_OUTER_TAG_ACCEPT_HOST BIT(6) > + u8 outer_tag_reserved; > + /* queue mapping section */ > + __le16 mapping_flags; > +#define ICE_AQ_VSI_Q_MAP_CONTIG 0x0 > +#define ICE_AQ_VSI_Q_MAP_NONCONTIG BIT(0) > + __le16 q_mapping[16]; > +#define ICE_AQ_VSI_Q_S 0 > +#define ICE_AQ_VSI_Q_M (0x7FF << ICE_AQ_VSI_Q_S) > + __le16 tc_mapping[8]; > +#define ICE_AQ_VSI_TC_Q_OFFSET_S 0 > +#define ICE_AQ_VSI_TC_Q_OFFSET_M (0x7FF << ICE_AQ_VSI_TC_Q_OFFSET_S) > +#define ICE_AQ_VSI_TC_Q_NUM_S 11 > > *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** > -- Rod Grimes rgrimes@freebsd.org From owner-svn-src-all@freebsd.org Wed May 27 01:04:04 2020 Return-Path: Delivered-To: svn-src-all@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 168332F9556; Wed, 27 May 2020 01:04:04 +0000 (UTC) (envelope-from emaste@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49WszR6xzqz4HXr; Wed, 27 May 2020 01:04:03 +0000 (UTC) (envelope-from emaste@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 E97B5C722; Wed, 27 May 2020 01:04:03 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04R143b7017753; Wed, 27 May 2020 01:04:03 GMT (envelope-from emaste@FreeBSD.org) Received: (from emaste@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04R143wX017752; Wed, 27 May 2020 01:04:03 GMT (envelope-from emaste@FreeBSD.org) Message-Id: <202005270104.04R143wX017752@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: emaste set sender to emaste@FreeBSD.org using -f From: Ed Maste Date: Wed, 27 May 2020 01:04:03 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org Subject: svn commit: r361543 - stable/12/share/vt/keymaps X-SVN-Group: stable-12 X-SVN-Commit-Author: emaste X-SVN-Commit-Paths: stable/12/share/vt/keymaps X-SVN-Commit-Revision: 361543 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2020 01:04:04 -0000 Author: emaste Date: Wed May 27 01:04:03 2020 New Revision: 361543 URL: https://svnweb.freebsd.org/changeset/base/361543 Log: MFC r361292: vt: fix duplicate keymap descriptions PR: 246495 Submitted by: Jorge Maidana Modified: stable/12/share/vt/keymaps/INDEX.keymaps Directory Properties: stable/12/ (props changed) Modified: stable/12/share/vt/keymaps/INDEX.keymaps ============================================================================== --- stable/12/share/vt/keymaps/INDEX.keymaps Wed May 27 00:17:05 2020 (r361542) +++ stable/12/share/vt/keymaps/INDEX.keymaps Wed May 27 01:04:03 2020 (r361543) @@ -308,10 +308,10 @@ kz.kst.kbd:da:Kasakhisk kz.kst.kbd:de:Kasachisch kz.kst.kbd:fr:Kazakh -kz.io.kbd:en:Kazakh -kz.io.kbd:da:Kasakhisk -kz.io.kbd:de:Kasachisch -kz.io.kbd:fr:Kazakh +kz.io.kbd:en:Kazakh (with IO) +kz.io.kbd:da:Kasakhisk (IO) +kz.io.kbd:de:Kasachisch (mit IO) +kz.io.kbd:fr:Kazakh (avec IO) latinamerican.kbd:en:Latin American latinamerican.kbd:da:Latinamerikansk @@ -411,19 +411,19 @@ es.dvorak.kbd:fr:Espagnol Dvorak es.dvorak.kbd:pt:Espanhol Dvorak es.dvorak.kbd:es:Español Dvorak +es.kbd:en:Spanish +es.kbd:da:Spansk +es.kbd:de:Spanisch +es.kbd:fr:Espagnol +es.kbd:pt:Espanhol +es.kbd:es:Español + es.acc.kbd:en:Spanish (accent keys) es.acc.kbd:da:Spansk (accenttaster) es.acc.kbd:de:Spanisch (accent keys) es.acc.kbd:fr:Espagnol (avec accents) es.acc.kbd:pt:Espanhol (com acentos) es.acc.kbd:es:Español (con acentos) - -es.kbd:en:Spanish (accent keys) -es.kbd:da:Spansk (accenttaster) -es.kbd:de:Spanisch (accent keys) -es.kbd:fr:Espagnol (avec accents) -es.kbd:pt:Espanhol (com acentos) -es.kbd:es:Español (con acentos) si.kbd:en:Slovenian si.kbd:da:Slovensk From owner-svn-src-all@freebsd.org Wed May 27 01:24:13 2020 Return-Path: Delivered-To: svn-src-all@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 B4E722F9F1E; Wed, 27 May 2020 01:24:13 +0000 (UTC) (envelope-from jhibbits@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49WtQj4bDQz4Jn8; Wed, 27 May 2020 01:24:13 +0000 (UTC) (envelope-from jhibbits@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 7E5AAC6F1; Wed, 27 May 2020 01:24:13 +0000 (UTC) (envelope-from jhibbits@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04R1ODO4030117; Wed, 27 May 2020 01:24:13 GMT (envelope-from jhibbits@FreeBSD.org) Received: (from jhibbits@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04R1ODAh030113; Wed, 27 May 2020 01:24:13 GMT (envelope-from jhibbits@FreeBSD.org) Message-Id: <202005270124.04R1ODAh030113@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: jhibbits set sender to jhibbits@FreeBSD.org using -f From: Justin Hibbits Date: Wed, 27 May 2020 01:24:13 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361544 - in head/sys: conf powerpc/aim powerpc/booke powerpc/include powerpc/powerpc powerpc/ps3 powerpc/pseries X-SVN-Group: head X-SVN-Commit-Author: jhibbits X-SVN-Commit-Paths: in head/sys: conf powerpc/aim powerpc/booke powerpc/include powerpc/powerpc powerpc/ps3 powerpc/pseries X-SVN-Commit-Revision: 361544 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2020 01:24:13 -0000 Author: jhibbits Date: Wed May 27 01:24:12 2020 New Revision: 361544 URL: https://svnweb.freebsd.org/changeset/base/361544 Log: powerpc/mmu: Convert PowerPC pmap drivers to ifunc from kobj With IFUNC support in the kernel, we can finally get rid of our poor-man's ifunc for pmap, utilizing kobj. Since moea64 uses a second tier kobj as well, for its own private methods, this adds a second pmap install function (pmap_mmu_init()) to perform pmap 'post-install pre-bootstrap' initialization, before the IFUNCs get initialized. Reviewed by: bdragon Deleted: head/sys/powerpc/aim/moea64_if.m head/sys/powerpc/powerpc/mmu_if.m Modified: head/sys/conf/files.powerpc head/sys/powerpc/aim/mmu_oea.c head/sys/powerpc/aim/mmu_oea64.c head/sys/powerpc/aim/mmu_oea64.h head/sys/powerpc/aim/mmu_radix.c head/sys/powerpc/aim/moea64_native.c head/sys/powerpc/booke/booke_machdep.c head/sys/powerpc/booke/pmap.c head/sys/powerpc/booke/pmap_32.c head/sys/powerpc/booke/pmap_64.c head/sys/powerpc/include/mmuvar.h head/sys/powerpc/include/pmap.h head/sys/powerpc/powerpc/machdep.c head/sys/powerpc/powerpc/pmap_dispatch.c head/sys/powerpc/ps3/mmu_ps3.c head/sys/powerpc/pseries/mmu_phyp.c Modified: head/sys/conf/files.powerpc ============================================================================== --- head/sys/conf/files.powerpc Wed May 27 01:04:03 2020 (r361543) +++ head/sys/conf/files.powerpc Wed May 27 01:24:12 2020 (r361544) @@ -135,7 +135,6 @@ powerpc/aim/aim_machdep.c optional aim powerpc/aim/mmu_oea.c optional aim powerpc powerpc/aim/mmu_oea64.c optional aim powerpc/aim/mmu_radix.c optional aim powerpc64 -powerpc/aim/moea64_if.m optional aim powerpc/aim/moea64_native.c optional aim powerpc/aim/mp_cpudep.c optional aim powerpc/aim/slb.c optional aim powerpc64 @@ -260,7 +259,6 @@ powerpc/powerpc/iommu_if.m standard powerpc/powerpc/machdep.c standard powerpc/powerpc/mem.c optional mem powerpc/powerpc/minidump_machdep.c optional powerpc64 -powerpc/powerpc/mmu_if.m standard powerpc/powerpc/mp_machdep.c optional smp powerpc/powerpc/nexus.c standard powerpc/powerpc/openpic.c standard Modified: head/sys/powerpc/aim/mmu_oea.c ============================================================================== --- head/sys/powerpc/aim/mmu_oea.c Wed May 27 01:04:03 2020 (r361543) +++ head/sys/powerpc/aim/mmu_oea.c Wed May 27 01:24:12 2020 (r361544) @@ -149,8 +149,6 @@ __FBSDID("$FreeBSD$"); #include #include -#include "mmu_if.h" - #define MOEA_DEBUG #define TODO panic("%s: not implemented", __func__); @@ -267,125 +265,123 @@ static int moea_enter_locked(pmap_t, vm_offset_t, vm_ static void moea_syncicache(vm_paddr_t, vm_size_t); static boolean_t moea_query_bit(vm_page_t, int); static u_int moea_clear_bit(vm_page_t, int); -static void moea_kremove(mmu_t, vm_offset_t); +static void moea_kremove(vm_offset_t); int moea_pte_spill(vm_offset_t); /* * Kernel MMU interface */ -void moea_clear_modify(mmu_t, vm_page_t); -void moea_copy_page(mmu_t, vm_page_t, vm_page_t); -void moea_copy_pages(mmu_t mmu, vm_page_t *ma, vm_offset_t a_offset, +void moea_clear_modify(vm_page_t); +void moea_copy_page(vm_page_t, vm_page_t); +void moea_copy_pages(vm_page_t *ma, vm_offset_t a_offset, vm_page_t *mb, vm_offset_t b_offset, int xfersize); -int moea_enter(mmu_t, pmap_t, vm_offset_t, vm_page_t, vm_prot_t, u_int, +int moea_enter(pmap_t, vm_offset_t, vm_page_t, vm_prot_t, u_int, int8_t); -void moea_enter_object(mmu_t, pmap_t, vm_offset_t, vm_offset_t, vm_page_t, +void moea_enter_object(pmap_t, vm_offset_t, vm_offset_t, vm_page_t, vm_prot_t); -void moea_enter_quick(mmu_t, pmap_t, vm_offset_t, vm_page_t, vm_prot_t); -vm_paddr_t moea_extract(mmu_t, pmap_t, vm_offset_t); -vm_page_t moea_extract_and_hold(mmu_t, pmap_t, vm_offset_t, vm_prot_t); -void moea_init(mmu_t); -boolean_t moea_is_modified(mmu_t, vm_page_t); -boolean_t moea_is_prefaultable(mmu_t, pmap_t, vm_offset_t); -boolean_t moea_is_referenced(mmu_t, vm_page_t); -int moea_ts_referenced(mmu_t, vm_page_t); -vm_offset_t moea_map(mmu_t, vm_offset_t *, vm_paddr_t, vm_paddr_t, int); -boolean_t moea_page_exists_quick(mmu_t, pmap_t, vm_page_t); -void moea_page_init(mmu_t, vm_page_t); -int moea_page_wired_mappings(mmu_t, vm_page_t); -void moea_pinit(mmu_t, pmap_t); -void moea_pinit0(mmu_t, pmap_t); -void moea_protect(mmu_t, pmap_t, vm_offset_t, vm_offset_t, vm_prot_t); -void moea_qenter(mmu_t, vm_offset_t, vm_page_t *, int); -void moea_qremove(mmu_t, vm_offset_t, int); -void moea_release(mmu_t, pmap_t); -void moea_remove(mmu_t, pmap_t, vm_offset_t, vm_offset_t); -void moea_remove_all(mmu_t, vm_page_t); -void moea_remove_write(mmu_t, vm_page_t); -void moea_unwire(mmu_t, pmap_t, vm_offset_t, vm_offset_t); -void moea_zero_page(mmu_t, vm_page_t); -void moea_zero_page_area(mmu_t, vm_page_t, int, int); -void moea_activate(mmu_t, struct thread *); -void moea_deactivate(mmu_t, struct thread *); -void moea_cpu_bootstrap(mmu_t, int); -void moea_bootstrap(mmu_t, vm_offset_t, vm_offset_t); -void *moea_mapdev(mmu_t, vm_paddr_t, vm_size_t); -void *moea_mapdev_attr(mmu_t, vm_paddr_t, vm_size_t, vm_memattr_t); -void moea_unmapdev(mmu_t, vm_offset_t, vm_size_t); -vm_paddr_t moea_kextract(mmu_t, vm_offset_t); -void moea_kenter_attr(mmu_t, vm_offset_t, vm_paddr_t, vm_memattr_t); -void moea_kenter(mmu_t, vm_offset_t, vm_paddr_t); -void moea_page_set_memattr(mmu_t mmu, vm_page_t m, vm_memattr_t ma); -boolean_t moea_dev_direct_mapped(mmu_t, vm_paddr_t, vm_size_t); -static void moea_sync_icache(mmu_t, pmap_t, vm_offset_t, vm_size_t); -void moea_dumpsys_map(mmu_t mmu, vm_paddr_t pa, size_t sz, void **va); -void moea_scan_init(mmu_t mmu); -vm_offset_t moea_quick_enter_page(mmu_t mmu, vm_page_t m); -void moea_quick_remove_page(mmu_t mmu, vm_offset_t addr); -boolean_t moea_page_is_mapped(mmu_t mmu, vm_page_t m); -static int moea_map_user_ptr(mmu_t mmu, pmap_t pm, +void moea_enter_quick(pmap_t, vm_offset_t, vm_page_t, vm_prot_t); +vm_paddr_t moea_extract(pmap_t, vm_offset_t); +vm_page_t moea_extract_and_hold(pmap_t, vm_offset_t, vm_prot_t); +void moea_init(void); +boolean_t moea_is_modified(vm_page_t); +boolean_t moea_is_prefaultable(pmap_t, vm_offset_t); +boolean_t moea_is_referenced(vm_page_t); +int moea_ts_referenced(vm_page_t); +vm_offset_t moea_map(vm_offset_t *, vm_paddr_t, vm_paddr_t, int); +boolean_t moea_page_exists_quick(pmap_t, vm_page_t); +void moea_page_init(vm_page_t); +int moea_page_wired_mappings(vm_page_t); +int moea_pinit(pmap_t); +void moea_pinit0(pmap_t); +void moea_protect(pmap_t, vm_offset_t, vm_offset_t, vm_prot_t); +void moea_qenter(vm_offset_t, vm_page_t *, int); +void moea_qremove(vm_offset_t, int); +void moea_release(pmap_t); +void moea_remove(pmap_t, vm_offset_t, vm_offset_t); +void moea_remove_all(vm_page_t); +void moea_remove_write(vm_page_t); +void moea_unwire(pmap_t, vm_offset_t, vm_offset_t); +void moea_zero_page(vm_page_t); +void moea_zero_page_area(vm_page_t, int, int); +void moea_activate(struct thread *); +void moea_deactivate(struct thread *); +void moea_cpu_bootstrap(int); +void moea_bootstrap(vm_offset_t, vm_offset_t); +void *moea_mapdev(vm_paddr_t, vm_size_t); +void *moea_mapdev_attr(vm_paddr_t, vm_size_t, vm_memattr_t); +void moea_unmapdev(vm_offset_t, vm_size_t); +vm_paddr_t moea_kextract(vm_offset_t); +void moea_kenter_attr(vm_offset_t, vm_paddr_t, vm_memattr_t); +void moea_kenter(vm_offset_t, vm_paddr_t); +void moea_page_set_memattr(vm_page_t m, vm_memattr_t ma); +boolean_t moea_dev_direct_mapped(vm_paddr_t, vm_size_t); +static void moea_sync_icache(pmap_t, vm_offset_t, vm_size_t); +void moea_dumpsys_map(vm_paddr_t pa, size_t sz, void **va); +void moea_scan_init(void); +vm_offset_t moea_quick_enter_page(vm_page_t m); +void moea_quick_remove_page(vm_offset_t addr); +boolean_t moea_page_is_mapped(vm_page_t m); +static int moea_map_user_ptr(pmap_t pm, volatile const void *uaddr, void **kaddr, size_t ulen, size_t *klen); -static int moea_decode_kernel_ptr(mmu_t mmu, vm_offset_t addr, +static int moea_decode_kernel_ptr(vm_offset_t addr, int *is_user, vm_offset_t *decoded_addr); -static mmu_method_t moea_methods[] = { - MMUMETHOD(mmu_clear_modify, moea_clear_modify), - MMUMETHOD(mmu_copy_page, moea_copy_page), - MMUMETHOD(mmu_copy_pages, moea_copy_pages), - MMUMETHOD(mmu_enter, moea_enter), - MMUMETHOD(mmu_enter_object, moea_enter_object), - MMUMETHOD(mmu_enter_quick, moea_enter_quick), - MMUMETHOD(mmu_extract, moea_extract), - MMUMETHOD(mmu_extract_and_hold, moea_extract_and_hold), - MMUMETHOD(mmu_init, moea_init), - MMUMETHOD(mmu_is_modified, moea_is_modified), - MMUMETHOD(mmu_is_prefaultable, moea_is_prefaultable), - MMUMETHOD(mmu_is_referenced, moea_is_referenced), - MMUMETHOD(mmu_ts_referenced, moea_ts_referenced), - MMUMETHOD(mmu_map, moea_map), - MMUMETHOD(mmu_page_exists_quick,moea_page_exists_quick), - MMUMETHOD(mmu_page_init, moea_page_init), - MMUMETHOD(mmu_page_wired_mappings,moea_page_wired_mappings), - MMUMETHOD(mmu_pinit, moea_pinit), - MMUMETHOD(mmu_pinit0, moea_pinit0), - MMUMETHOD(mmu_protect, moea_protect), - MMUMETHOD(mmu_qenter, moea_qenter), - MMUMETHOD(mmu_qremove, moea_qremove), - MMUMETHOD(mmu_release, moea_release), - MMUMETHOD(mmu_remove, moea_remove), - MMUMETHOD(mmu_remove_all, moea_remove_all), - MMUMETHOD(mmu_remove_write, moea_remove_write), - MMUMETHOD(mmu_sync_icache, moea_sync_icache), - MMUMETHOD(mmu_unwire, moea_unwire), - MMUMETHOD(mmu_zero_page, moea_zero_page), - MMUMETHOD(mmu_zero_page_area, moea_zero_page_area), - MMUMETHOD(mmu_activate, moea_activate), - MMUMETHOD(mmu_deactivate, moea_deactivate), - MMUMETHOD(mmu_page_set_memattr, moea_page_set_memattr), - MMUMETHOD(mmu_quick_enter_page, moea_quick_enter_page), - MMUMETHOD(mmu_quick_remove_page, moea_quick_remove_page), - MMUMETHOD(mmu_page_is_mapped, moea_page_is_mapped), +static struct pmap_funcs moea_methods = { + .clear_modify = moea_clear_modify, + .copy_page = moea_copy_page, + .copy_pages = moea_copy_pages, + .enter = moea_enter, + .enter_object = moea_enter_object, + .enter_quick = moea_enter_quick, + .extract = moea_extract, + .extract_and_hold = moea_extract_and_hold, + .init = moea_init, + .is_modified = moea_is_modified, + .is_prefaultable = moea_is_prefaultable, + .is_referenced = moea_is_referenced, + .ts_referenced = moea_ts_referenced, + .map = moea_map, + .page_exists_quick = moea_page_exists_quick, + .page_init = moea_page_init, + .page_wired_mappings = moea_page_wired_mappings, + .pinit = moea_pinit, + .pinit0 = moea_pinit0, + .protect = moea_protect, + .qenter = moea_qenter, + .qremove = moea_qremove, + .release = moea_release, + .remove = moea_remove, + .remove_all = moea_remove_all, + .remove_write = moea_remove_write, + .sync_icache = moea_sync_icache, + .unwire = moea_unwire, + .zero_page = moea_zero_page, + .zero_page_area = moea_zero_page_area, + .activate = moea_activate, + .deactivate = moea_deactivate, + .page_set_memattr = moea_page_set_memattr, + .quick_enter_page = moea_quick_enter_page, + .quick_remove_page = moea_quick_remove_page, + .page_is_mapped = moea_page_is_mapped, /* Internal interfaces */ - MMUMETHOD(mmu_bootstrap, moea_bootstrap), - MMUMETHOD(mmu_cpu_bootstrap, moea_cpu_bootstrap), - MMUMETHOD(mmu_mapdev_attr, moea_mapdev_attr), - MMUMETHOD(mmu_mapdev, moea_mapdev), - MMUMETHOD(mmu_unmapdev, moea_unmapdev), - MMUMETHOD(mmu_kextract, moea_kextract), - MMUMETHOD(mmu_kenter, moea_kenter), - MMUMETHOD(mmu_kenter_attr, moea_kenter_attr), - MMUMETHOD(mmu_dev_direct_mapped,moea_dev_direct_mapped), - MMUMETHOD(mmu_scan_init, moea_scan_init), - MMUMETHOD(mmu_dumpsys_map, moea_dumpsys_map), - MMUMETHOD(mmu_map_user_ptr, moea_map_user_ptr), - MMUMETHOD(mmu_decode_kernel_ptr, moea_decode_kernel_ptr), - - { 0, 0 } + .bootstrap = moea_bootstrap, + .cpu_bootstrap = moea_cpu_bootstrap, + .mapdev_attr = moea_mapdev_attr, + .mapdev = moea_mapdev, + .unmapdev = moea_unmapdev, + .kextract = moea_kextract, + .kenter = moea_kenter, + .kenter_attr = moea_kenter_attr, + .dev_direct_mapped = moea_dev_direct_mapped, + .dumpsys_pa_init = moea_scan_init, + .dumpsys_map_chunk = moea_dumpsys_map, + .map_user_ptr = moea_map_user_ptr, + .decode_kernel_ptr = moea_decode_kernel_ptr, }; -MMU_DEF(oea_mmu, MMU_TYPE_OEA, moea_methods, 0); +MMU_DEF(oea_mmu, MMU_TYPE_OEA, moea_methods); static __inline uint32_t moea_calc_wimg(vm_paddr_t pa, vm_memattr_t ma) @@ -627,7 +623,7 @@ om_cmp(const void *a, const void *b) } void -moea_cpu_bootstrap(mmu_t mmup, int ap) +moea_cpu_bootstrap(int ap) { u_int sdr; int i; @@ -665,7 +661,7 @@ moea_cpu_bootstrap(mmu_t mmup, int ap) } void -moea_bootstrap(mmu_t mmup, vm_offset_t kernelstart, vm_offset_t kernelend) +moea_bootstrap(vm_offset_t kernelstart, vm_offset_t kernelend) { ihandle_t mmui; phandle_t chosen, mmu; @@ -921,7 +917,7 @@ moea_bootstrap(mmu_t mmup, vm_offset_t kernelstart, vm /* Enter the pages */ for (off = 0; off < translations[i].om_len; off += PAGE_SIZE) - moea_kenter(mmup, translations[i].om_va + off, + moea_kenter(translations[i].om_va + off, translations[i].om_pa + off); } } @@ -933,7 +929,7 @@ moea_bootstrap(mmu_t mmup, vm_offset_t kernelstart, vm ; Maxmem = powerpc_btop(phys_avail[i + 1]); - moea_cpu_bootstrap(mmup,0); + moea_cpu_bootstrap(0); mtmsr(mfmsr() | PSL_DR | PSL_IR); pmap_bootstrapped++; @@ -954,7 +950,7 @@ moea_bootstrap(mmu_t mmup, vm_offset_t kernelstart, vm thread0.td_kstack = va; thread0.td_kstack_pages = kstack_pages; for (i = 0; i < kstack_pages; i++) { - moea_kenter(mmup, va, pa); + moea_kenter(va, pa); pa += PAGE_SIZE; va += PAGE_SIZE; } @@ -967,7 +963,7 @@ moea_bootstrap(mmu_t mmup, vm_offset_t kernelstart, vm va = virtual_avail; virtual_avail += round_page(msgbufsize); while (va < virtual_avail) { - moea_kenter(mmup, va, pa); + moea_kenter(va, pa); pa += PAGE_SIZE; va += PAGE_SIZE; } @@ -980,7 +976,7 @@ moea_bootstrap(mmu_t mmup, vm_offset_t kernelstart, vm va = virtual_avail; virtual_avail += DPCPU_SIZE; while (va < virtual_avail) { - moea_kenter(mmup, va, pa); + moea_kenter(va, pa); pa += PAGE_SIZE; va += PAGE_SIZE; } @@ -992,7 +988,7 @@ moea_bootstrap(mmu_t mmup, vm_offset_t kernelstart, vm * space can be accessed in any way. */ void -moea_activate(mmu_t mmu, struct thread *td) +moea_activate(struct thread *td) { pmap_t pm, pmr; @@ -1010,7 +1006,7 @@ moea_activate(mmu_t mmu, struct thread *td) } void -moea_deactivate(mmu_t mmu, struct thread *td) +moea_deactivate(struct thread *td) { pmap_t pm; @@ -1020,7 +1016,7 @@ moea_deactivate(mmu_t mmu, struct thread *td) } void -moea_unwire(mmu_t mmu, pmap_t pm, vm_offset_t sva, vm_offset_t eva) +moea_unwire(pmap_t pm, vm_offset_t sva, vm_offset_t eva) { struct pvo_entry key, *pvo; @@ -1038,7 +1034,7 @@ moea_unwire(mmu_t mmu, pmap_t pm, vm_offset_t sva, vm_ } void -moea_copy_page(mmu_t mmu, vm_page_t msrc, vm_page_t mdst) +moea_copy_page(vm_page_t msrc, vm_page_t mdst) { vm_offset_t dst; vm_offset_t src; @@ -1050,7 +1046,7 @@ moea_copy_page(mmu_t mmu, vm_page_t msrc, vm_page_t md } void -moea_copy_pages(mmu_t mmu, vm_page_t *ma, vm_offset_t a_offset, +moea_copy_pages(vm_page_t *ma, vm_offset_t a_offset, vm_page_t *mb, vm_offset_t b_offset, int xfersize) { void *a_cp, *b_cp; @@ -1077,7 +1073,7 @@ moea_copy_pages(mmu_t mmu, vm_page_t *ma, vm_offset_t * Zero a page of physical memory by temporarily mapping it into the tlb. */ void -moea_zero_page(mmu_t mmu, vm_page_t m) +moea_zero_page(vm_page_t m) { vm_offset_t off, pa = VM_PAGE_TO_PHYS(m); @@ -1086,7 +1082,7 @@ moea_zero_page(mmu_t mmu, vm_page_t m) } void -moea_zero_page_area(mmu_t mmu, vm_page_t m, int off, int size) +moea_zero_page_area(vm_page_t m, int off, int size) { vm_offset_t pa = VM_PAGE_TO_PHYS(m); void *va = (void *)(pa + off); @@ -1095,19 +1091,19 @@ moea_zero_page_area(mmu_t mmu, vm_page_t m, int off, i } vm_offset_t -moea_quick_enter_page(mmu_t mmu, vm_page_t m) +moea_quick_enter_page(vm_page_t m) { return (VM_PAGE_TO_PHYS(m)); } void -moea_quick_remove_page(mmu_t mmu, vm_offset_t addr) +moea_quick_remove_page(vm_offset_t addr) { } boolean_t -moea_page_is_mapped(mmu_t mmu, vm_page_t m) +moea_page_is_mapped(vm_page_t m) { return (!LIST_EMPTY(&(m)->md.mdpg_pvoh)); } @@ -1118,7 +1114,7 @@ moea_page_is_mapped(mmu_t mmu, vm_page_t m) * will be wired down. */ int -moea_enter(mmu_t mmu, pmap_t pmap, vm_offset_t va, vm_page_t m, vm_prot_t prot, +moea_enter(pmap_t pmap, vm_offset_t va, vm_page_t m, vm_prot_t prot, u_int flags, int8_t psind) { int error; @@ -1216,7 +1212,7 @@ moea_enter_locked(pmap_t pmap, vm_offset_t va, vm_page * corresponding offset from m_start are mapped. */ void -moea_enter_object(mmu_t mmu, pmap_t pm, vm_offset_t start, vm_offset_t end, +moea_enter_object(pmap_t pm, vm_offset_t start, vm_offset_t end, vm_page_t m_start, vm_prot_t prot) { vm_page_t m; @@ -1239,7 +1235,7 @@ moea_enter_object(mmu_t mmu, pmap_t pm, vm_offset_t st } void -moea_enter_quick(mmu_t mmu, pmap_t pm, vm_offset_t va, vm_page_t m, +moea_enter_quick(pmap_t pm, vm_offset_t va, vm_page_t m, vm_prot_t prot) { @@ -1252,7 +1248,7 @@ moea_enter_quick(mmu_t mmu, pmap_t pm, vm_offset_t va, } vm_paddr_t -moea_extract(mmu_t mmu, pmap_t pm, vm_offset_t va) +moea_extract(pmap_t pm, vm_offset_t va) { struct pvo_entry *pvo; vm_paddr_t pa; @@ -1273,7 +1269,7 @@ moea_extract(mmu_t mmu, pmap_t pm, vm_offset_t va) * protection. */ vm_page_t -moea_extract_and_hold(mmu_t mmu, pmap_t pmap, vm_offset_t va, vm_prot_t prot) +moea_extract_and_hold(pmap_t pmap, vm_offset_t va, vm_prot_t prot) { struct pvo_entry *pvo; vm_page_t m; @@ -1293,7 +1289,7 @@ moea_extract_and_hold(mmu_t mmu, pmap_t pmap, vm_offse } void -moea_init(mmu_t mmu) +moea_init() { moea_upvo_zone = uma_zcreate("UPVO entry", sizeof (struct pvo_entry), @@ -1306,7 +1302,7 @@ moea_init(mmu_t mmu) } boolean_t -moea_is_referenced(mmu_t mmu, vm_page_t m) +moea_is_referenced(vm_page_t m) { boolean_t rv; @@ -1319,7 +1315,7 @@ moea_is_referenced(mmu_t mmu, vm_page_t m) } boolean_t -moea_is_modified(mmu_t mmu, vm_page_t m) +moea_is_modified(vm_page_t m) { boolean_t rv; @@ -1339,7 +1335,7 @@ moea_is_modified(mmu_t mmu, vm_page_t m) } boolean_t -moea_is_prefaultable(mmu_t mmu, pmap_t pmap, vm_offset_t va) +moea_is_prefaultable(pmap_t pmap, vm_offset_t va) { struct pvo_entry *pvo; boolean_t rv; @@ -1352,7 +1348,7 @@ moea_is_prefaultable(mmu_t mmu, pmap_t pmap, vm_offset } void -moea_clear_modify(mmu_t mmu, vm_page_t m) +moea_clear_modify(vm_page_t m) { KASSERT((m->oflags & VPO_UNMANAGED) == 0, @@ -1370,7 +1366,7 @@ moea_clear_modify(mmu_t mmu, vm_page_t m) * Clear the write and modified bits in each of the given page's mappings. */ void -moea_remove_write(mmu_t mmu, vm_page_t m) +moea_remove_write(vm_page_t m) { struct pvo_entry *pvo; struct pte *pt; @@ -1425,7 +1421,7 @@ moea_remove_write(mmu_t mmu, vm_page_t m) * optimal aging of shared pages. */ int -moea_ts_referenced(mmu_t mmu, vm_page_t m) +moea_ts_referenced(vm_page_t m) { int count; @@ -1441,7 +1437,7 @@ moea_ts_referenced(mmu_t mmu, vm_page_t m) * Modify the WIMG settings of all mappings for a page. */ void -moea_page_set_memattr(mmu_t mmu, vm_page_t m, vm_memattr_t ma) +moea_page_set_memattr(vm_page_t m, vm_memattr_t ma) { struct pvo_entry *pvo; struct pvo_head *pvo_head; @@ -1481,14 +1477,14 @@ moea_page_set_memattr(mmu_t mmu, vm_page_t m, vm_memat * Map a wired page into kernel virtual address space. */ void -moea_kenter(mmu_t mmu, vm_offset_t va, vm_paddr_t pa) +moea_kenter(vm_offset_t va, vm_paddr_t pa) { - moea_kenter_attr(mmu, va, pa, VM_MEMATTR_DEFAULT); + moea_kenter_attr(va, pa, VM_MEMATTR_DEFAULT); } void -moea_kenter_attr(mmu_t mmu, vm_offset_t va, vm_paddr_t pa, vm_memattr_t ma) +moea_kenter_attr(vm_offset_t va, vm_paddr_t pa, vm_memattr_t ma) { u_int pte_lo; int error; @@ -1517,7 +1513,7 @@ moea_kenter_attr(mmu_t mmu, vm_offset_t va, vm_paddr_t * address. */ vm_paddr_t -moea_kextract(mmu_t mmu, vm_offset_t va) +moea_kextract(vm_offset_t va) { struct pvo_entry *pvo; vm_paddr_t pa; @@ -1541,10 +1537,10 @@ moea_kextract(mmu_t mmu, vm_offset_t va) * Remove a wired page from kernel virtual address space. */ void -moea_kremove(mmu_t mmu, vm_offset_t va) +moea_kremove(vm_offset_t va) { - moea_remove(mmu, kernel_pmap, va, va + PAGE_SIZE); + moea_remove(kernel_pmap, va, va + PAGE_SIZE); } /* @@ -1553,7 +1549,7 @@ moea_kremove(mmu_t mmu, vm_offset_t va) * called in this thread. This is used internally in copyin/copyout. */ int -moea_map_user_ptr(mmu_t mmu, pmap_t pm, volatile const void *uaddr, +moea_map_user_ptr(pmap_t pm, volatile const void *uaddr, void **kaddr, size_t ulen, size_t *klen) { size_t l; @@ -1592,7 +1588,7 @@ moea_map_user_ptr(mmu_t mmu, pmap_t pm, volatile const * address space. */ static int -moea_decode_kernel_ptr(mmu_t mmu, vm_offset_t addr, int *is_user, +moea_decode_kernel_ptr(vm_offset_t addr, int *is_user, vm_offset_t *decoded_addr) { vm_offset_t user_sr; @@ -1621,7 +1617,7 @@ moea_decode_kernel_ptr(mmu_t mmu, vm_offset_t addr, in * first usable address after the mapped region. */ vm_offset_t -moea_map(mmu_t mmu, vm_offset_t *virt, vm_paddr_t pa_start, +moea_map(vm_offset_t *virt, vm_paddr_t pa_start, vm_paddr_t pa_end, int prot) { vm_offset_t sva, va; @@ -1629,7 +1625,7 @@ moea_map(mmu_t mmu, vm_offset_t *virt, vm_paddr_t pa_s sva = *virt; va = sva; for (; pa_start < pa_end; pa_start += PAGE_SIZE, va += PAGE_SIZE) - moea_kenter(mmu, va, pa_start); + moea_kenter(va, pa_start); *virt = va; return (sva); } @@ -1642,7 +1638,7 @@ moea_map(mmu_t mmu, vm_offset_t *virt, vm_paddr_t pa_s * subset of pmaps for proper page aging. */ boolean_t -moea_page_exists_quick(mmu_t mmu, pmap_t pmap, vm_page_t m) +moea_page_exists_quick(pmap_t pmap, vm_page_t m) { int loops; struct pvo_entry *pvo; @@ -1666,7 +1662,7 @@ moea_page_exists_quick(mmu_t mmu, pmap_t pmap, vm_page } void -moea_page_init(mmu_t mmu __unused, vm_page_t m) +moea_page_init(vm_page_t m) { m->md.mdpg_attrs = 0; @@ -1679,7 +1675,7 @@ moea_page_init(mmu_t mmu __unused, vm_page_t m) * that are wired. */ int -moea_page_wired_mappings(mmu_t mmu, vm_page_t m) +moea_page_wired_mappings(vm_page_t m) { struct pvo_entry *pvo; int count; @@ -1697,8 +1693,8 @@ moea_page_wired_mappings(mmu_t mmu, vm_page_t m) static u_int moea_vsidcontext; -void -moea_pinit(mmu_t mmu, pmap_t pmap) +int +moea_pinit(pmap_t pmap) { int i, mask; u_int entropy; @@ -1708,7 +1704,7 @@ moea_pinit(mmu_t mmu, pmap_t pmap) entropy = 0; __asm __volatile("mftb %0" : "=r"(entropy)); - if ((pmap->pmap_phys = (pmap_t)moea_kextract(mmu, (vm_offset_t)pmap)) + if ((pmap->pmap_phys = (pmap_t)moea_kextract((vm_offset_t)pmap)) == NULL) { pmap->pmap_phys = pmap; } @@ -1752,7 +1748,7 @@ moea_pinit(mmu_t mmu, pmap_t pmap) for (i = 0; i < 16; i++) pmap->pm_sr[i] = VSID_MAKE(i, hash); mtx_unlock(&moea_vsid_mutex); - return; + return (1); } mtx_unlock(&moea_vsid_mutex); @@ -1763,11 +1759,11 @@ moea_pinit(mmu_t mmu, pmap_t pmap) * Initialize the pmap associated with process 0. */ void -moea_pinit0(mmu_t mmu, pmap_t pm) +moea_pinit0(pmap_t pm) { PMAP_LOCK_INIT(pm); - moea_pinit(mmu, pm); + moea_pinit(pm); bzero(&pm->pm_stats, sizeof(pm->pm_stats)); } @@ -1775,7 +1771,7 @@ moea_pinit0(mmu_t mmu, pmap_t pm) * Set the physical protection on the specified range of this map as requested. */ void -moea_protect(mmu_t mmu, pmap_t pm, vm_offset_t sva, vm_offset_t eva, +moea_protect(pmap_t pm, vm_offset_t sva, vm_offset_t eva, vm_prot_t prot) { struct pvo_entry *pvo, *tpvo, key; @@ -1785,7 +1781,7 @@ moea_protect(mmu_t mmu, pmap_t pm, vm_offset_t sva, vm ("moea_protect: non current pmap")); if ((prot & VM_PROT_READ) == VM_PROT_NONE) { - moea_remove(mmu, pm, sva, eva); + moea_remove(pm, sva, eva); return; } @@ -1825,13 +1821,13 @@ moea_protect(mmu_t mmu, pmap_t pm, vm_offset_t sva, vm * references recorded. Existing mappings in the region are overwritten. */ void -moea_qenter(mmu_t mmu, vm_offset_t sva, vm_page_t *m, int count) +moea_qenter(vm_offset_t sva, vm_page_t *m, int count) { vm_offset_t va; va = sva; while (count-- > 0) { - moea_kenter(mmu, va, VM_PAGE_TO_PHYS(*m)); + moea_kenter(va, VM_PAGE_TO_PHYS(*m)); va += PAGE_SIZE; m++; } @@ -1842,19 +1838,19 @@ moea_qenter(mmu_t mmu, vm_offset_t sva, vm_page_t *m, * temporary mappings entered by moea_qenter. */ void -moea_qremove(mmu_t mmu, vm_offset_t sva, int count) +moea_qremove(vm_offset_t sva, int count) { vm_offset_t va; va = sva; while (count-- > 0) { - moea_kremove(mmu, va); + moea_kremove(va); va += PAGE_SIZE; } } void -moea_release(mmu_t mmu, pmap_t pmap) +moea_release(pmap_t pmap) { int idx, mask; @@ -1876,7 +1872,7 @@ moea_release(mmu_t mmu, pmap_t pmap) * Remove the given range of addresses from the specified map. */ void -moea_remove(mmu_t mmu, pmap_t pm, vm_offset_t sva, vm_offset_t eva) +moea_remove(pmap_t pm, vm_offset_t sva, vm_offset_t eva) { struct pvo_entry *pvo, *tpvo, key; @@ -1897,7 +1893,7 @@ moea_remove(mmu_t mmu, pmap_t pm, vm_offset_t sva, vm_ * will reflect changes in pte's back to the vm_page. */ void -moea_remove_all(mmu_t mmu, vm_page_t m) +moea_remove_all(vm_page_t m) { struct pvo_head *pvo_head; struct pvo_entry *pvo, *next_pvo; @@ -2600,7 +2596,7 @@ moea_bat_mapped(int idx, vm_paddr_t pa, vm_size_t size } boolean_t -moea_dev_direct_mapped(mmu_t mmu, vm_paddr_t pa, vm_size_t size) +moea_dev_direct_mapped(vm_paddr_t pa, vm_size_t size) { int i; @@ -2623,14 +2619,14 @@ moea_dev_direct_mapped(mmu_t mmu, vm_paddr_t pa, vm_si * NOT real memory. */ void * -moea_mapdev(mmu_t mmu, vm_paddr_t pa, vm_size_t size) +moea_mapdev(vm_paddr_t pa, vm_size_t size) { - return (moea_mapdev_attr(mmu, pa, size, VM_MEMATTR_DEFAULT)); + return (moea_mapdev_attr(pa, size, VM_MEMATTR_DEFAULT)); } void * -moea_mapdev_attr(mmu_t mmu, vm_paddr_t pa, vm_size_t size, vm_memattr_t ma) +moea_mapdev_attr(vm_paddr_t pa, vm_size_t size, vm_memattr_t ma) { vm_offset_t va, tmpva, ppa, offset; int i; @@ -2654,7 +2650,7 @@ moea_mapdev_attr(mmu_t mmu, vm_paddr_t pa, vm_size_t s panic("moea_mapdev: Couldn't alloc kernel virtual memory"); for (tmpva = va; size > 0;) { - moea_kenter_attr(mmu, tmpva, ppa, ma); + moea_kenter_attr(tmpva, ppa, ma); tlbie(tmpva); size -= PAGE_SIZE; tmpva += PAGE_SIZE; @@ -2665,7 +2661,7 @@ moea_mapdev_attr(mmu_t mmu, vm_paddr_t pa, vm_size_t s } void -moea_unmapdev(mmu_t mmu, vm_offset_t va, vm_size_t size) +moea_unmapdev(vm_offset_t va, vm_size_t size) { vm_offset_t base, offset; @@ -2682,7 +2678,7 @@ moea_unmapdev(mmu_t mmu, vm_offset_t va, vm_size_t siz } static void -moea_sync_icache(mmu_t mmu, pmap_t pm, vm_offset_t va, vm_size_t sz) +moea_sync_icache(pmap_t pm, vm_offset_t va, vm_size_t sz) { struct pvo_entry *pvo; vm_offset_t lim; @@ -2706,7 +2702,7 @@ moea_sync_icache(mmu_t mmu, pmap_t pm, vm_offset_t va, } void -moea_dumpsys_map(mmu_t mmu, vm_paddr_t pa, size_t sz, void **va) +moea_dumpsys_map(vm_paddr_t pa, size_t sz, void **va) { *va = (void *)pa; @@ -2715,7 +2711,7 @@ moea_dumpsys_map(mmu_t mmu, vm_paddr_t pa, size_t sz, extern struct dump_pa dump_map[PHYS_AVAIL_SZ + 1]; void -moea_scan_init(mmu_t mmu) +moea_scan_init() { struct pvo_entry *pvo; vm_offset_t va; Modified: head/sys/powerpc/aim/mmu_oea64.c ============================================================================== --- head/sys/powerpc/aim/mmu_oea64.c Wed May 27 01:04:03 2020 (r361543) +++ head/sys/powerpc/aim/mmu_oea64.c Wed May 27 01:24:12 2020 (r361544) @@ -84,6 +84,7 @@ __FBSDID("$FreeBSD$"); #include #include +#include #include #include #include @@ -96,11 +97,9 @@ __FBSDID("$FreeBSD$"); #include #include "mmu_oea64.h" -#include "mmu_if.h" -#include "moea64_if.h" void moea64_release_vsid(uint64_t vsid); -uintptr_t moea64_get_unique_vsid(void); +uintptr_t moea64_get_unique_vsid(void); #define DISABLE_TRANS(msr) msr = mfmsr(); mtmsr(msr & ~PSL_DR) #define ENABLE_TRANS(msr) mtmsr(msr) @@ -111,7 +110,7 @@ uintptr_t moea64_get_unique_vsid(void); /* * Locking semantics: - * + * * There are two locks of interest: the page locks and the pmap locks, which * protect their individual PVO lists and are locked in that order. The contents * of all PVO entries are protected by the locks of their respective pmaps. @@ -122,7 +121,7 @@ uintptr_t moea64_get_unique_vsid(void); #define PV_LOCK_COUNT PA_LOCK_COUNT static struct mtx_padalign pv_lock[PV_LOCK_COUNT]; - + /* * Cheap NUMA-izing of the pv locks, to reduce contention across domains. * NUMA domains on POWER9 appear to be indexed as sparse memory spaces, with the @@ -184,7 +183,7 @@ uma_zone_t moea64_pvo_zone; /* zone for pvo entries */ static struct pvo_entry *moea64_bpvo_pool; static int moea64_bpvo_pool_index = 0; static int moea64_bpvo_pool_size = 0; -SYSCTL_INT(_machdep, OID_AUTO, moea64_allocated_bpvo_entries, CTLFLAG_RD, +SYSCTL_INT(_machdep, OID_AUTO, moea64_allocated_bpvo_entries, CTLFLAG_RD, &moea64_bpvo_pool_index, 0, ""); #define BPVO_POOL_SIZE 327680 /* Sensible historical default value */ @@ -210,11 +209,11 @@ u_int moea64_pte_overflow = 0; u_int moea64_pvo_entries = 0; u_int moea64_pvo_enter_calls = 0; u_int moea64_pvo_remove_calls = 0; -SYSCTL_INT(_machdep, OID_AUTO, moea64_pte_valid, CTLFLAG_RD, +SYSCTL_INT(_machdep, OID_AUTO, moea64_pte_valid, CTLFLAG_RD, &moea64_pte_valid, 0, ""); SYSCTL_INT(_machdep, OID_AUTO, moea64_pte_overflow, CTLFLAG_RD, &moea64_pte_overflow, 0, ""); -SYSCTL_INT(_machdep, OID_AUTO, moea64_pvo_entries, CTLFLAG_RD, +SYSCTL_INT(_machdep, OID_AUTO, moea64_pvo_entries, CTLFLAG_RD, &moea64_pvo_entries, 0, ""); SYSCTL_INT(_machdep, OID_AUTO, moea64_pvo_enter_calls, CTLFLAG_RD, &moea64_pvo_enter_calls, 0, ""); @@ -233,149 +232,147 @@ int moea64_large_page_shift = 0; /* * PVO calls. */ -static int moea64_pvo_enter(mmu_t mmu, struct pvo_entry *pvo, +static int moea64_pvo_enter(struct pvo_entry *pvo, struct pvo_head *pvo_head, struct pvo_entry **oldpvo); -static void moea64_pvo_remove_from_pmap(mmu_t mmu, struct pvo_entry *pvo); -static void moea64_pvo_remove_from_page(mmu_t mmu, struct pvo_entry *pvo); -static void moea64_pvo_remove_from_page_locked(mmu_t mmu, +static void moea64_pvo_remove_from_pmap(struct pvo_entry *pvo); +static void moea64_pvo_remove_from_page(struct pvo_entry *pvo); +static void moea64_pvo_remove_from_page_locked( struct pvo_entry *pvo, vm_page_t m); static struct pvo_entry *moea64_pvo_find_va(pmap_t, vm_offset_t); /* * Utility routines. */ -static boolean_t moea64_query_bit(mmu_t, vm_page_t, uint64_t); -static u_int moea64_clear_bit(mmu_t, vm_page_t, uint64_t); -static void moea64_kremove(mmu_t, vm_offset_t); -static void moea64_syncicache(mmu_t, pmap_t pmap, vm_offset_t va, +static boolean_t moea64_query_bit(vm_page_t, uint64_t); +static u_int moea64_clear_bit(vm_page_t, uint64_t); +static void moea64_kremove(vm_offset_t); +static void moea64_syncicache(pmap_t pmap, vm_offset_t va, vm_paddr_t pa, vm_size_t sz); static void moea64_pmap_init_qpages(void); /* * Kernel MMU interface */ -void moea64_clear_modify(mmu_t, vm_page_t); -void moea64_copy_page(mmu_t, vm_page_t, vm_page_t); -void moea64_copy_pages(mmu_t mmu, vm_page_t *ma, vm_offset_t a_offset, +void moea64_clear_modify(vm_page_t); +void moea64_copy_page(vm_page_t, vm_page_t); +void moea64_copy_pages(vm_page_t *ma, vm_offset_t a_offset, vm_page_t *mb, vm_offset_t b_offset, int xfersize); -int moea64_enter(mmu_t, pmap_t, vm_offset_t, vm_page_t, vm_prot_t, +int moea64_enter(pmap_t, vm_offset_t, vm_page_t, vm_prot_t, u_int flags, int8_t psind); -void moea64_enter_object(mmu_t, pmap_t, vm_offset_t, vm_offset_t, vm_page_t, +void moea64_enter_object(pmap_t, vm_offset_t, vm_offset_t, vm_page_t, vm_prot_t); -void moea64_enter_quick(mmu_t, pmap_t, vm_offset_t, vm_page_t, vm_prot_t); -vm_paddr_t moea64_extract(mmu_t, pmap_t, vm_offset_t); -vm_page_t moea64_extract_and_hold(mmu_t, pmap_t, vm_offset_t, vm_prot_t); -void moea64_init(mmu_t); -boolean_t moea64_is_modified(mmu_t, vm_page_t); -boolean_t moea64_is_prefaultable(mmu_t, pmap_t, vm_offset_t); -boolean_t moea64_is_referenced(mmu_t, vm_page_t); -int moea64_ts_referenced(mmu_t, vm_page_t); -vm_offset_t moea64_map(mmu_t, vm_offset_t *, vm_paddr_t, vm_paddr_t, int); -boolean_t moea64_page_exists_quick(mmu_t, pmap_t, vm_page_t); -void moea64_page_init(mmu_t, vm_page_t); -int moea64_page_wired_mappings(mmu_t, vm_page_t); -void moea64_pinit(mmu_t, pmap_t); -void moea64_pinit0(mmu_t, pmap_t); -void moea64_protect(mmu_t, pmap_t, vm_offset_t, vm_offset_t, vm_prot_t); -void moea64_qenter(mmu_t, vm_offset_t, vm_page_t *, int); -void moea64_qremove(mmu_t, vm_offset_t, int); -void moea64_release(mmu_t, pmap_t); -void moea64_remove(mmu_t, pmap_t, vm_offset_t, vm_offset_t); -void moea64_remove_pages(mmu_t, pmap_t); -void moea64_remove_all(mmu_t, vm_page_t); -void moea64_remove_write(mmu_t, vm_page_t); -void moea64_unwire(mmu_t, pmap_t, vm_offset_t, vm_offset_t); -void moea64_zero_page(mmu_t, vm_page_t); -void moea64_zero_page_area(mmu_t, vm_page_t, int, int); -void moea64_activate(mmu_t, struct thread *); -void moea64_deactivate(mmu_t, struct thread *); -void *moea64_mapdev(mmu_t, vm_paddr_t, vm_size_t); -void *moea64_mapdev_attr(mmu_t, vm_paddr_t, vm_size_t, vm_memattr_t); -void moea64_unmapdev(mmu_t, vm_offset_t, vm_size_t); -vm_paddr_t moea64_kextract(mmu_t, vm_offset_t); -void moea64_page_set_memattr(mmu_t, vm_page_t m, vm_memattr_t ma); -void moea64_kenter_attr(mmu_t, vm_offset_t, vm_paddr_t, vm_memattr_t ma); -void moea64_kenter(mmu_t, vm_offset_t, vm_paddr_t); -boolean_t moea64_dev_direct_mapped(mmu_t, vm_paddr_t, vm_size_t); -static void moea64_sync_icache(mmu_t, pmap_t, vm_offset_t, vm_size_t); -void moea64_dumpsys_map(mmu_t mmu, vm_paddr_t pa, size_t sz, +void moea64_enter_quick(pmap_t, vm_offset_t, vm_page_t, vm_prot_t); +vm_paddr_t moea64_extract(pmap_t, vm_offset_t); +vm_page_t moea64_extract_and_hold(pmap_t, vm_offset_t, vm_prot_t); +void moea64_init(void); +boolean_t moea64_is_modified(vm_page_t); +boolean_t moea64_is_prefaultable(pmap_t, vm_offset_t); +boolean_t moea64_is_referenced(vm_page_t); +int moea64_ts_referenced(vm_page_t); +vm_offset_t moea64_map(vm_offset_t *, vm_paddr_t, vm_paddr_t, int); +boolean_t moea64_page_exists_quick(pmap_t, vm_page_t); +void moea64_page_init(vm_page_t); +int moea64_page_wired_mappings(vm_page_t); +int moea64_pinit(pmap_t); +void moea64_pinit0(pmap_t); +void moea64_protect(pmap_t, vm_offset_t, vm_offset_t, vm_prot_t); +void moea64_qenter(vm_offset_t, vm_page_t *, int); +void moea64_qremove(vm_offset_t, int); +void moea64_release(pmap_t); +void moea64_remove(pmap_t, vm_offset_t, vm_offset_t); +void moea64_remove_pages(pmap_t); +void moea64_remove_all(vm_page_t); +void moea64_remove_write(vm_page_t); +void moea64_unwire(pmap_t, vm_offset_t, vm_offset_t); +void moea64_zero_page(vm_page_t); +void moea64_zero_page_area(vm_page_t, int, int); +void moea64_activate(struct thread *); +void moea64_deactivate(struct thread *); +void *moea64_mapdev(vm_paddr_t, vm_size_t); +void *moea64_mapdev_attr(vm_paddr_t, vm_size_t, vm_memattr_t); +void moea64_unmapdev(vm_offset_t, vm_size_t); +vm_paddr_t moea64_kextract(vm_offset_t); +void moea64_page_set_memattr(vm_page_t m, vm_memattr_t ma); +void moea64_kenter_attr(vm_offset_t, vm_paddr_t, vm_memattr_t ma); +void moea64_kenter(vm_offset_t, vm_paddr_t); +boolean_t moea64_dev_direct_mapped(vm_paddr_t, vm_size_t); +static void moea64_sync_icache(pmap_t, vm_offset_t, vm_size_t); +void moea64_dumpsys_map(vm_paddr_t pa, size_t sz, void **va); *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@freebsd.org Wed May 27 01:35:47 2020 Return-Path: Delivered-To: svn-src-all@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 888E72FA591; Wed, 27 May 2020 01:35:47 +0000 (UTC) (envelope-from jhibbits@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49Wth32ryQz4KZ3; Wed, 27 May 2020 01:35:47 +0000 (UTC) (envelope-from jhibbits@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 58B6FCD92; Wed, 27 May 2020 01:35:47 +0000 (UTC) (envelope-from jhibbits@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04R1ZlrN036293; Wed, 27 May 2020 01:35:47 GMT (envelope-from jhibbits@FreeBSD.org) Received: (from jhibbits@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04R1ZlC7036292; Wed, 27 May 2020 01:35:47 GMT (envelope-from jhibbits@FreeBSD.org) Message-Id: <202005270135.04R1ZlC7036292@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: jhibbits set sender to jhibbits@FreeBSD.org using -f From: Justin Hibbits Date: Wed, 27 May 2020 01:35:47 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361545 - head/sys/vm X-SVN-Group: head X-SVN-Commit-Author: jhibbits X-SVN-Commit-Paths: head/sys/vm X-SVN-Commit-Revision: 361545 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2020 01:35:47 -0000 Author: jhibbits Date: Wed May 27 01:35:46 2020 New Revision: 361545 URL: https://svnweb.freebsd.org/changeset/base/361545 Log: Properly sort ifdef archs in vm_fault_soft_fast superpage guards. Sort broken in r360887. Modified: head/sys/vm/vm_fault.c Modified: head/sys/vm/vm_fault.c ============================================================================== --- head/sys/vm/vm_fault.c Wed May 27 01:24:12 2020 (r361544) +++ head/sys/vm/vm_fault.c Wed May 27 01:35:46 2020 (r361545) @@ -299,9 +299,9 @@ static int vm_fault_soft_fast(struct faultstate *fs) { vm_page_t m, m_map; -#if (defined(__aarch64__) || defined(__amd64__) || defined(__powerpc64__) || (defined(__arm__) && \ - __ARM_ARCH >= 6) || defined(__i386__) || defined(__riscv)) && \ - VM_NRESERVLEVEL > 0 +#if (defined(__aarch64__) || defined(__amd64__) || (defined(__arm__) && \ + __ARM_ARCH >= 6) || defined(__i386__) || defined(__powerpc64__) || \ + defined(__riscv)) && VM_NRESERVLEVEL > 0 vm_page_t m_super; int flags; #endif @@ -320,9 +320,9 @@ vm_fault_soft_fast(struct faultstate *fs) } m_map = m; psind = 0; -#if (defined(__aarch64__) || defined(__amd64__) || defined(__powerpc64__) || (defined(__arm__) && \ - __ARM_ARCH >= 6) || defined(__i386__) || defined(__riscv)) && \ - VM_NRESERVLEVEL > 0 +#if (defined(__aarch64__) || defined(__amd64__) || (defined(__arm__) && \ + __ARM_ARCH >= 6) || defined(__i386__) || defined(__powerpc64__) || \ + defined(__riscv)) && VM_NRESERVLEVEL > 0 if ((m->flags & PG_FICTITIOUS) == 0 && (m_super = vm_reserv_to_superpage(m)) != NULL && rounddown2(vaddr, pagesizes[m_super->psind]) >= fs->entry->start && From owner-svn-src-all@freebsd.org Wed May 27 01:36:49 2020 Return-Path: Delivered-To: svn-src-all@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 4DC3C2FA0E7 for ; Wed, 27 May 2020 01:36:49 +0000 (UTC) (envelope-from ricera10@gmail.com) Received: from mail-lj1-f175.google.com (mail-lj1-f175.google.com [209.85.208.175]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "GTS CA 1O1" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 49WtjD2y6Nz4KgR for ; Wed, 27 May 2020 01:36:48 +0000 (UTC) (envelope-from ricera10@gmail.com) Received: by mail-lj1-f175.google.com with SMTP id q2so26876137ljm.10 for ; Tue, 26 May 2020 18:36:48 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=jJ/9SPdMMxbmHSrUchLuRgbggV341mSMU34LzDL3PsA=; b=nJYEvSVQ18qMvDTutDIFFvomXCcGV+E3Ph4OuulyA9v/xK0jHBPROK2m+38GEhEZ90 WYrL4P/c1RjPxpli9XT3TNDYplYcz4iH9YO6F6xLS/Pw3ndQd3UaMDwOs1vFfd+s4O2p 1rQKpjXEUV+nZdOTf9blRXfNB0eCVhO1sbxJC0U+uXEkudsuRII5T+PPhv+rfIszEwSM rIOExlvO4JnYVRY1ZtIT5yYFa4iS7SoJU0cyPPiIgC0zfG5jba1yWmMjt0JNYcZJeOex UXzn0AnNLWuzlpV1RDtwdjEgFpnFBKvvt2/co1ZZDj9hziVHgfipnE95gEbb8VoQjhAb fJ4w== X-Gm-Message-State: AOAM531AeHhB7N8YA0N3Eb4RYXLVlQhx/d/71bcxKK/qxk+lg8vwoPgu FWNIIti1aJQUFNYMKR4MvJwAWtht X-Google-Smtp-Source: ABdhPJwH2V6rbm5R509K6QQ5y2qxpaOMB69V64m4ySZgtsCA40gCwgFUNI/LwJPPEMrXj/RC3aAJCg== X-Received: by 2002:a05:651c:103a:: with SMTP id w26mr1850758ljm.403.1590543406165; Tue, 26 May 2020 18:36:46 -0700 (PDT) Received: from mail-lf1-f50.google.com (mail-lf1-f50.google.com. [209.85.167.50]) by smtp.gmail.com with ESMTPSA id d8sm445627lfk.27.2020.05.26.18.36.45 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 26 May 2020 18:36:45 -0700 (PDT) Received: by mail-lf1-f50.google.com with SMTP id c12so13482249lfc.10 for ; Tue, 26 May 2020 18:36:45 -0700 (PDT) X-Received: by 2002:a19:8b06:: with SMTP id n6mr1766480lfd.66.1590543404958; Tue, 26 May 2020 18:36:44 -0700 (PDT) MIME-Version: 1.0 References: <202005262335.04QNZA9P062898@repo.freebsd.org> <202005270039.04R0dnPe087063@gndrsh.dnsmgr.net> In-Reply-To: <202005270039.04R0dnPe087063@gndrsh.dnsmgr.net> From: Eric Joyner Date: Tue, 26 May 2020 18:36:34 -0700 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: svn commit: r361541 - in head: . sys/amd64/conf sys/arm64/conf sys/conf sys/contrib/dev/ice sys/dev/ice sys/modules sys/modules/ice sys/modules/ice_ddp tools/kerneldoc/subsys To: rgrimes@freebsd.org Cc: src-committers , svn-src-all , svn-src-head X-Rspamd-Queue-Id: 49WtjD2y6Nz4KgR X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org; dkim=none; dmarc=none; spf=pass (mx1.freebsd.org: domain of ricera10@gmail.com designates 209.85.208.175 as permitted sender) smtp.mailfrom=ricera10@gmail.com X-Spamd-Result: default: False [-2.67 / 15.00]; RCVD_TLS_ALL(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; ARC_NA(0.00)[]; FROM_HAS_DN(0.00)[]; RCPT_COUNT_THREE(0.00)[4]; TO_DN_SOME(0.00)[]; R_SPF_ALLOW(-0.20)[+ip4:209.85.128.0/17]; MIME_GOOD(-0.10)[multipart/alternative,text/plain]; PREVIOUSLY_DELIVERED(0.00)[svn-src-all@freebsd.org]; DMARC_NA(0.00)[freebsd.org]; NEURAL_HAM_LONG(-0.99)[-0.992]; RCVD_COUNT_THREE(0.00)[4]; TO_MATCH_ENVRCPT_SOME(0.00)[]; NEURAL_HAM_SHORT(-0.65)[-0.650]; RCVD_IN_DNSWL_NONE(0.00)[209.85.208.175:from]; NEURAL_HAM_MEDIUM(-1.02)[-1.025]; FORGED_SENDER(0.30)[erj@freebsd.org,ricera10@gmail.com]; RWL_MAILSPIKE_POSSIBLE(0.00)[209.85.208.175:from]; R_DKIM_NA(0.00)[]; FREEMAIL_ENVFROM(0.00)[gmail.com]; ASN(0.00)[asn:15169, ipnet:209.85.128.0/17, country:US]; MIME_TRACE(0.00)[0:+,1:+,2:~]; FROM_NEQ_ENVFROM(0.00)[erj@freebsd.org,ricera10@gmail.com] Content-Type: text/plain; charset="UTF-8" X-Content-Filtered-By: Mailman/MimeDel 2.1.33 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2020 01:36:49 -0000 On Tue, May 26, 2020 at 5:39 PM Rodney W. Grimes wrote > That ones a bit iffy in a source released situation, what does it > mean to "reverse engineer" source code? > I don't know. Keep in mind that is the license for that binary in the directory; the actual source code for the driver (not in this sys/contrib/dev/ice directory) is still the 3-clause BSD license. > A patent clause? I do not believe we have any code in the tree > with an attached patent clause. > The text in that LICENSE is actually exactly the same as the one used for the Wi-Fi firmware blobs in sys/contrib/iwm and sys/contrib/iwn. The one in iwn has been in there for 12 years. > It must be interpretted that an "express licenese" overrides these terms to > be safe. It is not clear to me that the contentx of LICENSE file are an > over riding express license to these statements here as neither is > explicity > in the materials covered by the license. > I will look at this, though I'm not sure that having the LICENSE file in the same directory wouldn't be obvious enough. - Eric From owner-svn-src-all@freebsd.org Wed May 27 01:39:06 2020 Return-Path: Delivered-To: svn-src-all@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 8CA112F9F7A; Wed, 27 May 2020 01:39:06 +0000 (UTC) (envelope-from chmeeedalf@gmail.com) Received: from mail-il1-f195.google.com (mail-il1-f195.google.com [209.85.166.195]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "GTS CA 1O1" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 49Wtls5fDJz4KyR; Wed, 27 May 2020 01:39:05 +0000 (UTC) (envelope-from chmeeedalf@gmail.com) Received: by mail-il1-f195.google.com with SMTP id a18so5210172ilp.7; Tue, 26 May 2020 18:39:05 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=QUznY7CKfeC0qqvRoaIYqb32QjuP5WPVzcwQSSEt3rg=; b=HK23alZ0RonvyRlfTO2OjvOsMhRve204HSoWJXToeTuWmUEgUI1P4cq2ky7Tyng2dn 0izq2o24Ilb0jOKP3rbdsEhBL5MdTyJIIYrDiCVo2Xl6VlayZjhUOC2vGchNMKiRAN5R 5KmDVJAEDUGKSYs0Pzl7Pl1vDD43SHIxFLKw3f242qS3+ebdLZdXYG7irFYboJpOBvdl +1jRyCg1PoQHNu65SSgmIplXKJSqcokBLDP5PLw8OsjIaMSNWvY87J1YIdQFhtM9iy2T dRu71rSCXuNF9gjESD/xinqB3rY4+6pHVfh9HDC3NTFjZan4HHj77OLxv4aQxqMxwJhB HY+g== X-Gm-Message-State: AOAM533ZjvSWkA9nFjcl7dJBZehPBSsXXgOdd+RpB7T+aVJmtVe9gaPi uJ3daXu9TVm+Zkk7m1qmPAZs1621qyCYQJed7Vh+G1BW X-Google-Smtp-Source: ABdhPJyoSykBZVnRNnW4vJEvclMXock68PXvcWI0Vt3bv1TyPhf3/Elfzam1QfKenEOgX5L5U56rUIb68ml2IwPMku8= X-Received: by 2002:a92:d182:: with SMTP id z2mr3889575ilz.47.1590543544501; Tue, 26 May 2020 18:39:04 -0700 (PDT) MIME-Version: 1.0 References: <202005270124.04R1ODAh030113@repo.freebsd.org> In-Reply-To: <202005270124.04R1ODAh030113@repo.freebsd.org> From: Justin Hibbits Date: Tue, 26 May 2020 20:38:54 -0500 Message-ID: Subject: Re: svn commit: r361544 - in head/sys: conf powerpc/aim powerpc/booke powerpc/include powerpc/powerpc powerpc/ps3 powerpc/pseries To: src-committers , svn-src-all , svn-src-head@freebsd.org X-Rspamd-Queue-Id: 49Wtls5fDJz4KyR X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org; dkim=none; dmarc=none; spf=pass (mx1.freebsd.org: domain of chmeeedalf@gmail.com designates 209.85.166.195 as permitted sender) smtp.mailfrom=chmeeedalf@gmail.com X-Spamd-Result: default: False [-2.28 / 15.00]; ARC_NA(0.00)[]; NEURAL_HAM_MEDIUM(-1.01)[-1.007]; RCVD_TLS_ALL(0.00)[]; RCPT_COUNT_THREE(0.00)[3]; TO_DN_SOME(0.00)[]; R_SPF_ALLOW(-0.20)[+ip4:209.85.128.0/17:c]; FROM_HAS_DN(0.00)[]; MIME_GOOD(-0.10)[multipart/alternative,text/plain]; TO_MATCH_ENVRCPT_ALL(0.00)[]; DMARC_NA(0.00)[freebsd.org]; NEURAL_HAM_LONG(-1.00)[-1.002]; NEURAL_HAM_SHORT(-0.27)[-0.268]; RCVD_IN_DNSWL_NONE(0.00)[209.85.166.195:from]; FORGED_SENDER(0.30)[jhibbits@freebsd.org,chmeeedalf@gmail.com]; RWL_MAILSPIKE_POSSIBLE(0.00)[209.85.166.195:from]; R_DKIM_NA(0.00)[]; MIME_TRACE(0.00)[0:+,1:+,2:~]; ASN(0.00)[asn:15169, ipnet:209.85.128.0/17, country:US]; FROM_NEQ_ENVFROM(0.00)[jhibbits@freebsd.org,chmeeedalf@gmail.com]; FREEMAIL_ENVFROM(0.00)[gmail.com]; RCVD_COUNT_TWO(0.00)[2] Content-Type: text/plain; charset="UTF-8" X-Content-Filtered-By: Mailman/MimeDel 2.1.33 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2020 01:39:06 -0000 On Tue, May 26, 2020, 20:24 Justin Hibbits wrote: > Author: jhibbits > Date: Wed May 27 01:24:12 2020 > New Revision: 361544 > URL: https://svnweb.freebsd.org/changeset/base/361544 > > Log: > powerpc/mmu: Convert PowerPC pmap drivers to ifunc from kobj > > With IFUNC support in the kernel, we can finally get rid of our > poor-man's > ifunc for pmap, utilizing kobj. Since moea64 uses a second tier kobj as > well, for its own private methods, this adds a second pmap install > function > (pmap_mmu_init()) to perform pmap 'post-install pre-bootstrap' > initialization, before the IFUNCs get initialized. > > Reviewed by: bdragon Differential revision: https://reviews.freebsd.org/D24993 > > From owner-svn-src-all@freebsd.org Wed May 27 02:10:10 2020 Return-Path: Delivered-To: svn-src-all@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 2111A2FB0D3; Wed, 27 May 2020 02:10:10 +0000 (UTC) (envelope-from adrian@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49WvRj6KBFz4N5S; Wed, 27 May 2020 02:10:09 +0000 (UTC) (envelope-from adrian@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 D43C0D2D1; Wed, 27 May 2020 02:10:09 +0000 (UTC) (envelope-from adrian@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04R2A9Ew054926; Wed, 27 May 2020 02:10:09 GMT (envelope-from adrian@FreeBSD.org) Received: (from adrian@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04R2A92n054925; Wed, 27 May 2020 02:10:09 GMT (envelope-from adrian@FreeBSD.org) Message-Id: <202005270210.04R2A92n054925@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: adrian set sender to adrian@FreeBSD.org using -f From: Adrian Chadd Date: Wed, 27 May 2020 02:10:09 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361546 - head/sys/cam/ata X-SVN-Group: head X-SVN-Commit-Author: adrian X-SVN-Commit-Paths: head/sys/cam/ata X-SVN-Commit-Revision: 361546 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2020 02:10:10 -0000 Author: adrian Date: Wed May 27 02:10:09 2020 New Revision: 361546 URL: https://svnweb.freebsd.org/changeset/base/361546 Log: [ata_da] remove duplicate definition; it trips up ye olde gcc-6 on mips32 Checked first with: irc Modified: head/sys/cam/ata/ata_da.c Modified: head/sys/cam/ata/ata_da.c ============================================================================== --- head/sys/cam/ata/ata_da.c Wed May 27 01:35:46 2020 (r361545) +++ head/sys/cam/ata/ata_da.c Wed May 27 02:10:09 2020 (r361546) @@ -836,7 +836,6 @@ static void adaasync(void *callback_arg, u_int32_t co static int adabitsysctl(SYSCTL_HANDLER_ARGS); static int adaflagssysctl(SYSCTL_HANDLER_ARGS); static int adazonesupsysctl(SYSCTL_HANDLER_ARGS); -static int adazonesupsysctl(SYSCTL_HANDLER_ARGS); static void adasysctlinit(void *context, int pending); static int adagetattr(struct bio *bp); static void adasetflags(struct ada_softc *softc, From owner-svn-src-all@freebsd.org Wed May 27 02:13:52 2020 Return-Path: Delivered-To: svn-src-all@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 27FBA2FB3F4; Wed, 27 May 2020 02:13:52 +0000 (UTC) (envelope-from rpokala@freebsd.org) Received: from smtp.freebsd.org (smtp.freebsd.org [IPv6:2610:1c1:1:606c::24b:4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "smtp.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 49WvX00FX8z4NgX; Wed, 27 May 2020 02:13:52 +0000 (UTC) (envelope-from rpokala@freebsd.org) Received: from [192.168.1.10] (c-98-207-126-143.hsd1.ca.comcast.net [98.207.126.143]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) (Authenticated sender: rpokala) by smtp.freebsd.org (Postfix) with ESMTPSA id 7024D14EB5; Wed, 27 May 2020 02:13:51 +0000 (UTC) (envelope-from rpokala@freebsd.org) User-Agent: Microsoft-MacOutlook/16.37.20051002 Date: Tue, 26 May 2020 19:13:46 -0700 Subject: Re: svn commit: r361546 - head/sys/cam/ata From: Ravi Pokala To: Adrian Chadd , , , Message-ID: <628B7A91-8735-4ABD-8A5A-58A36BE0CA1A@panasas.com> Thread-Topic: svn commit: r361546 - head/sys/cam/ata References: <202005270210.04R2A92n054925@repo.freebsd.org> In-Reply-To: <202005270210.04R2A92n054925@repo.freebsd.org> Mime-version: 1.0 Content-type: text/plain; charset="UTF-8" Content-transfer-encoding: 7bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2020 02:13:52 -0000 -----Original Message----- From: on behalf of Adrian Chadd Date: 2020-05-26, Tuesday at 19:10 To: , , Subject: svn commit: r361546 - head/sys/cam/ata Author: adrian Date: Wed May 27 02:10:09 2020 New Revision: 361546 URL: https://svnweb.freebsd.org/changeset/base/361546 Log: [ata_da] remove duplicate definition; it trips up ye olde gcc-6 on mips32 s/definition/declaration/ -Ravi (rpokala@) Checked first with: irc Modified: head/sys/cam/ata/ata_da.c Modified: head/sys/cam/ata/ata_da.c ============================================================================== --- head/sys/cam/ata/ata_da.c Wed May 27 01:35:46 2020 (r361545) +++ head/sys/cam/ata/ata_da.c Wed May 27 02:10:09 2020 (r361546) @@ -836,7 +836,6 @@ static void adaasync(void *callback_arg, u_int32_t co static int adabitsysctl(SYSCTL_HANDLER_ARGS); static int adaflagssysctl(SYSCTL_HANDLER_ARGS); static int adazonesupsysctl(SYSCTL_HANDLER_ARGS); -static int adazonesupsysctl(SYSCTL_HANDLER_ARGS); static void adasysctlinit(void *context, int pending); static int adagetattr(struct bio *bp); static void adasetflags(struct ada_softc *softc, From owner-svn-src-all@freebsd.org Wed May 27 08:00:40 2020 Return-Path: Delivered-To: svn-src-all@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 1125132A8CA; Wed, 27 May 2020 08:00:40 +0000 (UTC) (envelope-from andrew@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49X3D75kMsz3btW; Wed, 27 May 2020 08:00:39 +0000 (UTC) (envelope-from andrew@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 BC3FD1126E; Wed, 27 May 2020 08:00:39 +0000 (UTC) (envelope-from andrew@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04R80dCA069815; Wed, 27 May 2020 08:00:39 GMT (envelope-from andrew@FreeBSD.org) Received: (from andrew@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04R80cbf069810; Wed, 27 May 2020 08:00:38 GMT (envelope-from andrew@FreeBSD.org) Message-Id: <202005270800.04R80cbf069810@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: andrew set sender to andrew@FreeBSD.org using -f From: Andrew Turner Date: Wed, 27 May 2020 08:00:38 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361547 - in head/sys/arm64: arm64 include X-SVN-Group: head X-SVN-Commit-Author: andrew X-SVN-Commit-Paths: in head/sys/arm64: arm64 include X-SVN-Commit-Revision: 361547 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2020 08:00:40 -0000 Author: andrew Date: Wed May 27 08:00:38 2020 New Revision: 361547 URL: https://svnweb.freebsd.org/changeset/base/361547 Log: Support creating and using arm64 pmap at stage 2 Add minimal support for creating stage 2 IPA -> PA mappings. For this we need to: - Create a new vmid set to allocate a vmid for each Virtual Machine - Add the missing stage 2 attributes - Use these in pmap_enter to create a new mapping - Handle stage 2 faults The vmid set is based on the current asid set that was generalised in r358328. It adds a function pointer for bhyve to use when the kernel needs to reset the vmid set. This will need to call into EL2 and invalidate the TLB. The stage 2 attributes have been added. To simplify setting these fields two new functions are added to get the memory type and protection fields. These are slightly different on stage 1 and stage 2 tables. We then use them in pmap_enter to set the new level 3 entry to be stored. The D-cache on all entries is cleaned to the point of coherency. This is to allow the data to be visible to the VM. To allow for userspace to load code when creating a new executable entry an invalid entry is created. When the VM tried to use it the I-cache is invalidated. As the D-cache has already been cleaned this will ensure the I-cache is synchronised with the D-cache. When the hardware implements a VPIPT I-cache we need to either have the correct VMID set or invalidate it from EL2. As the host kernel will have the wrong VMID set we need to call into EL2 to clean it. For this a second function pointer is added that is called when this invalidation is needed. Sponsored by: Innovate UK Differential Revision: https://reviews.freebsd.org/D23875 Modified: head/sys/arm64/arm64/pmap.c head/sys/arm64/include/cpufunc.h head/sys/arm64/include/pcpu.h head/sys/arm64/include/pmap.h head/sys/arm64/include/pte.h Modified: head/sys/arm64/arm64/pmap.c ============================================================================== --- head/sys/arm64/arm64/pmap.c Wed May 27 02:10:09 2020 (r361546) +++ head/sys/arm64/arm64/pmap.c Wed May 27 08:00:38 2020 (r361547) @@ -150,6 +150,7 @@ __FBSDID("$FreeBSD$"); #include #define PMAP_ASSERT_STAGE1(pmap) MPASS((pmap)->pm_stage == PM_STAGE1) +#define PMAP_ASSERT_STAGE2(pmap) MPASS((pmap)->pm_stage == PM_STAGE2) #define NL0PG (PAGE_SIZE/(sizeof (pd_entry_t))) #define NL1PG (PAGE_SIZE/(sizeof (pd_entry_t))) @@ -293,6 +294,7 @@ struct asid_set { }; static struct asid_set asids; +static struct asid_set vmids; static SYSCTL_NODE(_vm_pmap, OID_AUTO, asid, CTLFLAG_RD | CTLFLAG_MPSAFE, 0, "ASID allocator"); @@ -303,6 +305,17 @@ SYSCTL_INT(_vm_pmap_asid, OID_AUTO, next, CTLFLAG_RD, SYSCTL_INT(_vm_pmap_asid, OID_AUTO, epoch, CTLFLAG_RD, &asids.asid_epoch, 0, "The current epoch number"); +static SYSCTL_NODE(_vm_pmap, OID_AUTO, vmid, CTLFLAG_RD, 0, "VMID allocator"); +SYSCTL_INT(_vm_pmap_vmid, OID_AUTO, bits, CTLFLAG_RD, &vmids.asid_bits, 0, + "The number of bits in an VMID"); +SYSCTL_INT(_vm_pmap_vmid, OID_AUTO, next, CTLFLAG_RD, &vmids.asid_next, 0, + "The last allocated VMID plus one"); +SYSCTL_INT(_vm_pmap_vmid, OID_AUTO, epoch, CTLFLAG_RD, &vmids.asid_epoch, 0, + "The current epoch number"); + +void (*pmap_clean_stage2_tlbi)(void); +void (*pmap_invalidate_vpipt_icache)(void); + /* * A pmap's cookie encodes an ASID and epoch number. Cookies for reserved * ASIDs have a negative epoch number, specifically, INT_MIN. Cookies for @@ -590,6 +603,58 @@ pmap_l3_valid(pt_entry_t l3) CTASSERT(L1_BLOCK == L2_BLOCK); +static pt_entry_t +pmap_pte_memattr(pmap_t pmap, vm_memattr_t memattr) +{ + pt_entry_t val; + + if (pmap->pm_stage == PM_STAGE1) { + val = ATTR_S1_IDX(memattr); + if (memattr == VM_MEMATTR_DEVICE) + val |= ATTR_S1_XN; + return (val); + } + + val = 0; + + switch (memattr) { + case VM_MEMATTR_DEVICE: + return (ATTR_S2_MEMATTR(ATTR_S2_MEMATTR_DEVICE_nGnRnE) | + ATTR_S2_XN(ATTR_S2_XN_ALL)); + case VM_MEMATTR_UNCACHEABLE: + return (ATTR_S2_MEMATTR(ATTR_S2_MEMATTR_NC)); + case VM_MEMATTR_WRITE_BACK: + return (ATTR_S2_MEMATTR(ATTR_S2_MEMATTR_WB)); + case VM_MEMATTR_WRITE_THROUGH: + return (ATTR_S2_MEMATTR(ATTR_S2_MEMATTR_WT)); + default: + panic("%s: invalid memory attribute %x", __func__, memattr); + } +} + +static pt_entry_t +pmap_pte_prot(pmap_t pmap, vm_prot_t prot) +{ + pt_entry_t val; + + val = 0; + if (pmap->pm_stage == PM_STAGE1) { + if ((prot & VM_PROT_EXECUTE) == 0) + val |= ATTR_S1_XN; + if ((prot & VM_PROT_WRITE) == 0) + val |= ATTR_S1_AP(ATTR_S1_AP_RO); + } else { + if ((prot & VM_PROT_WRITE) != 0) + val |= ATTR_S2_S2AP(ATTR_S2_S2AP_WRITE); + if ((prot & VM_PROT_READ) != 0) + val |= ATTR_S2_S2AP(ATTR_S2_S2AP_READ); + if ((prot & VM_PROT_EXECUTE) == 0) + val |= ATTR_S2_XN(ATTR_S2_XN_ALL); + } + + return (val); +} + /* * Checks if the PTE is dirty. */ @@ -960,7 +1025,8 @@ void pmap_init(void) { vm_size_t s; - int i, pv_npg; + uint64_t mmfr1; + int i, pv_npg, vmid_bits; /* * Are large page mappings enabled? @@ -978,6 +1044,16 @@ pmap_init(void) pmap_init_asids(&asids, (READ_SPECIALREG(tcr_el1) & TCR_ASID_16) != 0 ? 16 : 8); + if (has_hyp()) { + mmfr1 = READ_SPECIALREG(id_aa64mmfr1_el1); + vmid_bits = 8; + + if (ID_AA64MMFR1_VMIDBits_VAL(mmfr1) == + ID_AA64MMFR1_VMIDBits_16) + vmid_bits = 16; + pmap_init_asids(&vmids, vmid_bits); + } + /* * Initialize the pv chunk list mutex. */ @@ -1548,7 +1624,7 @@ pmap_pinit0(pmap_t pmap) } int -pmap_pinit(pmap_t pmap) +pmap_pinit_stage(pmap_t pmap, enum pmap_stage stage) { vm_page_t l0pt; @@ -1568,14 +1644,33 @@ pmap_pinit(pmap_t pmap) pmap->pm_root.rt_root = 0; bzero(&pmap->pm_stats, sizeof(pmap->pm_stats)); pmap->pm_cookie = COOKIE_FROM(-1, INT_MAX); - pmap->pm_stage = PM_STAGE1; - pmap->pm_asid_set = &asids; + + pmap->pm_stage = stage; + switch (stage) { + case PM_STAGE1: + pmap->pm_asid_set = &asids; + break; + case PM_STAGE2: + pmap->pm_asid_set = &vmids; + break; + default: + panic("%s: Invalid pmap type %d", __func__, stage); + break; + } + /* XXX Temporarily disable deferred ASID allocation. */ pmap_alloc_asid(pmap); return (1); } +int +pmap_pinit(pmap_t pmap) +{ + + return (pmap_pinit_stage(pmap, PM_STAGE1)); +} + /* * This routine is called if the desired page table page does not exist. * @@ -3323,33 +3418,45 @@ pmap_enter(pmap_t pmap, vm_offset_t va, vm_page_t m, v boolean_t nosleep; int lvl, rv; - PMAP_ASSERT_STAGE1(pmap); - va = trunc_page(va); if ((m->oflags & VPO_UNMANAGED) == 0) VM_PAGE_OBJECT_BUSY_ASSERT(m); pa = VM_PAGE_TO_PHYS(m); - new_l3 = (pt_entry_t)(pa | ATTR_DEFAULT | ATTR_S1_IDX(m->md.pv_memattr) | - L3_PAGE); - if ((prot & VM_PROT_WRITE) == 0) - new_l3 |= ATTR_S1_AP(ATTR_S1_AP_RO); - if ((prot & VM_PROT_EXECUTE) == 0 || - m->md.pv_memattr == VM_MEMATTR_DEVICE) - new_l3 |= ATTR_S1_XN; + new_l3 = (pt_entry_t)(pa | ATTR_DEFAULT | L3_PAGE); + new_l3 |= pmap_pte_memattr(pmap, m->md.pv_memattr); + new_l3 |= pmap_pte_prot(pmap, prot); + if ((flags & PMAP_ENTER_WIRED) != 0) new_l3 |= ATTR_SW_WIRED; - if (va < VM_MAXUSER_ADDRESS) - new_l3 |= ATTR_S1_AP(ATTR_S1_AP_USER) | ATTR_S1_PXN; - else - new_l3 |= ATTR_S1_UXN; - if (pmap != kernel_pmap) - new_l3 |= ATTR_S1_nG; + if (pmap->pm_stage == PM_STAGE1) { + if (va < VM_MAXUSER_ADDRESS) + new_l3 |= ATTR_S1_AP(ATTR_S1_AP_USER) | ATTR_S1_PXN; + else + new_l3 |= ATTR_S1_UXN; + if (pmap != kernel_pmap) + new_l3 |= ATTR_S1_nG; + } else { + /* + * Clear the access flag on executable mappings, this will be + * set later when the page is accessed. The fault handler is + * required to invalidate the I-cache. + * + * TODO: Switch to the valid flag to allow hardware management + * of the access flag. Much of the pmap code assumes the + * valid flag is set and fails to destroy the old page tables + * correctly if it is clear. + */ + if (prot & VM_PROT_EXECUTE) + new_l3 &= ~ATTR_AF; + } if ((m->oflags & VPO_UNMANAGED) == 0) { new_l3 |= ATTR_SW_MANAGED; if ((prot & VM_PROT_WRITE) != 0) { new_l3 |= ATTR_SW_DBM; - if ((flags & VM_PROT_WRITE) == 0) + if ((flags & VM_PROT_WRITE) == 0) { + PMAP_ASSERT_STAGE1(pmap); new_l3 |= ATTR_S1_AP(ATTR_S1_AP_RO); + } } } @@ -3423,6 +3530,12 @@ havel3: */ if (pmap_l3_valid(orig_l3)) { /* + * Only allow adding new entries on stage 2 tables for now. + * This simplifies cache invalidation as we may need to call + * into EL2 to perform such actions. + */ + PMAP_ASSERT_STAGE1(pmap); + /* * Wiring change, just update stats. We don't worry about * wiring PT pages as they remain resident as long as there * are valid mappings in them. Hence, if a user page is wired, @@ -3518,26 +3631,33 @@ havel3: } validate: - /* - * Sync icache if exec permission and attribute VM_MEMATTR_WRITE_BACK - * is set. Do it now, before the mapping is stored and made - * valid for hardware table walk. If done later, then other can - * access this page before caches are properly synced. - * Don't do it for kernel memory which is mapped with exec - * permission even if the memory isn't going to hold executable - * code. The only time when icache sync is needed is after - * kernel module is loaded and the relocation info is processed. - * And it's done in elf_cpu_load_file(). - */ - if ((prot & VM_PROT_EXECUTE) && pmap != kernel_pmap && - m->md.pv_memattr == VM_MEMATTR_WRITE_BACK && - (opa != pa || (orig_l3 & ATTR_S1_XN))) - cpu_icache_sync_range(PHYS_TO_DMAP(pa), PAGE_SIZE); + if (pmap->pm_stage == PM_STAGE1) { + /* + * Sync icache if exec permission and attribute + * VM_MEMATTR_WRITE_BACK is set. Do it now, before the mapping + * is stored and made valid for hardware table walk. If done + * later, then other can access this page before caches are + * properly synced. Don't do it for kernel memory which is + * mapped with exec permission even if the memory isn't going + * to hold executable code. The only time when icache sync is + * needed is after kernel module is loaded and the relocation + * info is processed. And it's done in elf_cpu_load_file(). + */ + if ((prot & VM_PROT_EXECUTE) && pmap != kernel_pmap && + m->md.pv_memattr == VM_MEMATTR_WRITE_BACK && + (opa != pa || (orig_l3 & ATTR_S1_XN))) { + PMAP_ASSERT_STAGE1(pmap); + cpu_icache_sync_range(PHYS_TO_DMAP(pa), PAGE_SIZE); + } + } else { + cpu_dcache_wb_range(PHYS_TO_DMAP(pa), PAGE_SIZE); + } /* * Update the L3 entry */ if (pmap_l3_valid(orig_l3)) { + PMAP_ASSERT_STAGE1(pmap); KASSERT(opa == pa, ("pmap_enter: invalid update")); if ((orig_l3 & ~ATTR_AF) != (new_l3 & ~ATTR_AF)) { /* same PA, different attributes */ @@ -3569,8 +3689,14 @@ validate: } #if VM_NRESERVLEVEL > 0 + /* + * Try to promote from level 3 pages to a level 2 superpage. This + * currently only works on stage 1 pmaps as pmap_promote_l2 looks at + * stage 1 specific fields and performs a break-before-make sequence + * that is incorrect a stage 2 pmap. + */ if ((mpte == NULL || mpte->ref_count == NL3PG) && - pmap_ps_enabled(pmap) && + pmap_ps_enabled(pmap) && pmap->pm_stage == PM_STAGE1 && (m->flags & PG_FICTITIOUS) == 0 && vm_reserv_level_iffullpop(m) == 0) { pmap_promote_l2(pmap, pde, va, &lock); @@ -5841,8 +5967,10 @@ pmap_reset_asid_set(pmap_t pmap) pmap_t curpmap; int asid, cpuid, epoch; struct asid_set *set; + enum pmap_stage stage; - PMAP_ASSERT_STAGE1(pmap); + set = pmap->pm_asid_set; + stage = pmap->pm_stage; set = pmap->pm_asid_set; KASSERT(set != NULL, ("%s: NULL asid set", __func__)); @@ -5857,14 +5985,29 @@ pmap_reset_asid_set(pmap_t pmap) epoch = 0; set->asid_epoch = epoch; dsb(ishst); - __asm __volatile("tlbi vmalle1is"); + if (stage == PM_STAGE1) { + __asm __volatile("tlbi vmalle1is"); + } else { + KASSERT(pmap_clean_stage2_tlbi != NULL, + ("%s: Unset stage 2 tlb invalidation callback\n", + __func__)); + pmap_clean_stage2_tlbi(); + } dsb(ish); bit_nclear(set->asid_set, ASID_FIRST_AVAILABLE, set->asid_set_size - 1); CPU_FOREACH(cpuid) { if (cpuid == curcpu) continue; - curpmap = pcpu_find(cpuid)->pc_curpmap; + if (stage == PM_STAGE1) { + curpmap = pcpu_find(cpuid)->pc_curpmap; + PMAP_ASSERT_STAGE1(pmap); + } else { + curpmap = pcpu_find(cpuid)->pc_curvmpmap; + if (curpmap == NULL) + continue; + PMAP_ASSERT_STAGE2(pmap); + } KASSERT(curpmap->pm_asid_set == set, ("Incorrect set")); asid = COOKIE_TO_ASID(curpmap->pm_cookie); if (asid == -1) @@ -5883,7 +6026,6 @@ pmap_alloc_asid(pmap_t pmap) struct asid_set *set; int new_asid; - PMAP_ASSERT_STAGE1(pmap); set = pmap->pm_asid_set; KASSERT(set != NULL, ("%s: NULL asid set", __func__)); @@ -5925,7 +6067,6 @@ uint64_t pmap_to_ttbr0(pmap_t pmap) { - PMAP_ASSERT_STAGE1(pmap); return (ASID_TO_OPERAND(COOKIE_TO_ASID(pmap->pm_cookie)) | pmap->pm_l0_paddr); } @@ -5936,10 +6077,11 @@ pmap_activate_int(pmap_t pmap) struct asid_set *set; int epoch; - PMAP_ASSERT_STAGE1(pmap); KASSERT(PCPU_GET(curpmap) != NULL, ("no active pmap")); KASSERT(pmap != kernel_pmap, ("kernel pmap activation")); - if (pmap == PCPU_GET(curpmap)) { + + if ((pmap->pm_stage == PM_STAGE1 && pmap == PCPU_GET(curpmap)) || + (pmap->pm_stage == PM_STAGE2 && pmap == PCPU_GET(curvmpmap))) { /* * Handle the possibility that the old thread was preempted * after an "ic" or "tlbi" instruction but before it performed @@ -5959,19 +6101,33 @@ pmap_activate_int(pmap_t pmap) * Ensure that the store to curpmap is globally visible before the * load from asid_epoch is performed. */ - PCPU_SET(curpmap, pmap); + if (pmap->pm_stage == PM_STAGE1) + PCPU_SET(curpmap, pmap); + else + PCPU_SET(curvmpmap, pmap); dsb(ish); epoch = COOKIE_TO_EPOCH(pmap->pm_cookie); if (epoch >= 0 && epoch != set->asid_epoch) pmap_alloc_asid(pmap); - set_ttbr0(pmap_to_ttbr0(pmap)); - if (PCPU_GET(bcast_tlbi_workaround) != 0) - invalidate_local_icache(); + if (pmap->pm_stage == PM_STAGE1) { + set_ttbr0(pmap_to_ttbr0(pmap)); + if (PCPU_GET(bcast_tlbi_workaround) != 0) + invalidate_local_icache(); + } return (true); } void +pmap_activate_vm(pmap_t pmap) +{ + + PMAP_ASSERT_STAGE2(pmap); + + (void)pmap_activate_int(pmap); +} + +void pmap_activate(struct thread *td) { pmap_t pmap; @@ -6049,6 +6205,77 @@ pmap_sync_icache(pmap_t pmap, vm_offset_t va, vm_size_ } } +static int +pmap_stage2_fault(pmap_t pmap, uint64_t esr, uint64_t far) +{ + pd_entry_t *pdep; + pt_entry_t *ptep, pte; + int rv, lvl, dfsc; + + PMAP_ASSERT_STAGE2(pmap); + rv = KERN_FAILURE; + + /* Data and insn aborts use same encoding for FSC field. */ + dfsc = esr & ISS_DATA_DFSC_MASK; + switch (dfsc) { + case ISS_DATA_DFSC_TF_L0: + case ISS_DATA_DFSC_TF_L1: + case ISS_DATA_DFSC_TF_L2: + case ISS_DATA_DFSC_TF_L3: + PMAP_LOCK(pmap); + pdep = pmap_pde(pmap, far, &lvl); + if (pdep == NULL || lvl != (dfsc - ISS_DATA_DFSC_TF_L1)) { + PMAP_LOCK(pmap); + break; + } + + switch (lvl) { + case 0: + ptep = pmap_l0_to_l1(pdep, far); + break; + case 1: + ptep = pmap_l1_to_l2(pdep, far); + break; + case 2: + ptep = pmap_l2_to_l3(pdep, far); + break; + default: + panic("%s: Invalid pde level %d", __func__,lvl); + } + goto fault_exec; + + case ISS_DATA_DFSC_AFF_L1: + case ISS_DATA_DFSC_AFF_L2: + case ISS_DATA_DFSC_AFF_L3: + PMAP_LOCK(pmap); + ptep = pmap_pte(pmap, far, &lvl); +fault_exec: + if (ptep != NULL && (pte = pmap_load(ptep)) != 0) { + if (icache_vmid) { + pmap_invalidate_vpipt_icache(); + } else { + /* + * If accessing an executable page invalidate + * the I-cache so it will be valid when we + * continue execution in the guest. The D-cache + * is assumed to already be clean to the Point + * of Coherency. + */ + if ((pte & ATTR_S2_XN_MASK) != + ATTR_S2_XN(ATTR_S2_XN_NONE)) { + invalidate_icache(); + } + } + pmap_set_bits(ptep, ATTR_AF | ATTR_DESCR_VALID); + rv = KERN_SUCCESS; + } + PMAP_UNLOCK(pmap); + break; + } + + return (rv); +} + int pmap_fault(pmap_t pmap, uint64_t esr, uint64_t far) { @@ -6057,7 +6284,6 @@ pmap_fault(pmap_t pmap, uint64_t esr, uint64_t far) uint64_t ec, par; int lvl, rv; - PMAP_ASSERT_STAGE1(pmap); rv = KERN_FAILURE; ec = ESR_ELx_EXCEPTION(esr); @@ -6070,6 +6296,9 @@ pmap_fault(pmap_t pmap, uint64_t esr, uint64_t far) default: return (rv); } + + if (pmap->pm_stage == PM_STAGE2) + return (pmap_stage2_fault(pmap, esr, far)); /* Data and insn aborts use same encoding for FSC field. */ switch (esr & ISS_DATA_DFSC_MASK) { Modified: head/sys/arm64/include/cpufunc.h ============================================================================== --- head/sys/arm64/include/cpufunc.h Wed May 27 02:10:09 2020 (r361546) +++ head/sys/arm64/include/cpufunc.h Wed May 27 08:00:38 2020 (r361547) @@ -190,6 +190,16 @@ set_ttbr0(uint64_t ttbr0) } static __inline void +invalidate_icache(void) +{ + + __asm __volatile( + "ic ialluis \n" + "dsb ish \n" + "isb \n"); +} + +static __inline void invalidate_local_icache(void) { Modified: head/sys/arm64/include/pcpu.h ============================================================================== --- head/sys/arm64/include/pcpu.h Wed May 27 02:10:09 2020 (r361546) +++ head/sys/arm64/include/pcpu.h Wed May 27 08:00:38 2020 (r361547) @@ -46,8 +46,9 @@ struct debug_monitor_state; pcpu_bp_harden pc_bp_harden; \ pcpu_ssbd pc_ssbd; \ struct pmap *pc_curpmap; \ + struct pmap *pc_curvmpmap; \ u_int pc_bcast_tlbi_workaround; \ - char __pad[213] + char __pad[205] #ifdef _KERNEL Modified: head/sys/arm64/include/pmap.h ============================================================================== --- head/sys/arm64/include/pmap.h Wed May 27 02:10:09 2020 (r361546) +++ head/sys/arm64/include/pmap.h Wed May 27 08:00:38 2020 (r361547) @@ -160,6 +160,7 @@ extern vm_offset_t virtual_end; #define L1_MAPPABLE_P(va, pa, size) \ ((((va) | (pa)) & L1_OFFSET) == 0 && (size) >= L1_SIZE) +void pmap_activate_vm(pmap_t); void pmap_bootstrap(vm_offset_t, vm_offset_t, vm_paddr_t, vm_size_t); int pmap_change_attr(vm_offset_t va, vm_size_t size, int mode); void pmap_kenter(vm_offset_t sva, vm_size_t size, vm_paddr_t pa, int mode); @@ -169,6 +170,7 @@ void pmap_kremove(vm_offset_t); void pmap_kremove_device(vm_offset_t, vm_size_t); void *pmap_mapdev_attr(vm_offset_t pa, vm_size_t size, vm_memattr_t ma); bool pmap_page_is_mapped(vm_page_t m); +int pmap_pinit_stage(pmap_t, enum pmap_stage); bool pmap_ps_enabled(pmap_t pmap); uint64_t pmap_to_ttbr0(pmap_t pmap); @@ -186,6 +188,9 @@ bool pmap_get_tables(pmap_t, vm_offset_t, pd_entry_t * int pmap_fault(pmap_t, uint64_t, uint64_t); struct pcb *pmap_switch(struct thread *, struct thread *); + +extern void (*pmap_clean_stage2_tlbi)(void); +extern void (*pmap_invalidate_vpipt_icache)(void); static inline int pmap_vmspace_copy(pmap_t dst_pmap __unused, pmap_t src_pmap __unused) Modified: head/sys/arm64/include/pte.h ============================================================================== --- head/sys/arm64/include/pte.h Wed May 27 02:10:09 2020 (r361546) +++ head/sys/arm64/include/pte.h Wed May 27 08:00:38 2020 (r361547) @@ -53,11 +53,11 @@ typedef uint64_t pt_entry_t; /* page table entry */ #define ATTR_S1_XN (ATTR_S1_PXN | ATTR_S1_UXN) #define ATTR_S2_XN(x) ((x) << 53) -#define ATTR_S2_XN_MASK ATTR_S2_XN(3) -#define ATTR_S2_XN_NONE 0 /* Allow execution at EL0 & EL1 */ -#define ATTR_S2_XN_EL1 1 /* Allow execution at EL0 */ -#define ATTR_S2_XN_ALL 2 /* No execution */ -#define ATTR_S2_XN_EL0 3 /* Allow execution at EL1 */ +#define ATTR_S2_XN_MASK ATTR_S2_XN(3UL) +#define ATTR_S2_XN_NONE 0UL /* Allow execution at EL0 & EL1 */ +#define ATTR_S2_XN_EL1 1UL /* Allow execution at EL0 */ +#define ATTR_S2_XN_ALL 2UL /* No execution */ +#define ATTR_S2_XN_EL0 3UL /* Allow execution at EL1 */ #define ATTR_CONTIGUOUS (1UL << 52) #define ATTR_DBM (1UL << 51) @@ -80,9 +80,16 @@ typedef uint64_t pt_entry_t; /* page table entry */ #define ATTR_S1_IDX_MASK (7 << 2) #define ATTR_S2_S2AP(x) ((x) << 6) -#define ATTR_S1_S2AP_MASK ATTR_S2_S2AP(3) -#define ATTR_S2_MEMATTR(x) ((x) << 2) -#define ATTR_S2_MEMATTR_MASK ATTR_S2_MEMATTR(0xf) +#define ATTR_S2_S2AP_MASK 3 +#define ATTR_S2_S2AP_READ 1 +#define ATTR_S2_S2AP_WRITE 2 + +#define ATTR_S2_MEMATTR(x) ((x) << 2) +#define ATTR_S2_MEMATTR_MASK ATTR_S2_MEMATTR(0xf) +#define ATTR_S2_MEMATTR_DEVICE_nGnRnE 0x0 +#define ATTR_S2_MEMATTR_NC 0xf +#define ATTR_S2_MEMATTR_WT 0xa +#define ATTR_S2_MEMATTR_WB 0xf #define ATTR_DEFAULT (ATTR_AF | ATTR_SH(ATTR_SH_IS)) From owner-svn-src-all@freebsd.org Wed May 27 08:16:18 2020 Return-Path: Delivered-To: svn-src-all@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 6610232B2C3; Wed, 27 May 2020 08:16:18 +0000 (UTC) (envelope-from eugen@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49X3ZB1b3Hz3dmj; Wed, 27 May 2020 08:16:18 +0000 (UTC) (envelope-from eugen@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 3162C117CD; Wed, 27 May 2020 08:16:18 +0000 (UTC) (envelope-from eugen@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04R8GH2d082713; Wed, 27 May 2020 08:16:17 GMT (envelope-from eugen@FreeBSD.org) Received: (from eugen@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04R8GHrd082712; Wed, 27 May 2020 08:16:17 GMT (envelope-from eugen@FreeBSD.org) Message-Id: <202005270816.04R8GHrd082712@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: eugen set sender to eugen@FreeBSD.org using -f From: Eugene Grosbein Date: Wed, 27 May 2020 08:16:17 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361548 - head/sbin/ifconfig X-SVN-Group: head X-SVN-Commit-Author: eugen X-SVN-Commit-Paths: head/sbin/ifconfig X-SVN-Commit-Revision: 361548 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2020 08:16:18 -0000 Author: eugen Date: Wed May 27 08:16:17 2020 New Revision: 361548 URL: https://svnweb.freebsd.org/changeset/base/361548 Log: ifconfig(8): spell "groupname" consistently with SYNOPSYS. MFC after: 1 week Modified: head/sbin/ifconfig/ifconfig.8 Modified: head/sbin/ifconfig/ifconfig.8 ============================================================================== --- head/sbin/ifconfig/ifconfig.8 Wed May 27 08:00:38 2020 (r361547) +++ head/sbin/ifconfig/ifconfig.8 Wed May 27 08:16:17 2020 (r361548) @@ -369,7 +369,7 @@ the system will not attempt to transmit messages through that interface. If possible, the interface will be reset to disable reception as well. This action does not automatically disable routes using the interface. -.It Cm group Ar group-name +.It Cm group Ar groupname Assign the interface to a .Dq group . Any interface can be in multiple groups. @@ -382,7 +382,7 @@ is a member of the PPP interface family group, .\" The interface(s) the default route(s) point to are members of the .\" .Em egress .\" interface group. -.It Cm -group Ar group-name +.It Cm -group Ar groupname Remove the interface from the given .Dq group . .It Cm eui64 From owner-svn-src-all@freebsd.org Wed May 27 09:31:51 2020 Return-Path: Delivered-To: svn-src-all@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 813C532D502; Wed, 27 May 2020 09:31:51 +0000 (UTC) (envelope-from manu@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49X5FM2vqnz42P0; Wed, 27 May 2020 09:31:51 +0000 (UTC) (envelope-from manu@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 46A7912883; Wed, 27 May 2020 09:31:51 +0000 (UTC) (envelope-from manu@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04R9VpK8030503; Wed, 27 May 2020 09:31:51 GMT (envelope-from manu@FreeBSD.org) Received: (from manu@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04R9Vpf2030502; Wed, 27 May 2020 09:31:51 GMT (envelope-from manu@FreeBSD.org) Message-Id: <202005270931.04R9Vpf2030502@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: manu set sender to manu@FreeBSD.org using -f From: Emmanuel Vadot Date: Wed, 27 May 2020 09:31:51 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361549 - head/sys/compat/linuxkpi/common/include/linux X-SVN-Group: head X-SVN-Commit-Author: manu X-SVN-Commit-Paths: head/sys/compat/linuxkpi/common/include/linux X-SVN-Commit-Revision: 361549 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2020 09:31:51 -0000 Author: manu Date: Wed May 27 09:31:50 2020 New Revision: 361549 URL: https://svnweb.freebsd.org/changeset/base/361549 Log: linuxkpi: Add overflow.h Only add check_add_overflow and check_mul_overflow as those are the only two needed function by DRM v5.3. Both gcc and clang have builtin to do this check so use them directly but throw an error if the compiler/code checker doesn't support this builtin. Sponsored-by: The FreeBSD Foundation Reviewed by: hselsasky Differential Revision: https://reviews.freebsd.org/D25015 Added: head/sys/compat/linuxkpi/common/include/linux/overflow.h (contents, props changed) Added: head/sys/compat/linuxkpi/common/include/linux/overflow.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/compat/linuxkpi/common/include/linux/overflow.h Wed May 27 09:31:50 2020 (r361549) @@ -0,0 +1,52 @@ +/*- + * Copyright (c) 2020 The FreeBSD Foundation + * + * This software was developed by Emmanuel Vadot under sponsorship + * from the FreeBSD Foundation. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef __LINUX_OVERFLOW_H__ +#define __LINUX_OVERFLOW_H__ + +#ifndef __has_builtin +#define __has_builtin(x) 0 +#endif + +#if __has_builtin(__builtin_add_overflow) +#define check_add_overflow(a, b, c) \ + __builtin_add_overflow(a, b, c) +#else +#error "Compiler does not support __builtin_add_overflow" +#endif + +#if __has_builtin(__builtin_mul_overflow) +#define check_mul_overflow(a, b, c) \ + __builtin_mul_overflow(a, b, c) +#else +#error "Compiler does not support __builtin_mul_overflow" +#endif + +#endif /* __LINUX_OVERFLOW_H__ */ From owner-svn-src-all@freebsd.org Wed May 27 10:01:31 2020 Return-Path: Delivered-To: svn-src-all@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 6681832E103; Wed, 27 May 2020 10:01:31 +0000 (UTC) (envelope-from manu@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49X5vb2BNqz453G; Wed, 27 May 2020 10:01:31 +0000 (UTC) (envelope-from manu@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 3336A12E8D; Wed, 27 May 2020 10:01:31 +0000 (UTC) (envelope-from manu@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04RA1VFh046908; Wed, 27 May 2020 10:01:31 GMT (envelope-from manu@FreeBSD.org) Received: (from manu@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04RA1VKe046907; Wed, 27 May 2020 10:01:31 GMT (envelope-from manu@FreeBSD.org) Message-Id: <202005271001.04RA1VKe046907@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: manu set sender to manu@FreeBSD.org using -f From: Emmanuel Vadot Date: Wed, 27 May 2020 10:01:31 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361550 - head/sys/compat/linuxkpi/common/include/linux X-SVN-Group: head X-SVN-Commit-Author: manu X-SVN-Commit-Paths: head/sys/compat/linuxkpi/common/include/linux X-SVN-Commit-Revision: 361550 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2020 10:01:31 -0000 Author: manu Date: Wed May 27 10:01:30 2020 New Revision: 361550 URL: https://svnweb.freebsd.org/changeset/base/361550 Log: linuxkpi: Add rcu_swap_protected This macros swap an rcu pointer with a normal pointer. The condition only seems to be used for debug/warning under linux, ignore for now. Sponsored-by: The FreeBSD Foundation Reviewed by: hselasky Differential Revision: https://reviews.freebsd.org/D24954 Modified: head/sys/compat/linuxkpi/common/include/linux/rcupdate.h Modified: head/sys/compat/linuxkpi/common/include/linux/rcupdate.h ============================================================================== --- head/sys/compat/linuxkpi/common/include/linux/rcupdate.h Wed May 27 09:31:50 2020 (r361549) +++ head/sys/compat/linuxkpi/common/include/linux/rcupdate.h Wed May 27 10:01:30 2020 (r361550) @@ -97,6 +97,12 @@ (uintptr_t)(v)); \ } while (0) +#define rcu_swap_protected(rcu, ptr, c) do { \ + typeof(ptr) p = rcu_dereference_protected(rcu, c); \ + rcu_assign_pointer(rcu, ptr); \ + (ptr) = p; \ +} while (0) + /* prototypes */ extern void linux_call_rcu(unsigned type, struct rcu_head *ptr, rcu_callback_t func); From owner-svn-src-all@freebsd.org Wed May 27 11:42:09 2020 Return-Path: Delivered-To: svn-src-all@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 B870F32FF1E; Wed, 27 May 2020 11:42:09 +0000 (UTC) (envelope-from manu@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49X87j4Wqfz4ClZ; Wed, 27 May 2020 11:42:09 +0000 (UTC) (envelope-from manu@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 9698B142E9; Wed, 27 May 2020 11:42:09 +0000 (UTC) (envelope-from manu@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04RBg9vE010340; Wed, 27 May 2020 11:42:09 GMT (envelope-from manu@FreeBSD.org) Received: (from manu@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04RBg9K0010339; Wed, 27 May 2020 11:42:09 GMT (envelope-from manu@FreeBSD.org) Message-Id: <202005271142.04RBg9K0010339@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: manu set sender to manu@FreeBSD.org using -f From: Emmanuel Vadot Date: Wed, 27 May 2020 11:42:09 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361551 - head/sys/compat/linuxkpi/common/include/linux X-SVN-Group: head X-SVN-Commit-Author: manu X-SVN-Commit-Paths: head/sys/compat/linuxkpi/common/include/linux X-SVN-Commit-Revision: 361551 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2020 11:42:09 -0000 Author: manu Date: Wed May 27 11:42:09 2020 New Revision: 361551 URL: https://svnweb.freebsd.org/changeset/base/361551 Log: linuxkpi: Add kstrtou16 This function convert a char * to a u16. Simply use strtoul and cast to compare for ERANGE Sponsored-by: The FreeBSD Foundation Reviewed by: hselasky Differential Revision: https://reviews.freebsd.org/D24996 Modified: head/sys/compat/linuxkpi/common/include/linux/kernel.h Modified: head/sys/compat/linuxkpi/common/include/linux/kernel.h ============================================================================== --- head/sys/compat/linuxkpi/common/include/linux/kernel.h Wed May 27 10:01:30 2020 (r361550) +++ head/sys/compat/linuxkpi/common/include/linux/kernel.h Wed May 27 11:42:09 2020 (r361551) @@ -374,6 +374,24 @@ kstrtouint(const char *cp, unsigned int base, unsigned } static inline int +kstrtou16(const char *cp, unsigned int base, u16 *res) +{ + char *end; + unsigned long temp; + + *res = temp = strtoul(cp, &end, base); + + /* skip newline character, if any */ + if (*end == '\n') + end++; + if (*cp == 0 || *end != 0) + return (-EINVAL); + if (temp != (u16)temp) + return (-ERANGE); + return (0); +} + +static inline int kstrtou32(const char *cp, unsigned int base, u32 *res) { char *end; From owner-svn-src-all@freebsd.org Wed May 27 15:06:04 2020 Return-Path: Delivered-To: svn-src-all@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 29000334D71; Wed, 27 May 2020 15:06:04 +0000 (UTC) (envelope-from markj@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49XDg00JsCz4WS4; Wed, 27 May 2020 15:06:04 +0000 (UTC) (envelope-from markj@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 01C09164FF; Wed, 27 May 2020 15:06:04 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04RF633I036008; Wed, 27 May 2020 15:06:03 GMT (envelope-from markj@FreeBSD.org) Received: (from markj@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04RF63b0036006; Wed, 27 May 2020 15:06:03 GMT (envelope-from markj@FreeBSD.org) Message-Id: <202005271506.04RF63b0036006@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: markj set sender to markj@FreeBSD.org using -f From: Mark Johnston Date: Wed, 27 May 2020 15:06:03 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org Subject: svn commit: r361552 - in stable/12/tests/sys: fifo kern/pipe X-SVN-Group: stable-12 X-SVN-Commit-Author: markj X-SVN-Commit-Paths: in stable/12/tests/sys: fifo kern/pipe X-SVN-Commit-Revision: 361552 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2020 15:06:04 -0000 Author: markj Date: Wed May 27 15:06:03 2020 New Revision: 361552 URL: https://svnweb.freebsd.org/changeset/base/361552 Log: MFC r361286: Avoid hard-coding pipe buffer sizes in the pipe and fifo kqueue tests. Modified: stable/12/tests/sys/fifo/fifo_kqueue.c stable/12/tests/sys/kern/pipe/pipe_kqueue_test.c Directory Properties: stable/12/ (props changed) Modified: stable/12/tests/sys/fifo/fifo_kqueue.c ============================================================================== --- stable/12/tests/sys/fifo/fifo_kqueue.c Wed May 27 11:42:09 2020 (r361551) +++ stable/12/tests/sys/fifo/fifo_kqueue.c Wed May 27 15:06:03 2020 (r361552) @@ -219,10 +219,14 @@ ATF_TC_BODY(fifo_kqueue__connecting_reader, tc) ATF_REQUIRE(close(p[1]) == 0); } +/* Check that EVFILT_READ behaves sensibly on a FIFO reader. */ ATF_TC_WITHOUT_HEAD(fifo_kqueue__reads); ATF_TC_BODY(fifo_kqueue__reads, tc) { - int p[2] = { -1, -1 }; + struct kevent kev[32]; + ssize_t bytes, i, n; + int kq, p[2]; + char c; ATF_REQUIRE(mkfifo("testfifo", 0600) == 0); @@ -231,39 +235,38 @@ ATF_TC_BODY(fifo_kqueue__reads, tc) ATF_REQUIRE((p[1] = open("testfifo", O_WRONLY | O_CLOEXEC | O_NONBLOCK)) >= 0); - /* Check that EVFILT_READ behaves sensibly on a FIFO reader. */ - - char c = 0; - ssize_t r; - while ((r = write(p[1], &c, 1)) == 1) { - } - ATF_REQUIRE(r < 0); + bytes = 0; + c = 0; + while ((n = write(p[1], &c, 1)) == 1) + bytes++; + ATF_REQUIRE(n < 0); ATF_REQUIRE(errno == EAGAIN || errno == EWOULDBLOCK); + ATF_REQUIRE(bytes > 1); - for (int i = 0; i < PIPE_BUF + 1; ++i) { + for (i = 0; i < bytes / 2; i++) ATF_REQUIRE(read(p[0], &c, 1) == 1); - } + bytes -= i; - int kq = kqueue(); + kq = kqueue(); ATF_REQUIRE(kq >= 0); - struct kevent kev[32]; EV_SET(&kev[0], p[0], EVFILT_READ, EV_ADD | EV_CLEAR, 0, 0, 0); ATF_REQUIRE(kevent(kq, kev, 1, NULL, 0, NULL) == 0); ATF_REQUIRE(kevent(kq, NULL, 0, kev, nitems(kev), - &(struct timespec) { 0, 0 }) == 1); + &(struct timespec){ 0, 0 }) == 1); ATF_REQUIRE(kev[0].ident == (uintptr_t)p[0]); ATF_REQUIRE(kev[0].filter == EVFILT_READ); ATF_REQUIRE(kev[0].flags == EV_CLEAR); ATF_REQUIRE(kev[0].fflags == 0); - ATF_REQUIRE(kev[0].data == 65023); + ATF_REQUIRE(kev[0].data == bytes); ATF_REQUIRE(kev[0].udata == 0); - while ((r = read(p[0], &c, 1)) == 1) { - } - ATF_REQUIRE(r < 0); + while (bytes-- > 0) + ATF_REQUIRE(read(p[0], &c, 1) == 1); + n = read(p[0], &c, 1); + ATF_REQUIRE(n < 0); ATF_REQUIRE(errno == EAGAIN || errno == EWOULDBLOCK); ATF_REQUIRE(kevent(kq, NULL, 0, kev, nitems(kev), Modified: stable/12/tests/sys/kern/pipe/pipe_kqueue_test.c ============================================================================== --- stable/12/tests/sys/kern/pipe/pipe_kqueue_test.c Wed May 27 11:42:09 2020 (r361551) +++ stable/12/tests/sys/kern/pipe/pipe_kqueue_test.c Wed May 27 15:06:03 2020 (r361552) @@ -243,28 +243,30 @@ ATF_TC_BODY(pipe_kqueue__closed_read_end_register_befo ATF_TC_WITHOUT_HEAD(pipe_kqueue__closed_write_end); ATF_TC_BODY(pipe_kqueue__closed_write_end, tc) { - int p[2] = { -1, -1 }; + struct kevent kev[32]; + ssize_t bytes, n; + int kq, p[2]; + char c; ATF_REQUIRE(pipe2(p, O_CLOEXEC | O_NONBLOCK) == 0); ATF_REQUIRE(p[0] >= 0); ATF_REQUIRE(p[1] >= 0); - char c = 0; - ssize_t r; - while ((r = write(p[1], &c, 1)) == 1) { - } - ATF_REQUIRE(r < 0); + bytes = 0; + c = 0; + while ((n = write(p[1], &c, 1)) == 1) + bytes++; + ATF_REQUIRE(n < 0); ATF_REQUIRE(errno == EAGAIN || errno == EWOULDBLOCK); ATF_REQUIRE(close(p[1]) == 0); - int kq = kqueue(); + kq = kqueue(); ATF_REQUIRE(kq >= 0); - struct kevent kev[32]; - EV_SET(&kev[0], p[0], EVFILT_READ, EV_ADD | EV_CLEAR | EV_RECEIPT, /**/ + EV_SET(&kev[0], p[0], EVFILT_READ, EV_ADD | EV_CLEAR | EV_RECEIPT, 0, 0, 0); - EV_SET(&kev[1], p[0], EVFILT_WRITE, EV_ADD | EV_CLEAR | EV_RECEIPT, /**/ + EV_SET(&kev[1], p[0], EVFILT_WRITE, EV_ADD | EV_CLEAR | EV_RECEIPT, 0, 0, 0); /* @@ -284,7 +286,7 @@ ATF_TC_BODY(pipe_kqueue__closed_write_end, tc) ATF_REQUIRE(kev[0].filter == EVFILT_READ); ATF_REQUIRE(kev[0].flags == (EV_EOF | EV_CLEAR | EV_RECEIPT)); ATF_REQUIRE(kev[0].fflags == 0); - ATF_REQUIRE(kev[0].data == 65536); + ATF_REQUIRE(kev[0].data == bytes); ATF_REQUIRE(kev[0].udata == 0); ATF_REQUIRE(close(kq) == 0); @@ -294,19 +296,21 @@ ATF_TC_BODY(pipe_kqueue__closed_write_end, tc) ATF_TC_WITHOUT_HEAD(pipe_kqueue__closed_write_end_register_before_close); ATF_TC_BODY(pipe_kqueue__closed_write_end_register_before_close, tc) { - int p[2] = { -1, -1 }; + struct kevent kev[32]; + ssize_t bytes, n; + int kq, p[2]; + char c; ATF_REQUIRE(pipe2(p, O_CLOEXEC | O_NONBLOCK) == 0); ATF_REQUIRE(p[0] >= 0); ATF_REQUIRE(p[1] >= 0); - int kq = kqueue(); + kq = kqueue(); ATF_REQUIRE(kq >= 0); - struct kevent kev[32]; - EV_SET(&kev[0], p[0], EVFILT_READ, EV_ADD | EV_CLEAR | EV_RECEIPT, /**/ + EV_SET(&kev[0], p[0], EVFILT_READ, EV_ADD | EV_CLEAR | EV_RECEIPT, 0, 0, 0); - EV_SET(&kev[1], p[0], EVFILT_WRITE, EV_ADD | EV_CLEAR | EV_RECEIPT, /**/ + EV_SET(&kev[1], p[0], EVFILT_WRITE, EV_ADD | EV_CLEAR | EV_RECEIPT, 0, 0, 0); /* @@ -320,35 +324,32 @@ ATF_TC_BODY(pipe_kqueue__closed_write_end_register_bef ATF_REQUIRE((kev[1].flags & EV_ERROR) != 0); ATF_REQUIRE(kev[1].data == 0); - char c = 0; - ssize_t r; - while ((r = write(p[1], &c, 1)) == 1) { - } - ATF_REQUIRE(r < 0); + bytes = 0; + c = 0; + while ((n = write(p[1], &c, 1)) == 1) + bytes++; + ATF_REQUIRE(n < 0); ATF_REQUIRE(errno == EAGAIN || errno == EWOULDBLOCK); ATF_REQUIRE(close(p[1]) == 0); ATF_REQUIRE(kevent(kq, NULL, 0, kev, nitems(kev), - &(struct timespec) { 0, 0 }) == 2); - { - ATF_REQUIRE(kev[0].ident == (uintptr_t)p[0]); - ATF_REQUIRE(kev[0].filter == EVFILT_WRITE); - ATF_REQUIRE(kev[0].flags == - (EV_EOF | EV_CLEAR | EV_ONESHOT | EV_RECEIPT)); - ATF_REQUIRE(kev[0].fflags == 0); - ATF_REQUIRE(kev[0].data == 4096 || - kev[0].data == 512 /* on FreeBSD 11.3 */); - ATF_REQUIRE(kev[0].udata == 0); - } - { - ATF_REQUIRE(kev[1].ident == (uintptr_t)p[0]); - ATF_REQUIRE(kev[1].filter == EVFILT_READ); - ATF_REQUIRE(kev[1].flags == (EV_EOF | EV_CLEAR | EV_RECEIPT)); - ATF_REQUIRE(kev[1].fflags == 0); - ATF_REQUIRE(kev[1].data == 65536); - ATF_REQUIRE(kev[1].udata == 0); - } + &(struct timespec){ 0, 0 }) == 2); + + ATF_REQUIRE(kev[0].ident == (uintptr_t)p[0]); + ATF_REQUIRE(kev[0].filter == EVFILT_WRITE); + ATF_REQUIRE(kev[0].flags == + (EV_EOF | EV_CLEAR | EV_ONESHOT | EV_RECEIPT)); + ATF_REQUIRE(kev[0].fflags == 0); + ATF_REQUIRE(kev[0].data > 0); + ATF_REQUIRE(kev[0].udata == 0); + + ATF_REQUIRE(kev[1].ident == (uintptr_t)p[0]); + ATF_REQUIRE(kev[1].filter == EVFILT_READ); + ATF_REQUIRE(kev[1].flags == (EV_EOF | EV_CLEAR | EV_RECEIPT)); + ATF_REQUIRE(kev[1].fflags == 0); + ATF_REQUIRE(kev[1].data == bytes); + ATF_REQUIRE(kev[1].udata == 0); ATF_REQUIRE(close(kq) == 0); ATF_REQUIRE(close(p[0]) == 0); From owner-svn-src-all@freebsd.org Wed May 27 16:33:01 2020 Return-Path: Delivered-To: svn-src-all@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 D566633766B; Wed, 27 May 2020 16:33:01 +0000 (UTC) (envelope-from syrinx@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49XGbK5KS8z4gD9; Wed, 27 May 2020 16:33:01 +0000 (UTC) (envelope-from syrinx@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 B1EE8178CE; Wed, 27 May 2020 16:33:01 +0000 (UTC) (envelope-from syrinx@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04RGX1O9092315; Wed, 27 May 2020 16:33:01 GMT (envelope-from syrinx@FreeBSD.org) Received: (from syrinx@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04RGX1Jk092312; Wed, 27 May 2020 16:33:01 GMT (envelope-from syrinx@FreeBSD.org) Message-Id: <202005271633.04RGX1Jk092312@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: syrinx set sender to syrinx@FreeBSD.org using -f From: Shteryana Shopova Date: Wed, 27 May 2020 16:33:01 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361553 - in head/tests/sys: netinet netinet6 X-SVN-Group: head X-SVN-Commit-Author: syrinx X-SVN-Commit-Paths: in head/tests/sys: netinet netinet6 X-SVN-Commit-Revision: 361553 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2020 16:33:01 -0000 Author: syrinx Date: Wed May 27 16:33:00 2020 New Revision: 361553 URL: https://svnweb.freebsd.org/changeset/base/361553 Log: Proper check if divert(4) module is present by the relevant tests Fix the netinet/netinet6 divert tests falsely reporting 'ipdivert module is not loaded' when the divert module is built into the kernel Sponsored by: Axiado Differential Revision: https://reviews.freebsd.org/D25026 Modified: head/tests/sys/netinet/divert.sh head/tests/sys/netinet6/divert.sh Modified: head/tests/sys/netinet/divert.sh ============================================================================== --- head/tests/sys/netinet/divert.sh Wed May 27 15:06:03 2020 (r361552) +++ head/tests/sys/netinet/divert.sh Wed May 27 16:33:00 2020 (r361553) @@ -31,7 +31,7 @@ . $(atf_get_srcdir)/../common/vnet.subr load_divert_module() { - kldstat -q -n ipdivert + kldstat -q -m ipdivert if [ $? -ne 0 ]; then atf_skip "ipdivert module is not loaded" fi Modified: head/tests/sys/netinet6/divert.sh ============================================================================== --- head/tests/sys/netinet6/divert.sh Wed May 27 15:06:03 2020 (r361552) +++ head/tests/sys/netinet6/divert.sh Wed May 27 16:33:00 2020 (r361553) @@ -31,7 +31,7 @@ . $(atf_get_srcdir)/../common/vnet.subr load_divert_module() { - kldstat -q -n ipdivert + kldstat -q -m ipdivert if [ $? -ne 0 ]; then atf_skip "ipdivert module is not loaded" fi From owner-svn-src-all@freebsd.org Wed May 27 16:34:48 2020 Return-Path: Delivered-To: svn-src-all@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 1DAC933756A; Wed, 27 May 2020 16:34:48 +0000 (UTC) (envelope-from kevans@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49XGdM75jFz4gFC; Wed, 27 May 2020 16:34:47 +0000 (UTC) (envelope-from kevans@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 EEC7E17E63; Wed, 27 May 2020 16:34:47 +0000 (UTC) (envelope-from kevans@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04RGYlHS092449; Wed, 27 May 2020 16:34:47 GMT (envelope-from kevans@FreeBSD.org) Received: (from kevans@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04RGYla3092448; Wed, 27 May 2020 16:34:47 GMT (envelope-from kevans@FreeBSD.org) Message-Id: <202005271634.04RGYla3092448@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kevans set sender to kevans@FreeBSD.org using -f From: Kyle Evans Date: Wed, 27 May 2020 16:34:47 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-releng@freebsd.org Subject: svn commit: r361554 - releng/11.4/stand/common X-SVN-Group: releng X-SVN-Commit-Author: kevans X-SVN-Commit-Paths: releng/11.4/stand/common X-SVN-Commit-Revision: 361554 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2020 16:34:48 -0000 Author: kevans Date: Wed May 27 16:34:47 2020 New Revision: 361554 URL: https://svnweb.freebsd.org/changeset/base/361554 Log: MFS r361538: loader: fix userboot's ability to detect a guest's interpreter Some time after r338418, I believe with -Os/-Oz -ffunction-sections -fdata-sections, the bootprog_interp variable that held our "$Interpreter:" marker started getting strip from all loaders, with exception to userboot since it used bootprog_interp to determine what flavor of userboot it was. At some point, it had been brought to my attention that this was no longer working and I had worked up some potential solutions to use the variable that involved printing it out. My vague recollection is that this was rejected, and I forgot to explore the alternatives; I cannot find records of this discussion anymore. Fast forward to present day, Andrew reported that it was non-functional and offered (effectively) this patch (sans comment) to stop the compiler from optimizing it out by assigning it to a volatile variable. This removes concerns about user-facing change while retaining the interpreter marker. Furthermore, it could certainly be uglier. Note that this doesn't affect the stock build of 11.4's loaders, which do not have whatever set of optimizations leads to bootprog_interp getting removed; this is being merged as a low-risk change that will prevent accidents in case I've missed some non-default option combination that can lead to the same situation. Approved by: re (gjb) Modified: releng/11.4/stand/common/interp.c Directory Properties: releng/11.4/ (props changed) Modified: releng/11.4/stand/common/interp.c ============================================================================== --- releng/11.4/stand/common/interp.c Wed May 27 16:33:00 2020 (r361553) +++ releng/11.4/stand/common/interp.c Wed May 27 16:34:47 2020 (r361554) @@ -45,8 +45,17 @@ __FBSDID("$FreeBSD$"); void interact(void) { - static char input[256]; /* big enough? */ + static char input[256]; /* big enough? */ + const char * volatile interp_identifier; + /* + * Because interp_identifier is volatile, it cannot be optimized out by + * the compiler as it's considered an externally observable event. This + * prevents the compiler from optimizing out our carefully placed + * $Interpreter:4th string that userboot may use to determine that + * we need to switch interpreters. + */ + interp_identifier = bootprog_interp; interp_init(); printf("\n"); From owner-svn-src-all@freebsd.org Wed May 27 17:49:33 2020 Return-Path: Delivered-To: svn-src-all@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 05A422C9A42; Wed, 27 May 2020 17:49:33 +0000 (UTC) (envelope-from cy@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49XJHc6P6Yz3YMm; Wed, 27 May 2020 17:49:32 +0000 (UTC) (envelope-from cy@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 D6B2618C89; Wed, 27 May 2020 17:49:32 +0000 (UTC) (envelope-from cy@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04RHnWGo035183; Wed, 27 May 2020 17:49:32 GMT (envelope-from cy@FreeBSD.org) Received: (from cy@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04RHnWcu035182; Wed, 27 May 2020 17:49:32 GMT (envelope-from cy@FreeBSD.org) Message-Id: <202005271749.04RHnWcu035182@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: cy set sender to cy@FreeBSD.org using -f From: Cy Schubert Date: Wed, 27 May 2020 17:49:32 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org Subject: svn commit: r361555 - in stable: 11/contrib/wpa/src/drivers 12/contrib/wpa/src/drivers X-SVN-Group: stable-11 X-SVN-Commit-Author: cy X-SVN-Commit-Paths: in stable: 11/contrib/wpa/src/drivers 12/contrib/wpa/src/drivers X-SVN-Commit-Revision: 361555 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2020 17:49:33 -0000 Author: cy Date: Wed May 27 17:49:32 2020 New Revision: 361555 URL: https://svnweb.freebsd.org/changeset/base/361555 Log: MFC r361272: Silence the once per second CTRL-EVENT-SCAN-FAILED errors when the WiFi radio is disabled through the communication device toggle key (also known as the RF raidio kill button). Only the CTRL-EVENT-DISCONNECTED will be issued. Submitted by: avg Reported by: avg Modified: stable/11/contrib/wpa/src/drivers/driver_bsd.c Directory Properties: stable/11/ (props changed) Changes in other areas also in this revision: Modified: stable/12/contrib/wpa/src/drivers/driver_bsd.c Directory Properties: stable/12/ (props changed) Modified: stable/11/contrib/wpa/src/drivers/driver_bsd.c ============================================================================== --- stable/11/contrib/wpa/src/drivers/driver_bsd.c Wed May 27 16:34:47 2020 (r361554) +++ stable/11/contrib/wpa/src/drivers/driver_bsd.c Wed May 27 17:49:32 2020 (r361555) @@ -1349,14 +1349,18 @@ wpa_driver_bsd_event_receive(int sock, void *ctx, void drv = bsd_get_drvindex(global, ifm->ifm_index); if (drv == NULL) return; - if ((ifm->ifm_flags & IFF_UP) == 0 && - (drv->flags & IFF_UP) != 0) { + if (((ifm->ifm_flags & IFF_UP) == 0 || + (ifm->ifm_flags & IFF_RUNNING) == 0) && + (drv->flags & IFF_UP) != 0 && + (drv->flags & IFF_RUNNING) != 0) { wpa_printf(MSG_DEBUG, "RTM_IFINFO: Interface '%s' DOWN", drv->ifname); wpa_supplicant_event(drv->ctx, EVENT_INTERFACE_DISABLED, NULL); } else if ((ifm->ifm_flags & IFF_UP) != 0 && - (drv->flags & IFF_UP) == 0) { + (ifm->ifm_flags & IFF_RUNNING) != 0 && + ((drv->flags & IFF_UP) == 0 || + (drv->flags & IFF_RUNNING) == 0)) { wpa_printf(MSG_DEBUG, "RTM_IFINFO: Interface '%s' UP", drv->ifname); wpa_supplicant_event(drv->ctx, EVENT_INTERFACE_ENABLED, From owner-svn-src-all@freebsd.org Wed May 27 17:49:33 2020 Return-Path: Delivered-To: svn-src-all@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 572C02C9D0A; Wed, 27 May 2020 17:49:33 +0000 (UTC) (envelope-from cy@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49XJHd1jSwz3Y8W; Wed, 27 May 2020 17:49:33 +0000 (UTC) (envelope-from cy@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 35DA118A63; Wed, 27 May 2020 17:49:33 +0000 (UTC) (envelope-from cy@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04RHnXSt035190; Wed, 27 May 2020 17:49:33 GMT (envelope-from cy@FreeBSD.org) Received: (from cy@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04RHnXiR035189; Wed, 27 May 2020 17:49:33 GMT (envelope-from cy@FreeBSD.org) Message-Id: <202005271749.04RHnXiR035189@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: cy set sender to cy@FreeBSD.org using -f From: Cy Schubert Date: Wed, 27 May 2020 17:49:33 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org Subject: svn commit: r361555 - in stable: 11/contrib/wpa/src/drivers 12/contrib/wpa/src/drivers X-SVN-Group: stable-12 X-SVN-Commit-Author: cy X-SVN-Commit-Paths: in stable: 11/contrib/wpa/src/drivers 12/contrib/wpa/src/drivers X-SVN-Commit-Revision: 361555 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2020 17:49:33 -0000 Author: cy Date: Wed May 27 17:49:32 2020 New Revision: 361555 URL: https://svnweb.freebsd.org/changeset/base/361555 Log: MFC r361272: Silence the once per second CTRL-EVENT-SCAN-FAILED errors when the WiFi radio is disabled through the communication device toggle key (also known as the RF raidio kill button). Only the CTRL-EVENT-DISCONNECTED will be issued. Submitted by: avg Reported by: avg Modified: stable/12/contrib/wpa/src/drivers/driver_bsd.c Directory Properties: stable/12/ (props changed) Changes in other areas also in this revision: Modified: stable/11/contrib/wpa/src/drivers/driver_bsd.c Directory Properties: stable/11/ (props changed) Modified: stable/12/contrib/wpa/src/drivers/driver_bsd.c ============================================================================== --- stable/12/contrib/wpa/src/drivers/driver_bsd.c Wed May 27 16:34:47 2020 (r361554) +++ stable/12/contrib/wpa/src/drivers/driver_bsd.c Wed May 27 17:49:32 2020 (r361555) @@ -1358,14 +1358,18 @@ wpa_driver_bsd_event_receive(int sock, void *ctx, void drv = bsd_get_drvindex(global, ifm->ifm_index); if (drv == NULL) return; - if ((ifm->ifm_flags & IFF_UP) == 0 && - (drv->flags & IFF_UP) != 0) { + if (((ifm->ifm_flags & IFF_UP) == 0 || + (ifm->ifm_flags & IFF_RUNNING) == 0) && + (drv->flags & IFF_UP) != 0 && + (drv->flags & IFF_RUNNING) != 0) { wpa_printf(MSG_DEBUG, "RTM_IFINFO: Interface '%s' DOWN", drv->ifname); wpa_supplicant_event(drv->ctx, EVENT_INTERFACE_DISABLED, NULL); } else if ((ifm->ifm_flags & IFF_UP) != 0 && - (drv->flags & IFF_UP) == 0) { + (ifm->ifm_flags & IFF_RUNNING) != 0 && + ((drv->flags & IFF_UP) == 0 || + (drv->flags & IFF_RUNNING) == 0)) { wpa_printf(MSG_DEBUG, "RTM_IFINFO: Interface '%s' UP", drv->ifname); wpa_supplicant_event(drv->ctx, EVENT_INTERFACE_ENABLED, From owner-svn-src-all@freebsd.org Wed May 27 18:17:40 2020 Return-Path: Delivered-To: svn-src-all@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 D38A82CA909; Wed, 27 May 2020 18:17:40 +0000 (UTC) (envelope-from kib@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49XJw45Bdcz3bTZ; Wed, 27 May 2020 18:17:40 +0000 (UTC) (envelope-from kib@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 AD87518CEC; Wed, 27 May 2020 18:17:40 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04RIHeA3053682; Wed, 27 May 2020 18:17:40 GMT (envelope-from kib@FreeBSD.org) Received: (from kib@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04RIHe80053681; Wed, 27 May 2020 18:17:40 GMT (envelope-from kib@FreeBSD.org) Message-Id: <202005271817.04RIHe80053681@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kib set sender to kib@FreeBSD.org using -f From: Konstantin Belousov Date: Wed, 27 May 2020 18:17:40 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org Subject: svn commit: r361556 - stable/12/sys/x86/x86 X-SVN-Group: stable-12 X-SVN-Commit-Author: kib X-SVN-Commit-Paths: stable/12/sys/x86/x86 X-SVN-Commit-Revision: 361556 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2020 18:17:40 -0000 Author: kib Date: Wed May 27 18:17:40 2020 New Revision: 361556 URL: https://svnweb.freebsd.org/changeset/base/361556 Log: MFC r361299: Do not consider CAP_RDCL_NO as an indicator for all MDS vulnerabilities handled by hardware. Modified: stable/12/sys/x86/x86/cpu_machdep.c Directory Properties: stable/12/ (props changed) Modified: stable/12/sys/x86/x86/cpu_machdep.c ============================================================================== --- stable/12/sys/x86/x86/cpu_machdep.c Wed May 27 17:49:32 2020 (r361555) +++ stable/12/sys/x86/x86/cpu_machdep.c Wed May 27 18:17:40 2020 (r361556) @@ -1019,11 +1019,11 @@ hw_mds_recalculate(void) * reported. For instance, hypervisor might unknowingly * filter the cap out. * For the similar reasons, and for testing, allow to enable - * mitigation even for RDCL_NO or MDS_NO caps. + * mitigation even when MDS_NO cap is set. */ if (cpu_vendor_id != CPU_VENDOR_INTEL || hw_mds_disable == 0 || - ((cpu_ia32_arch_caps & (IA32_ARCH_CAP_RDCL_NO | - IA32_ARCH_CAP_MDS_NO)) != 0 && hw_mds_disable == 3)) { + ((cpu_ia32_arch_caps & IA32_ARCH_CAP_MDS_NO) != 0 && + hw_mds_disable == 3)) { mds_handler = mds_handler_void; } else if (((cpu_stdext_feature3 & CPUID_STDEXT3_MD_CLEAR) != 0 && hw_mds_disable == 3) || hw_mds_disable == 1) { From owner-svn-src-all@freebsd.org Wed May 27 18:23:16 2020 Return-Path: Delivered-To: svn-src-all@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 383652CAB18; Wed, 27 May 2020 18:23:16 +0000 (UTC) (envelope-from kib@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49XK2X0R73z3bng; Wed, 27 May 2020 18:23:16 +0000 (UTC) (envelope-from kib@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 0A01E18FC9; Wed, 27 May 2020 18:23:16 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04RINFYK059848; Wed, 27 May 2020 18:23:15 GMT (envelope-from kib@FreeBSD.org) Received: (from kib@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04RINETN059840; Wed, 27 May 2020 18:23:14 GMT (envelope-from kib@FreeBSD.org) Message-Id: <202005271823.04RINETN059840@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kib set sender to kib@FreeBSD.org using -f From: Konstantin Belousov Date: Wed, 27 May 2020 18:23:14 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org Subject: svn commit: r361557 - in stable/12/sys: amd64/amd64 i386/i386 x86/include x86/x86 X-SVN-Group: stable-12 X-SVN-Commit-Author: kib X-SVN-Commit-Paths: in stable/12/sys: amd64/amd64 i386/i386 x86/include x86/x86 X-SVN-Commit-Revision: 361557 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2020 18:23:16 -0000 Author: kib Date: Wed May 27 18:23:14 2020 New Revision: 361557 URL: https://svnweb.freebsd.org/changeset/base/361557 Log: MFC r361302: amd64: Add a knob to flush RSB on context switches if machine has SMEP. Modified: stable/12/sys/amd64/amd64/cpu_switch.S stable/12/sys/amd64/amd64/initcpu.c stable/12/sys/amd64/amd64/support.S stable/12/sys/i386/i386/support.s stable/12/sys/x86/include/x86_var.h stable/12/sys/x86/x86/cpu_machdep.c Directory Properties: stable/12/ (props changed) Modified: stable/12/sys/amd64/amd64/cpu_switch.S ============================================================================== --- stable/12/sys/amd64/amd64/cpu_switch.S Wed May 27 18:17:40 2020 (r361556) +++ stable/12/sys/amd64/amd64/cpu_switch.S Wed May 27 18:23:14 2020 (r361557) @@ -233,6 +233,8 @@ done_load_dr: movq %rax,(%rsp) movq PCPU(CURTHREAD),%rdi call fpu_activate_sw + cmpb $0,cpu_flush_rsb_ctxsw(%rip) + jne rsb_flush ret /* Modified: stable/12/sys/amd64/amd64/initcpu.c ============================================================================== --- stable/12/sys/amd64/amd64/initcpu.c Wed May 27 18:17:40 2020 (r361556) +++ stable/12/sys/amd64/amd64/initcpu.c Wed May 27 18:23:14 2020 (r361557) @@ -238,12 +238,24 @@ initializecpu(void) cr4 |= CR4_PKE; /* + * If SMEP is present, we only need to flush RSB (by default) + * on context switches, to prevent cross-process ret2spec + * attacks. Do it automatically if ibrs_disable is set, to + * complete the mitigation. + * * Postpone enabling the SMEP on the boot CPU until the page * tables are switched from the boot loader identity mapping * to the kernel tables. The boot loader enables the U bit in * its tables. */ - if (!IS_BSP()) { + if (IS_BSP()) { + if (cpu_stdext_feature & CPUID_STDEXT_SMEP && + !TUNABLE_INT_FETCH( + "machdep.mitigations.cpu_flush_rsb_ctxsw", + &cpu_flush_rsb_ctxsw) && + hw_ibrs_disable) + cpu_flush_rsb_ctxsw = 1; + } else { if (cpu_stdext_feature & CPUID_STDEXT_SMEP) cr4 |= CR4_SMEP; if (cpu_stdext_feature & CPUID_STDEXT_SMAP) Modified: stable/12/sys/amd64/amd64/support.S ============================================================================== --- stable/12/sys/amd64/amd64/support.S Wed May 27 18:17:40 2020 (r361556) +++ stable/12/sys/amd64/amd64/support.S Wed May 27 18:23:14 2020 (r361557) @@ -1528,23 +1528,27 @@ ENTRY(pmap_pti_pcid_invlrng) retq .altmacro - .macro ibrs_seq_label l -handle_ibrs_\l: + .macro rsb_seq_label l +rsb_seq_\l: .endm - .macro ibrs_call_label l - call handle_ibrs_\l + .macro rsb_call_label l + call rsb_seq_\l .endm - .macro ibrs_seq count + .macro rsb_seq count ll=1 .rept \count - ibrs_call_label %(ll) + rsb_call_label %(ll) nop - ibrs_seq_label %(ll) + rsb_seq_label %(ll) addq $8,%rsp ll=ll+1 .endr .endm +ENTRY(rsb_flush) + rsb_seq 32 + ret + /* all callers already saved %rax, %rdx, and %rcx */ ENTRY(handle_ibrs_entry) cmpb $0,hw_ibrs_ibpb_active(%rip) @@ -1556,8 +1560,7 @@ ENTRY(handle_ibrs_entry) wrmsr movb $1,PCPU(IBPB_SET) testl $CPUID_STDEXT_SMEP,cpu_stdext_feature(%rip) - jne 1f - ibrs_seq 32 + je rsb_flush 1: ret END(handle_ibrs_entry) Modified: stable/12/sys/i386/i386/support.s ============================================================================== --- stable/12/sys/i386/i386/support.s Wed May 27 18:17:40 2020 (r361556) +++ stable/12/sys/i386/i386/support.s Wed May 27 18:23:14 2020 (r361557) @@ -445,6 +445,28 @@ msr_onfault: movl $EFAULT,%eax ret + .altmacro + .macro rsb_seq_label l +rsb_seq_\l: + .endm + .macro rsb_call_label l + call rsb_seq_\l + .endm + .macro rsb_seq count + ll=1 + .rept \count + rsb_call_label %(ll) + nop + rsb_seq_label %(ll) + addl $4,%esp + ll=ll+1 + .endr + .endm + +ENTRY(rsb_flush) + rsb_seq 32 + ret + ENTRY(handle_ibrs_entry) cmpb $0,hw_ibrs_ibpb_active je 1f @@ -455,10 +477,9 @@ ENTRY(handle_ibrs_entry) wrmsr movb $1,PCPU(IBPB_SET) /* - * i386 does not implement SMEP, but the 4/4 split makes this not - * that important. + * i386 does not implement SMEP. */ -1: ret +1: jmp rsb_flush END(handle_ibrs_entry) ENTRY(handle_ibrs_exit) Modified: stable/12/sys/x86/include/x86_var.h ============================================================================== --- stable/12/sys/x86/include/x86_var.h Wed May 27 18:17:40 2020 (r361556) +++ stable/12/sys/x86/include/x86_var.h Wed May 27 18:23:14 2020 (r361557) @@ -88,6 +88,7 @@ extern int hw_ibrs_ibpb_active; extern int hw_mds_disable; extern int hw_ssb_active; extern int x86_taa_enable; +extern int cpu_flush_rsb_ctxsw; struct pcb; struct thread; Modified: stable/12/sys/x86/x86/cpu_machdep.c ============================================================================== --- stable/12/sys/x86/x86/cpu_machdep.c Wed May 27 18:17:40 2020 (r361556) +++ stable/12/sys/x86/x86/cpu_machdep.c Wed May 27 18:23:14 2020 (r361557) @@ -1332,6 +1332,11 @@ SYSCTL_PROC(_machdep_mitigations_taa, OID_AUTO, state, sysctl_taa_state_handler, "A", "TAA Mitigation state"); +int __read_frequently cpu_flush_rsb_ctxsw; +SYSCTL_INT(_machdep_mitigations, OID_AUTO, flush_rsb_ctxsw, + CTLFLAG_RW | CTLFLAG_NOFETCH, &cpu_flush_rsb_ctxsw, 0, + "Flush Return Stack Buffer on context switch"); + /* * Enable and restore kernel text write permissions. * Callers must ensure that disable_wp()/restore_wp() are executed From owner-svn-src-all@freebsd.org Wed May 27 18:24:51 2020 Return-Path: Delivered-To: svn-src-all@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 2DA8D2CACF0; Wed, 27 May 2020 18:24:51 +0000 (UTC) (envelope-from kib@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49XK4M0M55z3bvn; Wed, 27 May 2020 18:24:51 +0000 (UTC) (envelope-from kib@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 077C419481; Wed, 27 May 2020 18:24:51 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04RIOokt059998; Wed, 27 May 2020 18:24:50 GMT (envelope-from kib@FreeBSD.org) Received: (from kib@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04RIOoJC059997; Wed, 27 May 2020 18:24:50 GMT (envelope-from kib@FreeBSD.org) Message-Id: <202005271824.04RIOoJC059997@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kib set sender to kib@FreeBSD.org using -f From: Konstantin Belousov Date: Wed, 27 May 2020 18:24:50 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org Subject: svn commit: r361558 - stable/11/sys/x86/x86 X-SVN-Group: stable-11 X-SVN-Commit-Author: kib X-SVN-Commit-Paths: stable/11/sys/x86/x86 X-SVN-Commit-Revision: 361558 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2020 18:24:51 -0000 Author: kib Date: Wed May 27 18:24:50 2020 New Revision: 361558 URL: https://svnweb.freebsd.org/changeset/base/361558 Log: MFC r361299: Do not consider CAP_RDCL_NO as an indicator for all MDS vulnerabilities handled by hardware. Modified: stable/11/sys/x86/x86/cpu_machdep.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/x86/x86/cpu_machdep.c ============================================================================== --- stable/11/sys/x86/x86/cpu_machdep.c Wed May 27 18:23:14 2020 (r361557) +++ stable/11/sys/x86/x86/cpu_machdep.c Wed May 27 18:24:50 2020 (r361558) @@ -1049,11 +1049,11 @@ hw_mds_recalculate(void) * reported. For instance, hypervisor might unknowingly * filter the cap out. * For the similar reasons, and for testing, allow to enable - * mitigation even for RDCL_NO or MDS_NO caps. + * mitigation even when MDS_NO cap is set. */ if (cpu_vendor_id != CPU_VENDOR_INTEL || hw_mds_disable == 0 || - ((cpu_ia32_arch_caps & (IA32_ARCH_CAP_RDCL_NO | - IA32_ARCH_CAP_MDS_NO)) != 0 && hw_mds_disable == 3)) { + ((cpu_ia32_arch_caps & IA32_ARCH_CAP_MDS_NO) != 0 && + hw_mds_disable == 3)) { mds_handler = mds_handler_void; } else if (((cpu_stdext_feature3 & CPUID_STDEXT3_MD_CLEAR) != 0 && hw_mds_disable == 3) || hw_mds_disable == 1) { From owner-svn-src-all@freebsd.org Wed May 27 18:26:11 2020 Return-Path: Delivered-To: svn-src-all@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 C24EF2CA965; Wed, 27 May 2020 18:26:11 +0000 (UTC) (envelope-from vangyzen@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49XK5v145cz3cQn; Wed, 27 May 2020 18:26:11 +0000 (UTC) (envelope-from vangyzen@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 1F53F19155; Wed, 27 May 2020 18:26:11 +0000 (UTC) (envelope-from vangyzen@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04RIQBIt060141; Wed, 27 May 2020 18:26:11 GMT (envelope-from vangyzen@FreeBSD.org) Received: (from vangyzen@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04RIQB5K060140; Wed, 27 May 2020 18:26:11 GMT (envelope-from vangyzen@FreeBSD.org) Message-Id: <202005271826.04RIQB5K060140@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: vangyzen set sender to vangyzen@FreeBSD.org using -f From: Eric van Gyzen Date: Wed, 27 May 2020 18:26:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361559 - head/lib/libifconfig X-SVN-Group: head X-SVN-Commit-Author: vangyzen X-SVN-Commit-Paths: head/lib/libifconfig X-SVN-Commit-Revision: 361559 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2020 18:26:12 -0000 Author: vangyzen Date: Wed May 27 18:26:10 2020 New Revision: 361559 URL: https://svnweb.freebsd.org/changeset/base/361559 Log: libifconfig: remove redundant NULL check Submitted by: Puneeth_kumar.Jothaiah@emc.com Reported by: Coverity Sponsored by: Dell EMC Isilon Modified: head/lib/libifconfig/libifconfig_inet6.c Modified: head/lib/libifconfig/libifconfig_inet6.c ============================================================================== --- head/lib/libifconfig/libifconfig_inet6.c Wed May 27 18:24:50 2020 (r361558) +++ head/lib/libifconfig/libifconfig_inet6.c Wed May 27 18:26:10 2020 (r361559) @@ -97,7 +97,7 @@ ifconfig_inet6_get_addrinfo(ifconfig_handle_t *h, addr->lifetime = ifr6.ifr_ifru.ifru_lifetime; /* struct copy */ /* Set the vhid */ - if (ifa->ifa_data && ifa->ifa_data) { + if (ifa->ifa_data) { addr->vhid = ((struct if_data *)ifa->ifa_data)->ifi_vhid; } From owner-svn-src-all@freebsd.org Wed May 27 18:32:13 2020 Return-Path: Delivered-To: svn-src-all@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 C0FEC2CB4C2; Wed, 27 May 2020 18:32:13 +0000 (UTC) (envelope-from adrian@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49XKDs4gqRz3d52; Wed, 27 May 2020 18:32:13 +0000 (UTC) (envelope-from adrian@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 818EB18FE2; Wed, 27 May 2020 18:32:13 +0000 (UTC) (envelope-from adrian@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04RIWDZ5065296; Wed, 27 May 2020 18:32:13 GMT (envelope-from adrian@FreeBSD.org) Received: (from adrian@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04RIWDpH065294; Wed, 27 May 2020 18:32:13 GMT (envelope-from adrian@FreeBSD.org) Message-Id: <202005271832.04RIWDpH065294@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: adrian set sender to adrian@FreeBSD.org using -f From: Adrian Chadd Date: Wed, 27 May 2020 18:32:13 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361560 - head/sys/net80211 X-SVN-Group: head X-SVN-Commit-Author: adrian X-SVN-Commit-Paths: head/sys/net80211 X-SVN-Commit-Revision: 361560 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2020 18:32:13 -0000 Author: adrian Date: Wed May 27 18:32:12 2020 New Revision: 361560 URL: https://svnweb.freebsd.org/changeset/base/361560 Log: [net80211] Fix interrupted scan logic and ticks comparison The scan task refactoring stuff circa 2014-2016 broke the blocking task into a taskqueue with some async bits, but it apparently broke scans being interrupted by traffic. Notably - the new "field" SCAN_PAUSE sets both SCAN_INTERRUPT and SCAN_CANCEL, and a bunch of existing code was checking for SCAN_CANCEL only and breaking the scan. Unfortunately it was then (a) cancelling the scan entirely and (b) not notifying userland that scan was done. So: * Update the calls to scan_end() to only pass in 1 (saying the scan is complete) if SCAN_CANCEL is set WITHOUT SCAN_INTERRUPT. If both are set then yes, the scan is interrupted, but it isn't canceled - it's just paused. * Update the "did the scan flags change whilst the driver was called" logic to check for canceled scans, not interrupted scans. * The "scan done" logic now explicitly checks for either interrupted or completed scans. This accounts for the situation where a scan is being aborted via traffic but it ALSO happens to have finished (ie the last channel was checked.) This doesn't ENTIRELY fix scanning as the resume function is broken due to incorrect ticks math. Thus, the second half of this patch changes the ieee80211_ticks_*() macros to use int instead of long, matching the logic that the TCP code does with ticks and handles wrapping / negative ticks values. If cast to long then the wrapping math wouldn't work right (ie, if ticks was actually negative, ie, after the system has been up for a while.) This allows contbgscan() to correctly calculate if a scan should continue based on ticks and ic->ic_lastdata . Reviewed by: bz Differential Revision: https://reviews.freebsd.org/D25031 Modified: head/sys/net80211/ieee80211_freebsd.h head/sys/net80211/ieee80211_scan_sw.c Modified: head/sys/net80211/ieee80211_freebsd.h ============================================================================== --- head/sys/net80211/ieee80211_freebsd.h Wed May 27 18:26:10 2020 (r361559) +++ head/sys/net80211/ieee80211_freebsd.h Wed May 27 18:32:12 2020 (r361560) @@ -254,9 +254,9 @@ void ieee80211_vap_destroy(struct ieee80211vap *); #define ticks_to_msecs(t) TICKS_2_MSEC(t) #define ticks_to_secs(t) ((t) / hz) -#define ieee80211_time_after(a,b) ((long)(b) - (long)(a) < 0) +#define ieee80211_time_after(a,b) ((int)(b) - (int)(a) < 0) #define ieee80211_time_before(a,b) ieee80211_time_after(b,a) -#define ieee80211_time_after_eq(a,b) ((long)(a) - (long)(b) >= 0) +#define ieee80211_time_after_eq(a,b) ((int)(a) - (int)(b) >= 0) #define ieee80211_time_before_eq(a,b) ieee80211_time_after_eq(b,a) struct mbuf *ieee80211_getmgtframe(uint8_t **frm, int headroom, int pktlen); Modified: head/sys/net80211/ieee80211_scan_sw.c ============================================================================== --- head/sys/net80211/ieee80211_scan_sw.c Wed May 27 18:26:10 2020 (r361559) +++ head/sys/net80211/ieee80211_scan_sw.c Wed May 27 18:32:12 2020 (r361560) @@ -675,19 +675,32 @@ scan_curchan_task(void *arg, int pending) struct ieee80211com *ic = ss->ss_ic; struct ieee80211_channel *chan; unsigned long maxdwell; - int scandone; + int scandone, scanstop; IEEE80211_LOCK(ic); end: + /* + * Note: only /end/ the scan if we're CANCEL rather than + * CANCEL+INTERRUPT (ie, 'PAUSE'). + * + * We can stop the scan if we hit cancel, but we shouldn't + * call scan_end(ss, 1) if we're just PAUSEing the scan. + */ scandone = (ss->ss_next >= ss->ss_last) || - (ss_priv->ss_iflags & ISCAN_CANCEL) != 0; + ((ss_priv->ss_iflags & ISCAN_PAUSE) == ISCAN_CANCEL); + scanstop = (ss->ss_next >= ss->ss_last) || + ((ss_priv->ss_iflags & ISCAN_CANCEL) != 0); IEEE80211_DPRINTF(ss->ss_vap, IEEE80211_MSG_SCAN, - "%s: loop start; scandone=%d\n", + "%s: loop start; scandone=%d, scanstop=%d, ss_iflags=0x%x, ss_next=%u, ss_last=%u\n", __func__, - scandone); + scandone, + scanstop, + (uint32_t) ss_priv->ss_iflags, + (uint32_t) ss->ss_next, + (uint32_t) ss->ss_last); - if (scandone || (ss->ss_flags & IEEE80211_SCAN_GOTPICK) || + if (scanstop || (ss->ss_flags & IEEE80211_SCAN_GOTPICK) || (ss_priv->ss_iflags & ISCAN_ABORT) || ieee80211_time_after(ticks + ss->ss_mindwell, ss_priv->ss_scanend)) { ss_priv->ss_iflags &= ~ISCAN_RUNNING; @@ -787,11 +800,12 @@ scan_end(struct ieee80211_scan_state *ss, int scandone * Since a cancellation may have occurred during one of the * driver calls (whilst unlocked), update scandone. */ - if (scandone == 0 && (ss_priv->ss_iflags & ISCAN_CANCEL) != 0) { + if ((scandone == 0) && ((ss_priv->ss_iflags & ISCAN_PAUSE) == ISCAN_CANCEL)) { /* XXX printf? */ if_printf(vap->iv_ifp, - "%s: OOPS! scan cancelled during driver call (1)!\n", - __func__); + "%s: OOPS! scan cancelled during driver call (1) (ss_iflags=0x%x)!\n", + __func__, + ss_priv->ss_iflags); scandone = 1; } @@ -856,11 +870,12 @@ scan_end(struct ieee80211_scan_state *ss, int scandone * Since a cancellation may have occurred during one of the * driver calls (whilst unlocked), update scandone. */ - if (scandone == 0 && (ss_priv->ss_iflags & ISCAN_CANCEL) != 0) { + if (scandone == 0 && (ss_priv->ss_iflags & ISCAN_PAUSE) == ISCAN_CANCEL) { /* XXX printf? */ if_printf(vap->iv_ifp, - "%s: OOPS! scan cancelled during driver call (2)!\n", - __func__); + "%s: OOPS! scan cancelled during driver call (2) (ss_iflags=0x%x)!\n", + __func__, + ss_priv->ss_iflags); scandone = 1; } @@ -900,11 +915,18 @@ scan_done(struct ieee80211_scan_state *ss, int scandon */ if ((vap->iv_flags_ext & IEEE80211_FEXT_SCAN_OFFLOAD) == 0) vap->iv_sta_ps(vap, 0); - if (ss->ss_next >= ss->ss_last) + if (ss->ss_next >= ss->ss_last) { + IEEE80211_DPRINTF(vap, IEEE80211_MSG_SCAN, + "%s: Dropping out of scan; ss_next=%u, ss_last=%u\n", + __func__, + (uint32_t) ss->ss_next, + (uint32_t) ss->ss_last); ic->ic_flags_ext &= ~IEEE80211_FEXT_BGSCAN; + } /* send 'scan done' event if not interrupted due to traffic. */ - if (!(ss_priv->ss_iflags & ISCAN_INTERRUPT)) + if (!(ss_priv->ss_iflags & ISCAN_INTERRUPT) || + (ss->ss_next >= ss->ss_last)) ieee80211_notify_scan_done(vap); } ss_priv->ss_iflags &= ~(ISCAN_PAUSE | ISCAN_ABORT); From owner-svn-src-all@freebsd.org Wed May 27 18:55:25 2020 Return-Path: Delivered-To: svn-src-all@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 DC9B22CBEA7; Wed, 27 May 2020 18:55:25 +0000 (UTC) (envelope-from kib@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49XKld5bdlz3g64; Wed, 27 May 2020 18:55:25 +0000 (UTC) (envelope-from kib@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 BB4FF196DC; Wed, 27 May 2020 18:55:25 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04RItPKU079071; Wed, 27 May 2020 18:55:25 GMT (envelope-from kib@FreeBSD.org) Received: (from kib@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04RItOaV079065; Wed, 27 May 2020 18:55:24 GMT (envelope-from kib@FreeBSD.org) Message-Id: <202005271855.04RItOaV079065@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kib set sender to kib@FreeBSD.org using -f From: Konstantin Belousov Date: Wed, 27 May 2020 18:55:24 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org Subject: svn commit: r361561 - in stable/11/sys: amd64/amd64 i386/i386 x86/include x86/x86 X-SVN-Group: stable-11 X-SVN-Commit-Author: kib X-SVN-Commit-Paths: in stable/11/sys: amd64/amd64 i386/i386 x86/include x86/x86 X-SVN-Commit-Revision: 361561 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2020 18:55:25 -0000 Author: kib Date: Wed May 27 18:55:24 2020 New Revision: 361561 URL: https://svnweb.freebsd.org/changeset/base/361561 Log: MFC r361302: amd64: Add a knob to flush RSB on context switches if machine has SMEP. Modified: stable/11/sys/amd64/amd64/cpu_switch.S stable/11/sys/amd64/amd64/initcpu.c stable/11/sys/amd64/amd64/support.S stable/11/sys/i386/i386/support.s stable/11/sys/x86/include/x86_var.h stable/11/sys/x86/x86/cpu_machdep.c Directory Properties: stable/11/ (props changed) Modified: stable/11/sys/amd64/amd64/cpu_switch.S ============================================================================== --- stable/11/sys/amd64/amd64/cpu_switch.S Wed May 27 18:32:12 2020 (r361560) +++ stable/11/sys/amd64/amd64/cpu_switch.S Wed May 27 18:55:24 2020 (r361561) @@ -235,6 +235,8 @@ done_load_dr: movq %rax,(%rsp) movq PCPU(CURTHREAD),%rdi call fpu_activate_sw + cmpb $0,cpu_flush_rsb_ctxsw(%rip) + jne rsb_flush ret /* Modified: stable/11/sys/amd64/amd64/initcpu.c ============================================================================== --- stable/11/sys/amd64/amd64/initcpu.c Wed May 27 18:32:12 2020 (r361560) +++ stable/11/sys/amd64/amd64/initcpu.c Wed May 27 18:55:24 2020 (r361561) @@ -232,13 +232,27 @@ initializecpu(void) cr4 |= CR4_FSGSBASE; /* + * If SMEP is present, we only need to flush RSB (by default) + * on context switches, to prevent cross-process ret2spec + * attacks. Do it automatically if ibrs_disable is set, to + * complete the mitigation. + * * Postpone enabling the SMEP on the boot CPU until the page * tables are switched from the boot loader identity mapping * to the kernel tables. The boot loader enables the U bit in * its tables. */ - if (!IS_BSP() && (cpu_stdext_feature & CPUID_STDEXT_SMEP)) - cr4 |= CR4_SMEP; + if (IS_BSP()) { + if (cpu_stdext_feature & CPUID_STDEXT_SMEP && + !TUNABLE_INT_FETCH( + "machdep.mitigations.cpu_flush_rsb_ctxsw", + &cpu_flush_rsb_ctxsw) && + hw_ibrs_disable) + cpu_flush_rsb_ctxsw = 1; + } else { + if (cpu_stdext_feature & CPUID_STDEXT_SMEP) + cr4 |= CR4_SMEP; + } load_cr4(cr4); if ((amd_feature & AMDID_NX) != 0) { msr = rdmsr(MSR_EFER) | EFER_NXE; Modified: stable/11/sys/amd64/amd64/support.S ============================================================================== --- stable/11/sys/amd64/amd64/support.S Wed May 27 18:32:12 2020 (r361560) +++ stable/11/sys/amd64/amd64/support.S Wed May 27 18:55:24 2020 (r361561) @@ -832,23 +832,27 @@ ENTRY(pmap_pti_pcid_invlrng) retq .altmacro - .macro ibrs_seq_label l -handle_ibrs_\l: + .macro rsb_seq_label l +rsb_seq_\l: .endm - .macro ibrs_call_label l - call handle_ibrs_\l + .macro rsb_call_label l + call rsb_seq_\l .endm - .macro ibrs_seq count + .macro rsb_seq count ll=1 .rept \count - ibrs_call_label %(ll) + rsb_call_label %(ll) nop - ibrs_seq_label %(ll) + rsb_seq_label %(ll) addq $8,%rsp ll=ll+1 .endr .endm +ENTRY(rsb_flush) + rsb_seq 32 + ret + /* all callers already saved %rax, %rdx, and %rcx */ ENTRY(handle_ibrs_entry) cmpb $0,hw_ibrs_ibpb_active(%rip) @@ -860,8 +864,7 @@ ENTRY(handle_ibrs_entry) wrmsr movb $1,PCPU(IBPB_SET) testl $CPUID_STDEXT_SMEP,cpu_stdext_feature(%rip) - jne 1f - ibrs_seq 32 + je rsb_flush 1: ret END(handle_ibrs_entry) Modified: stable/11/sys/i386/i386/support.s ============================================================================== --- stable/11/sys/i386/i386/support.s Wed May 27 18:32:12 2020 (r361560) +++ stable/11/sys/i386/i386/support.s Wed May 27 18:55:24 2020 (r361561) @@ -819,8 +819,30 @@ msr_onfault: movl $EFAULT,%eax ret -ENTRY(handle_ibrs_entry) + .altmacro + .macro rsb_seq_label l +rsb_seq_\l: + .endm + .macro rsb_call_label l + call rsb_seq_\l + .endm + .macro rsb_seq count + ll=1 + .rept \count + rsb_call_label %(ll) + nop + rsb_seq_label %(ll) + addl $4,%esp + ll=ll+1 + .endr + .endm + +ENTRY(rsb_flush) + rsb_seq 32 ret + +ENTRY(handle_ibrs_entry) + jmp rsb_flush END(handle_ibrs_entry) ENTRY(handle_ibrs_exit) Modified: stable/11/sys/x86/include/x86_var.h ============================================================================== --- stable/11/sys/x86/include/x86_var.h Wed May 27 18:32:12 2020 (r361560) +++ stable/11/sys/x86/include/x86_var.h Wed May 27 18:55:24 2020 (r361561) @@ -86,6 +86,7 @@ extern int hw_ibrs_ibpb_active; extern int hw_mds_disable; extern int hw_ssb_active; extern int x86_taa_enable; +extern int cpu_flush_rsb_ctxsw; struct pcb; struct thread; Modified: stable/11/sys/x86/x86/cpu_machdep.c ============================================================================== --- stable/11/sys/x86/x86/cpu_machdep.c Wed May 27 18:32:12 2020 (r361560) +++ stable/11/sys/x86/x86/cpu_machdep.c Wed May 27 18:55:24 2020 (r361561) @@ -1360,3 +1360,7 @@ SYSCTL_PROC(_machdep_mitigations_taa, OID_AUTO, state, sysctl_taa_state_handler, "A", "TAA Mitigation state"); +int __read_frequently cpu_flush_rsb_ctxsw; +SYSCTL_INT(_machdep_mitigations, OID_AUTO, flush_rsb_ctxsw, + CTLFLAG_RW | CTLFLAG_NOFETCH, &cpu_flush_rsb_ctxsw, 0, + "Flush Return Stack Buffer on context switch"); From owner-svn-src-all@freebsd.org Wed May 27 19:13:26 2020 Return-Path: Delivered-To: svn-src-all@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 D68F62CC6E5; Wed, 27 May 2020 19:13:26 +0000 (UTC) (envelope-from asomers@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49XL8Q5QkZz3yl9; Wed, 27 May 2020 19:13:26 +0000 (UTC) (envelope-from asomers@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 B593A19942; Wed, 27 May 2020 19:13:26 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04RJDQA9091676; Wed, 27 May 2020 19:13:26 GMT (envelope-from asomers@FreeBSD.org) Received: (from asomers@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04RJDQic091675; Wed, 27 May 2020 19:13:26 GMT (envelope-from asomers@FreeBSD.org) Message-Id: <202005271913.04RJDQic091675@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: asomers set sender to asomers@FreeBSD.org using -f From: Alan Somers Date: Wed, 27 May 2020 19:13:26 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361562 - head/sys/geom/eli X-SVN-Group: head X-SVN-Commit-Author: asomers X-SVN-Commit-Paths: head/sys/geom/eli X-SVN-Commit-Revision: 361562 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2020 19:13:26 -0000 Author: asomers Date: Wed May 27 19:13:26 2020 New Revision: 361562 URL: https://svnweb.freebsd.org/changeset/base/361562 Log: geli: fix a livelock during panic During any kind of shutdown, kern_reboot calls geli's pre_sync event hook, which tries to destroy all unused geli devices. But during a panic, geli can't destroy any devices, because the scheduler is stopped, so it can't switch threads. A livelock results, and the system never dumps core. This commit fixes the problem by refusing to destroy any devices during panic, used or otherwise. PR: 246207 Reviewed by: jhb MFC after: 2 weeks Sponsored by: Axcient Differential Revision: https://reviews.freebsd.org/D24697 Modified: head/sys/geom/eli/g_eli.c Modified: head/sys/geom/eli/g_eli.c ============================================================================== --- head/sys/geom/eli/g_eli.c Wed May 27 18:55:24 2020 (r361561) +++ head/sys/geom/eli/g_eli.c Wed May 27 19:13:26 2020 (r361562) @@ -1416,11 +1416,13 @@ g_eli_shutdown_pre_sync(void *arg, int howto) continue; pp = LIST_FIRST(&gp->provider); KASSERT(pp != NULL, ("No provider? gp=%p (%s)", gp, gp->name)); - if (pp->acr + pp->acw + pp->ace == 0) - error = g_eli_destroy(sc, TRUE); - else { + if (pp->acr != 0 || pp->acw != 0 || pp->ace != 0 || + SCHEDULER_STOPPED()) + { sc->sc_flags |= G_ELI_FLAG_RW_DETACH; gp->access = g_eli_access; + } else { + error = g_eli_destroy(sc, TRUE); } } g_topology_unlock(); From owner-svn-src-all@freebsd.org Wed May 27 21:44:27 2020 Return-Path: Delivered-To: svn-src-all@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 079C32F0724; Wed, 27 May 2020 21:44:27 +0000 (UTC) (envelope-from kib@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49XPVf6Stsz4Cnp; Wed, 27 May 2020 21:44:26 +0000 (UTC) (envelope-from kib@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 D956B1BB0A; Wed, 27 May 2020 21:44:26 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04RLiQ64084972; Wed, 27 May 2020 21:44:26 GMT (envelope-from kib@FreeBSD.org) Received: (from kib@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04RLiQTZ084971; Wed, 27 May 2020 21:44:26 GMT (envelope-from kib@FreeBSD.org) Message-Id: <202005272144.04RLiQTZ084971@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kib set sender to kib@FreeBSD.org using -f From: Konstantin Belousov Date: Wed, 27 May 2020 21:44:26 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361563 - head/sys/vm X-SVN-Group: head X-SVN-Commit-Author: kib X-SVN-Commit-Paths: head/sys/vm X-SVN-Commit-Revision: 361563 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2020 21:44:27 -0000 Author: kib Date: Wed May 27 21:44:26 2020 New Revision: 361563 URL: https://svnweb.freebsd.org/changeset/base/361563 Log: Simplify the condition to enable superpage mappings in vm_fault_soft_fast(). The list of arches list there matches the list of arches where default VM_NRESERVLEVEL > 0. Before sparc64 removal, that was the only arch that defined VM_NRESERVLEVEL > 0 to help with cache coloring, but did not implemented superpages. Now it can be simplified. Submitted by: alc Reviewed by: markj Modified: head/sys/vm/vm_fault.c Modified: head/sys/vm/vm_fault.c ============================================================================== --- head/sys/vm/vm_fault.c Wed May 27 19:13:26 2020 (r361562) +++ head/sys/vm/vm_fault.c Wed May 27 21:44:26 2020 (r361563) @@ -299,9 +299,7 @@ static int vm_fault_soft_fast(struct faultstate *fs) { vm_page_t m, m_map; -#if (defined(__aarch64__) || defined(__amd64__) || (defined(__arm__) && \ - __ARM_ARCH >= 6) || defined(__i386__) || defined(__powerpc64__) || \ - defined(__riscv)) && VM_NRESERVLEVEL > 0 +#if VM_NRESERVLEVEL > 0 vm_page_t m_super; int flags; #endif @@ -320,9 +318,7 @@ vm_fault_soft_fast(struct faultstate *fs) } m_map = m; psind = 0; -#if (defined(__aarch64__) || defined(__amd64__) || (defined(__arm__) && \ - __ARM_ARCH >= 6) || defined(__i386__) || defined(__powerpc64__) || \ - defined(__riscv)) && VM_NRESERVLEVEL > 0 +#if VM_NRESERVLEVEL > 0 if ((m->flags & PG_FICTITIOUS) == 0 && (m_super = vm_reserv_to_superpage(m)) != NULL && rounddown2(vaddr, pagesizes[m_super->psind]) >= fs->entry->start && From owner-svn-src-all@freebsd.org Wed May 27 21:56:46 2020 Return-Path: Delivered-To: svn-src-all@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 DB2EB2F0E06; Wed, 27 May 2020 21:56:46 +0000 (UTC) (envelope-from kib@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49XPmt5Pp2z4Dpk; Wed, 27 May 2020 21:56:46 +0000 (UTC) (envelope-from kib@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 B058D1BB96; Wed, 27 May 2020 21:56:46 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04RLukbb091470; Wed, 27 May 2020 21:56:46 GMT (envelope-from kib@FreeBSD.org) Received: (from kib@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04RLujAJ091465; Wed, 27 May 2020 21:56:45 GMT (envelope-from kib@FreeBSD.org) Message-Id: <202005272156.04RLujAJ091465@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kib set sender to kib@FreeBSD.org using -f From: Konstantin Belousov Date: Wed, 27 May 2020 21:56:45 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org Subject: svn commit: r361564 - in stable/12: cddl/contrib/opensolaris/lib/libdtrace/common lib/libc/gen libexec/rtld-elf sys/sys X-SVN-Group: stable-12 X-SVN-Commit-Author: kib X-SVN-Commit-Paths: in stable/12: cddl/contrib/opensolaris/lib/libdtrace/common lib/libc/gen libexec/rtld-elf sys/sys X-SVN-Commit-Revision: 361564 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2020 21:56:46 -0000 Author: kib Date: Wed May 27 21:56:45 2020 New Revision: 361564 URL: https://svnweb.freebsd.org/changeset/base/361564 Log: MFC r361303, r361349, r361394, r361398, r361537: Change link_map::l_addr to mean load offset in ABI-compatible way. Add link_map::l_refname. Add rtld feature indicators. Modified: stable/12/cddl/contrib/opensolaris/lib/libdtrace/common/drti.c stable/12/lib/libc/gen/dlinfo.3 stable/12/libexec/rtld-elf/Symbol.map stable/12/libexec/rtld-elf/rtld.1 stable/12/libexec/rtld-elf/rtld.c stable/12/sys/sys/link_elf.h Directory Properties: stable/12/ (props changed) Modified: stable/12/cddl/contrib/opensolaris/lib/libdtrace/common/drti.c ============================================================================== --- stable/12/cddl/contrib/opensolaris/lib/libdtrace/common/drti.c Wed May 27 21:44:26 2020 (r361563) +++ stable/12/cddl/contrib/opensolaris/lib/libdtrace/common/drti.c Wed May 27 21:56:45 2020 (r361564) @@ -143,12 +143,18 @@ dtrace_dof_init(void) return; } +#ifdef __FreeBSD__ + elf = (void *)lmp->l_base; +#else elf = (void *)lmp->l_addr; +#endif dh.dofhp_dof = (uintptr_t)dof; - dh.dofhp_addr = elf->e_type == ET_DYN ? (uintptr_t) lmp->l_addr : 0; #ifdef __FreeBSD__ + dh.dofhp_addr = elf->e_type == ET_DYN ? (uintptr_t) lmp->l_base : 0; dh.dofhp_pid = getpid(); +#else + dh.dofhp_addr = elf->e_type == ET_DYN ? (uintptr_t) lmp->l_addr : 0; #endif if (lmid == 0) { Modified: stable/12/lib/libc/gen/dlinfo.3 ============================================================================== --- stable/12/lib/libc/gen/dlinfo.3 Wed May 27 21:44:26 2020 (r361563) +++ stable/12/lib/libc/gen/dlinfo.3 Wed May 27 21:56:45 2020 (r361564) @@ -25,7 +25,7 @@ .\" .\" $FreeBSD$ .\" -.Dd February 14, 2003 +.Dd May 21, 2020 .Dt DLINFO 3 .Os .Sh NAME @@ -105,14 +105,16 @@ structure is defined in .In link.h and has the following members: .Bd -literal -offset indent -caddr_t l_addr; /* Base Address of library */ +caddr_t l_base; /* Base Address of library */ const char *l_name; /* Absolute Path to Library */ const void *l_ld; /* Pointer to .dynamic in memory */ struct link_map *l_next, /* linked list of mapped libs */ *l_prev; +caddr_t l_addr; /* Load Offset of library */ +const char *l_refname; /* Object this one filters for */ .Ed .Bl -tag -width ".Va l_addr" -.It Va l_addr +.It Va l_base The base address of the object loaded into memory. .It Va l_name The full name of the loaded shared object. @@ -128,6 +130,15 @@ structure on the link-map list. The previous .Vt Link_map structure on the link-map list. +.It Va l_addr +The load offset of the object, that is, the difference between +the actual load address and the base virtual address the object +was linked at. +.It Va l_refname +A name of the object this object filters for, if any. +If there are more then one filtee, a name from the first +.Dv DT_FILTER +dynamic entry is supplied. .El .It Dv RTLD_DI_SERINFO Retrieve the library search paths associated with the given Modified: stable/12/libexec/rtld-elf/Symbol.map ============================================================================== --- stable/12/libexec/rtld-elf/Symbol.map Wed May 27 21:44:26 2020 (r361563) +++ stable/12/libexec/rtld-elf/Symbol.map Wed May 27 21:56:45 2020 (r361564) @@ -32,4 +32,6 @@ FBSDprivate_1.0 { _rtld_get_stack_prot; _rtld_is_dlopened; _r_debug_postinit; + _rtld_version__FreeBSD_version; + _rtld_version_laddr_offset; }; Modified: stable/12/libexec/rtld-elf/rtld.1 ============================================================================== --- stable/12/libexec/rtld-elf/rtld.1 Wed May 27 21:44:26 2020 (r361563) +++ stable/12/libexec/rtld-elf/rtld.1 Wed May 27 21:56:45 2020 (r361564) @@ -355,6 +355,54 @@ ignores and is naturally prone to race conditions. Environments which rely on such restrictions are weak and breakable on their own. +.Sh VERSIONING +Newer +.Nm +might provide some features or changes in runtime behavior that cannot be +easily detected at runtime by checking of the normal exported symbols. +Note that it is almost always wrong to verify +.Dv __FreeBSD_version +in userspace to detect features, either at compile or at run time, +because either kernel, or libc, or environment variables could not +match the running +.Nm . +.Pp +To solve the problem, +.Nm +exports some feature indicators in the +.Fx +private symbols namespace +.Dv FBSDprivate_1.0 . +Symbols start with the +.Dv _rtld_version +prefix. +Current list of defined symbols and corresponding features is: +.Bl -tag -width indent +.It Dv _rtld_version__FreeBSD_version +Symbol exports the value of the +.Dv __FreeBSD_version +definition as it was provided during the +.Nm +build. +The symbol is always present since the +.Dv _rtld_version +facility was introduced. +.It Dv _rtld_version_laddr_offset +The +.Va l_addr +member of the +.Vt link_map +structure contains the load offset of the shared object. +Before that, +.Va l_addr +contained the base address of the library. +See +.Xr dlinfo 3 . +.Pp +Also it indicates the presence of +.Va l_refname +member of the structure. +.El .Sh FILES .Bl -tag -width ".Pa /var/run/ld-elf32.so.hints" -compact .It Pa /var/run/ld-elf.so.hints @@ -369,6 +417,7 @@ The libmap configuration file for 32-bit binaries on 6 .Sh SEE ALSO .Xr ld 1 , .Xr ldd 1 , +.Xr dlinfo 3 , .Xr capsicum 4 , .Xr elf 5 , .Xr libmap.conf 5 , Modified: stable/12/libexec/rtld-elf/rtld.c ============================================================================== --- stable/12/libexec/rtld-elf/rtld.c Wed May 27 21:44:26 2020 (r361563) +++ stable/12/libexec/rtld-elf/rtld.c Wed May 27 21:56:45 2020 (r361564) @@ -1171,6 +1171,9 @@ digest_dynamic1(Obj_Entry *obj, int early, const Elf_D *needed_filtees_tail = nep; needed_filtees_tail = &nep->next; + + if (obj->linkmap.l_refname == NULL) + obj->linkmap.l_refname = (char *)dynp->d_un.d_val; } break; @@ -1353,6 +1356,10 @@ digest_dynamic1(Obj_Entry *obj, int early, const Elf_D } obj->dynsymcount += obj->symndx_gnu; } + + if (obj->linkmap.l_refname != NULL) + obj->linkmap.l_refname = obj->strtab + (unsigned long)obj-> + linkmap.l_refname; } static bool @@ -3981,52 +3988,50 @@ rtld_dirname_abs(const char *path, char *base) static void linkmap_add(Obj_Entry *obj) { - struct link_map *l = &obj->linkmap; - struct link_map *prev; + struct link_map *l, *prev; - obj->linkmap.l_name = obj->path; - obj->linkmap.l_addr = obj->mapbase; - obj->linkmap.l_ld = obj->dynamic; -#ifdef __mips__ - /* GDB needs load offset on MIPS to use the symbols */ - obj->linkmap.l_offs = obj->relocbase; -#endif + l = &obj->linkmap; + l->l_name = obj->path; + l->l_base = obj->mapbase; + l->l_ld = obj->dynamic; + l->l_addr = obj->relocbase; - if (r_debug.r_map == NULL) { - r_debug.r_map = l; - return; - } + if (r_debug.r_map == NULL) { + r_debug.r_map = l; + return; + } - /* - * Scan to the end of the list, but not past the entry for the - * dynamic linker, which we want to keep at the very end. - */ - for (prev = r_debug.r_map; - prev->l_next != NULL && prev->l_next != &obj_rtld.linkmap; - prev = prev->l_next) - ; + /* + * Scan to the end of the list, but not past the entry for the + * dynamic linker, which we want to keep at the very end. + */ + for (prev = r_debug.r_map; + prev->l_next != NULL && prev->l_next != &obj_rtld.linkmap; + prev = prev->l_next) + ; - /* Link in the new entry. */ - l->l_prev = prev; - l->l_next = prev->l_next; - if (l->l_next != NULL) - l->l_next->l_prev = l; - prev->l_next = l; + /* Link in the new entry. */ + l->l_prev = prev; + l->l_next = prev->l_next; + if (l->l_next != NULL) + l->l_next->l_prev = l; + prev->l_next = l; } static void linkmap_delete(Obj_Entry *obj) { - struct link_map *l = &obj->linkmap; + struct link_map *l; - if (l->l_prev == NULL) { - if ((r_debug.r_map = l->l_next) != NULL) - l->l_next->l_prev = NULL; - return; - } + l = &obj->linkmap; + if (l->l_prev == NULL) { + if ((r_debug.r_map = l->l_next) != NULL) + l->l_next->l_prev = NULL; + return; + } - if ((l->l_prev->l_next = l->l_next) != NULL) - l->l_next->l_prev = l->l_prev; + if ((l->l_prev->l_next = l->l_next) != NULL) + l->l_next->l_prev = l->l_prev; } /* @@ -5775,3 +5780,9 @@ realloc(void *cp, size_t nbytes) return (__crt_realloc(cp, nbytes)); } + +extern int _rtld_version__FreeBSD_version __exported; +int _rtld_version__FreeBSD_version = __FreeBSD_version; + +extern char _rtld_version_laddr_offset __exported; +char _rtld_version_laddr_offset; Modified: stable/12/sys/sys/link_elf.h ============================================================================== --- stable/12/sys/sys/link_elf.h Wed May 27 21:44:26 2020 (r361563) +++ stable/12/sys/sys/link_elf.h Wed May 27 21:56:45 2020 (r361564) @@ -57,13 +57,15 @@ #define LA_SER_SECURE 0x80 /* default (secure) path prepended */ typedef struct link_map { - caddr_t l_addr; /* Base Address of library */ + caddr_t l_base; /* Base Address of library */ #ifdef __mips__ - caddr_t l_offs; /* Load Offset of library */ + caddr_t l_xxx; /* unused */ #endif const char *l_name; /* Absolute Path to Library */ const void *l_ld; /* Pointer to .dynamic in memory */ struct link_map *l_next, *l_prev; /* linked list of of mapped libs */ + caddr_t l_addr; /* Load Offset of library */ + const char *l_refname; /* object we are filtering for */ } Link_map; struct r_debug { From owner-svn-src-all@freebsd.org Wed May 27 22:34:47 2020 Return-Path: Delivered-To: svn-src-all@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 6FD642F1DE6; Wed, 27 May 2020 22:34:47 +0000 (UTC) (envelope-from rscheff@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49XQcl2Pg6z4Hs7; Wed, 27 May 2020 22:34:47 +0000 (UTC) (envelope-from rscheff@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 4DBFC1BEF5; Wed, 27 May 2020 22:34:47 +0000 (UTC) (envelope-from rscheff@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04RMYlFk016808; Wed, 27 May 2020 22:34:47 GMT (envelope-from rscheff@FreeBSD.org) Received: (from rscheff@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04RMYkuZ016806; Wed, 27 May 2020 22:34:46 GMT (envelope-from rscheff@FreeBSD.org) Message-Id: <202005272234.04RMYkuZ016806@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: rscheff set sender to rscheff@FreeBSD.org using -f From: Richard Scheffenegger Date: Wed, 27 May 2020 22:34:46 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-releng@freebsd.org Subject: svn commit: r361565 - releng/11.4/sys/netinet X-SVN-Group: releng X-SVN-Commit-Author: rscheff X-SVN-Commit-Paths: releng/11.4/sys/netinet X-SVN-Commit-Revision: 361565 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2020 22:34:47 -0000 Author: rscheff Date: Wed May 27 22:34:46 2020 New Revision: 361565 URL: https://svnweb.freebsd.org/changeset/base/361565 Log: MFS r361436: MFC r361347: With RFC3168 ECN, CWR SHOULD only be sent with new data. Overly conservative data receivers may ignore the CWR flag on other packets, and keep ECE latched. This can result in continuous reduction of the congestion window, and very poor performance when ECN is enabled. This does NOT contain the merge of the change to RACK since at this time that code does not exist in stable/11, and there is no plan to merge RACK to stable/11. PR: 243590 Reviewed by: rgrimes (mentor), rrs Approved by: re(gjb) Sponsored by: NetApp, Inc. Differential Revision: https://reviews.freebsd.org/D23364 Modified: releng/11.4/sys/netinet/tcp_input.c releng/11.4/sys/netinet/tcp_output.c Directory Properties: releng/11.4/ (props changed) Modified: releng/11.4/sys/netinet/tcp_input.c ============================================================================== --- releng/11.4/sys/netinet/tcp_input.c Wed May 27 21:56:45 2020 (r361564) +++ releng/11.4/sys/netinet/tcp_input.c Wed May 27 22:34:46 2020 (r361565) @@ -417,9 +417,15 @@ cc_cong_signal(struct tcpcb *tp, struct tcphdr *th, ui } break; case CC_ECN: - if (!IN_CONGRECOVERY(tp->t_flags)) { + if (!IN_CONGRECOVERY(tp->t_flags) || + /* + * Allow ECN reaction on ACK to CWR, if + * that data segment was also CE marked. + */ + SEQ_GEQ(th->th_ack, tp->snd_recover)) { + EXIT_CONGRECOVERY(tp->t_flags); TCPSTAT_INC(tcps_ecn_rcwnd); - tp->snd_recover = tp->snd_max; + tp->snd_recover = tp->snd_max + 1; if (tp->t_flags & TF_ECN_PERMIT) tp->t_flags |= TF_ECN_SND_CWR; } Modified: releng/11.4/sys/netinet/tcp_output.c ============================================================================== --- releng/11.4/sys/netinet/tcp_output.c Wed May 27 21:56:45 2020 (r361564) +++ releng/11.4/sys/netinet/tcp_output.c Wed May 27 22:34:46 2020 (r361565) @@ -1161,7 +1161,8 @@ send: * Ignore pure ack packets, retransmissions and window probes. */ if (len > 0 && SEQ_GEQ(tp->snd_nxt, tp->snd_max) && - !((tp->t_flags & TF_FORCEDATA) && len == 1)) { + !((tp->t_flags & TF_FORCEDATA) && len == 1 && + SEQ_LT(tp->snd_una, tp->snd_max))) { #ifdef INET6 if (isipv6) ip6->ip6_flow |= htonl(IPTOS_ECN_ECT0 << 20); @@ -1169,15 +1170,15 @@ send: #endif ip->ip_tos |= IPTOS_ECN_ECT0; TCPSTAT_INC(tcps_ecn_ect0); + /* + * Reply with proper ECN notifications. + * Only set CWR on new data segments. + */ + if (tp->t_flags & TF_ECN_SND_CWR) { + flags |= TH_CWR; + tp->t_flags &= ~TF_ECN_SND_CWR; + } } - - /* - * Reply with proper ECN notifications. - */ - if (tp->t_flags & TF_ECN_SND_CWR) { - flags |= TH_CWR; - tp->t_flags &= ~TF_ECN_SND_CWR; - } if (tp->t_flags & TF_ECN_SND_ECE) flags |= TH_ECE; } From owner-svn-src-all@freebsd.org Wed May 27 22:48:34 2020 Return-Path: Delivered-To: svn-src-all@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 B8FFC2F23D7; Wed, 27 May 2020 22:48:34 +0000 (UTC) (envelope-from adrian@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49XQwf4FLWz4JWt; Wed, 27 May 2020 22:48:34 +0000 (UTC) (envelope-from adrian@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 8CF651C3A2; Wed, 27 May 2020 22:48:34 +0000 (UTC) (envelope-from adrian@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04RMmYdd023712; Wed, 27 May 2020 22:48:34 GMT (envelope-from adrian@FreeBSD.org) Received: (from adrian@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04RMmYYS023711; Wed, 27 May 2020 22:48:34 GMT (envelope-from adrian@FreeBSD.org) Message-Id: <202005272248.04RMmYYS023711@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: adrian set sender to adrian@FreeBSD.org using -f From: Adrian Chadd Date: Wed, 27 May 2020 22:48:34 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361566 - head/sys/dev/ath/ath_rate/sample X-SVN-Group: head X-SVN-Commit-Author: adrian X-SVN-Commit-Paths: head/sys/dev/ath/ath_rate/sample X-SVN-Commit-Revision: 361566 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2020 22:48:34 -0000 Author: adrian Date: Wed May 27 22:48:34 2020 New Revision: 361566 URL: https://svnweb.freebsd.org/changeset/base/361566 Log: [ath] Update ath_rate_sample to use the same base type as ticks. Until net80211 grows a specific ticks type that matches the system, manually use the same type as the kernel/net80211 'ticks' type (signed int.) Tested: * AR9380, STA mode Modified: head/sys/dev/ath/ath_rate/sample/sample.h Modified: head/sys/dev/ath/ath_rate/sample/sample.h ============================================================================== --- head/sys/dev/ath/ath_rate/sample/sample.h Wed May 27 22:34:46 2020 (r361565) +++ head/sys/dev/ath/ath_rate/sample/sample.h Wed May 27 22:48:34 2020 (r361566) @@ -105,7 +105,7 @@ struct sample_node { int current_rix[NUM_PACKET_SIZE_BINS]; int packets_since_switch[NUM_PACKET_SIZE_BINS]; - unsigned ticks_since_switch[NUM_PACKET_SIZE_BINS]; + int ticks_since_switch[NUM_PACKET_SIZE_BINS]; int packets_since_sample[NUM_PACKET_SIZE_BINS]; unsigned sample_tt[NUM_PACKET_SIZE_BINS]; From owner-svn-src-all@freebsd.org Wed May 27 23:20:36 2020 Return-Path: Delivered-To: svn-src-all@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 8E7962F2CA6; Wed, 27 May 2020 23:20:36 +0000 (UTC) (envelope-from rmacklem@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49XRdc3DHrz4Lcs; Wed, 27 May 2020 23:20:36 +0000 (UTC) (envelope-from rmacklem@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 6A0C51C944; Wed, 27 May 2020 23:20:36 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04RNKat0041814; Wed, 27 May 2020 23:20:36 GMT (envelope-from rmacklem@FreeBSD.org) Received: (from rmacklem@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04RNKamd041813; Wed, 27 May 2020 23:20:36 GMT (envelope-from rmacklem@FreeBSD.org) Message-Id: <202005272320.04RNKamd041813@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: rmacklem set sender to rmacklem@FreeBSD.org using -f From: Rick Macklem Date: Wed, 27 May 2020 23:20:36 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361567 - head/sys/kern X-SVN-Group: head X-SVN-Commit-Author: rmacklem X-SVN-Commit-Paths: head/sys/kern X-SVN-Commit-Revision: 361567 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2020 23:20:36 -0000 Author: rmacklem Date: Wed May 27 23:20:35 2020 New Revision: 361567 URL: https://svnweb.freebsd.org/changeset/base/361567 Log: Fix sosend() for the case where mbufs are passed in while doing ktls. For kernel tls, sosend() needs to call ktls_frame() on the mbuf list to be sent. Without this patch, this was only done when sosend()'s arguments used a uio_iov and not when an mbuf list is passed in. At this time, sosend() is never called with an mbuf list argument when kernel tls is in use, but will be once nfs-over-tls has been incorporated into head. Reviewed by: gallatin, glebius Differential Revision: https://reviews.freebsd.org/D24674 Modified: head/sys/kern/uipc_socket.c Modified: head/sys/kern/uipc_socket.c ============================================================================== --- head/sys/kern/uipc_socket.c Wed May 27 22:48:34 2020 (r361566) +++ head/sys/kern/uipc_socket.c Wed May 27 23:20:35 2020 (r361567) @@ -1678,6 +1678,13 @@ restart: resid = 0; if (flags & MSG_EOR) top->m_flags |= M_EOR; +#ifdef KERN_TLS + if (tls != NULL) { + ktls_frame(top, tls, &tls_enq_cnt, + tls_rtype); + tls_rtype = TLS_RLTYPE_APP; + } +#endif } else { /* * Copy the data from userland into a mbuf From owner-svn-src-all@freebsd.org Thu May 28 00:49:03 2020 Return-Path: Delivered-To: svn-src-all@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 80D372F45FD; Thu, 28 May 2020 00:49:03 +0000 (UTC) (envelope-from bdragon@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49XTbg2rkmz4SZX; Thu, 28 May 2020 00:49:03 +0000 (UTC) (envelope-from bdragon@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 5D22B1D4E8; Thu, 28 May 2020 00:49:03 +0000 (UTC) (envelope-from bdragon@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04S0n3LH096938; Thu, 28 May 2020 00:49:03 GMT (envelope-from bdragon@FreeBSD.org) Received: (from bdragon@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04S0n3jS096937; Thu, 28 May 2020 00:49:03 GMT (envelope-from bdragon@FreeBSD.org) Message-Id: <202005280049.04S0n3jS096937@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: bdragon set sender to bdragon@FreeBSD.org using -f From: Brandon Bergren Date: Thu, 28 May 2020 00:49:03 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361568 - head/sys/powerpc/aim X-SVN-Group: head X-SVN-Commit-Author: bdragon X-SVN-Commit-Paths: head/sys/powerpc/aim X-SVN-Commit-Revision: 361568 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2020 00:49:03 -0000 Author: bdragon Date: Thu May 28 00:49:02 2020 New Revision: 361568 URL: https://svnweb.freebsd.org/changeset/base/361568 Log: [PowerPC] Fix radix crash when passing -1 from userspace Found by running libc tests with radix enabled. Detect unsigned integer wrapping with a postcondition. Note: Radix MMU is not enabled by default yet. Sponsored by: Tag1 Consulting, Inc. Modified: head/sys/powerpc/aim/mmu_radix.c Modified: head/sys/powerpc/aim/mmu_radix.c ============================================================================== --- head/sys/powerpc/aim/mmu_radix.c Wed May 27 23:20:35 2020 (r361567) +++ head/sys/powerpc/aim/mmu_radix.c Thu May 28 00:49:02 2020 (r361568) @@ -6000,7 +6000,8 @@ mmu_radix_kremove(vm_offset_t va) int mmu_radix_map_user_ptr(pmap_t pm, volatile const void *uaddr, void **kaddr, size_t ulen, size_t *klen) { - if ((uintptr_t)uaddr + ulen >= VM_MAXUSER_ADDRESS) + if ((uintptr_t)uaddr + ulen >= VM_MAXUSER_ADDRESS || + (uintptr_t)uaddr + ulen < (uintptr_t)uaddr) return (EFAULT); *kaddr = (void *)(uintptr_t)uaddr; From owner-svn-src-all@freebsd.org Thu May 28 01:53:36 2020 Return-Path: Delivered-To: svn-src-all@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 9EF122F8037; Thu, 28 May 2020 01:53:36 +0000 (UTC) (envelope-from kib@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49XW283hkGz4ZG8; Thu, 28 May 2020 01:53:36 +0000 (UTC) (envelope-from kib@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 79CE81E478; Thu, 28 May 2020 01:53:36 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04S1raRV039400; Thu, 28 May 2020 01:53:36 GMT (envelope-from kib@FreeBSD.org) Received: (from kib@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04S1rZBq039396; Thu, 28 May 2020 01:53:35 GMT (envelope-from kib@FreeBSD.org) Message-Id: <202005280153.04S1rZBq039396@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kib set sender to kib@FreeBSD.org using -f From: Konstantin Belousov Date: Thu, 28 May 2020 01:53:35 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org Subject: svn commit: r361569 - in stable/12: include lib/libc/gen X-SVN-Group: stable-12 X-SVN-Commit-Author: kib X-SVN-Commit-Paths: in stable/12: include lib/libc/gen X-SVN-Commit-Revision: 361569 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2020 01:53:36 -0000 Author: kib Date: Thu May 28 01:53:35 2020 New Revision: 361569 URL: https://svnweb.freebsd.org/changeset/base/361569 Log: MFC r361060: Add memalign(3). Added: stable/12/lib/libc/gen/memalign.c - copied unchanged from r361060, head/lib/libc/gen/memalign.c Modified: stable/12/include/malloc_np.h stable/12/lib/libc/gen/Makefile.inc stable/12/lib/libc/gen/Symbol.map Directory Properties: stable/12/ (props changed) Modified: stable/12/include/malloc_np.h ============================================================================== --- stable/12/include/malloc_np.h Thu May 28 00:49:02 2020 (r361568) +++ stable/12/include/malloc_np.h Thu May 28 01:53:35 2020 (r361569) @@ -122,6 +122,9 @@ size_t __sallocx(const void *ptr, int flags); void __dallocx(void *ptr, int flags); void __sdallocx(void *ptr, size_t size, int flags); size_t __nallocx(size_t size, int flags); + +void *memalign(size_t, size_t) __malloc_like __alloc_align(1) + __alloc_size(2); __END_DECLS #undef __MyBool Modified: stable/12/lib/libc/gen/Makefile.inc ============================================================================== --- stable/12/lib/libc/gen/Makefile.inc Thu May 28 00:49:02 2020 (r361568) +++ stable/12/lib/libc/gen/Makefile.inc Thu May 28 01:53:35 2020 (r361569) @@ -90,6 +90,7 @@ SRCS+= __getosreldate.c \ libc_dlopen.c \ lockf.c \ lrand48.c \ + memalign.c \ mrand48.c \ nftw.c \ nice.c \ Modified: stable/12/lib/libc/gen/Symbol.map ============================================================================== --- stable/12/lib/libc/gen/Symbol.map Thu May 28 00:49:02 2020 (r361568) +++ stable/12/lib/libc/gen/Symbol.map Thu May 28 01:53:35 2020 (r361569) @@ -423,6 +423,7 @@ FBSD_1.5 { }; FBSD_1.6 { + memalign; sigandset; sigisemptyset; sigorset; Copied: stable/12/lib/libc/gen/memalign.c (from r361060, head/lib/libc/gen/memalign.c) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/12/lib/libc/gen/memalign.c Thu May 28 01:53:35 2020 (r361569, copy of r361060, head/lib/libc/gen/memalign.c) @@ -0,0 +1,40 @@ +/*- + * Copyright (c) 2020 The FreeBSD Foundation + * All rights reserved. + * + * This software was developed by Konstantin Belousov + * under sponsorship from the FreeBSD Foundation. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include + +void * +memalign(size_t align, size_t size) +{ + return (aligned_alloc(align, roundup(size, align))); +} From owner-svn-src-all@freebsd.org Thu May 28 02:41:06 2020 Return-Path: Delivered-To: svn-src-all@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 2D38E2FABE2; Thu, 28 May 2020 02:41:06 +0000 (UTC) (envelope-from chmeeedalf@gmail.com) Received: from mail-io1-xd2b.google.com (mail-io1-xd2b.google.com [IPv6:2607:f8b0:4864:20::d2b]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "GTS CA 1O1" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 49XX4x5LYkz4fTn; Thu, 28 May 2020 02:41:05 +0000 (UTC) (envelope-from chmeeedalf@gmail.com) Received: by mail-io1-xd2b.google.com with SMTP id s18so14429319ioe.2; Wed, 27 May 2020 19:41:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=date:from:to:cc:subject:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=rbIB1ICcMwYSnXaBx99pse+Ac7m+RkjEQ1EAP4GtUa4=; b=slI5bEUTC9pNnLSDSY8eigA3FJ9khkhp+iHJvHZxY1vxEuVVO9CH9u1UaKH1llfaCs 6qXETpHTAWcRMvPvuLVoRpIyH0EL9Bc5MBpls06TgLNXSzvVtQIKtA962iRRQKethbpw EyEM849DYejk42tqUqACHK0pq58+25l8SiMDjEtcQh8j5274jhfmwKzSxxp+waSYjpL/ 6s50xP1ohiP+/KuAjWWdEXnshCimFmqqnT5hJvueVln6F0/AXKkbmRF+cbtNttCgIkSj JRvgjsqpYI7URR++AH7aAGNjoO2N7ef6qGncrkAhK5FekpfAnP8d71eL3vg1A7Y9UrDW QQaw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=rbIB1ICcMwYSnXaBx99pse+Ac7m+RkjEQ1EAP4GtUa4=; b=RF606de6ENdYLmycS6orhi3ct+FApri5Tg1Oym3WP7/wwH/9tisZKbhMcfIvMYfoH3 nGuTjZ7/8jnYx1TgnTb1h2/TRheM3ZwPVqfwHgNvVlQ8q3t1eeRf3kpk7OJq2dT0Grda 5TQYKj4Asd3pTCOrWBzsirpsH/Yqhsfpy2BSmiKXNTPCUExfAFtMSEB3UFsXvKJZVuNp 6kY7koMlHNwbAfVpj3HZXKEtPTkxf6eVyMdvGMf848TDd+k/1MXBJDSfbJndkryvYyxo K6ICnajt5PVyCi+XK87/jDmxCxGQQy0RpD750ijVUAskKeW7bdZ+F32/EsCpc0ABPEjE XbHA== X-Gm-Message-State: AOAM532g30zAg17TTc1unWc5U8woKKnpAX27SK3p2aOaHHjLayP5nq4x LEYS+bYrCsLmGNT1KomqE6stUxlUo0cl5Q== X-Google-Smtp-Source: ABdhPJzqN4rkgOA4XxAUkYidkFEc+F/6NONuKm+kltF//da9OpE8vDU/eP0OjRGz8IBz3SUTacTDjg== X-Received: by 2002:a05:6638:10b:: with SMTP id x11mr185481jao.109.1590633664167; Wed, 27 May 2020 19:41:04 -0700 (PDT) Received: from titan.knownspace (173-19-125-130.client.mchsi.com. [173.19.125.130]) by smtp.gmail.com with ESMTPSA id h15sm111635iol.9.2020.05.27.19.41.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 27 May 2020 19:41:03 -0700 (PDT) Date: Wed, 27 May 2020 21:41:01 -0500 From: Justin Hibbits To: Brandon Bergren Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r361568 - head/sys/powerpc/aim Message-ID: <20200527214101.59293529@titan.knownspace> In-Reply-To: <202005280049.04S0n3jS096937@repo.freebsd.org> References: <202005280049.04S0n3jS096937@repo.freebsd.org> X-Mailer: Claws Mail 3.17.5 (GTK+ 2.24.32; powerpc64-portbld-freebsd13.0) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Rspamd-Queue-Id: 49XX4x5LYkz4fTn X-Spamd-Bar: ---- Authentication-Results: mx1.freebsd.org; none X-Spamd-Result: default: False [-4.00 / 15.00]; ASN(0.00)[asn:15169, ipnet:2607:f8b0::/32, country:US]; REPLY(-4.00)[] X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2020 02:41:06 -0000 On Thu, 28 May 2020 00:49:03 +0000 (UTC) Brandon Bergren wrote: > Author: bdragon > Date: Thu May 28 00:49:02 2020 > New Revision: 361568 > URL: https://svnweb.freebsd.org/changeset/base/361568 > > Log: > [PowerPC] Fix radix crash when passing -1 from userspace > > Found by running libc tests with radix enabled. > > Detect unsigned integer wrapping with a postcondition. > > Note: Radix MMU is not enabled by default yet. > > Sponsored by: Tag1 Consulting, Inc. > > Modified: > head/sys/powerpc/aim/mmu_radix.c > > Modified: head/sys/powerpc/aim/mmu_radix.c > ============================================================================== > --- head/sys/powerpc/aim/mmu_radix.c Wed May 27 23:20:35 > 2020 (r361567) +++ head/sys/powerpc/aim/mmu_radix.c Thu > May 28 00:49:02 2020 (r361568) @@ -6000,7 +6000,8 @@ > mmu_radix_kremove(vm_offset_t va) int mmu_radix_map_user_ptr(pmap_t > pm, volatile const void *uaddr, void **kaddr, size_t ulen, size_t > *klen) { > - if ((uintptr_t)uaddr + ulen >= VM_MAXUSER_ADDRESS) > + if ((uintptr_t)uaddr + ulen >= VM_MAXUSER_ADDRESS || > + (uintptr_t)uaddr + ulen < (uintptr_t)uaddr) > return (EFAULT); > > *kaddr = (void *)(uintptr_t)uaddr; Wouldn't if ((uintptr_t)uaddr >= VM_MAXUSER_ADDRESS || (uintptr_t)uaddr + ulen >= VM_MAXUSER_ADDRESS) be more appropriate? - Justin From owner-svn-src-all@freebsd.org Thu May 28 03:08:50 2020 Return-Path: Delivered-To: svn-src-all@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 E2D472FBCB7; Thu, 28 May 2020 03:08:50 +0000 (UTC) (envelope-from jhibbits@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49XXhy5gxkz3SrQ; Thu, 28 May 2020 03:08:50 +0000 (UTC) (envelope-from jhibbits@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 BDBB51F5CE; Thu, 28 May 2020 03:08:50 +0000 (UTC) (envelope-from jhibbits@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04S38oC3083631; Thu, 28 May 2020 03:08:50 GMT (envelope-from jhibbits@FreeBSD.org) Received: (from jhibbits@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04S38oui083629; Thu, 28 May 2020 03:08:50 GMT (envelope-from jhibbits@FreeBSD.org) Message-Id: <202005280308.04S38oui083629@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: jhibbits set sender to jhibbits@FreeBSD.org using -f From: Justin Hibbits Date: Thu, 28 May 2020 03:08:50 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361570 - head/sys/powerpc/powerpc X-SVN-Group: head X-SVN-Commit-Author: jhibbits X-SVN-Commit-Paths: head/sys/powerpc/powerpc X-SVN-Commit-Revision: 361570 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2020 03:08:51 -0000 Author: jhibbits Date: Thu May 28 03:08:50 2020 New Revision: 361570 URL: https://svnweb.freebsd.org/changeset/base/361570 Log: powerpc/pmap: Remove some debug from r361544 Modified: head/sys/powerpc/powerpc/pmap_dispatch.c Modified: head/sys/powerpc/powerpc/pmap_dispatch.c ============================================================================== --- head/sys/powerpc/powerpc/pmap_dispatch.c Thu May 28 01:53:35 2020 (r361569) +++ head/sys/powerpc/powerpc/pmap_dispatch.c Thu May 28 03:08:50 2020 (r361570) @@ -205,19 +205,15 @@ pmap_mmu_install(char *name, int prio) mmu_t *mmupp, mmup; static int curr_prio = 0; - printf("Trying to install pmap %s\n", name); - /* * Try and locate the MMU kobj corresponding to the name */ SET_FOREACH(mmupp, mmu_set) { mmup = *mmupp; - printf("Checking %s(%p)\n", mmup->name, mmup->name); if (mmup->name && !strcmp(mmup->name, name) && (prio >= curr_prio || mmu_obj == NULL)) { - printf("match found: %p\n", mmup); curr_prio = prio; mmu_obj = mmup; return (TRUE); From owner-svn-src-all@freebsd.org Thu May 28 07:23:28 2020 Return-Path: Delivered-To: svn-src-all@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 931083287D3; Thu, 28 May 2020 07:23:28 +0000 (UTC) (envelope-from melifaro@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49XfLm3QJYz43T2; Thu, 28 May 2020 07:23:28 +0000 (UTC) (envelope-from melifaro@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 709DA22A45; Thu, 28 May 2020 07:23:28 +0000 (UTC) (envelope-from melifaro@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04S7NSHF043089; Thu, 28 May 2020 07:23:28 GMT (envelope-from melifaro@FreeBSD.org) Received: (from melifaro@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04S7NSwO043088; Thu, 28 May 2020 07:23:28 GMT (envelope-from melifaro@FreeBSD.org) Message-Id: <202005280723.04S7NSwO043088@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: melifaro set sender to melifaro@FreeBSD.org using -f From: "Alexander V. Chernikov" Date: Thu, 28 May 2020 07:23:28 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361571 - head/sys/net X-SVN-Group: head X-SVN-Commit-Author: melifaro X-SVN-Commit-Paths: head/sys/net X-SVN-Commit-Revision: 361571 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2020 07:23:28 -0000 Author: melifaro Date: Thu May 28 07:23:27 2020 New Revision: 361571 URL: https://svnweb.freebsd.org/changeset/base/361571 Log: Unlock rtentry before calling for epoch(9) destruction as the destruction may happen immediately, leading to panic. Reported by: bdragon Modified: head/sys/net/route.c Modified: head/sys/net/route.c ============================================================================== --- head/sys/net/route.c Thu May 28 03:08:50 2020 (r361570) +++ head/sys/net/route.c Thu May 28 07:23:27 2020 (r361571) @@ -411,9 +411,9 @@ rtfree(struct rtentry *rt) RT_LOCK_ASSERT(rt); + RT_UNLOCK(rt); epoch_call(net_epoch_preempt, destroy_rtentry_epoch, &rt->rt_epoch_ctx); - RT_UNLOCK(rt); } static void From owner-svn-src-all@freebsd.org Thu May 28 07:26:19 2020 Return-Path: Delivered-To: svn-src-all@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 C181C328C8F; Thu, 28 May 2020 07:26:19 +0000 (UTC) (envelope-from melifaro@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49XfQ34mQRz43cg; Thu, 28 May 2020 07:26:19 +0000 (UTC) (envelope-from melifaro@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 9ECC922665; Thu, 28 May 2020 07:26:19 +0000 (UTC) (envelope-from melifaro@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04S7QJR1043276; Thu, 28 May 2020 07:26:19 GMT (envelope-from melifaro@FreeBSD.org) Received: (from melifaro@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04S7QJg5043274; Thu, 28 May 2020 07:26:19 GMT (envelope-from melifaro@FreeBSD.org) Message-Id: <202005280726.04S7QJg5043274@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: melifaro set sender to melifaro@FreeBSD.org using -f From: "Alexander V. Chernikov" Date: Thu, 28 May 2020 07:26:19 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361572 - in head/sys: netinet netinet6 X-SVN-Group: head X-SVN-Commit-Author: melifaro X-SVN-Commit-Paths: in head/sys: netinet netinet6 X-SVN-Commit-Revision: 361572 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2020 07:26:19 -0000 Author: melifaro Date: Thu May 28 07:26:18 2020 New Revision: 361572 URL: https://svnweb.freebsd.org/changeset/base/361572 Log: Switch gif(4) path verification to fib[46]_check_urfp(). fibX_lookup_nh_ represents pre-epoch generation of fib api, providing less guarantees over pointer validness and requiring on-stack data copying. Use specialized fib[46]_check_urpf() from newer KPI instead, to allow removal of older KPI. Reviewed by: ae Differential Revision: https://reviews.freebsd.org/D24978 Modified: head/sys/netinet/in_gif.c head/sys/netinet6/in6_gif.c Modified: head/sys/netinet/in_gif.c ============================================================================== --- head/sys/netinet/in_gif.c Thu May 28 07:23:27 2020 (r361571) +++ head/sys/netinet/in_gif.c Thu May 28 07:26:18 2020 (r361572) @@ -379,13 +379,8 @@ done: return (0); /* ingress filters on outer source */ if ((GIF2IFP(sc)->if_flags & IFF_LINK2) == 0) { - struct nhop4_basic nh4; - struct in_addr dst; - - dst = ip->ip_src; - if (fib4_lookup_nh_basic(sc->gif_fibnum, dst, 0, 0, &nh4) != 0) - return (0); - if (nh4.nh_ifp != m->m_pkthdr.rcvif) + if (fib4_check_urpf(sc->gif_fibnum, ip->ip_src, 0, NHR_NONE, + m->m_pkthdr.rcvif) == 0) return (0); } *arg = sc; Modified: head/sys/netinet6/in6_gif.c ============================================================================== --- head/sys/netinet6/in6_gif.c Thu May 28 07:23:27 2020 (r361571) +++ head/sys/netinet6/in6_gif.c Thu May 28 07:26:18 2020 (r361572) @@ -402,13 +402,9 @@ done: return (0); /* ingress filters on outer source */ if ((GIF2IFP(sc)->if_flags & IFF_LINK2) == 0) { - struct nhop6_basic nh6; - - if (fib6_lookup_nh_basic(sc->gif_fibnum, &ip6->ip6_src, - ntohs(in6_getscope(&ip6->ip6_src)), 0, 0, &nh6) != 0) - return (0); - - if (nh6.nh_ifp != m->m_pkthdr.rcvif) + if (fib6_check_urpf(sc->gif_fibnum, &ip6->ip6_src, + ntohs(in6_getscope(&ip6->ip6_src)), NHR_NONE, + m->m_pkthdr.rcvif) == 0) return (0); } *arg = sc; From owner-svn-src-all@freebsd.org Thu May 28 07:29:45 2020 Return-Path: Delivered-To: svn-src-all@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 39C13328E13; Thu, 28 May 2020 07:29:45 +0000 (UTC) (envelope-from melifaro@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49XfV10qRLz43wW; Thu, 28 May 2020 07:29:45 +0000 (UTC) (envelope-from melifaro@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 16AC92274F; Thu, 28 May 2020 07:29:45 +0000 (UTC) (envelope-from melifaro@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04S7TiaU043457; Thu, 28 May 2020 07:29:44 GMT (envelope-from melifaro@FreeBSD.org) Received: (from melifaro@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04S7Ti0h043456; Thu, 28 May 2020 07:29:44 GMT (envelope-from melifaro@FreeBSD.org) Message-Id: <202005280729.04S7Ti0h043456@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: melifaro set sender to melifaro@FreeBSD.org using -f From: "Alexander V. Chernikov" Date: Thu, 28 May 2020 07:29:44 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361573 - head/sys/netinet6 X-SVN-Group: head X-SVN-Commit-Author: melifaro X-SVN-Commit-Paths: head/sys/netinet6 X-SVN-Commit-Revision: 361573 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2020 07:29:45 -0000 Author: melifaro Date: Thu May 28 07:29:44 2020 New Revision: 361573 URL: https://svnweb.freebsd.org/changeset/base/361573 Log: Replace ip6_ouput fib6_lookup_nh_ calls with fib6_lookup(). fib6_lookup_nh_ represents pre-epoch generation of fib api, providing less guarantees over pointer validness and requiring on-stack data copying. Conversion is straight-forwarded, as the only 2 differences are requirement of running in network epoch and the need to handle RTF_GATEWAY case in the caller code. Reviewed by: ae Differential Revision: https://reviews.freebsd.org/D24973 Modified: head/sys/netinet6/ip6_output.c Modified: head/sys/netinet6/ip6_output.c ============================================================================== --- head/sys/netinet6/ip6_output.c Thu May 28 07:26:18 2020 (r361572) +++ head/sys/netinet6/ip6_output.c Thu May 28 07:29:44 2020 (r361573) @@ -736,7 +736,7 @@ again: counter_u64_add(nh->nh_pksent, 1); } } else { - struct nhop6_extended nh6; + struct nhop_object *nh; struct in6_addr kdst; uint32_t scopeid; @@ -766,20 +766,19 @@ again: } } - error = fib6_lookup_nh_ext(fibnum, &kdst, scopeid, NHR_REF, 0, - &nh6); - if (error != 0) { + nh = fib6_lookup(fibnum, &kdst, scopeid, NHR_NONE, 0); + if (nh == NULL) { IP6STAT_INC(ip6s_noroute); /* No ifp in6_ifstat_inc(ifp, ifs6_out_discard); */ error = EHOSTUNREACH;; goto bad; } - ifp = nh6.nh_ifp; - mtu = nh6.nh_mtu; - dst->sin6_addr = nh6.nh_addr; - ia = nh6.nh_ia; - fib6_free_nh_ext(fibnum, &nh6); + ifp = nh->nh_ifp; + mtu = nh->nh_mtu; + ia = ifatoia6(nh->nh_ifa); + if (nh->nh_flags & NHF_GATEWAY) + dst->sin6_addr = nh->gw6_sa.sin6_addr; nonh6lookup: ; } @@ -1449,23 +1448,22 @@ ip6_insertfraghdr(struct mbuf *m0, struct mbuf *m, int static int ip6_getpmtu_ctl(u_int fibnum, const struct in6_addr *dst, u_long *mtup) { - struct nhop6_extended nh6; + struct epoch_tracker et; + struct nhop_object *nh; struct in6_addr kdst; uint32_t scopeid; - struct ifnet *ifp; - u_long mtu; int error; in6_splitscope(dst, &kdst, &scopeid); - if (fib6_lookup_nh_ext(fibnum, &kdst, scopeid, NHR_REF, 0, &nh6) != 0) - return (EHOSTUNREACH); - ifp = nh6.nh_ifp; - mtu = nh6.nh_mtu; + NET_EPOCH_ENTER(et); + nh = fib6_lookup(fibnum, &kdst, scopeid, NHR_NONE, 0); + if (nh != NULL) + error = ip6_calcmtu(nh->nh_ifp, dst, nh->nh_mtu, mtup, NULL, 0); + else + error = EHOSTUNREACH; + NET_EPOCH_EXIT(et); - error = ip6_calcmtu(ifp, dst, mtu, mtup, NULL, 0); - fib6_free_nh_ext(fibnum, &nh6); - return (error); } @@ -1484,12 +1482,14 @@ ip6_getpmtu(struct route_in6 *ro_pmtu, int do_lookup, struct ifnet *ifp, const struct in6_addr *dst, u_long *mtup, int *alwaysfragp, u_int fibnum, u_int proto) { - struct nhop6_basic nh6; + struct nhop_object *nh; struct in6_addr kdst; uint32_t scopeid; struct sockaddr_in6 *sa6_dst, sin6; u_long mtu; + NET_EPOCH_ASSERT(); + mtu = 0; if (ro_pmtu == NULL || do_lookup) { @@ -1512,9 +1512,9 @@ ip6_getpmtu(struct route_in6 *ro_pmtu, int do_lookup, sa6_dst->sin6_addr = *dst; in6_splitscope(dst, &kdst, &scopeid); - if (fib6_lookup_nh_basic(fibnum, &kdst, scopeid, 0, 0, - &nh6) == 0) { - mtu = nh6.nh_mtu; + nh = fib6_lookup(fibnum, &kdst, scopeid, NHR_NONE, 0); + if (nh != NULL) { + mtu = nh->nh_mtu; if (ro_pmtu != NULL) ro_pmtu->ro_mtu = mtu; } From owner-svn-src-all@freebsd.org Thu May 28 07:31:54 2020 Return-Path: Delivered-To: svn-src-all@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 649C332901B; Thu, 28 May 2020 07:31:54 +0000 (UTC) (envelope-from melifaro@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49XfXV1rNRz44P9; Thu, 28 May 2020 07:31:54 +0000 (UTC) (envelope-from melifaro@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 3A84722932; Thu, 28 May 2020 07:31:54 +0000 (UTC) (envelope-from melifaro@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04S7Vs7M045114; Thu, 28 May 2020 07:31:54 GMT (envelope-from melifaro@FreeBSD.org) Received: (from melifaro@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04S7Vr28045112; Thu, 28 May 2020 07:31:53 GMT (envelope-from melifaro@FreeBSD.org) Message-Id: <202005280731.04S7Vr28045112@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: melifaro set sender to melifaro@FreeBSD.org using -f From: "Alexander V. Chernikov" Date: Thu, 28 May 2020 07:31:53 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361574 - head/sys/netinet X-SVN-Group: head X-SVN-Commit-Author: melifaro X-SVN-Commit-Paths: head/sys/netinet X-SVN-Commit-Revision: 361574 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2020 07:31:54 -0000 Author: melifaro Date: Thu May 28 07:31:53 2020 New Revision: 361574 URL: https://svnweb.freebsd.org/changeset/base/361574 Log: Switch ip_output/icmp_reflect rt lookup calls with fib4_lookup. fib4_lookup_nh_ represents pre-epoch generation of fib api, providing less guarantees over pointer validness and requiring on-stack data copying. Conversion is straight-forwarded, as the only 2 differences are requirement of running in network epoch and the need to handle RTF_GATEWAY case in the caller code. Reviewed by: ae Differential Revision: https://reviews.freebsd.org/D24976 Modified: head/sys/netinet/ip_icmp.c head/sys/netinet/ip_output.c Modified: head/sys/netinet/ip_icmp.c ============================================================================== --- head/sys/netinet/ip_icmp.c Thu May 28 07:29:44 2020 (r361573) +++ head/sys/netinet/ip_icmp.c Thu May 28 07:31:53 2020 (r361574) @@ -764,7 +764,7 @@ icmp_reflect(struct mbuf *m) struct ifnet *ifp; struct in_ifaddr *ia; struct in_addr t; - struct nhop4_extended nh_ext; + struct nhop_object *nh; struct mbuf *opts = NULL; int optlen = (ip->ip_hl << 2) - sizeof(struct ip); @@ -851,12 +851,13 @@ icmp_reflect(struct mbuf *m) * When we don't have a route back to the packet source, stop here * and drop the packet. */ - if (fib4_lookup_nh_ext(M_GETFIB(m), ip->ip_dst, 0, 0, &nh_ext) != 0) { + nh = fib4_lookup(M_GETFIB(m), ip->ip_dst, 0, NHR_NONE, 0); + if (nh == NULL) { m_freem(m); ICMPSTAT_INC(icps_noroute); goto done; } - t = nh_ext.nh_src; + t = IA_SIN(ifatoia(nh->nh_ifa))->sin_addr; match: #ifdef MAC mac_netinet_icmp_replyinplace(m); Modified: head/sys/netinet/ip_output.c ============================================================================== --- head/sys/netinet/ip_output.c Thu May 28 07:29:44 2020 (r361573) +++ head/sys/netinet/ip_output.c Thu May 28 07:31:53 2020 (r361574) @@ -512,11 +512,10 @@ again: mtu = ifp->if_mtu; src = IA_SIN(ia)->sin_addr; } else { - struct nhop4_extended nh; + struct nhop_object *nh; - bzero(&nh, sizeof(nh)); - if (fib4_lookup_nh_ext(M_GETFIB(m), ip->ip_dst, 0, 0, &nh) != - 0) { + nh = fib4_lookup(M_GETFIB(m), ip->ip_dst, 0, NHR_NONE, 0); + if (nh == NULL) { #if defined(IPSEC) || defined(IPSEC_SUPPORT) /* * There is no route for this packet, but it is @@ -530,8 +529,8 @@ again: error = EHOSTUNREACH; goto bad; } - ifp = nh.nh_ifp; - mtu = nh.nh_mtu; + ifp = nh->nh_ifp; + mtu = nh->nh_mtu; /* * We are rewriting here dst to be gw actually, contradicting * comment at the beginning of the function. However, in this @@ -540,10 +539,11 @@ again: * function, the dst would be rewritten by ip_output_pfil(). */ MPASS(dst == &sin); - dst->sin_addr = nh.nh_addr; - ia = nh.nh_ia; - src = nh.nh_src; - isbroadcast = (((nh.nh_flags & (NHF_HOST | NHF_BROADCAST)) == + if (nh->nh_flags & NHF_GATEWAY) + dst->sin_addr = nh->gw4_sa.sin_addr; + ia = ifatoia(nh->nh_ifa); + src = IA_SIN(ia)->sin_addr; + isbroadcast = (((nh->nh_flags & (NHF_HOST | NHF_BROADCAST)) == (NHF_HOST | NHF_BROADCAST)) || ((ifp->if_flags & IFF_BROADCAST) && in_ifaddr_broadcast(dst->sin_addr, ia))); From owner-svn-src-all@freebsd.org Thu May 28 07:35:07 2020 Return-Path: Delivered-To: svn-src-all@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 BC1A8328F37; Thu, 28 May 2020 07:35:07 +0000 (UTC) (envelope-from melifaro@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49XfcC4crZz44jD; Thu, 28 May 2020 07:35:07 +0000 (UTC) (envelope-from melifaro@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 9571822A9E; Thu, 28 May 2020 07:35:07 +0000 (UTC) (envelope-from melifaro@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04S7Z7jU049487; Thu, 28 May 2020 07:35:07 GMT (envelope-from melifaro@FreeBSD.org) Received: (from melifaro@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04S7Z7R9049486; Thu, 28 May 2020 07:35:07 GMT (envelope-from melifaro@FreeBSD.org) Message-Id: <202005280735.04S7Z7R9049486@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: melifaro set sender to melifaro@FreeBSD.org using -f From: "Alexander V. Chernikov" Date: Thu, 28 May 2020 07:35:07 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361575 - head/sys/fs/nfsclient X-SVN-Group: head X-SVN-Commit-Author: melifaro X-SVN-Commit-Paths: head/sys/fs/nfsclient X-SVN-Commit-Revision: 361575 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2020 07:35:07 -0000 Author: melifaro Date: Thu May 28 07:35:07 2020 New Revision: 361575 URL: https://svnweb.freebsd.org/changeset/base/361575 Log: Make NFS address selection use fib4_lookup(). fib4_lookup_nh_ represents pre-epoch generation of fib api, providing less guarantees over pointer validness and requiring on-stack data copying. Switch call to use new fib4_lookup(), allowing to eventually deprecate old api. Differential Revision: https://reviews.freebsd.org/D24977 Modified: head/sys/fs/nfsclient/nfs_clport.c Modified: head/sys/fs/nfsclient/nfs_clport.c ============================================================================== --- head/sys/fs/nfsclient/nfs_clport.c Thu May 28 07:31:53 2020 (r361574) +++ head/sys/fs/nfsclient/nfs_clport.c Thu May 28 07:35:07 2020 (r361575) @@ -53,6 +53,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include @@ -976,24 +977,29 @@ nfscl_getmyip(struct nfsmount *nmp, struct in6_addr *p #endif #ifdef INET if (nmp->nm_nam->sa_family == AF_INET) { + struct epoch_tracker et; + struct nhop_object *nh; struct sockaddr_in *sin; - struct nhop4_extended nh_ext; + struct in_addr addr = {}; sin = (struct sockaddr_in *)nmp->nm_nam; + NET_EPOCH_ENTER(et); CURVNET_SET(CRED_TO_VNET(nmp->nm_sockreq.nr_cred)); - error = fib4_lookup_nh_ext(fibnum, sin->sin_addr, 0, 0, - &nh_ext); + nh = fib4_lookup(fibnum, sin->sin_addr, 0, NHR_NONE, 0); CURVNET_RESTORE(); - if (error != 0) + if (nh != NULL) + addr = IA_SIN(ifatoia(nh->nh_ifa))->sin_addr; + NET_EPOCH_EXIT(et); + if (nh == NULL) return (NULL); - if (IN_LOOPBACK(ntohl(nh_ext.nh_src.s_addr))) { + if (IN_LOOPBACK(ntohl(addr.s_addr))) { /* Ignore loopback addresses */ return (NULL); } *isinet6p = 0; - *((struct in_addr *)paddr) = nh_ext.nh_src; + *((struct in_addr *)paddr) = addr; return (u_int8_t *)paddr; } From owner-svn-src-all@freebsd.org Thu May 28 08:00:09 2020 Return-Path: Delivered-To: svn-src-all@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 B5D963299DA; Thu, 28 May 2020 08:00:09 +0000 (UTC) (envelope-from melifaro@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49Xg954T1mz470f; Thu, 28 May 2020 08:00:09 +0000 (UTC) (envelope-from melifaro@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 94C4A22D21; Thu, 28 May 2020 08:00:09 +0000 (UTC) (envelope-from melifaro@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04S809xa063296; Thu, 28 May 2020 08:00:09 GMT (envelope-from melifaro@FreeBSD.org) Received: (from melifaro@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04S809Au063294; Thu, 28 May 2020 08:00:09 GMT (envelope-from melifaro@FreeBSD.org) Message-Id: <202005280800.04S809Au063294@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: melifaro set sender to melifaro@FreeBSD.org using -f From: "Alexander V. Chernikov" Date: Thu, 28 May 2020 08:00:09 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361576 - in head/sys: netinet netinet6 X-SVN-Group: head X-SVN-Commit-Author: melifaro X-SVN-Commit-Paths: in head/sys: netinet netinet6 X-SVN-Commit-Revision: 361576 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2020 08:00:09 -0000 Author: melifaro Date: Thu May 28 08:00:08 2020 New Revision: 361576 URL: https://svnweb.freebsd.org/changeset/base/361576 Log: Use fib[46]_lookup() in mtu calculations. fib[46]_lookup_nh_ represents pre-epoch generation of fib api, providing less guarantees over pointer validness and requiring on-stack data copying. Conversion is straight-forwarded, as the only 2 differences are requirement of running in network epoch and the need to handle RTF_GATEWAY case in the caller code. Differential Revision: https://reviews.freebsd.org/D24974 Modified: head/sys/netinet/tcp_subr.c head/sys/netinet6/icmp6.c Modified: head/sys/netinet/tcp_subr.c ============================================================================== --- head/sys/netinet/tcp_subr.c Thu May 28 07:35:07 2020 (r361575) +++ head/sys/netinet/tcp_subr.c Thu May 28 08:00:08 2020 (r361576) @@ -2920,7 +2920,7 @@ tcp_mtudisc(struct inpcb *inp, int mtuoffer) uint32_t tcp_maxmtu(struct in_conninfo *inc, struct tcp_ifcap *cap) { - struct nhop4_extended nh4; + struct nhop_object *nh; struct ifnet *ifp; uint32_t maxmtu = 0; @@ -2928,12 +2928,12 @@ tcp_maxmtu(struct in_conninfo *inc, struct tcp_ifcap * if (inc->inc_faddr.s_addr != INADDR_ANY) { - if (fib4_lookup_nh_ext(inc->inc_fibnum, inc->inc_faddr, - NHR_REF, 0, &nh4) != 0) + nh = fib4_lookup(inc->inc_fibnum, inc->inc_faddr, 0, NHR_NONE, 0); + if (nh == NULL) return (0); - ifp = nh4.nh_ifp; - maxmtu = nh4.nh_mtu; + ifp = nh->nh_ifp; + maxmtu = nh->nh_mtu; /* Report additional interface capabilities. */ if (cap != NULL) { @@ -2945,7 +2945,6 @@ tcp_maxmtu(struct in_conninfo *inc, struct tcp_ifcap * cap->tsomaxsegsize = ifp->if_hw_tsomaxsegsize; } } - fib4_free_nh_ext(inc->inc_fibnum, &nh4); } return (maxmtu); } @@ -2955,7 +2954,7 @@ tcp_maxmtu(struct in_conninfo *inc, struct tcp_ifcap * uint32_t tcp_maxmtu6(struct in_conninfo *inc, struct tcp_ifcap *cap) { - struct nhop6_extended nh6; + struct nhop_object *nh; struct in6_addr dst6; uint32_t scopeid; struct ifnet *ifp; @@ -2968,12 +2967,12 @@ tcp_maxmtu6(struct in_conninfo *inc, struct tcp_ifcap if (!IN6_IS_ADDR_UNSPECIFIED(&inc->inc6_faddr)) { in6_splitscope(&inc->inc6_faddr, &dst6, &scopeid); - if (fib6_lookup_nh_ext(inc->inc_fibnum, &dst6, scopeid, 0, - 0, &nh6) != 0) + nh = fib6_lookup(inc->inc_fibnum, &dst6, scopeid, NHR_NONE, 0); + if (nh == NULL) return (0); - ifp = nh6.nh_ifp; - maxmtu = nh6.nh_mtu; + ifp = nh->nh_ifp; + maxmtu = nh->nh_mtu; /* Report additional interface capabilities. */ if (cap != NULL) { @@ -2985,7 +2984,6 @@ tcp_maxmtu6(struct in_conninfo *inc, struct tcp_ifcap cap->tsomaxsegsize = ifp->if_hw_tsomaxsegsize; } } - fib6_free_nh_ext(inc->inc_fibnum, &nh6); } return (maxmtu); Modified: head/sys/netinet6/icmp6.c ============================================================================== --- head/sys/netinet6/icmp6.c Thu May 28 07:35:07 2020 (r361575) +++ head/sys/netinet6/icmp6.c Thu May 28 08:00:08 2020 (r361576) @@ -402,6 +402,8 @@ icmp6_input(struct mbuf **mp, int *offp, int proto) char ip6bufs[INET6_ADDRSTRLEN], ip6bufd[INET6_ADDRSTRLEN]; int code, error, icmp6len, ip6len, noff, off, sum; + NET_EPOCH_ASSERT(); + m = *mp; off = *offp; From owner-svn-src-all@freebsd.org Thu May 28 08:05:46 2020 Return-Path: Delivered-To: svn-src-all@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 A029B329FAD; Thu, 28 May 2020 08:05:46 +0000 (UTC) (envelope-from hselasky@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49XgHZ3rnxz481l; Thu, 28 May 2020 08:05:46 +0000 (UTC) (envelope-from hselasky@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 7F66E231BB; Thu, 28 May 2020 08:05:46 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04S85kCi069440; Thu, 28 May 2020 08:05:46 GMT (envelope-from hselasky@FreeBSD.org) Received: (from hselasky@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04S85kF3069439; Thu, 28 May 2020 08:05:46 GMT (envelope-from hselasky@FreeBSD.org) Message-Id: <202005280805.04S85kF3069439@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: hselasky set sender to hselasky@FreeBSD.org using -f From: Hans Petter Selasky Date: Thu, 28 May 2020 08:05:46 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361577 - head/sys/dev/usb X-SVN-Group: head X-SVN-Commit-Author: hselasky X-SVN-Commit-Paths: head/sys/dev/usb X-SVN-Commit-Revision: 361577 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2020 08:05:46 -0000 Author: hselasky Date: Thu May 28 08:05:46 2020 New Revision: 361577 URL: https://svnweb.freebsd.org/changeset/base/361577 Log: Don't allow USB device drivers to parent own interface. It will prevent proper USB device detach. MFC after: 3 days Sponsored by: Mellanox Technologies Modified: head/sys/dev/usb/usb_device.c Modified: head/sys/dev/usb/usb_device.c ============================================================================== --- head/sys/dev/usb/usb_device.c Thu May 28 08:00:08 2020 (r361576) +++ head/sys/dev/usb/usb_device.c Thu May 28 08:05:46 2020 (r361577) @@ -1402,7 +1402,7 @@ usbd_set_parent_iface(struct usb_device *udev, uint8_t { struct usb_interface *iface; - if (udev == NULL) { + if (udev == NULL || iface_index == parent_index) { /* nothing to do */ return; } From owner-svn-src-all@freebsd.org Thu May 28 08:18:35 2020 Return-Path: Delivered-To: svn-src-all@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 6CB0932A358; Thu, 28 May 2020 08:18:35 +0000 (UTC) (envelope-from royger@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49XgZM2Kpnz48pK; Thu, 28 May 2020 08:18:35 +0000 (UTC) (envelope-from royger@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 4B4DD230EA; Thu, 28 May 2020 08:18:35 +0000 (UTC) (envelope-from royger@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04S8IZN0075813; Thu, 28 May 2020 08:18:35 GMT (envelope-from royger@FreeBSD.org) Received: (from royger@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04S8IZ7q075812; Thu, 28 May 2020 08:18:35 GMT (envelope-from royger@FreeBSD.org) Message-Id: <202005280818.04S8IZ7q075812@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: royger set sender to royger@FreeBSD.org using -f From: =?UTF-8?Q?Roger_Pau_Monn=c3=a9?= Date: Thu, 28 May 2020 08:18:35 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361578 - head/sys/x86/xen X-SVN-Group: head X-SVN-Commit-Author: royger X-SVN-Commit-Paths: head/sys/x86/xen X-SVN-Commit-Revision: 361578 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2020 08:18:35 -0000 Author: royger Date: Thu May 28 08:18:34 2020 New Revision: 361578 URL: https://svnweb.freebsd.org/changeset/base/361578 Log: xenpv: do not use low 1MB for Xen mappings on i386 On amd64 we already avoid using memory below 4GB in order to prevent clashes with MMIO regions, but i386 was allowed to use any hole in the physical memory map in order to map Xen pages. Limit this to memory above the 1MB boundary on i386 in order to avoid clashes with the MMIO holes in that area. Sponsored by: Citrix Systems R&D MFC after: 1 week Modified: head/sys/x86/xen/xenpv.c Modified: head/sys/x86/xen/xenpv.c ============================================================================== --- head/sys/x86/xen/xenpv.c Thu May 28 08:05:46 2020 (r361577) +++ head/sys/x86/xen/xenpv.c Thu May 28 08:18:34 2020 (r361578) @@ -54,12 +54,14 @@ __FBSDID("$FreeBSD$"); * prevent clashes with MMIO/ACPI regions. * * Since this is not possible on i386 just use any available memory - * chunk and hope we don't clash with anything else. + * chunk above 1MB and hope we don't clash with anything else. */ #ifdef __amd64__ #define LOW_MEM_LIMIT 0x100000000ul +#elif defined(__i386__) +#define LOW_MEM_LIMIT 0x100000ul #else -#define LOW_MEM_LIMIT 0 +#error "Unsupported architecture" #endif static devclass_t xenpv_devclass; From owner-svn-src-all@freebsd.org Thu May 28 08:19:14 2020 Return-Path: Delivered-To: svn-src-all@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 7050E32A276; Thu, 28 May 2020 08:19:14 +0000 (UTC) (envelope-from royger@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49Xgb62L64z48xQ; Thu, 28 May 2020 08:19:14 +0000 (UTC) (envelope-from royger@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 4B5BB232C3; Thu, 28 May 2020 08:19:14 +0000 (UTC) (envelope-from royger@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04S8JEBi075885; Thu, 28 May 2020 08:19:14 GMT (envelope-from royger@FreeBSD.org) Received: (from royger@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04S8JEGh075884; Thu, 28 May 2020 08:19:14 GMT (envelope-from royger@FreeBSD.org) Message-Id: <202005280819.04S8JEGh075884@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: royger set sender to royger@FreeBSD.org using -f From: =?UTF-8?Q?Roger_Pau_Monn=c3=a9?= Date: Thu, 28 May 2020 08:19:14 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361579 - head/sys/dev/xen/blkfront X-SVN-Group: head X-SVN-Commit-Author: royger X-SVN-Commit-Paths: head/sys/dev/xen/blkfront X-SVN-Commit-Revision: 361579 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2020 08:19:14 -0000 Author: royger Date: Thu May 28 08:19:13 2020 New Revision: 361579 URL: https://svnweb.freebsd.org/changeset/base/361579 Log: xen/blkfront: use the correct type for disk sectors The correct type to use to represent disk sectors is blkif_sector_t (which is an uint64_t underneath). This avoid truncation of the disk size calculation when resizing on i386, as otherwise the calculation of d_mediasize in xbd_connect is truncated to the size of unsigned long, which is 32bits on i386. Note this issue didn't affect amd64, because the size of unsigned long is 64bits there. Sponsored by: Citrix Systems R&D MFC after: 1 week Modified: head/sys/dev/xen/blkfront/blkfront.c Modified: head/sys/dev/xen/blkfront/blkfront.c ============================================================================== --- head/sys/dev/xen/blkfront/blkfront.c Thu May 28 08:18:34 2020 (r361578) +++ head/sys/dev/xen/blkfront/blkfront.c Thu May 28 08:19:13 2020 (r361579) @@ -1225,7 +1225,8 @@ static void xbd_connect(struct xbd_softc *sc) { device_t dev = sc->xbd_dev; - unsigned long sectors, sector_size, phys_sector_size; + blkif_sector_t sectors; + unsigned long sector_size, phys_sector_size; unsigned int binfo; int err, feature_barrier, feature_flush; int i, j; @@ -1244,7 +1245,7 @@ xbd_connect(struct xbd_softc *sc) return; } err = xs_gather(XST_NIL, xenbus_get_otherend_path(dev), - "sectors", "%lu", §ors, NULL); + "sectors", "%"PRIu64, §ors, NULL); if (err != 0) { xenbus_dev_error(dev, err, "reading sectors at %s", @@ -1266,7 +1267,7 @@ xbd_connect(struct xbd_softc *sc) } err = xs_gather(XST_NIL, xenbus_get_otherend_path(dev), - "sectors", "%lu", §ors, + "sectors", "%"PRIu64, §ors, "info", "%u", &binfo, "sector-size", "%lu", §or_size, NULL); @@ -1279,7 +1280,7 @@ xbd_connect(struct xbd_softc *sc) if ((sectors == 0) || (sector_size == 0)) { xenbus_dev_fatal(dev, 0, "invalid parameters from %s:" - " sectors = %lu, sector_size = %lu", + " sectors = %"PRIu64", sector_size = %lu", xenbus_get_otherend_path(dev), sectors, sector_size); return; From owner-svn-src-all@freebsd.org Thu May 28 08:20:17 2020 Return-Path: Delivered-To: svn-src-all@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 5BCE032A557; Thu, 28 May 2020 08:20:17 +0000 (UTC) (envelope-from royger@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49XgcK1r3sz49Gp; Thu, 28 May 2020 08:20:17 +0000 (UTC) (envelope-from royger@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 3A55123157; Thu, 28 May 2020 08:20:17 +0000 (UTC) (envelope-from royger@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04S8KHj4076016; Thu, 28 May 2020 08:20:17 GMT (envelope-from royger@FreeBSD.org) Received: (from royger@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04S8KHsC076015; Thu, 28 May 2020 08:20:17 GMT (envelope-from royger@FreeBSD.org) Message-Id: <202005280820.04S8KHsC076015@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: royger set sender to royger@FreeBSD.org using -f From: =?UTF-8?Q?Roger_Pau_Monn=c3=a9?= Date: Thu, 28 May 2020 08:20:17 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361580 - head/sys/dev/xen/control X-SVN-Group: head X-SVN-Commit-Author: royger X-SVN-Commit-Paths: head/sys/dev/xen/control X-SVN-Commit-Revision: 361580 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2020 08:20:17 -0000 Author: royger Date: Thu May 28 08:20:16 2020 New Revision: 361580 URL: https://svnweb.freebsd.org/changeset/base/361580 Log: xen/control: short circuit xctrl_on_watch_event on spurious event If there's no data to read from xenstore short-circuit xctrl_on_watch_event to return early, there's no reason to continue since the lack of data would prevent matching against any known event type. Sponsored by: Citrix Systems R&D MFC with: r352925 MFC after: 1 week Modified: head/sys/dev/xen/control/control.c Modified: head/sys/dev/xen/control/control.c ============================================================================== --- head/sys/dev/xen/control/control.c Thu May 28 08:19:13 2020 (r361579) +++ head/sys/dev/xen/control/control.c Thu May 28 08:20:16 2020 (r361580) @@ -360,7 +360,7 @@ xctrl_on_watch_event(struct xs_watch *watch, const cha error = xs_read(XST_NIL, "control", "shutdown", &result_len, (void **)&result); - if (error != 0) + if (error != 0 || result_len == 0) return; /* Acknowledge the request by writing back an empty string. */ From owner-svn-src-all@freebsd.org Thu May 28 08:38:26 2020 Return-Path: Delivered-To: svn-src-all@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 947E432AD09; Thu, 28 May 2020 08:38:26 +0000 (UTC) (envelope-from hselasky@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49Xh1G3Kb7z4BrT; Thu, 28 May 2020 08:38:26 +0000 (UTC) (envelope-from hselasky@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 6D3AA23888; Thu, 28 May 2020 08:38:26 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04S8cQLY088076; Thu, 28 May 2020 08:38:26 GMT (envelope-from hselasky@FreeBSD.org) Received: (from hselasky@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04S8cQGN088074; Thu, 28 May 2020 08:38:26 GMT (envelope-from hselasky@FreeBSD.org) Message-Id: <202005280838.04S8cQGN088074@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: hselasky set sender to hselasky@FreeBSD.org using -f From: Hans Petter Selasky Date: Thu, 28 May 2020 08:38:26 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361581 - head/sys/dev/usb X-SVN-Group: head X-SVN-Commit-Author: hselasky X-SVN-Commit-Paths: head/sys/dev/usb X-SVN-Commit-Revision: 361581 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2020 08:38:26 -0000 Author: hselasky Date: Thu May 28 08:38:25 2020 New Revision: 361581 URL: https://svnweb.freebsd.org/changeset/base/361581 Log: Implement helper function, usbd_get_max_frame_length(), which allows kernel device drivers to correctly predict the default USB transfer frame length. MFC after: 3 days Sponsored by: Mellanox Technologies Modified: head/sys/dev/usb/usb_transfer.c head/sys/dev/usb/usbdi.h Modified: head/sys/dev/usb/usb_transfer.c ============================================================================== --- head/sys/dev/usb/usb_transfer.c Thu May 28 08:20:16 2020 (r361580) +++ head/sys/dev/usb/usb_transfer.c Thu May 28 08:38:25 2020 (r361581) @@ -374,6 +374,81 @@ usbd_transfer_setup_sub_malloc(struct usb_setup_params #endif /*------------------------------------------------------------------------* + * usbd_get_max_frame_length + * + * This function returns the maximum single frame length as computed by + * usbd_transfer_setup(). It is useful when computing buffer sizes for + * devices having multiple alternate settings. The SuperSpeed endpoint + * companion pointer is allowed to be NULL. + *------------------------------------------------------------------------*/ +uint32_t +usbd_get_max_frame_length(const struct usb_endpoint_descriptor *edesc, + const struct usb_endpoint_ss_comp_descriptor *ecomp, + enum usb_dev_speed speed) +{ + uint32_t max_packet_size; + uint32_t max_packet_count; + uint8_t type; + + max_packet_size = UGETW(edesc->wMaxPacketSize); + max_packet_count = 1; + type = (edesc->bmAttributes & UE_XFERTYPE); + + switch (speed) { + case USB_SPEED_HIGH: + switch (type) { + case UE_ISOCHRONOUS: + case UE_INTERRUPT: + max_packet_count += + (max_packet_size >> 11) & 3; + + /* check for invalid max packet count */ + if (max_packet_count > 3) + max_packet_count = 3; + break; + default: + break; + } + max_packet_size &= 0x7FF; + break; + case USB_SPEED_SUPER: + max_packet_count += (max_packet_size >> 11) & 3; + + if (ecomp != NULL) + max_packet_count += ecomp->bMaxBurst; + + if ((max_packet_count == 0) || + (max_packet_count > 16)) + max_packet_count = 16; + + switch (type) { + case UE_CONTROL: + max_packet_count = 1; + break; + case UE_ISOCHRONOUS: + if (ecomp != NULL) { + uint8_t mult; + + mult = UE_GET_SS_ISO_MULT( + ecomp->bmAttributes) + 1; + if (mult > 3) + mult = 3; + + max_packet_count *= mult; + } + break; + default: + break; + } + max_packet_size &= 0x7FF; + break; + default: + break; + } + return (max_packet_size * max_packet_count); +} + +/*------------------------------------------------------------------------* * usbd_transfer_setup_sub - transfer setup subroutine * * This function must be called from the "xfer_setup" callback of the Modified: head/sys/dev/usb/usbdi.h ============================================================================== --- head/sys/dev/usb/usbdi.h Thu May 28 08:20:16 2020 (r361580) +++ head/sys/dev/usb/usbdi.h Thu May 28 08:38:25 2020 (r361581) @@ -605,6 +605,9 @@ uint8_t usbd_get_interface_altindex(struct usb_interfa usb_error_t usbd_set_alt_interface_index(struct usb_device *udev, uint8_t iface_index, uint8_t alt_index); uint32_t usbd_get_isoc_fps(struct usb_device *udev); +uint32_t usbd_get_max_frame_length(const struct usb_endpoint_descriptor *, + const struct usb_endpoint_ss_comp_descriptor *, + enum usb_dev_speed); usb_error_t usbd_transfer_setup(struct usb_device *udev, const uint8_t *ifaces, struct usb_xfer **pxfer, const struct usb_config *setup_start, uint16_t n_setup, From owner-svn-src-all@freebsd.org Thu May 28 08:41:18 2020 Return-Path: Delivered-To: svn-src-all@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 BE83032ADC3; Thu, 28 May 2020 08:41:18 +0000 (UTC) (envelope-from hselasky@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49Xh4Z4jD9z4CNc; Thu, 28 May 2020 08:41:18 +0000 (UTC) (envelope-from hselasky@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 9CCA223897; Thu, 28 May 2020 08:41:18 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04S8fIJM090565; Thu, 28 May 2020 08:41:18 GMT (envelope-from hselasky@FreeBSD.org) Received: (from hselasky@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04S8fIPf090564; Thu, 28 May 2020 08:41:18 GMT (envelope-from hselasky@FreeBSD.org) Message-Id: <202005280841.04S8fIPf090564@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: hselasky set sender to hselasky@FreeBSD.org using -f From: Hans Petter Selasky Date: Thu, 28 May 2020 08:41:18 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361582 - head/sys/netgraph/bluetooth/drivers/ubt X-SVN-Group: head X-SVN-Commit-Author: hselasky X-SVN-Commit-Paths: head/sys/netgraph/bluetooth/drivers/ubt X-SVN-Commit-Revision: 361582 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2020 08:41:18 -0000 Author: hselasky Date: Thu May 28 08:41:18 2020 New Revision: 361582 URL: https://svnweb.freebsd.org/changeset/base/361582 Log: Fix check for wMaxPacketSize in USB bluetooth driver, in case device is not FULL speed. MFC after: 3 days Sponsored by: Mellanox Technologies Modified: head/sys/netgraph/bluetooth/drivers/ubt/ng_ubt.c Modified: head/sys/netgraph/bluetooth/drivers/ubt/ng_ubt.c ============================================================================== --- head/sys/netgraph/bluetooth/drivers/ubt/ng_ubt.c Thu May 28 08:38:25 2020 (r361581) +++ head/sys/netgraph/bluetooth/drivers/ubt/ng_ubt.c Thu May 28 08:41:18 2020 (r361582) @@ -623,7 +623,7 @@ ubt_attach(device_t dev) struct usb_endpoint_descriptor *ed; struct usb_interface_descriptor *id; struct usb_interface *iface; - uint16_t wMaxPacketSize; + uint32_t wMaxPacketSize; uint8_t alt_index, i, j; uint8_t iface_index[2] = { 0, 1 }; @@ -713,9 +713,10 @@ ubt_attach(device_t dev) if ((ed->bDescriptorType == UDESC_ENDPOINT) && (ed->bLength >= sizeof(*ed)) && (i == 1)) { - uint16_t temp; + uint32_t temp; - temp = UGETW(ed->wMaxPacketSize); + temp = usbd_get_max_frame_length( + ed, NULL, usbd_get_speed(uaa->device)); if (temp > wMaxPacketSize) { wMaxPacketSize = temp; alt_index = j; From owner-svn-src-all@freebsd.org Thu May 28 09:13:21 2020 Return-Path: Delivered-To: svn-src-all@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 790B832B840; Thu, 28 May 2020 09:13:21 +0000 (UTC) (envelope-from mw@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49XhnY2bw3z4Fys; Thu, 28 May 2020 09:13:21 +0000 (UTC) (envelope-from mw@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 5495623CBD; Thu, 28 May 2020 09:13:21 +0000 (UTC) (envelope-from mw@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04S9DLbB013797; Thu, 28 May 2020 09:13:21 GMT (envelope-from mw@FreeBSD.org) Received: (from mw@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04S9DKWv013795; Thu, 28 May 2020 09:13:20 GMT (envelope-from mw@FreeBSD.org) Message-Id: <202005280913.04S9DKWv013795@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mw set sender to mw@FreeBSD.org using -f From: Marcin Wojtas Date: Thu, 28 May 2020 09:13:20 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361583 - head/sys/crypto/aesni X-SVN-Group: head X-SVN-Commit-Author: mw X-SVN-Commit-Paths: head/sys/crypto/aesni X-SVN-Commit-Revision: 361583 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2020 09:13:21 -0000 Author: mw Date: Thu May 28 09:13:20 2020 New Revision: 361583 URL: https://svnweb.freebsd.org/changeset/base/361583 Log: Change return types of hash update functions in SHA-NI r359374 introduced crypto_apply function which takes as argument a function pointer that is expected to return an int, however aesni hash update functions return void. Because of that the function pointer passed was simply cast with its return value changed. This resulted in undefined behavior, in particular when mbuf is used, (ipsec) m_apply checks return value of function pointer passed to it and in our case bogusly fails after calculating hash of the first mbuf in chain. Fix it by changing signatures of sha update routines in aesni and dropping the casts. Submitted by: Kornel Duleba Reviewed by: jhb, cem Obtained from: Semihalf Sponsored by: Stormshield Differential Revision: https://reviews.freebsd.org/D25030 Modified: head/sys/crypto/aesni/aesni.c head/sys/crypto/aesni/aesni.h Modified: head/sys/crypto/aesni/aesni.c ============================================================================== --- head/sys/crypto/aesni/aesni.c Thu May 28 08:41:18 2020 (r361582) +++ head/sys/crypto/aesni/aesni.c Thu May 28 09:13:20 2020 (r361583) @@ -386,8 +386,8 @@ DRIVER_MODULE(aesni, nexus, aesni_driver, aesni_devcla MODULE_VERSION(aesni, 1); MODULE_DEPEND(aesni, crypto, 1, 1, 1); -static void -intel_sha1_update(void *vctx, const void *vdata, u_int datalen) +static int +intel_sha1_update(void *vctx, void *vdata, u_int datalen) { struct sha1_ctxt *ctx = vctx; const char *data = vdata; @@ -419,6 +419,8 @@ intel_sha1_update(void *vctx, const void *vdata, u_int intel_sha1_step(ctx->h.b32, (void *)ctx->m.b8, 1); off += copysiz; } + + return (0); } static void @@ -433,8 +435,8 @@ SHA1_Finalize_fn(void *digest, void *ctx) sha1_result(ctx, digest); } -static void -intel_sha256_update(void *vctx, const void *vdata, u_int len) +static int +intel_sha256_update(void *vctx, void *vdata, u_int len) { SHA256_CTX *ctx = vctx; uint64_t bitlen; @@ -454,7 +456,7 @@ intel_sha256_update(void *vctx, const void *vdata, u_i /* Handle the case where we don't need to perform any transforms */ if (len < 64 - r) { memcpy(&ctx->buf[r], src, len); - return; + return (0); } /* Finish the current block */ @@ -473,6 +475,8 @@ intel_sha256_update(void *vctx, const void *vdata, u_i /* Copy left over data into buffer */ memcpy(ctx->buf, src, len); + + return (0); } static void @@ -844,20 +848,16 @@ aesni_cipher_mac(struct aesni_session *ses, struct cry ses->hash_update(&sctx, hmac_key, sizeof(hmac_key)); crypto_apply(crp, crp->crp_aad_start, crp->crp_aad_length, - __DECONST(int (*)(void *, void *, u_int), ses->hash_update), - &sctx); + ses->hash_update, &sctx); if (CRYPTO_HAS_OUTPUT_BUFFER(crp) && CRYPTO_OP_IS_ENCRYPT(crp->crp_op)) crypto_apply_buf(&crp->crp_obuf, crp->crp_payload_output_start, crp->crp_payload_length, - __DECONST(int (*)(void *, void *, u_int), - ses->hash_update), &sctx); + ses->hash_update, &sctx); else crypto_apply(crp, crp->crp_payload_start, - crp->crp_payload_length, - __DECONST(int (*)(void *, void *, u_int), - ses->hash_update), &sctx); + crp->crp_payload_length, ses->hash_update, &sctx); ses->hash_finalize(res, &sctx); /* Outer hash: (K ^ OPAD) || inner hash */ @@ -873,20 +873,17 @@ aesni_cipher_mac(struct aesni_session *ses, struct cry ses->hash_init(&sctx); crypto_apply(crp, crp->crp_aad_start, crp->crp_aad_length, - __DECONST(int (*)(void *, void *, u_int), ses->hash_update), - &sctx); + ses->hash_update, &sctx); if (CRYPTO_HAS_OUTPUT_BUFFER(crp) && CRYPTO_OP_IS_ENCRYPT(crp->crp_op)) crypto_apply_buf(&crp->crp_obuf, crp->crp_payload_output_start, crp->crp_payload_length, - __DECONST(int (*)(void *, void *, u_int), - ses->hash_update), &sctx); + ses->hash_update, &sctx); else crypto_apply(crp, crp->crp_payload_start, crp->crp_payload_length, - __DECONST(int (*)(void *, void *, u_int), - ses->hash_update), &sctx); + ses->hash_update, &sctx); ses->hash_finalize(res, &sctx); } Modified: head/sys/crypto/aesni/aesni.h ============================================================================== --- head/sys/crypto/aesni/aesni.h Thu May 28 08:41:18 2020 (r361582) +++ head/sys/crypto/aesni/aesni.h Thu May 28 09:13:20 2020 (r361583) @@ -63,7 +63,7 @@ struct aesni_session { int mlen; int hash_len; void (*hash_init)(void *); - void (*hash_update)(void *, const void *, unsigned); + int (*hash_update)(void *, void *, unsigned); void (*hash_finalize)(void *, void *); bool hmac; }; From owner-svn-src-all@freebsd.org Thu May 28 09:25:09 2020 Return-Path: Delivered-To: svn-src-all@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 4231232BBA9; Thu, 28 May 2020 09:25:09 +0000 (UTC) (envelope-from hps@selasky.org) Received: from mail.turbocat.net (turbocat.net [88.99.82.50]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 49Xj3862sgz4GvD; Thu, 28 May 2020 09:25:08 +0000 (UTC) (envelope-from hps@selasky.org) Received: from hps2020.home.selasky.org (unknown [62.141.129.235]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by mail.turbocat.net (Postfix) with ESMTPSA id 3CB1C2601B1; Thu, 28 May 2020 11:25:01 +0200 (CEST) Subject: Re: svn commit: r361575 - head/sys/fs/nfsclient To: "Alexander V. Chernikov" , src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org References: <202005280735.04S7Z7R9049486@repo.freebsd.org> From: Hans Petter Selasky Message-ID: <3b651d92-be08-629c-7f53-049422f270ba@selasky.org> Date: Thu, 28 May 2020 11:24:46 +0200 User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:68.0) Gecko/20100101 Thunderbird/68.8.0 MIME-Version: 1.0 In-Reply-To: <202005280735.04S7Z7R9049486@repo.freebsd.org> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-Rspamd-Queue-Id: 49Xj3862sgz4GvD X-Spamd-Bar: ---- Authentication-Results: mx1.freebsd.org; none X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[]; ASN(0.00)[asn:24940, ipnet:88.99.0.0/16, country:DE] X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2020 09:25:09 -0000 On 2020-05-28 09:35, Alexander V. Chernikov wrote: > Author: melifaro > Date: Thu May 28 07:35:07 2020 > New Revision: 361575 > URL: https://svnweb.freebsd.org/changeset/base/361575 > > Log: > Make NFS address selection use fib4_lookup(). > > fib4_lookup_nh_ represents pre-epoch generation of fib api, > providing less guarantees over pointer validness and requiring > on-stack data copying. > Switch call to use new fib4_lookup(), allowing to eventually > deprecate old api. > > Differential Revision: https://reviews.freebsd.org/D24977 > > Modified: > head/sys/fs/nfsclient/nfs_clport.c > FYI: --- nfs_clport.o --- /usr/src/sys/fs/nfsclient/nfs_clport.c:974:6: error: unused variable 'error' [-Werror,-Wunused-variable] int error, fibnum; ^ 1 error generated. *** [nfs_clport.o] Error code 1 --HPS From owner-svn-src-all@freebsd.org Thu May 28 09:52:29 2020 Return-Path: Delivered-To: svn-src-all@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 F40EE32C49C; Thu, 28 May 2020 09:52:28 +0000 (UTC) (envelope-from melifaro@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49Xjfh68fzz4JxK; Thu, 28 May 2020 09:52:28 +0000 (UTC) (envelope-from melifaro@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 CE7A12453C; Thu, 28 May 2020 09:52:28 +0000 (UTC) (envelope-from melifaro@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04S9qS0L038125; Thu, 28 May 2020 09:52:28 GMT (envelope-from melifaro@FreeBSD.org) Received: (from melifaro@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04S9qSok038123; Thu, 28 May 2020 09:52:28 GMT (envelope-from melifaro@FreeBSD.org) Message-Id: <202005280952.04S9qSok038123@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: melifaro set sender to melifaro@FreeBSD.org using -f From: "Alexander V. Chernikov" Date: Thu, 28 May 2020 09:52:28 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361584 - head/sys/fs/nfsclient X-SVN-Group: head X-SVN-Commit-Author: melifaro X-SVN-Commit-Paths: head/sys/fs/nfsclient X-SVN-Commit-Revision: 361584 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2020 09:52:29 -0000 Author: melifaro Date: Thu May 28 09:52:28 2020 New Revision: 361584 URL: https://svnweb.freebsd.org/changeset/base/361584 Log: Fix NOINET6 build broken by r361575. Reported by: ci, hps Modified: head/sys/fs/nfsclient/nfs_clport.c Modified: head/sys/fs/nfsclient/nfs_clport.c ============================================================================== --- head/sys/fs/nfsclient/nfs_clport.c Thu May 28 09:13:20 2020 (r361583) +++ head/sys/fs/nfsclient/nfs_clport.c Thu May 28 09:52:28 2020 (r361584) @@ -971,7 +971,7 @@ u_int8_t * nfscl_getmyip(struct nfsmount *nmp, struct in6_addr *paddr, int *isinet6p) { #if defined(INET6) || defined(INET) - int error, fibnum; + int fibnum; fibnum = curthread->td_proc->p_fibnum; #endif @@ -1007,6 +1007,7 @@ nfscl_getmyip(struct nfsmount *nmp, struct in6_addr *p #ifdef INET6 if (nmp->nm_nam->sa_family == AF_INET6) { struct sockaddr_in6 *sin6; + int error; sin6 = (struct sockaddr_in6 *)nmp->nm_nam; From owner-svn-src-all@freebsd.org Thu May 28 09:58:12 2020 Return-Path: Delivered-To: svn-src-all@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 AD87232C6BC; Thu, 28 May 2020 09:58:12 +0000 (UTC) (envelope-from peter@rulingia.com) Received: from vtr.rulingia.com (vtr.rulingia.com [IPv6:2001:19f0:5801:ebe:5400:1ff:fe53:30fd]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "vtr.rulingia.com", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 49XjnH2dlJz4KHp; Thu, 28 May 2020 09:58:10 +0000 (UTC) (envelope-from peter@rulingia.com) Received: from server.rulingia.com (ppp239-208.static.internode.on.net [59.167.239.208]) by vtr.rulingia.com (8.15.2/8.15.2) with ESMTPS id 04S9vtr6014662 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 28 May 2020 19:58:01 +1000 (AEST) (envelope-from peter@rulingia.com) X-Bogosity: Ham, spamicity=0.000000 Received: from server.rulingia.com (localhost.rulingia.com [127.0.0.1]) by server.rulingia.com (8.15.2/8.15.2) with ESMTPS id 04S9vncI093740 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Thu, 28 May 2020 19:57:49 +1000 (AEST) (envelope-from peter@server.rulingia.com) Received: (from peter@localhost) by server.rulingia.com (8.15.2/8.15.2/Submit) id 04S9vnSQ093739; Thu, 28 May 2020 19:57:49 +1000 (AEST) (envelope-from peter) Date: Thu, 28 May 2020 19:57:49 +1000 From: Peter Jeremy To: Chuck Silvers Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r361491 - in head/sys: geom kern sys ufs/ffs ufs/ufs Message-ID: <20200528095749.GA91775@server.rulingia.com> References: <202005252347.04PNlWnm061022@repo.freebsd.org> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="cWoXeonUoKmBZSoM" Content-Disposition: inline In-Reply-To: <202005252347.04PNlWnm061022@repo.freebsd.org> X-PGP-Key: http://www.rulingia.com/keys/peter.pgp X-Rspamd-Queue-Id: 49XjnH2dlJz4KHp X-Spamd-Bar: ---- Authentication-Results: mx1.freebsd.org; dkim=none; dmarc=none; spf=pass (mx1.freebsd.org: domain of peter@rulingia.com designates 2001:19f0:5801:ebe:5400:1ff:fe53:30fd as permitted sender) smtp.mailfrom=peter@rulingia.com X-Spamd-Result: default: False [-4.12 / 15.00]; ARC_NA(0.00)[]; NEURAL_HAM_MEDIUM(-0.98)[-0.980]; FROM_HAS_DN(0.00)[]; RCPT_COUNT_THREE(0.00)[4]; TO_DN_SOME(0.00)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; MIME_GOOD(-0.20)[multipart/signed,text/plain]; R_SPF_ALLOW(-0.20)[+mx]; DMARC_NA(0.00)[rulingia.com]; NEURAL_SPAM_SHORT(0.28)[0.283]; NEURAL_HAM_LONG(-1.02)[-1.020]; RCVD_COUNT_THREE(0.00)[3]; SIGNED_PGP(-2.00)[]; FROM_EQ_ENVFROM(0.00)[]; R_DKIM_NA(0.00)[]; MIME_TRACE(0.00)[0:+,1:+,2:~]; ASN(0.00)[asn:20473, ipnet:2001:19f0:5800::/38, country:US]; RCVD_TLS_ALL(0.00)[] X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2020 09:58:12 -0000 --cWoXeonUoKmBZSoM Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On 2020-May-25 23:47:32 +0000, Chuck Silvers wrote: >Author: chs >Date: Mon May 25 23:47:31 2020 >New Revision: 361491 >URL: https://svnweb.freebsd.org/changeset/base/361491 > >Log: > This commit enables a UFS filesystem to do a forcible unmount when > the underlying media fails or becomes inaccessible. For example > when a USB flash memory card hosting a UFS filesystem is unplugged. This breaks the build when FFS is not built into the kernel but GEOM is (eg for a ZFS-only system). Specifically, ffs_subr.c is marked "optional ffs | geom_label" and this commit added a dependency on M_UFSMNT (defined in sys/ufs/ufs/ufs_vfsops.c) to ffs_subr.c. The geom_label dependency exists because sys/geom/label/g_label_ufs.c relies on ffs_sbget() (defined in ffs_subr.c) to taste UFS partitions. I'm not sure of the best fix here - ideally, the new functions this commit adds to ffs_subr.c would be moved to a different file (though it's not immediately clear which file that would be. --=20 Peter Jeremy --cWoXeonUoKmBZSoM Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQKTBAEBCgB9FiEE2M6l8vfIeOACl4uUHZIUommfjLIFAl7PixdfFIAAAAAALgAo aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldEQ4 Q0VBNUYyRjdDODc4RTAwMjk3OEI5NDFEOTIxNEEyNjk5RjhDQjIACgkQHZIUommf jLLbvxAAisMxkPQWKFZhPc6uDwMKufDK+3GqNS9UHqcgDuTOcbh65akGyXa5hahS Nlb8O1l35lTPukp4uTKj1j7boSHy1zPyOS64WSEW2AxwlSW3f7gtPQ0j9LyhxkAe HmgxRZuS3MEbEAbHzbin5GyrnsAlEZenOnZqi8r5dRuYdM5gBsErfgHSb7LZVERE ywL60AAj6lnoPUPwqjhWanMt78J/rDklt4ErunEhbt9Gs6GJ4ti0WrCZu7SFeGZy 3HaT4cx6mZE9T0jrQ4t8xF0JXTXmqE3zi0sYsWPVxsw099VUJDTrTOyvBhCpKTna yfJoElpA0SumUVWLvViJSF9Mkcl52DCao7GejkHPGDJppt5qQMueB59LvvODLgTg dJLOCYD/deYvF6rGIq9bxG9I1Hz1kgyjniT1KXbpCBG3MmS33yo+PYs/9eA/LaeZ HsPcoWTHH59KWCvwny0dpx2v7pTkuE2hZlayHOObuUpWFDikSC2olBhW7mlr66R1 STr6agTvLN4pfb3gddaLI0DLtFcn03SoedIom8fC1ZV0ZEYSP040uVyQbR89JJ/s QQqyLgVahPrJfut+1KIEI4oM9iRhgtpFW662JVXlAF/XltnGiyJGsgffVqiZkVOP zcM3JbjL+s4NBuD5th6L5AedqJNWIiBUY5nj319DqH7kpI/RgVk= =oT0a -----END PGP SIGNATURE----- --cWoXeonUoKmBZSoM-- From owner-svn-src-all@freebsd.org Thu May 28 10:30:26 2020 Return-Path: Delivered-To: svn-src-all@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 AB09032D40B; Thu, 28 May 2020 10:30:26 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from kib.kiev.ua (kib.kiev.ua [IPv6:2001:470:d5e7:1::1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 49XkVT1r8fz4MXk; Thu, 28 May 2020 10:30:24 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from tom.home (kib@localhost [127.0.0.1]) by kib.kiev.ua (8.15.2/8.15.2) with ESMTPS id 04SAUGqK040874 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NO); Thu, 28 May 2020 13:30:19 +0300 (EEST) (envelope-from kostikbel@gmail.com) DKIM-Filter: OpenDKIM Filter v2.10.3 kib.kiev.ua 04SAUGqK040874 Received: (from kostik@localhost) by tom.home (8.15.2/8.15.2/Submit) id 04SAUGLc040873; Thu, 28 May 2020 13:30:16 +0300 (EEST) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: tom.home: kostik set sender to kostikbel@gmail.com using -f Date: Thu, 28 May 2020 13:30:16 +0300 From: Konstantin Belousov To: Justin Hibbits Cc: Brandon Bergren , src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r361568 - head/sys/powerpc/aim Message-ID: <20200528103016.GH48478@kib.kiev.ua> References: <202005280049.04S0n3jS096937@repo.freebsd.org> <20200527214101.59293529@titan.knownspace> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20200527214101.59293529@titan.knownspace> X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED,BAYES_00, DKIM_ADSP_CUSTOM_MED,FORGED_GMAIL_RCVD,FREEMAIL_FROM, NML_ADSP_CUSTOM_MED autolearn=no autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on tom.home X-Rspamd-Queue-Id: 49XkVT1r8fz4MXk X-Spamd-Bar: + Authentication-Results: mx1.freebsd.org; dkim=none; dmarc=fail reason="No valid SPF, No valid DKIM" header.from=gmail.com (policy=none); spf=softfail (mx1.freebsd.org: 2001:470:d5e7:1::1 is neither permitted nor denied by domain of kostikbel@gmail.com) smtp.mailfrom=kostikbel@gmail.com X-Spamd-Result: default: False [1.12 / 15.00]; ARC_NA(0.00)[]; RCVD_TLS_ALL(0.00)[]; FROM_HAS_DN(0.00)[]; TO_DN_SOME(0.00)[]; FREEMAIL_FROM(0.00)[gmail.com]; NEURAL_SPAM_SHORT(0.45)[0.446]; MIME_GOOD(-0.10)[text/plain]; HAS_XAW(0.00)[]; R_SPF_SOFTFAIL(0.00)[~all:c]; RCPT_COUNT_FIVE(0.00)[5]; NEURAL_SPAM_MEDIUM(0.30)[0.299]; TO_MATCH_ENVRCPT_SOME(0.00)[]; NEURAL_SPAM_LONG(0.37)[0.373]; FREEMAIL_TO(0.00)[gmail.com]; FROM_EQ_ENVFROM(0.00)[]; R_DKIM_NA(0.00)[]; MIME_TRACE(0.00)[0:+]; ASN(0.00)[asn:6939, ipnet:2001:470::/32, country:US]; RCVD_COUNT_TWO(0.00)[2]; FREEMAIL_ENVFROM(0.00)[gmail.com]; DMARC_POLICY_SOFTFAIL(0.10)[gmail.com : No valid SPF, No valid DKIM,none] X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2020 10:30:26 -0000 On Wed, May 27, 2020 at 09:41:01PM -0500, Justin Hibbits wrote: > On Thu, 28 May 2020 00:49:03 +0000 (UTC) > Brandon Bergren wrote: > > > Author: bdragon > > Date: Thu May 28 00:49:02 2020 > > New Revision: 361568 > > URL: https://svnweb.freebsd.org/changeset/base/361568 > > > > Log: > > [PowerPC] Fix radix crash when passing -1 from userspace > > > > Found by running libc tests with radix enabled. > > > > Detect unsigned integer wrapping with a postcondition. > > > > Note: Radix MMU is not enabled by default yet. > > > > Sponsored by: Tag1 Consulting, Inc. > > > > Modified: > > head/sys/powerpc/aim/mmu_radix.c > > > > Modified: head/sys/powerpc/aim/mmu_radix.c > > ============================================================================== > > --- head/sys/powerpc/aim/mmu_radix.c Wed May 27 23:20:35 > > 2020 (r361567) +++ head/sys/powerpc/aim/mmu_radix.c Thu > > May 28 00:49:02 2020 (r361568) @@ -6000,7 +6000,8 @@ > > mmu_radix_kremove(vm_offset_t va) int mmu_radix_map_user_ptr(pmap_t > > pm, volatile const void *uaddr, void **kaddr, size_t ulen, size_t > > *klen) { > > - if ((uintptr_t)uaddr + ulen >= VM_MAXUSER_ADDRESS) > > + if ((uintptr_t)uaddr + ulen >= VM_MAXUSER_ADDRESS || > > + (uintptr_t)uaddr + ulen < (uintptr_t)uaddr) > > return (EFAULT); > > > > *kaddr = (void *)(uintptr_t)uaddr; > > Wouldn't > > if ((uintptr_t)uaddr >= VM_MAXUSER_ADDRESS || > (uintptr_t)uaddr + ulen >= VM_MAXUSER_ADDRESS) > > be more appropriate? The committed change is the canonical way to detect unsigned overflow, so I think it is fine and does not depend on specific values of VM_MAXUSER_ADDRESS. From owner-svn-src-all@freebsd.org Thu May 28 13:19:42 2020 Return-Path: Delivered-To: svn-src-all@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 0CD482F21A8; Thu, 28 May 2020 13:19:42 +0000 (UTC) (envelope-from pstef@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49XpFn6fcHz4c45; Thu, 28 May 2020 13:19:41 +0000 (UTC) (envelope-from pstef@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 DF9D826F1A; Thu, 28 May 2020 13:19:41 +0000 (UTC) (envelope-from pstef@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04SDJf9k063850; Thu, 28 May 2020 13:19:41 GMT (envelope-from pstef@FreeBSD.org) Received: (from pstef@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04SDJfbR063849; Thu, 28 May 2020 13:19:41 GMT (envelope-from pstef@FreeBSD.org) Message-Id: <202005281319.04SDJfbR063849@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: pstef set sender to pstef@FreeBSD.org using -f From: Piotr Pawel Stefaniak Date: Thu, 28 May 2020 13:19:41 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-releng@freebsd.org Subject: svn commit: r361585 - releng/11.4/bin/ps X-SVN-Group: releng X-SVN-Commit-Author: pstef X-SVN-Commit-Paths: releng/11.4/bin/ps X-SVN-Commit-Revision: 361585 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2020 13:19:42 -0000 Author: pstef Date: Thu May 28 13:19:41 2020 New Revision: 361585 URL: https://svnweb.freebsd.org/changeset/base/361585 Log: MFS r361026 ps: extend the non-standard option -d (tree view) to work with -p Approved by: re (gjb) Modified: releng/11.4/bin/ps/ps.c Directory Properties: releng/11.4/ (props changed) Modified: releng/11.4/bin/ps/ps.c ============================================================================== --- releng/11.4/bin/ps/ps.c Thu May 28 09:52:28 2020 (r361584) +++ releng/11.4/bin/ps/ps.c Thu May 28 13:19:41 2020 (r361585) @@ -490,7 +490,7 @@ main(int argc, char *argv[]) what = KERN_PROC_PGRP | showthreads; flag = *pgrplist.l.pids; nselectors = 0; - } else if (pidlist.count == 1) { + } else if (pidlist.count == 1 && !descendancy) { what = KERN_PROC_PID | showthreads; flag = *pidlist.l.pids; nselectors = 0; @@ -528,6 +528,14 @@ main(int argc, char *argv[]) if ((kp == NULL && errno != ESRCH) || (kp != NULL && nentries < 0)) xo_errx(1, "%s", kvm_geterr(kd)); nkept = 0; + if (descendancy) + for (elem = 0; elem < pidlist.count; elem++) + for (i = 0; i < nentries; i++) + if (kp[i].ki_ppid == pidlist.l.pids[elem]) { + if (pidlist.count >= pidlist.maxcount) + expand_list(&pidlist); + pidlist.l.pids[pidlist.count++] = kp[i].ki_pid; + } if (nentries > 0) { if ((kinfo = malloc(nentries * sizeof(*kinfo))) == NULL) xo_errx(1, "malloc failed"); From owner-svn-src-all@freebsd.org Thu May 28 13:48:34 2020 Return-Path: Delivered-To: svn-src-all@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 3C7D52F2EA8; Thu, 28 May 2020 13:48:34 +0000 (UTC) (envelope-from takawata@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49Xpv60sW8z4fBM; Thu, 28 May 2020 13:48:34 +0000 (UTC) (envelope-from takawata@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 148E727070; Thu, 28 May 2020 13:48:34 +0000 (UTC) (envelope-from takawata@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04SDmXQw082263; Thu, 28 May 2020 13:48:33 GMT (envelope-from takawata@FreeBSD.org) Received: (from takawata@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04SDmXIj082262; Thu, 28 May 2020 13:48:33 GMT (envelope-from takawata@FreeBSD.org) Message-Id: <202005281348.04SDmXIj082262@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: takawata set sender to takawata@FreeBSD.org using -f From: Takanori Watanabe Date: Thu, 28 May 2020 13:48:33 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361586 - head/usr.sbin/bluetooth/hccontrol X-SVN-Group: head X-SVN-Commit-Author: takawata X-SVN-Commit-Paths: head/usr.sbin/bluetooth/hccontrol X-SVN-Commit-Revision: 361586 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2020 13:48:34 -0000 Author: takawata Date: Thu May 28 13:48:33 2020 New Revision: 361586 URL: https://svnweb.freebsd.org/changeset/base/361586 Log: Fix connection event message string (n->\n) PR: 246664 Submitted by: Marc Veldman (marc@bumblngdork.com) Reported by: Jose Luis Duran (jlduran@gmail.com) Modified: head/usr.sbin/bluetooth/hccontrol/le.c Modified: head/usr.sbin/bluetooth/hccontrol/le.c ============================================================================== --- head/usr.sbin/bluetooth/hccontrol/le.c Thu May 28 13:19:41 2020 (r361585) +++ head/usr.sbin/bluetooth/hccontrol/le.c Thu May 28 13:48:33 2020 (r361586) @@ -1078,7 +1078,7 @@ static void handle_le_connection_event(ng_hci_event_pk "Supervision timeout: %dms\n", 10 * le16toh(conn_event->supervision_timeout)); fprintf(stdout, - "Master clock accuracy: %sn", + "Master clock accuracy: %s\n", hci_mc_accuracy2str( conn_event->master_clock_accuracy)); } From owner-svn-src-all@freebsd.org Thu May 28 14:56:12 2020 Return-Path: Delivered-To: svn-src-all@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 00B2E2F4719; Thu, 28 May 2020 14:56:12 +0000 (UTC) (envelope-from mhorne@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49XrP76Fysz4lkx; Thu, 28 May 2020 14:56:11 +0000 (UTC) (envelope-from mhorne@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 CD5A727F3D; Thu, 28 May 2020 14:56:11 +0000 (UTC) (envelope-from mhorne@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04SEuB8X025190; Thu, 28 May 2020 14:56:11 GMT (envelope-from mhorne@FreeBSD.org) Received: (from mhorne@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04SEuBkO025187; Thu, 28 May 2020 14:56:11 GMT (envelope-from mhorne@FreeBSD.org) Message-Id: <202005281456.04SEuBkO025187@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mhorne set sender to mhorne@FreeBSD.org using -f From: Mitchell Horne Date: Thu, 28 May 2020 14:56:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361587 - in head/sys/riscv: include riscv X-SVN-Group: head X-SVN-Commit-Author: mhorne X-SVN-Commit-Paths: in head/sys/riscv: include riscv X-SVN-Commit-Revision: 361587 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2020 14:56:12 -0000 Author: mhorne Date: Thu May 28 14:56:11 2020 New Revision: 361587 URL: https://svnweb.freebsd.org/changeset/base/361587 Log: Add macros simplifying the fake preload setup This is in preparation for booting via loader(8). Lift these macros from arm64 so we don't need to worry about the size when inserting new elements. This could have been done in r359673, but I didn't think I would be returning to this function so soon. Reviewed by: markj Differential Revision: https://reviews.freebsd.org/D24910 Modified: head/sys/riscv/include/vmparam.h head/sys/riscv/riscv/machdep.c Modified: head/sys/riscv/include/vmparam.h ============================================================================== --- head/sys/riscv/include/vmparam.h Thu May 28 13:48:33 2020 (r361586) +++ head/sys/riscv/include/vmparam.h Thu May 28 14:56:11 2020 (r361587) @@ -190,8 +190,6 @@ #define SHAREDPAGE (VM_MAXUSER_ADDRESS - PAGE_SIZE) #define USRSTACK SHAREDPAGE -#define KERNENTRY (0) - #define VM_EARLY_DTB_ADDRESS (VM_MAX_KERNEL_ADDRESS - (2 * L2_SIZE)) /* Modified: head/sys/riscv/riscv/machdep.c ============================================================================== --- head/sys/riscv/riscv/machdep.c Thu May 28 13:48:33 2020 (r361586) +++ head/sys/riscv/riscv/machdep.c Thu May 28 14:56:11 2020 (r361587) @@ -733,29 +733,36 @@ fake_preload_metadata(struct riscv_bootparams *rvbp) vm_offset_t zstart = 0, zend = 0; #endif vm_offset_t lastaddr; - size_t dtb_size; - int i; + size_t fake_size, dtb_size; - i = 0; +#define PRELOAD_PUSH_VALUE(type, value) do { \ + *(type *)((char *)fake_preload + fake_size) = (value); \ + fake_size += sizeof(type); \ +} while (0) - fake_preload[i++] = MODINFO_NAME; - fake_preload[i++] = strlen("kernel") + 1; - strcpy((char*)&fake_preload[i++], "kernel"); - i += 1; - fake_preload[i++] = MODINFO_TYPE; - fake_preload[i++] = strlen("elf64 kernel") + 1; - strcpy((char*)&fake_preload[i++], "elf64 kernel"); - i += 3; - fake_preload[i++] = MODINFO_ADDR; - fake_preload[i++] = sizeof(vm_offset_t); - *(vm_offset_t *)&fake_preload[i++] = - (vm_offset_t)(KERNBASE + KERNENTRY); - i += 1; - fake_preload[i++] = MODINFO_SIZE; - fake_preload[i++] = sizeof(vm_offset_t); - fake_preload[i++] = (vm_offset_t)&end - - (vm_offset_t)(KERNBASE + KERNENTRY); - i += 1; +#define PRELOAD_PUSH_STRING(str) do { \ + uint32_t ssize; \ + ssize = strlen(str) + 1; \ + PRELOAD_PUSH_VALUE(uint32_t, ssize); \ + strcpy(((char *)fake_preload + fake_size), str); \ + fake_size += ssize; \ + fake_size = roundup(fake_size, sizeof(u_long)); \ +} while (0) + + fake_size = 0; + + PRELOAD_PUSH_VALUE(uint32_t, MODINFO_NAME); + PRELOAD_PUSH_STRING("kernel"); + PRELOAD_PUSH_VALUE(uint32_t, MODINFO_TYPE); + PRELOAD_PUSH_STRING("elf kernel"); + + PRELOAD_PUSH_VALUE(uint32_t, MODINFO_ADDR); + PRELOAD_PUSH_VALUE(uint32_t, sizeof(vm_offset_t)); + PRELOAD_PUSH_VALUE(uint64_t, KERNBASE); + + PRELOAD_PUSH_VALUE(uint32_t, MODINFO_SIZE); + PRELOAD_PUSH_VALUE(uint32_t, sizeof(size_t)); + PRELOAD_PUSH_VALUE(uint64_t, (size_t)((vm_offset_t)&end - KERNBASE)); #ifdef DDB #if 0 /* RISCVTODO */ @@ -777,19 +784,20 @@ fake_preload_metadata(struct riscv_bootparams *rvbp) /* Copy the DTB to KVA space. */ lastaddr = roundup(lastaddr, sizeof(int)); - fake_preload[i++] = MODINFO_METADATA | MODINFOMD_DTBP; - fake_preload[i++] = sizeof(vm_offset_t); - *(vm_offset_t *)&fake_preload[i] = (vm_offset_t)lastaddr; - i += sizeof(vm_offset_t) / sizeof(uint32_t); + PRELOAD_PUSH_VALUE(uint32_t, MODINFO_METADATA | MODINFOMD_DTBP); + PRELOAD_PUSH_VALUE(uint32_t, sizeof(vm_offset_t)); + PRELOAD_PUSH_VALUE(vm_offset_t, lastaddr); dtb_size = fdt_totalsize(rvbp->dtbp_virt); memmove((void *)lastaddr, (const void *)rvbp->dtbp_virt, dtb_size); lastaddr = roundup(lastaddr + dtb_size, sizeof(int)); - fake_preload[i++] = 0; - fake_preload[i] = 0; - preload_metadata = (void *)fake_preload; + /* End marker */ + PRELOAD_PUSH_VALUE(uint32_t, 0); + PRELOAD_PUSH_VALUE(uint32_t, 0); + preload_metadata = (caddr_t)fake_preload; - KASSERT(i < nitems(fake_preload), ("Too many fake_preload items")); + KASSERT(fake_size < sizeof(fake_preload), + ("Too many fake_preload items")); return (lastaddr); } From owner-svn-src-all@freebsd.org Thu May 28 16:34:55 2020 Return-Path: Delivered-To: svn-src-all@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 56E112F6A64; Thu, 28 May 2020 16:34:55 +0000 (UTC) (envelope-from kib@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49Xtb31Mmwz4vNm; Thu, 28 May 2020 16:34:55 +0000 (UTC) (envelope-from kib@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 25CF5981A; Thu, 28 May 2020 16:34:55 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04SGYs0t087401; Thu, 28 May 2020 16:34:54 GMT (envelope-from kib@FreeBSD.org) Received: (from kib@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04SGYrs9087395; Thu, 28 May 2020 16:34:53 GMT (envelope-from kib@FreeBSD.org) Message-Id: <202005281634.04SGYrs9087395@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kib set sender to kib@FreeBSD.org using -f From: Konstantin Belousov Date: Thu, 28 May 2020 16:34:53 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-releng@freebsd.org Subject: svn commit: r361588 - in releng/11.4/sys: amd64/amd64 i386/i386 x86/include x86/x86 X-SVN-Group: releng X-SVN-Commit-Author: kib X-SVN-Commit-Paths: in releng/11.4/sys: amd64/amd64 i386/i386 x86/include x86/x86 X-SVN-Commit-Revision: 361588 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2020 16:34:55 -0000 Author: kib Date: Thu May 28 16:34:53 2020 New Revision: 361588 URL: https://svnweb.freebsd.org/changeset/base/361588 Log: MFC r361299, r361302: MFstable/11 r361558, r361302: Do not consider CAP_RDCL_NO as an indicator for all MDS vulnerabilities handled by hardware. amd64: Add a knob to flush RSB on context switches if machine has SMEP. Approved by: re (gjb) Modified: releng/11.4/sys/amd64/amd64/cpu_switch.S releng/11.4/sys/amd64/amd64/initcpu.c releng/11.4/sys/amd64/amd64/support.S releng/11.4/sys/i386/i386/support.s releng/11.4/sys/x86/include/x86_var.h releng/11.4/sys/x86/x86/cpu_machdep.c Directory Properties: releng/11.4/ (props changed) Modified: releng/11.4/sys/amd64/amd64/cpu_switch.S ============================================================================== --- releng/11.4/sys/amd64/amd64/cpu_switch.S Thu May 28 14:56:11 2020 (r361587) +++ releng/11.4/sys/amd64/amd64/cpu_switch.S Thu May 28 16:34:53 2020 (r361588) @@ -235,6 +235,8 @@ done_load_dr: movq %rax,(%rsp) movq PCPU(CURTHREAD),%rdi call fpu_activate_sw + cmpb $0,cpu_flush_rsb_ctxsw(%rip) + jne rsb_flush ret /* Modified: releng/11.4/sys/amd64/amd64/initcpu.c ============================================================================== --- releng/11.4/sys/amd64/amd64/initcpu.c Thu May 28 14:56:11 2020 (r361587) +++ releng/11.4/sys/amd64/amd64/initcpu.c Thu May 28 16:34:53 2020 (r361588) @@ -232,13 +232,27 @@ initializecpu(void) cr4 |= CR4_FSGSBASE; /* + * If SMEP is present, we only need to flush RSB (by default) + * on context switches, to prevent cross-process ret2spec + * attacks. Do it automatically if ibrs_disable is set, to + * complete the mitigation. + * * Postpone enabling the SMEP on the boot CPU until the page * tables are switched from the boot loader identity mapping * to the kernel tables. The boot loader enables the U bit in * its tables. */ - if (!IS_BSP() && (cpu_stdext_feature & CPUID_STDEXT_SMEP)) - cr4 |= CR4_SMEP; + if (IS_BSP()) { + if (cpu_stdext_feature & CPUID_STDEXT_SMEP && + !TUNABLE_INT_FETCH( + "machdep.mitigations.cpu_flush_rsb_ctxsw", + &cpu_flush_rsb_ctxsw) && + hw_ibrs_disable) + cpu_flush_rsb_ctxsw = 1; + } else { + if (cpu_stdext_feature & CPUID_STDEXT_SMEP) + cr4 |= CR4_SMEP; + } load_cr4(cr4); if ((amd_feature & AMDID_NX) != 0) { msr = rdmsr(MSR_EFER) | EFER_NXE; Modified: releng/11.4/sys/amd64/amd64/support.S ============================================================================== --- releng/11.4/sys/amd64/amd64/support.S Thu May 28 14:56:11 2020 (r361587) +++ releng/11.4/sys/amd64/amd64/support.S Thu May 28 16:34:53 2020 (r361588) @@ -832,23 +832,27 @@ ENTRY(pmap_pti_pcid_invlrng) retq .altmacro - .macro ibrs_seq_label l -handle_ibrs_\l: + .macro rsb_seq_label l +rsb_seq_\l: .endm - .macro ibrs_call_label l - call handle_ibrs_\l + .macro rsb_call_label l + call rsb_seq_\l .endm - .macro ibrs_seq count + .macro rsb_seq count ll=1 .rept \count - ibrs_call_label %(ll) + rsb_call_label %(ll) nop - ibrs_seq_label %(ll) + rsb_seq_label %(ll) addq $8,%rsp ll=ll+1 .endr .endm +ENTRY(rsb_flush) + rsb_seq 32 + ret + /* all callers already saved %rax, %rdx, and %rcx */ ENTRY(handle_ibrs_entry) cmpb $0,hw_ibrs_ibpb_active(%rip) @@ -860,8 +864,7 @@ ENTRY(handle_ibrs_entry) wrmsr movb $1,PCPU(IBPB_SET) testl $CPUID_STDEXT_SMEP,cpu_stdext_feature(%rip) - jne 1f - ibrs_seq 32 + je rsb_flush 1: ret END(handle_ibrs_entry) Modified: releng/11.4/sys/i386/i386/support.s ============================================================================== --- releng/11.4/sys/i386/i386/support.s Thu May 28 14:56:11 2020 (r361587) +++ releng/11.4/sys/i386/i386/support.s Thu May 28 16:34:53 2020 (r361588) @@ -819,8 +819,30 @@ msr_onfault: movl $EFAULT,%eax ret -ENTRY(handle_ibrs_entry) + .altmacro + .macro rsb_seq_label l +rsb_seq_\l: + .endm + .macro rsb_call_label l + call rsb_seq_\l + .endm + .macro rsb_seq count + ll=1 + .rept \count + rsb_call_label %(ll) + nop + rsb_seq_label %(ll) + addl $4,%esp + ll=ll+1 + .endr + .endm + +ENTRY(rsb_flush) + rsb_seq 32 ret + +ENTRY(handle_ibrs_entry) + jmp rsb_flush END(handle_ibrs_entry) ENTRY(handle_ibrs_exit) Modified: releng/11.4/sys/x86/include/x86_var.h ============================================================================== --- releng/11.4/sys/x86/include/x86_var.h Thu May 28 14:56:11 2020 (r361587) +++ releng/11.4/sys/x86/include/x86_var.h Thu May 28 16:34:53 2020 (r361588) @@ -86,6 +86,7 @@ extern int hw_ibrs_ibpb_active; extern int hw_mds_disable; extern int hw_ssb_active; extern int x86_taa_enable; +extern int cpu_flush_rsb_ctxsw; struct pcb; struct thread; Modified: releng/11.4/sys/x86/x86/cpu_machdep.c ============================================================================== --- releng/11.4/sys/x86/x86/cpu_machdep.c Thu May 28 14:56:11 2020 (r361587) +++ releng/11.4/sys/x86/x86/cpu_machdep.c Thu May 28 16:34:53 2020 (r361588) @@ -1049,11 +1049,11 @@ hw_mds_recalculate(void) * reported. For instance, hypervisor might unknowingly * filter the cap out. * For the similar reasons, and for testing, allow to enable - * mitigation even for RDCL_NO or MDS_NO caps. + * mitigation even when MDS_NO cap is set. */ if (cpu_vendor_id != CPU_VENDOR_INTEL || hw_mds_disable == 0 || - ((cpu_ia32_arch_caps & (IA32_ARCH_CAP_RDCL_NO | - IA32_ARCH_CAP_MDS_NO)) != 0 && hw_mds_disable == 3)) { + ((cpu_ia32_arch_caps & IA32_ARCH_CAP_MDS_NO) != 0 && + hw_mds_disable == 3)) { mds_handler = mds_handler_void; } else if (((cpu_stdext_feature3 & CPUID_STDEXT3_MD_CLEAR) != 0 && hw_mds_disable == 3) || hw_mds_disable == 1) { @@ -1360,3 +1360,7 @@ SYSCTL_PROC(_machdep_mitigations_taa, OID_AUTO, state, sysctl_taa_state_handler, "A", "TAA Mitigation state"); +int __read_frequently cpu_flush_rsb_ctxsw; +SYSCTL_INT(_machdep_mitigations, OID_AUTO, flush_rsb_ctxsw, + CTLFLAG_RW | CTLFLAG_NOFETCH, &cpu_flush_rsb_ctxsw, 0, + "Flush Return Stack Buffer on context switch"); From owner-svn-src-all@freebsd.org Thu May 28 17:08:42 2020 Return-Path: Delivered-To: svn-src-all@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 3955C2F81B1; Thu, 28 May 2020 17:08:42 +0000 (UTC) (envelope-from freqlabs@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49XvL214wRz3VBY; Thu, 28 May 2020 17:08:42 +0000 (UTC) (envelope-from freqlabs@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 204C29E0E; Thu, 28 May 2020 17:08:42 +0000 (UTC) (envelope-from freqlabs@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04SH8g2L005681; Thu, 28 May 2020 17:08:42 GMT (envelope-from freqlabs@FreeBSD.org) Received: (from freqlabs@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04SH8dSD005666; Thu, 28 May 2020 17:08:39 GMT (envelope-from freqlabs@FreeBSD.org) Message-Id: <202005281708.04SH8dSD005666@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: freqlabs set sender to freqlabs@FreeBSD.org using -f From: Ryan Moeller Date: Thu, 28 May 2020 17:08:39 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org Subject: svn commit: r361589 - in stable/12: lib/libugidfw sbin/mksnap_ffs sbin/umount sys/fs/nfs sys/fs/nfsserver sys/kern sys/security/mac_bsdextended sys/sys usr.sbin/autofs usr.sbin/mountd X-SVN-Group: stable-12 X-SVN-Commit-Author: freqlabs X-SVN-Commit-Paths: in stable/12: lib/libugidfw sbin/mksnap_ffs sbin/umount sys/fs/nfs sys/fs/nfsserver sys/kern sys/security/mac_bsdextended sys/sys usr.sbin/autofs usr.sbin/mountd X-SVN-Commit-Revision: 361589 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2020 17:08:42 -0000 Author: freqlabs Date: Thu May 28 17:08:39 2020 New Revision: 361589 URL: https://svnweb.freebsd.org/changeset/base/361589 Log: MFC r361313: Deduplicate fsid comparisons Comparing fsid_t objects requires internal knowledge of the fsid structure and yet this is duplicated across a number of places in the code. Simplify by creating a fsidcmp function (macro). Reviewed by: mjg, rmacklem Approved by: mav (mentor) Sponsored by: iXsystems, Inc. Differential Revision: https://reviews.freebsd.org/D24749 Modified: stable/12/lib/libugidfw/ugidfw.c stable/12/sbin/mksnap_ffs/mksnap_ffs.c stable/12/sbin/umount/umount.c stable/12/sys/fs/nfs/nfsdport.h stable/12/sys/fs/nfsserver/nfs_nfsdport.c stable/12/sys/fs/nfsserver/nfs_nfsdsocket.c stable/12/sys/fs/nfsserver/nfs_nfsdstate.c stable/12/sys/kern/vfs_subr.c stable/12/sys/security/mac_bsdextended/mac_bsdextended.c stable/12/sys/security/mac_bsdextended/mac_bsdextended.h stable/12/sys/sys/mount.h stable/12/usr.sbin/autofs/autounmountd.c stable/12/usr.sbin/mountd/mountd.c Directory Properties: stable/12/ (props changed) Modified: stable/12/lib/libugidfw/ugidfw.c ============================================================================== --- stable/12/lib/libugidfw/ugidfw.c Thu May 28 16:34:53 2020 (r361588) +++ stable/12/lib/libugidfw/ugidfw.c Thu May 28 17:08:39 2020 (r361589) @@ -334,9 +334,8 @@ bsde_rule_to_string(struct mac_bsdextended_rule *rule, if (rule->mbr_object.mbo_flags & MBO_FSID_DEFINED) { numfs = getmntinfo(&mntbuf, MNT_NOWAIT); for (i = 0; i < numfs; i++) - if (memcmp(&(rule->mbr_object.mbo_fsid), - &(mntbuf[i].f_fsid), - sizeof(mntbuf[i].f_fsid)) == 0) + if (fsidcmp(&rule->mbr_object.mbo_fsid, + &mntbuf[i].f_fsid) == 0) break; len = snprintf(cur, left, "filesys %s ", i == numfs ? "???" : mntbuf[i].f_mntonname); Modified: stable/12/sbin/mksnap_ffs/mksnap_ffs.c ============================================================================== --- stable/12/sbin/mksnap_ffs/mksnap_ffs.c Thu May 28 16:34:53 2020 (r361588) +++ stable/12/sbin/mksnap_ffs/mksnap_ffs.c Thu May 28 17:08:39 2020 (r361589) @@ -81,8 +81,7 @@ issamefs(const char *path, struct statfs *stfsp) return (-1); if (statfs(path, &stfsbuf) < 0) return (-1); - if ((stfsbuf.f_fsid.val[0] != stfsp->f_fsid.val[0]) || - (stfsbuf.f_fsid.val[1] != stfsp->f_fsid.val[1])) + if (fsidcmp(&stfsbuf.f_fsid, &stfsp->f_fsid) != 0) return (0); return (1); } Modified: stable/12/sbin/umount/umount.c ============================================================================== --- stable/12/sbin/umount/umount.c Thu May 28 16:34:53 2020 (r361588) +++ stable/12/sbin/umount/umount.c Thu May 28 17:08:39 2020 (r361589) @@ -505,8 +505,7 @@ getmntentry(const char *fromname, const char *onname, continue; if (onname != NULL && strcmp(sfs->f_mntonname, onname) != 0) continue; - if (fsid != NULL && bcmp(&sfs->f_fsid, fsid, - sizeof(*fsid)) != 0) + if (fsid != NULL && fsidcmp(&sfs->f_fsid, fsid) != 0) continue; switch (what) { Modified: stable/12/sys/fs/nfs/nfsdport.h ============================================================================== --- stable/12/sys/fs/nfs/nfsdport.h Thu May 28 16:34:53 2020 (r361588) +++ stable/12/sys/fs/nfs/nfsdport.h Thu May 28 17:08:39 2020 (r361589) @@ -85,8 +85,7 @@ struct nfsexstuff { #define NFSVNO_SETEXRDONLY(e) ((e)->nes_exflag = (MNT_EXPORTED|MNT_EXRDONLY)) #define NFSVNO_CMPFH(f1, f2) \ - ((f1)->fh_fsid.val[0] == (f2)->fh_fsid.val[0] && \ - (f1)->fh_fsid.val[1] == (f2)->fh_fsid.val[1] && \ + (fsidcmp(&(f1)->fh_fsid, &(f2)->fh_fsid) == 0 && \ bcmp(&(f1)->fh_fid, &(f2)->fh_fid, sizeof(struct fid)) == 0) #define NFSLOCKHASH(f) \ Modified: stable/12/sys/fs/nfsserver/nfs_nfsdport.c ============================================================================== --- stable/12/sys/fs/nfsserver/nfs_nfsdport.c Thu May 28 16:34:53 2020 (r361588) +++ stable/12/sys/fs/nfsserver/nfs_nfsdport.c Thu May 28 17:08:39 2020 (r361589) @@ -3969,11 +3969,8 @@ nfsrv_pnfscreate(struct vnode *vp, struct vattr *vap, if (tds->nfsdev_nmp != NULL) { if (tds->nfsdev_mdsisset == 0 && ds == NULL) ds = tds; - else if (tds->nfsdev_mdsisset != 0 && - mp->mnt_stat.f_fsid.val[0] == - tds->nfsdev_mdsfsid.val[0] && - mp->mnt_stat.f_fsid.val[1] == - tds->nfsdev_mdsfsid.val[1]) { + else if (tds->nfsdev_mdsisset != 0 && fsidcmp( + &mp->mnt_stat.f_fsid, &tds->nfsdev_mdsfsid) == 0) { ds = fds = tds; break; } @@ -3993,10 +3990,8 @@ nfsrv_pnfscreate(struct vnode *vp, struct vattr *vap, if (tds->nfsdev_nmp != NULL && ((tds->nfsdev_mdsisset == 0 && fds == NULL) || (tds->nfsdev_mdsisset != 0 && fds != NULL && - mp->mnt_stat.f_fsid.val[0] == - tds->nfsdev_mdsfsid.val[0] && - mp->mnt_stat.f_fsid.val[1] == - tds->nfsdev_mdsfsid.val[1]))) { + fsidcmp(&mp->mnt_stat.f_fsid, + &tds->nfsdev_mdsfsid) == 0))) { dsdir[mirrorcnt] = i; dvp[mirrorcnt] = tds->nfsdev_dsdir[i]; mirrorcnt++; @@ -4711,10 +4706,8 @@ nfsrv_dsgetsockmnt(struct vnode *vp, int lktype, char fndds->nfsdev_mdsisset == 0) || (tds->nfsdev_mdsisset != 0 && fndds->nfsdev_mdsisset != 0 && - tds->nfsdev_mdsfsid.val[0] == - mp->mnt_stat.f_fsid.val[0] && - tds->nfsdev_mdsfsid.val[1] == - mp->mnt_stat.f_fsid.val[1]))) { + fsidcmp(&tds->nfsdev_mdsfsid, + &mp->mnt_stat.f_fsid) == 0))) { *newnmpp = tds->nfsdev_nmp; break; } @@ -5689,8 +5682,7 @@ nfsrv_pnfsstatfs(struct statfs *sf, struct mount *mp) /* First, search for matches for same file system. */ TAILQ_FOREACH(ds, &nfsrv_devidhead, nfsdev_list) { if (ds->nfsdev_nmp != NULL && ds->nfsdev_mdsisset != 0 && - ds->nfsdev_mdsfsid.val[0] == mp->mnt_stat.f_fsid.val[0] && - ds->nfsdev_mdsfsid.val[1] == mp->mnt_stat.f_fsid.val[1]) { + fsidcmp(&ds->nfsdev_mdsfsid, &mp->mnt_stat.f_fsid) == 0) { if (++i > nfsrv_devidcnt) break; *tdvpp++ = ds->nfsdev_dvp; Modified: stable/12/sys/fs/nfsserver/nfs_nfsdsocket.c ============================================================================== --- stable/12/sys/fs/nfsserver/nfs_nfsdsocket.c Thu May 28 16:34:53 2020 (r361588) +++ stable/12/sys/fs/nfsserver/nfs_nfsdsocket.c Thu May 28 17:08:39 2020 (r361589) @@ -995,10 +995,7 @@ nfsrvd_compound(struct nfsrv_descript *nd, int isdgram if (!error && !nd->nd_repstat) { if (op == NFSV4OP_LOOKUP || op == NFSV4OP_LOOKUPP) { new_mp = nvp->v_mount; - if (cur_fsid.val[0] != - new_mp->mnt_stat.f_fsid.val[0] || - cur_fsid.val[1] != - new_mp->mnt_stat.f_fsid.val[1]) { + if (fsidcmp(&cur_fsid, &new_mp->mnt_stat.f_fsid) != 0) { /* crossed a server mount point */ nd->nd_repstat = nfsvno_checkexp(new_mp, nd->nd_nam, &nes, &credanon); @@ -1027,8 +1024,7 @@ nfsrvd_compound(struct nfsrv_descript *nd, int isdgram if (vp == NULL || savevp == NULL) { nd->nd_repstat = NFSERR_NOFILEHANDLE; break; - } else if (cur_fsid.val[0] != save_fsid.val[0] || - cur_fsid.val[1] != save_fsid.val[1]) { + } else if (fsidcmp(&cur_fsid, &save_fsid) != 0) { nd->nd_repstat = NFSERR_XDEV; break; } Modified: stable/12/sys/fs/nfsserver/nfs_nfsdstate.c ============================================================================== --- stable/12/sys/fs/nfsserver/nfs_nfsdstate.c Thu May 28 16:34:53 2020 (r361588) +++ stable/12/sys/fs/nfsserver/nfs_nfsdstate.c Thu May 28 17:08:39 2020 (r361589) @@ -7520,8 +7520,7 @@ nfsrv_freelayouts(nfsquad_t *clid, fsid_t *fs, int lay TAILQ_FOREACH_SAFE(lyp, &lhyp->list, lay_list, nlyp) { if (clid->qval != lyp->lay_clientid.qval) continue; - if (fs != NULL && (fs->val[0] != lyp->lay_fsid.val[0] || - fs->val[1] != lyp->lay_fsid.val[1])) + if (fs != NULL && fsidcmp(fs, &lyp->lay_fsid) != 0) continue; if (laytype != lyp->lay_type) continue; @@ -7815,10 +7814,8 @@ nfsrv_delds(char *devid, NFSPROC_T *p) TAILQ_FOREACH(ds, &nfsrv_devidhead, nfsdev_list) { if (ds != fndds && ds->nfsdev_nmp != NULL && ds->nfsdev_mdsisset != 0 && - ds->nfsdev_mdsfsid.val[0] == - fndds->nfsdev_mdsfsid.val[0] && - ds->nfsdev_mdsfsid.val[1] == - fndds->nfsdev_mdsfsid.val[1]) { + fsidcmp(&ds->nfsdev_mdsfsid, + &fndds->nfsdev_mdsfsid) == 0) { fndmirror = 1; break; } @@ -8717,10 +8714,8 @@ nfsrv_findmirroredds(struct nfsmount *nmp) TAILQ_FOREACH(ds, &nfsrv_devidhead, nfsdev_list) { if (ds != fndds && ds->nfsdev_nmp != NULL && ds->nfsdev_mdsisset != 0 && - ds->nfsdev_mdsfsid.val[0] == - fndds->nfsdev_mdsfsid.val[0] && - ds->nfsdev_mdsfsid.val[1] == - fndds->nfsdev_mdsfsid.val[1]) { + fsidcmp(&ds->nfsdev_mdsfsid, + &fndds->nfsdev_mdsfsid) == 0) { fndmirror = 1; break; } Modified: stable/12/sys/kern/vfs_subr.c ============================================================================== --- stable/12/sys/kern/vfs_subr.c Thu May 28 16:34:53 2020 (r361588) +++ stable/12/sys/kern/vfs_subr.c Thu May 28 17:08:39 2020 (r361589) @@ -711,8 +711,7 @@ vfs_getvfs(fsid_t *fsid) CTR2(KTR_VFS, "%s: fsid %p", __func__, fsid); mtx_lock(&mountlist_mtx); TAILQ_FOREACH(mp, &mountlist, mnt_list) { - if (mp->mnt_stat.f_fsid.val[0] == fsid->val[0] && - mp->mnt_stat.f_fsid.val[1] == fsid->val[1]) { + if (fsidcmp(&mp->mnt_stat.f_fsid, fsid) == 0) { vfs_ref(mp); mtx_unlock(&mountlist_mtx); return (mp); @@ -747,16 +746,13 @@ vfs_busyfs(fsid_t *fsid) hash = fsid->val[0] ^ fsid->val[1]; hash = (hash >> 16 ^ hash) & (FSID_CACHE_SIZE - 1); mp = cache[hash]; - if (mp == NULL || - mp->mnt_stat.f_fsid.val[0] != fsid->val[0] || - mp->mnt_stat.f_fsid.val[1] != fsid->val[1]) + if (mp == NULL || fsidcmp(&mp->mnt_stat.f_fsid, fsid) != 0) goto slow; if (vfs_busy(mp, 0) != 0) { cache[hash] = NULL; goto slow; } - if (mp->mnt_stat.f_fsid.val[0] == fsid->val[0] && - mp->mnt_stat.f_fsid.val[1] == fsid->val[1]) + if (fsidcmp(&mp->mnt_stat.f_fsid, fsid) == 0) return (mp); else vfs_unbusy(mp); @@ -764,8 +760,7 @@ vfs_busyfs(fsid_t *fsid) slow: mtx_lock(&mountlist_mtx); TAILQ_FOREACH(mp, &mountlist, mnt_list) { - if (mp->mnt_stat.f_fsid.val[0] == fsid->val[0] && - mp->mnt_stat.f_fsid.val[1] == fsid->val[1]) { + if (fsidcmp(&mp->mnt_stat.f_fsid, fsid) == 0) { error = vfs_busy(mp, MBF_MNTLSTLOCK); if (error) { cache[hash] = NULL; Modified: stable/12/sys/security/mac_bsdextended/mac_bsdextended.c ============================================================================== --- stable/12/sys/security/mac_bsdextended/mac_bsdextended.c Thu May 28 16:34:53 2020 (r361588) +++ stable/12/sys/security/mac_bsdextended/mac_bsdextended.c Thu May 28 17:08:39 2020 (r361589) @@ -301,9 +301,8 @@ ugidfw_rulecheck(struct mac_bsdextended_rule *rule, } if (rule->mbr_object.mbo_flags & MBO_FSID_DEFINED) { - match = (bcmp(&(vp->v_mount->mnt_stat.f_fsid), - &(rule->mbr_object.mbo_fsid), - sizeof(rule->mbr_object.mbo_fsid)) == 0); + match = (fsidcmp(&vp->v_mount->mnt_stat.f_fsid, + &rule->mbr_object.mbo_fsid) == 0); if (rule->mbr_object.mbo_neg & MBO_FSID_DEFINED) match = !match; if (!match) Modified: stable/12/sys/security/mac_bsdextended/mac_bsdextended.h ============================================================================== --- stable/12/sys/security/mac_bsdextended/mac_bsdextended.h Thu May 28 16:34:53 2020 (r361588) +++ stable/12/sys/security/mac_bsdextended/mac_bsdextended.h Thu May 28 17:08:39 2020 (r361589) @@ -101,7 +101,7 @@ struct mac_bsdextended_object { uid_t mbo_uid_max; gid_t mbo_gid_min; gid_t mbo_gid_max; - struct fsid mbo_fsid; + fsid_t mbo_fsid; int mbo_type; }; Modified: stable/12/sys/sys/mount.h ============================================================================== --- stable/12/sys/sys/mount.h Thu May 28 16:34:53 2020 (r361588) +++ stable/12/sys/sys/mount.h Thu May 28 17:08:39 2020 (r361589) @@ -52,6 +52,8 @@ typedef struct fsid { int32_t val[2]; } fsid_t; /* filesystem id type */ +#define fsidcmp(a, b) memcmp((a), (b), sizeof(fsid_t)) + /* * File identifier. * These are unique per filesystem on a single machine. Modified: stable/12/usr.sbin/autofs/autounmountd.c ============================================================================== --- stable/12/usr.sbin/autofs/autounmountd.c Thu May 28 16:34:53 2020 (r361588) +++ stable/12/usr.sbin/autofs/autounmountd.c Thu May 28 17:08:39 2020 (r361589) @@ -67,8 +67,7 @@ automounted_find(fsid_t fsid) struct automounted_fs *af; TAILQ_FOREACH(af, &automounted, af_next) { - if (af->af_fsid.val[0] == fsid.val[0] && - af->af_fsid.val[1] == fsid.val[1]) + if (fsidcmp(&af->af_fsid, &fsid) == 0) return (af); } Modified: stable/12/usr.sbin/mountd/mountd.c ============================================================================== --- stable/12/usr.sbin/mountd/mountd.c Thu May 28 16:34:53 2020 (r361588) +++ stable/12/usr.sbin/mountd/mountd.c Thu May 28 17:08:39 2020 (r361589) @@ -1568,10 +1568,8 @@ get_exportlist_one(int passno) ep = get_exp(); } else { if (ep) { - if (ep->ex_fs.val[0] != - fsb.f_fsid.val[0] || - ep->ex_fs.val[1] != - fsb.f_fsid.val[1]) { + if (fsidcmp(&ep->ex_fs, &fsb.f_fsid) + != 0) { getexp_err(ep, tgrp, "fsid mismatch"); goto nextline; @@ -2088,8 +2086,7 @@ compare_nmount_exportlist(struct iovec *iov, int iovle if ((oep->ex_flag & EX_DONE) == 0) { LOGDEBUG("not done delete=%s", oep->ex_fsdir); if (statfs(oep->ex_fsdir, &ofs) >= 0 && - oep->ex_fs.val[0] == ofs.f_fsid.val[0] && - oep->ex_fs.val[1] == ofs.f_fsid.val[1]) { + fsidcmp(&oep->ex_fs, &ofs.f_fsid) == 0) { LOGDEBUG("do delete"); /* * Clear has_publicfh if if was set @@ -2353,8 +2350,7 @@ ex_search(fsid_t *fsid, struct exportlisthead *exhp) i = EXPHASH(fsid); SLIST_FOREACH(ep, &exhp[i], entries) { - if (ep->ex_fs.val[0] == fsid->val[0] && - ep->ex_fs.val[1] == fsid->val[1]) + if (fsidcmp(&ep->ex_fs, fsid) == 0) return (ep); } @@ -3122,8 +3118,7 @@ do_mount(struct exportlist *ep, struct grouplist *grp, * filesystem. */ if (statfs(dirp, &fsb1) != 0 || - bcmp(&fsb1.f_fsid, &fsb->f_fsid, - sizeof (fsb1.f_fsid)) != 0) { + fsidcmp(&fsb1.f_fsid, &fsb->f_fsid) != 0) { *cp = savedc; syslog(LOG_ERR, "can't export %s %s", dirp, From owner-svn-src-all@freebsd.org Thu May 28 18:12:05 2020 Return-Path: Delivered-To: svn-src-all@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 D7C802F95B4; Thu, 28 May 2020 18:12:05 +0000 (UTC) (envelope-from mav@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49Xwl94z1yz3Zw8; Thu, 28 May 2020 18:12:05 +0000 (UTC) (envelope-from mav@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 A5D60A82A; Thu, 28 May 2020 18:12:05 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04SIC5DQ047005; Thu, 28 May 2020 18:12:05 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04SIC5d3047004; Thu, 28 May 2020 18:12:05 GMT (envelope-from mav@FreeBSD.org) Message-Id: <202005281812.04SIC5d3047004@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 28 May 2020 18:12:05 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361590 - head/sys/cam/ctl X-SVN-Group: head X-SVN-Commit-Author: mav X-SVN-Commit-Paths: head/sys/cam/ctl X-SVN-Commit-Revision: 361590 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2020 18:12:05 -0000 Author: mav Date: Thu May 28 18:12:05 2020 New Revision: 361590 URL: https://svnweb.freebsd.org/changeset/base/361590 Log: Remove ctl_free_beio() LUN and ctl_io dependencies. This slightly simplifies the code, plus may be a ground for asynchronous buffer free. MFC after: 2 weeks Sponsored by: iXsystems, Inc. Modified: head/sys/cam/ctl/ctl_backend_block.c Modified: head/sys/cam/ctl/ctl_backend_block.c ============================================================================== --- head/sys/cam/ctl/ctl_backend_block.c Thu May 28 17:08:39 2020 (r361589) +++ head/sys/cam/ctl/ctl_backend_block.c Thu May 28 18:12:05 2020 (r361590) @@ -162,7 +162,6 @@ struct ctl_be_block_lun { cbb_dispatch_t unmap; cbb_dispatch_t get_lba_status; cbb_getattr_t getattr; - uma_zone_t lun_zone; uint64_t size_blocks; uint64_t size_bytes; struct ctl_be_block_softc *softc; @@ -187,9 +186,10 @@ struct ctl_be_block_lun { struct ctl_be_block_softc { struct sx modify_lock; struct mtx lock; - uma_zone_t beio_zone; int num_luns; SLIST_HEAD(, ctl_be_block_lun) lun_list; + uma_zone_t beio_zone; + uma_zone_t buf_zone; }; static struct ctl_be_block_softc backend_block_softc; @@ -202,6 +202,7 @@ struct ctl_be_block_io { struct ctl_sg_entry sg_segs[CTLBLK_MAX_SEGS]; struct iovec xiovecs[CTLBLK_MAX_SEGS]; int bio_cmd; + int two_sglists; int num_segs; int num_bios_sent; int num_bios_done; @@ -310,32 +311,20 @@ ctl_alloc_beio(struct ctl_be_block_softc *softc) static void ctl_free_beio(struct ctl_be_block_io *beio) { - int duplicate_free; + struct ctl_be_block_softc *softc = beio->softc; int i; - duplicate_free = 0; - for (i = 0; i < beio->num_segs; i++) { - if (beio->sg_segs[i].addr == NULL) - duplicate_free++; + uma_zfree(softc->buf_zone, beio->sg_segs[i].addr); - uma_zfree(beio->lun->lun_zone, beio->sg_segs[i].addr); - beio->sg_segs[i].addr = NULL; - /* For compare we had two equal S/G lists. */ - if (ARGS(beio->io)->flags & CTL_LLF_COMPARE) { - uma_zfree(beio->lun->lun_zone, + if (beio->two_sglists) { + uma_zfree(softc->buf_zone, beio->sg_segs[i + CTLBLK_HALF_SEGS].addr); - beio->sg_segs[i + CTLBLK_HALF_SEGS].addr = NULL; } } - if (duplicate_free > 0) { - printf("%s: %d duplicate frees out of %d segments\n", __func__, - duplicate_free, beio->num_segs); - } - - uma_zfree(beio->softc->beio_zone, beio); + uma_zfree(softc->beio_zone, beio); } static void @@ -1260,6 +1249,7 @@ static void ctl_be_block_cw_dispatch_ws(struct ctl_be_block_lun *be_lun, union ctl_io *io) { + struct ctl_be_block_softc *softc = be_lun->softc; struct ctl_be_lun *cbe_lun = &be_lun->cbe_lun; struct ctl_be_block_io *beio; struct ctl_lba_len_flags *lbalen; @@ -1324,7 +1314,7 @@ ctl_be_block_cw_dispatch_ws(struct ctl_be_block_lun *b } else seglen -= seglen % cbe_lun->blocksize; beio->sg_segs[i].len = seglen; - beio->sg_segs[i].addr = uma_zalloc(be_lun->lun_zone, M_WAITOK); + beio->sg_segs[i].addr = uma_zalloc(softc->buf_zone, M_WAITOK); DPRINTF("segment %d addr %p len %zd\n", i, beio->sg_segs[i].addr, beio->sg_segs[i].len); @@ -1578,10 +1568,12 @@ ctl_be_block_dispatch(struct ctl_be_block_lun *be_lun, DPRINTF("%s at LBA %jx len %u @%ju\n", (beio->bio_cmd == BIO_READ) ? "READ" : "WRITE", (uintmax_t)lbalen->lba, lbalen->len, bptrlen->len); - if (lbalen->flags & CTL_LLF_COMPARE) + if (lbalen->flags & CTL_LLF_COMPARE) { + beio->two_sglists = 1; lbas = CTLBLK_HALF_IO_SIZE; - else + } else { lbas = CTLBLK_MAX_IO_SIZE; + } lbas = MIN(lbalen->len - bptrlen->len, lbas / cbe_lun->blocksize); beio->io_offset = (lbalen->lba + bptrlen->len) * cbe_lun->blocksize; beio->io_len = lbas * cbe_lun->blocksize; @@ -1595,17 +1587,17 @@ ctl_be_block_dispatch(struct ctl_be_block_lun *be_lun, * Setup the S/G entry for this chunk. */ beio->sg_segs[i].len = min(CTLBLK_MAX_SEG, len_left); - beio->sg_segs[i].addr = uma_zalloc(be_lun->lun_zone, M_WAITOK); + beio->sg_segs[i].addr = uma_zalloc(softc->buf_zone, M_WAITOK); DPRINTF("segment %d addr %p len %zd\n", i, beio->sg_segs[i].addr, beio->sg_segs[i].len); /* Set up second segment for compare operation. */ - if (lbalen->flags & CTL_LLF_COMPARE) { + if (beio->two_sglists) { beio->sg_segs[i + CTLBLK_HALF_SEGS].len = beio->sg_segs[i].len; beio->sg_segs[i + CTLBLK_HALF_SEGS].addr = - uma_zalloc(be_lun->lun_zone, M_WAITOK); + uma_zalloc(softc->buf_zone, M_WAITOK); } beio->num_segs++; @@ -1615,7 +1607,7 @@ ctl_be_block_dispatch(struct ctl_be_block_lun *be_lun, beio->beio_cont = ctl_be_block_next; io->scsiio.be_move_done = ctl_be_block_move_done; /* For compare we have separate S/G lists for read and datamove. */ - if (lbalen->flags & CTL_LLF_COMPARE) + if (beio->two_sglists) io->scsiio.kern_data_ptr = (uint8_t *)&beio->sg_segs[CTLBLK_HALF_SEGS]; else io->scsiio.kern_data_ptr = (uint8_t *)beio->sg_segs; @@ -2228,13 +2220,6 @@ ctl_be_block_create(struct ctl_be_block_softc *softc, mtx_init(&be_lun->io_lock, "ctlblock io", NULL, MTX_DEF); mtx_init(&be_lun->queue_lock, "ctlblock queue", NULL, MTX_DEF); cbe_lun->options = nvlist_clone(req->args_nvl); - be_lun->lun_zone = uma_zcreate("ctlblock", CTLBLK_MAX_SEG, - NULL, NULL, NULL, NULL, /*align*/ 0, /*flags*/0); - if (be_lun->lun_zone == NULL) { - snprintf(req->error_str, sizeof(req->error_str), - "error allocating UMA zone"); - goto bailout_error; - } if (params->flags & CTL_LUN_FLAG_DEV_TYPE) cbe_lun->lun_type = params->device_type; @@ -2404,8 +2389,6 @@ bailout_error: ctl_be_block_close(be_lun); if (be_lun->dev_path != NULL) free(be_lun->dev_path, M_CTLBLK); - if (be_lun->lun_zone != NULL) - uma_zdestroy(be_lun->lun_zone); nvlist_destroy(cbe_lun->options); mtx_destroy(&be_lun->queue_lock); mtx_destroy(&be_lun->io_lock); @@ -2600,7 +2583,6 @@ ctl_be_block_lun_shutdown(void *lun) taskqueue_free(be_lun->io_taskqueue); if (be_lun->disk_stats != NULL) devstat_remove_entry(be_lun->disk_stats); - uma_zdestroy(be_lun->lun_zone); nvlist_destroy(be_lun->cbe_lun.options); free(be_lun->dev_path, M_CTLBLK); mtx_destroy(&be_lun->queue_lock); @@ -2782,6 +2764,8 @@ ctl_be_block_init(void) mtx_init(&softc->lock, "ctlblock", NULL, MTX_DEF); softc->beio_zone = uma_zcreate("beio", sizeof(struct ctl_be_block_io), NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0); + softc->buf_zone = uma_zcreate("ctlblock", CTLBLK_MAX_SEG, + NULL, NULL, NULL, NULL, /*align*/ 0, /*flags*/0); SLIST_INIT(&softc->lun_list); return (0); } @@ -2807,6 +2791,7 @@ ctl_be_block_shutdown(void) mtx_lock(&softc->lock); } mtx_unlock(&softc->lock); + uma_zdestroy(softc->buf_zone); uma_zdestroy(softc->beio_zone); mtx_destroy(&softc->lock); sx_destroy(&softc->modify_lock); From owner-svn-src-all@freebsd.org Thu May 28 18:29:57 2020 Return-Path: Delivered-To: svn-src-all@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 B528C2F9B2A; Thu, 28 May 2020 18:29:57 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from smtp.freebsd.org (smtp.freebsd.org [96.47.72.83]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "smtp.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 49Xx7n4Q4Bz3cBq; Thu, 28 May 2020 18:29:57 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from John-Baldwins-MacBook-Pro-274.local (unknown [IPv6:2601:648:8203:2990:40bf:92c3:4b1a:f502]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) (Authenticated sender: jhb) by smtp.freebsd.org (Postfix) with ESMTPSA id 252FC27191; Thu, 28 May 2020 18:29:57 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Subject: Re: svn commit: r361583 - head/sys/crypto/aesni To: Marcin Wojtas , src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org References: <202005280913.04S9DKWv013795@repo.freebsd.org> From: John Baldwin Autocrypt: addr=jhb@FreeBSD.org; keydata= mQGiBETQ+XcRBADMFybiq69u+fJRy/0wzqTNS8jFfWaBTs5/OfcV7wWezVmf9sgwn8TW0Dk0 c9MBl0pz+H01dA2ZSGZ5fXlmFIsee1WEzqeJzpiwd/pejPgSzXB9ijbLHZ2/E0jhGBcVy5Yo /Tw5+U/+laeYKu2xb0XPvM0zMNls1ah5OnP9a6Ql6wCgupaoMySb7DXm2LHD1Z9jTsHcAQMD /1jzh2BoHriy/Q2s4KzzjVp/mQO5DSm2z14BvbQRcXU48oAosHA1u3Wrov6LfPY+0U1tG47X 1BGfnQH+rNAaH0livoSBQ0IPI/8WfIW7ub4qV6HYwWKVqkDkqwcpmGNDbz3gfaDht6nsie5Z pcuCcul4M9CW7Md6zzyvktjnbz61BADGDCopfZC4of0Z3Ka0u8Wik6UJOuqShBt1WcFS8ya1 oB4rc4tXfSHyMF63aPUBMxHR5DXeH+EO2edoSwViDMqWk1jTnYza51rbGY+pebLQOVOxAY7k do5Ordl3wklBPMVEPWoZ61SdbcjhHVwaC5zfiskcxj5wwXd2E9qYlBqRg7QeSm9obiBCYWxk d2luIDxqaGJARnJlZUJTRC5vcmc+iGAEExECACAFAkTQ+awCGwMGCwkIBwMCBBUCCAMEFgID AQIeAQIXgAAKCRBy3lIGd+N/BI6RAJ9S97fvbME+3hxzE3JUyUZ6vTewDACdE1stFuSfqMvM jomvZdYxIYyTUpC5Ag0ERND5ghAIAPwsO0B7BL+bz8sLlLoQktGxXwXQfS5cInvL17Dsgnr3 1AKa94j9EnXQyPEj7u0d+LmEe6CGEGDh1OcGFTMVrof2ZzkSy4+FkZwMKJpTiqeaShMh+Goj XlwIMDxyADYvBIg3eN5YdFKaPQpfgSqhT+7El7w+wSZZD8pPQuLAnie5iz9C8iKy4/cMSOrH YUK/tO+Nhw8Jjlw94Ik0T80iEhI2t+XBVjwdfjbq3HrJ0ehqdBwukyeJRYKmbn298KOFQVHO EVbHA4rF/37jzaMadK43FgJ0SAhPPF5l4l89z5oPu0b/+5e2inA3b8J3iGZxywjM+Csq1tqz hltEc7Q+E08AAwUIAL+15XH8bPbjNJdVyg2CMl10JNW2wWg2Q6qdljeaRqeR6zFus7EZTwtX sNzs5bP8y51PSUDJbeiy2RNCNKWFMndM22TZnk3GNG45nQd4OwYK0RZVrikalmJY5Q6m7Z16 4yrZgIXFdKj2t8F+x613/SJW1lIr9/bDp4U9tw0V1g3l2dFtD3p3ZrQ3hpoDtoK70ioIAjjH aIXIAcm3FGZFXy503DOA0KaTWwvOVdYCFLm3zWuSOmrX/GsEc7ovasOWwjPn878qVjbUKWwx Q4QkF4OhUV9zPtf9tDSAZ3x7QSwoKbCoRCZ/xbyTUPyQ1VvNy/mYrBcYlzHodsaqUDjHuW+I SQQYEQIACQUCRND5ggIbDAAKCRBy3lIGd+N/BCO8AJ9j1dWVQWxw/YdTbEyrRKOY8YZNwwCf afMAg8QvmOWnHx3wl8WslCaXaE8= Message-ID: <9fdb00be-00e0-6aff-51ad-7a84b4215a4e@FreeBSD.org> Date: Thu, 28 May 2020 11:29:55 -0700 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:68.0) Gecko/20100101 Thunderbird/68.6.0 MIME-Version: 1.0 In-Reply-To: <202005280913.04S9DKWv013795@repo.freebsd.org> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2020 18:29:57 -0000 On 5/28/20 2:13 AM, Marcin Wojtas wrote: > Author: mw > Date: Thu May 28 09:13:20 2020 > New Revision: 361583 > URL: https://svnweb.freebsd.org/changeset/base/361583 > > Log: > Change return types of hash update functions in SHA-NI > > r359374 introduced crypto_apply function which takes as argument a function pointer > that is expected to return an int, however aesni hash update functions > return void. > Because of that the function pointer passed was simply cast with > its return value changed. > This resulted in undefined behavior, in particular when mbuf is used, (ipsec) > m_apply checks return value of function pointer passed to it > and in our case bogusly fails after calculating hash of the first mbuf > in chain. > Fix it by changing signatures of sha update routines in aesni and > dropping the casts. Hmm, I missed one nit in the review. r359374 didn't introduce crypto_apply, it just changed some of the arguments arguments (crp instead of crp_buf and crp_flags). This fix needs to be MFC'd to 12 as well since the issue with the return type is also present there. -- John Baldwin From owner-svn-src-all@freebsd.org Thu May 28 18:48:31 2020 Return-Path: Delivered-To: svn-src-all@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 99F762FA18D; Thu, 28 May 2020 18:48:31 +0000 (UTC) (envelope-from gjb@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49XxYC3bQdz3dbh; Thu, 28 May 2020 18:48:31 +0000 (UTC) (envelope-from gjb@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 761EEB00F; Thu, 28 May 2020 18:48:31 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04SImVAi067289; Thu, 28 May 2020 18:48:31 GMT (envelope-from gjb@FreeBSD.org) Received: (from gjb@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04SImVsJ067288; Thu, 28 May 2020 18:48:31 GMT (envelope-from gjb@FreeBSD.org) Message-Id: <202005281848.04SImVsJ067288@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: gjb set sender to gjb@FreeBSD.org using -f From: Glen Barber Date: Thu, 28 May 2020 18:48:31 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361591 - head/release/tools X-SVN-Group: head X-SVN-Commit-Author: gjb X-SVN-Commit-Paths: head/release/tools X-SVN-Commit-Revision: 361591 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2020 18:48:31 -0000 Author: gjb Date: Thu May 28 18:48:30 2020 New Revision: 361591 URL: https://svnweb.freebsd.org/changeset/base/361591 Log: Include the shells/bash port on Vagrant images, which prevents a shell issue during startup. PR: 245051 MFC after: 1 minute (if approved by re@) X-MFC-for: 11.4-RC2 Sponsored by: Rubicon Communications, LLC (netgate.com) Modified: head/release/tools/vagrant.conf Modified: head/release/tools/vagrant.conf ============================================================================== --- head/release/tools/vagrant.conf Thu May 28 18:12:05 2020 (r361590) +++ head/release/tools/vagrant.conf Thu May 28 18:48:30 2020 (r361591) @@ -8,7 +8,7 @@ export VMSIZE=8G # Packages to install into the image we're creating. This is a deliberately # minimalist set, providing only the packages necessary to bootstrap. -export VM_EXTRA_PACKAGES="firstboot-freebsd-update firstboot-pkgs" +export VM_EXTRA_PACKAGES="shells/bash firstboot-freebsd-update firstboot-pkgs" # Set to a list of third-party software to enable in rc.conf(5). export VM_RC_LIST="firstboot_freebsd_update firstboot_pkgs growfs" From owner-svn-src-all@freebsd.org Thu May 28 18:57:08 2020 Return-Path: Delivered-To: svn-src-all@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 AE1322FA885; Thu, 28 May 2020 18:57:08 +0000 (UTC) (envelope-from gjb@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49Xxl848phz3fMr; Thu, 28 May 2020 18:57:08 +0000 (UTC) (envelope-from gjb@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 85BA7B1A7; Thu, 28 May 2020 18:57:08 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04SIv8ON073364; Thu, 28 May 2020 18:57:08 GMT (envelope-from gjb@FreeBSD.org) Received: (from gjb@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04SIv8iE073363; Thu, 28 May 2020 18:57:08 GMT (envelope-from gjb@FreeBSD.org) Message-Id: <202005281857.04SIv8iE073363@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: gjb set sender to gjb@FreeBSD.org using -f From: Glen Barber Date: Thu, 28 May 2020 18:57:08 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org Subject: svn commit: r361592 - stable/11/release/tools X-SVN-Group: stable-11 X-SVN-Commit-Author: gjb X-SVN-Commit-Paths: stable/11/release/tools X-SVN-Commit-Revision: 361592 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2020 18:57:08 -0000 Author: gjb Date: Thu May 28 18:57:08 2020 New Revision: 361592 URL: https://svnweb.freebsd.org/changeset/base/361592 Log: Include the shells/bash port on Vagrant images, which prevents a shell issue during startup. Approved by: re (kib, insta-MFC) PR: 245051 Sponsored by: Rubicon Communications, LLC (netgate.com) Modified: stable/11/release/tools/vagrant.conf Directory Properties: stable/11/ (props changed) Modified: stable/11/release/tools/vagrant.conf ============================================================================== --- stable/11/release/tools/vagrant.conf Thu May 28 18:48:30 2020 (r361591) +++ stable/11/release/tools/vagrant.conf Thu May 28 18:57:08 2020 (r361592) @@ -8,7 +8,7 @@ export VMSIZE=8G # Packages to install into the image we're creating. This is a deliberately # minimalist set, providing only the packages necessary to bootstrap. -export VM_EXTRA_PACKAGES="firstboot-freebsd-update firstboot-pkgs" +export VM_EXTRA_PACKAGES="shells/bash firstboot-freebsd-update firstboot-pkgs" # Set to a list of third-party software to enable in rc.conf(5). export VM_RC_LIST="firstboot_freebsd_update firstboot_pkgs growfs" From owner-svn-src-all@freebsd.org Thu May 28 18:57:56 2020 Return-Path: Delivered-To: svn-src-all@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 327762FA675; Thu, 28 May 2020 18:57:56 +0000 (UTC) (envelope-from gjb@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49Xxm40c3jz3fXw; Thu, 28 May 2020 18:57:56 +0000 (UTC) (envelope-from gjb@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 1004DB024; Thu, 28 May 2020 18:57:56 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04SIvt8u073459; Thu, 28 May 2020 18:57:55 GMT (envelope-from gjb@FreeBSD.org) Received: (from gjb@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04SIvtpZ073458; Thu, 28 May 2020 18:57:55 GMT (envelope-from gjb@FreeBSD.org) Message-Id: <202005281857.04SIvtpZ073458@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: gjb set sender to gjb@FreeBSD.org using -f From: Glen Barber Date: Thu, 28 May 2020 18:57:55 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org Subject: svn commit: r361593 - stable/12/release/tools X-SVN-Group: stable-12 X-SVN-Commit-Author: gjb X-SVN-Commit-Paths: stable/12/release/tools X-SVN-Commit-Revision: 361593 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2020 18:57:56 -0000 Author: gjb Date: Thu May 28 18:57:55 2020 New Revision: 361593 URL: https://svnweb.freebsd.org/changeset/base/361593 Log: Include the shells/bash port on Vagrant images, which prevents a shell issue during startup. Approved by: re (kib, insta-MFC) PR: 245051 Sponsored by: Rubicon Communications, LLC (netgate.com) Modified: stable/12/release/tools/vagrant.conf Directory Properties: stable/12/ (props changed) Modified: stable/12/release/tools/vagrant.conf ============================================================================== --- stable/12/release/tools/vagrant.conf Thu May 28 18:57:08 2020 (r361592) +++ stable/12/release/tools/vagrant.conf Thu May 28 18:57:55 2020 (r361593) @@ -8,7 +8,7 @@ export VMSIZE=8G # Packages to install into the image we're creating. This is a deliberately # minimalist set, providing only the packages necessary to bootstrap. -export VM_EXTRA_PACKAGES="firstboot-freebsd-update firstboot-pkgs" +export VM_EXTRA_PACKAGES="shells/bash firstboot-freebsd-update firstboot-pkgs" # Set to a list of third-party software to enable in rc.conf(5). export VM_RC_LIST="firstboot_freebsd_update firstboot_pkgs growfs" From owner-svn-src-all@freebsd.org Thu May 28 19:14:45 2020 Return-Path: Delivered-To: svn-src-all@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 986E12FB21F; Thu, 28 May 2020 19:14:45 +0000 (UTC) (envelope-from gjb@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49Xy7S5M4Rz40Ds; Thu, 28 May 2020 19:14:44 +0000 (UTC) (envelope-from gjb@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 76735B05C; Thu, 28 May 2020 19:14:44 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04SJEikx088424; Thu, 28 May 2020 19:14:44 GMT (envelope-from gjb@FreeBSD.org) Received: (from gjb@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04SJEiR4088423; Thu, 28 May 2020 19:14:44 GMT (envelope-from gjb@FreeBSD.org) Message-Id: <202005281914.04SJEiR4088423@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: gjb set sender to gjb@FreeBSD.org using -f From: Glen Barber Date: Thu, 28 May 2020 19:14:44 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-releng@freebsd.org Subject: svn commit: r361594 - releng/11.4/release/tools X-SVN-Group: releng X-SVN-Commit-Author: gjb X-SVN-Commit-Paths: releng/11.4/release/tools X-SVN-Commit-Revision: 361594 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2020 19:14:46 -0000 Author: gjb Date: Thu May 28 19:14:44 2020 New Revision: 361594 URL: https://svnweb.freebsd.org/changeset/base/361594 Log: MFS11 r361592: MFH r361591: Include the shells/bash port on Vagrant images, which prevents a shell issue during startup. PR: 245051 Approved by: re (kib, insta-MFC for inclusion in RC2) Sponsored by: Rubicon Communications, LLC (netgate.com) Modified: releng/11.4/release/tools/vagrant.conf Directory Properties: releng/11.4/ (props changed) Modified: releng/11.4/release/tools/vagrant.conf ============================================================================== --- releng/11.4/release/tools/vagrant.conf Thu May 28 18:57:55 2020 (r361593) +++ releng/11.4/release/tools/vagrant.conf Thu May 28 19:14:44 2020 (r361594) @@ -8,7 +8,7 @@ export VMSIZE=8G # Packages to install into the image we're creating. This is a deliberately # minimalist set, providing only the packages necessary to bootstrap. -export VM_EXTRA_PACKAGES="firstboot-freebsd-update firstboot-pkgs" +export VM_EXTRA_PACKAGES="shells/bash firstboot-freebsd-update firstboot-pkgs" # Set to a list of third-party software to enable in rc.conf(5). export VM_RC_LIST="firstboot_freebsd_update firstboot_pkgs growfs" From owner-svn-src-all@freebsd.org Thu May 28 19:41:02 2020 Return-Path: Delivered-To: svn-src-all@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 1D0272FBFBB; Thu, 28 May 2020 19:41:02 +0000 (UTC) (envelope-from markj@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49Xyjp02gFz431Z; Thu, 28 May 2020 19:41:02 +0000 (UTC) (envelope-from markj@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 F0D54BC19; Thu, 28 May 2020 19:41:01 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04SJf1lC001577; Thu, 28 May 2020 19:41:01 GMT (envelope-from markj@FreeBSD.org) Received: (from markj@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04SJf0G5001570; Thu, 28 May 2020 19:41:00 GMT (envelope-from markj@FreeBSD.org) Message-Id: <202005281941.04SJf0G5001570@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: markj set sender to markj@FreeBSD.org using -f From: Mark Johnston Date: Thu, 28 May 2020 19:41:00 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361595 - in head/sys: amd64/amd64 i386/i386 vm X-SVN-Group: head X-SVN-Commit-Author: markj X-SVN-Commit-Paths: in head/sys: amd64/amd64 i386/i386 vm X-SVN-Commit-Revision: 361595 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2020 19:41:02 -0000 Author: markj Date: Thu May 28 19:41:00 2020 New Revision: 361595 URL: https://svnweb.freebsd.org/changeset/base/361595 Log: Fix boot on systems where NUMA domain 0 is unpopulated. - Add vm_phys_early_add_seg(), complementing vm_phys_early_alloc(), to ensure that segments registered during hammer_time() are placed in the right domain. Otherwise, since the SRAT is not parsed at that point, we just add them to domain 0, which may be incorrect and results in a domain with only several MB worth of memory. - Fix uma_startup1() to try allocating memory for zones from any domain. If domain 0 is unpopulated, the allocation will simply fail, resulting in a page fault slightly later during boot. - Change _vm_phys_domain() to return -1 for addresses not covered by the affinity table, and change vm_phys_early_alloc() to handle wildcard domains. This is necessary on amd64, where the page array is dense and pmap_page_array_startup() may allocate page table pages for non-existent page frames. Reported and tested by: Rafael Kitover Reviewed by: cem (earlier version), kib Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D25001 Modified: head/sys/amd64/amd64/machdep.c head/sys/amd64/amd64/pmap.c head/sys/i386/i386/machdep.c head/sys/i386/i386/pmap.c head/sys/vm/uma_core.c head/sys/vm/vm_phys.c head/sys/vm/vm_phys.h Modified: head/sys/amd64/amd64/machdep.c ============================================================================== --- head/sys/amd64/amd64/machdep.c Thu May 28 19:14:44 2020 (r361594) +++ head/sys/amd64/amd64/machdep.c Thu May 28 19:41:00 2020 (r361595) @@ -1223,7 +1223,7 @@ getmemsize(caddr_t kmdp, u_int64_t first) * Tell the physical memory allocator about pages used to store * the kernel and preloaded data. See kmem_bootstrap_free(). */ - vm_phys_add_seg((vm_paddr_t)kernphys, trunc_page(first)); + vm_phys_early_add_seg((vm_paddr_t)kernphys, trunc_page(first)); bzero(physmap, sizeof(physmap)); physmap_idx = 0; Modified: head/sys/amd64/amd64/pmap.c ============================================================================== --- head/sys/amd64/amd64/pmap.c Thu May 28 19:14:44 2020 (r361594) +++ head/sys/amd64/amd64/pmap.c Thu May 28 19:41:00 2020 (r361595) @@ -1700,7 +1700,7 @@ pmap_bootstrap(vm_paddr_t *firstaddr) * are required for promotion of the corresponding kernel virtual * addresses to superpage mappings. */ - vm_phys_add_seg(KPTphys, KPTphys + ptoa(nkpt)); + vm_phys_early_add_seg(KPTphys, KPTphys + ptoa(nkpt)); /* * Account for the virtual addresses mapped by create_pagetables(). Modified: head/sys/i386/i386/machdep.c ============================================================================== --- head/sys/i386/i386/machdep.c Thu May 28 19:14:44 2020 (r361594) +++ head/sys/i386/i386/machdep.c Thu May 28 19:41:00 2020 (r361595) @@ -1828,7 +1828,7 @@ getmemsize(int first) * Tell the physical memory allocator about pages used to store * the kernel and preloaded data. See kmem_bootstrap_free(). */ - vm_phys_add_seg((vm_paddr_t)KERNLOAD, trunc_page(first)); + vm_phys_early_add_seg((vm_paddr_t)KERNLOAD, trunc_page(first)); TUNABLE_INT_FETCH("hw.above4g_allow", &above4g_allow); TUNABLE_INT_FETCH("hw.above24g_allow", &above24g_allow); Modified: head/sys/i386/i386/pmap.c ============================================================================== --- head/sys/i386/i386/pmap.c Thu May 28 19:14:44 2020 (r361594) +++ head/sys/i386/i386/pmap.c Thu May 28 19:41:00 2020 (r361595) @@ -633,7 +633,7 @@ __CONCAT(PMTYPE, bootstrap)(vm_paddr_t firstaddr) * are required for promotion of the corresponding kernel virtual * addresses to superpage mappings. */ - vm_phys_add_seg(KPTphys, KPTphys + ptoa(nkpt)); + vm_phys_early_add_seg(KPTphys, KPTphys + ptoa(nkpt)); /* * Initialize the first available kernel virtual address. Modified: head/sys/vm/uma_core.c ============================================================================== --- head/sys/vm/uma_core.c Thu May 28 19:14:44 2020 (r361594) +++ head/sys/vm/uma_core.c Thu May 28 19:41:00 2020 (r361595) @@ -2810,6 +2810,7 @@ uma_startup1(vm_offset_t virtual_avail) size_t ksize, zsize, size; uma_keg_t masterkeg; uintptr_t m; + int domain; uint8_t pflag; bootstart = bootmem = virtual_avail; @@ -2827,7 +2828,12 @@ uma_startup1(vm_offset_t virtual_avail) /* Allocate the zone of zones, zone of kegs, and zone of zones keg. */ size = (zsize * 2) + ksize; - m = (uintptr_t)startup_alloc(NULL, size, 0, &pflag, M_NOWAIT | M_ZERO); + for (domain = 0; domain < vm_ndomains; domain++) { + m = (uintptr_t)startup_alloc(NULL, size, domain, &pflag, + M_NOWAIT | M_ZERO); + if (m != 0) + break; + } zones = (uma_zone_t)m; m += zsize; kegs = (uma_zone_t)m; @@ -3191,6 +3197,17 @@ item_dtor(uma_zone_t zone, void *item, int size, void } } +static int +item_domain(void *item) +{ + int domain; + + domain = _vm_phys_domain(vtophys(item)); + KASSERT(domain >= 0 && domain < vm_ndomains, + ("%s: unknown domain for item %p", __func__, item)); + return (domain); +} + #if defined(INVARIANTS) || defined(DEBUG_MEMGUARD) || defined(WITNESS) #define UMA_ZALLOC_DEBUG static int @@ -4001,7 +4018,7 @@ uma_zfree_smr(uma_zone_t zone, void *item) itemdomain = 0; #ifdef NUMA if ((uz_flags & UMA_ZONE_FIRSTTOUCH) != 0) - itemdomain = _vm_phys_domain(pmap_kextract((vm_offset_t)item)); + itemdomain = item_domain(item); #endif critical_enter(); do { @@ -4085,7 +4102,7 @@ uma_zfree_arg(uma_zone_t zone, void *item, void *udata itemdomain = 0; #ifdef NUMA if ((uz_flags & UMA_ZONE_FIRSTTOUCH) != 0) - itemdomain = _vm_phys_domain(pmap_kextract((vm_offset_t)item)); + itemdomain = item_domain(item); #endif critical_enter(); do { @@ -4159,7 +4176,7 @@ zone_free_cross(uma_zone_t zone, uma_bucket_t bucket, ZONE_CROSS_LOCK(zone); while (bucket->ub_cnt > 0) { item = bucket->ub_bucket[bucket->ub_cnt - 1]; - domain = _vm_phys_domain(pmap_kextract((vm_offset_t)item)); + domain = item_domain(item); zdom = ZDOM_GET(zone, domain); if (zdom->uzd_cross == NULL) { zdom->uzd_cross = bucket_alloc(zone, udata, M_NOWAIT); @@ -4182,8 +4199,7 @@ zone_free_cross(uma_zone_t zone, uma_bucket_t bucket, while ((b = STAILQ_FIRST(&fullbuckets)) != NULL) { STAILQ_REMOVE_HEAD(&fullbuckets, ub_link); - domain = _vm_phys_domain(pmap_kextract( - (vm_offset_t)b->ub_bucket[0])); + domain = item_domain(b->ub_bucket[0]); zone_put_bucket(zone, domain, b, udata, true); } } Modified: head/sys/vm/vm_phys.c ============================================================================== --- head/sys/vm/vm_phys.c Thu May 28 19:14:44 2020 (r361594) +++ head/sys/vm/vm_phys.c Thu May 28 19:41:00 2020 (r361595) @@ -82,6 +82,8 @@ domainset_t __read_mostly all_domains = DOMAINSET_T_IN struct vm_phys_seg __read_mostly vm_phys_segs[VM_PHYSSEG_MAX]; int __read_mostly vm_phys_nsegs; +static struct vm_phys_seg vm_phys_early_segs[8]; +static int vm_phys_early_nsegs; struct vm_phys_fictitious_seg; static int vm_phys_fictitious_cmp(struct vm_phys_fictitious_seg *, @@ -653,18 +655,16 @@ _vm_phys_domain(vm_paddr_t pa) #ifdef NUMA int i; - if (vm_ndomains == 1 || mem_affinity == NULL) + if (vm_ndomains == 1) return (0); - - /* - * Check for any memory that overlaps. - */ for (i = 0; mem_affinity[i].end != 0; i++) if (mem_affinity[i].start <= pa && mem_affinity[i].end >= pa) return (mem_affinity[i].domain); -#endif + return (-1); +#else return (0); +#endif } /* @@ -1611,6 +1611,21 @@ vm_phys_avail_split(vm_paddr_t pa, int i) return (0); } +void +vm_phys_early_add_seg(vm_paddr_t start, vm_paddr_t end) +{ + struct vm_phys_seg *seg; + + if (vm_phys_early_nsegs == -1) + panic("%s: called after initialization", __func__); + if (vm_phys_early_nsegs == nitems(vm_phys_early_segs)) + panic("%s: ran out of early segments", __func__); + + seg = &vm_phys_early_segs[vm_phys_early_nsegs++]; + seg->start = start; + seg->end = end; +} + /* * This routine allocates NUMA node specific memory before the page * allocator is bootstrapped. @@ -1621,6 +1636,8 @@ vm_phys_early_alloc(int domain, size_t alloc_size) int i, mem_index, biggestone; vm_paddr_t pa, mem_start, mem_end, size, biggestsize, align; + KASSERT(domain == -1 || (domain >= 0 && domain < vm_ndomains), + ("%s: invalid domain index %d", __func__, domain)); /* * Search the mem_affinity array for the biggest address @@ -1633,11 +1650,11 @@ vm_phys_early_alloc(int domain, size_t alloc_size) mem_end = -1; #ifdef NUMA if (mem_affinity != NULL) { - for (i = 0; ; i++) { + for (i = 0;; i++) { size = mem_affinity[i].end - mem_affinity[i].start; if (size == 0) break; - if (mem_affinity[i].domain != domain) + if (domain != -1 && mem_affinity[i].domain != domain) continue; if (size > biggestsize) { mem_index = i; @@ -1699,12 +1716,19 @@ vm_phys_early_alloc(int domain, size_t alloc_size) void vm_phys_early_startup(void) { + struct vm_phys_seg *seg; int i; for (i = 0; phys_avail[i + 1] != 0; i += 2) { phys_avail[i] = round_page(phys_avail[i]); phys_avail[i + 1] = trunc_page(phys_avail[i + 1]); } + + for (i = 0; i < vm_phys_early_nsegs; i++) { + seg = &vm_phys_early_segs[i]; + vm_phys_add_seg(seg->start, seg->end); + } + vm_phys_early_nsegs = -1; #ifdef NUMA /* Force phys_avail to be split by domain. */ Modified: head/sys/vm/vm_phys.h ============================================================================== --- head/sys/vm/vm_phys.h Thu May 28 19:14:44 2020 (r361594) +++ head/sys/vm/vm_phys.h Thu May 28 19:41:00 2020 (r361595) @@ -103,6 +103,7 @@ vm_page_t vm_phys_scan_contig(int domain, u_long npage void vm_phys_set_pool(int pool, vm_page_t m, int order); boolean_t vm_phys_unfree_page(vm_page_t m); int vm_phys_mem_affinity(int f, int t); +void vm_phys_early_add_seg(vm_paddr_t start, vm_paddr_t end); vm_paddr_t vm_phys_early_alloc(int domain, size_t alloc_size); void vm_phys_early_startup(void); int vm_phys_avail_largest(void); From owner-svn-src-all@freebsd.org Thu May 28 20:39:28 2020 Return-Path: Delivered-To: svn-src-all@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 042132FD432; Thu, 28 May 2020 20:39:28 +0000 (UTC) (envelope-from emaste@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49Y01C6N7Xz47QX; Thu, 28 May 2020 20:39:27 +0000 (UTC) (envelope-from emaste@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 D62B4C5D6; Thu, 28 May 2020 20:39:27 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04SKdREm039018; Thu, 28 May 2020 20:39:27 GMT (envelope-from emaste@FreeBSD.org) Received: (from emaste@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04SKdRNh039017; Thu, 28 May 2020 20:39:27 GMT (envelope-from emaste@FreeBSD.org) Message-Id: <202005282039.04SKdRNh039017@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: emaste set sender to emaste@FreeBSD.org using -f From: Ed Maste Date: Thu, 28 May 2020 20:39:27 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361596 - head/usr.bin/fortune X-SVN-Group: head X-SVN-Commit-Author: emaste X-SVN-Commit-Paths: head/usr.bin/fortune X-SVN-Commit-Revision: 361596 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2020 20:39:28 -0000 Author: emaste Date: Thu May 28 20:39:27 2020 New Revision: 361596 URL: https://svnweb.freebsd.org/changeset/base/361596 Log: fortune: remove warning about potentially offensive fortunes They were removed long ago. PR: 246736 Submitted by: Ruby Lazuli Lord MFC after: 3 days Modified: head/usr.bin/fortune/README Modified: head/usr.bin/fortune/README ============================================================================== --- head/usr.bin/fortune/README Thu May 28 19:41:00 2020 (r361595) +++ head/usr.bin/fortune/README Thu May 28 20:39:27 2020 (r361596) @@ -1,13 +1,6 @@ # @(#)README 8.1 (Berkeley) 5/31/93 # $FreeBSD$ -The potentially offensive fortunes are installed by default on FreeBSD -systems. If you're absolutely, *positively*, without-a-shadow-of-a-doubt -sure that your user community goes berzerk/sues your pants off/drops dead -upon reading one of them, edit the Makefile in the subdirectory datfiles, -and do "make all install". - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Some years ago, my neighbor Avery said to me: "There has not been an adequate jokebook published since "Joe_Miller", which came out in 1739 and which, incidentally, was the most miserable no-good ... jokebook in the From owner-svn-src-all@freebsd.org Thu May 28 21:01:11 2020 Return-Path: Delivered-To: svn-src-all@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 8B61E2FDFA4; Thu, 28 May 2020 21:01:11 +0000 (UTC) (envelope-from jkim@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49Y0VH3TMZz49tF; Thu, 28 May 2020 21:01:11 +0000 (UTC) (envelope-from jkim@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 7283BC93D; Thu, 28 May 2020 21:01:11 +0000 (UTC) (envelope-from jkim@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04SL1BIP055333; Thu, 28 May 2020 21:01:11 GMT (envelope-from jkim@FreeBSD.org) Received: (from jkim@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04SL18Iq053011; Thu, 28 May 2020 21:01:08 GMT (envelope-from jkim@FreeBSD.org) Message-Id: <202005282101.04SL18Iq053011@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: jkim set sender to jkim@FreeBSD.org using -f From: Jung-uk Kim Date: Thu, 28 May 2020 21:01:08 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r361597 - in vendor-sys/acpica/dist: . generate/release generate/unix generate/unix/acpinames source/compiler source/components/debugger source/components/utilities source/include sourc... X-SVN-Group: vendor-sys X-SVN-Commit-Author: jkim X-SVN-Commit-Paths: in vendor-sys/acpica/dist: . generate/release generate/unix generate/unix/acpinames source/compiler source/components/debugger source/components/utilities source/include source/os_specific/service_lay... X-SVN-Commit-Revision: 361597 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2020 21:01:11 -0000 Author: jkim Date: Thu May 28 21:01:08 2020 New Revision: 361597 URL: https://svnweb.freebsd.org/changeset/base/361597 Log: Import ACPICA 20200528. Deleted: vendor-sys/acpica/dist/generate/unix/acpinames/ vendor-sys/acpica/dist/source/tools/acpinames/ Modified: vendor-sys/acpica/dist/changes.txt vendor-sys/acpica/dist/generate/release/build.sh vendor-sys/acpica/dist/generate/unix/Makefile.config vendor-sys/acpica/dist/source/compiler/aslcompiler.l vendor-sys/acpica/dist/source/compiler/aslkeywords.y vendor-sys/acpica/dist/source/compiler/aslmap.c vendor-sys/acpica/dist/source/compiler/aslmethod.c vendor-sys/acpica/dist/source/compiler/asltokens.y vendor-sys/acpica/dist/source/compiler/aslxref.c vendor-sys/acpica/dist/source/components/debugger/dbdisply.c vendor-sys/acpica/dist/source/components/utilities/utdecode.c vendor-sys/acpica/dist/source/include/acpixf.h vendor-sys/acpica/dist/source/include/actypes.h vendor-sys/acpica/dist/source/os_specific/service_layers/oslinuxtbl.c Modified: vendor-sys/acpica/dist/changes.txt ============================================================================== --- vendor-sys/acpica/dist/changes.txt Thu May 28 20:39:27 2020 (r361596) +++ vendor-sys/acpica/dist/changes.txt Thu May 28 21:01:08 2020 (r361597) @@ -1,8 +1,61 @@ ---------------------------------------- -30 April 2020. Summary of changes for version 20200430: +28 May 2020. Summary of changes for version 20200528: + +1) ACPICA kernel-resident subsystem: + +Removed old/obsolete Visual Studio files which were used to build the +Windows versions of the ACPICA tools. Since we have moved to Visual +Studio 2017, we are no longer supporting Visual Studio 2006 and 2009 +project files. The new subdirectory and solution file are located at: + + acpica/generate/msvc2017/AcpiComponents.sln + + +2) iASL Compiler/Disassembler and ACPICA tools: + +iASL: added support for a new OperationRegion Address Space (subtype): +PlatformRtMechanism. Support for this new keyword is being released for +early prototyping. It will appear in the next release of the ACPI +specification. + +iASL: do not optimize the NameString parameter of the CondRefOf operator. +In the previous iASL compiler release, the NameString parameter of the +CondRefOf was optimized. There is evidence that some implementations of +the AML interpreter do not perform the recursive search-to-parent search +during the execution of the CondRefOf operator. Therefore, the CondRefOf +operator behaves differently when the NameString parameter is a single +name segment (a NameSeg) as opposed to a full NamePath (starting at the +root scope) or a NameString containing parent prefixes. + +iASL: Prevent an inadvertent remark message. This change prevents a +remark if within a control method the following exist: +1) An Operation Region is defined, and +2) A Field operator is defined that refers to the region. +This happens because at the top level, the Field operator does not +actually create a new named object, it simply references the operation +region. + +Removed support for the acpinames utility. The acpinames was a simple +utility used to populate and display the ACPI namespace without executing +any AML code. However, ACPICA now supports executable opcodes outside of +control methods. This means that executable AML opcodes such as If and +Store opcodes need to be executed during table load. Therefore, acpinames +would need to be updated to match the same behavior as the acpiexec +utility and since acpiexec can already dump the entire namespace (via the +'namespace' command), we no longer have the need to maintain acpinames. + + In order to dump the contents of the ACPI namepsace using acpiexec, +execute the following command from the command line: + + acpiexec -b "n" [aml files] + +---------------------------------------- + + +30 April 2020. Summary of changes for version 20200430: 1) ACPICA kernel-resident subsystem: Modified: vendor-sys/acpica/dist/generate/release/build.sh ============================================================================== --- vendor-sys/acpica/dist/generate/release/build.sh Thu May 28 20:39:27 2020 (r361596) +++ vendor-sys/acpica/dist/generate/release/build.sh Thu May 28 21:01:08 2020 (r361597) @@ -217,7 +217,6 @@ generate_source_package () mkdir $TEMP_DIR/generate/unix/acpiexamples mkdir $TEMP_DIR/generate/unix/acpiexec mkdir $TEMP_DIR/generate/unix/acpihelp - mkdir $TEMP_DIR/generate/unix/acpinames mkdir $TEMP_DIR/generate/unix/acpisrc mkdir $TEMP_DIR/generate/unix/acpixtract mkdir $TEMP_DIR/generate/unix/iasl @@ -264,7 +263,6 @@ generate_source_package () cp generate/unix/acpiexamples/Makefile $TEMP_DIR/generate/unix/acpiexamples cp generate/unix/acpiexec/Makefile $TEMP_DIR/generate/unix/acpiexec cp generate/unix/acpihelp/Makefile $TEMP_DIR/generate/unix/acpihelp - cp generate/unix/acpinames/Makefile $TEMP_DIR/generate/unix/acpinames cp generate/unix/acpisrc/Makefile $TEMP_DIR/generate/unix/acpisrc cp generate/unix/acpixtract/Makefile $TEMP_DIR/generate/unix/acpixtract cp generate/unix/iasl/Makefile $TEMP_DIR/generate/unix/iasl @@ -295,11 +293,13 @@ generate_source_package () # Windows-specific activities # - # Copy project files for MS Visual Studio 2008 (VC++ 9.0) + # Copy project files for MS Visual Studio 2017 - mkdir $TEMP_DIR/generate/msvc9 - cp -r generate/msvc9/*.sln $TEMP_DIR/generate/msvc9/ - cp -r generate/msvc9/*.vcproj $TEMP_DIR/generate/msvc9/ + mkdir $TEMP_DIR/generate/msvc2017 + cp -r generate/msvc2017/*.sln $TEMP_DIR/generate/msvc2017/ + cp -r generate/msvc2017/*.dsp $TEMP_DIR/generate/msvc2017/ + cp -r generate/msvc2017/*.dsw $TEMP_DIR/generate/msvc2017/ + cp -r generate/msvc2017/*.vcxproj $TEMP_DIR/generate/msvc2017/ build_windows_package fi @@ -412,7 +412,6 @@ generate_binary_package() cp libraries/acpidump.exe $TEMP_DIR cp libraries/acpiexec.exe $TEMP_DIR cp libraries/acpihelp.exe $TEMP_DIR - cp libraries/acpinames.exe $TEMP_DIR cp libraries/acpisrc.exe $TEMP_DIR cp libraries/acpixtract.exe $TEMP_DIR cp libraries/iasl.exe $TEMP_DIR Modified: vendor-sys/acpica/dist/generate/unix/Makefile.config ============================================================================== --- vendor-sys/acpica/dist/generate/unix/Makefile.config Thu May 28 20:39:27 2020 (r361596) +++ vendor-sys/acpica/dist/generate/unix/Makefile.config Thu May 28 21:01:08 2020 (r361597) @@ -2,8 +2,8 @@ # Makefile.config # # Common configuration and setup file to generate the ACPICA tools and -# utilities: the iASL compiler, acpiexec, acpihelp, acpinames, acpisrc, -# acpixtract, acpibin. +# utilities: the iASL compiler, acpiexec, acpihelp, acpisrc, acpixtract, +# acpibin. # # This file is included by the individual makefiles for each tool. # @@ -33,7 +33,7 @@ # not be necessary to change it. # .SUFFIXES : -PROGS = acpibin acpidump acpiexamples acpiexec acpihelp acpinames acpisrc acpixtract iasl +PROGS = acpibin acpidump acpiexamples acpiexec acpihelp acpisrc acpixtract iasl ACPI_HOST ?= _CYGWIN CC ?= gcc @@ -129,7 +129,6 @@ ACPIDUMP = $(ACPICA_TOOLS)/acpidump ACPIEXAMPLES = $(ACPICA_TOOLS)/examples ACPIEXEC = $(ACPICA_TOOLS)/acpiexec ACPIHELP = $(ACPICA_TOOLS)/acpihelp -ACPINAMES = $(ACPICA_TOOLS)/acpinames ACPISRC = $(ACPICA_TOOLS)/acpisrc ACPIXTRACT = $(ACPICA_TOOLS)/acpixtract ASL_COMPILER = $(ACPICA_SRC)/compiler Modified: vendor-sys/acpica/dist/source/compiler/aslcompiler.l ============================================================================== --- vendor-sys/acpica/dist/source/compiler/aslcompiler.l Thu May 28 20:39:27 2020 (r361596) +++ vendor-sys/acpica/dist/source/compiler/aslcompiler.l Thu May 28 21:01:08 2020 (r361597) @@ -693,6 +693,7 @@ NamePathTail [.]{NameSeg} "GeneralPurposeIo" { count (0); return (PARSEOP_REGIONSPACE_GPIO); } /* ACPI 5.0 */ "GenericSerialBus" { count (0); return (PARSEOP_REGIONSPACE_GSBUS); } /* ACPI 5.0 */ "PCC" { count (0); return (PARSEOP_REGIONSPACE_PCC); } /* ACPI 5.0 */ +"PlatformRtMechanism" { count (0); return (PARSEOP_REGIONSPACE_PRM); } "FFixedHW" { count (0); return (PARSEOP_REGIONSPACE_FFIXEDHW); } /* ResourceTypeKeyword: Resource Usage - Resource Descriptors */ Modified: vendor-sys/acpica/dist/source/compiler/aslkeywords.y ============================================================================== --- vendor-sys/acpica/dist/source/compiler/aslkeywords.y Thu May 28 20:39:27 2020 (r361596) +++ vendor-sys/acpica/dist/source/compiler/aslkeywords.y Thu May 28 21:01:08 2020 (r361597) @@ -394,6 +394,7 @@ RegionSpaceKeyword | PARSEOP_REGIONSPACE_GPIO {$$ = TrCreateLeafOp (PARSEOP_REGIONSPACE_GPIO);} | PARSEOP_REGIONSPACE_GSBUS {$$ = TrCreateLeafOp (PARSEOP_REGIONSPACE_GSBUS);} | PARSEOP_REGIONSPACE_PCC {$$ = TrCreateLeafOp (PARSEOP_REGIONSPACE_PCC);} + | PARSEOP_REGIONSPACE_PRM {$$ = TrCreateLeafOp (PARSEOP_REGIONSPACE_PRM);} | PARSEOP_REGIONSPACE_FFIXEDHW {$$ = TrCreateLeafOp (PARSEOP_REGIONSPACE_FFIXEDHW);} ; Modified: vendor-sys/acpica/dist/source/compiler/aslmap.c ============================================================================== --- vendor-sys/acpica/dist/source/compiler/aslmap.c Thu May 28 20:39:27 2020 (r361596) +++ vendor-sys/acpica/dist/source/compiler/aslmap.c Thu May 28 21:01:08 2020 (r361597) @@ -485,6 +485,7 @@ const ASL_MAPPING_ENTRY AslKeywordMapping [] = /* REGIONSPACE_PCC */ OP_TABLE_ENTRY (AML_RAW_DATA_BYTE, ACPI_ADR_SPACE_PLATFORM_COMM, 0, 0), /* REGIONSPACE_PCI */ OP_TABLE_ENTRY (AML_RAW_DATA_BYTE, ACPI_ADR_SPACE_PCI_CONFIG, 0, 0), /* REGIONSPACE_PCIBAR */ OP_TABLE_ENTRY (AML_RAW_DATA_BYTE, ACPI_ADR_SPACE_PCI_BAR_TARGET, 0, 0), +/* REGIONSPACE_PRM */ OP_TABLE_ENTRY (AML_RAW_DATA_BYTE, ACPI_ADR_SPACE_PLATFORM_RT, 0, 0), /* REGIONSPACE_SMBUS */ OP_TABLE_ENTRY (AML_RAW_DATA_BYTE, ACPI_ADR_SPACE_SMBUS, 0, 0), /* REGISTER */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), /* RELEASE */ OP_TABLE_ENTRY (AML_RELEASE_OP, 0, 0, 0), Modified: vendor-sys/acpica/dist/source/compiler/aslmethod.c ============================================================================== --- vendor-sys/acpica/dist/source/compiler/aslmethod.c Thu May 28 20:39:27 2020 (r361596) +++ vendor-sys/acpica/dist/source/compiler/aslmethod.c Thu May 28 21:01:08 2020 (r361597) @@ -724,7 +724,7 @@ MtCheckNamedObjectInMethod ( } OpInfo = AcpiPsGetOpcodeInfo (Op->Asl.AmlOpcode); - if (OpInfo->Class == AML_CLASS_NAMED_OBJECT) + if ((OpInfo->Class == AML_CLASS_NAMED_OBJECT) && (Op->Asl.AmlOpcode != AML_FIELD_OP)) { /* * 1) Mark the method as a method that creates named objects. @@ -739,6 +739,9 @@ MtCheckNamedObjectInMethod ( * Reason: If a thread blocks within the method for any reason, and * another thread enters the method, the method will fail because * an attempt will be made to create the same object twice. + * + * Note: The Field opcode is disallowed here because Field() does not + * create a new named object. */ ExternalPath = AcpiNsGetNormalizedPathname (MethodInfo->Op->Asl.Node, TRUE); Modified: vendor-sys/acpica/dist/source/compiler/asltokens.y ============================================================================== --- vendor-sys/acpica/dist/source/compiler/asltokens.y Thu May 28 20:39:27 2020 (r361596) +++ vendor-sys/acpica/dist/source/compiler/asltokens.y Thu May 28 21:01:08 2020 (r361597) @@ -422,6 +422,7 @@ NoEcho(' %token PARSEOP_REGIONSPACE_PCC %token PARSEOP_REGIONSPACE_PCI %token PARSEOP_REGIONSPACE_PCIBAR +%token PARSEOP_REGIONSPACE_PRM %token PARSEOP_REGIONSPACE_SMBUS %token PARSEOP_REGISTER %token PARSEOP_RELEASE Modified: vendor-sys/acpica/dist/source/compiler/aslxref.c ============================================================================== --- vendor-sys/acpica/dist/source/compiler/aslxref.c Thu May 28 20:39:27 2020 (r361596) +++ vendor-sys/acpica/dist/source/compiler/aslxref.c Thu May 28 21:01:08 2020 (r361597) @@ -821,9 +821,24 @@ XfNamespaceLocateBegin ( Node->Flags |= ANOBJ_IS_REFERENCED; } - /* Attempt to optimize the NamePath */ - - OptOptimizeNamePath (Op, OpInfo->Flags, WalkState, Path, Node); + /* + * Attempt to optimize the NamePath + * + * One special case: CondRefOf operator - not all AML interpreter + * implementations expect optimized namepaths as a parameter to this + * operator. They require relative name paths with prefix operators or + * namepaths starting with the root scope. + * + * Other AML interpreter implementations do not perform the namespace + * search that starts at the current scope and recursively searching the + * parent scope until the root scope. The lack of search is only known to + * occur for the namestring parameter for the CondRefOf operator. + */ + if ((Op->Asl.Parent) && + (Op->Asl.Parent->Asl.ParseOpcode != PARSEOP_CONDREFOF)) + { + OptOptimizeNamePath (Op, OpInfo->Flags, WalkState, Path, Node); + } /* * 1) Dereference an alias (A name reference that is an alias) Modified: vendor-sys/acpica/dist/source/components/debugger/dbdisply.c ============================================================================== --- vendor-sys/acpica/dist/source/components/debugger/dbdisply.c Thu May 28 20:39:27 2020 (r361596) +++ vendor-sys/acpica/dist/source/components/debugger/dbdisply.c Thu May 28 21:01:08 2020 (r361597) @@ -204,6 +204,8 @@ static ACPI_ADR_SPACE_TYPE AcpiGbl_SpaceIdList[] = ACPI_ADR_SPACE_IPMI, ACPI_ADR_SPACE_GPIO, ACPI_ADR_SPACE_GSBUS, + ACPI_ADR_SPACE_PLATFORM_COMM, + ACPI_ADR_SPACE_PLATFORM_RT, ACPI_ADR_SPACE_DATA_TABLE, ACPI_ADR_SPACE_FIXED_HARDWARE }; Modified: vendor-sys/acpica/dist/source/components/utilities/utdecode.c ============================================================================== --- vendor-sys/acpica/dist/source/components/utilities/utdecode.c Thu May 28 20:39:27 2020 (r361596) +++ vendor-sys/acpica/dist/source/components/utilities/utdecode.c Thu May 28 21:01:08 2020 (r361597) @@ -214,17 +214,18 @@ const UINT8 AcpiGbl_NsProperties[A const char *AcpiGbl_RegionTypes[ACPI_NUM_PREDEFINED_REGIONS] = { - "SystemMemory", /* 0x00 */ - "SystemIO", /* 0x01 */ - "PCI_Config", /* 0x02 */ - "EmbeddedControl", /* 0x03 */ - "SMBus", /* 0x04 */ - "SystemCMOS", /* 0x05 */ - "PCIBARTarget", /* 0x06 */ - "IPMI", /* 0x07 */ - "GeneralPurposeIo", /* 0x08 */ - "GenericSerialBus", /* 0x09 */ - "PCC" /* 0x0A */ + "SystemMemory", /* 0x00 */ + "SystemIO", /* 0x01 */ + "PCI_Config", /* 0x02 */ + "EmbeddedControl", /* 0x03 */ + "SMBus", /* 0x04 */ + "SystemCMOS", /* 0x05 */ + "PCIBARTarget", /* 0x06 */ + "IPMI", /* 0x07 */ + "GeneralPurposeIo", /* 0x08 */ + "GenericSerialBus", /* 0x09 */ + "PCC", /* 0x0A */ + "PlatformRtMechanism" /* 0x0B */ }; Modified: vendor-sys/acpica/dist/source/include/acpixf.h ============================================================================== --- vendor-sys/acpica/dist/source/include/acpixf.h Thu May 28 20:39:27 2020 (r361596) +++ vendor-sys/acpica/dist/source/include/acpixf.h Thu May 28 21:01:08 2020 (r361597) @@ -154,7 +154,7 @@ /* Current ACPICA subsystem version in YYYYMMDD format */ -#define ACPI_CA_VERSION 0x20200430 +#define ACPI_CA_VERSION 0x20200528 #include "acconfig.h" #include "actypes.h" Modified: vendor-sys/acpica/dist/source/include/actypes.h ============================================================================== --- vendor-sys/acpica/dist/source/include/actypes.h Thu May 28 20:39:27 2020 (r361596) +++ vendor-sys/acpica/dist/source/include/actypes.h Thu May 28 21:01:08 2020 (r361597) @@ -968,8 +968,9 @@ typedef UINT8 ACPI_ADR_SPACE #define ACPI_ADR_SPACE_GPIO (ACPI_ADR_SPACE_TYPE) 8 #define ACPI_ADR_SPACE_GSBUS (ACPI_ADR_SPACE_TYPE) 9 #define ACPI_ADR_SPACE_PLATFORM_COMM (ACPI_ADR_SPACE_TYPE) 10 +#define ACPI_ADR_SPACE_PLATFORM_RT (ACPI_ADR_SPACE_TYPE) 11 -#define ACPI_NUM_PREDEFINED_REGIONS 11 +#define ACPI_NUM_PREDEFINED_REGIONS 12 /* * Special Address Spaces Modified: vendor-sys/acpica/dist/source/os_specific/service_layers/oslinuxtbl.c ============================================================================== --- vendor-sys/acpica/dist/source/os_specific/service_layers/oslinuxtbl.c Thu May 28 20:39:27 2020 (r361596) +++ vendor-sys/acpica/dist/source/os_specific/service_layers/oslinuxtbl.c Thu May 28 21:01:08 2020 (r361597) @@ -192,7 +192,6 @@ static ACPI_STATUS OslReadTableFromFile ( char *Filename, ACPI_SIZE FileOffset, - char *Signature, ACPI_TABLE_HEADER **Table); static ACPI_STATUS @@ -1490,8 +1489,6 @@ OslTableNameFromFile ( * * PARAMETERS: Filename - File that contains the desired table * FileOffset - Offset of the table in file - * Signature - Optional ACPI Signature for desired table. - * A null terminated 4-character string. * Table - Where a pointer to the table is returned * * RETURN: Status; Table buffer is returned if AE_OK. @@ -1504,7 +1501,6 @@ static ACPI_STATUS OslReadTableFromFile ( char *Filename, ACPI_SIZE FileOffset, - char *Signature, ACPI_TABLE_HEADER **Table) { FILE *TableFile; @@ -1536,6 +1532,8 @@ OslReadTableFromFile ( goto Exit; } +#ifdef ACPI_OBSOLETE_FUNCTIONS + /* If signature is specified, it must match the table */ if (Signature) @@ -1557,6 +1555,7 @@ OslReadTableFromFile ( goto Exit; } } +#endif TableLength = ApGetTableLength (&Header); if (TableLength == 0) @@ -1688,7 +1687,7 @@ OslGetCustomizedTable ( /* There is no physical address saved for customized tables, use zero */ *Address = 0; - Status = OslReadTableFromFile (TableFilename, 0, NULL, Table); + Status = OslReadTableFromFile (TableFilename, 0, Table); return (Status); } From owner-svn-src-all@freebsd.org Thu May 28 21:02:13 2020 Return-Path: Delivered-To: svn-src-all@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 5062C2FDC13; Thu, 28 May 2020 21:02:13 +0000 (UTC) (envelope-from jkim@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49Y0WT1VlBz4B4T; Thu, 28 May 2020 21:02:13 +0000 (UTC) (envelope-from jkim@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 14B7FCBDE; Thu, 28 May 2020 21:02:13 +0000 (UTC) (envelope-from jkim@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04SL2CHa057130; Thu, 28 May 2020 21:02:12 GMT (envelope-from jkim@FreeBSD.org) Received: (from jkim@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04SL2Ctr057129; Thu, 28 May 2020 21:02:12 GMT (envelope-from jkim@FreeBSD.org) Message-Id: <202005282102.04SL2Ctr057129@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: jkim set sender to jkim@FreeBSD.org using -f From: Jung-uk Kim Date: Thu, 28 May 2020 21:02:12 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r361598 - vendor-sys/acpica/20200528 X-SVN-Group: vendor-sys X-SVN-Commit-Author: jkim X-SVN-Commit-Paths: vendor-sys/acpica/20200528 X-SVN-Commit-Revision: 361598 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2020 21:02:13 -0000 Author: jkim Date: Thu May 28 21:02:12 2020 New Revision: 361598 URL: https://svnweb.freebsd.org/changeset/base/361598 Log: Tag ACPICA 20200528. Added: vendor-sys/acpica/20200528/ - copied from r361597, vendor-sys/acpica/dist/ From owner-svn-src-all@freebsd.org Thu May 28 21:06:10 2020 Return-Path: Delivered-To: svn-src-all@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 DCAB82FE22C; Thu, 28 May 2020 21:06:10 +0000 (UTC) (envelope-from rmacklem@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49Y0c25Yvgz4BBr; Thu, 28 May 2020 21:06:10 +0000 (UTC) (envelope-from rmacklem@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 BA2DBCBE6; Thu, 28 May 2020 21:06:10 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04SL6Aho057350; Thu, 28 May 2020 21:06:10 GMT (envelope-from rmacklem@FreeBSD.org) Received: (from rmacklem@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04SL6AGq057349; Thu, 28 May 2020 21:06:10 GMT (envelope-from rmacklem@FreeBSD.org) Message-Id: <202005282106.04SL6AGq057349@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: rmacklem set sender to rmacklem@FreeBSD.org using -f From: Rick Macklem Date: Thu, 28 May 2020 21:06:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361599 - in head/sys: compat/freebsd32 kern X-SVN-Group: head X-SVN-Commit-Author: rmacklem X-SVN-Commit-Paths: in head/sys: compat/freebsd32 kern X-SVN-Commit-Revision: 361599 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2020 21:06:10 -0000 Author: rmacklem Date: Thu May 28 21:06:10 2020 New Revision: 361599 URL: https://svnweb.freebsd.org/changeset/base/361599 Log: Add a syscall for the nfs-over-tls daemons to use. The nfs-over-tls daemons need a system call to perform operations such as associate a file descriptor with a krpc socket. The daemons will not be in head for some time, but it will make it easier for testers of nfs-over-tls to do testing if the system call is in head (basically the stub for libc which will be commited soon). Reviewed by: brooks Differential Revision: https://reviews.freebsd.org/D24949 Modified: head/sys/compat/freebsd32/syscalls.master head/sys/kern/syscalls.master Modified: head/sys/compat/freebsd32/syscalls.master ============================================================================== --- head/sys/compat/freebsd32/syscalls.master Thu May 28 21:02:12 2020 (r361598) +++ head/sys/compat/freebsd32/syscalls.master Thu May 28 21:06:10 2020 (r361599) @@ -1164,5 +1164,8 @@ char *buf, size_t size, int flags); } 575 AUE_CLOSERANGE NOPROTO { int close_range(u_int lowfd, u_int highfd, \ int flags); } +; 576 is initialised by the krpc code, if present. +576 AUE_NULL NOSTD|NOPROTO { int rpctls_syscall(int op, \ + const char *path); } ; vim: syntax=off Modified: head/sys/kern/syscalls.master ============================================================================== --- head/sys/kern/syscalls.master Thu May 28 21:02:12 2020 (r361598) +++ head/sys/kern/syscalls.master Thu May 28 21:06:10 2020 (r361599) @@ -3234,6 +3234,13 @@ int flags ); } +; 576 is initialised by the krpc code, if present. +576 AUE_NULL NOSTD { + int rpctls_syscall( + int op, + _In_z_ const char *path + ); + } ; Please copy any additions and changes to the following compatability tables: ; sys/compat/freebsd32/syscalls.master From owner-svn-src-all@freebsd.org Thu May 28 21:19:46 2020 Return-Path: Delivered-To: svn-src-all@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 EC7D12FE41E; Thu, 28 May 2020 21:19:46 +0000 (UTC) (envelope-from jkim@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49Y0vk61tvz4C4F; Thu, 28 May 2020 21:19:46 +0000 (UTC) (envelope-from jkim@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 B153BC4FF; Thu, 28 May 2020 21:19:46 +0000 (UTC) (envelope-from jkim@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04SLJktU063881; Thu, 28 May 2020 21:19:46 GMT (envelope-from jkim@FreeBSD.org) Received: (from jkim@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04SLJiU6063870; Thu, 28 May 2020 21:19:44 GMT (envelope-from jkim@FreeBSD.org) Message-Id: <202005282119.04SLJiU6063870@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: jkim set sender to jkim@FreeBSD.org using -f From: Jung-uk Kim Date: Thu, 28 May 2020 21:19:44 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361600 - in head/sys/contrib/dev/acpica: . compiler components/debugger components/utilities include X-SVN-Group: head X-SVN-Commit-Author: jkim X-SVN-Commit-Paths: in head/sys/contrib/dev/acpica: . compiler components/debugger components/utilities include X-SVN-Commit-Revision: 361600 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2020 21:19:47 -0000 Author: jkim Date: Thu May 28 21:19:44 2020 New Revision: 361600 URL: https://svnweb.freebsd.org/changeset/base/361600 Log: MFV: r361597 Import ACPICA 20200528. Modified: head/sys/contrib/dev/acpica/changes.txt head/sys/contrib/dev/acpica/compiler/aslcompiler.l head/sys/contrib/dev/acpica/compiler/aslkeywords.y head/sys/contrib/dev/acpica/compiler/aslmap.c head/sys/contrib/dev/acpica/compiler/aslmethod.c head/sys/contrib/dev/acpica/compiler/asltokens.y head/sys/contrib/dev/acpica/compiler/aslxref.c head/sys/contrib/dev/acpica/components/debugger/dbdisply.c head/sys/contrib/dev/acpica/components/utilities/utdecode.c head/sys/contrib/dev/acpica/include/acpixf.h head/sys/contrib/dev/acpica/include/actypes.h Directory Properties: head/sys/contrib/dev/acpica/ (props changed) Modified: head/sys/contrib/dev/acpica/changes.txt ============================================================================== --- head/sys/contrib/dev/acpica/changes.txt Thu May 28 21:06:10 2020 (r361599) +++ head/sys/contrib/dev/acpica/changes.txt Thu May 28 21:19:44 2020 (r361600) @@ -1,8 +1,61 @@ ---------------------------------------- -30 April 2020. Summary of changes for version 20200430: +28 May 2020. Summary of changes for version 20200528: + +1) ACPICA kernel-resident subsystem: + +Removed old/obsolete Visual Studio files which were used to build the +Windows versions of the ACPICA tools. Since we have moved to Visual +Studio 2017, we are no longer supporting Visual Studio 2006 and 2009 +project files. The new subdirectory and solution file are located at: + + acpica/generate/msvc2017/AcpiComponents.sln + + +2) iASL Compiler/Disassembler and ACPICA tools: + +iASL: added support for a new OperationRegion Address Space (subtype): +PlatformRtMechanism. Support for this new keyword is being released for +early prototyping. It will appear in the next release of the ACPI +specification. + +iASL: do not optimize the NameString parameter of the CondRefOf operator. +In the previous iASL compiler release, the NameString parameter of the +CondRefOf was optimized. There is evidence that some implementations of +the AML interpreter do not perform the recursive search-to-parent search +during the execution of the CondRefOf operator. Therefore, the CondRefOf +operator behaves differently when the NameString parameter is a single +name segment (a NameSeg) as opposed to a full NamePath (starting at the +root scope) or a NameString containing parent prefixes. + +iASL: Prevent an inadvertent remark message. This change prevents a +remark if within a control method the following exist: +1) An Operation Region is defined, and +2) A Field operator is defined that refers to the region. +This happens because at the top level, the Field operator does not +actually create a new named object, it simply references the operation +region. + +Removed support for the acpinames utility. The acpinames was a simple +utility used to populate and display the ACPI namespace without executing +any AML code. However, ACPICA now supports executable opcodes outside of +control methods. This means that executable AML opcodes such as If and +Store opcodes need to be executed during table load. Therefore, acpinames +would need to be updated to match the same behavior as the acpiexec +utility and since acpiexec can already dump the entire namespace (via the +'namespace' command), we no longer have the need to maintain acpinames. + + In order to dump the contents of the ACPI namepsace using acpiexec, +execute the following command from the command line: + + acpiexec -b "n" [aml files] + +---------------------------------------- + + +30 April 2020. Summary of changes for version 20200430: 1) ACPICA kernel-resident subsystem: Modified: head/sys/contrib/dev/acpica/compiler/aslcompiler.l ============================================================================== --- head/sys/contrib/dev/acpica/compiler/aslcompiler.l Thu May 28 21:06:10 2020 (r361599) +++ head/sys/contrib/dev/acpica/compiler/aslcompiler.l Thu May 28 21:19:44 2020 (r361600) @@ -693,6 +693,7 @@ NamePathTail [.]{NameSeg} "GeneralPurposeIo" { count (0); return (PARSEOP_REGIONSPACE_GPIO); } /* ACPI 5.0 */ "GenericSerialBus" { count (0); return (PARSEOP_REGIONSPACE_GSBUS); } /* ACPI 5.0 */ "PCC" { count (0); return (PARSEOP_REGIONSPACE_PCC); } /* ACPI 5.0 */ +"PlatformRtMechanism" { count (0); return (PARSEOP_REGIONSPACE_PRM); } "FFixedHW" { count (0); return (PARSEOP_REGIONSPACE_FFIXEDHW); } /* ResourceTypeKeyword: Resource Usage - Resource Descriptors */ Modified: head/sys/contrib/dev/acpica/compiler/aslkeywords.y ============================================================================== --- head/sys/contrib/dev/acpica/compiler/aslkeywords.y Thu May 28 21:06:10 2020 (r361599) +++ head/sys/contrib/dev/acpica/compiler/aslkeywords.y Thu May 28 21:19:44 2020 (r361600) @@ -394,6 +394,7 @@ RegionSpaceKeyword | PARSEOP_REGIONSPACE_GPIO {$$ = TrCreateLeafOp (PARSEOP_REGIONSPACE_GPIO);} | PARSEOP_REGIONSPACE_GSBUS {$$ = TrCreateLeafOp (PARSEOP_REGIONSPACE_GSBUS);} | PARSEOP_REGIONSPACE_PCC {$$ = TrCreateLeafOp (PARSEOP_REGIONSPACE_PCC);} + | PARSEOP_REGIONSPACE_PRM {$$ = TrCreateLeafOp (PARSEOP_REGIONSPACE_PRM);} | PARSEOP_REGIONSPACE_FFIXEDHW {$$ = TrCreateLeafOp (PARSEOP_REGIONSPACE_FFIXEDHW);} ; Modified: head/sys/contrib/dev/acpica/compiler/aslmap.c ============================================================================== --- head/sys/contrib/dev/acpica/compiler/aslmap.c Thu May 28 21:06:10 2020 (r361599) +++ head/sys/contrib/dev/acpica/compiler/aslmap.c Thu May 28 21:19:44 2020 (r361600) @@ -485,6 +485,7 @@ const ASL_MAPPING_ENTRY AslKeywordMapping [] = /* REGIONSPACE_PCC */ OP_TABLE_ENTRY (AML_RAW_DATA_BYTE, ACPI_ADR_SPACE_PLATFORM_COMM, 0, 0), /* REGIONSPACE_PCI */ OP_TABLE_ENTRY (AML_RAW_DATA_BYTE, ACPI_ADR_SPACE_PCI_CONFIG, 0, 0), /* REGIONSPACE_PCIBAR */ OP_TABLE_ENTRY (AML_RAW_DATA_BYTE, ACPI_ADR_SPACE_PCI_BAR_TARGET, 0, 0), +/* REGIONSPACE_PRM */ OP_TABLE_ENTRY (AML_RAW_DATA_BYTE, ACPI_ADR_SPACE_PLATFORM_RT, 0, 0), /* REGIONSPACE_SMBUS */ OP_TABLE_ENTRY (AML_RAW_DATA_BYTE, ACPI_ADR_SPACE_SMBUS, 0, 0), /* REGISTER */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), /* RELEASE */ OP_TABLE_ENTRY (AML_RELEASE_OP, 0, 0, 0), Modified: head/sys/contrib/dev/acpica/compiler/aslmethod.c ============================================================================== --- head/sys/contrib/dev/acpica/compiler/aslmethod.c Thu May 28 21:06:10 2020 (r361599) +++ head/sys/contrib/dev/acpica/compiler/aslmethod.c Thu May 28 21:19:44 2020 (r361600) @@ -724,7 +724,7 @@ MtCheckNamedObjectInMethod ( } OpInfo = AcpiPsGetOpcodeInfo (Op->Asl.AmlOpcode); - if (OpInfo->Class == AML_CLASS_NAMED_OBJECT) + if ((OpInfo->Class == AML_CLASS_NAMED_OBJECT) && (Op->Asl.AmlOpcode != AML_FIELD_OP)) { /* * 1) Mark the method as a method that creates named objects. @@ -739,6 +739,9 @@ MtCheckNamedObjectInMethod ( * Reason: If a thread blocks within the method for any reason, and * another thread enters the method, the method will fail because * an attempt will be made to create the same object twice. + * + * Note: The Field opcode is disallowed here because Field() does not + * create a new named object. */ ExternalPath = AcpiNsGetNormalizedPathname (MethodInfo->Op->Asl.Node, TRUE); Modified: head/sys/contrib/dev/acpica/compiler/asltokens.y ============================================================================== --- head/sys/contrib/dev/acpica/compiler/asltokens.y Thu May 28 21:06:10 2020 (r361599) +++ head/sys/contrib/dev/acpica/compiler/asltokens.y Thu May 28 21:19:44 2020 (r361600) @@ -422,6 +422,7 @@ NoEcho(' %token PARSEOP_REGIONSPACE_PCC %token PARSEOP_REGIONSPACE_PCI %token PARSEOP_REGIONSPACE_PCIBAR +%token PARSEOP_REGIONSPACE_PRM %token PARSEOP_REGIONSPACE_SMBUS %token PARSEOP_REGISTER %token PARSEOP_RELEASE Modified: head/sys/contrib/dev/acpica/compiler/aslxref.c ============================================================================== --- head/sys/contrib/dev/acpica/compiler/aslxref.c Thu May 28 21:06:10 2020 (r361599) +++ head/sys/contrib/dev/acpica/compiler/aslxref.c Thu May 28 21:19:44 2020 (r361600) @@ -821,9 +821,24 @@ XfNamespaceLocateBegin ( Node->Flags |= ANOBJ_IS_REFERENCED; } - /* Attempt to optimize the NamePath */ - - OptOptimizeNamePath (Op, OpInfo->Flags, WalkState, Path, Node); + /* + * Attempt to optimize the NamePath + * + * One special case: CondRefOf operator - not all AML interpreter + * implementations expect optimized namepaths as a parameter to this + * operator. They require relative name paths with prefix operators or + * namepaths starting with the root scope. + * + * Other AML interpreter implementations do not perform the namespace + * search that starts at the current scope and recursively searching the + * parent scope until the root scope. The lack of search is only known to + * occur for the namestring parameter for the CondRefOf operator. + */ + if ((Op->Asl.Parent) && + (Op->Asl.Parent->Asl.ParseOpcode != PARSEOP_CONDREFOF)) + { + OptOptimizeNamePath (Op, OpInfo->Flags, WalkState, Path, Node); + } /* * 1) Dereference an alias (A name reference that is an alias) Modified: head/sys/contrib/dev/acpica/components/debugger/dbdisply.c ============================================================================== --- head/sys/contrib/dev/acpica/components/debugger/dbdisply.c Thu May 28 21:06:10 2020 (r361599) +++ head/sys/contrib/dev/acpica/components/debugger/dbdisply.c Thu May 28 21:19:44 2020 (r361600) @@ -204,6 +204,8 @@ static ACPI_ADR_SPACE_TYPE AcpiGbl_SpaceIdList[] = ACPI_ADR_SPACE_IPMI, ACPI_ADR_SPACE_GPIO, ACPI_ADR_SPACE_GSBUS, + ACPI_ADR_SPACE_PLATFORM_COMM, + ACPI_ADR_SPACE_PLATFORM_RT, ACPI_ADR_SPACE_DATA_TABLE, ACPI_ADR_SPACE_FIXED_HARDWARE }; Modified: head/sys/contrib/dev/acpica/components/utilities/utdecode.c ============================================================================== --- head/sys/contrib/dev/acpica/components/utilities/utdecode.c Thu May 28 21:06:10 2020 (r361599) +++ head/sys/contrib/dev/acpica/components/utilities/utdecode.c Thu May 28 21:19:44 2020 (r361600) @@ -214,17 +214,18 @@ const UINT8 AcpiGbl_NsProperties[A const char *AcpiGbl_RegionTypes[ACPI_NUM_PREDEFINED_REGIONS] = { - "SystemMemory", /* 0x00 */ - "SystemIO", /* 0x01 */ - "PCI_Config", /* 0x02 */ - "EmbeddedControl", /* 0x03 */ - "SMBus", /* 0x04 */ - "SystemCMOS", /* 0x05 */ - "PCIBARTarget", /* 0x06 */ - "IPMI", /* 0x07 */ - "GeneralPurposeIo", /* 0x08 */ - "GenericSerialBus", /* 0x09 */ - "PCC" /* 0x0A */ + "SystemMemory", /* 0x00 */ + "SystemIO", /* 0x01 */ + "PCI_Config", /* 0x02 */ + "EmbeddedControl", /* 0x03 */ + "SMBus", /* 0x04 */ + "SystemCMOS", /* 0x05 */ + "PCIBARTarget", /* 0x06 */ + "IPMI", /* 0x07 */ + "GeneralPurposeIo", /* 0x08 */ + "GenericSerialBus", /* 0x09 */ + "PCC", /* 0x0A */ + "PlatformRtMechanism" /* 0x0B */ }; Modified: head/sys/contrib/dev/acpica/include/acpixf.h ============================================================================== --- head/sys/contrib/dev/acpica/include/acpixf.h Thu May 28 21:06:10 2020 (r361599) +++ head/sys/contrib/dev/acpica/include/acpixf.h Thu May 28 21:19:44 2020 (r361600) @@ -154,7 +154,7 @@ /* Current ACPICA subsystem version in YYYYMMDD format */ -#define ACPI_CA_VERSION 0x20200430 +#define ACPI_CA_VERSION 0x20200528 #include #include Modified: head/sys/contrib/dev/acpica/include/actypes.h ============================================================================== --- head/sys/contrib/dev/acpica/include/actypes.h Thu May 28 21:06:10 2020 (r361599) +++ head/sys/contrib/dev/acpica/include/actypes.h Thu May 28 21:19:44 2020 (r361600) @@ -968,8 +968,9 @@ typedef UINT8 ACPI_ADR_SPACE #define ACPI_ADR_SPACE_GPIO (ACPI_ADR_SPACE_TYPE) 8 #define ACPI_ADR_SPACE_GSBUS (ACPI_ADR_SPACE_TYPE) 9 #define ACPI_ADR_SPACE_PLATFORM_COMM (ACPI_ADR_SPACE_TYPE) 10 +#define ACPI_ADR_SPACE_PLATFORM_RT (ACPI_ADR_SPACE_TYPE) 11 -#define ACPI_NUM_PREDEFINED_REGIONS 11 +#define ACPI_NUM_PREDEFINED_REGIONS 12 /* * Special Address Spaces From owner-svn-src-all@freebsd.org Thu May 28 21:22:31 2020 Return-Path: Delivered-To: svn-src-all@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 AF2E02FE56C; Thu, 28 May 2020 21:22:31 +0000 (UTC) (envelope-from jah@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49Y0yv45gXz4CdY; Thu, 28 May 2020 21:22:31 +0000 (UTC) (envelope-from jah@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 87D7DCC3A; Thu, 28 May 2020 21:22:31 +0000 (UTC) (envelope-from jah@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04SLMVnc069428; Thu, 28 May 2020 21:22:31 GMT (envelope-from jah@FreeBSD.org) Received: (from jah@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04SLMVrK069426; Thu, 28 May 2020 21:22:31 GMT (envelope-from jah@FreeBSD.org) Message-Id: <202005282122.04SLMVrK069426@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: jah set sender to jah@FreeBSD.org using -f From: "Jason A. Harmening" Date: Thu, 28 May 2020 21:22:30 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361601 - head/sys/dev/vt X-SVN-Group: head X-SVN-Commit-Author: jah X-SVN-Commit-Paths: head/sys/dev/vt X-SVN-Commit-Revision: 361601 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2020 21:22:31 -0000 Author: jah Date: Thu May 28 21:22:30 2020 New Revision: 361601 URL: https://svnweb.freebsd.org/changeset/base/361601 Log: vt(4): Add support for `vidcontrol -C' Extract scrollback buffer initialization into a common routine, used both during vt(4) init and in handling the CONS_CLRHIST ioctl. PR: 224436 Reviewed by: emaste Differential Revision: https://reviews.freebsd.org/D24815 Modified: head/sys/dev/vt/vt.h head/sys/dev/vt/vt_buf.c head/sys/dev/vt/vt_core.c Modified: head/sys/dev/vt/vt.h ============================================================================== --- head/sys/dev/vt/vt.h Thu May 28 21:19:44 2020 (r361600) +++ head/sys/dev/vt/vt.h Thu May 28 21:22:30 2020 (r361601) @@ -231,6 +231,7 @@ void vtbuf_scroll_mode(struct vt_buf *vb, int yes); void vtbuf_dirty(struct vt_buf *vb, const term_rect_t *area); void vtbuf_undirty(struct vt_buf *, term_rect_t *); void vtbuf_sethistory_size(struct vt_buf *, unsigned int); +void vtbuf_clearhistory(struct vt_buf *); int vtbuf_iscursor(const struct vt_buf *vb, int row, int col); void vtbuf_cursor_visibility(struct vt_buf *, int); #ifndef SC_NO_CUTPASTE Modified: head/sys/dev/vt/vt_buf.c ============================================================================== --- head/sys/dev/vt/vt_buf.c Thu May 28 21:19:44 2020 (r361600) +++ head/sys/dev/vt/vt_buf.c Thu May 28 21:22:30 2020 (r361601) @@ -416,13 +416,26 @@ vtbuf_init_rows(struct vt_buf *vb) vb->vb_rows[r] = &vb->vb_buffer[r * vb->vb_scr_size.tp_col]; } -void -vtbuf_init_early(struct vt_buf *vb) +static void +vtbuf_do_clearhistory(struct vt_buf *vb) { term_rect_t rect; const teken_attr_t *a; - term_char_t c; + term_char_t ch; + a = teken_get_curattr(&vb->vb_terminal->tm_emulator); + ch = TCOLOR_FG(a->ta_fgcolor) | TCOLOR_BG(a->ta_bgcolor); + + rect.tr_begin.tp_row = rect.tr_begin.tp_col = 0; + rect.tr_end.tp_col = vb->vb_scr_size.tp_col; + rect.tr_end.tp_row = vb->vb_history_size; + + vtbuf_do_fill(vb, &rect, VTBUF_SPACE_CHAR(ch)); +} + +void +vtbuf_init_early(struct vt_buf *vb) +{ vb->vb_flags |= VBF_CURSOR; vb->vb_roffset = 0; vb->vb_curroffset = 0; @@ -432,14 +445,7 @@ vtbuf_init_early(struct vt_buf *vb) vb->vb_mark_end.tp_col = 0; vtbuf_init_rows(vb); - rect.tr_begin.tp_row = rect.tr_begin.tp_col = 0; - rect.tr_end.tp_col = vb->vb_scr_size.tp_col; - rect.tr_end.tp_row = vb->vb_history_size; - - a = teken_get_curattr(&vb->vb_terminal->tm_emulator); - c = TCOLOR_FG((term_char_t)a->ta_fgcolor) | - TCOLOR_BG((term_char_t)a->ta_bgcolor); - vtbuf_do_fill(vb, &rect, VTBUF_SPACE_CHAR(c)); + vtbuf_do_clearhistory(vb); vtbuf_make_undirty(vb); if ((vb->vb_flags & VBF_MTX_INIT) == 0) { mtx_init(&vb->vb_lock, "vtbuf", NULL, MTX_SPIN); @@ -464,6 +470,14 @@ vtbuf_init(struct vt_buf *vb, const term_pos_t *p) } vtbuf_init_early(vb); +} + +void +vtbuf_clearhistory(struct vt_buf *vb) +{ + VTBUF_LOCK(vb); + vtbuf_do_clearhistory(vb); + VTBUF_UNLOCK(vb); } void Modified: head/sys/dev/vt/vt_core.c ============================================================================== --- head/sys/dev/vt/vt_core.c Thu May 28 21:19:44 2020 (r361600) +++ head/sys/dev/vt/vt_core.c Thu May 28 21:22:30 2020 (r361601) @@ -2329,7 +2329,10 @@ skip_thunk: if (*(int *)data != vd->vd_curwindow->vw_buf.vb_history_size) vtbuf_sethistory_size(&vd->vd_curwindow->vw_buf, *(int *)data); - return 0; + return (0); + case CONS_CLRHIST: + vtbuf_clearhistory(&vd->vd_curwindow->vw_buf); + return (0); case CONS_GET: /* XXX */ *(int *)data = M_CG640x480; From owner-svn-src-all@freebsd.org Thu May 28 21:23:04 2020 Return-Path: Delivered-To: svn-src-all@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 349CF2FE0F9; Thu, 28 May 2020 21:23:04 +0000 (UTC) (envelope-from rmacklem@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49Y0zX0cdPz4CfT; Thu, 28 May 2020 21:23:04 +0000 (UTC) (envelope-from rmacklem@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 1068ACE9C; Thu, 28 May 2020 21:23:04 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04SLN3UO069516; Thu, 28 May 2020 21:23:03 GMT (envelope-from rmacklem@FreeBSD.org) Received: (from rmacklem@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04SLN2HB069510; Thu, 28 May 2020 21:23:02 GMT (envelope-from rmacklem@FreeBSD.org) Message-Id: <202005282123.04SLN2HB069510@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: rmacklem set sender to rmacklem@FreeBSD.org using -f From: Rick Macklem Date: Thu, 28 May 2020 21:23:02 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361602 - in head/sys: compat/freebsd32 kern X-SVN-Group: head X-SVN-Commit-Author: rmacklem X-SVN-Commit-Paths: in head/sys: compat/freebsd32 kern X-SVN-Commit-Revision: 361602 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2020 21:23:04 -0000 Author: rmacklem Date: Thu May 28 21:23:02 2020 New Revision: 361602 URL: https://svnweb.freebsd.org/changeset/base/361602 Log: Update the files created from the new syscalls.master from r361599. Reviewed by: brooks Differential Revision: https://reviews.freebsd.org/D24949 Modified: head/sys/compat/freebsd32/freebsd32_syscall.h head/sys/compat/freebsd32/freebsd32_syscalls.c head/sys/compat/freebsd32/freebsd32_sysent.c head/sys/compat/freebsd32/freebsd32_systrace_args.c head/sys/kern/init_sysent.c head/sys/kern/syscalls.c head/sys/kern/systrace_args.c Modified: head/sys/compat/freebsd32/freebsd32_syscall.h ============================================================================== --- head/sys/compat/freebsd32/freebsd32_syscall.h Thu May 28 21:22:30 2020 (r361601) +++ head/sys/compat/freebsd32/freebsd32_syscall.h Thu May 28 21:23:02 2020 (r361602) @@ -502,4 +502,5 @@ #define FREEBSD32_SYS_sigfastblock 573 #define FREEBSD32_SYS___realpathat 574 #define FREEBSD32_SYS_close_range 575 -#define FREEBSD32_SYS_MAXSYSCALL 576 +#define FREEBSD32_SYS_rpctls_syscall 576 +#define FREEBSD32_SYS_MAXSYSCALL 577 Modified: head/sys/compat/freebsd32/freebsd32_syscalls.c ============================================================================== --- head/sys/compat/freebsd32/freebsd32_syscalls.c Thu May 28 21:22:30 2020 (r361601) +++ head/sys/compat/freebsd32/freebsd32_syscalls.c Thu May 28 21:23:02 2020 (r361602) @@ -612,4 +612,5 @@ const char *freebsd32_syscallnames[] = { "sigfastblock", /* 573 = sigfastblock */ "__realpathat", /* 574 = __realpathat */ "close_range", /* 575 = close_range */ + "rpctls_syscall", /* 576 = rpctls_syscall */ }; Modified: head/sys/compat/freebsd32/freebsd32_sysent.c ============================================================================== --- head/sys/compat/freebsd32/freebsd32_sysent.c Thu May 28 21:22:30 2020 (r361601) +++ head/sys/compat/freebsd32/freebsd32_sysent.c Thu May 28 21:23:02 2020 (r361602) @@ -665,4 +665,5 @@ struct sysent freebsd32_sysent[] = { { AS(sigfastblock_args), (sy_call_t *)sys_sigfastblock, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 573 = sigfastblock */ { AS(__realpathat_args), (sy_call_t *)sys___realpathat, AUE_REALPATHAT, NULL, 0, 0, 0, SY_THR_STATIC }, /* 574 = __realpathat */ { AS(close_range_args), (sy_call_t *)sys_close_range, AUE_CLOSERANGE, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 575 = close_range */ + { AS(rpctls_syscall_args), (sy_call_t *)lkmressys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 576 = rpctls_syscall */ }; Modified: head/sys/compat/freebsd32/freebsd32_systrace_args.c ============================================================================== --- head/sys/compat/freebsd32/freebsd32_systrace_args.c Thu May 28 21:22:30 2020 (r361601) +++ head/sys/compat/freebsd32/freebsd32_systrace_args.c Thu May 28 21:23:02 2020 (r361602) @@ -3376,6 +3376,14 @@ systrace_args(int sysnum, void *params, uint64_t *uarg *n_args = 3; break; } + /* rpctls_syscall */ + case 576: { + struct rpctls_syscall_args *p = params; + iarg[0] = p->op; /* int */ + uarg[1] = (intptr_t) p->path; /* const char * */ + *n_args = 2; + break; + } default: *n_args = 0; break; @@ -9103,6 +9111,19 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *d break; }; break; + /* rpctls_syscall */ + case 576: + switch(ndx) { + case 0: + p = "int"; + break; + case 1: + p = "userland const char *"; + break; + default: + break; + }; + break; default: break; }; @@ -10999,6 +11020,11 @@ systrace_return_setargdesc(int sysnum, int ndx, char * break; /* close_range */ case 575: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* rpctls_syscall */ + case 576: if (ndx == 0 || ndx == 1) p = "int"; break; Modified: head/sys/kern/init_sysent.c ============================================================================== --- head/sys/kern/init_sysent.c Thu May 28 21:22:30 2020 (r361601) +++ head/sys/kern/init_sysent.c Thu May 28 21:23:02 2020 (r361602) @@ -631,4 +631,5 @@ struct sysent sysent[] = { { AS(sigfastblock_args), (sy_call_t *)sys_sigfastblock, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 573 = sigfastblock */ { AS(__realpathat_args), (sy_call_t *)sys___realpathat, AUE_REALPATHAT, NULL, 0, 0, 0, SY_THR_STATIC }, /* 574 = __realpathat */ { AS(close_range_args), (sy_call_t *)sys_close_range, AUE_CLOSERANGE, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 575 = close_range */ + { AS(rpctls_syscall_args), (sy_call_t *)lkmressys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 576 = rpctls_syscall */ }; Modified: head/sys/kern/syscalls.c ============================================================================== --- head/sys/kern/syscalls.c Thu May 28 21:22:30 2020 (r361601) +++ head/sys/kern/syscalls.c Thu May 28 21:23:02 2020 (r361602) @@ -582,4 +582,5 @@ const char *syscallnames[] = { "sigfastblock", /* 573 = sigfastblock */ "__realpathat", /* 574 = __realpathat */ "close_range", /* 575 = close_range */ + "rpctls_syscall", /* 576 = rpctls_syscall */ }; Modified: head/sys/kern/systrace_args.c ============================================================================== --- head/sys/kern/systrace_args.c Thu May 28 21:22:30 2020 (r361601) +++ head/sys/kern/systrace_args.c Thu May 28 21:23:02 2020 (r361602) @@ -3368,6 +3368,14 @@ systrace_args(int sysnum, void *params, uint64_t *uarg *n_args = 3; break; } + /* rpctls_syscall */ + case 576: { + struct rpctls_syscall_args *p = params; + iarg[0] = p->op; /* int */ + uarg[1] = (intptr_t) p->path; /* const char * */ + *n_args = 2; + break; + } default: *n_args = 0; break; @@ -9008,6 +9016,19 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *d break; }; break; + /* rpctls_syscall */ + case 576: + switch(ndx) { + case 0: + p = "int"; + break; + case 1: + p = "userland const char *"; + break; + default: + break; + }; + break; default: break; }; @@ -10931,6 +10952,11 @@ systrace_return_setargdesc(int sysnum, int ndx, char * break; /* close_range */ case 575: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* rpctls_syscall */ + case 576: if (ndx == 0 || ndx == 1) p = "int"; break; From owner-svn-src-all@freebsd.org Thu May 28 21:26:27 2020 Return-Path: Delivered-To: svn-src-all@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 61D342FE631; Thu, 28 May 2020 21:26:27 +0000 (UTC) (envelope-from rmacklem@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49Y13R1wRfz4Cp9; Thu, 28 May 2020 21:26:27 +0000 (UTC) (envelope-from rmacklem@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 38AA5CE2D; Thu, 28 May 2020 21:26:27 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04SLQRhO069732; Thu, 28 May 2020 21:26:27 GMT (envelope-from rmacklem@FreeBSD.org) Received: (from rmacklem@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04SLQRon069731; Thu, 28 May 2020 21:26:27 GMT (envelope-from rmacklem@FreeBSD.org) Message-Id: <202005282126.04SLQRon069731@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: rmacklem set sender to rmacklem@FreeBSD.org using -f From: Rick Macklem Date: Thu, 28 May 2020 21:26:27 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361603 - head/lib/libc/sys X-SVN-Group: head X-SVN-Commit-Author: rmacklem X-SVN-Commit-Paths: head/lib/libc/sys X-SVN-Commit-Revision: 361603 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2020 21:26:27 -0000 Author: rmacklem Date: Thu May 28 21:26:26 2020 New Revision: 361603 URL: https://svnweb.freebsd.org/changeset/base/361603 Log: Add an entry to Symbol.map for the rpctls_syscall added by r361599. Reviewed by: brooks Differential Revision: https://reviews.freebsd.org/D24949 Modified: head/lib/libc/sys/Symbol.map Modified: head/lib/libc/sys/Symbol.map ============================================================================== --- head/lib/libc/sys/Symbol.map Thu May 28 21:23:02 2020 (r361602) +++ head/lib/libc/sys/Symbol.map Thu May 28 21:26:26 2020 (r361603) @@ -1033,4 +1033,5 @@ FBSDprivate_1.0 { __sys_cpuset_getdomain; _cpuset_setdomain; __sys_cpuset_setdomain; + rpctls_syscall; }; From owner-svn-src-all@freebsd.org Thu May 28 21:30:30 2020 Return-Path: Delivered-To: svn-src-all@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 ECCEF2FE5CE; Thu, 28 May 2020 21:30:30 +0000 (UTC) (envelope-from mav@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49Y18661Zmz4D1w; Thu, 28 May 2020 21:30:30 +0000 (UTC) (envelope-from mav@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 B0895CE31; Thu, 28 May 2020 21:30:30 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04SLUULF069994; Thu, 28 May 2020 21:30:30 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04SLUTP1069990; Thu, 28 May 2020 21:30:29 GMT (envelope-from mav@FreeBSD.org) Message-Id: <202005282130.04SLUTP1069990@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 28 May 2020 21:30:29 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361604 - head/sys/cam/ctl X-SVN-Group: head X-SVN-Commit-Author: mav X-SVN-Commit-Paths: head/sys/cam/ctl X-SVN-Commit-Revision: 361604 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2020 21:30:31 -0000 Author: mav Date: Thu May 28 21:30:29 2020 New Revision: 361604 URL: https://svnweb.freebsd.org/changeset/base/361604 Log: Make struct ctl_be_lun first element of struct ctl_be_*_lun. It allows to remove some extra pointer dereferences and slightly tightens up the code by unification. MFC after: 2 weeks Sponsored by: iXsystems, Inc. Modified: head/sys/cam/ctl/ctl.c head/sys/cam/ctl/ctl_backend.h head/sys/cam/ctl/ctl_backend_block.c head/sys/cam/ctl/ctl_backend_ramdisk.c Modified: head/sys/cam/ctl/ctl.c ============================================================================== --- head/sys/cam/ctl/ctl.c Thu May 28 21:26:26 2020 (r361603) +++ head/sys/cam/ctl/ctl.c Thu May 28 21:30:29 2020 (r361604) @@ -3083,7 +3083,7 @@ ctl_ioctl(struct cdev *dev, u_long cmd, caddr_t addr, break; if (lun->backend->lun_info != NULL) { - retval = lun->backend->lun_info(lun->be_lun->be_lun, sb); + retval = lun->backend->lun_info(lun->be_lun, sb); if (retval != 0) break; } @@ -4751,7 +4751,7 @@ ctl_free_lun(struct ctl_lun *lun) /* * Tell the backend to free resources, if this LUN has a backend. */ - lun->be_lun->lun_shutdown(lun->be_lun->be_lun); + lun->be_lun->lun_shutdown(lun->be_lun); lun->ie_reportcnt = UINT32_MAX; callout_drain(&lun->ie_callout); @@ -6708,7 +6708,7 @@ ctl_lbp_log_sense_handler(struct ctl_scsiio *ctsio, data = page_index->page_data; if (lun->backend->lun_attr != NULL && - (val = lun->backend->lun_attr(lun->be_lun->be_lun, "blocksavail")) + (val = lun->backend->lun_attr(lun->be_lun, "blocksavail")) != UINT64_MAX) { phdr = (struct scsi_log_param_header *)data; scsi_ulto2b(0x0001, phdr->param_code); @@ -6721,7 +6721,7 @@ ctl_lbp_log_sense_handler(struct ctl_scsiio *ctsio, } if (lun->backend->lun_attr != NULL && - (val = lun->backend->lun_attr(lun->be_lun->be_lun, "blocksused")) + (val = lun->backend->lun_attr(lun->be_lun, "blocksused")) != UINT64_MAX) { phdr = (struct scsi_log_param_header *)data; scsi_ulto2b(0x0002, phdr->param_code); @@ -6734,7 +6734,7 @@ ctl_lbp_log_sense_handler(struct ctl_scsiio *ctsio, } if (lun->backend->lun_attr != NULL && - (val = lun->backend->lun_attr(lun->be_lun->be_lun, "poolblocksavail")) + (val = lun->backend->lun_attr(lun->be_lun, "poolblocksavail")) != UINT64_MAX) { phdr = (struct scsi_log_param_header *)data; scsi_ulto2b(0x00f1, phdr->param_code); @@ -6747,7 +6747,7 @@ ctl_lbp_log_sense_handler(struct ctl_scsiio *ctsio, } if (lun->backend->lun_attr != NULL && - (val = lun->backend->lun_attr(lun->be_lun->be_lun, "poolblocksused")) + (val = lun->backend->lun_attr(lun->be_lun, "poolblocksused")) != UINT64_MAX) { phdr = (struct scsi_log_param_header *)data; scsi_ulto2b(0x00f2, phdr->param_code); @@ -13386,8 +13386,7 @@ ctl_thresh_thread(void *arg) continue; } mtx_unlock(&softc->ctl_lock); // XXX - val = lun->backend->lun_attr( - lun->be_lun->be_lun, attr); + val = lun->backend->lun_attr(lun->be_lun, attr); mtx_lock(&softc->ctl_lock); if (val == UINT64_MAX) continue; Modified: head/sys/cam/ctl/ctl_backend.h ============================================================================== --- head/sys/cam/ctl/ctl_backend.h Thu May 28 21:26:26 2020 (r361603) +++ head/sys/cam/ctl/ctl_backend.h Thu May 28 21:30:29 2020 (r361604) @@ -80,7 +80,8 @@ typedef enum { MODULE_DEPEND(name, cam, 1, 1, 1) -typedef void (*be_callback_t)(void *be_lun); +struct ctl_be_lun; +typedef void (*be_callback_t)(struct ctl_be_lun *be_lun); /* * The lun_type field is the SCSI device type of this particular LUN. In @@ -147,7 +148,6 @@ struct ctl_be_lun { uint8_t lun_type; /* passed to CTL */ ctl_backend_lun_flags flags; /* passed to CTL */ ctl_lun_serseq serseq; /* passed to CTL */ - void *be_lun; /* passed to CTL */ uint64_t maxlba; /* passed to CTL */ uint32_t blocksize; /* passed to CTL */ uint16_t pblockexp; /* passed to CTL */ @@ -178,8 +178,8 @@ typedef int (*be_func_t)(union ctl_io *io); typedef void (*be_vfunc_t)(union ctl_io *io); typedef int (*be_ioctl_t)(struct cdev *dev, u_long cmd, caddr_t addr, int flag, struct thread *td); -typedef int (*be_luninfo_t)(void *be_lun, struct sbuf *sb); -typedef uint64_t (*be_lunattr_t)(void *be_lun, const char *attrname); +typedef int (*be_luninfo_t)(struct ctl_be_lun *be_lun, struct sbuf *sb); +typedef uint64_t (*be_lunattr_t)(struct ctl_be_lun *be_lun, const char *attrname); struct ctl_backend_driver { char name[CTL_BE_NAME_LEN]; /* passed to CTL */ Modified: head/sys/cam/ctl/ctl_backend_block.c ============================================================================== --- head/sys/cam/ctl/ctl_backend_block.c Thu May 28 21:26:26 2020 (r361603) +++ head/sys/cam/ctl/ctl_backend_block.c Thu May 28 21:30:29 2020 (r361604) @@ -152,6 +152,7 @@ typedef uint64_t (*cbb_getattr_t)(struct ctl_be_block_ * and a backend block LUN, and between a backend block LUN and a CTL LUN. */ struct ctl_be_block_lun { + struct ctl_be_lun cbe_lun; /* Must be first element. */ struct ctl_lun_create_params params; char *dev_path; ctl_be_block_type dev_type; @@ -168,7 +169,6 @@ struct ctl_be_block_lun { struct devstat *disk_stats; ctl_be_block_lun_flags flags; SLIST_ENTRY(ctl_be_block_lun) links; - struct ctl_be_lun cbe_lun; struct taskqueue *io_taskqueue; struct task io_task; int num_threads; @@ -272,11 +272,11 @@ static int ctl_be_block_rm(struct ctl_be_block_softc * struct ctl_lun_req *req); static int ctl_be_block_modify(struct ctl_be_block_softc *softc, struct ctl_lun_req *req); -static void ctl_be_block_lun_shutdown(void *be_lun); +static void ctl_be_block_lun_shutdown(struct ctl_be_lun *cbe_lun); static int ctl_be_block_config_write(union ctl_io *io); static int ctl_be_block_config_read(union ctl_io *io); -static int ctl_be_block_lun_info(void *be_lun, struct sbuf *sb); -static uint64_t ctl_be_block_lun_attr(void *be_lun, const char *attrname); +static int ctl_be_block_lun_info(struct ctl_be_lun *cbe_lun, struct sbuf *sb); +static uint64_t ctl_be_block_lun_attr(struct ctl_be_lun *cbe_lun, const char *attrname); static int ctl_be_block_init(void); static int ctl_be_block_shutdown(void); @@ -1724,12 +1724,10 @@ static int ctl_be_block_submit(union ctl_io *io) { struct ctl_be_block_lun *be_lun; - struct ctl_be_lun *cbe_lun; DPRINTF("entered\n"); - cbe_lun = CTL_BACKEND_LUN(io); - be_lun = (struct ctl_be_block_lun *)cbe_lun->be_lun; + be_lun = (struct ctl_be_block_lun *)CTL_BACKEND_LUN(io); /* * Make sure we only get SCSI I/O. @@ -2210,7 +2208,6 @@ ctl_be_block_create(struct ctl_be_block_softc *softc, be_lun = malloc(sizeof(*be_lun), M_CTLBLK, M_ZERO | M_WAITOK); cbe_lun = &be_lun->cbe_lun; - cbe_lun->be_lun = be_lun; be_lun->params = req->reqdata.create; be_lun->softc = softc; STAILQ_INIT(&be_lun->input_queue); @@ -2574,9 +2571,9 @@ bailout_error: } static void -ctl_be_block_lun_shutdown(void *lun) +ctl_be_block_lun_shutdown(struct ctl_be_lun *cbe_lun) { - struct ctl_be_block_lun *be_lun = lun; + struct ctl_be_block_lun *be_lun = (struct ctl_be_block_lun *)cbe_lun; struct ctl_be_block_softc *softc = be_lun->softc; taskqueue_drain_all(be_lun->io_taskqueue); @@ -2607,7 +2604,7 @@ ctl_be_block_config_write(union ctl_io *io) DPRINTF("entered\n"); cbe_lun = CTL_BACKEND_LUN(io); - be_lun = (struct ctl_be_block_lun *)cbe_lun->be_lun; + be_lun = (struct ctl_be_block_lun *)cbe_lun; retval = 0; switch (io->scsiio.cdb[0]) { @@ -2686,13 +2683,11 @@ static int ctl_be_block_config_read(union ctl_io *io) { struct ctl_be_block_lun *be_lun; - struct ctl_be_lun *cbe_lun; int retval = 0; DPRINTF("entered\n"); - cbe_lun = CTL_BACKEND_LUN(io); - be_lun = (struct ctl_be_block_lun *)cbe_lun->be_lun; + be_lun = (struct ctl_be_block_lun *)CTL_BACKEND_LUN(io); switch (io->scsiio.cdb[0]) { case SERVICE_ACTION_IN: @@ -2726,13 +2721,11 @@ ctl_be_block_config_read(union ctl_io *io) } static int -ctl_be_block_lun_info(void *be_lun, struct sbuf *sb) +ctl_be_block_lun_info(struct ctl_be_lun *cbe_lun, struct sbuf *sb) { - struct ctl_be_block_lun *lun; + struct ctl_be_block_lun *lun = (struct ctl_be_block_lun *)cbe_lun; int retval; - lun = (struct ctl_be_block_lun *)be_lun; - retval = sbuf_printf(sb, "\t"); if (retval != 0) goto bailout; @@ -2746,9 +2739,9 @@ bailout: } static uint64_t -ctl_be_block_lun_attr(void *be_lun, const char *attrname) +ctl_be_block_lun_attr(struct ctl_be_lun *cbe_lun, const char *attrname) { - struct ctl_be_block_lun *lun = (struct ctl_be_block_lun *)be_lun; + struct ctl_be_block_lun *lun = (struct ctl_be_block_lun *)cbe_lun; if (lun->getattr == NULL) return (UINT64_MAX); Modified: head/sys/cam/ctl/ctl_backend_ramdisk.c ============================================================================== --- head/sys/cam/ctl/ctl_backend_ramdisk.c Thu May 28 21:26:26 2020 (r361603) +++ head/sys/cam/ctl/ctl_backend_ramdisk.c Thu May 28 21:30:29 2020 (r361604) @@ -106,6 +106,7 @@ typedef enum { } ctl_be_ramdisk_lun_flags; struct ctl_be_ramdisk_lun { + struct ctl_be_lun cbe_lun; /* Must be first element. */ struct ctl_lun_create_params params; int indir; uint8_t **pages; @@ -120,7 +121,6 @@ struct ctl_be_ramdisk_lun { struct ctl_be_ramdisk_softc *softc; ctl_be_ramdisk_lun_flags flags; SLIST_ENTRY(ctl_be_ramdisk_lun) links; - struct ctl_be_lun cbe_lun; struct taskqueue *io_taskqueue; struct task io_task; STAILQ_HEAD(, ctl_io_hdr) cont_queue; @@ -146,7 +146,7 @@ static int ctl_backend_ramdisk_submit(union ctl_io *io static void ctl_backend_ramdisk_worker(void *context, int pending); static int ctl_backend_ramdisk_config_read(union ctl_io *io); static int ctl_backend_ramdisk_config_write(union ctl_io *io); -static uint64_t ctl_backend_ramdisk_lun_attr(void *be_lun, const char *attrname); +static uint64_t ctl_backend_ramdisk_lun_attr(struct ctl_be_lun *cbe_lun, const char *attrname); static int ctl_backend_ramdisk_ioctl(struct cdev *dev, u_long cmd, caddr_t addr, int flag, struct thread *td); static int ctl_backend_ramdisk_rm(struct ctl_be_ramdisk_softc *softc, @@ -155,7 +155,7 @@ static int ctl_backend_ramdisk_create(struct ctl_be_ra struct ctl_lun_req *req); static int ctl_backend_ramdisk_modify(struct ctl_be_ramdisk_softc *softc, struct ctl_lun_req *req); -static void ctl_backend_ramdisk_lun_shutdown(void *be_lun); +static void ctl_backend_ramdisk_lun_shutdown(struct ctl_be_lun *cbe_lun); static struct ctl_backend_driver ctl_be_ramdisk_driver = { @@ -367,7 +367,7 @@ static int ctl_backend_ramdisk_cmp(union ctl_io *io) { struct ctl_be_lun *cbe_lun = CTL_BACKEND_LUN(io); - struct ctl_be_ramdisk_lun *be_lun = cbe_lun->be_lun; + struct ctl_be_ramdisk_lun *be_lun = (struct ctl_be_ramdisk_lun *)cbe_lun; uint8_t *page; uint8_t info[8]; uint64_t lba; @@ -404,8 +404,8 @@ ctl_backend_ramdisk_cmp(union ctl_io *io) static int ctl_backend_ramdisk_move_done(union ctl_io *io) { - struct ctl_be_lun *cbe_lun = CTL_BACKEND_LUN(io); - struct ctl_be_ramdisk_lun *be_lun = cbe_lun->be_lun; + struct ctl_be_ramdisk_lun *be_lun = + (struct ctl_be_ramdisk_lun *)CTL_BACKEND_LUN(io); #ifdef CTL_TIME_IO struct bintime cur_bt; #endif @@ -481,7 +481,7 @@ static void ctl_backend_ramdisk_rw(union ctl_io *io) { struct ctl_be_lun *cbe_lun = CTL_BACKEND_LUN(io); - struct ctl_be_ramdisk_lun *be_lun = cbe_lun->be_lun; + struct ctl_be_ramdisk_lun *be_lun = (struct ctl_be_ramdisk_lun *)cbe_lun; struct ctl_sg_entry *sg_entries; uint8_t *page; uint64_t lba; @@ -593,7 +593,7 @@ static int ctl_backend_ramdisk_gls(union ctl_io *io) { struct ctl_be_lun *cbe_lun = CTL_BACKEND_LUN(io); - struct ctl_be_ramdisk_lun *be_lun = cbe_lun->be_lun; + struct ctl_be_ramdisk_lun *be_lun = (struct ctl_be_ramdisk_lun *)cbe_lun; struct scsi_get_lba_status_data *data; uint8_t *page; u_int lbaoff; @@ -647,7 +647,7 @@ static void ctl_backend_ramdisk_delete(struct ctl_be_lun *cbe_lun, off_t lba, off_t len, int anchor) { - struct ctl_be_ramdisk_lun *be_lun = cbe_lun->be_lun; + struct ctl_be_ramdisk_lun *be_lun = (struct ctl_be_ramdisk_lun *)cbe_lun; uint8_t *page; uint64_t p, lp; u_int lbaoff; @@ -689,7 +689,7 @@ static void ctl_backend_ramdisk_ws(union ctl_io *io) { struct ctl_be_lun *cbe_lun = CTL_BACKEND_LUN(io); - struct ctl_be_ramdisk_lun *be_lun = cbe_lun->be_lun; + struct ctl_be_ramdisk_lun *be_lun = (struct ctl_be_ramdisk_lun *)cbe_lun; struct ctl_lba_len_flags *lbalen = ARGS(io); uint8_t *page; uint64_t lba; @@ -823,9 +823,9 @@ ctl_backend_ramdisk_config_write(union ctl_io *io) } static uint64_t -ctl_backend_ramdisk_lun_attr(void *arg, const char *attrname) +ctl_backend_ramdisk_lun_attr(struct ctl_be_lun *cbe_lun, const char *attrname) { - struct ctl_be_ramdisk_lun *be_lun = arg; + struct ctl_be_ramdisk_lun *be_lun = (struct ctl_be_ramdisk_lun *)cbe_lun; uint64_t val; val = UINT64_MAX; @@ -971,7 +971,6 @@ ctl_backend_ramdisk_create(struct ctl_be_ramdisk_softc be_lun = malloc(sizeof(*be_lun), M_RAMDISK, M_ZERO | M_WAITOK); cbe_lun = &be_lun->cbe_lun; - cbe_lun->be_lun = be_lun; cbe_lun->options = nvlist_clone(req->args_nvl); be_lun->params = req->reqdata.create; be_lun->softc = softc; @@ -1246,9 +1245,9 @@ bailout_error: } static void -ctl_backend_ramdisk_lun_shutdown(void *lun) +ctl_backend_ramdisk_lun_shutdown(struct ctl_be_lun *cbe_lun) { - struct ctl_be_ramdisk_lun *be_lun = lun; + struct ctl_be_ramdisk_lun *be_lun = (struct ctl_be_ramdisk_lun *)cbe_lun; struct ctl_be_ramdisk_softc *softc = be_lun->softc; taskqueue_drain_all(be_lun->io_taskqueue); From owner-svn-src-all@freebsd.org Thu May 28 21:56:31 2020 Return-Path: Delivered-To: svn-src-all@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 942CC2FF0BC; Thu, 28 May 2020 21:56:31 +0000 (UTC) (envelope-from vangyzen@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49Y1k73R6Bz4FhF; Thu, 28 May 2020 21:56:31 +0000 (UTC) (envelope-from vangyzen@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 70B09D602; Thu, 28 May 2020 21:56:31 +0000 (UTC) (envelope-from vangyzen@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04SLuV8m088153; Thu, 28 May 2020 21:56:31 GMT (envelope-from vangyzen@FreeBSD.org) Received: (from vangyzen@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04SLuVJb088152; Thu, 28 May 2020 21:56:31 GMT (envelope-from vangyzen@FreeBSD.org) Message-Id: <202005282156.04SLuVJb088152@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: vangyzen set sender to vangyzen@FreeBSD.org using -f From: Eric van Gyzen Date: Thu, 28 May 2020 21:56:31 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361605 - head/share/mk X-SVN-Group: head X-SVN-Commit-Author: vangyzen X-SVN-Commit-Paths: head/share/mk X-SVN-Commit-Revision: 361605 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2020 21:56:31 -0000 Author: vangyzen Date: Thu May 28 21:56:31 2020 New Revision: 361605 URL: https://svnweb.freebsd.org/changeset/base/361605 Log: Revert part of r360964 ports/devel/linux_libusb builds FreeBSD libusb with GCC 4.8.5 from devel/linux-c7-devtools. Restore the tests for older GCC in bsd.sys.mk to accomodate such ports. Reported by: tijl Sponsored by: Dell EMC Isilon Modified: head/share/mk/bsd.sys.mk Modified: head/share/mk/bsd.sys.mk ============================================================================== --- head/share/mk/bsd.sys.mk Thu May 28 21:30:29 2020 (r361604) +++ head/share/mk/bsd.sys.mk Thu May 28 21:56:31 2020 (r361605) @@ -124,7 +124,12 @@ CWARNFLAGS+= -Wno-format # GCC # We should clean up warnings produced with these flags. # They were originally added as a quick hack to enable gcc5/6. +# The base system requires at least GCC 6.4, but some ports +# use this file with older compilers. Request an exprun +# before changing these. .if ${COMPILER_TYPE} == "gcc" +# GCC 5.2.0 +.if ${COMPILER_VERSION} >= 50200 CWARNFLAGS+= -Wno-error=address \ -Wno-error=array-bounds \ -Wno-error=attributes \ @@ -136,15 +141,20 @@ CWARNFLAGS+= -Wno-error=address \ -Wno-error=extra \ -Wno-error=inline \ -Wno-error=logical-not-parentheses \ - -Wno-error=nonnull-compare \ - -Wno-error=shift-negative-value \ -Wno-error=strict-aliasing \ - -Wno-error=tautological-compare \ -Wno-error=uninitialized \ -Wno-error=unused-but-set-variable \ - -Wno-error=unused-const-variable \ -Wno-error=unused-function \ -Wno-error=unused-value +.endif + +# GCC 6.1.0 +.if ${COMPILER_VERSION} >= 60100 +CWARNFLAGS+= -Wno-error=nonnull-compare \ + -Wno-error=shift-negative-value \ + -Wno-error=tautological-compare \ + -Wno-error=unused-const-variable +.endif # GCC 7.1.0 .if ${COMPILER_VERSION} >= 70100 From owner-svn-src-all@freebsd.org Thu May 28 22:05:34 2020 Return-Path: Delivered-To: svn-src-all@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 3B3982FF367; Thu, 28 May 2020 22:05:34 +0000 (UTC) (envelope-from vangyzen@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49Y1wZ0slBz4GK6; Thu, 28 May 2020 22:05:34 +0000 (UTC) (envelope-from vangyzen@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 19055D344; Thu, 28 May 2020 22:05:34 +0000 (UTC) (envelope-from vangyzen@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04SM5Xmh094424; Thu, 28 May 2020 22:05:33 GMT (envelope-from vangyzen@FreeBSD.org) Received: (from vangyzen@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04SM5XRt094423; Thu, 28 May 2020 22:05:33 GMT (envelope-from vangyzen@FreeBSD.org) Message-Id: <202005282205.04SM5XRt094423@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: vangyzen set sender to vangyzen@FreeBSD.org using -f From: Eric van Gyzen Date: Thu, 28 May 2020 22:05:33 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361606 - head X-SVN-Group: head X-SVN-Commit-Author: vangyzen X-SVN-Commit-Paths: head X-SVN-Commit-Revision: 361606 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2020 22:05:34 -0000 Author: vangyzen Date: Thu May 28 22:05:33 2020 New Revision: 361606 URL: https://svnweb.freebsd.org/changeset/base/361606 Log: Add an UPDATING entry for r360964 Reported by: rpokala Sponsored by: Dell EMC Isilon Modified: head/UPDATING Modified: head/UPDATING ============================================================================== --- head/UPDATING Thu May 28 21:56:31 2020 (r361605) +++ head/UPDATING Thu May 28 22:05:33 2020 (r361606) @@ -32,6 +32,10 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 13.x IS SLOW: information about prerequisites and upgrading, if you are not already using clang 3.5.0 or higher. +20200512: + Support for obsolete compilers has been removed from the build system. + Clang 6 and GCC 6.4 are the minimum supported versions. + 20200424: closefrom(2) has been moved under COMPAT12, and replaced in libc with a stub that calls close_range(2). If using a custom kernel configuration, From owner-svn-src-all@freebsd.org Thu May 28 22:05:52 2020 Return-Path: Delivered-To: svn-src-all@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 6459D2FF50D; Thu, 28 May 2020 22:05:52 +0000 (UTC) (envelope-from emaste@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49Y1ww0jSpz4GqR; Thu, 28 May 2020 22:05:52 +0000 (UTC) (envelope-from emaste@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 E5DEED2F0; Thu, 28 May 2020 22:05:51 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04SM5ptB094671; Thu, 28 May 2020 22:05:51 GMT (envelope-from emaste@FreeBSD.org) Received: (from emaste@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04SM5o3b094663; Thu, 28 May 2020 22:05:50 GMT (envelope-from emaste@FreeBSD.org) Message-Id: <202005282205.04SM5o3b094663@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: emaste set sender to emaste@FreeBSD.org using -f From: Ed Maste Date: Thu, 28 May 2020 22:05:50 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361607 - in head: . etc/mtree lib lib/libevent lib/libevent1 share/mk usr.sbin/ftp-proxy usr.sbin/ypldap X-SVN-Group: head X-SVN-Commit-Author: emaste X-SVN-Commit-Paths: in head: . etc/mtree lib lib/libevent lib/libevent1 share/mk usr.sbin/ftp-proxy usr.sbin/ypldap X-SVN-Commit-Revision: 361607 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2020 22:05:52 -0000 Author: emaste Date: Thu May 28 22:05:50 2020 New Revision: 361607 URL: https://svnweb.freebsd.org/changeset/base/361607 Log: rename in-tree libevent v1 to libevent1 r316063 installed pf's embedded libevent as a private lib, with headers in /usr/include/private/event. Unfortunately we also have a copy of libevent v2 included in ntp, which needed to be updated for compatibility with OpenSSL 1.1. As unadorned 'libevent' generally refers to libevent v2, be explicit that this one is libevent v1. Reviewed by: vangyzen (earlier) Differential Revision: https://reviews.freebsd.org/D17275 Added: head/lib/libevent1/ - copied from r361606, head/lib/libevent/ Deleted: head/lib/libevent/ Modified: head/ObsoleteFiles.inc head/etc/mtree/BSD.usr.dist head/lib/Makefile head/lib/libevent1/Makefile head/share/mk/src.libnames.mk head/usr.sbin/ftp-proxy/Makefile head/usr.sbin/ypldap/Makefile Modified: head/ObsoleteFiles.inc ============================================================================== --- head/ObsoleteFiles.inc Thu May 28 22:05:33 2020 (r361606) +++ head/ObsoleteFiles.inc Thu May 28 22:05:50 2020 (r361607) @@ -36,6 +36,10 @@ # xargs -n1 | sort | uniq -d; # done +# 20200528: libevent renamed libevent1 +OLD_FILES+=usr/include/private/event/event.h +OLD_DIRS+=usr/include/private/event + # 20200523: new clang import which bumps version from 10.0.0 to 10.0.1.s OLD_FILES+=usr/lib/clang/10.0.0/include/cuda_wrappers/algorithm OLD_FILES+=usr/lib/clang/10.0.0/include/cuda_wrappers/complex Modified: head/etc/mtree/BSD.usr.dist ============================================================================== --- head/etc/mtree/BSD.usr.dist Thu May 28 22:05:33 2020 (r361606) +++ head/etc/mtree/BSD.usr.dist Thu May 28 22:05:50 2020 (r361607) @@ -11,7 +11,7 @@ private bsdstat .. - event + event1 .. gmock internal Modified: head/lib/Makefile ============================================================================== --- head/lib/Makefile Thu May 28 22:05:33 2020 (r361606) +++ head/lib/Makefile Thu May 28 22:05:50 2020 (r361607) @@ -48,7 +48,7 @@ SUBDIR= ${SUBDIR_BOOTSTRAP} \ libdwarf \ libedit \ libelftc \ - libevent \ + libevent1 \ libexecinfo \ libexpat \ libfetch \ Modified: head/lib/libevent1/Makefile ============================================================================== --- head/lib/libevent/Makefile Thu May 28 22:05:33 2020 (r361606) +++ head/lib/libevent1/Makefile Thu May 28 22:05:50 2020 (r361607) @@ -5,7 +5,7 @@ PACKAGE=lib${LIB} .include -LIB= event +LIB= event1 SHLIB_MAJOR= 1 PRIVATELIB= Modified: head/share/mk/src.libnames.mk ============================================================================== --- head/share/mk/src.libnames.mk Thu May 28 22:05:33 2020 (r361606) +++ head/share/mk/src.libnames.mk Thu May 28 22:05:50 2020 (r361607) @@ -18,7 +18,7 @@ _PRIVATELIBS= \ auditd \ bsdstat \ devdctl \ - event \ + event1 \ gmock \ gtest \ gmock_main \ Modified: head/usr.sbin/ftp-proxy/Makefile ============================================================================== --- head/usr.sbin/ftp-proxy/Makefile Thu May 28 22:05:33 2020 (r361606) +++ head/usr.sbin/ftp-proxy/Makefile Thu May 28 22:05:50 2020 (r361607) @@ -9,7 +9,7 @@ SRCS= ftp-proxy.c filter.c CFLAGS+=-I${SRCTOP}/contrib/pf/libevent -LIBADD= event +LIBADD= event1 WARNS?= 3 Modified: head/usr.sbin/ypldap/Makefile ============================================================================== --- head/usr.sbin/ypldap/Makefile Thu May 28 22:05:33 2020 (r361606) +++ head/usr.sbin/ypldap/Makefile Thu May 28 22:05:50 2020 (r361607) @@ -9,7 +9,7 @@ SRCS= parse.y ypldap.c log.c \ MAN= ypldap.8 ypldap.conf.5 -LIBADD= openbsd event util rpcsvc +LIBADD= openbsd event1 util rpcsvc CFLAGS+=-I${.CURDIR} CFLAGS+=-I${SRCTOP}/contrib/pf/libevent From owner-svn-src-all@freebsd.org Thu May 28 22:08:05 2020 Return-Path: Delivered-To: svn-src-all@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 71E7D2FEDFB; Thu, 28 May 2020 22:08:05 +0000 (UTC) (envelope-from eric@vangyzen.net) Received: from smtp.vangyzen.net (hotblack.vangyzen.net [199.48.133.146]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 49Y1zS6KQQz4Gv1; Thu, 28 May 2020 22:08:04 +0000 (UTC) (envelope-from eric@vangyzen.net) Received: from disco.vangyzen.net (unknown [70.97.188.230]) by smtp.vangyzen.net (Postfix) with ESMTPSA id E42B856486; Thu, 28 May 2020 17:08:03 -0500 (CDT) Subject: Re: svn commit: r360964 - in head: lib/libclang_rt lib/libthr lib/msun libexec/rtld-elf libexec/tftpd/tests share/mk stand stand/arm/uboot stand/efi stand/efi/boot1 stand/efi/loader stand/i386/boot2 st... To: =?UTF-8?Q?T=c4=b3l_Coosemans?= Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org References: <202005121522.04CFMfuo007680@repo.freebsd.org> <20200525103719.7762dbc7@FreeBSD.org> From: Eric van Gyzen Message-ID: <5f15c365-d6dd-d572-c232-447dd45a2774@vangyzen.net> Date: Thu, 28 May 2020 17:08:03 -0500 User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:68.0) Gecko/20100101 Thunderbird/68.8.1 MIME-Version: 1.0 In-Reply-To: <20200525103719.7762dbc7@FreeBSD.org> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: 49Y1zS6KQQz4Gv1 X-Spamd-Bar: - Authentication-Results: mx1.freebsd.org; dkim=none; dmarc=none; spf=pass (mx1.freebsd.org: domain of eric@vangyzen.net designates 199.48.133.146 as permitted sender) smtp.mailfrom=eric@vangyzen.net X-Spamd-Result: default: False [-1.58 / 15.00]; ARC_NA(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; MID_RHS_MATCH_FROM(0.00)[]; FROM_HAS_DN(0.00)[]; RCPT_COUNT_THREE(0.00)[4]; R_SPF_ALLOW(-0.20)[+a:c]; TO_MATCH_ENVRCPT_ALL(0.00)[]; MIME_GOOD(-0.10)[text/plain]; DMARC_NA(0.00)[vangyzen.net]; NEURAL_HAM_LONG(-0.95)[-0.947]; TO_DN_SOME(0.00)[]; NEURAL_SPAM_SHORT(0.47)[0.472]; NEURAL_HAM_MEDIUM(-0.80)[-0.805]; FROM_EQ_ENVFROM(0.00)[]; R_DKIM_NA(0.00)[]; MIME_TRACE(0.00)[0:+]; ASN(0.00)[asn:36236, ipnet:199.48.132.0/22, country:US]; RCVD_COUNT_TWO(0.00)[2]; RCVD_TLS_ALL(0.00)[] X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2020 22:08:05 -0000 On 5/25/20 3:37 AM, Tijl Coosemans wrote: > On Tue, 12 May 2020 15:22:41 +0000 (UTC) Eric van Gyzen > wrote: >> Author: vangyzen >> Date: Tue May 12 15:22:40 2020 >> New Revision: 360964 >> URL: https://svnweb.freebsd.org/changeset/base/360964 >> >> Log: >> Remove tests for obsolete compilers in the build system >> >> Assume gcc is at least 6.4, the oldest xtoolchain in the ports tree. >> Assume clang is at least 6, which was in 11.2-RELEASE. Drop conditions >> for older compilers. >> >> Reviewed by: imp (earlier version), emaste, jhb >> MFC after: 2 weeks >> Sponsored by: Dell EMC Isilon >> Differential Revision: https://reviews.freebsd.org/D24802 > > This broke devel/linux_libusb. It is FreeBSD libusb built with Linux > gcc 4.8.5 (devel/linux-c7-devtools). It's probably caused by the > changes to share/mk/*. > > http://beefy18.nyi.freebsd.org/data/head-amd64-default/p536258_s361404/logs/linux_libusb-13.0r358841.log This should be fixed in r361605. Thanks for bringing it to my attention. Eric From owner-svn-src-all@freebsd.org Thu May 28 23:23:50 2020 Return-Path: Delivered-To: svn-src-all@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 88C2D328B14; Thu, 28 May 2020 23:23:50 +0000 (UTC) (envelope-from imp@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49Y3ft3NcKz4N8r; Thu, 28 May 2020 23:23:50 +0000 (UTC) (envelope-from imp@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 54F8DE6BF; Thu, 28 May 2020 23:23:50 +0000 (UTC) (envelope-from imp@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04SNNonk043557; Thu, 28 May 2020 23:23:50 GMT (envelope-from imp@FreeBSD.org) Received: (from imp@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04SNNnFX043554; Thu, 28 May 2020 23:23:49 GMT (envelope-from imp@FreeBSD.org) Message-Id: <202005282323.04SNNnFX043554@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: imp set sender to imp@FreeBSD.org using -f From: Warner Losh Date: Thu, 28 May 2020 23:23:49 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org Subject: svn commit: r361608 - in stable/12/sys/dev: mpr mps X-SVN-Group: stable-12 X-SVN-Commit-Author: imp X-SVN-Commit-Paths: in stable/12/sys/dev: mpr mps X-SVN-Commit-Revision: 361608 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2020 23:23:50 -0000 Author: imp Date: Thu May 28 23:23:49 2020 New Revision: 361608 URL: https://svnweb.freebsd.org/changeset/base/361608 Log: MFC r358308: Before issing the REMOVE_DEVICE command to the firmware, make sure that all commands have completed. It's not OK to force complete any pending commands before we send the REMOVE_DEVICE. Instead, make sure that all pending commands are complete before sending that. By trying to second guess the firmware here, we run the risk of completing commands twice, which leads to corruption. This removes the forced completion of commands introduced in r218811. So it's a partial backout of that commit, but replaces it with a more rebust mechanism. Either these commands will complete due to the TARGET RESET, or they will timeout and be aborted, but they will all complete. Add assert that all commands are complete to REMOVE_DEVICE completion routine. We attempt to assure this programatically, so we shouldn't have any commands in the queue because we've waited for them all. Any commands that make it into our action routine after we mark the target in removal will complete immediately with an error. When we're removing a target that's not a volume, advertise up the stack that it's actually gone, as opposed to having a transient selection error we should retry. Do this both in the action routine, and when we get a notification of an aborted command. We don't do this for volumes because the driver tries hard not to advertise to the OS a volume has disappeared. Apply these changes to both mpr and mps since they are based on quite similar designs. Discussed with: scottl@ Differential Revision: https://reviews.freebsd.org/D23768 Modified: stable/12/sys/dev/mpr/mpr_sas.c stable/12/sys/dev/mpr/mpr_sas.h stable/12/sys/dev/mps/mps_sas.c stable/12/sys/dev/mps/mps_sas.h Directory Properties: stable/12/ (props changed) Modified: stable/12/sys/dev/mpr/mpr_sas.c ============================================================================== --- stable/12/sys/dev/mpr/mpr_sas.c Thu May 28 22:05:50 2020 (r361607) +++ stable/12/sys/dev/mpr/mpr_sas.c Thu May 28 23:23:49 2020 (r361608) @@ -559,7 +559,6 @@ mprsas_remove_device(struct mpr_softc *sc, struct mpr_ MPI2_SCSI_TASK_MANAGE_REPLY *reply; MPI2_SAS_IOUNIT_CONTROL_REQUEST *req; struct mprsas_target *targ; - struct mpr_command *next_cm; uint16_t handle; MPR_FUNCTRACE(sc); @@ -609,7 +608,18 @@ mprsas_remove_device(struct mpr_softc *sc, struct mpr_ tm->cm_complete = mprsas_remove_complete; tm->cm_complete_data = (void *)(uintptr_t)handle; - mpr_map_command(sc, tm); + /* + * Wait to send the REMOVE_DEVICE until all the commands have cleared. + * They should be aborted or time out and we'll kick thus off there + * if so. + */ + if (TAILQ_FIRST(&targ->commands) == NULL) { + mpr_dprint(sc, MPR_INFO, "No pending commands: starting remove_device\n"); + mpr_map_command(sc, tm); + targ->pending_remove_tm = NULL; + } else { + targ->pending_remove_tm = tm; + } mpr_dprint(sc, MPR_INFO, "clearing target %u handle 0x%04x\n", targ->tid, handle); @@ -618,14 +628,6 @@ mprsas_remove_device(struct mpr_softc *sc, struct mpr_ "connector name (%4s)\n", targ->encl_level, targ->encl_slot, targ->connector_name); } - TAILQ_FOREACH_SAFE(tm, &targ->commands, cm_link, next_cm) { - union ccb *ccb; - - mpr_dprint(sc, MPR_XINFO, "Completing missed command %p\n", tm); - ccb = tm->cm_complete_data; - mprsas_set_ccbstatus(ccb, CAM_DEV_NOT_THERE); - mprsas_scsiio_complete(sc, tm); - } } static void @@ -641,7 +643,16 @@ mprsas_remove_complete(struct mpr_softc *sc, struct mp reply = (MPI2_SAS_IOUNIT_CONTROL_REPLY *)tm->cm_reply; handle = (uint16_t)(uintptr_t)tm->cm_complete_data; + targ = tm->cm_targ; + /* + * At this point, we should have no pending commands for the target. + * The remove target has just completed. + */ + KASSERT(TAILQ_FIRST(&targ->commands) == NULL, + ("%s: no commands should be pending\n", __func__)); + + /* * Currently there should be no way we can hit this case. It only * happens when we have a failure to allocate chain frames, and * task management commands don't have S/G lists. @@ -673,7 +684,6 @@ mprsas_remove_complete(struct mpr_softc *sc, struct mp */ if ((le16toh(reply->IOCStatus) & MPI2_IOCSTATUS_MASK) == MPI2_IOCSTATUS_SUCCESS) { - targ = tm->cm_targ; targ->handle = 0x0; targ->encl_handle = 0x0; targ->encl_level_valid = 0x0; @@ -1963,13 +1973,17 @@ mprsas_action_scsiio(struct mprsas_softc *sassc, union /* * If devinfo is 0 this will be a volume. In that case don't tell CAM * that the volume has timed out. We want volumes to be enumerated - * until they are deleted/removed, not just failed. + * until they are deleted/removed, not just failed. In either event, + * we're removing the target due to a firmware event telling us + * the device is now gone (as opposed to some transient event). Since + * we're opting to remove failed devices from the OS's view, we need + * to propagate that status up the stack. */ if (targ->flags & MPRSAS_TARGET_INREMOVAL) { if (targ->devinfo == 0) mprsas_set_ccbstatus(ccb, CAM_REQ_CMP); else - mprsas_set_ccbstatus(ccb, CAM_SEL_TIMEOUT); + mprsas_set_ccbstatus(ccb, CAM_DEV_NOT_THERE); xpt_done(ccb); return; } @@ -2843,15 +2857,22 @@ mprsas_scsiio_complete(struct mpr_softc *sc, struct mp * potential risk of flagging false failures in the event * of a topology-related error (e.g. a SAS expander problem * causes a command addressed to a drive to fail), but - * avoiding getting into an infinite retry loop. + * avoiding getting into an infinite retry loop. However, + * if we get them while were moving a device, we should + * fail the request as 'not there' because the device + * is effectively gone. */ - mprsas_set_ccbstatus(ccb, CAM_REQ_CMP_ERR); + if (cm->cm_targ->flags & MPRSAS_TARGET_INREMOVAL) + mprsas_set_ccbstatus(ccb, CAM_DEV_NOT_THERE); + else + mprsas_set_ccbstatus(ccb, CAM_REQ_CMP_ERR); mpr_dprint(sc, MPR_INFO, - "Controller reported %s tgt %u SMID %u loginfo %x\n", + "Controller reported %s tgt %u SMID %u loginfo %x%s\n", mpr_describe_table(mpr_iocstatus_string, le16toh(rep->IOCStatus) & MPI2_IOCSTATUS_MASK), target_id, cm->cm_desc.Default.SMID, - le32toh(rep->IOCLogInfo)); + le32toh(rep->IOCLogInfo), + (cm->cm_targ->flags & MPRSAS_TARGET_INREMOVAL) ? " departing" : ""); mpr_dprint(sc, MPR_XINFO, "SCSIStatus %x SCSIState %x xfercount %u\n", rep->SCSIStatus, rep->SCSIState, @@ -2897,6 +2918,21 @@ mprsas_scsiio_complete(struct mpr_softc *sc, struct mp if (mprsas_get_ccbstatus(ccb) != CAM_REQ_CMP) { ccb->ccb_h.status |= CAM_DEV_QFRZN; xpt_freeze_devq(ccb->ccb_h.path, /*count*/ 1); + } + + /* + * Check to see if we're removing the device. If so, and this is the + * last command on the queue, proceed with the deferred removal of the + * device. Note, for removing a volume, this won't trigger because + * pending_remove_tm will be NULL. + */ + if (cm->cm_targ->flags & MPRSAS_TARGET_INREMOVAL) { + if (TAILQ_FIRST(&cm->cm_targ->commands) == NULL && + cm->cm_targ->pending_remove_tm != NULL) { + mpr_dprint(sc, MPR_INFO, "Last pending command complete: starting remove_device\n"); + mpr_map_command(sc, cm->cm_targ->pending_remove_tm); + cm->cm_targ->pending_remove_tm = NULL; + } } mpr_free_command(sc, cm); Modified: stable/12/sys/dev/mpr/mpr_sas.h ============================================================================== --- stable/12/sys/dev/mpr/mpr_sas.h Thu May 28 22:05:50 2020 (r361607) +++ stable/12/sys/dev/mpr/mpr_sas.h Thu May 28 23:23:49 2020 (r361608) @@ -64,6 +64,7 @@ struct mprsas_target { SLIST_HEAD(, mprsas_lun) luns; TAILQ_HEAD(, mpr_command) commands; struct mpr_command *tm; + struct mpr_command *pending_remove_tm; TAILQ_HEAD(, mpr_command) timedout_commands; uint16_t exp_dev_handle; uint16_t phy_num; Modified: stable/12/sys/dev/mps/mps_sas.c ============================================================================== --- stable/12/sys/dev/mps/mps_sas.c Thu May 28 22:05:50 2020 (r361607) +++ stable/12/sys/dev/mps/mps_sas.c Thu May 28 23:23:49 2020 (r361608) @@ -556,7 +556,6 @@ mpssas_remove_device(struct mps_softc *sc, struct mps_ MPI2_SCSI_TASK_MANAGE_REPLY *reply; MPI2_SAS_IOUNIT_CONTROL_REQUEST *req; struct mpssas_target *targ; - struct mps_command *next_cm; uint16_t handle; MPS_FUNCTRACE(sc); @@ -609,18 +608,22 @@ mpssas_remove_device(struct mps_softc *sc, struct mps_ tm->cm_complete = mpssas_remove_complete; tm->cm_complete_data = (void *)(uintptr_t)handle; - mps_map_command(sc, tm); + /* + * Wait to send the REMOVE_DEVICE until all the commands have cleared. + * They should be aborted or time out and we'll kick thus off there + * if so. + */ + if (TAILQ_FIRST(&targ->commands) == NULL) { + mps_dprint(sc, MPS_INFO, "No pending commands: starting remove_device\n"); + mps_map_command(sc, tm); + targ->pending_remove_tm = NULL; + } else { + targ->pending_remove_tm = tm; + } + mps_dprint(sc, MPS_XINFO, "clearing target %u handle 0x%04x\n", targ->tid, handle); - TAILQ_FOREACH_SAFE(tm, &targ->commands, cm_link, next_cm) { - union ccb *ccb; - - mps_dprint(sc, MPS_XINFO, "Completing missed command %p\n", tm); - ccb = tm->cm_complete_data; - mpssas_set_ccbstatus(ccb, CAM_DEV_NOT_THERE); - mpssas_scsiio_complete(sc, tm); - } } static void @@ -635,8 +638,17 @@ mpssas_remove_complete(struct mps_softc *sc, struct mp reply = (MPI2_SAS_IOUNIT_CONTROL_REPLY *)tm->cm_reply; handle = (uint16_t)(uintptr_t)tm->cm_complete_data; + targ = tm->cm_targ; /* + * At this point, we should have no pending commands for the target. + * The remove target has just completed. + */ + KASSERT(TAILQ_FIRST(&targ->commands) == NULL, + ("%s: no commands should be pending\n", __func__)); + + + /* * Currently there should be no way we can hit this case. It only * happens when we have a failure to allocate chain frames, and * task management commands don't have S/G lists. @@ -670,7 +682,6 @@ mpssas_remove_complete(struct mps_softc *sc, struct mp */ if ((le16toh(reply->IOCStatus) & MPI2_IOCSTATUS_MASK) == MPI2_IOCSTATUS_SUCCESS) { - targ = tm->cm_targ; targ->handle = 0x0; targ->encl_handle = 0x0; targ->encl_slot = 0x0; @@ -1712,13 +1723,17 @@ mpssas_action_scsiio(struct mpssas_softc *sassc, union /* * If devinfo is 0 this will be a volume. In that case don't tell CAM * that the volume has timed out. We want volumes to be enumerated - * until they are deleted/removed, not just failed. + * until they are deleted/removed, not just failed. In either event, + * we're removing the target due to a firmware event telling us + * the device is now gone (as opposed to some transient event). Since + * we're opting to remove failed devices from the OS's view, we need + * to propagate that status up the stack. */ if (targ->flags & MPSSAS_TARGET_INREMOVAL) { if (targ->devinfo == 0) mpssas_set_ccbstatus(ccb, CAM_REQ_CMP); else - mpssas_set_ccbstatus(ccb, CAM_SEL_TIMEOUT); + mpssas_set_ccbstatus(ccb, CAM_DEV_NOT_THERE); xpt_done(ccb); return; } @@ -2351,15 +2366,22 @@ mpssas_scsiio_complete(struct mps_softc *sc, struct mp * potential risk of flagging false failures in the event * of a topology-related error (e.g. a SAS expander problem * causes a command addressed to a drive to fail), but - * avoiding getting into an infinite retry loop. + * avoiding getting into an infinite retry loop. However, + * if we get them while were moving a device, we should + * fail the request as 'not there' because the device + * is effectively gone. */ - mpssas_set_ccbstatus(ccb, CAM_REQ_CMP_ERR); + if (cm->cm_targ->flags & MPSSAS_TARGET_INREMOVAL) + mpssas_set_ccbstatus(ccb, CAM_DEV_NOT_THERE); + else + mpssas_set_ccbstatus(ccb, CAM_REQ_CMP_ERR); mps_dprint(sc, MPS_INFO, - "Controller reported %s tgt %u SMID %u loginfo %x\n", + "Controller reported %s tgt %u SMID %u loginfo %x%s\n", mps_describe_table(mps_iocstatus_string, le16toh(rep->IOCStatus) & MPI2_IOCSTATUS_MASK), target_id, cm->cm_desc.Default.SMID, - le32toh(rep->IOCLogInfo)); + le32toh(rep->IOCLogInfo), + (cm->cm_targ->flags & MPSSAS_TARGET_INREMOVAL) ? " departing" : ""); mps_dprint(sc, MPS_XINFO, "SCSIStatus %x SCSIState %x xfercount %u\n", rep->SCSIStatus, rep->SCSIState, @@ -2398,6 +2420,21 @@ mpssas_scsiio_complete(struct mps_softc *sc, struct mp if (mpssas_get_ccbstatus(ccb) != CAM_REQ_CMP) { ccb->ccb_h.status |= CAM_DEV_QFRZN; xpt_freeze_devq(ccb->ccb_h.path, /*count*/ 1); + } + + /* + * Check to see if we're removing the device. If so, and this is the + * last command on the queue, proceed with the deferred removal of the + * device. Note, for removing a volume, this won't trigger because + * pending_remove_tm will be NULL. + */ + if (cm->cm_targ->flags & MPSSAS_TARGET_INREMOVAL) { + if (TAILQ_FIRST(&cm->cm_targ->commands) == NULL && + cm->cm_targ->pending_remove_tm != NULL) { + mps_dprint(sc, MPS_INFO, "Last pending command complete: starting remove_device\n"); + mps_map_command(sc, cm->cm_targ->pending_remove_tm); + cm->cm_targ->pending_remove_tm = NULL; + } } mps_free_command(sc, cm); Modified: stable/12/sys/dev/mps/mps_sas.h ============================================================================== --- stable/12/sys/dev/mps/mps_sas.h Thu May 28 22:05:50 2020 (r361607) +++ stable/12/sys/dev/mps/mps_sas.h Thu May 28 23:23:49 2020 (r361608) @@ -62,6 +62,7 @@ struct mpssas_target { SLIST_HEAD(, mpssas_lun) luns; TAILQ_HEAD(, mps_command) commands; struct mps_command *tm; + struct mps_command *pending_remove_tm; TAILQ_HEAD(, mps_command) timedout_commands; uint16_t exp_dev_handle; uint16_t phy_num; From owner-svn-src-all@freebsd.org Thu May 28 23:55:46 2020 Return-Path: Delivered-To: svn-src-all@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 A7FD532923C; Thu, 28 May 2020 23:55:46 +0000 (UTC) (envelope-from mav@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49Y4Mk44ppz4Q0t; Thu, 28 May 2020 23:55:46 +0000 (UTC) (envelope-from mav@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 8764CE5EC; Thu, 28 May 2020 23:55:46 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04SNtkZg061980; Thu, 28 May 2020 23:55:46 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04SNtkrC061979; Thu, 28 May 2020 23:55:46 GMT (envelope-from mav@FreeBSD.org) Message-Id: <202005282355.04SNtkrC061979@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Thu, 28 May 2020 23:55:46 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361609 - head/sys/cam/ctl X-SVN-Group: head X-SVN-Commit-Author: mav X-SVN-Commit-Paths: head/sys/cam/ctl X-SVN-Commit-Revision: 361609 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2020 23:55:46 -0000 Author: mav Date: Thu May 28 23:55:46 2020 New Revision: 361609 URL: https://svnweb.freebsd.org/changeset/base/361609 Log: Remove PDU_TOTAL_TRANSFER_LEN() macro. I don't see a point to copy io->scsiio.kern_total_len into the request PDU private field. The io is going to stay with us till the end, and kern_total_len field is not changed after being first initialized. MFC after: 2 weeks Sponsored by: iXsystems, Inc. Modified: head/sys/cam/ctl/ctl_frontend_iscsi.c Modified: head/sys/cam/ctl/ctl_frontend_iscsi.c ============================================================================== --- head/sys/cam/ctl/ctl_frontend_iscsi.c Thu May 28 23:23:49 2020 (r361608) +++ head/sys/cam/ctl/ctl_frontend_iscsi.c Thu May 28 23:55:46 2020 (r361609) @@ -144,7 +144,6 @@ SYSCTL_INT(_kern_cam_ctl_iscsi, OID_AUTO, maxtags, CTL #define CONN_SESSION(X) ((struct cfiscsi_session *)(X)->ic_prv0) #define PDU_SESSION(X) CONN_SESSION((X)->ip_conn) #define PDU_EXPDATASN(X) (X)->ip_prv0 -#define PDU_TOTAL_TRANSFER_LEN(X) (X)->ip_prv1 #define PDU_R2TSN(X) (X)->ip_prv2 static int cfiscsi_init(void); @@ -2446,13 +2445,6 @@ cfiscsi_datamove_in(union ctl_io *io) } /* - * This is the total amount of data to be transferred within the current - * SCSI command. We need to record it so that we can properly report - * underflow/underflow. - */ - PDU_TOTAL_TRANSFER_LEN(request) = io->scsiio.kern_total_len; - - /* * This is the offset within the current SCSI command; for the first * call to cfiscsi_datamove() it will be 0, and for subsequent ones * it will be the sum of lengths of previous ones. @@ -2611,17 +2603,17 @@ cfiscsi_datamove_in(union ctl_io *io) bhsdi->bhsdi_flags |= BHSDI_FLAGS_F; if (io->io_hdr.status == CTL_SUCCESS) { bhsdi->bhsdi_flags |= BHSDI_FLAGS_S; - if (PDU_TOTAL_TRANSFER_LEN(request) < + if (io->scsiio.kern_total_len < ntohl(bhssc->bhssc_expected_data_transfer_length)) { bhsdi->bhsdi_flags |= BHSSR_FLAGS_RESIDUAL_UNDERFLOW; bhsdi->bhsdi_residual_count = htonl(ntohl(bhssc->bhssc_expected_data_transfer_length) - - PDU_TOTAL_TRANSFER_LEN(request)); - } else if (PDU_TOTAL_TRANSFER_LEN(request) > + io->scsiio.kern_total_len); + } else if (io->scsiio.kern_total_len > ntohl(bhssc->bhssc_expected_data_transfer_length)) { bhsdi->bhsdi_flags |= BHSSR_FLAGS_RESIDUAL_OVERFLOW; bhsdi->bhsdi_residual_count = - htonl(PDU_TOTAL_TRANSFER_LEN(request) - + htonl(io->scsiio.kern_total_len - ntohl(bhssc->bhssc_expected_data_transfer_length)); } bhsdi->bhsdi_status = io->scsiio.scsi_status; @@ -2657,12 +2649,6 @@ cfiscsi_datamove_out(union ctl_io *io) ("bhssc->bhssc_opcode != ISCSI_BHS_OPCODE_SCSI_COMMAND")); /* - * We need to record it so that we can properly report - * underflow/underflow. - */ - PDU_TOTAL_TRANSFER_LEN(request) = io->scsiio.kern_total_len; - - /* * Complete write underflow. Not a single byte to read. Return. */ expected_len = ntohl(bhssc->bhssc_expected_data_transfer_length); @@ -2851,19 +2837,18 @@ cfiscsi_scsi_command_done(union ctl_io *io) * XXX: We don't deal with bidirectional under/overflows; * does anything actually support those? */ - if (PDU_TOTAL_TRANSFER_LEN(request) < + if (io->scsiio.kern_total_len < ntohl(bhssc->bhssc_expected_data_transfer_length)) { bhssr->bhssr_flags |= BHSSR_FLAGS_RESIDUAL_UNDERFLOW; bhssr->bhssr_residual_count = htonl(ntohl(bhssc->bhssc_expected_data_transfer_length) - - PDU_TOTAL_TRANSFER_LEN(request)); + io->scsiio.kern_total_len); //CFISCSI_SESSION_DEBUG(cs, "underflow; residual count %d", // ntohl(bhssr->bhssr_residual_count)); - } else if (PDU_TOTAL_TRANSFER_LEN(request) > + } else if (io->scsiio.kern_total_len > ntohl(bhssc->bhssc_expected_data_transfer_length)) { bhssr->bhssr_flags |= BHSSR_FLAGS_RESIDUAL_OVERFLOW; - bhssr->bhssr_residual_count = - htonl(PDU_TOTAL_TRANSFER_LEN(request) - + bhssr->bhssr_residual_count = htonl(io->scsiio.kern_total_len - ntohl(bhssc->bhssc_expected_data_transfer_length)); //CFISCSI_SESSION_DEBUG(cs, "overflow; residual count %d", // ntohl(bhssr->bhssr_residual_count)); From owner-svn-src-all@freebsd.org Thu May 28 23:57:51 2020 Return-Path: Delivered-To: svn-src-all@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 A906532960E; Thu, 28 May 2020 23:57:51 +0000 (UTC) (envelope-from rmacklem@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49Y4Q743XPz4QNP; Thu, 28 May 2020 23:57:51 +0000 (UTC) (envelope-from rmacklem@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 86527E749; Thu, 28 May 2020 23:57:51 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04SNvpIN062130; Thu, 28 May 2020 23:57:51 GMT (envelope-from rmacklem@FreeBSD.org) Received: (from rmacklem@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04SNvppI062128; Thu, 28 May 2020 23:57:51 GMT (envelope-from rmacklem@FreeBSD.org) Message-Id: <202005282357.04SNvppI062128@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: rmacklem set sender to rmacklem@FreeBSD.org using -f From: Rick Macklem Date: Thu, 28 May 2020 23:57:51 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361610 - head/sys/sys X-SVN-Group: head X-SVN-Commit-Author: rmacklem X-SVN-Commit-Paths: head/sys/sys X-SVN-Commit-Revision: 361610 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2020 23:57:51 -0000 Author: rmacklem Date: Thu May 28 23:57:50 2020 New Revision: 361610 URL: https://svnweb.freebsd.org/changeset/base/361610 Log: Oops, missed syscall.h and sysproto.h for r361602. Pointy hat goes on me. Modified: head/sys/sys/syscall.h head/sys/sys/sysproto.h Modified: head/sys/sys/syscall.h ============================================================================== --- head/sys/sys/syscall.h Thu May 28 23:55:46 2020 (r361609) +++ head/sys/sys/syscall.h Thu May 28 23:57:50 2020 (r361610) @@ -511,4 +511,5 @@ #define SYS_sigfastblock 573 #define SYS___realpathat 574 #define SYS_close_range 575 -#define SYS_MAXSYSCALL 576 +#define SYS_rpctls_syscall 576 +#define SYS_MAXSYSCALL 577 Modified: head/sys/sys/sysproto.h ============================================================================== --- head/sys/sys/sysproto.h Thu May 28 23:55:46 2020 (r361609) +++ head/sys/sys/sysproto.h Thu May 28 23:57:50 2020 (r361610) @@ -1832,6 +1832,10 @@ struct close_range_args { char highfd_l_[PADL_(u_int)]; u_int highfd; char highfd_r_[PADR_(u_int)]; char flags_l_[PADL_(int)]; int flags; char flags_r_[PADR_(int)]; }; +struct rpctls_syscall_args { + char op_l_[PADL_(int)]; int op; char op_r_[PADR_(int)]; + char path_l_[PADL_(const char *)]; const char * path; char path_r_[PADR_(const char *)]; +}; int nosys(struct thread *, struct nosys_args *); void sys_sys_exit(struct thread *, struct sys_exit_args *); int sys_fork(struct thread *, struct fork_args *); @@ -2222,6 +2226,7 @@ int sys_shm_rename(struct thread *, struct shm_rename_ int sys_sigfastblock(struct thread *, struct sigfastblock_args *); int sys___realpathat(struct thread *, struct __realpathat_args *); int sys_close_range(struct thread *, struct close_range_args *); +int sys_rpctls_syscall(struct thread *, struct rpctls_syscall_args *); #ifdef COMPAT_43 @@ -3152,6 +3157,7 @@ int freebsd12_closefrom(struct thread *, struct freebs #define SYS_AUE_sigfastblock AUE_NULL #define SYS_AUE___realpathat AUE_REALPATHAT #define SYS_AUE_close_range AUE_CLOSERANGE +#define SYS_AUE_rpctls_syscall AUE_NULL #undef PAD_ #undef PADL_ From owner-svn-src-all@freebsd.org Fri May 29 00:01:48 2020 Return-Path: Delivered-To: svn-src-all@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 36C1A329366; Fri, 29 May 2020 00:01:48 +0000 (UTC) (envelope-from gjb@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49Y4Vh0k8Vz4QbT; Fri, 29 May 2020 00:01:48 +0000 (UTC) (envelope-from gjb@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 14191EB4B; Fri, 29 May 2020 00:01:48 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04T01l4l065591; Fri, 29 May 2020 00:01:47 GMT (envelope-from gjb@FreeBSD.org) Received: (from gjb@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04T01lss065590; Fri, 29 May 2020 00:01:47 GMT (envelope-from gjb@FreeBSD.org) Message-Id: <202005290001.04T01lss065590@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: gjb set sender to gjb@FreeBSD.org using -f From: Glen Barber Date: Fri, 29 May 2020 00:01:47 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-releng@freebsd.org Subject: svn commit: r361611 - releng/11.4/sys/conf X-SVN-Group: releng X-SVN-Commit-Author: gjb X-SVN-Commit-Paths: releng/11.4/sys/conf X-SVN-Commit-Revision: 361611 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2020 00:01:48 -0000 Author: gjb Date: Fri May 29 00:01:47 2020 New Revision: 361611 URL: https://svnweb.freebsd.org/changeset/base/361611 Log: Update releng/11.4 to RC2 as part of the 11.4-RELEASE cycle. Approved by: re (implicit) Sponsored by: Rubicon Communications, LLC (netgate.com) Modified: releng/11.4/sys/conf/newvers.sh Modified: releng/11.4/sys/conf/newvers.sh ============================================================================== --- releng/11.4/sys/conf/newvers.sh Thu May 28 23:57:50 2020 (r361610) +++ releng/11.4/sys/conf/newvers.sh Fri May 29 00:01:47 2020 (r361611) @@ -44,7 +44,7 @@ TYPE="FreeBSD" REVISION="11.4" -BRANCH="RC1" +BRANCH="RC2" if [ -n "${BRANCH_OVERRIDE}" ]; then BRANCH=${BRANCH_OVERRIDE} fi From owner-svn-src-all@freebsd.org Fri May 29 00:05:44 2020 Return-Path: Delivered-To: svn-src-all@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 17046329C03; Fri, 29 May 2020 00:05:44 +0000 (UTC) (envelope-from adrian@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49Y4bC6sftz4Qn7; Fri, 29 May 2020 00:05:43 +0000 (UTC) (envelope-from adrian@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 E6FC5EBB2; Fri, 29 May 2020 00:05:43 +0000 (UTC) (envelope-from adrian@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04T05hMo068308; Fri, 29 May 2020 00:05:43 GMT (envelope-from adrian@FreeBSD.org) Received: (from adrian@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04T05hQK068307; Fri, 29 May 2020 00:05:43 GMT (envelope-from adrian@FreeBSD.org) Message-Id: <202005290005.04T05hQK068307@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: adrian set sender to adrian@FreeBSD.org using -f From: Adrian Chadd Date: Fri, 29 May 2020 00:05:43 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361612 - head/sys/mips/mips X-SVN-Group: head X-SVN-Commit-Author: adrian X-SVN-Commit-Paths: head/sys/mips/mips X-SVN-Commit-Revision: 361612 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2020 00:05:44 -0000 Author: adrian Date: Fri May 29 00:05:43 2020 New Revision: 361612 URL: https://svnweb.freebsd.org/changeset/base/361612 Log: [mips] fix up the assembly generation of unaligned exception loads I noticed that unaligned accesses were returning garbage values. Give test data like this: char testdata[] = { 0x12, 0x34, 0x56, 0x78, 0x9a, 0xbc, 0xde, 0xf1, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 0x5a }; Iterating through uint32_t space 1 byte at a time should look like this: freebsd-carambola2:/mnt# ./test Hello, world! offset 0 pointer 0x410b00 value 0x12345678 0x12345678 offset 1 pointer 0x410b01 value 0x3456789a 0x3456789a offset 2 pointer 0x410b02 value 0x56789abc 0x56789abc offset 3 pointer 0x410b03 value 0x789abcde 0x789abcde offset 4 pointer 0x410b04 value 0x9abcdef1 0x9abcdef1 offset 5 pointer 0x410b05 value 0xbcdef123 0xbcdef123 offset 6 pointer 0x410b06 value 0xdef12345 0xdef12345 offset 7 pointer 0x410b07 value 0xf1234567 0xf1234567 .. but to begin with it looked like this: offset 0 value 0x12345678 offset 1 value 0x00410a9a offset 2 value 0x00419abc offset 3 value 0x009abcde offset 4 value 0x9abcdef1 offset 5 value 0x00410a23 offset 6 value 0x00412345 offset 7 value 0x00234567 The amusing reason? The compiler is generating the lwr/lwl incorrectly. Here's an example after I tried to replace the two macros with a single invocation and offset, rather than having the compiler compile in addiu to s3 - but the bug is the same: 1044: 8a620003 lwl v0,0(s3) 1048: 9a730000 lwr s3,3(s3) .. which is just totally trashy and wrong. This explicitly tells the compiler to treat the output as being read and written to, which is what lwl/lwr does with the destination register. I think a subsequent commit should unify these macros to skip an addiu, but that can be a later commit. Reviewed by: jhb Differential Revision: https://reviews.freebsd.org/D25040 Modified: head/sys/mips/mips/trap.c Modified: head/sys/mips/mips/trap.c ============================================================================== --- head/sys/mips/mips/trap.c Fri May 29 00:01:47 2020 (r361611) +++ head/sys/mips/mips/trap.c Fri May 29 00:05:43 2020 (r361612) @@ -114,22 +114,22 @@ SYSCTL_INT(_machdep, OID_AUTO, trap_debug, CTLFLAG_RW, #define lwl_macro(data, addr) \ __asm __volatile ("lwl %0, 0x0(%1)" \ - : "=r" (data) /* outputs */ \ + : "+r" (data) /* outputs */ \ : "r" (addr)); /* inputs */ #define lwr_macro(data, addr) \ __asm __volatile ("lwr %0, 0x0(%1)" \ - : "=r" (data) /* outputs */ \ + : "+r" (data) /* outputs */ \ : "r" (addr)); /* inputs */ #define ldl_macro(data, addr) \ __asm __volatile ("ldl %0, 0x0(%1)" \ - : "=r" (data) /* outputs */ \ + : "+r" (data) /* outputs */ \ : "r" (addr)); /* inputs */ #define ldr_macro(data, addr) \ __asm __volatile ("ldr %0, 0x0(%1)" \ - : "=r" (data) /* outputs */ \ + : "+r" (data) /* outputs */ \ : "r" (addr)); /* inputs */ #define sb_macro(data, addr) \ @@ -1528,7 +1528,7 @@ mips_unaligned_load_store(struct trapframe *frame, int { register_t *reg = (register_t *) frame; u_int32_t inst = *((u_int32_t *)(intptr_t)pc); - register_t value_msb, value; + register_t value_msb = 0, value = 0; unsigned size; /* From owner-svn-src-all@freebsd.org Fri May 29 00:08:32 2020 Return-Path: Delivered-To: svn-src-all@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 6639D329BA1; Fri, 29 May 2020 00:08:32 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from smtp.freebsd.org (smtp.freebsd.org [IPv6:2610:1c1:1:606c::24b:4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "smtp.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 49Y4fS26R7z4RXT; Fri, 29 May 2020 00:08:32 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from John-Baldwins-MacBook-Pro-274.local (unknown [IPv6:2601:648:8203:2990:40bf:92c3:4b1a:f502]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) (Authenticated sender: jhb) by smtp.freebsd.org (Postfix) with ESMTPSA id CAE4829B8F; Fri, 29 May 2020 00:08:31 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Subject: Re: svn commit: r361610 - head/sys/sys To: Rick Macklem , src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org References: <202005282357.04SNvppI062128@repo.freebsd.org> From: John Baldwin Autocrypt: addr=jhb@FreeBSD.org; keydata= mQGiBETQ+XcRBADMFybiq69u+fJRy/0wzqTNS8jFfWaBTs5/OfcV7wWezVmf9sgwn8TW0Dk0 c9MBl0pz+H01dA2ZSGZ5fXlmFIsee1WEzqeJzpiwd/pejPgSzXB9ijbLHZ2/E0jhGBcVy5Yo /Tw5+U/+laeYKu2xb0XPvM0zMNls1ah5OnP9a6Ql6wCgupaoMySb7DXm2LHD1Z9jTsHcAQMD /1jzh2BoHriy/Q2s4KzzjVp/mQO5DSm2z14BvbQRcXU48oAosHA1u3Wrov6LfPY+0U1tG47X 1BGfnQH+rNAaH0livoSBQ0IPI/8WfIW7ub4qV6HYwWKVqkDkqwcpmGNDbz3gfaDht6nsie5Z pcuCcul4M9CW7Md6zzyvktjnbz61BADGDCopfZC4of0Z3Ka0u8Wik6UJOuqShBt1WcFS8ya1 oB4rc4tXfSHyMF63aPUBMxHR5DXeH+EO2edoSwViDMqWk1jTnYza51rbGY+pebLQOVOxAY7k do5Ordl3wklBPMVEPWoZ61SdbcjhHVwaC5zfiskcxj5wwXd2E9qYlBqRg7QeSm9obiBCYWxk d2luIDxqaGJARnJlZUJTRC5vcmc+iGAEExECACAFAkTQ+awCGwMGCwkIBwMCBBUCCAMEFgID AQIeAQIXgAAKCRBy3lIGd+N/BI6RAJ9S97fvbME+3hxzE3JUyUZ6vTewDACdE1stFuSfqMvM jomvZdYxIYyTUpC5Ag0ERND5ghAIAPwsO0B7BL+bz8sLlLoQktGxXwXQfS5cInvL17Dsgnr3 1AKa94j9EnXQyPEj7u0d+LmEe6CGEGDh1OcGFTMVrof2ZzkSy4+FkZwMKJpTiqeaShMh+Goj XlwIMDxyADYvBIg3eN5YdFKaPQpfgSqhT+7El7w+wSZZD8pPQuLAnie5iz9C8iKy4/cMSOrH YUK/tO+Nhw8Jjlw94Ik0T80iEhI2t+XBVjwdfjbq3HrJ0ehqdBwukyeJRYKmbn298KOFQVHO EVbHA4rF/37jzaMadK43FgJ0SAhPPF5l4l89z5oPu0b/+5e2inA3b8J3iGZxywjM+Csq1tqz hltEc7Q+E08AAwUIAL+15XH8bPbjNJdVyg2CMl10JNW2wWg2Q6qdljeaRqeR6zFus7EZTwtX sNzs5bP8y51PSUDJbeiy2RNCNKWFMndM22TZnk3GNG45nQd4OwYK0RZVrikalmJY5Q6m7Z16 4yrZgIXFdKj2t8F+x613/SJW1lIr9/bDp4U9tw0V1g3l2dFtD3p3ZrQ3hpoDtoK70ioIAjjH aIXIAcm3FGZFXy503DOA0KaTWwvOVdYCFLm3zWuSOmrX/GsEc7ovasOWwjPn878qVjbUKWwx Q4QkF4OhUV9zPtf9tDSAZ3x7QSwoKbCoRCZ/xbyTUPyQ1VvNy/mYrBcYlzHodsaqUDjHuW+I SQQYEQIACQUCRND5ggIbDAAKCRBy3lIGd+N/BCO8AJ9j1dWVQWxw/YdTbEyrRKOY8YZNwwCf afMAg8QvmOWnHx3wl8WslCaXaE8= Message-ID: <7c12641f-6fba-40f5-efd9-3007d63e6c8c@FreeBSD.org> Date: Thu, 28 May 2020 17:08:30 -0700 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:68.0) Gecko/20100101 Thunderbird/68.6.0 MIME-Version: 1.0 In-Reply-To: <202005282357.04SNvppI062128@repo.freebsd.org> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2020 00:08:32 -0000 On 5/28/20 4:57 PM, Rick Macklem wrote: > Author: rmacklem > Date: Thu May 28 23:57:50 2020 > New Revision: 361610 > URL: https://svnweb.freebsd.org/changeset/base/361610 > > Log: > Oops, missed syscall.h and sysproto.h for r361602. > > Pointy hat goes on me. I still have a diff in sys/syscall.mk after rerunning make sysent FWIW. Index: sys/sys/syscall.mk =================================================================== --- sys/sys/syscall.mk (revision 361612) +++ sys/sys/syscall.mk (working copy) @@ -416,4 +416,5 @@ shm_rename.o \ sigfastblock.o \ __realpathat.o \ - close_range.o + close_range.o \ + rpctls_syscall.o -- John Baldwin From owner-svn-src-all@freebsd.org Fri May 29 00:09:12 2020 Return-Path: Delivered-To: svn-src-all@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 BD33D329B25; Fri, 29 May 2020 00:09:12 +0000 (UTC) (envelope-from jhb@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49Y4gD4Dv4z4Rc7; Fri, 29 May 2020 00:09:12 +0000 (UTC) (envelope-from jhb@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 8CC2BEB5A; Fri, 29 May 2020 00:09:12 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04T09CbH068558; Fri, 29 May 2020 00:09:12 GMT (envelope-from jhb@FreeBSD.org) Received: (from jhb@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04T09CGF068557; Fri, 29 May 2020 00:09:12 GMT (envelope-from jhb@FreeBSD.org) Message-Id: <202005290009.04T09CGF068557@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: jhb set sender to jhb@FreeBSD.org using -f From: John Baldwin Date: Fri, 29 May 2020 00:09:12 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361613 - head/sys/kern X-SVN-Group: head X-SVN-Commit-Author: jhb X-SVN-Commit-Paths: head/sys/kern X-SVN-Commit-Revision: 361613 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2020 00:09:12 -0000 Author: jhb Date: Fri May 29 00:09:12 2020 New Revision: 361613 URL: https://svnweb.freebsd.org/changeset/base/361613 Log: Permit SO_NO_DDP and SO_NO_OFFLOAD to be read via getsockopt(2). MFC after: 2 weeks Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D24627 Modified: head/sys/kern/uipc_socket.c Modified: head/sys/kern/uipc_socket.c ============================================================================== --- head/sys/kern/uipc_socket.c Fri May 29 00:05:43 2020 (r361612) +++ head/sys/kern/uipc_socket.c Fri May 29 00:09:12 2020 (r361613) @@ -3231,6 +3231,8 @@ sogetopt(struct socket *so, struct sockopt *sopt) case SO_TIMESTAMP: case SO_BINTIME: case SO_NOSIGPIPE: + case SO_NO_DDP: + case SO_NO_OFFLOAD: optval = so->so_options & sopt->sopt_name; integer: error = sooptcopyout(sopt, &optval, sizeof optval); From owner-svn-src-all@freebsd.org Fri May 29 00:10:19 2020 Return-Path: Delivered-To: svn-src-all@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 9F18E329D20; Fri, 29 May 2020 00:10:19 +0000 (UTC) (envelope-from rmacklem@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49Y4hW3pY2z4RnD; Fri, 29 May 2020 00:10:19 +0000 (UTC) (envelope-from rmacklem@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 7E08CE75B; Fri, 29 May 2020 00:10:19 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04T0AJTv068684; Fri, 29 May 2020 00:10:19 GMT (envelope-from rmacklem@FreeBSD.org) Received: (from rmacklem@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04T0AJX6068683; Fri, 29 May 2020 00:10:19 GMT (envelope-from rmacklem@FreeBSD.org) Message-Id: <202005290010.04T0AJX6068683@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: rmacklem set sender to rmacklem@FreeBSD.org using -f From: Rick Macklem Date: Fri, 29 May 2020 00:10:19 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361614 - head/sys/sys X-SVN-Group: head X-SVN-Commit-Author: rmacklem X-SVN-Commit-Paths: head/sys/sys X-SVN-Commit-Revision: 361614 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2020 00:10:19 -0000 Author: rmacklem Date: Fri May 29 00:10:19 2020 New Revision: 361614 URL: https://svnweb.freebsd.org/changeset/base/361614 Log: Oops two, missed syscall.mk as well. Modified: head/sys/sys/syscall.mk Modified: head/sys/sys/syscall.mk ============================================================================== --- head/sys/sys/syscall.mk Fri May 29 00:09:12 2020 (r361613) +++ head/sys/sys/syscall.mk Fri May 29 00:10:19 2020 (r361614) @@ -416,4 +416,5 @@ MIASM = \ shm_rename.o \ sigfastblock.o \ __realpathat.o \ - close_range.o + close_range.o \ + rpctls_syscall.o From owner-svn-src-all@freebsd.org Fri May 29 00:46:32 2020 Return-Path: Delivered-To: svn-src-all@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 2B02032A981; Fri, 29 May 2020 00:46:32 +0000 (UTC) (envelope-from jhibbits@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49Y5VJ0KLHz4VcP; Fri, 29 May 2020 00:46:32 +0000 (UTC) (envelope-from jhibbits@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 06463F2E0; Fri, 29 May 2020 00:46:32 +0000 (UTC) (envelope-from jhibbits@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04T0kVRl093213; Fri, 29 May 2020 00:46:31 GMT (envelope-from jhibbits@FreeBSD.org) Received: (from jhibbits@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04T0kVrG093212; Fri, 29 May 2020 00:46:31 GMT (envelope-from jhibbits@FreeBSD.org) Message-Id: <202005290046.04T0kVrG093212@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: jhibbits set sender to jhibbits@FreeBSD.org using -f From: Justin Hibbits Date: Fri, 29 May 2020 00:46:31 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361615 - head/sys/powerpc/powerpc X-SVN-Group: head X-SVN-Commit-Author: jhibbits X-SVN-Commit-Paths: head/sys/powerpc/powerpc X-SVN-Commit-Revision: 361615 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2020 00:46:32 -0000 Author: jhibbits Date: Fri May 29 00:46:31 2020 New Revision: 361615 URL: https://svnweb.freebsd.org/changeset/base/361615 Log: powerpc: Stop advertising that POWER8 and POWER9 support HTM HTM is on the chopping block, doesn't work on FreeBSD, and has only token support in PowerISA 3.1 and POWER10. Don't advertise something we'll never support. Modified: head/sys/powerpc/powerpc/cpu.c Modified: head/sys/powerpc/powerpc/cpu.c ============================================================================== --- head/sys/powerpc/powerpc/cpu.c Fri May 29 00:10:19 2020 (r361614) +++ head/sys/powerpc/powerpc/cpu.c Fri May 29 00:46:31 2020 (r361615) @@ -170,30 +170,26 @@ static const struct cputab models[] = { PPC_FEATURE_64 | PPC_FEATURE_HAS_ALTIVEC | PPC_FEATURE_HAS_FPU | PPC_FEATURE_SMT | PPC_FEATURE_ICACHE_SNOOP | PPC_FEATURE_ARCH_2_05 | PPC_FEATURE_ARCH_2_06 | PPC_FEATURE_HAS_VSX | PPC_FEATURE_TRUE_LE, - PPC_FEATURE2_ARCH_2_07 | PPC_FEATURE2_HTM | PPC_FEATURE2_DSCR | - PPC_FEATURE2_ISEL | PPC_FEATURE2_TAR | PPC_FEATURE2_HAS_VEC_CRYPTO | - PPC_FEATURE2_HTM_NOSC, cpu_powerx_setup }, + PPC_FEATURE2_ARCH_2_07 | PPC_FEATURE2_DSCR | PPC_FEATURE2_ISEL | + PPC_FEATURE2_TAR | PPC_FEATURE2_HAS_VEC_CRYPTO, cpu_powerx_setup }, { "IBM POWER8NVL", IBMPOWER8NVL, REVFMT_MAJMIN, PPC_FEATURE_64 | PPC_FEATURE_HAS_ALTIVEC | PPC_FEATURE_HAS_FPU | PPC_FEATURE_SMT | PPC_FEATURE_ICACHE_SNOOP | PPC_FEATURE_ARCH_2_05 | PPC_FEATURE_ARCH_2_06 | PPC_FEATURE_HAS_VSX | PPC_FEATURE_TRUE_LE, - PPC_FEATURE2_ARCH_2_07 | PPC_FEATURE2_HTM | PPC_FEATURE2_DSCR | - PPC_FEATURE2_ISEL | PPC_FEATURE2_TAR | PPC_FEATURE2_HAS_VEC_CRYPTO | - PPC_FEATURE2_HTM_NOSC, cpu_powerx_setup }, + PPC_FEATURE2_ARCH_2_07 | PPC_FEATURE2_DSCR | PPC_FEATURE2_ISEL | + PPC_FEATURE2_TAR | PPC_FEATURE2_HAS_VEC_CRYPTO, cpu_powerx_setup }, { "IBM POWER8", IBMPOWER8, REVFMT_MAJMIN, PPC_FEATURE_64 | PPC_FEATURE_HAS_ALTIVEC | PPC_FEATURE_HAS_FPU | PPC_FEATURE_SMT | PPC_FEATURE_ICACHE_SNOOP | PPC_FEATURE_ARCH_2_05 | PPC_FEATURE_ARCH_2_06 | PPC_FEATURE_HAS_VSX | PPC_FEATURE_TRUE_LE, - PPC_FEATURE2_ARCH_2_07 | PPC_FEATURE2_HTM | PPC_FEATURE2_DSCR | - PPC_FEATURE2_ISEL | PPC_FEATURE2_TAR | PPC_FEATURE2_HAS_VEC_CRYPTO | - PPC_FEATURE2_HTM_NOSC, cpu_powerx_setup }, + PPC_FEATURE2_ARCH_2_07 | PPC_FEATURE2_DSCR | PPC_FEATURE2_ISEL | + PPC_FEATURE2_TAR | PPC_FEATURE2_HAS_VEC_CRYPTO, cpu_powerx_setup }, { "IBM POWER9", IBMPOWER9, REVFMT_MAJMIN, PPC_FEATURE_64 | PPC_FEATURE_HAS_ALTIVEC | PPC_FEATURE_HAS_FPU | PPC_FEATURE_SMT | PPC_FEATURE_ICACHE_SNOOP | PPC_FEATURE_ARCH_2_05 | PPC_FEATURE_ARCH_2_06 | PPC_FEATURE_HAS_VSX | PPC_FEATURE_TRUE_LE, - PPC_FEATURE2_ARCH_2_07 | PPC_FEATURE2_HTM | PPC_FEATURE2_DSCR | - PPC_FEATURE2_EBB | PPC_FEATURE2_ISEL | PPC_FEATURE2_TAR | - PPC_FEATURE2_HAS_VEC_CRYPTO | PPC_FEATURE2_HTM_NOSC | + PPC_FEATURE2_ARCH_2_07 | PPC_FEATURE2_DSCR | PPC_FEATURE2_EBB | + PPC_FEATURE2_ISEL | PPC_FEATURE2_TAR | PPC_FEATURE2_HAS_VEC_CRYPTO | PPC_FEATURE2_ARCH_3_00 | PPC_FEATURE2_HAS_IEEE128 | PPC_FEATURE2_DARN, cpu_powerx_setup }, { "Motorola PowerPC 7400", MPC7400, REVFMT_MAJMIN, From owner-svn-src-all@freebsd.org Fri May 29 02:32:49 2020 Return-Path: Delivered-To: svn-src-all@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 29A6B32CFD9; Fri, 29 May 2020 02:32:49 +0000 (UTC) (envelope-from mav@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49Y7rx0FNcz3T6j; Fri, 29 May 2020 02:32:49 +0000 (UTC) (envelope-from mav@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 0369210927; Fri, 29 May 2020 02:32:49 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04T2WmTZ065842; Fri, 29 May 2020 02:32:48 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04T2WmCd065841; Fri, 29 May 2020 02:32:48 GMT (envelope-from mav@FreeBSD.org) Message-Id: <202005290232.04T2WmCd065841@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Fri, 29 May 2020 02:32:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361616 - head/sys/cam/ctl X-SVN-Group: head X-SVN-Commit-Author: mav X-SVN-Commit-Paths: head/sys/cam/ctl X-SVN-Commit-Revision: 361616 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2020 02:32:49 -0000 Author: mav Date: Fri May 29 02:32:48 2020 New Revision: 361616 URL: https://svnweb.freebsd.org/changeset/base/361616 Log: Move EXPDATASN/R2TSN from PDU to CTL_PRIV_FRONTEND. We any way have per-I/O space in CTL_PRIV_FRONTEND, while for PDU private fields I have better use ideas. Plus to me such use of PDU fields looked a layering violation. MFC after: 2 weeks Sponsored by: iXsystems, Inc. Modified: head/sys/cam/ctl/ctl_frontend_iscsi.c Modified: head/sys/cam/ctl/ctl_frontend_iscsi.c ============================================================================== --- head/sys/cam/ctl/ctl_frontend_iscsi.c Fri May 29 00:46:31 2020 (r361615) +++ head/sys/cam/ctl/ctl_frontend_iscsi.c Fri May 29 02:32:48 2020 (r361616) @@ -143,9 +143,18 @@ SYSCTL_INT(_kern_cam_ctl_iscsi, OID_AUTO, maxtags, CTL #define CONN_SESSION(X) ((struct cfiscsi_session *)(X)->ic_prv0) #define PDU_SESSION(X) CONN_SESSION((X)->ip_conn) -#define PDU_EXPDATASN(X) (X)->ip_prv0 -#define PDU_R2TSN(X) (X)->ip_prv2 +struct cfiscsi_priv { + void *request; + uint32_t expdatasn; + uint32_t r2tsn; +}; +#define PRIV(io) \ + ((struct cfiscsi_priv *)&(io)->io_hdr.ctl_private[CTL_PRIV_FRONTEND]) +#define PRIV_REQUEST(io) PRIV(io)->request +#define PRIV_EXPDATASN(io) PRIV(io)->expdatasn +#define PRIV_R2TSN(io) PRIV(io)->r2tsn + static int cfiscsi_init(void); static int cfiscsi_shutdown(void); static void cfiscsi_online(void *arg); @@ -512,7 +521,7 @@ cfiscsi_pdu_handle_scsi_command(struct icl_pdu *reques } io = ctl_alloc_io(cs->cs_target->ct_port.ctl_pool_ref); ctl_zero_io(io); - io->io_hdr.ctl_private[CTL_PRIV_FRONTEND].ptr = request; + PRIV_REQUEST(io) = request; io->io_hdr.io_type = CTL_IO_SCSI; io->io_hdr.nexus.initid = cs->cs_ctl_initid; io->io_hdr.nexus.targ_port = cs->cs_target->ct_port.targ_port; @@ -568,7 +577,7 @@ cfiscsi_pdu_handle_task_request(struct icl_pdu *reques bhstmr = (struct iscsi_bhs_task_management_request *)request->ip_bhs; io = ctl_alloc_io(cs->cs_target->ct_port.ctl_pool_ref); ctl_zero_io(io); - io->io_hdr.ctl_private[CTL_PRIV_FRONTEND].ptr = request; + PRIV_REQUEST(io) = request; io->io_hdr.io_type = CTL_IO_TASK; io->io_hdr.nexus.initid = cs->cs_ctl_initid; io->io_hdr.nexus.targ_port = cs->cs_target->ct_port.targ_port; @@ -1105,7 +1114,7 @@ cfiscsi_session_terminate_tasks(struct cfiscsi_session return; /* No target yet, so nothing to do. */ io = ctl_alloc_io(cs->cs_target->ct_port.ctl_pool_ref); ctl_zero_io(io); - io->io_hdr.ctl_private[CTL_PRIV_FRONTEND].ptr = cs; + PRIV_REQUEST(io) = cs; io->io_hdr.io_type = CTL_IO_TASK; io->io_hdr.nexus.initid = cs->cs_ctl_initid; io->io_hdr.nexus.targ_port = cs->cs_target->ct_port.targ_port; @@ -2426,7 +2435,7 @@ cfiscsi_datamove_in(union ctl_io *io) const char *sg_addr; int ctl_sg_count, error, i; - request = io->io_hdr.ctl_private[CTL_PRIV_FRONTEND].ptr; + request = PRIV_REQUEST(io); cs = PDU_SESSION(request); bhssc = (const struct iscsi_bhs_scsi_command *)request->ip_bhs; @@ -2495,8 +2504,7 @@ cfiscsi_datamove_in(union ctl_io *io) bhsdi->bhsdi_initiator_task_tag = bhssc->bhssc_initiator_task_tag; bhsdi->bhsdi_target_transfer_tag = 0xffffffff; - bhsdi->bhsdi_datasn = htonl(PDU_EXPDATASN(request)); - PDU_EXPDATASN(request)++; + bhsdi->bhsdi_datasn = htonl(PRIV_EXPDATASN(io)++); bhsdi->bhsdi_buffer_offset = htonl(buffer_offset); } @@ -2640,7 +2648,7 @@ cfiscsi_datamove_out(union ctl_io *io) uint32_t target_transfer_tag; bool done; - request = io->io_hdr.ctl_private[CTL_PRIV_FRONTEND].ptr; + request = PRIV_REQUEST(io); cs = PDU_SESSION(request); bhssc = (const struct iscsi_bhs_scsi_command *)request->ip_bhs; @@ -2753,8 +2761,7 @@ cfiscsi_datamove_out(union ctl_io *io) * be running concurrently on several CPUs for a given * command. */ - bhsr2t->bhsr2t_r2tsn = htonl(PDU_R2TSN(request)); - PDU_R2TSN(request)++; + bhsr2t->bhsr2t_r2tsn = htonl(PRIV_R2TSN(io)++); /* * This is the offset within the current SCSI command; * i.e. for the first call of datamove(), it will be 0, @@ -2799,7 +2806,7 @@ cfiscsi_scsi_command_done(union ctl_io *io) struct cfiscsi_session *cs; uint16_t sense_length; - request = io->io_hdr.ctl_private[CTL_PRIV_FRONTEND].ptr; + request = PRIV_REQUEST(io); cs = PDU_SESSION(request); bhssc = (struct iscsi_bhs_scsi_command *)request->ip_bhs; KASSERT((bhssc->bhssc_opcode & ~ISCSI_BHS_OPCODE_IMMEDIATE) == @@ -2856,7 +2863,7 @@ cfiscsi_scsi_command_done(union ctl_io *io) bhssr->bhssr_response = BHSSR_RESPONSE_COMMAND_COMPLETED; bhssr->bhssr_status = io->scsiio.scsi_status; bhssr->bhssr_initiator_task_tag = bhssc->bhssc_initiator_task_tag; - bhssr->bhssr_expdatasn = htonl(PDU_EXPDATASN(request)); + bhssr->bhssr_expdatasn = htonl(PRIV_EXPDATASN(io)); if (io->scsiio.sense_len > 0) { #if 0 @@ -2886,7 +2893,7 @@ cfiscsi_task_management_done(union ctl_io *io) struct cfiscsi_softc *softc; int cold_reset = 0; - request = io->io_hdr.ctl_private[CTL_PRIV_FRONTEND].ptr; + request = PRIV_REQUEST(io); cs = PDU_SESSION(request); bhstmr = (struct iscsi_bhs_task_management_request *)request->ip_bhs; KASSERT((bhstmr->bhstmr_opcode & ~ISCSI_BHS_OPCODE_IMMEDIATE) == @@ -2982,7 +2989,7 @@ cfiscsi_done(union ctl_io *io) /* * Implicit task termination has just completed; nothing to do. */ - cs = io->io_hdr.ctl_private[CTL_PRIV_FRONTEND].ptr; + cs = PRIV_REQUEST(io); cs->cs_tasks_aborted = true; refcount_release(&cs->cs_outstanding_ctl_pdus); wakeup(__DEVOLATILE(void *, &cs->cs_outstanding_ctl_pdus)); @@ -2990,7 +2997,7 @@ cfiscsi_done(union ctl_io *io) return; } - request = io->io_hdr.ctl_private[CTL_PRIV_FRONTEND].ptr; + request = PRIV_REQUEST(io); cs = PDU_SESSION(request); switch (request->ip_bhs->bhs_opcode & ~ISCSI_BHS_OPCODE_IMMEDIATE) { From owner-svn-src-all@freebsd.org Fri May 29 05:41:22 2020 Return-Path: Delivered-To: svn-src-all@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 82D4A32FA7E; Fri, 29 May 2020 05:41:22 +0000 (UTC) (envelope-from jhb@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49YD2V2tc5z44qL; Fri, 29 May 2020 05:41:22 +0000 (UTC) (envelope-from jhb@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 5E5C512F00; Fri, 29 May 2020 05:41:22 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04T5fME9086717; Fri, 29 May 2020 05:41:22 GMT (envelope-from jhb@FreeBSD.org) Received: (from jhb@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04T5fMv2086716; Fri, 29 May 2020 05:41:22 GMT (envelope-from jhb@FreeBSD.org) Message-Id: <202005290541.04T5fMv2086716@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: jhb set sender to jhb@FreeBSD.org using -f From: John Baldwin Date: Fri, 29 May 2020 05:41:22 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361617 - head/sys/opencrypto X-SVN-Group: head X-SVN-Commit-Author: jhb X-SVN-Commit-Paths: head/sys/opencrypto X-SVN-Commit-Revision: 361617 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2020 05:41:22 -0000 Author: jhb Date: Fri May 29 05:41:21 2020 New Revision: 361617 URL: https://svnweb.freebsd.org/changeset/base/361617 Log: Increment the correct pointer when a crypto buffer spans an mbuf or iovec. When a crypto_cursor_copyback() request spanned multiple mbufs or iovecs, the pointer into the mbuf/iovec was incremented instead of the pointer into the source buffer being copied from. PR: 246737 Reported by: Jenkins, ZFS test suite Sponsored by: Netflix Modified: head/sys/opencrypto/criov.c Modified: head/sys/opencrypto/criov.c ============================================================================== --- head/sys/opencrypto/criov.c Fri May 29 02:32:48 2020 (r361616) +++ head/sys/opencrypto/criov.c Fri May 29 05:41:21 2020 (r361617) @@ -266,7 +266,7 @@ crypto_cursor_copyback(struct crypto_buffer_cursor *cc remain = cc->cc_mbuf->m_len - cc->cc_offset; todo = MIN(remain, size); memcpy(dst, src, todo); - dst += todo; + src += todo; if (todo < remain) { cc->cc_offset += todo; break; @@ -284,7 +284,7 @@ crypto_cursor_copyback(struct crypto_buffer_cursor *cc remain = cc->cc_iov->iov_len - cc->cc_offset; todo = MIN(remain, size); memcpy(dst, src, todo); - dst += todo; + src += todo; if (todo < remain) { cc->cc_offset += todo; break; From owner-svn-src-all@freebsd.org Fri May 29 07:37:28 2020 Return-Path: Delivered-To: svn-src-all@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 9AD60331E98; Fri, 29 May 2020 07:37:28 +0000 (UTC) (envelope-from avg@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49YGcS3XVXz4DjC; Fri, 29 May 2020 07:37:28 +0000 (UTC) (envelope-from avg@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 7027814146; Fri, 29 May 2020 07:37:28 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04T7bSMF058806; Fri, 29 May 2020 07:37:28 GMT (envelope-from avg@FreeBSD.org) Received: (from avg@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04T7bSlm058805; Fri, 29 May 2020 07:37:28 GMT (envelope-from avg@FreeBSD.org) Message-Id: <202005290737.04T7bSlm058805@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: avg set sender to avg@FreeBSD.org using -f From: Andriy Gapon Date: Fri, 29 May 2020 07:37:28 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org Subject: svn commit: r361618 - stable/12/lib/libprocstat X-SVN-Group: stable-12 X-SVN-Commit-Author: avg X-SVN-Commit-Paths: stable/12/lib/libprocstat X-SVN-Commit-Revision: 361618 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2020 07:37:28 -0000 Author: avg Date: Fri May 29 07:37:27 2020 New Revision: 361618 URL: https://svnweb.freebsd.org/changeset/base/361618 Log: MFC r361330: libprocstat: fix reading of file descriptor table via kvm This seems to have been broken since r247602 (from year 2013!). Can be easily tested with fstat -N /boot/kernel/kernel -M /var/crash/vmcore.last Sponsored by: Panzura Modified: stable/12/lib/libprocstat/libprocstat.c Directory Properties: stable/12/ (props changed) Modified: stable/12/lib/libprocstat/libprocstat.c ============================================================================== --- stable/12/lib/libprocstat/libprocstat.c Fri May 29 05:41:21 2020 (r361617) +++ stable/12/lib/libprocstat/libprocstat.c Fri May 29 07:37:27 2020 (r361618) @@ -457,7 +457,7 @@ procstat_getfiles_kvm(struct procstat *procstat, struc vm_map_t map; vm_object_t objp; struct vnode *vp; - struct file **ofiles; + struct filedescent *ofiles; struct filestat *entry; struct filestat_list *head; kvm_t *kd; @@ -532,25 +532,25 @@ procstat_getfiles_kvm(struct procstat *procstat, struc } nfiles = filed.fd_lastfile + 1; - ofiles = malloc(nfiles * sizeof(struct file *)); + ofiles = malloc(nfiles * sizeof(struct filedescent)); if (ofiles == NULL) { - warn("malloc(%zu)", nfiles * sizeof(struct file *)); + warn("malloc(%zu)", nfiles * sizeof(struct filedescent)); goto do_mmapped; } if (!kvm_read_all(kd, (unsigned long)filed.fd_ofiles, ofiles, - nfiles * sizeof(struct file *))) { + nfiles * sizeof(struct filedescent))) { warnx("cannot read file structures at %p", (void *)filed.fd_ofiles); free(ofiles); goto do_mmapped; } for (i = 0; i <= filed.fd_lastfile; i++) { - if (ofiles[i] == NULL) + if (ofiles[i].fde_file == NULL) continue; - if (!kvm_read_all(kd, (unsigned long)ofiles[i], &file, + if (!kvm_read_all(kd, (unsigned long)ofiles[i].fde_file, &file, sizeof(struct file))) { warnx("can't read file %d at %p", i, - (void *)ofiles[i]); + (void *)ofiles[i].fde_file); continue; } switch (file.f_type) { From owner-svn-src-all@freebsd.org Fri May 29 07:38:58 2020 Return-Path: Delivered-To: svn-src-all@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 9F607331B7C; Fri, 29 May 2020 07:38:58 +0000 (UTC) (envelope-from avg@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49YGfB3mtNz4Dpm; Fri, 29 May 2020 07:38:58 +0000 (UTC) (envelope-from avg@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 7CE3E1427B; Fri, 29 May 2020 07:38:58 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04T7cwi3058945; Fri, 29 May 2020 07:38:58 GMT (envelope-from avg@FreeBSD.org) Received: (from avg@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04T7cvF3058943; Fri, 29 May 2020 07:38:57 GMT (envelope-from avg@FreeBSD.org) Message-Id: <202005290738.04T7cvF3058943@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: avg set sender to avg@FreeBSD.org using -f From: Andriy Gapon Date: Fri, 29 May 2020 07:38:57 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org Subject: svn commit: r361619 - stable/12/sys/net80211 X-SVN-Group: stable-12 X-SVN-Commit-Author: avg X-SVN-Commit-Paths: stable/12/sys/net80211 X-SVN-Commit-Revision: 361619 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2020 07:38:58 -0000 Author: avg Date: Fri May 29 07:38:57 2020 New Revision: 361619 URL: https://svnweb.freebsd.org/changeset/base/361619 Log: MFC r361364: net80211: post RTM_IFINFO notification after toggling IFF_DRV_RUNNING This is useful when a wireless driver is stopped or started in response to events like an RF Kill button press. Applications like wpa_supplicant depend on such events to have a correct view of interface state. Modified: stable/12/sys/net80211/ieee80211_freebsd.c stable/12/sys/net80211/ieee80211_proto.c stable/12/sys/net80211/ieee80211_proto.h Directory Properties: stable/12/ (props changed) Modified: stable/12/sys/net80211/ieee80211_freebsd.c ============================================================================== --- stable/12/sys/net80211/ieee80211_freebsd.c Fri May 29 07:37:27 2020 (r361618) +++ stable/12/sys/net80211/ieee80211_freebsd.c Fri May 29 07:38:57 2020 (r361619) @@ -962,6 +962,19 @@ ieee80211_notify_radio(struct ieee80211com *ic, int st } void +ieee80211_notify_ifnet_change(struct ieee80211vap *vap) +{ + struct ifnet *ifp = vap->iv_ifp; + + IEEE80211_DPRINTF(vap, IEEE80211_MSG_DEBUG, "%s\n", + "interface state change"); + + CURVNET_SET(ifp->if_vnet); + rt_ifmsg(ifp); + CURVNET_RESTORE(); +} + +void ieee80211_load_module(const char *modname) { Modified: stable/12/sys/net80211/ieee80211_proto.c ============================================================================== --- stable/12/sys/net80211/ieee80211_proto.c Fri May 29 07:37:27 2020 (r361618) +++ stable/12/sys/net80211/ieee80211_proto.c Fri May 29 07:38:57 2020 (r361619) @@ -1511,6 +1511,8 @@ ieee80211_start_locked(struct ieee80211vap *vap) * back in here and complete the work. */ ifp->if_drv_flags |= IFF_DRV_RUNNING; + ieee80211_notify_ifnet_change(vap); + /* * We are not running; if this we are the first vap * to be brought up auto-up the parent if necessary. @@ -1624,6 +1626,7 @@ ieee80211_stop_locked(struct ieee80211vap *vap) ieee80211_new_state_locked(vap, IEEE80211_S_INIT, -1); if (ifp->if_drv_flags & IFF_DRV_RUNNING) { ifp->if_drv_flags &= ~IFF_DRV_RUNNING; /* mark us stopped */ + ieee80211_notify_ifnet_change(vap); if (--ic->ic_nrunning == 0) { IEEE80211_DPRINTF(vap, IEEE80211_MSG_STATE | IEEE80211_MSG_DEBUG, Modified: stable/12/sys/net80211/ieee80211_proto.h ============================================================================== --- stable/12/sys/net80211/ieee80211_proto.h Fri May 29 07:37:27 2020 (r361618) +++ stable/12/sys/net80211/ieee80211_proto.h Fri May 29 07:38:57 2020 (r361619) @@ -455,4 +455,5 @@ void ieee80211_notify_node_auth(struct ieee80211_node void ieee80211_notify_country(struct ieee80211vap *, const uint8_t [], const uint8_t cc[2]); void ieee80211_notify_radio(struct ieee80211com *, int); +void ieee80211_notify_ifnet_change(struct ieee80211vap *); #endif /* _NET80211_IEEE80211_PROTO_H_ */ From owner-svn-src-all@freebsd.org Fri May 29 07:44:03 2020 Return-Path: Delivered-To: svn-src-all@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 45624331F7E; Fri, 29 May 2020 07:44:03 +0000 (UTC) (envelope-from avg@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49YGm31251z4FMj; Fri, 29 May 2020 07:44:03 +0000 (UTC) (envelope-from avg@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 1E87A14745; Fri, 29 May 2020 07:44:03 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04T7i30s064587; Fri, 29 May 2020 07:44:03 GMT (envelope-from avg@FreeBSD.org) Received: (from avg@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04T7i2ZD064586; Fri, 29 May 2020 07:44:02 GMT (envelope-from avg@FreeBSD.org) Message-Id: <202005290744.04T7i2ZD064586@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: avg set sender to avg@FreeBSD.org using -f From: Andriy Gapon Date: Fri, 29 May 2020 07:44:02 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361620 - head/sys/kern X-SVN-Group: head X-SVN-Commit-Author: avg X-SVN-Commit-Paths: head/sys/kern X-SVN-Commit-Revision: 361620 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2020 07:44:03 -0000 Author: avg Date: Fri May 29 07:44:02 2020 New Revision: 361620 URL: https://svnweb.freebsd.org/changeset/base/361620 Log: corefile_open_last: don't keep a locked vnode while locking other ones Consider this scenario: - kern.corefile=/var/coredumps/%N.%U.%I.core - multiple processes with the same name crash at the same time It's possible that one process selects existing file N as oldvp while it keeps looking for an unused file number. Another process scans through files and stumbles upon N. That process would be blocked on the vnode lock while holding the directory vnode exclusively locked. The first process would, thus, get blocked on the directory's vnode lock. More generally, holding a file's vnode lock (oldvp) while trying to lock its directory (for the next lookup) is a violation of the vnode locking order. I have observed this deadlock in the wild. So, the change to keep oldvp "opened" but unlocked and to lock it again only if it's to be returned as the result. As kib noted, an alternative would be to keep the directory locked and to use VOP_LOOKUP directly for scanning through existing core files. Reviewed by: kib MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D25027 Modified: head/sys/kern/kern_sig.c Modified: head/sys/kern/kern_sig.c ============================================================================== --- head/sys/kern/kern_sig.c Fri May 29 07:38:57 2020 (r361619) +++ head/sys/kern/kern_sig.c Fri May 29 07:44:02 2020 (r361620) @@ -3454,8 +3454,9 @@ corefile_open_last(struct thread *td, char *name, int (lasttime.tv_sec == vattr.va_mtime.tv_sec && lasttime.tv_nsec >= vattr.va_mtime.tv_nsec)) { if (oldvp != NULL) - vnode_close_locked(td, oldvp); + vn_close(oldvp, FWRITE, td->td_ucred, td); oldvp = vp; + VOP_UNLOCK(oldvp); lasttime = vattr.va_mtime; } else { vnode_close_locked(td, vp); @@ -3466,12 +3467,18 @@ corefile_open_last(struct thread *td, char *name, int if (nextvp == NULL) { if ((td->td_proc->p_flag & P_SUGID) != 0) { error = EFAULT; - vnode_close_locked(td, oldvp); + vn_close(oldvp, FWRITE, td->td_ucred, td); } else { nextvp = oldvp; + error = vn_lock(nextvp, LK_EXCLUSIVE); + if (error != 0) { + vn_close(nextvp, FWRITE, td->td_ucred, + td); + nextvp = NULL; + } } } else { - vnode_close_locked(td, oldvp); + vn_close(oldvp, FWRITE, td->td_ucred, td); } } if (error != 0) { From owner-svn-src-all@freebsd.org Fri May 29 07:46:31 2020 Return-Path: Delivered-To: svn-src-all@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 1DC0833216C for ; Fri, 29 May 2020 07:46:31 +0000 (UTC) (envelope-from mindal@semihalf.com) Received: from mail-ej1-x62b.google.com (mail-ej1-x62b.google.com [IPv6:2a00:1450:4864:20::62b]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "GTS CA 1O1" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 49YGpt2jSHz4FJB for ; Fri, 29 May 2020 07:46:30 +0000 (UTC) (envelope-from mindal@semihalf.com) Received: by mail-ej1-x62b.google.com with SMTP id d7so1125287eja.7 for ; Fri, 29 May 2020 00:46:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=semihalf-com.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=0HCefSK5jAfhO1mppwLQhl2SYUalyVbC38G70KXHlYM=; b=afrDKigXGp1rq+eQII/MYXdSbuZiCGx1d/QIvWVuTggwKCB2fzLT21KFtAvurhzvaU g06HKD1JdYzaL22iTq2OHnTrxC6NqgTyrcKQnsVmNrqbo2s3GCPHndqToTK8ic4POurb fx2BZmmko5zxN382fbM0pWw2rjYu+MNnEYf1TYpkWr0uaMQ8GONHRUBrOr/epTkzlzhP 9qfOaExZxKIC9flW2UtWx+HtEiJSiPz3qfGbUrXl4ClG+72l0UC9hm5EfSoWRBC4k4GK KzPy+qdzliOjRRYsJ1krwGdD1x/ECd55lUTaCZvu1gZH+GLWhTSaqTMTdckSGCPEa50C saBA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=0HCefSK5jAfhO1mppwLQhl2SYUalyVbC38G70KXHlYM=; b=evBf0YY8pE9VcGhS+pGskCqliT65I4U2ATAZO6v24mifWRMr4W2G8vUNuO7MT1bITm VhOFT2/mQSbzCaDGtXbPLJEuFWFteqPf8wj/wOcljwXaI8YhzKeCi/G480ceW7bSqjQ+ Sz+wSIw7yWAUaKBRZKZHFk/weILqpE9bOfvzPOSGphfRfrF+8678i3ooUKC1if4s+bp9 afVmBzPfZex4HpIdTinO1Thcty0+mi8I1frYyS6Egi2ngV10oNkXcZDRmMszO1pO69do zQtM0JmjlCC9JOiZ2fF85qb7UQZhipZx0nsw1WlEUFf2Y7s3ijHPTPixpuPhUVXvf86C FR8w== X-Gm-Message-State: AOAM533DtlC5t7+Y9NJXIgBLnYPoYjhhMYA0AT/PZd59cB0q67v040Qc soJsSRCl7Bbg2XWcNOXOFuD1p6VTGgmyXIDdNSZTSg== X-Google-Smtp-Source: ABdhPJydF7v9ZFfJl3wSqJX8blerIbxefnHu128NLrZEXB6BXu5Ep248seYBEZ9NLs6tsKxFLcELPIqxZMv65IWQ/Yo= X-Received: by 2002:a17:906:2b88:: with SMTP id m8mr6428144ejg.514.1590738388718; Fri, 29 May 2020 00:46:28 -0700 (PDT) MIME-Version: 1.0 References: <202005280913.04S9DKWv013795@repo.freebsd.org> <9fdb00be-00e0-6aff-51ad-7a84b4215a4e@FreeBSD.org> In-Reply-To: <9fdb00be-00e0-6aff-51ad-7a84b4215a4e@FreeBSD.org> From: =?UTF-8?Q?Kornel_Dul=C4=99ba?= Date: Fri, 29 May 2020 09:46:18 +0200 Message-ID: Subject: Re: svn commit: r361583 - head/sys/crypto/aesni To: John Baldwin Cc: Marcin Wojtas , src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-Rspamd-Queue-Id: 49YGpt2jSHz4FJB X-Spamd-Bar: - Authentication-Results: mx1.freebsd.org; dkim=pass header.d=semihalf-com.20150623.gappssmtp.com header.s=20150623 header.b=afrDKigX; dmarc=none; spf=none (mx1.freebsd.org: domain of mindal@semihalf.com has no SPF policy when checking 2a00:1450:4864:20::62b) smtp.mailfrom=mindal@semihalf.com X-Spamd-Result: default: False [-1.88 / 15.00]; ARC_NA(0.00)[]; NEURAL_HAM_MEDIUM(-0.89)[-0.885]; R_DKIM_ALLOW(-0.20)[semihalf-com.20150623.gappssmtp.com:s=20150623]; FROM_HAS_DN(0.00)[]; TO_DN_SOME(0.00)[]; NEURAL_SPAM_SHORT(0.27)[0.268]; NEURAL_HAM_LONG(-0.96)[-0.961]; MIME_GOOD(-0.10)[multipart/alternative,text/plain]; PREVIOUSLY_DELIVERED(0.00)[svn-src-all@freebsd.org]; DMARC_NA(0.00)[semihalf.com]; RCPT_COUNT_FIVE(0.00)[5]; TO_MATCH_ENVRCPT_SOME(0.00)[]; DKIM_TRACE(0.00)[semihalf-com.20150623.gappssmtp.com:+]; RCVD_IN_DNSWL_NONE(0.00)[2a00:1450:4864:20::62b:from]; R_SPF_NA(0.00)[no SPF record]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+,1:+,2:~]; ASN(0.00)[asn:15169, ipnet:2a00:1450::/32, country:US]; RCVD_COUNT_TWO(0.00)[2]; RCVD_TLS_ALL(0.00)[] Content-Type: text/plain; charset="UTF-8" X-Content-Filtered-By: Mailman/MimeDel 2.1.33 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2020 07:46:31 -0000 On Thu, May 28, 2020 at 8:30 PM John Baldwin wrote: > On 5/28/20 2:13 AM, Marcin Wojtas wrote: > > Author: mw > > Date: Thu May 28 09:13:20 2020 > > New Revision: 361583 > > URL: https://svnweb.freebsd.org/changeset/base/361583 > > > > Log: > > Change return types of hash update functions in SHA-NI > > > > r359374 introduced crypto_apply function which takes as argument a > function pointer > > that is expected to return an int, however aesni hash update functions > > return void. > > Because of that the function pointer passed was simply cast with > > its return value changed. > > This resulted in undefined behavior, in particular when mbuf is used, > (ipsec) > > m_apply checks return value of function pointer passed to it > > and in our case bogusly fails after calculating hash of the first mbuf > > in chain. > > Fix it by changing signatures of sha update routines in aesni and > > dropping the casts. > > Hmm, I missed one nit in the review. r359374 didn't introduce > crypto_apply, it just changed some of the arguments arguments (crp > instead of crp_buf and crp_flags). This fix needs to be MFC'd to 12 > as well since the issue with the return type is also present there. > > -- > John Baldwin > Whoops, I should have read the diff more carefully. Before debugging I did some bisecting and found r359374 as the culprit. In r359374 return types of intel_sha256_update and intel_sha1_update were changed to void which is the root cause. SHA-NI on stable/12 should work just fine right now. Sorry for the noise. From owner-svn-src-all@freebsd.org Fri May 29 07:50:56 2020 Return-Path: Delivered-To: svn-src-all@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 BA5623324DE; Fri, 29 May 2020 07:50:56 +0000 (UTC) (envelope-from avg@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49YGw04YfRz4FXV; Fri, 29 May 2020 07:50:56 +0000 (UTC) (envelope-from avg@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 97C1D146A3; Fri, 29 May 2020 07:50:56 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04T7ouMx064967; Fri, 29 May 2020 07:50:56 GMT (envelope-from avg@FreeBSD.org) Received: (from avg@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04T7ou3b064966; Fri, 29 May 2020 07:50:56 GMT (envelope-from avg@FreeBSD.org) Message-Id: <202005290750.04T7ou3b064966@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: avg set sender to avg@FreeBSD.org using -f From: Andriy Gapon Date: Fri, 29 May 2020 07:50:56 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361621 - head/sys/dev/pci X-SVN-Group: head X-SVN-Commit-Author: avg X-SVN-Commit-Paths: head/sys/dev/pci X-SVN-Commit-Revision: 361621 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2020 07:50:56 -0000 Author: avg Date: Fri May 29 07:50:55 2020 New Revision: 361621 URL: https://svnweb.freebsd.org/changeset/base/361621 Log: do not enable pci bridge decoding on resume until I/O windows are restored PCI bus driver restores most but not all of a child PCI-PCI bridge configuration. The bridge's I/O windows are restored by pcib driver and that happens later in time. This can be problematic because the Command register is restored before the windows are restored. If the firmware programs the windows incorrectly or even does not program them at all, then the bridge can start claiming I/O cycles that are not intended for it. This will continue until the correct windows are restored. I have observed this problem with a buggy BIOS where after resuming from S3 an I/O port window of a PCI-PCI bridge was configured with zero base and limit causing the bridge to claim 0x0 - 0xFFF port range. That interfered with ACPI port access including ACPI PM Timer at port 0x808, thus wreaking havoc in the time keeping. The solution is to restore the Command register of PCI-PCI bridges after the windows are restored in pcib driver. While here, I decided that for other PCI device types (normal and cardbus) it's better to restore the Command register after their BARs are restored. To do: per jhb's suggestion, move the window handling to pci driver. Reviewed by: imp, jhb, kib MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D25028 Modified: head/sys/dev/pci/pci.c head/sys/dev/pci/pci_pci.c Modified: head/sys/dev/pci/pci.c ============================================================================== --- head/sys/dev/pci/pci.c Fri May 29 07:44:02 2020 (r361620) +++ head/sys/dev/pci/pci.c Fri May 29 07:50:55 2020 (r361621) @@ -5932,7 +5932,6 @@ pci_cfg_restore(device_t dev, struct pci_devinfo *dinf */ if (pci_get_powerstate(dev) != PCI_POWERSTATE_D0) pci_set_powerstate(dev, PCI_POWERSTATE_D0); - pci_write_config(dev, PCIR_COMMAND, dinfo->cfg.cmdreg, 2); pci_write_config(dev, PCIR_INTLINE, dinfo->cfg.intline, 1); pci_write_config(dev, PCIR_INTPIN, dinfo->cfg.intpin, 1); pci_write_config(dev, PCIR_CACHELNSZ, dinfo->cfg.cachelnsz, 1); @@ -5970,6 +5969,9 @@ pci_cfg_restore(device_t dev, struct pci_devinfo *dinf break; } pci_restore_bars(dev); + + if ((dinfo->cfg.hdrtype & PCIM_HDRTYPE) != PCIM_HDRTYPE_BRIDGE) + pci_write_config(dev, PCIR_COMMAND, dinfo->cfg.cmdreg, 2); /* * Restore extended capabilities for PCI-Express and PCI-X Modified: head/sys/dev/pci/pci_pci.c ============================================================================== --- head/sys/dev/pci/pci_pci.c Fri May 29 07:44:02 2020 (r361620) +++ head/sys/dev/pci/pci_pci.c Fri May 29 07:50:55 2020 (r361621) @@ -1792,6 +1792,12 @@ pcib_resume(device_t dev) { pcib_cfg_restore(device_get_softc(dev)); + + /* + * Restore the Command register only after restoring the windows. + * The bridge should not be claiming random windows. + */ + pci_write_config(dev, PCIR_COMMAND, pci_get_cmdreg(dev), 2); return (bus_generic_resume(dev)); } From owner-svn-src-all@freebsd.org Fri May 29 08:30:35 2020 Return-Path: Delivered-To: svn-src-all@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 ED040332D94; Fri, 29 May 2020 08:30:35 +0000 (UTC) (envelope-from mjg@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49YHnl5zSkz4HtC; Fri, 29 May 2020 08:30:35 +0000 (UTC) (envelope-from mjg@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 C898414CA8; Fri, 29 May 2020 08:30:35 +0000 (UTC) (envelope-from mjg@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04T8UZh8089724; Fri, 29 May 2020 08:30:35 GMT (envelope-from mjg@FreeBSD.org) Received: (from mjg@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04T8UZpp089723; Fri, 29 May 2020 08:30:35 GMT (envelope-from mjg@FreeBSD.org) Message-Id: <202005290830.04T8UZpp089723@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mjg set sender to mjg@FreeBSD.org using -f From: Mateusz Guzik Date: Fri, 29 May 2020 08:30:35 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361622 - head/sys/vm X-SVN-Group: head X-SVN-Commit-Author: mjg X-SVN-Commit-Paths: head/sys/vm X-SVN-Commit-Revision: 361622 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2020 08:30:36 -0000 Author: mjg Date: Fri May 29 08:30:35 2020 New Revision: 361622 URL: https://svnweb.freebsd.org/changeset/base/361622 Log: uma: hide item_domain under ifdef NUMA Fixes build warnings on mips. Modified: head/sys/vm/uma_core.c Modified: head/sys/vm/uma_core.c ============================================================================== --- head/sys/vm/uma_core.c Fri May 29 07:50:55 2020 (r361621) +++ head/sys/vm/uma_core.c Fri May 29 08:30:35 2020 (r361622) @@ -3197,6 +3197,7 @@ item_dtor(uma_zone_t zone, void *item, int size, void } } +#ifdef NUMA static int item_domain(void *item) { @@ -3207,6 +3208,7 @@ item_domain(void *item) ("%s: unknown domain for item %p", __func__, item)); return (domain); } +#endif #if defined(INVARIANTS) || defined(DEBUG_MEMGUARD) || defined(WITNESS) #define UMA_ZALLOC_DEBUG From owner-svn-src-all@freebsd.org Fri May 29 08:34:22 2020 Return-Path: Delivered-To: svn-src-all@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 D813F332B31; Fri, 29 May 2020 08:34:22 +0000 (UTC) (envelope-from mjguzik@gmail.com) Received: from mail-wr1-x444.google.com (mail-wr1-x444.google.com [IPv6:2a00:1450:4864:20::444]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "GTS CA 1O1" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 49YHt60Mgfz4JBT; Fri, 29 May 2020 08:34:21 +0000 (UTC) (envelope-from mjguzik@gmail.com) Received: by mail-wr1-x444.google.com with SMTP id l10so2451252wrr.10; Fri, 29 May 2020 01:34:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=GkSZlE6vtgT1ZmLSd3aHGrJfhF0QEnIbt3sPoXCIPiY=; b=mc9r1kZMF/BvrEfWKLnnfbJLSQscpsg1PTFZ4m5KF1T1Fe5J5ggFU7GQvQUpabQkJF j0BTlW3a4hW+aSbSG2ajaPE2paTVfgZX1rtmySZAAvFsrR0N1LHiwJ2tqDFCFpkiSnEs idzSMc0Bn4DJU7BsNyDNe8Tw2pyZOJ8dzjdscaGETPbU/2tukTxLxbk2a8Kf/pbDuc68 z35rCznDYujqql6EpThyQM8htu3K4bkPC0ZoH08VBMKwaea2wiHB9VQWIqeLpRUimPIF QWultpO1p/2lPfWyBo4PD9/a9MRcon6Sw9uXQaxpT+qT/Ede8ZnnusIYlMtsI8qPyKeq Bnng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=GkSZlE6vtgT1ZmLSd3aHGrJfhF0QEnIbt3sPoXCIPiY=; b=bzyvU4mrWoa7on5ifJrrlWj5ebGIlLoqW51vjfF35str+u7gvz/puH951k2ZXkPBnT PUuDeGA9eFeCrWEq0eBrOwTtQinHL4VFttmPr4gc9zCsCql9JGg7REQYHen4y61cU3Fq tdcOfPBjj33/DLW3+b6JJ0wN4PFCHCm46V3qVeHd1IevVvdkIYUb8Jx5W59YN1Ba+qs9 v04VsXz3I6z44xa77+61YjQgkxwQg1Wyq7+/TobvIsOQmynqDigUjAylwfZzmpslok/G TvcDHf230FQZVsu7Af+UayiB7V+tv20LhOYmMENY4Um49nruBwxA90pjtvsZBmJKmEIN pCGw== X-Gm-Message-State: AOAM53220n2S/iYkB2rJTLJxvbZagJbNOmf9Hwsi+xg+NPC6B4HykpGJ 5DGRTUvEOfWT/+IRAFjLpPsm146wwcuEuUK/hTy2yg== X-Google-Smtp-Source: ABdhPJzgKX38tCkCy90FNvSkdA+WVpyUK36Uognn/agPtuOxvE0cUwE9i4ZSPCYgAJHjq3oEtJugZLvjbkf9e5Z+75U= X-Received: by 2002:a05:6000:d:: with SMTP id h13mr7350391wrx.17.1590741259281; Fri, 29 May 2020 01:34:19 -0700 (PDT) MIME-Version: 1.0 Received: by 2002:adf:fd8f:0:0:0:0:0 with HTTP; Fri, 29 May 2020 01:34:18 -0700 (PDT) In-Reply-To: <202005252212.04PMC4qo002298@repo.freebsd.org> References: <202005252212.04PMC4qo002298@repo.freebsd.org> From: Mateusz Guzik Date: Fri, 29 May 2020 10:34:18 +0200 Message-ID: Subject: Re: svn commit: r361481 - in head: share/man/man9 sys/crypto/ccp sys/dev/cxgbe/crypto sys/dev/hifn sys/dev/safe sys/geom/eli sys/kern sys/kgssapi/krb5 sys/netipsec sys/opencrypto sys/sys To: John Baldwin Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Content-Type: text/plain; charset="UTF-8" X-Rspamd-Queue-Id: 49YHt60Mgfz4JBT X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org; dkim=pass header.d=gmail.com header.s=20161025 header.b=mc9r1kZM; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (mx1.freebsd.org: domain of mjguzik@gmail.com designates 2a00:1450:4864:20::444 as permitted sender) smtp.mailfrom=mjguzik@gmail.com X-Spamd-Result: default: False [-2.54 / 15.00]; ARC_NA(0.00)[]; NEURAL_HAM_MEDIUM(-0.98)[-0.975]; R_DKIM_ALLOW(-0.20)[gmail.com:s=20161025]; FROM_HAS_DN(0.00)[]; RCPT_COUNT_THREE(0.00)[4]; R_SPF_ALLOW(-0.20)[+ip6:2a00:1450:4000::/36:c]; FREEMAIL_FROM(0.00)[gmail.com]; MIME_GOOD(-0.10)[text/plain]; TO_MATCH_ENVRCPT_ALL(0.00)[]; NEURAL_HAM_LONG(-0.99)[-0.986]; TO_DN_SOME(0.00)[]; NEURAL_SPAM_SHORT(0.42)[0.417]; DKIM_TRACE(0.00)[gmail.com:+]; DMARC_POLICY_ALLOW(-0.50)[gmail.com,none]; RCVD_IN_DNSWL_NONE(0.00)[2a00:1450:4864:20::444:from]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; FREEMAIL_ENVFROM(0.00)[gmail.com]; ASN(0.00)[asn:15169, ipnet:2a00:1450::/32, country:US]; RCVD_COUNT_TWO(0.00)[2]; RCVD_TLS_ALL(0.00)[]; DWL_DNSWL_NONE(0.00)[gmail.com:dkim] X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2020 08:34:22 -0000 This gives me tinderbox failures with mips: _.mips.XLP64 /usr/src/sys/mips/nlm/dev/sec/nlmseclib.c:113:10: error: enumeration value 'CRYPTO_BUF_NONE' not handled in switch [-Werror,-Wswitch] switch (crp->crp_buf.cb_type) { _.mips.OCTEON1 _.mips.ERL /usr/src/sys/mips/cavium/cryptocteon/cryptocteon.c:298:10: error: enumeration values 'CRYPTO_BUF_NONE' and 'CRYPTO_BUF_CONTIG' not handled in switch [-Werror,-Wswitch] switch (crp->crp_buf.cb_type) { On 5/26/20, John Baldwin wrote: > Author: jhb > Date: Mon May 25 22:12:04 2020 > New Revision: 361481 > URL: https://svnweb.freebsd.org/changeset/base/361481 > > Log: > Add support for optional separate output buffers to in-kernel crypto. > > Some crypto consumers such as GELI and KTLS for file-backed sendfile > need to store their output in a separate buffer from the input. > Currently these consumers copy the contents of the input buffer into > the output buffer and queue an in-place crypto operation on the output > buffer. Using a separate output buffer avoids this copy. > > - Create a new 'struct crypto_buffer' describing a crypto buffer > containing a type and type-specific fields. crp_ilen is gone, > instead buffers that use a flat kernel buffer have a cb_buf_len > field for their length. The length of other buffer types is > inferred from the backing store (e.g. uio_resid for a uio). > Requests now have two such structures: crp_buf for the input buffer, > and crp_obuf for the output buffer. > > - Consumers now use helper functions (crypto_use_*, > e.g. crypto_use_mbuf()) to configure the input buffer. If an output > buffer is not configured, the request still modifies the input > buffer in-place. A consumer uses a second set of helper functions > (crypto_use_output_*) to configure an output buffer. > > - Consumers must request support for separate output buffers when > creating a crypto session via the CSP_F_SEPARATE_OUTPUT flag and are > only permitted to queue a request with a separate output buffer on > sessions with this flag set. Existing drivers already reject > sessions with unknown flags, so this permits drivers to be modified > to support this extension without requiring all drivers to change. > > - Several data-related functions now have matching versions that > operate on an explicit buffer (e.g. crypto_apply_buf, > crypto_contiguous_subsegment_buf, bus_dma_load_crp_buf). > > - Most of the existing data-related functions operate on the input > buffer. However crypto_copyback always writes to the output buffer > if a request uses a separate output buffer. > > - For the regions in input/output buffers, the following conventions > are followed: > - AAD and IV are always present in input only and their > fields are offsets into the input buffer. > - payload is always present in both buffers. If a request uses a > separate output buffer, it must set a new crp_payload_start_output > field to the offset of the payload in the output buffer. > - digest is in the input buffer for verify operations, and in the > output buffer for compute operations. crp_digest_start is relative > to the appropriate buffer. > > - Add a crypto buffer cursor abstraction. This is a more general form > of some bits in the cryptosoft driver that tried to always use uio's. > However, compared to the original code, this avoids rewalking the uio > iovec array for requests with multiple vectors. It also avoids > allocate an iovec array for mbufs and populating it by instead walking > the mbuf chain directly. > > - Update the cryptosoft(4) driver to support separate output buffers > making use of the cursor abstraction. > > Sponsored by: Netflix > Differential Revision: https://reviews.freebsd.org/D24545 > > Added: > head/share/man/man9/crypto_buffer.9 (contents, props changed) > Modified: > head/share/man/man9/Makefile > head/share/man/man9/bus_dma.9 > head/share/man/man9/crypto_driver.9 > head/share/man/man9/crypto_request.9 > head/share/man/man9/crypto_session.9 > head/sys/crypto/ccp/ccp.c > head/sys/dev/cxgbe/crypto/t4_crypto.c > head/sys/dev/hifn/hifn7751.c > head/sys/dev/safe/safe.c > head/sys/geom/eli/g_eli_crypto.c > head/sys/geom/eli/g_eli_integrity.c > head/sys/geom/eli/g_eli_privacy.c > head/sys/kern/subr_bus_dma.c > head/sys/kgssapi/krb5/kcrypto_aes.c > head/sys/netipsec/xform_ah.c > head/sys/netipsec/xform_esp.c > head/sys/netipsec/xform_ipcomp.c > head/sys/opencrypto/criov.c > head/sys/opencrypto/crypto.c > head/sys/opencrypto/cryptodev.c > head/sys/opencrypto/cryptodev.h > head/sys/opencrypto/cryptosoft.c > head/sys/opencrypto/ktls_ocf.c > head/sys/sys/bus_dma.h > > Modified: head/share/man/man9/Makefile > ============================================================================== > --- head/share/man/man9/Makefile Mon May 25 21:14:23 2020 (r361480) > +++ head/share/man/man9/Makefile Mon May 25 22:12:04 2020 (r361481) > @@ -72,6 +72,7 @@ MAN= accept_filter.9 \ > cr_seeotheruids.9 \ > crypto.9 \ > crypto_asym.9 \ > + crypto_buffer.9 \ > crypto_driver.9 \ > crypto_request.9 \ > crypto_session.9 \ > @@ -648,6 +649,8 @@ MLINKS+=bus_dma.9 busdma.9 \ > bus_dma.9 bus_dmamap_load.9 \ > bus_dma.9 bus_dmamap_load_bio.9 \ > bus_dma.9 bus_dmamap_load_ccb.9 \ > + bus_dma.9 bus_dmamap_load_crp.9 \ > + bus_dma.9 bus_dmamap_load_crp_buffer.9 \ > bus_dma.9 bus_dmamap_load_mbuf.9 \ > bus_dma.9 bus_dmamap_load_mbuf_sg.9 \ > bus_dma.9 bus_dmamap_load_uio.9 \ > @@ -897,9 +900,20 @@ MLINKS+=crypto_asym.9 crypto_kdispatch.9 \ > crypto_asym.9 crypto_kdone.9 \ > crypto_asym.9 crypto_kregister.9 \ > crypto_asym.9 CRYPTODEV_KPROCESS.9 > -MLINKS+=crypto_driver.9 crypto_apply.9 \ > - crypto_driver.9 crypto_contiguous_segment.9 \ > - crypto_driver.9 crypto_copyback.9 \ > +MLINKS+=crypto_buffer.9 crypto_apply.9 \ > + crypto_buffer.9 crypto_apply_buf.9 \ > + crypto_buffer.9 crypto_buffer_contiguous_segment.9 \ > + crypto_buffer.9 crypto_buffer_len.9 \ > + crypto_buffer.9 crypto_contiguous_segment.9 \ > + crypto_buffer.9 crypto_cursor_init.9 \ > + crypto_buffer.9 crypto_cursor_advance.9 \ > + crypto_buffer.9 crypto_cursor_copyback.9 \ > + crypto_buffer.9 crypto_cursor_copydata.9 \ > + crypto_buffer.9 crypto_cursor_copydata_noadv.9 \ > + crypto_buffer.9 crypto_cursor_segbase.9 \ > + crypto_buffer.9 crypto_cursor_seglen.9 \ > + crypto_buffer.9 CRYPTO_HAS_OUTPUT_BUFFER.9 > +MLINKS+=crypto_driver.9 crypto_copyback.9 \ > crypto_driver.9 crypto_copydata.9 \ > crypto_driver.9 crypto_done.9 \ > crypto_driver.9 crypto_get_driverid.9 \ > @@ -915,7 +929,13 @@ MLINKS+=crypto_driver.9 crypto_apply.9 \ > crypto_driver.9 hmac_init_opad.9 > MLINKS+=crypto_request.9 crypto_dispatch.9 \ > crypto_request.9 crypto_freereq.9 \ > - crypto_request.9 crypto_getreq.9 > + crypto_request.9 crypto_getreq.9 \ > + crypto_request.9 crypto_use_buf.9 \ > + crypto_request.9 crypto_use_mbuf.9 \ > + crypto_request.9 crypto_use_output_buf.9 \ > + crypto_request.9 crypto_use_output_mbuf.9 \ > + crypto_request.9 crypto_use_output_uio.9 \ > + crypto_request.9 crypto_use_uio.9 \ > MLINKS+=crypto_session.9 crypto_auth_hash.9 \ > crypto_session.9 crypto_cipher.9 \ > crypto_session.9 crypto_get_params.9 \ > > Modified: head/share/man/man9/bus_dma.9 > ============================================================================== > --- head/share/man/man9/bus_dma.9 Mon May 25 21:14:23 2020 (r361480) > +++ head/share/man/man9/bus_dma.9 Mon May 25 22:12:04 2020 (r361481) > @@ -53,7 +53,7 @@ > .\" $FreeBSD$ > .\" $NetBSD: bus_dma.9,v 1.25 2002/10/14 13:43:16 wiz Exp $ > .\" > -.Dd April 14, 2020 > +.Dd May 25, 2020 > .Dt BUS_DMA 9 > .Os > .Sh NAME > @@ -69,6 +69,7 @@ > .Nm bus_dmamap_load_bio , > .Nm bus_dmamap_load_ccb , > .Nm bus_dmamap_load_crp , > +.Nm bus_dmamap_load_crp_buffer , > .Nm bus_dmamap_load_mbuf , > .Nm bus_dmamap_load_mbuf_sg , > .Nm bus_dmamap_load_uio , > @@ -123,6 +124,10 @@ > "struct crypto *crp" "bus_dmamap_callback_t *callback" "void *callback_arg" > \ > "int flags" > .Ft int > +.Fn bus_dmamap_load_crp_buffer "bus_dma_tag_t dmat" "bus_dmamap_t map" \ > +"struct crypto_buffer *cb" "bus_dmamap_callback_t *callback" \ > +"void *callback_arg" "int flags" > +.Ft int > .Fn bus_dmamap_load_mbuf "bus_dma_tag_t dmat" "bus_dmamap_t map" \ > "struct mbuf *mbuf" "bus_dmamap_callback2_t *callback" "void *callback_arg" > \ > "int flags" > @@ -394,8 +399,9 @@ via > .Fn bus_dmamap_load , > .Fn bus_dmamap_load_bio , > .Fn bus_dmamap_load_ccb , > +.Fn bus_dmamap_load_crp , > or > -.Fn bus_dmamap_load_crp . > +.Fn bus_dmamap_load_crp_buffer . > Callbacks are of the format: > .Bl -tag -width indent > .It Ft void > @@ -885,8 +891,18 @@ XPT_SCSI_IO > .It Fn bus_dmamap_load_crp "dmat" "map" "crp" "callback" "callback_arg" > "flags" > This is a variation of > .Fn bus_dmamap_load > -which maps buffers pointed to by > +which maps the input buffer pointed to by > .Fa crp > +for DMA transfers. > +The > +.Dv BUS_DMA_NOWAIT > +flag is implied, thus no callback deferral will happen. > +.It Fn bus_dmamap_load_crp_buffer "dmat" "map" "cb" "callback" > "callback_arg" \ > +"flags" > +This is a variation of > +.Fn bus_dmamap_load > +which maps the crypto data buffer pointed to by > +.Fa cb > for DMA transfers. > The > .Dv BUS_DMA_NOWAIT > > Added: head/share/man/man9/crypto_buffer.9 > ============================================================================== > --- /dev/null 00:00:00 1970 (empty, because file is newly added) > +++ head/share/man/man9/crypto_buffer.9 Mon May 25 22:12:04 2020 (r361481) > @@ -0,0 +1,307 @@ > +.\" Copyright (c) 2020, Chelsio Inc > +.\" > +.\" Redistribution and use in source and binary forms, with or without > +.\" modification, are permitted provided that the following conditions are > met: > +.\" > +.\" 1. Redistributions of source code must retain the above copyright > notice, > +.\" this list of conditions and the following disclaimer. > +.\" > +.\" 2. Redistributions in binary form must reproduce the above copyright > +.\" notice, this list of conditions and the following disclaimer in the > +.\" documentation and/or other materials provided with the > distribution. > +.\" > +.\" 3. Neither the name of the Chelsio Inc nor the names of its > +.\" contributors may be used to endorse or promote products derived > from > +.\" this software without specific prior written permission. > +.\" > +.\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS > IS" > +.\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, > THE > +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR > PURPOSE > +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS > BE > +.\" LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR > +.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF > +.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR > BUSINESS > +.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER > IN > +.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR > OTHERWISE) > +.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF > THE > +.\" POSSIBILITY OF SUCH DAMAGE. > +.\" > +.\" * Other names and brands may be claimed as the property of others. > +.\" > +.\" $FreeBSD$ > +.\" > +.Dd May 25, 2020 > +.Dt CRYPTO_BUFFER 9 > +.Os > +.Sh NAME > +.Nm crypto_buffer > +.Nd symmetric cryptographic request buffers > +.Sh SYNOPSIS > +.In opencrypto/cryptodev.h > +.Ft int > +.Fo crypto_apply > +.Fa "struct cryptop *crp" > +.Fa "int off" > +.Fa "int len" > +.Fa "int (*f)(void *, void *, u_int)" > +.Fa "void *arg" > +.Fc > +.Ft int > +.Fo crypto_apply_buf > +.Fa "struct crypto_buffer *cb" > +.Fa "int off" > +.Fa "int len" > +.Fa "int (*f)(void *, void *, u_int)" > +.Fa "void *arg" > +.Fc > +.Ft void * > +.Fo crypto_buffer_contiguous_subsegment > +.Fa "struct crypto_buffer *cb" > +.Fa "size_t skip" > +.Fa "size_t len" > +.Fc > +.Ft size_t > +.Fn crypto_buffer_len "struct crypto_buffer *cb" > +.Ft void * > +.Fo crypto_contiguous_subsegment > +.Fa "struct cryptop *crp" > +.Fa "size_t skip" > +.Fa "size_t len" > +.Fc > +.Ft void > +.Fo crypto_cursor_init > +.Fa "struct crypto_buffer_cursor *cc" > +.Fa "const struct crypto_buffer *cb" > +.Fc > +.Ft void > +.Fn crypto_cursor_advance "struct crypto_buffer_cursor *cc" "size_t > amount" > +.Ft void > +.Fo crypto_cursor_copyback > +.Fa "struct crypto_buffer_cursor *cc" > +.Fa "int size" > +.Fa "const void *src" > +.Fc > +.Ft void > +.Fo crypto_cursor_copydata > +.Fa "struct crypto_buffer_cursor *cc" > +.Fa "int size" > +.Fa "void *dst" > +.Fc > +.Ft void > +.Fo crypto_cursor_copydata_noadv > +.Fa "struct crypto_buffer_cursor *cc" > +.Fa "int size" > +.Fa "void *dst" > +.Fc > +.Ft void * > +.Fn crypto_cursor_segbase "struct crypto_buffer_cursor *cc" > +.Ft size_t > +.Fn crypto_cursor_seglen "struct crypto_buffer_cursor *cc" > +.Ft bool > +.Fn CRYPTO_HAS_OUTPUT_BUFFER "struct cryptop *crp" > +.Sh DESCRIPTION > +Symmetric cryptographic requests use data buffers to describe the data to > +be modified. > +Requests can either specify a single data buffer whose contents are > modified > +in place, > +or requests may specify separate data buffers for input and output. > +.Vt struct crypto_buffer > +provides an abstraction that permits cryptographic requests to operate on > +different types of buffers. > +.Vt struct crypto_cursor > +allows cryptographic drivers to iterate over a data buffer. > +.Pp > +.Fn CRYPTO_HAS_OUTPUT_BUFFER > +returns true if > +.Fa crp > +uses separate buffers for input and output and false if > +.Fa crp > +uses a single buffer. > +.Pp > +.Fn crypto_buffer_len > +returns the length of data buffer > +.Fa cb > +in bytes. > +.Pp > +.Fn crypto_apply_buf > +invokes a caller-supplied function > +to a region of the data buffer > +.Fa cb . > +The function > +.Fa f > +is called one or more times. > +For each invocation, > +the first argument to > +.Fa f > +is the value of > +.Fa arg > +passed to > +.Fn crypto_apply_buf . > +The second and third arguments to > +.Fa f > +are a pointer and length to a segment of the buffer mapped into the > kernel. > +The function is called enough times to cover the > +.Fa len > +bytes of the data buffer which starts at an offset > +.Fa off . > +If any invocation of > +.Fa f > +returns a non-zero value, > +.Fn crypto_apply_buf > +immediately returns that value without invoking > +.Fa f > +on any remaining segments of the region, > +otherwise > +.Fn crypto_apply_buf > +returns the value from the final call to > +.Fa f . > +.Fn crypto_apply > +invokes the callback > +.Fa f > +on a region of the input data buffer for > +.Fa crp . > +.Pp > +.Fn crypto_buffer_contiguous_subsegment > +attempts to locate a single, virtually-contiguous segment of the data > buffer > +.Fa cb . > +The segment must be > +.Fa len > +bytes long and start at an offset of > +.Fa skip > +bytes. > +If a segment is found, > +a pointer to the start of the segment is returned. > +Otherwise, > +.Dv NULL > +is returned. > +.Fn crypto_contiguous_subsegment > +attempts to locate a single, virtually-contiguous segment in the input > data > +buffer for > +.Fa crp . > +.Ss Data Buffers > +Data buffers are described by an instance of > +.Vt struct crypto buffer . > +The > +.Fa cb_type > +member contains the type of the data buffer. > +The following types are supported: > +.Bl -tag -width " CRYPTO_BUF_CONTIG" > +.It Dv CRYPTO_BUF_NONE > +An invalid buffer. > +Used to mark the output buffer when a crypto request uses a single data > buffer. > +.It Dv CRYPTO_BUF_CONTIG > +An array of bytes mapped into the kernel's address space. > +.It Dv CRYPTO_BUF_UIO > +A scatter/gather list of kernel buffers as described in > +.Xr uio 9 . > +.It Dv CRYPTO_BUF_MBUF > +A network memory buffer as described in > +.Xr mbuf 9 . > +.El > +.Pp > +The structure also contains the following type-specific fields: > +.Bl -tag -width " cb_buf_len" > +.It Fa cb_buf > +A pointer to the start of a > +.Dv CRYPTO_BUF_CONTIG > +data buffer. > +.It Fa cb_buf_len > +The length of a > +.Dv CRYPTO_BUF_CONTIG > +data buffer > +.It Fa cb_mbuf > +A pointer to a > +.Vt struct mbuf > +for > +.Dv CRYPTO_BUF_MBUF . > +.It Fa cb_uio > +A pointer to a > +.Vt struct uio > +for > +.Dv CRYPTO_BUF_UIO . > +.El > +.Ss Cursors > +Cursors provide a mechanism for iterating over a data buffer. > +They are primarily intended for use in software drivers which access data > +buffers via virtual addresses. > +.Pp > +.Fn crypto_cursor_init > +initializes the cursor > +.Fa cc > +to reference the start of the data buffer > +.Fa cb . > +.Pp > +.Fn crypto_cursor_advance > +advances the cursor > +.Fa amount > +bytes forward in the data buffer. > +.Pp > +.Fn crypto_cursor_copyback > +copies > +.Fa size > +bytes from the local buffer pointed to by > +.Fa src > +into the data buffer associated with > +.Fa cc . > +The bytes are written to the current position of > +.Fa cc , > +and the cursor is then advanced by > +.Fa size > +bytes. > +.Pp > +.Fn crypto_cursor_copydata > +copies > +.Fa size > +bytes out of the data buffer associated with > +.Fa cc > +into a local buffer pointed to by > +.Fa dst . > +The bytes are read from the current position of > +.Fa cc , > +and the cursor is then advanced by > +.Fa size > +bytes. > +.Pp > +.Fn crypto_cursor_copydata_noadv > +is similar to > +.Fn crypto_cursor_copydata > +except that it does not change the current position of > +.Fa cc . > +.Pp > +.Fn crypto_cursor_segbase > +and > +.Fn crypto_cursor_seglen > +return the start and length, respectively, > +of the virtually-contiguous segment at the current position of > +.Fa cc . > +.Sh RETURN VALUES > +.Fn crypto_apply > +and > +.Fn crypto_apply_buf > +return the return value from the caller-supplied callback function. > +.Pp > +.Fn crypto_buffer_contiguous_subsegment , > +.Fn crypto_contiguous_subsegment , > +and > +.Fn crypto_cursor_segbase , > +return a pointer to a contiguous segment or > +.Dv NULL . > +.Pp > +.Fn crypto_buffer_len > +returns the length of a buffer in bytes. > +.Pp > +.Fn crypto_cursor_seglen > +returns the length in bytes of a contiguous segment. > +.Pp > +.Fn CRYPTO_HAS_OUTPUT_BUFFER > +returns true if the request uses a separate output buffer. > +.Sh SEE ALSO > +.Xr ipsec 4 , > +.Xr bus_dma 9 , > +.Xr crypto 7 , > +.Xr crypto 9 , > +.Xr crypto_request 9 , > +.Xr crypto_driver 9 , > +.Xr crypto_session 9 , > +.Xr mbuf 9 > +.Xr uio 9 > > Modified: head/share/man/man9/crypto_driver.9 > ============================================================================== > --- head/share/man/man9/crypto_driver.9 Mon May 25 21:14:23 2020 (r361480) > +++ head/share/man/man9/crypto_driver.9 Mon May 25 22:12:04 2020 (r361481) > @@ -30,7 +30,7 @@ > .\" > .\" $FreeBSD$ > .\" > -.Dd April 20, 2020 > +.Dd May 25, 2020 > .Dt CRYPTO_DRIVER 9 > .Os > .Sh NAME > @@ -38,20 +38,6 @@ > .Nd interface for symmetric cryptographic drivers > .Sh SYNOPSIS > .In opencrypto/cryptodev.h > -.Ft int > -.Fo crypto_apply > -.Fa "struct cryptop *crp" > -.Fa "int off" > -.Fa "int len" > -.Fa "int (*f)(void *, void *, u_int)" > -.Fa "void *arg" > -.Fc > -.Ft void * > -.Fo crypto_contiguous_subsegment > -.Fa "struct cryptop *crp" > -.Fa "size_t skip" > -.Fa "size_t len" > -.Fc > .Ft void > .Fn crypto_copyback "struct cryptop *crp" "int off" "int size" "const void > *src" > .Ft void > @@ -244,29 +230,29 @@ callbacks. > .Fn crypto_copydata > copies > .Fa size > -bytes out of the data buffer for > +bytes out of the input buffer for > .Fa crp > into a local buffer pointed to by > .Fa dst . > The bytes are read starting at an offset of > .Fa off > -bytes in the request's data buffer. > +bytes in the request's input buffer. > .Pp > .Fn crypto_copyback > copies > .Fa size > bytes from the local buffer pointed to by > .Fa src > -into the data buffer for > +into the output buffer for > .Fa crp . > The bytes are written starting at an offset of > .Fa off > -bytes in the request's data buffer. > +bytes in the request's output buffer. > .Pp > .Fn crypto_read_iv > copies the IV or nonce for > .Fa crp > -into the the local buffer pointed to by > +into the local buffer pointed to by > .Fa iv . > .Pp > A driver calls > @@ -306,53 +292,7 @@ indicates that the driver is able to handle asymmetric > .Fn CRYPTODEV_KPROCESS . > .El > .Pp > -.Fn crypto_apply > -is a helper routine that can be used to invoke a caller-supplied function > -to a region of the data buffer for > -.Fa crp . > -The function > -.Fa f > -is called one or more times. > -For each invocation, > -the first argument to > -.Fa f > -is the value of > -.Fa arg passed to > -.Fn crypto_apply . > -The second and third arguments to > -.Fa f > -are a pointer and length to a segment of the buffer mapped into the > kernel. > -The function is called enough times to cover the > -.Fa len > -bytes of the data buffer which starts at an offset > -.Fa off . > -If any invocation of > -.Fa f > -returns a non-zero value, > -.Fn crypto_apply > -immediately returns that value without invoking > -.Fa f > -on any remaining segments of the region, > -otherwise > -.Fn crypto_apply > -returns the value from the final call to > -.Fa f . > .Pp > -.Fn crypto_contiguous_subsegment > -attempts to locate a single, virtually-contiguous segment of the data > buffer > -for > -.Fa crp . > -The segment must be > -.Fa len > -bytes long and start at an offset of > -.Fa skip > -bytes. > -If a segment is found, > -a pointer to the start of the segment is returned. > -Otherwise, > -.Dv NULL > -is returned. > -.Pp > .Fn hmac_init_ipad > prepares an authentication context to generate the inner hash of an HMAC. > .Fa axf > @@ -396,5 +336,6 @@ returns a negative value on success or an error on fai > .Sh SEE ALSO > .Xr crypto 7 , > .Xr crypto 9 , > +.Xr crypto_buffer 9 , > .Xr crypto_request 9 , > .Xr crypto_session 9 > > Modified: head/share/man/man9/crypto_request.9 > ============================================================================== > --- head/share/man/man9/crypto_request.9 Mon May 25 21:14:23 2020 (r361480) > +++ head/share/man/man9/crypto_request.9 Mon May 25 22:12:04 2020 (r361481) > @@ -30,7 +30,7 @@ > .\" > .\" $FreeBSD$ > .\" > -.Dd April 20, 2020 > +.Dd May 25, 2020 > .Dt CRYPTO_REQUEST 9 > .Os > .Sh NAME > @@ -44,6 +44,18 @@ > .Fn crypto_freereq "struct cryptop *crp" > .Ft "struct cryptop *" > .Fn crypto_getreq "crypto_session_t cses" "int how" > +.Ft void > +.Fn crypto_use_buf "struct cryptop *crp" "void *buf" "int len" > +.Ft void > +.Fn crypto_use_mbuf "struct cryptop *crp" "struct mbuf *m" > +.Ft void > +.Fn crypto_use_uio "struct cryptop *crp" "struct uio *uio" > +.Ft void > +.Fn crypto_use_output_buf "struct cryptop *crp" "void *buf" "int len" > +.Ft void > +.Fn crypto_use_output_mbuf "struct cryptop *crp" "struct mbuf *m" > +.Ft void > +.Fn crypto_use_output_uio "struct cryptop *crp" "struct uio *uio" > .Sh DESCRIPTION > Each symmetric cryptographic operation in the kernel is described by > an instance of > @@ -84,57 +96,65 @@ it should be feed via > .Fn crypto_freereq . > .Pp > Cryptographic operations include several fields to describe the request. > -.Ss Buffer Types > -Requests are associated with a single data buffer that is modified in > place. > -The type of the data buffer and the buffer itself are described by the > -following fields: > -.Bl -tag -width crp_buf_type > -.It Fa crp_buf_type > -The type of the data buffer. > -The following types are supported: > -.Bl -tag -width CRYPTO_BUF_CONTIG > -.It Dv CRYPTO_BUF_CONTIG > -An array of bytes mapped into the kernel's address space. > -.It Dv CRYPTO_BUF_UIO > -A scatter/gather list of kernel buffers as described in > -.Xr uio 9 . > -.It Dv CRYPTO_BUF_MBUF > -A network memory buffer as described in > -.Xr mbuf 9 . > +.Ss Request Buffers > +Requests can either specify a single data buffer that is modified in place > +.Po > +.Fa crp_buf > +.Pc > +or separate input > +.Po > +.Fa crp_buf > +.Pc > +and output > +.Po > +.Fa crp_obuf > +.Pc > +buffers. > +Note that separate input and output buffers are not supported for > compression > +mode requests. > +.Pp > +All requests must have a valid > +.Fa crp_buf > +initialized by one of the following functions: > +.Bl -tag -width "Fn crypto_use_mbuf" > +.It Fn crypto_use_buf > +Uses an array of > +.Fa len > +bytes pointed to by > +.Fa buf > +as the data buffer. > +.It Fn crypto_use_mbuf > +Uses the network memory buffer > +.Fa m > +as the data buffer. > +.It Fn crypto_use_uio > +Uses the scatter/gather list > +.Fa uio > +as the data buffer. > .El > -.It Fa crp_buf > -A pointer to the start of a > -.Dv CRYPTO_BUF_CONTIG > -data buffer. > -.It Fa crp_ilen > -The length of a > -.Dv CRYPTO_BUF_CONTIG > -data buffer > -.It Fa crp_mbuf > -A pointer to a > -.Vt struct mbuf > -for > -.Dv CRYPTO_BUF_MBUF . > -.It Fa crp_uio > -A pointer to a > -.Vt struct uio > -for > -.Dv CRYPTO_BUF_UIO . > -.It Fa crp_olen > -Used with compression and decompression requests to describe the updated > -length of the payload region in the data buffer. > .Pp > -If a compression request increases the size of the payload, > -then the data buffer is unmodified, the request completes successfully, > -and > -.Fa crp_olen > -is set to the size the compressed data would have used. > -Callers can compare this to the payload region length to determine if > -the compressed data was discarded. > +One of the following functions should be used to initialize > +.Fa crp_obuf > +for requests that use separate input and output buffers: > +.Bl -tag -width "Fn crypto_use_output_mbuf" > +.It Fn crypto_use_output_buf > +Uses an array of > +.Fa len > +bytes pointed to by > +.Fa buf > +as the output buffer. > +.It Fn crypto_use_output_mbuf > +Uses the network memory buffer > +.Fa m > +as the output buffer. > +.It Fn crypto_use_output_uio > +Uses the scatter/gather list > +.Fa uio > +as the output buffer. > .El > .Ss Request Regions > -Each request describes one or more regions in the data buffer using. > -Each region is described by an offset relative to the start of the > +Each request describes one or more regions in the data buffers. > +Each region is described by an offset relative to the start of a > data buffer and a length. > The length of some regions is the same for all requests belonging to > a session. > @@ -142,18 +162,43 @@ Those lengths are set in the session parameters of > the > session. > All requests must define a payload region. > Other regions are only required for specific session modes. > +.Pp > +For requests with separate input and output data buffers, > +the AAD, IV, and payload regions are always defined as regions in the > +input buffer, > +and a separate payload output region is defined to hold the output of > +encryption or decryption in the output buffer. > +The digest region describes a region in the input data buffer for > +requests that verify an existing digest. > +For requests that compute a digest, > +the digest region describes a region in the output data buffer. > +Note that the only data written to the output buffer is the encryption > +or decryption result and any computed digest. > +AAD and IV regions are not copied from the input buffer into the output > +buffer but are only used as inputs. > +.Pp > The following regions are defined: > -.Bl -column "Payload" "crp_payload_start" "crp_payload_length" > -.It Sy Region Ta Sy Start Ta Sy Length Ta Sy Description > -.It AAD Ta Fa crp_aad_start Ta Fa crp_aad_length Ta > +.Bl -column "Payload Output" "Input/Output" > +.It Sy Region Ta Sy Buffer Ta Sy Description > +.It AAD Ta Input Ta > Additional Authenticated Data > -.It IV Ta Fa crp_iv_start Ta Fa csp_ivlen Ta > +.It IV Ta Input Ta > Embedded IV or nonce > -.It Payload Ta Fa crp_payload_start Ta Fa crp_payload_length Ta > +.It Payload Ta Input Ta > Data to encrypt, decrypt, compress, or decompress > -.It Digest Ta Fa crp_digest_start Ta Fa csp_auth_mlen Ta > +.It Payload Output Ta Output Ta > +Encrypted or decrypted data > +.It Digest Ta Input/Output Ta > Authentication digest, hash, or tag > .El > +.Bl -column "Payload Output" ".Fa crp_payload_output_start" > +.It Sy Region Ta Sy Start Ta Sy Length > +.It AAD Ta Fa crp_aad_start Ta Fa crp_aad_length > +.It IV Ta Fa crp_iv_start Ta Fa csp_ivlen > +.It Payload Ta Fa crp_payload_start Ta Fa crp_payload_length > +.It Payload Output Ta Fa crp_payload_output_start Ta Fa crp_payload_length > +.It Digest Ta Fa crp_digest_start Ta Fa csp_auth_mlen > +.El > .Pp > Requests are permitted to operate on only a subset of the data buffer. > For example, > @@ -223,7 +268,7 @@ If the IV is stored in > should be set in > .Fa crp_flags > and > -.Fa crp_digest_start > +.Fa crp_iv_start > should be left as zero. > .Pp > Requests that store part, but not all, of the IV in the data buffer should > @@ -380,6 +425,17 @@ The callback function should inspect > to determine the status of the completed operation. > It should also arrange for the request to be freed via > .Fn crypto_freereq . > +.It Fa crp_olen > +Used with compression and decompression requests to describe the updated > +length of the payload region in the data buffer. > +.Pp > +If a compression request increases the size of the payload, > +then the data buffer is unmodified, the request completes successfully, > +and > +.Fa crp_olen > +is set to the size the compressed data would have used. > +Callers can compare this to the payload region length to determine if > +the compressed data was discarded. > .El > .Sh RETURN VALUES > .Fn crypto_dispatch > > Modified: head/share/man/man9/crypto_session.9 > ============================================================================== > --- head/share/man/man9/crypto_session.9 Mon May 25 21:14:23 2020 (r361480) > +++ head/share/man/man9/crypto_session.9 Mon May 25 22:12:04 2020 (r361481) > @@ -30,7 +30,7 @@ > .\" > .\" $FreeBSD$ > .\" > -.Dd March 27, 2020 > +.Dd May 25, 2020 > .Dt CRYPTO_SESSION 9 > .Os > .Sh NAME > @@ -183,8 +183,18 @@ and the authentication algorithm is specified in > .Fa csp_auth_alg . > .El > .It Fa csp_flags > -Currently, no additional flags are defined and this field should be set to > -zero. > +A mask of optional driver features. > +Drivers will only attach to a session if they support all of the > +requested features. > +.Bl -tag -width CSP_F_SEPARATE_OUTPUT > +.It Dv CSP_F_SEPARATE_OUTPUT > +Support requests that use separate input and output buffers. > +Sessions with this flag set permit requests with either a single buffer > +that is modified in-place, or requests with separate input and output > +buffers. > +Sessions without this flag only permit requests with a single buffer that > +is modified in-place. > +.El > .It Fa csp_ivlen > If either the cipher or authentication algorithms require an explicit > initialization vector (IV) or nonce, > > Modified: head/sys/crypto/ccp/ccp.c > ============================================================================== > --- head/sys/crypto/ccp/ccp.c Mon May 25 21:14:23 2020 (r361480) > +++ head/sys/crypto/ccp/ccp.c Mon May 25 22:12:04 2020 (r361481) > @@ -92,20 +92,20 @@ static struct random_source random_ccp = { > * crypto operation buffer. > */ > static int > -ccp_populate_sglist(struct sglist *sg, struct cryptop *crp) > +ccp_populate_sglist(struct sglist *sg, struct crypto_buffer *cb) > { > int error; > > sglist_reset(sg); > - switch (crp->crp_buf_type) { > + switch (cb->cb_type) { > case CRYPTO_BUF_MBUF: > - error = sglist_append_mbuf(sg, crp->crp_mbuf); > + error = sglist_append_mbuf(sg, cb->cb_mbuf); > break; > case CRYPTO_BUF_UIO: > - error = sglist_append_uio(sg, crp->crp_uio); > + error = sglist_append_uio(sg, cb->cb_uio); > break; > case CRYPTO_BUF_CONTIG: > - error = sglist_append(sg, crp->crp_buf, crp->crp_ilen); > + error = sglist_append(sg, cb->cb_buf, cb->cb_buf_len); > break; > default: > error = EINVAL; > @@ -547,7 +547,7 @@ ccp_process(device_t dev, struct cryptop *crp, int hin > goto out; > qpheld = true; > > - error = ccp_populate_sglist(qp->cq_sg_crp, crp); > + error = ccp_populate_sglist(qp->cq_sg_crp, &crp->crp_buf); > if (error != 0) > goto out; > > > Modified: head/sys/dev/cxgbe/crypto/t4_crypto.c > ============================================================================== > --- head/sys/dev/cxgbe/crypto/t4_crypto.c Mon May 25 21:14:23 > 2020 (r361480) > +++ head/sys/dev/cxgbe/crypto/t4_crypto.c Mon May 25 22:12:04 > 2020 (r361481) > @@ -247,26 +247,26 @@ struct ccr_softc { > * requests. > * > * These scatter/gather lists can describe different subsets of the > - * buffer described by the crypto operation. ccr_populate_sglist() > - * generates a scatter/gather list that covers the entire crypto > + * buffers described by the crypto operation. ccr_populate_sglist() > + * generates a scatter/gather list that covers an entire crypto > * operation buffer that is then used to construct the other > * scatter/gather lists. > */ > static int > -ccr_populate_sglist(struct sglist *sg, struct cryptop *crp) > +ccr_populate_sglist(struct sglist *sg, struct crypto_buffer *cb) > { > int error; > > sglist_reset(sg); > - switch (crp->crp_buf_type) { > + switch (cb->cb_type) { > case CRYPTO_BUF_MBUF: > - error = sglist_append_mbuf(sg, crp->crp_mbuf); > + error = sglist_append_mbuf(sg, cb->cb_mbuf); > break; > case CRYPTO_BUF_UIO: > - error = sglist_append_uio(sg, crp->crp_uio); > + error = sglist_append_uio(sg, cb->cb_uio); > break; > case CRYPTO_BUF_CONTIG: > - error = sglist_append(sg, crp->crp_buf, crp->crp_ilen); > + error = sglist_append(sg, cb->cb_buf, cb->cb_buf_len); > break; > default: > error = EINVAL; > @@ -2576,7 +2576,7 @@ ccr_process(device_t dev, struct cryptop *crp, int > hin > sc = device_get_softc(dev); > > mtx_lock(&sc->lock); > - error = ccr_populate_sglist(sc->sg_crp, crp); > + error = ccr_populate_sglist(sc->sg_crp, &crp->crp_buf); > if (error) { > sc->stats_sglist_error++; > goto out; > > Modified: head/sys/dev/hifn/hifn7751.c > ============================================================================== > --- head/sys/dev/hifn/hifn7751.c Mon May 25 21:14:23 2020 (r361480) > +++ head/sys/dev/hifn/hifn7751.c Mon May 25 22:12:04 2020 (r361481) > @@ -1760,22 +1760,6 @@ hifn_dmamap_load_src(struct hifn_softc *sc, struct > hif > return (idx); > } > > -static bus_size_t > -hifn_crp_length(struct cryptop *crp) > -{ > - > - switch (crp->crp_buf_type) { > - case CRYPTO_BUF_MBUF: > - return (crp->crp_mbuf->m_pkthdr.len); > - case CRYPTO_BUF_UIO: > - return (crp->crp_uio->uio_resid); > - case CRYPTO_BUF_CONTIG: > - return (crp->crp_ilen); > - default: > - panic("bad crp buffer type"); > - } > -} > - > static void > hifn_op_cb(void* arg, bus_dma_segment_t *seg, int nsegs, int error) > { > @@ -1831,12 +1815,12 @@ hifn_crypto( > err = ENOMEM; > goto err_srcmap1; > } > - cmd->src_mapsize = hifn_crp_length(crp); > + cmd->src_mapsize = crypto_buffer_len(&crp->crp_buf); > > if (hifn_dmamap_aligned(&cmd->src)) { > cmd->sloplen = cmd->src_mapsize & 3; > cmd->dst = cmd->src; > - } else if (crp->crp_buf_type == CRYPTO_BUF_MBUF) { > + } else if (crp->crp_buf.cb_type == CRYPTO_BUF_MBUF) { > int totlen, len; > struct mbuf *m, *m0, *mlast; > > @@ -1854,10 +1838,11 @@ hifn_crypto( > * have no guarantee that we'll be re-entered. > */ > totlen = cmd->src_mapsize; > - if (crp->crp_mbuf->m_flags & M_PKTHDR) { > + if (crp->crp_buf.cb_mbuf->m_flags & M_PKTHDR) { > len = MHLEN; > MGETHDR(m0, M_NOWAIT, MT_DATA); > - if (m0 && !m_dup_pkthdr(m0, crp->crp_mbuf, M_NOWAIT)) { > + if (m0 && !m_dup_pkthdr(m0, crp->crp_buf.cb_mbuf, > + M_NOWAIT)) { > m_free(m0); > m0 = NULL; > } > @@ -2084,7 +2069,7 @@ err_dstmap1: > if (cmd->src_map != cmd->dst_map) > bus_dmamap_destroy(sc->sc_dmat, cmd->dst_map); > err_srcmap: > - if (crp->crp_buf_type == CRYPTO_BUF_MBUF) { > + if (crp->crp_buf.cb_type == CRYPTO_BUF_MBUF) { > if (cmd->dst_m != NULL) > m_freem(cmd->dst_m); > } > @@ -2626,7 +2611,7 @@ hifn_callback(struct hifn_softc *sc, struct > hifn_comma > BUS_DMASYNC_POSTREAD); > } > > - if (crp->crp_buf_type == CRYPTO_BUF_MBUF) { > + if (crp->crp_buf.cb_type == CRYPTO_BUF_MBUF) { > if (cmd->dst_m != NULL) { > totlen = cmd->src_mapsize; > for (m = cmd->dst_m; m != NULL; m = m->m_next) { > @@ -2636,9 +2621,10 @@ hifn_callback(struct hifn_softc *sc, struct > hifn_comma > } else > totlen -= m->m_len; > } > - cmd->dst_m->m_pkthdr.len = crp->crp_mbuf->m_pkthdr.len; > - m_freem(crp->crp_mbuf); > - crp->crp_mbuf = cmd->dst_m; > + cmd->dst_m->m_pkthdr.len = > + crp->crp_buf.cb_mbuf->m_pkthdr.len; > + m_freem(crp->crp_buf.cb_mbuf); > + crp->crp_buf.cb_mbuf = cmd->dst_m; > } > } > > > Modified: head/sys/dev/safe/safe.c > ============================================================================== > --- head/sys/dev/safe/safe.c Mon May 25 21:14:23 2020 (r361480) > +++ head/sys/dev/safe/safe.c Mon May 25 22:12:04 2020 (r361481) > @@ -752,22 +752,6 @@ safe_newsession(device_t dev, crypto_session_t cses, > return (0); > } > > -static bus_size_t > -safe_crp_length(struct cryptop *crp) > -{ > - > - switch (crp->crp_buf_type) { > - case CRYPTO_BUF_MBUF: > - return (crp->crp_mbuf->m_pkthdr.len); > - case CRYPTO_BUF_UIO: > - return (crp->crp_uio->uio_resid); > - case CRYPTO_BUF_CONTIG: > - return (crp->crp_ilen); > - default: > - panic("bad crp buffer type"); > - } > -} > - > static void > > *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** > -- Mateusz Guzik From owner-svn-src-all@freebsd.org Fri May 29 10:09:49 2020 Return-Path: Delivered-To: svn-src-all@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 4BF9A334AF7; Fri, 29 May 2020 10:09:49 +0000 (UTC) (envelope-from lwhsu@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49YL0F0zM2z4S1p; Fri, 29 May 2020 10:09:49 +0000 (UTC) (envelope-from lwhsu@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 F2AEE1601F; Fri, 29 May 2020 10:09:48 +0000 (UTC) (envelope-from lwhsu@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04TA9mn1052189; Fri, 29 May 2020 10:09:48 GMT (envelope-from lwhsu@FreeBSD.org) Received: (from lwhsu@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04TA9mJc052186; Fri, 29 May 2020 10:09:48 GMT (envelope-from lwhsu@FreeBSD.org) Message-Id: <202005291009.04TA9mJc052186@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: lwhsu set sender to lwhsu@FreeBSD.org using -f From: Li-Wen Hsu Date: Fri, 29 May 2020 10:09:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361623 - head/tests/sys/netipsec/tunnel X-SVN-Group: head X-SVN-Commit-Author: lwhsu X-SVN-Commit-Paths: head/tests/sys/netipsec/tunnel X-SVN-Commit-Revision: 361623 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2020 10:09:49 -0000 Author: lwhsu Date: Fri May 29 10:09:47 2020 New Revision: 361623 URL: https://svnweb.freebsd.org/changeset/base/361623 Log: Revert r361497, these cases are fixed by r361617. PR: 246737 Sponsored by: The FreeBSD Foundation Modified: head/tests/sys/netipsec/tunnel/aes_cbc_128_hmac_sha1.sh head/tests/sys/netipsec/tunnel/aes_cbc_256_hmac_sha2_256.sh head/tests/sys/netipsec/tunnel/aesni_aes_cbc_128_hmac_sha1.sh head/tests/sys/netipsec/tunnel/aesni_aes_cbc_256_hmac_sha2_256.sh Modified: head/tests/sys/netipsec/tunnel/aes_cbc_128_hmac_sha1.sh ============================================================================== --- head/tests/sys/netipsec/tunnel/aes_cbc_128_hmac_sha1.sh Fri May 29 08:30:35 2020 (r361622) +++ head/tests/sys/netipsec/tunnel/aes_cbc_128_hmac_sha1.sh Fri May 29 10:09:47 2020 (r361623) @@ -11,10 +11,6 @@ v4_head() v4_body() { - if [ "$(atf_config_get ci false)" = "true" ]; then - atf_skip "https://bugs.freebsd.org/246737" - fi - # Unload AESNI module if loaded kldstat -q -n aesni && kldunload aesni Modified: head/tests/sys/netipsec/tunnel/aes_cbc_256_hmac_sha2_256.sh ============================================================================== --- head/tests/sys/netipsec/tunnel/aes_cbc_256_hmac_sha2_256.sh Fri May 29 08:30:35 2020 (r361622) +++ head/tests/sys/netipsec/tunnel/aes_cbc_256_hmac_sha2_256.sh Fri May 29 10:09:47 2020 (r361623) @@ -11,10 +11,6 @@ v4_head() v4_body() { - if [ "$(atf_config_get ci false)" = "true" ]; then - atf_skip "https://bugs.freebsd.org/246737" - fi - # load AESNI module if not already kldstat -q -n aesni || kldload aesni Modified: head/tests/sys/netipsec/tunnel/aesni_aes_cbc_128_hmac_sha1.sh ============================================================================== --- head/tests/sys/netipsec/tunnel/aesni_aes_cbc_128_hmac_sha1.sh Fri May 29 08:30:35 2020 (r361622) +++ head/tests/sys/netipsec/tunnel/aesni_aes_cbc_128_hmac_sha1.sh Fri May 29 10:09:47 2020 (r361623) @@ -11,10 +11,6 @@ v4_head() v4_body() { - if [ "$(atf_config_get ci false)" = "true" ]; then - atf_skip "https://bugs.freebsd.org/246737" - fi - # load AESNI module if not already kldstat -q -n aesni || kldload aesni Modified: head/tests/sys/netipsec/tunnel/aesni_aes_cbc_256_hmac_sha2_256.sh ============================================================================== --- head/tests/sys/netipsec/tunnel/aesni_aes_cbc_256_hmac_sha2_256.sh Fri May 29 08:30:35 2020 (r361622) +++ head/tests/sys/netipsec/tunnel/aesni_aes_cbc_256_hmac_sha2_256.sh Fri May 29 10:09:47 2020 (r361623) @@ -11,10 +11,6 @@ v4_head() v4_body() { - if [ "$(atf_config_get ci false)" = "true" ]; then - atf_skip "https://bugs.freebsd.org/246737" - fi - # Unload AESNI module if loaded kldstat -q -n aesni && kldunload aesni From owner-svn-src-all@freebsd.org Fri May 29 10:37:43 2020 Return-Path: Delivered-To: svn-src-all@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 2D5E23356B1; Fri, 29 May 2020 10:37:43 +0000 (UTC) (envelope-from ae@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49YLcR0Jg4z4VRS; Fri, 29 May 2020 10:37:43 +0000 (UTC) (envelope-from ae@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 0196A167DC; Fri, 29 May 2020 10:37:43 +0000 (UTC) (envelope-from ae@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04TAbgDC070417; Fri, 29 May 2020 10:37:42 GMT (envelope-from ae@FreeBSD.org) Received: (from ae@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04TAbgDf070416; Fri, 29 May 2020 10:37:42 GMT (envelope-from ae@FreeBSD.org) Message-Id: <202005291037.04TAbgDf070416@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ae set sender to ae@FreeBSD.org using -f From: "Andrey V. Elsukov" Date: Fri, 29 May 2020 10:37:42 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361624 - head/sys/netpfil/ipfw X-SVN-Group: head X-SVN-Commit-Author: ae X-SVN-Commit-Paths: head/sys/netpfil/ipfw X-SVN-Commit-Revision: 361624 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2020 10:37:43 -0000 Author: ae Date: Fri May 29 10:37:42 2020 New Revision: 361624 URL: https://svnweb.freebsd.org/changeset/base/361624 Log: Fix O_IP_FLOW_LOOKUP opcode handling. Do not check table value matching when table lookup has failed. Reported by: Sergey Lobanov MFC after: 1 week Modified: head/sys/netpfil/ipfw/ip_fw2.c Modified: head/sys/netpfil/ipfw/ip_fw2.c ============================================================================== --- head/sys/netpfil/ipfw/ip_fw2.c Fri May 29 10:09:47 2020 (r361623) +++ head/sys/netpfil/ipfw/ip_fw2.c Fri May 29 10:37:42 2020 (r361624) @@ -2106,6 +2106,8 @@ do { \ uint32_t v = 0; match = ipfw_lookup_table(chain, cmd->arg1, 0, &args->f_id, &v); + if (!match) + break; if (cmdlen == F_INSN_SIZE(ipfw_insn_u32)) match = ((ipfw_insn_u32 *)cmd)->d[0] == TARG_VAL(chain, v, tag); From owner-svn-src-all@freebsd.org Fri May 29 13:07:53 2020 Return-Path: Delivered-To: svn-src-all@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 B7FB5338A73; Fri, 29 May 2020 13:07:53 +0000 (UTC) (envelope-from mav@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49YPxj4RXJz3SZf; Fri, 29 May 2020 13:07:53 +0000 (UTC) (envelope-from mav@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 7538718295; Fri, 29 May 2020 13:07:53 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04TD7r2Q063239; Fri, 29 May 2020 13:07:53 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04TD7q3J063235; Fri, 29 May 2020 13:07:52 GMT (envelope-from mav@FreeBSD.org) Message-Id: <202005291307.04TD7q3J063235@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Fri, 29 May 2020 13:07:52 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361625 - in head: sys/cam/ctl usr.sbin/ctladm X-SVN-Group: head X-SVN-Commit-Author: mav X-SVN-Commit-Paths: in head: sys/cam/ctl usr.sbin/ctladm X-SVN-Commit-Revision: 361625 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2020 13:07:53 -0000 Author: mav Date: Fri May 29 13:07:52 2020 New Revision: 361625 URL: https://svnweb.freebsd.org/changeset/base/361625 Log: Report STATUS_QUEUED/SENT in `ctladm dumpooa` output. MFC after: 2 weeks Sponsored by: iXsystems, Inc. Modified: head/sys/cam/ctl/ctl.c head/sys/cam/ctl/ctl_ioctl.h head/usr.sbin/ctladm/ctladm.c Modified: head/sys/cam/ctl/ctl.c ============================================================================== --- head/sys/cam/ctl/ctl.c Fri May 29 10:37:42 2020 (r361624) +++ head/sys/cam/ctl/ctl.c Fri May 29 13:07:52 2020 (r361625) @@ -2433,6 +2433,12 @@ ctl_ioctl_fill_ooa(struct ctl_lun *lun, uint32_t *cur_ if (io->io_hdr.flags & CTL_FLAG_DMA_QUEUED) entry->cmd_flags |= CTL_OOACMD_FLAG_DMA_QUEUED; + + if (io->io_hdr.flags & CTL_FLAG_STATUS_QUEUED) + entry->cmd_flags |= CTL_OOACMD_FLAG_STATUS_QUEUED; + + if (io->io_hdr.flags & CTL_FLAG_STATUS_SENT) + entry->cmd_flags |= CTL_OOACMD_FLAG_STATUS_SENT; } mtx_unlock(&lun->lun_lock); } Modified: head/sys/cam/ctl/ctl_ioctl.h ============================================================================== --- head/sys/cam/ctl/ctl_ioctl.h Fri May 29 10:37:42 2020 (r361624) +++ head/sys/cam/ctl/ctl_ioctl.h Fri May 29 13:07:52 2020 (r361625) @@ -247,7 +247,9 @@ typedef enum { CTL_OOACMD_FLAG_BLOCKED = 0x02, CTL_OOACMD_FLAG_ABORT = 0x04, CTL_OOACMD_FLAG_RTR = 0x08, - CTL_OOACMD_FLAG_DMA_QUEUED = 0x10 + CTL_OOACMD_FLAG_DMA_QUEUED = 0x10, + CTL_OOACMD_FLAG_STATUS_QUEUED = 0x20, + CTL_OOACMD_FLAG_STATUS_SENT = 0x40 } ctl_ooa_cmd_flags; struct ctl_ooa_entry { Modified: head/usr.sbin/ctladm/ctladm.c ============================================================================== --- head/usr.sbin/ctladm/ctladm.c Fri May 29 10:37:42 2020 (r361624) +++ head/usr.sbin/ctladm/ctladm.c Fri May 29 13:07:52 2020 (r361625) @@ -336,17 +336,20 @@ retry: if (ts.tv_nsec > 0) cmd_latency += ts.tv_nsec / 1000000; - fprintf(stdout, "LUN %jd tag 0x%04x%s%s%s%s%s: %s. CDB: %s " + fprintf(stdout, "LUN %jd tag 0x%04x%s%s%s%s%s%s%s: %s. CDB: %s " "(%0.0Lf ms)\n", (intmax_t)entry->lun_num, entry->tag_num, (entry->cmd_flags & CTL_OOACMD_FLAG_BLOCKED) ? " BLOCKED" : "", - (entry->cmd_flags & CTL_OOACMD_FLAG_DMA) ? " DMA" : "", + (entry->cmd_flags & CTL_OOACMD_FLAG_RTR) ? " RTR" :"", (entry->cmd_flags & CTL_OOACMD_FLAG_DMA_QUEUED) ? " DMAQUEUED" : "", + (entry->cmd_flags & CTL_OOACMD_FLAG_DMA) ? " DMA" : "", + (entry->cmd_flags & CTL_OOACMD_FLAG_STATUS_QUEUED) ? + " STATUSQUEUED" : "", + (entry->cmd_flags & CTL_OOACMD_FLAG_STATUS_SENT) ? " STATUS" : "", (entry->cmd_flags & CTL_OOACMD_FLAG_ABORT) ? " ABORT" : "", - (entry->cmd_flags & CTL_OOACMD_FLAG_RTR) ? " RTR" :"", scsi_op_desc(entry->cdb[0], NULL), scsi_cdb_string(entry->cdb, cdb_str, sizeof(cdb_str)), cmd_latency); From owner-svn-src-all@freebsd.org Fri May 29 14:45:39 2020 Return-Path: Delivered-To: svn-src-all@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 C08D833A8E1; Fri, 29 May 2020 14:45:39 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from smtp.freebsd.org (smtp.freebsd.org [96.47.72.83]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "smtp.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 49YS6W4ktmz3b7f; Fri, 29 May 2020 14:45:39 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from John-Baldwins-MacBook-Pro-274.local (unknown [IPv6:2601:648:8203:2990:fd7f:2aba:130e:f5d7]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) (Authenticated sender: jhb) by smtp.freebsd.org (Postfix) with ESMTPSA id 1D4AE10486; Fri, 29 May 2020 14:45:39 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Subject: Re: svn commit: r361583 - head/sys/crypto/aesni To: =?UTF-8?Q?Kornel_Dul=c4=99ba?= Cc: Marcin Wojtas , src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org References: <202005280913.04S9DKWv013795@repo.freebsd.org> <9fdb00be-00e0-6aff-51ad-7a84b4215a4e@FreeBSD.org> From: John Baldwin Autocrypt: addr=jhb@FreeBSD.org; keydata= mQGiBETQ+XcRBADMFybiq69u+fJRy/0wzqTNS8jFfWaBTs5/OfcV7wWezVmf9sgwn8TW0Dk0 c9MBl0pz+H01dA2ZSGZ5fXlmFIsee1WEzqeJzpiwd/pejPgSzXB9ijbLHZ2/E0jhGBcVy5Yo /Tw5+U/+laeYKu2xb0XPvM0zMNls1ah5OnP9a6Ql6wCgupaoMySb7DXm2LHD1Z9jTsHcAQMD /1jzh2BoHriy/Q2s4KzzjVp/mQO5DSm2z14BvbQRcXU48oAosHA1u3Wrov6LfPY+0U1tG47X 1BGfnQH+rNAaH0livoSBQ0IPI/8WfIW7ub4qV6HYwWKVqkDkqwcpmGNDbz3gfaDht6nsie5Z pcuCcul4M9CW7Md6zzyvktjnbz61BADGDCopfZC4of0Z3Ka0u8Wik6UJOuqShBt1WcFS8ya1 oB4rc4tXfSHyMF63aPUBMxHR5DXeH+EO2edoSwViDMqWk1jTnYza51rbGY+pebLQOVOxAY7k do5Ordl3wklBPMVEPWoZ61SdbcjhHVwaC5zfiskcxj5wwXd2E9qYlBqRg7QeSm9obiBCYWxk d2luIDxqaGJARnJlZUJTRC5vcmc+iGAEExECACAFAkTQ+awCGwMGCwkIBwMCBBUCCAMEFgID AQIeAQIXgAAKCRBy3lIGd+N/BI6RAJ9S97fvbME+3hxzE3JUyUZ6vTewDACdE1stFuSfqMvM jomvZdYxIYyTUpC5Ag0ERND5ghAIAPwsO0B7BL+bz8sLlLoQktGxXwXQfS5cInvL17Dsgnr3 1AKa94j9EnXQyPEj7u0d+LmEe6CGEGDh1OcGFTMVrof2ZzkSy4+FkZwMKJpTiqeaShMh+Goj XlwIMDxyADYvBIg3eN5YdFKaPQpfgSqhT+7El7w+wSZZD8pPQuLAnie5iz9C8iKy4/cMSOrH YUK/tO+Nhw8Jjlw94Ik0T80iEhI2t+XBVjwdfjbq3HrJ0ehqdBwukyeJRYKmbn298KOFQVHO EVbHA4rF/37jzaMadK43FgJ0SAhPPF5l4l89z5oPu0b/+5e2inA3b8J3iGZxywjM+Csq1tqz hltEc7Q+E08AAwUIAL+15XH8bPbjNJdVyg2CMl10JNW2wWg2Q6qdljeaRqeR6zFus7EZTwtX sNzs5bP8y51PSUDJbeiy2RNCNKWFMndM22TZnk3GNG45nQd4OwYK0RZVrikalmJY5Q6m7Z16 4yrZgIXFdKj2t8F+x613/SJW1lIr9/bDp4U9tw0V1g3l2dFtD3p3ZrQ3hpoDtoK70ioIAjjH aIXIAcm3FGZFXy503DOA0KaTWwvOVdYCFLm3zWuSOmrX/GsEc7ovasOWwjPn878qVjbUKWwx Q4QkF4OhUV9zPtf9tDSAZ3x7QSwoKbCoRCZ/xbyTUPyQ1VvNy/mYrBcYlzHodsaqUDjHuW+I SQQYEQIACQUCRND5ggIbDAAKCRBy3lIGd+N/BCO8AJ9j1dWVQWxw/YdTbEyrRKOY8YZNwwCf afMAg8QvmOWnHx3wl8WslCaXaE8= Message-ID: Date: Fri, 29 May 2020 07:45:37 -0700 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:68.0) Gecko/20100101 Thunderbird/68.6.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2020 14:45:39 -0000 On 5/29/20 12:46 AM, Kornel DulÄ™ba wrote: > On Thu, May 28, 2020 at 8:30 PM John Baldwin wrote: > >> On 5/28/20 2:13 AM, Marcin Wojtas wrote: >>> Author: mw >>> Date: Thu May 28 09:13:20 2020 >>> New Revision: 361583 >>> URL: https://svnweb.freebsd.org/changeset/base/361583 >>> >>> Log: >>> Change return types of hash update functions in SHA-NI >>> >>> r359374 introduced crypto_apply function which takes as argument a >> function pointer >>> that is expected to return an int, however aesni hash update functions >>> return void. >>> Because of that the function pointer passed was simply cast with >>> its return value changed. >>> This resulted in undefined behavior, in particular when mbuf is used, >> (ipsec) >>> m_apply checks return value of function pointer passed to it >>> and in our case bogusly fails after calculating hash of the first mbuf >>> in chain. >>> Fix it by changing signatures of sha update routines in aesni and >>> dropping the casts. >> >> Hmm, I missed one nit in the review. r359374 didn't introduce >> crypto_apply, it just changed some of the arguments arguments (crp >> instead of crp_buf and crp_flags). This fix needs to be MFC'd to 12 >> as well since the issue with the return type is also present there. >> >> -- >> John Baldwin >> > > Whoops, I should have read the diff more carefully. > Before debugging I did some bisecting and found r359374 as the culprit. > In r359374 return types of intel_sha256_update and intel_sha1_update were > changed to void which is the root cause. > SHA-NI on stable/12 should work just fine right now. > Sorry for the noise. Hmm, I did change the return types, oof. Thanks for tracking this down. -- John Baldwin From owner-svn-src-all@freebsd.org Fri May 29 14:46:39 2020 Return-Path: Delivered-To: svn-src-all@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 8983D33AD58; Fri, 29 May 2020 14:46:39 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from smtp.freebsd.org (smtp.freebsd.org [96.47.72.83]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "smtp.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 49YS7g2k43z3bVH; Fri, 29 May 2020 14:46:39 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from John-Baldwins-MacBook-Pro-274.local (unknown [IPv6:2601:648:8203:2990:fd7f:2aba:130e:f5d7]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) (Authenticated sender: jhb) by smtp.freebsd.org (Postfix) with ESMTPSA id D9B462FCB0; Fri, 29 May 2020 14:46:38 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Subject: Re: svn commit: r361481 - in head: share/man/man9 sys/crypto/ccp sys/dev/cxgbe/crypto sys/dev/hifn sys/dev/safe sys/geom/eli sys/kern sys/kgssapi/krb5 sys/netipsec sys/opencrypto sys/sys To: Mateusz Guzik Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org References: <202005252212.04PMC4qo002298@repo.freebsd.org> From: John Baldwin Autocrypt: addr=jhb@FreeBSD.org; keydata= mQGiBETQ+XcRBADMFybiq69u+fJRy/0wzqTNS8jFfWaBTs5/OfcV7wWezVmf9sgwn8TW0Dk0 c9MBl0pz+H01dA2ZSGZ5fXlmFIsee1WEzqeJzpiwd/pejPgSzXB9ijbLHZ2/E0jhGBcVy5Yo /Tw5+U/+laeYKu2xb0XPvM0zMNls1ah5OnP9a6Ql6wCgupaoMySb7DXm2LHD1Z9jTsHcAQMD /1jzh2BoHriy/Q2s4KzzjVp/mQO5DSm2z14BvbQRcXU48oAosHA1u3Wrov6LfPY+0U1tG47X 1BGfnQH+rNAaH0livoSBQ0IPI/8WfIW7ub4qV6HYwWKVqkDkqwcpmGNDbz3gfaDht6nsie5Z pcuCcul4M9CW7Md6zzyvktjnbz61BADGDCopfZC4of0Z3Ka0u8Wik6UJOuqShBt1WcFS8ya1 oB4rc4tXfSHyMF63aPUBMxHR5DXeH+EO2edoSwViDMqWk1jTnYza51rbGY+pebLQOVOxAY7k do5Ordl3wklBPMVEPWoZ61SdbcjhHVwaC5zfiskcxj5wwXd2E9qYlBqRg7QeSm9obiBCYWxk d2luIDxqaGJARnJlZUJTRC5vcmc+iGAEExECACAFAkTQ+awCGwMGCwkIBwMCBBUCCAMEFgID AQIeAQIXgAAKCRBy3lIGd+N/BI6RAJ9S97fvbME+3hxzE3JUyUZ6vTewDACdE1stFuSfqMvM jomvZdYxIYyTUpC5Ag0ERND5ghAIAPwsO0B7BL+bz8sLlLoQktGxXwXQfS5cInvL17Dsgnr3 1AKa94j9EnXQyPEj7u0d+LmEe6CGEGDh1OcGFTMVrof2ZzkSy4+FkZwMKJpTiqeaShMh+Goj XlwIMDxyADYvBIg3eN5YdFKaPQpfgSqhT+7El7w+wSZZD8pPQuLAnie5iz9C8iKy4/cMSOrH YUK/tO+Nhw8Jjlw94Ik0T80iEhI2t+XBVjwdfjbq3HrJ0ehqdBwukyeJRYKmbn298KOFQVHO EVbHA4rF/37jzaMadK43FgJ0SAhPPF5l4l89z5oPu0b/+5e2inA3b8J3iGZxywjM+Csq1tqz hltEc7Q+E08AAwUIAL+15XH8bPbjNJdVyg2CMl10JNW2wWg2Q6qdljeaRqeR6zFus7EZTwtX sNzs5bP8y51PSUDJbeiy2RNCNKWFMndM22TZnk3GNG45nQd4OwYK0RZVrikalmJY5Q6m7Z16 4yrZgIXFdKj2t8F+x613/SJW1lIr9/bDp4U9tw0V1g3l2dFtD3p3ZrQ3hpoDtoK70ioIAjjH aIXIAcm3FGZFXy503DOA0KaTWwvOVdYCFLm3zWuSOmrX/GsEc7ovasOWwjPn878qVjbUKWwx Q4QkF4OhUV9zPtf9tDSAZ3x7QSwoKbCoRCZ/xbyTUPyQ1VvNy/mYrBcYlzHodsaqUDjHuW+I SQQYEQIACQUCRND5ggIbDAAKCRBy3lIGd+N/BCO8AJ9j1dWVQWxw/YdTbEyrRKOY8YZNwwCf afMAg8QvmOWnHx3wl8WslCaXaE8= Message-ID: <1617a890-777b-f557-bb11-3f2f82e89280@FreeBSD.org> Date: Fri, 29 May 2020 07:46:37 -0700 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:68.0) Gecko/20100101 Thunderbird/68.6.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2020 14:46:39 -0000 On 5/29/20 1:34 AM, Mateusz Guzik wrote: > This gives me tinderbox failures with mips: > > _.mips.XLP64 > > /usr/src/sys/mips/nlm/dev/sec/nlmseclib.c:113:10: error: enumeration > value 'CRYPTO_BUF_NONE' not handled in switch [-Werror,-Wswitch] > switch (crp->crp_buf.cb_type) { > > _.mips.OCTEON1 > _.mips.ERL > > /usr/src/sys/mips/cavium/cryptocteon/cryptocteon.c:298:10: error: > enumeration values 'CRYPTO_BUF_NONE' and 'CRYPTO_BUF_CONTIG' not > handled in switch [-Werror,-Wswitch] > switch (crp->crp_buf.cb_type) { Hmm, I got warnings when I built those but not errors. I'll fix. -- John Baldwin From owner-svn-src-all@freebsd.org Fri May 29 14:49:10 2020 Return-Path: Delivered-To: svn-src-all@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 BA41933A8F7; Fri, 29 May 2020 14:49:10 +0000 (UTC) (envelope-from kevans@freebsd.org) Received: from smtp.freebsd.org (smtp.freebsd.org [IPv6:2610:1c1:1:606c::24b:4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "smtp.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 49YSBZ4Z1lz3bYn; Fri, 29 May 2020 14:49:10 +0000 (UTC) (envelope-from kevans@freebsd.org) Received: from mail-qv1-f54.google.com (mail-qv1-f54.google.com [209.85.219.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "GTS CA 1O1" (verified OK)) (Authenticated sender: kevans) by smtp.freebsd.org (Postfix) with ESMTPSA id 92D3D10233; Fri, 29 May 2020 14:49:10 +0000 (UTC) (envelope-from kevans@freebsd.org) Received: by mail-qv1-f54.google.com with SMTP id p15so1154650qvr.9; Fri, 29 May 2020 07:49:10 -0700 (PDT) X-Gm-Message-State: AOAM533LTXbhZEEoy+LMjd8pI5Ed7ezDH7DuDZqYowoE5Bl+O8B6dpsl IHeP4V0pYefik5RcxJ5dZoxO7lS+BZbyMpUE4NI= X-Google-Smtp-Source: ABdhPJxE6jIdwSe3Rf83oVShRmjdoWRJ91/hmkwQZOIUEfNjtbFJq4NRZWn7Tw0PdtLoajc3aoKzZ+CKMnZnUnSHW2Y= X-Received: by 2002:a0c:ba22:: with SMTP id w34mr8424573qvf.129.1590763750039; Fri, 29 May 2020 07:49:10 -0700 (PDT) MIME-Version: 1.0 References: <202005201103.04KB3xTp013965@repo.freebsd.org> In-Reply-To: From: Kyle Evans Date: Fri, 29 May 2020 09:48:58 -0500 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: svn commit: r361275 - in head/sys: conf dev/hyperv/hvsock dev/hyperv/include dev/hyperv/vmbus modules/hyperv modules/hyperv/hvsock sys To: Wei Hu Cc: src-committers , svn-src-all , svn-src-head Content-Type: text/plain; charset="UTF-8" X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2020 14:49:10 -0000 On Fri, May 22, 2020 at 11:12 AM Kyle Evans wrote: > > On Wed, May 20, 2020 at 6:04 AM Wei Hu wrote: > > > > Author: whu > > Date: Wed May 20 11:03:59 2020 > > New Revision: 361275 > > URL: https://svnweb.freebsd.org/changeset/base/361275 > > > > Log: > > HyperV socket implementation for FreeBSD > > > > This change adds Hyper-V socket feature in FreeBSD. New socket address > > family AF_HYPERV and its kernel support are added. > > > > [... snip ...] > > +void > > +hvs_trans_init(void) > > +{ > > + /* Skip initialization of globals for non-default instances. */ > > + if (!IS_DEFAULT_VNET(curvnet)) > > + return; > > + > > + if (vm_guest != VM_GUEST_HV) > > + return; > > + > > + HVSOCK_DBG(HVSOCK_DBG_VERBOSE, > > + "%s: HyperV Socket hvs_trans_init called\n", __func__); > > + > > + /* Initialize Globals */ > > + previous_auto_bound_port = MAX_PORT; > > + sx_init(&hvs_trans_socks_sx, "hvs_trans_sock_sx"); > > + mtx_init(&hvs_trans_socks_mtx, > > + "hvs_trans_socks_mtx", NULL, MTX_DEF); > > + LIST_INIT(&hvs_trans_bound_socks); > > + LIST_INIT(&hvs_trans_connected_socks); > > +} > > + > > I have a suspicion that all of these should really be per-vnet for > correct semantics with VIMAGE, with the IS_DEFAULT_VNET check earlier > dropped completely. I haven't read around the rest all that much, but > this would at least seem to prevent port re-use by a different vnet, > which is perhaps "good enough" but I think this is something that > should be fixed in the mid-term. > I have a follow-up concern about whether this is actually going to be maintained... it's been a full week with not even an acknowledgement or rebuttal of any of the concerns I've raised, with some of them being completely trivial to address in the short-term. I don't think that we really want this in the tree in its current state given this level of engagement. Thanks, Kyle Evans From owner-svn-src-all@freebsd.org Fri May 29 15:56:45 2020 Return-Path: Delivered-To: svn-src-all@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 0FD7B33C094; Fri, 29 May 2020 15:56:45 +0000 (UTC) (envelope-from adrian@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49YThY00Qvz3yZs; Fri, 29 May 2020 15:56:45 +0000 (UTC) (envelope-from adrian@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 EF1471A399; Fri, 29 May 2020 15:56:44 +0000 (UTC) (envelope-from adrian@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04TFuiPV067776; Fri, 29 May 2020 15:56:44 GMT (envelope-from adrian@FreeBSD.org) Received: (from adrian@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04TFuisS067773; Fri, 29 May 2020 15:56:44 GMT (envelope-from adrian@FreeBSD.org) Message-Id: <202005291556.04TFuisS067773@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: adrian set sender to adrian@FreeBSD.org using -f From: Adrian Chadd Date: Fri, 29 May 2020 15:56:44 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361626 - head/sys/dev/usb/wlan X-SVN-Group: head X-SVN-Commit-Author: adrian X-SVN-Commit-Paths: head/sys/dev/usb/wlan X-SVN-Commit-Revision: 361626 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2020 15:56:45 -0000 Author: adrian Date: Fri May 29 15:56:44 2020 New Revision: 361626 URL: https://svnweb.freebsd.org/changeset/base/361626 Log: [run] Add initial 802.11n support. * Enable self-generated 11n frames * add MCS rates for 1-stream and 2-stream rates; will do 3-stream once the rest of this tests out OK with other people. * Hard-code 1 stream for now * Add A-MPDU RX mbuf tagging * RTS/CTS if doing RTSCTS in HT protmode as well as legacy; they're separate configuration flags * Update the amrr rate index stuff - walk the rates array like others to find the right one - this now works for MCS and CCK/OFDM rates * Add support for atheros fast frames/AMSDU support as we can generate those in net80211. TODO: * HT40 isn't enabled yet * No A-MPDU support just yet; that requires some more firmware research and maybe porting some ath(4) A-MPDU support/tracking into net80211 * Short preamble flags aren't set yet for MCS; need to check the linux driver and see what's going on there * Add 3x3 rates and set tx/rx stream configuration appropriately * More 5GHz testing; I have a 3x3 dual band USB NIC coming soon that'll let me test this. * Figure out why the RX path isn't performing as fast as it could - there's only a single buffer loaded at a time for the receive path in the USB bulk handler and this may not be super useful. Tested: * RT5390 usb, 1x1, RF5370 (2GHz radio), STA mode - A-MSDU TX, A-MPDU RX Submitted by: Ashish Gupta Differential Revision: https://reviews.freebsd.org/D22840 Modified: head/sys/dev/usb/wlan/if_run.c head/sys/dev/usb/wlan/if_runreg.h head/sys/dev/usb/wlan/if_runvar.h Modified: head/sys/dev/usb/wlan/if_run.c ============================================================================== --- head/sys/dev/usb/wlan/if_run.c Fri May 29 13:07:52 2020 (r361625) +++ head/sys/dev/usb/wlan/if_run.c Fri May 29 15:56:44 2020 (r361626) @@ -64,6 +64,9 @@ __FBSDID("$FreeBSD$"); #include #include #include +#ifdef IEEE80211_SUPPORT_SUPERG +#include +#endif #include #include @@ -495,6 +498,9 @@ static void run_adjust_freq_offset(struct run_softc *) static void run_init_locked(struct run_softc *); static void run_stop(void *); static void run_delay(struct run_softc *, u_int); +static void run_update_chw(struct ieee80211com *ic); +static int run_ampdu_enable(struct ieee80211_node *ni, + struct ieee80211_tx_ampdu *tap); static eventhandler_tag run_etag; @@ -506,10 +512,13 @@ static const struct rt2860_rate { uint16_t sp_ack_dur; uint16_t lp_ack_dur; } rt2860_rates[] = { + /* CCK rates (11b) */ { 2, 0, IEEE80211_T_DS, 0, 314, 314 }, { 4, 1, IEEE80211_T_DS, 1, 258, 162 }, { 11, 2, IEEE80211_T_DS, 2, 223, 127 }, { 22, 3, IEEE80211_T_DS, 3, 213, 117 }, + + /* OFDM rates (11a / 11g) */ { 12, 0, IEEE80211_T_OFDM, 4, 60, 60 }, { 18, 1, IEEE80211_T_OFDM, 4, 52, 52 }, { 24, 2, IEEE80211_T_OFDM, 6, 48, 48 }, @@ -517,9 +526,35 @@ static const struct rt2860_rate { { 48, 4, IEEE80211_T_OFDM, 8, 44, 44 }, { 72, 5, IEEE80211_T_OFDM, 8, 40, 40 }, { 96, 6, IEEE80211_T_OFDM, 8, 40, 40 }, - { 108, 7, IEEE80211_T_OFDM, 8, 40, 40 } + { 108, 7, IEEE80211_T_OFDM, 8, 40, 40 }, + + /* MCS - single stream */ + { 0x80, 0, IEEE80211_T_HT, 4, 60, 60 }, + { 0x81, 1, IEEE80211_T_HT, 4, 60, 60 }, + { 0x82, 2, IEEE80211_T_HT, 4, 60, 60 }, + { 0x83, 3, IEEE80211_T_HT, 4, 60, 60 }, + { 0x84, 4, IEEE80211_T_HT, 4, 60, 60 }, + { 0x85, 5, IEEE80211_T_HT, 4, 60, 60 }, + { 0x86, 6, IEEE80211_T_HT, 4, 60, 60 }, + { 0x87, 7, IEEE80211_T_HT, 4, 60, 60 }, + /* MCS - 2 streams */ + { 0x88, 8, IEEE80211_T_HT, 4, 60, 60 }, + { 0x89, 9, IEEE80211_T_HT, 4, 60, 60 }, + { 0x8a, 10, IEEE80211_T_HT, 4, 60, 60 }, + { 0x8b, 11, IEEE80211_T_HT, 4, 60, 60 }, + { 0x8c, 12, IEEE80211_T_HT, 4, 60, 60 }, + { 0x8d, 13, IEEE80211_T_HT, 4, 60, 60 }, + { 0x8e, 14, IEEE80211_T_HT, 4, 60, 60 }, + { 0x8f, 15, IEEE80211_T_HT, 4, 60, 60 }, }; +/* These are indexes into the above rt2860_rates[] array */ +#define RT2860_RIDX_CCK1 0 +#define RT2860_RIDX_CCK11 3 +#define RT2860_RIDX_OFDM6 4 +#define RT2860_RIDX_MCS0 12 +#define RT2860_RIDX_MAX 28 + static const struct { uint16_t reg; uint32_t val; @@ -807,9 +842,25 @@ run_attach(device_t self) IEEE80211_C_MBSS | IEEE80211_C_SHPREAMBLE | /* short preamble supported */ IEEE80211_C_SHSLOT | /* short slot time supported */ + IEEE80211_C_SWAMSDUTX | /* Do software A-MSDU TX */ + IEEE80211_C_FF | /* Atheros fast-frames */ IEEE80211_C_WME | /* WME */ IEEE80211_C_WPA; /* WPA1|WPA2(RSN) */ + ic->ic_htcaps = + IEEE80211_HTC_HT | + IEEE80211_HTC_AMPDU | + IEEE80211_HTC_AMSDU | + IEEE80211_HTCAP_MAXAMSDU_3839 | + IEEE80211_HTCAP_SMPS_OFF; + + /* + * For now, just do 1 stream. Later on we'll figure out + * how many tx/rx streams a particular NIC supports. + */ + ic->ic_rxstream = 1; + ic->ic_txstream = 1; + ic->ic_cryptocaps = IEEE80211_CRYPTO_WEP | IEEE80211_CRYPTO_AES_CCM | @@ -839,6 +890,8 @@ run_attach(device_t self) ic->ic_vap_delete = run_vap_delete; ic->ic_transmit = run_transmit; ic->ic_parent = run_parent; + ic->ic_update_chw = run_update_chw; + ic->ic_ampdu_enable = run_ampdu_enable; ieee80211_radiotap_attach(ic, &sc->sc_txtap.wt_ihdr, sizeof(sc->sc_txtap), @@ -974,6 +1027,10 @@ run_vap_create(struct ieee80211com *ic, const char nam vap->iv_update_beacon = run_update_beacon; vap->iv_max_aid = RT2870_WCID_MAX; + + vap->iv_ampdu_rxmax = IEEE80211_HTCAP_MAXRXAMPDU_64K; + vap->iv_ampdu_density = IEEE80211_HTCAP_MPDUDENSITY_2; + /* * To delete the right key from h/w, we need wcid. * Luckily, there is unused space in ieee80211_key{}, wk_pad, @@ -2059,11 +2116,13 @@ run_media_change(struct ifnet *ifp) struct ieee80211_node *ni; struct run_node *rn; + /* XXX TODO: methodize with MCS rates */ rate = ic->ic_sup_rates[ic->ic_curmode]. rs_rates[tp->ucastrate] & IEEE80211_RATE_VAL; for (ridx = 0; ridx < RT2860_RIDX_MAX; ridx++) if (rt2860_rates[ridx].rate == rate) break; + ni = ieee80211_ref_node(vap->iv_bss); rn = RUN_NODE(ni); rn->fix_ridx = ridx; @@ -2605,7 +2664,7 @@ run_iter_func(void *arg, struct ieee80211_node *ni) struct run_node *rn = RUN_NODE(ni); union run_stats sta[2]; uint16_t (*wstat)[3]; - int error; + int error, ridx; RUN_LOCK(sc); @@ -2656,12 +2715,17 @@ run_iter_func(void *arg, struct ieee80211_node *ni) } ieee80211_ratectl_tx_update(vap, txs); - rn->amrr_ridx = ieee80211_ratectl_rate(ni, NULL, 0); + ieee80211_ratectl_rate(ni, NULL, 0); + /* XXX TODO: methodize with MCS rates */ + for (ridx = 0; ridx < RT2860_RIDX_MAX; ridx++) + if (rt2860_rates[ridx].rate == ni->ni_txrate) + break; + rn->amrr_ridx = ridx; fail: RUN_UNLOCK(sc); - RUN_DPRINTF(sc, RUN_DEBUG_RATE, "ridx=%d\n", rn->amrr_ridx); + RUN_DPRINTF(sc, RUN_DEBUG_RATE, "rate=%d, ridx=%d\n", ni->ni_txrate, rn->amrr_ridx); } static void @@ -2684,14 +2748,12 @@ static void run_newassoc(struct ieee80211_node *ni, int isnew) { struct run_node *rn = RUN_NODE(ni); - struct ieee80211_rateset *rs = &ni->ni_rates; struct ieee80211vap *vap = ni->ni_vap; struct ieee80211com *ic = vap->iv_ic; struct run_softc *sc = ic->ic_softc; uint8_t rate; uint8_t ridx; uint8_t wcid; - int i, j; wcid = (vap->iv_opmode == IEEE80211_M_STA) ? 1 : RUN_AID2WCID(ni->ni_associd); @@ -2721,31 +2783,8 @@ run_newassoc(struct ieee80211_node *ni, int isnew) "new assoc isnew=%d associd=%x addr=%s\n", isnew, ni->ni_associd, ether_sprintf(ni->ni_macaddr)); - for (i = 0; i < rs->rs_nrates; i++) { - rate = rs->rs_rates[i] & IEEE80211_RATE_VAL; - /* convert 802.11 rate to hardware rate index */ - for (ridx = 0; ridx < RT2860_RIDX_MAX; ridx++) - if (rt2860_rates[ridx].rate == rate) - break; - rn->ridx[i] = ridx; - /* determine rate of control response frames */ - for (j = i; j >= 0; j--) { - if ((rs->rs_rates[j] & IEEE80211_RATE_BASIC) && - rt2860_rates[rn->ridx[i]].phy == - rt2860_rates[rn->ridx[j]].phy) - break; - } - if (j >= 0) { - rn->ctl_ridx[i] = rn->ridx[j]; - } else { - /* no basic rate found, use mandatory one */ - rn->ctl_ridx[i] = rt2860_rates[ridx].ctl_ridx; - } - RUN_DPRINTF(sc, RUN_DEBUG_STATE | RUN_DEBUG_RATE, - "rate=0x%02x ridx=%d ctl_ridx=%d\n", - rs->rs_rates[i], rn->ridx[i], rn->ctl_ridx[i]); - } rate = vap->iv_txparms[ieee80211_chan2mode(ic->ic_curchan)].mgmtrate; + /* XXX TODO: methodize with MCS rates */ for (ridx = 0; ridx < RT2860_RIDX_MAX; ridx++) if (rt2860_rates[ridx].rate == rate) break; @@ -2876,6 +2915,10 @@ run_rx_frame(struct run_softc *sc, struct mbuf *m, uin } else ni = NULL; + if(ni && ni->ni_flags & IEEE80211_NODE_HT) { + m->m_flags |= M_AMPDU; + } + if (__predict_false(flags & RT2860_RX_MICERR)) { /* report MIC failures to net80211 for TKIP */ if (ni != NULL) @@ -3089,6 +3132,9 @@ tr_setup: /* make sure we free the source buffer, if any */ m_freem(m); +#ifdef IEEE80211_SUPPORT_SUPERG + ieee80211_ff_age_all(ic, 100); +#endif RUN_LOCK(sc); } @@ -3234,6 +3280,15 @@ tr_setup: } break; } +#ifdef IEEE80211_SUPPORT_SUPERG + /* XXX TODO: make this deferred rather than unlock/relock */ + /* XXX TODO: should only do the QoS AC this belongs to */ + if (pq->tx_nfree >= RUN_TX_RING_COUNT) { + RUN_UNLOCK(sc); + ieee80211_ff_flush_all(ic); + RUN_LOCK(sc); + } +#endif } static void @@ -3318,15 +3373,21 @@ run_set_tx_desc(struct run_softc *sc, struct run_tx_da if (ridx != RT2860_RIDX_CCK1 && (ic->ic_flags & IEEE80211_F_SHPREAMBLE)) mcs |= RT2860_PHY_SHPRE; - } else + } else if (rt2860_rates[ridx].phy == IEEE80211_T_OFDM) { mcs |= RT2860_PHY_OFDM; + } else if (rt2860_rates[ridx].phy == IEEE80211_T_HT) { + /* XXX TODO: [adrian] set short preamble for MCS? */ + mcs |= RT2860_PHY_HT; /* Mixed, not greenfield */ + } txwi->phy = htole16(mcs); /* check if RTS/CTS or CTS-to-self protection is required */ if (!IEEE80211_IS_MULTICAST(wh->i_addr1) && - (m->m_pkthdr.len + IEEE80211_CRC_LEN > vap->iv_rtsthreshold || + ((m->m_pkthdr.len + IEEE80211_CRC_LEN > vap->iv_rtsthreshold) || ((ic->ic_flags & IEEE80211_F_USEPROT) && - rt2860_rates[ridx].phy == IEEE80211_T_OFDM))) + rt2860_rates[ridx].phy == IEEE80211_T_OFDM) || + ((ic->ic_htprotmode == IEEE80211_PROT_RTSCTS) && + rt2860_rates[ridx].phy == IEEE80211_T_HT))) txwi->txop |= RT2860_TX_TXOP_HT; else txwi->txop |= RT2860_TX_TXOP_BACKOFF; @@ -3390,7 +3451,8 @@ run_tx(struct run_softc *sc, struct mbuf *m, struct ie /* pickup a rate index */ if (IEEE80211_IS_MULTICAST(wh->i_addr1) || type != IEEE80211_FC0_TYPE_DATA || m->m_flags & M_EAPOL) { - ridx = (ic->ic_curmode == IEEE80211_MODE_11A) ? + /* XXX TODO: methodize for 11n; use MCS0 for 11NA/11NG */ + ridx = (ic->ic_curmode == IEEE80211_MODE_11A || ic->ic_curmode == IEEE80211_MODE_11NA) ? RT2860_RIDX_OFDM6 : RT2860_RIDX_CCK1; ctl_ridx = rt2860_rates[ridx].ctl_ridx; } else { @@ -3609,6 +3671,7 @@ run_sendprot(struct run_softc *sc, data->m = mprot; data->ni = ieee80211_ref_node(ni); + /* XXX TODO: methodize with MCS rates */ for (ridx = 0; ridx < RT2860_RIDX_MAX; ridx++) if (rt2860_rates[ridx].rate == protrate) break; @@ -3684,6 +3747,7 @@ run_tx_param(struct run_softc *sc, struct mbuf *m, str data->m = m; data->ni = ni; + /* XXX TODO: methodize with MCS rates */ for (ridx = 0; ridx < RT2860_RIDX_MAX; ridx++) if (rt2860_rates[ridx].rate == rate) break; @@ -4856,12 +4920,17 @@ run_getradiocaps(struct ieee80211com *ic, memset(bands, 0, sizeof(bands)); setbit(bands, IEEE80211_MODE_11B); setbit(bands, IEEE80211_MODE_11G); + setbit(bands, IEEE80211_MODE_11NG); + + /* Note: for now, only support HT20 channels */ ieee80211_add_channels_default_2ghz(chans, maxchans, nchans, bands, 0); if (sc->rf_rev == RT2860_RF_2750 || sc->rf_rev == RT2860_RF_2850 || sc->rf_rev == RT3070_RF_3052 || sc->rf_rev == RT3593_RF_3053 || sc->rf_rev == RT5592_RF_5592) { setbit(bands, IEEE80211_MODE_11A); + setbit(bands, IEEE80211_MODE_11NA); + /* Note: for now, only support HT20 channels */ ieee80211_add_channel_list_5ghz(chans, maxchans, nchans, run_chan_5ghz, nitems(run_chan_5ghz), bands, 0); } @@ -6205,6 +6274,10 @@ run_init_locked(struct run_softc *sc) /* turn radio LED on */ run_set_leds(sc, RT2860_LED_RADIO); + /* Set up AUTO_RSP_CFG register for auto response */ + run_write(sc, RT2860_AUTO_RSP_CFG, RT2860_AUTO_RSP_EN | + RT2860_BAC_ACKPOLICY_EN | RT2860_CTS_40M_MODE_EN); + sc->sc_flags |= RUN_RUNNING; sc->cmdq_run = RUN_CMDQ_GO; @@ -6309,6 +6382,22 @@ run_delay(struct run_softc *sc, u_int ms) { usb_pause_mtx(mtx_owned(&sc->sc_mtx) ? &sc->sc_mtx : NULL, USB_MS_TO_TICKS(ms)); +} + + +static void +run_update_chw(struct ieee80211com *ic) +{ + + printf("%s: TODO\n", __func__); +} + +static int +run_ampdu_enable(struct ieee80211_node *ni, struct ieee80211_tx_ampdu *tap) +{ + + /* For now, no A-MPDU TX support in the driver */ + return (0); } static device_method_t run_methods[] = { Modified: head/sys/dev/usb/wlan/if_runreg.h ============================================================================== --- head/sys/dev/usb/wlan/if_runreg.h Fri May 29 13:07:52 2020 (r361625) +++ head/sys/dev/usb/wlan/if_runreg.h Fri May 29 15:56:44 2020 (r361626) @@ -955,11 +955,6 @@ struct rt2860_rxwi { #define RT5390_EEPROM_IQ_GAIN_CAL_TX1_CH140_TO_CH165_5GHZ 0x14e #define RT5390_EEPROM_IQ_PHASE_CAL_TX1_CH140_TO_CH165_5GHZ 0x14f -#define RT2860_RIDX_CCK1 0 -#define RT2860_RIDX_CCK11 3 -#define RT2860_RIDX_OFDM6 4 -#define RT2860_RIDX_MAX 12 - /* * EEPROM access macro. */ Modified: head/sys/dev/usb/wlan/if_runvar.h ============================================================================== --- head/sys/dev/usb/wlan/if_runvar.h Fri May 29 13:07:52 2020 (r361625) +++ head/sys/dev/usb/wlan/if_runvar.h Fri May 29 15:56:44 2020 (r361626) @@ -97,8 +97,6 @@ STAILQ_HEAD(run_tx_data_head, run_tx_data); struct run_node { struct ieee80211_node ni; - uint8_t ridx[IEEE80211_RATE_MAXSIZE]; - uint8_t ctl_ridx[IEEE80211_RATE_MAXSIZE]; uint8_t amrr_ridx; uint8_t mgt_ridx; uint8_t fix_ridx; From owner-svn-src-all@freebsd.org Fri May 29 17:08:13 2020 Return-Path: Delivered-To: svn-src-all@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 5CBCC33D23D; Fri, 29 May 2020 17:08:13 +0000 (UTC) (envelope-from weh@microsoft.com) Received: from APC01-HK2-obe.outbound.protection.outlook.com (mail-hk2apc01on070a.outbound.protection.outlook.com [IPv6:2a01:111:f400:febc::70a]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mail.protection.outlook.com", Issuer "GlobalSign Organization Validation CA - SHA256 - G3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 49YWH04jrvz44wc; Fri, 29 May 2020 17:08:12 +0000 (UTC) (envelope-from weh@microsoft.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=aPSAifoskPuet+QImEIMHSXMec/tdPJGgUJ4MwsytYq+U+SKam7t//vA5jL9joSKJY5jLIirHFK4TZVNtU1puokJ77gXM6ZZMONAYTxXRZGdAJqu2O7qrQ8rrMzXIcPNWuz/Hmgz1kok2NAb12CxlIVckwYTFTfvwqz3exGDgtXbnl0+aggTYyIy3sc+jeHDR/2F+EO9Onsao69d8MsP2r57gYaGH7XJ/Ws1Kpp7B/KcfDyndh90qsy9OGRH7PztlnlEgxTcX/b8+mFBvwMCbYG0KcHCF/QPpggj4Ek2VpHSx+ToizRS5uY3tuJRMLMN9nEuZDcpcFq0/KtZ9DIKbQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=lSclTmZHYuSGgJupA3JAUUGbNEHTrbsWPILCi1n+I5I=; b=bIvrj0F4qTwhfFXiIVkzHVy4NBG0548ap2t3RS07n1uBcaB0Hw7J2TVZzoS/q3yqR8cGZEP+72jq2nESgO7G/h6af2lOmEBSpYWHmEMPLlKDAYbdz3S5UPcddOd3/tWspgN4vWrxI4Vy2Gv4W8QUcUgoQ6fgbkIfBbnfUZ+fVMqDAVfryxmGst3Mu2J9M4MGoNJthNALLZu9LIvM7elP/aHAptdaiDqEtsz9hSrFg/OdnIAINys1CfED+OH5BzgJeynb3DHlrzkkDjD8OYof2qAD+Vrlp/WXWF22SfW4NSFLLjjU2/+2uBIxHFg2SaEsfE57iHaJ9GeH5Vt7EJGaKg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=microsoft.com; dmarc=pass action=none header.from=microsoft.com; dkim=pass header.d=microsoft.com; arc=none Received: from SG2P153MB0377.APCP153.PROD.OUTLOOK.COM (2603:1096:0:1::15) by SG2P153MB0232.APCP153.PROD.OUTLOOK.COM (2603:1096:4:8c::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3066.9; Fri, 29 May 2020 17:08:07 +0000 Received: from SG2P153MB0377.APCP153.PROD.OUTLOOK.COM ([fe80::798e:2eb8:f18e:7a0]) by SG2P153MB0377.APCP153.PROD.OUTLOOK.COM ([fe80::798e:2eb8:f18e:7a0%8]) with mapi id 15.20.3066.010; Fri, 29 May 2020 17:08:07 +0000 From: Wei Hu To: Kyle Evans CC: src-committers , svn-src-all , svn-src-head Subject: RE: svn commit: r361275 - in head/sys: conf dev/hyperv/hvsock dev/hyperv/include dev/hyperv/vmbus modules/hyperv modules/hyperv/hvsock sys Thread-Topic: svn commit: r361275 - in head/sys: conf dev/hyperv/hvsock dev/hyperv/include dev/hyperv/vmbus modules/hyperv modules/hyperv/hvsock sys Thread-Index: AQHWLpZljJNzTG7+okeOAs3l3mz20qi0Sl8AgArpBQCAACK3wA== Date: Fri, 29 May 2020 17:08:06 +0000 Message-ID: References: <202005201103.04KB3xTp013965@repo.freebsd.org> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Enabled=true; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_SetDate=2020-05-29T17:08:05Z; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Method=Standard; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Name=Internal; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_SiteId=72f988bf-86f1-41af-91ab-2d7cd011db47; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_ActionId=3179356e-d3c1-4583-8984-f711a8c0dbb8; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_ContentBits=0 x-originating-ip: [2404:f801:9000:1a:6feb::496b] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: d75d2704-4cfe-4d4a-3cff-08d803f2db8e x-ms-traffictypediagnostic: SG2P153MB0232: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-forefront-prvs: 04180B6720 x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: +yvuihojEPtTSiEQYMpdaT23Z/Lvz9H0tqK5u63SI8ifdKiw9/8E0o1jTRFv6Flh4MyBR38Wrr4qNy3lFxfmUFGUrWd2Sgw7Q5UZc/dWfA/A6j6wPB/mJZeET4Y6QBTLG+Ph0zcdO8vJ3IJUTWG6WKxdTJqVMOTsiA3h4f/ROUVwBHynH0KUelrfKym1P5qDs0lRdfz18jGSj6A49qySLCp04KuD7HT4Gmk1obu2NUBToiL8NNVTPtO718wktkchrV+Bdg5WddqSPdvZkixJLgBpbU5e22E+ATGwp5gkVX/n8OG+TQMNi/2TkzF9Pjg656kNngeZrh5abjbXAr4AZg== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SG2P153MB0377.APCP153.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFTY:; SFS:(4636009)(366004)(136003)(376002)(346002)(396003)(39860400002)(76116006)(86362001)(71200400001)(33656002)(9686003)(6506007)(478600001)(186003)(10290500003)(83380400001)(450100002)(6916009)(7696005)(4326008)(82950400001)(5660300002)(8936002)(52536014)(82960400001)(8990500004)(316002)(54906003)(8676002)(2906002)(66556008)(66946007)(55016002)(66446008)(66476007)(64756008); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata: VGfbaKb9lTGoMZ1ZZNvbw7OOoum1pzlK/lqGFGrRcwYBn4yXsbvctiat36dLcQxUhOVHExjCLm0VJP8i5hPeH+D5fMDlYPTZJBd6Q1xuILKV9cP0NnyxsHV3l2e6TH5wB+scS92Y8FgaEUG2Q4zDx2XUwm7uhyA95o/8+7sgMh+p2KMyxY7bMpEfrFk4/POwleDGY36gxYIis17t5lclyxA6MSAkIK8Ka+1RNtVKqfqN9K64P1509URK/TlCnJZrK1td2dTcB7/gz4Q8Z3O8M/LUCl40kiP75NVLinH4z+GVxPdKNMzggonfeKQR+u37zwC/5OEiIy0gmA7Q0iW+xRiUxn+fMQv7iHoct0+V9ncsS79VrnyKTb/2Yl8APqGk6p3Gb6KF4SvW7SA4XDvBniQz249H1Jl6DOO7BQf/FFqt5bIM8bhLCHhBDT9z3BPl4Z+UA+5oGR4MH/fmGzR186u32ZVTQswaarXNI1Hta4J2ip2WHO4JiAilFZmVL8tADjdryPiHQiUMHia8Vf6XvQ== x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: microsoft.com X-MS-Exchange-CrossTenant-Network-Message-Id: d75d2704-4cfe-4d4a-3cff-08d803f2db8e X-MS-Exchange-CrossTenant-originalarrivaltime: 29 May 2020 17:08:06.9204 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 72f988bf-86f1-41af-91ab-2d7cd011db47 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: trxVRY3eA9V2v7whfDUAoYeGFKAzpYVvoA0BSfBzFQsAO0nZH6LKX8s90+HwrYA7LkgWTPdF0u/C/7oQVxiaQA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SG2P153MB0232 X-Rspamd-Queue-Id: 49YWH04jrvz44wc X-Spamd-Bar: ---- X-Spamd-Result: default: False [-4.00 / 15.00]; ASN(0.00)[asn:8075, ipnet:2a01:111:f000::/36, country:US]; REPLY(-4.00)[] X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2020 17:08:13 -0000 DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+IFsuLi4gc25pcCAuLi5dDQo+ ID4gPiArdm9pZA0KPiA+ID4gK2h2c190cmFuc19pbml0KHZvaWQpDQo+ID4gPiArew0KPiA+ID4g KyAgICAgICAvKiBTa2lwIGluaXRpYWxpemF0aW9uIG9mIGdsb2JhbHMgZm9yIG5vbi1kZWZhdWx0 IGluc3RhbmNlcy4gKi8NCj4gPiA+ICsgICAgICAgaWYgKCFJU19ERUZBVUxUX1ZORVQoY3Vydm5l dCkpDQo+ID4gPiArICAgICAgICAgICAgICAgcmV0dXJuOw0KPiA+ID4gKw0KPiA+ID4gKyAgICAg ICBpZiAodm1fZ3Vlc3QgIT0gVk1fR1VFU1RfSFYpDQo+ID4gPiArICAgICAgICAgICAgICAgcmV0 dXJuOw0KPiA+ID4gKw0KPiA+ID4gKyAgICAgICBIVlNPQ0tfREJHKEhWU09DS19EQkdfVkVSQk9T RSwNCj4gPiA+ICsgICAgICAgICAgICIlczogSHlwZXJWIFNvY2tldCBodnNfdHJhbnNfaW5pdCBj YWxsZWRcbiIsIF9fZnVuY19fKTsNCj4gPiA+ICsNCj4gPiA+ICsgICAgICAgLyogSW5pdGlhbGl6 ZSBHbG9iYWxzICovDQo+ID4gPiArICAgICAgIHByZXZpb3VzX2F1dG9fYm91bmRfcG9ydCA9IE1B WF9QT1JUOw0KPiA+ID4gKyAgICAgICBzeF9pbml0KCZodnNfdHJhbnNfc29ja3Nfc3gsICJodnNf dHJhbnNfc29ja19zeCIpOw0KPiA+ID4gKyAgICAgICBtdHhfaW5pdCgmaHZzX3RyYW5zX3NvY2tz X210eCwNCj4gPiA+ICsgICAgICAgICAgICJodnNfdHJhbnNfc29ja3NfbXR4IiwgTlVMTCwgTVRY X0RFRik7DQo+ID4gPiArICAgICAgIExJU1RfSU5JVCgmaHZzX3RyYW5zX2JvdW5kX3NvY2tzKTsN Cj4gPiA+ICsgICAgICAgTElTVF9JTklUKCZodnNfdHJhbnNfY29ubmVjdGVkX3NvY2tzKTsNCj4g PiA+ICt9DQo+ID4gPiArDQo+ID4NCj4gPiBJIGhhdmUgYSBzdXNwaWNpb24gdGhhdCBhbGwgb2Yg dGhlc2Ugc2hvdWxkIHJlYWxseSBiZSBwZXItdm5ldCBmb3INCj4gPiBjb3JyZWN0IHNlbWFudGlj cyB3aXRoIFZJTUFHRSwgd2l0aCB0aGUgSVNfREVGQVVMVF9WTkVUIGNoZWNrIGVhcmxpZXINCj4g PiBkcm9wcGVkIGNvbXBsZXRlbHkuIEkgaGF2ZW4ndCByZWFkIGFyb3VuZCB0aGUgcmVzdCBhbGwg dGhhdCBtdWNoLCBidXQNCj4gPiB0aGlzIHdvdWxkIGF0IGxlYXN0IHNlZW0gdG8gcHJldmVudCBw b3J0IHJlLXVzZSBieSBhIGRpZmZlcmVudCB2bmV0LA0KPiA+IHdoaWNoIGlzIHBlcmhhcHMgImdv b2QgZW5vdWdoIiBidXQgSSB0aGluayB0aGlzIGlzIHNvbWV0aGluZyB0aGF0DQo+ID4gc2hvdWxk IGJlIGZpeGVkIGluIHRoZSBtaWQtdGVybS4NCj4gPg0KPiANCj4gSSBoYXZlIGEgZm9sbG93LXVw IGNvbmNlcm4gYWJvdXQgd2hldGhlciB0aGlzIGlzIGFjdHVhbGx5IGdvaW5nIHRvIGJlDQo+IG1h aW50YWluZWQuLi4gaXQncyBiZWVuIGEgZnVsbCB3ZWVrIHdpdGggbm90IGV2ZW4gYW4gYWNrbm93 bGVkZ2VtZW50IG9yDQo+IHJlYnV0dGFsIG9mIGFueSBvZiB0aGUgY29uY2VybnMgSSd2ZSByYWlz ZWQsIHdpdGggc29tZSBvZiB0aGVtIGJlaW5nIGNvbXBsZXRlbHkNCj4gdHJpdmlhbCB0byBhZGRy ZXNzIGluIHRoZSBzaG9ydC10ZXJtLiBJIGRvbid0IHRoaW5rIHRoYXQgd2UgcmVhbGx5IHdhbnQg dGhpcyBpbiB0aGUNCj4gdHJlZSBpbiBpdHMgY3VycmVudCBzdGF0ZSBnaXZlbiB0aGlzIGxldmVs IG9mIGVuZ2FnZW1lbnQuDQo+IA0KU29ycnkgZm9yIG15IGxhdGUgcmVzcG9uc2UsIEt5bGUuIEkg cmVhZCB5b3VyIGNvbW1lbnRzIGxhc3Qgd2Vlay4gVG8gYmUgaG9uZXN0IEkgYW0NCm5vdCBmYW1p bGlhciB0byBWTkVUIGFuZCBWSU1BR0UsIHNvIEkgZG9uJ3QgcXVpdGUgdW5kZXJzdGFuZC4gSSBn b3QgZGlzdHJhY3RlZA0KaW50byBvdGhlciB3b3JrIHNvIG15IHJlc3BvbnNlIHRvIHRoaXMgd2Fz IGRlbGF5ZWQuDQoNCkRvIHlvdSBtZWFuIHRvIGRyb3AgdGhlc2UgdHdvIGxpbmVzPw0KICAgICAg IGlmICghSVNfREVGQVVMVF9WTkVUKGN1cnZuZXQpKQ0KICAgICAgICAgICAgICAgcmV0dXJuDQpJ IGNvcGllZCB0aGVzZSBmcm9tIG90aGVyIHNvY2tldCBpbml0IGNvZGUuIElmIHRoZXkgYXJlIG5v dCBuZWNlc3NhcnkgSSBjYW4gcmVtb3ZlIHRoZW0uDQoNClRoYW5rcywNCldlaQ0K From owner-svn-src-all@freebsd.org Fri May 29 17:36:55 2020 Return-Path: Delivered-To: svn-src-all@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 6AA0933DA5A; Fri, 29 May 2020 17:36:55 +0000 (UTC) (envelope-from emaste@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49YWw72Ddlz46SP; Fri, 29 May 2020 17:36:55 +0000 (UTC) (envelope-from emaste@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 439241B15B; Fri, 29 May 2020 17:36:55 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04THatDp029843; Fri, 29 May 2020 17:36:55 GMT (envelope-from emaste@FreeBSD.org) Received: (from emaste@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04THat5a029842; Fri, 29 May 2020 17:36:55 GMT (envelope-from emaste@FreeBSD.org) Message-Id: <202005291736.04THat5a029842@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: emaste set sender to emaste@FreeBSD.org using -f From: Ed Maste Date: Fri, 29 May 2020 17:36:55 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361628 - head/share/mk X-SVN-Group: head X-SVN-Commit-Author: emaste X-SVN-Commit-Paths: head/share/mk X-SVN-Commit-Revision: 361628 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2020 17:36:55 -0000 Author: emaste Date: Fri May 29 17:36:54 2020 New Revision: 361628 URL: https://svnweb.freebsd.org/changeset/base/361628 Log: Disable BINUTILS by default on i386 The retirement of obsolete binutils 2.17.50 has been in progress for quite some time. All tools other than GNU as were removed prior to this commit, and it was built only on two archs: i386, installed as /usr/bin/as amd64, installed as /usr/bin/as and as a bootstrap tool The i386 exp-run has completed and failures have been addressed in the individual ports, so disable it there. PR: 233611, 205250 [exp-run] Sponsored by: The FreeBSD Foundation Modified: head/share/mk/src.opts.mk Modified: head/share/mk/src.opts.mk ============================================================================== --- head/share/mk/src.opts.mk Fri May 29 16:15:33 2020 (r361627) +++ head/share/mk/src.opts.mk Fri May 29 17:36:54 2020 (r361628) @@ -290,13 +290,10 @@ __DEFAULT_NO_OPTIONS+=LLVM_TARGET_BPF .if ${__T} == "aarch64" || ${__T:Mriscv*} != "" BROKEN_OPTIONS+=BINUTILS BINUTILS_BOOTSTRAP GDB .endif -# BINUTILS is enabled on x86 to provide as for ports - PR 205250 +# BINUTILS is enabled on amd64 to provide as for ports - PR 205250 # BINUTILS_BOOTSTRAP is needed on amd64 only, for skein_block_asm.s .if ${__T} == "amd64" __DEFAULT_YES_OPTIONS+=BINUTILS BINUTILS_BOOTSTRAP -.elif ${__T} == "i386" -__DEFAULT_YES_OPTIONS+=BINUTILS -__DEFAULT_NO_OPTIONS+=BINUTILS_BOOTSTRAP .else __DEFAULT_NO_OPTIONS+=BINUTILS BINUTILS_BOOTSTRAP .endif From owner-svn-src-all@freebsd.org Fri May 29 17:39:25 2020 Return-Path: Delivered-To: svn-src-all@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 B5EF733DBAB; Fri, 29 May 2020 17:39:25 +0000 (UTC) (envelope-from emaste@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49YWz14TGTz4778; Fri, 29 May 2020 17:39:25 +0000 (UTC) (envelope-from emaste@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 909321B696; Fri, 29 May 2020 17:39:25 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04THdPSd030013; Fri, 29 May 2020 17:39:25 GMT (envelope-from emaste@FreeBSD.org) Received: (from emaste@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04THdP16030012; Fri, 29 May 2020 17:39:25 GMT (envelope-from emaste@FreeBSD.org) Message-Id: <202005291739.04THdP16030012@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: emaste set sender to emaste@FreeBSD.org using -f From: Ed Maste Date: Fri, 29 May 2020 17:39:25 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361629 - head/share/man/man5 X-SVN-Group: head X-SVN-Commit-Author: emaste X-SVN-Commit-Paths: head/share/man/man5 X-SVN-Commit-Revision: 361629 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2020 17:39:25 -0000 Author: emaste Date: Fri May 29 17:39:25 2020 New Revision: 361629 URL: https://svnweb.freebsd.org/changeset/base/361629 Log: regen src.conf.5 after BINUTILS changes Modified: head/share/man/man5/src.conf.5 Modified: head/share/man/man5/src.conf.5 ============================================================================== --- head/share/man/man5/src.conf.5 Fri May 29 17:36:54 2020 (r361628) +++ head/share/man/man5/src.conf.5 Fri May 29 17:39:25 2020 (r361629) @@ -1,6 +1,6 @@ .\" DO NOT EDIT-- this file is @generated by tools/build/options/makeman. .\" $FreeBSD$ -.Dd May 20, 2020 +.Dd May 29, 2020 .Dt SRC.CONF 5 .Os .Sh NAME @@ -189,14 +189,14 @@ as part of the normal system build. .Pp This is a default setting on -arm/armv6, arm/armv7, arm64/aarch64, mips/mips, mips/mips64, powerpc/powerpc, powerpc/powerpc64, riscv/riscv64 and riscv/riscv64sf. +arm/armv6, arm/armv7, arm64/aarch64, i386/i386, mips/mips, mips/mips64, powerpc/powerpc, powerpc/powerpc64, riscv/riscv64 and riscv/riscv64sf. .It Va WITH_BINUTILS Build and install GNU .Xr as 1 as part of the normal system build. .Pp This is a default setting on -amd64/amd64 and i386/i386. +amd64/amd64. .It Va WITHOUT_BINUTILS_BOOTSTRAP Do not build GNU binutils as part of the bootstrap process. From owner-svn-src-all@freebsd.org Fri May 29 17:52:21 2020 Return-Path: Delivered-To: svn-src-all@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 8394033DEC3; Fri, 29 May 2020 17:52:21 +0000 (UTC) (envelope-from mav@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49YXFx2jXFz484S; Fri, 29 May 2020 17:52:21 +0000 (UTC) (envelope-from mav@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 583F41BB24; Fri, 29 May 2020 17:52:21 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04THqL2Y041857; Fri, 29 May 2020 17:52:21 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04THqLJU041856; Fri, 29 May 2020 17:52:21 GMT (envelope-from mav@FreeBSD.org) Message-Id: <202005291752.04THqLJU041856@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Fri, 29 May 2020 17:52:21 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361630 - head/sys/cam/ctl X-SVN-Group: head X-SVN-Commit-Author: mav X-SVN-Commit-Paths: head/sys/cam/ctl X-SVN-Commit-Revision: 361630 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2020 17:52:21 -0000 Author: mav Date: Fri May 29 17:52:20 2020 New Revision: 361630 URL: https://svnweb.freebsd.org/changeset/base/361630 Log: Remove session locking from cfiscsi_pdu_update_cmdsn(). cs_cmdsn can be incremented with single atomic. expcmdsn/maxcmdsn set in cfiscsi_pdu_prepare() based on cs_cmdsn are not required to be updated synchronously, only monotonically, that is achieved with lock there. MFC after: 2 weeks Sponsored by: iXsystems, Inc. Modified: head/sys/cam/ctl/ctl_frontend_iscsi.c Modified: head/sys/cam/ctl/ctl_frontend_iscsi.c ============================================================================== --- head/sys/cam/ctl/ctl_frontend_iscsi.c Fri May 29 17:39:25 2020 (r361629) +++ head/sys/cam/ctl/ctl_frontend_iscsi.c Fri May 29 17:52:20 2020 (r361630) @@ -211,7 +211,7 @@ cfiscsi_pdu_update_cmdsn(const struct icl_pdu *request { const struct iscsi_bhs_scsi_command *bhssc; struct cfiscsi_session *cs; - uint32_t cmdsn, expstatsn; + uint32_t cmdsn, curcmdsn; cs = PDU_SESSION(request); @@ -220,16 +220,20 @@ cfiscsi_pdu_update_cmdsn(const struct icl_pdu *request * The purpose of the timeout is to reset the connection when it stalls; * we don't want this to happen when NOP-In or NOP-Out ends up delayed * in some queue. - * - * XXX: Locking? */ cs->cs_timeout = 0; /* + * Immediate commands carry cmdsn, but it is neither incremented nor + * verified. + */ + if (request->ip_bhs->bhs_opcode & ISCSI_BHS_OPCODE_IMMEDIATE) + return (false); + + /* * Data-Out PDUs don't contain CmdSN. */ - if ((request->ip_bhs->bhs_opcode & ~ISCSI_BHS_OPCODE_IMMEDIATE) == - ISCSI_BHS_OPCODE_SCSI_DATA_OUT) + if (request->ip_bhs->bhs_opcode == ISCSI_BHS_OPCODE_SCSI_DATA_OUT) return (false); /* @@ -237,50 +241,37 @@ cfiscsi_pdu_update_cmdsn(const struct icl_pdu *request * (initiator -> target) PDUs. */ bhssc = (const struct iscsi_bhs_scsi_command *)request->ip_bhs; - cmdsn = ntohl(bhssc->bhssc_cmdsn); - expstatsn = ntohl(bhssc->bhssc_expstatsn); + curcmdsn = cmdsn = ntohl(bhssc->bhssc_cmdsn); - CFISCSI_SESSION_LOCK(cs); -#if 0 - if (expstatsn != cs->cs_statsn) { - CFISCSI_SESSION_DEBUG(cs, "received PDU with ExpStatSN %d, " - "while current StatSN is %d", expstatsn, - cs->cs_statsn); - } -#endif + /* + * Increment session cmdsn and exit if we received the expected value. + */ + do { + if (atomic_fcmpset_32(&cs->cs_cmdsn, &curcmdsn, cmdsn + 1)) + return (false); + } while (curcmdsn == cmdsn); - if ((request->ip_bhs->bhs_opcode & ISCSI_BHS_OPCODE_IMMEDIATE) == 0) { - /* - * The target MUST silently ignore any non-immediate command - * outside of this range. - */ - if (ISCSI_SNLT(cmdsn, cs->cs_cmdsn) || - ISCSI_SNGT(cmdsn, cs->cs_cmdsn - 1 + maxtags)) { - CFISCSI_SESSION_UNLOCK(cs); - CFISCSI_SESSION_WARN(cs, "received PDU with CmdSN %u, " - "while expected %u", cmdsn, cs->cs_cmdsn); - return (true); - } - - /* - * We don't support multiple connections now, so any - * discontinuity in CmdSN means lost PDUs. Since we don't - * support PDU retransmission -- terminate the connection. - */ - if (cmdsn != cs->cs_cmdsn) { - CFISCSI_SESSION_UNLOCK(cs); - CFISCSI_SESSION_WARN(cs, "received PDU with CmdSN %u, " - "while expected %u; dropping connection", - cmdsn, cs->cs_cmdsn); - cfiscsi_session_terminate(cs); - return (true); - } - cs->cs_cmdsn++; + /* + * The target MUST silently ignore any non-immediate command outside + * of this range. + */ + if (ISCSI_SNLT(cmdsn, curcmdsn) || + ISCSI_SNGT(cmdsn, curcmdsn - 1 + maxtags)) { + CFISCSI_SESSION_WARN(cs, "received PDU with CmdSN %u, " + "while expected %u", cmdsn, curcmdsn); + return (true); } - CFISCSI_SESSION_UNLOCK(cs); - - return (false); + /* + * We don't support multiple connections now, so any discontinuity in + * CmdSN means lost PDUs. Since we don't support PDU retransmission -- + * terminate the connection. + */ + CFISCSI_SESSION_WARN(cs, "received PDU with CmdSN %u, " + "while expected %u; dropping connection", + cmdsn, curcmdsn); + cfiscsi_session_terminate(cs); + return (true); } static void @@ -367,6 +358,7 @@ cfiscsi_pdu_prepare(struct icl_pdu *response) struct cfiscsi_session *cs; struct iscsi_bhs_scsi_response *bhssr; bool advance_statsn = true; + uint32_t cmdsn; cs = PDU_SESSION(response); @@ -408,8 +400,9 @@ cfiscsi_pdu_prepare(struct icl_pdu *response) if (bhssr->bhssr_opcode != ISCSI_BHS_OPCODE_SCSI_DATA_IN || (bhssr->bhssr_flags & BHSDI_FLAGS_S)) bhssr->bhssr_statsn = htonl(cs->cs_statsn); - bhssr->bhssr_expcmdsn = htonl(cs->cs_cmdsn); - bhssr->bhssr_maxcmdsn = htonl(cs->cs_cmdsn - 1 + + cmdsn = cs->cs_cmdsn; + bhssr->bhssr_expcmdsn = htonl(cmdsn); + bhssr->bhssr_maxcmdsn = htonl(cmdsn - 1 + imax(0, maxtags - cs->cs_outstanding_ctl_pdus)); if (advance_statsn) @@ -2461,19 +2454,14 @@ cfiscsi_datamove_in(union ctl_io *io) buffer_offset = io->scsiio.kern_rel_offset; /* - * This is the transfer length expected by the initiator. In theory, - * it could be different from the correct amount of data from the SCSI - * point of view, even if that doesn't make any sense. + * This is the transfer length expected by the initiator. It can be + * different from the amount of data from the SCSI point of view. */ expected_len = ntohl(bhssc->bhssc_expected_data_transfer_length); -#if 0 - if (expected_len != io->scsiio.kern_total_len) { - CFISCSI_SESSION_DEBUG(cs, "expected transfer length %zd, " - "actual length %zd", expected_len, - (size_t)io->scsiio.kern_total_len); - } -#endif + /* + * If the transfer is outside of expected length -- we are done. + */ if (buffer_offset >= expected_len) { #if 0 CFISCSI_SESSION_DEBUG(cs, "buffer_offset = %zd, " From owner-svn-src-all@freebsd.org Fri May 29 18:05:40 2020 Return-Path: Delivered-To: svn-src-all@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 CA2B733E0EA; Fri, 29 May 2020 18:05:40 +0000 (UTC) (envelope-from gjb@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49YXYJ51dbz49NC; Fri, 29 May 2020 18:05:40 +0000 (UTC) (envelope-from gjb@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 A375F1BE04; Fri, 29 May 2020 18:05:40 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04TI5ecG048075; Fri, 29 May 2020 18:05:40 GMT (envelope-from gjb@FreeBSD.org) Received: (from gjb@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04TI5erd048074; Fri, 29 May 2020 18:05:40 GMT (envelope-from gjb@FreeBSD.org) Message-Id: <202005291805.04TI5erd048074@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: gjb set sender to gjb@FreeBSD.org using -f From: Glen Barber Date: Fri, 29 May 2020 18:05:40 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-releng@freebsd.org Subject: svn commit: r361631 - releng/11.4/release/pkg_repos X-SVN-Group: releng X-SVN-Commit-Author: gjb X-SVN-Commit-Paths: releng/11.4/release/pkg_repos X-SVN-Commit-Revision: 361631 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2020 18:05:40 -0000 Author: gjb Date: Fri May 29 18:05:40 2020 New Revision: 361631 URL: https://svnweb.freebsd.org/changeset/base/361631 Log: Update the pkg.conf used to populate the dvd1.iso to use the release_4 package set from this point forward. Approved by: re (implicit) Sponsored by: Rubicon Communications, LLC (netgate.com) Modified: releng/11.4/release/pkg_repos/release-dvd.conf Modified: releng/11.4/release/pkg_repos/release-dvd.conf ============================================================================== --- releng/11.4/release/pkg_repos/release-dvd.conf Fri May 29 17:52:20 2020 (r361630) +++ releng/11.4/release/pkg_repos/release-dvd.conf Fri May 29 18:05:40 2020 (r361631) @@ -1,6 +1,6 @@ # $FreeBSD$ release: { - url: "pkg+http://pkg.FreeBSD.org/${ABI}/quarterly", + url: "pkg+http://pkg.FreeBSD.org/${ABI}/release_4", mirror_type: "srv", signature_type: "fingerprints", fingerprints: "/usr/share/keys/pkg", From owner-svn-src-all@freebsd.org Fri May 29 18:33:21 2020 Return-Path: Delivered-To: svn-src-all@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 74F3233E76D; Fri, 29 May 2020 18:33:21 +0000 (UTC) (envelope-from kevans@freebsd.org) Received: from smtp.freebsd.org (smtp.freebsd.org [IPv6:2610:1c1:1:606c::24b:4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "smtp.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 49YY9F2NVfz4C9V; Fri, 29 May 2020 18:33:21 +0000 (UTC) (envelope-from kevans@freebsd.org) Received: from mail-qv1-f51.google.com (mail-qv1-f51.google.com [209.85.219.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "GTS CA 1O1" (verified OK)) (Authenticated sender: kevans) by smtp.freebsd.org (Postfix) with ESMTPSA id 44D6B117DB; Fri, 29 May 2020 18:33:21 +0000 (UTC) (envelope-from kevans@freebsd.org) Received: by mail-qv1-f51.google.com with SMTP id p15so1528289qvr.9; Fri, 29 May 2020 11:33:21 -0700 (PDT) X-Gm-Message-State: AOAM532Uys3IBFX+DrOat2Fm/XTy6R8m2jBs83prkjylqQ4jIgY7N9vC /gmoRms51pCFxOp8KqBEhs4od8Z1pyNIBqmWR0Y= X-Google-Smtp-Source: ABdhPJzBV2fxu2jLSX35r3Cwm2TvBARFE4jtGlaGmQfsfgsSisWs4rCg8Xu5lqCpqX+TJxJls0Y3c2RCF0nsyTYM1j4= X-Received: by 2002:a0c:ba22:: with SMTP id w34mr9488733qvf.129.1590777200782; Fri, 29 May 2020 11:33:20 -0700 (PDT) MIME-Version: 1.0 References: <202005201103.04KB3xTp013965@repo.freebsd.org> In-Reply-To: From: Kyle Evans Date: Fri, 29 May 2020 13:33:08 -0500 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: svn commit: r361275 - in head/sys: conf dev/hyperv/hvsock dev/hyperv/include dev/hyperv/vmbus modules/hyperv modules/hyperv/hvsock sys To: Wei Hu Cc: src-committers , svn-src-all , svn-src-head Content-Type: text/plain; charset="UTF-8" X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2020 18:33:21 -0000 On Fri, May 29, 2020 at 12:08 PM Wei Hu wrote: > > -----Original Message----- > > > > [... snip ...] > > > > +void > > > > +hvs_trans_init(void) > > > > +{ > > > > + /* Skip initialization of globals for non-default instances. */ > > > > + if (!IS_DEFAULT_VNET(curvnet)) > > > > + return; > > > > + > > > > + if (vm_guest != VM_GUEST_HV) > > > > + return; > > > > + > > > > + HVSOCK_DBG(HVSOCK_DBG_VERBOSE, > > > > + "%s: HyperV Socket hvs_trans_init called\n", __func__); > > > > + > > > > + /* Initialize Globals */ > > > > + previous_auto_bound_port = MAX_PORT; > > > > + sx_init(&hvs_trans_socks_sx, "hvs_trans_sock_sx"); > > > > + mtx_init(&hvs_trans_socks_mtx, > > > > + "hvs_trans_socks_mtx", NULL, MTX_DEF); > > > > + LIST_INIT(&hvs_trans_bound_socks); > > > > + LIST_INIT(&hvs_trans_connected_socks); > > > > +} > > > > + > > > > > > I have a suspicion that all of these should really be per-vnet for > > > correct semantics with VIMAGE, with the IS_DEFAULT_VNET check earlier > > > dropped completely. I haven't read around the rest all that much, but > > > this would at least seem to prevent port re-use by a different vnet, > > > which is perhaps "good enough" but I think this is something that > > > should be fixed in the mid-term. > > > > > > > I have a follow-up concern about whether this is actually going to be > > maintained... it's been a full week with not even an acknowledgement or > > rebuttal of any of the concerns I've raised, with some of them being completely > > trivial to address in the short-term. I don't think that we really want this in the > > tree in its current state given this level of engagement. > > > Sorry for my late response, Kyle. I read your comments last week. To be honest I am > not familiar to VNET and VIMAGE, so I don't quite understand. I got distracted > into other work so my response to this was delayed. > > Do you mean to drop these two lines? > if (!IS_DEFAULT_VNET(curvnet)) > return > I copied these from other socket init code. If they are not necessary I can remove them. > Alright, let's rewind a little bit here. =-) Consider while reading the below that I have no idea what the host-side of these sockets look like beyond what I just very quickly skimmed from [0]. It's a little more involved than that; consider each vnet as its own independent network stack that's largely isolated from other vnets. The host starts out with a vnet, vnet0 (the default vnet), and root may spawn additional vnets attached to jails to allow the jail to operate its own network stack as well. Your pr_init will get called once per vnet spawned, including the obvious default vnet, which is why the check is there in the first place -- you may have some global state that only needs to be initialized once, at which point you would exclude non-default vnets from executing those bits. The more I think about it, though, the more I wonder if hvsock makes sense at all in non-default vnet contexts and whether hvs_trans_attach should really be attaching to sockets outside of the default vnet. You can bind in your FreeBSD HyperV guest to a port, and a host service's option for connecting is specifying guest GUID + port; there's not really any wiggle room for multiple entities within a guest to be binding to a given port anyways. It may very well be the case that the status quo is the optimal outcome. Given that, does it make sense that the host connects via the guest GUID and can potentially end up connected to some jail of unknown trust operating its own network stack? As a final scattered thought for the hour, does the Linux implementation of this stuff do anything to give a guest admin visibility into existing HyperV sockets on the system? AFAICT here, there's no sockstat integration or anything else that might export hvsock information to userland, so one's only option to tracking down whether a HyperV socket even exists and to which process it belongs would appear to be probing around in the kernel. Thanks, Kyle Evans [0] https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/user-guide/make-integration-service From owner-svn-src-all@freebsd.org Fri May 29 19:21:36 2020 Return-Path: Delivered-To: svn-src-all@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 DEBAC33F8F8; Fri, 29 May 2020 19:21:36 +0000 (UTC) (envelope-from jhb@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49YZDw5XNjz4H6k; Fri, 29 May 2020 19:21:36 +0000 (UTC) (envelope-from jhb@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 B8DAE1CC04; Fri, 29 May 2020 19:21:36 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04TJLaiQ097152; Fri, 29 May 2020 19:21:36 GMT (envelope-from jhb@FreeBSD.org) Received: (from jhb@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04TJLaNc097149; Fri, 29 May 2020 19:21:36 GMT (envelope-from jhb@FreeBSD.org) Message-Id: <202005291921.04TJLaNc097149@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: jhb set sender to jhb@FreeBSD.org using -f From: John Baldwin Date: Fri, 29 May 2020 19:21:36 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361632 - in head/sys: conf modules/ipsec modules/tcp/tcpmd5 X-SVN-Group: head X-SVN-Commit-Author: jhb X-SVN-Commit-Paths: in head/sys: conf modules/ipsec modules/tcp/tcpmd5 X-SVN-Commit-Revision: 361632 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2020 19:21:36 -0000 Author: jhb Date: Fri May 29 19:21:35 2020 New Revision: 361632 URL: https://svnweb.freebsd.org/changeset/base/361632 Log: Honor opt_ipsec.h from kernel builds. To make this simpler, set the default contents of opt_ipsec.h for standalone modules in sys/conf/config.mk. Reviewed by: imp MFC after: 2 weeks Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D25046 Modified: head/sys/conf/config.mk head/sys/modules/ipsec/Makefile head/sys/modules/tcp/tcpmd5/Makefile Modified: head/sys/conf/config.mk ============================================================================== --- head/sys/conf/config.mk Fri May 29 18:05:40 2020 (r361631) +++ head/sys/conf/config.mk Fri May 29 19:21:35 2020 (r361632) @@ -30,6 +30,8 @@ opt_inet.h: opt_inet6.h: @echo "#define INET6 1" > ${.TARGET} .endif +opt_ipsec.h: + @echo "#define IPSEC_SUPPORT 1" > ${.TARGET} .if ${MK_RATELIMIT} != "no" opt_ratelimit.h: @echo "#define RATELIMIT 1" > ${.TARGET} Modified: head/sys/modules/ipsec/Makefile ============================================================================== --- head/sys/modules/ipsec/Makefile Fri May 29 18:05:40 2020 (r361631) +++ head/sys/modules/ipsec/Makefile Fri May 29 19:21:35 2020 (r361632) @@ -8,7 +8,4 @@ SRCS= if_ipsec.c ipsec.c ipsec_input.c ipsec_mbuf.c ip opt_inet.h opt_inet6.h opt_ipsec.h opt_sctp.h SRCS.INET= udpencap.c -opt_ipsec.h: - @echo "#define IPSEC_SUPPORT 1" > ${.TARGET} - .include Modified: head/sys/modules/tcp/tcpmd5/Makefile ============================================================================== --- head/sys/modules/tcp/tcpmd5/Makefile Fri May 29 18:05:40 2020 (r361631) +++ head/sys/modules/tcp/tcpmd5/Makefile Fri May 29 19:21:35 2020 (r361632) @@ -5,7 +5,4 @@ KMOD= tcpmd5 SRCS= xform_tcp.c opt_inet.h opt_inet6.h opt_ipsec.h -opt_ipsec.h: - @echo "#define IPSEC_SUPPORT 1" > ${.TARGET} - .include From owner-svn-src-all@freebsd.org Fri May 29 19:22:41 2020 Return-Path: Delivered-To: svn-src-all@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 DF58B33F575; Fri, 29 May 2020 19:22:41 +0000 (UTC) (envelope-from jhb@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49YZG95Zvrz4HZh; Fri, 29 May 2020 19:22:41 +0000 (UTC) (envelope-from jhb@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 BAFDD1CC8B; Fri, 29 May 2020 19:22:41 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04TJMfpl098024; Fri, 29 May 2020 19:22:41 GMT (envelope-from jhb@FreeBSD.org) Received: (from jhb@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04TJMemQ098017; Fri, 29 May 2020 19:22:40 GMT (envelope-from jhb@FreeBSD.org) Message-Id: <202005291922.04TJMemQ098017@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: jhb set sender to jhb@FreeBSD.org using -f From: John Baldwin Date: Fri, 29 May 2020 19:22:40 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361633 - in head/sys: net netipsec X-SVN-Group: head X-SVN-Commit-Author: jhb X-SVN-Commit-Paths: in head/sys: net netipsec X-SVN-Commit-Revision: 361633 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2020 19:22:41 -0000 Author: jhb Date: Fri May 29 19:22:40 2020 New Revision: 361633 URL: https://svnweb.freebsd.org/changeset/base/361633 Log: Consistently include opt_ipsec.h for consumers of . This fixes ipsec.ko to include all of IPSEC_DEBUG. Reviewed by: imp MFC after: 2 weeks Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D25046 Modified: head/sys/net/if_enc.c head/sys/net/if_ipsec.c head/sys/netipsec/ipsec.h head/sys/netipsec/ipsec_mbuf.c head/sys/netipsec/xform_ah.c head/sys/netipsec/xform_esp.c head/sys/netipsec/xform_ipcomp.c Modified: head/sys/net/if_enc.c ============================================================================== --- head/sys/net/if_enc.c Fri May 29 19:21:35 2020 (r361632) +++ head/sys/net/if_enc.c Fri May 29 19:22:40 2020 (r361633) @@ -32,6 +32,7 @@ #include "opt_inet.h" #include "opt_inet6.h" +#include "opt_ipsec.h" #include #include Modified: head/sys/net/if_ipsec.c ============================================================================== --- head/sys/net/if_ipsec.c Fri May 29 19:21:35 2020 (r361632) +++ head/sys/net/if_ipsec.c Fri May 29 19:22:40 2020 (r361633) @@ -30,6 +30,7 @@ __FBSDID("$FreeBSD$"); #include "opt_inet.h" #include "opt_inet6.h" +#include "opt_ipsec.h" #include #include Modified: head/sys/netipsec/ipsec.h ============================================================================== --- head/sys/netipsec/ipsec.h Fri May 29 19:21:35 2020 (r361632) +++ head/sys/netipsec/ipsec.h Fri May 29 19:22:40 2020 (r361633) @@ -39,11 +39,6 @@ #ifndef _NETIPSEC_IPSEC_H_ #define _NETIPSEC_IPSEC_H_ -#if defined(_KERNEL) && !defined(_LKM) && !defined(KLD_MODULE) -#include "opt_inet.h" -#include "opt_ipsec.h" -#endif - #include #include Modified: head/sys/netipsec/ipsec_mbuf.c ============================================================================== --- head/sys/netipsec/ipsec_mbuf.c Fri May 29 19:21:35 2020 (r361632) +++ head/sys/netipsec/ipsec_mbuf.c Fri May 29 19:22:40 2020 (r361633) @@ -32,6 +32,8 @@ * IPsec-specific mbuf routines. */ +#include "opt_ipsec.h" + #include #include #include Modified: head/sys/netipsec/xform_ah.c ============================================================================== --- head/sys/netipsec/xform_ah.c Fri May 29 19:21:35 2020 (r361632) +++ head/sys/netipsec/xform_ah.c Fri May 29 19:22:40 2020 (r361633) @@ -38,6 +38,7 @@ */ #include "opt_inet.h" #include "opt_inet6.h" +#include "opt_ipsec.h" #include #include Modified: head/sys/netipsec/xform_esp.c ============================================================================== --- head/sys/netipsec/xform_esp.c Fri May 29 19:21:35 2020 (r361632) +++ head/sys/netipsec/xform_esp.c Fri May 29 19:22:40 2020 (r361633) @@ -37,6 +37,7 @@ */ #include "opt_inet.h" #include "opt_inet6.h" +#include "opt_ipsec.h" #include #include Modified: head/sys/netipsec/xform_ipcomp.c ============================================================================== --- head/sys/netipsec/xform_ipcomp.c Fri May 29 19:21:35 2020 (r361632) +++ head/sys/netipsec/xform_ipcomp.c Fri May 29 19:22:40 2020 (r361633) @@ -33,6 +33,7 @@ /* IP payload compression protocol (IPComp), see RFC 2393 */ #include "opt_inet.h" #include "opt_inet6.h" +#include "opt_ipsec.h" #include #include From owner-svn-src-all@freebsd.org Fri May 29 19:29:11 2020 Return-Path: Delivered-To: svn-src-all@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 0838F33FD99; Fri, 29 May 2020 19:29:11 +0000 (UTC) (envelope-from jhb@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49YZPf6Slqz4Hkx; Fri, 29 May 2020 19:29:10 +0000 (UTC) (envelope-from jhb@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 D7B921CC8D; Fri, 29 May 2020 19:29:10 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04TJTAJ7098419; Fri, 29 May 2020 19:29:10 GMT (envelope-from jhb@FreeBSD.org) Received: (from jhb@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04TJTAAd098418; Fri, 29 May 2020 19:29:10 GMT (envelope-from jhb@FreeBSD.org) Message-Id: <202005291929.04TJTAAd098418@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: jhb set sender to jhb@FreeBSD.org using -f From: John Baldwin Date: Fri, 29 May 2020 19:29:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361634 - head/sys/modules/if_enc X-SVN-Group: head X-SVN-Commit-Author: jhb X-SVN-Commit-Paths: head/sys/modules/if_enc X-SVN-Commit-Revision: 361634 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2020 19:29:11 -0000 Author: jhb Date: Fri May 29 19:29:10 2020 New Revision: 361634 URL: https://svnweb.freebsd.org/changeset/base/361634 Log: Add opt_ipsec.h to fix standalone builds after r361633. Modified: head/sys/modules/if_enc/Makefile Modified: head/sys/modules/if_enc/Makefile ============================================================================== --- head/sys/modules/if_enc/Makefile Fri May 29 19:22:40 2020 (r361633) +++ head/sys/modules/if_enc/Makefile Fri May 29 19:29:10 2020 (r361634) @@ -6,6 +6,6 @@ SYSDIR?=${SRCTOP}/sys .PATH: ${SYSDIR}/net KMOD= if_enc -SRCS= if_enc.c opt_inet.h opt_inet6.h +SRCS= if_enc.c opt_inet.h opt_inet6.h opt_ipsec.h .include From owner-svn-src-all@freebsd.org Fri May 29 19:44:19 2020 Return-Path: Delivered-To: svn-src-all@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 AEF522F0113; Fri, 29 May 2020 19:44:19 +0000 (UTC) (envelope-from cem@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49YZl745H9z4JnB; Fri, 29 May 2020 19:44:19 +0000 (UTC) (envelope-from cem@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 879E01D00A; Fri, 29 May 2020 19:44:19 +0000 (UTC) (envelope-from cem@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04TJiJWw010456; Fri, 29 May 2020 19:44:19 GMT (envelope-from cem@FreeBSD.org) Received: (from cem@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04TJiJ22010454; Fri, 29 May 2020 19:44:19 GMT (envelope-from cem@FreeBSD.org) Message-Id: <202005291944.04TJiJ22010454@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: cem set sender to cem@FreeBSD.org using -f From: Conrad Meyer Date: Fri, 29 May 2020 19:44:19 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361635 - head/sys/geom/part X-SVN-Group: head X-SVN-Commit-Author: cem X-SVN-Commit-Paths: head/sys/geom/part X-SVN-Commit-Revision: 361635 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2020 19:44:19 -0000 Author: cem Date: Fri May 29 19:44:18 2020 New Revision: 361635 URL: https://svnweb.freebsd.org/changeset/base/361635 Log: geom_part: Dispatch to partitions to create providers and aliases This allows partitions to create additional aliases of their own. The default method implementations preserve the existing behavior. No functional change. Reviewed by: imp Differential Revision: https://reviews.freebsd.org/D24938 Modified: head/sys/geom/part/g_part.c head/sys/geom/part/g_part_if.m Modified: head/sys/geom/part/g_part.c ============================================================================== --- head/sys/geom/part/g_part.c Fri May 29 19:29:10 2020 (r361634) +++ head/sys/geom/part/g_part.c Fri May 29 19:44:18 2020 (r361635) @@ -469,7 +469,6 @@ g_part_new_provider(struct g_geom *gp, struct g_part_t { struct g_consumer *cp; struct g_provider *pp; - struct sbuf *sb; struct g_geom_alias *gap; off_t offset; @@ -481,11 +480,7 @@ g_part_new_provider(struct g_geom *gp, struct g_part_t entry->gpe_offset = offset; if (entry->gpe_pp == NULL) { - sb = sbuf_new_auto(); - G_PART_FULLNAME(table, entry, sb, gp->name); - sbuf_finish(sb); - entry->gpe_pp = g_new_providerf(gp, "%s", sbuf_data(sb)); - sbuf_delete(sb); + entry->gpe_pp = G_PART_NEW_PROVIDER(table, gp, entry, gp->name); /* * If our parent provider had any aliases, then copy them to our * provider so when geom DEV tastes things later, they will be @@ -493,13 +488,8 @@ g_part_new_provider(struct g_geom *gp, struct g_part_t * place of the geom's name we use to create the provider. The * kobj interface that generates names makes this awkward. */ - LIST_FOREACH(gap, &pp->aliases, ga_next) { - sb = sbuf_new_auto(); - G_PART_FULLNAME(table, entry, sb, gap->ga_alias); - sbuf_finish(sb); - g_provider_add_alias(entry->gpe_pp, "%s", sbuf_data(sb)); - sbuf_delete(sb); - } + LIST_FOREACH(gap, &pp->aliases, ga_next) + G_PART_ADD_ALIAS(table, entry->gpe_pp, entry, gap->ga_alias); entry->gpe_pp->flags |= G_PF_DIRECT_SEND | G_PF_DIRECT_RECEIVE; entry->gpe_pp->private = entry; /* Close the circle. */ } Modified: head/sys/geom/part/g_part_if.m ============================================================================== --- head/sys/geom/part/g_part_if.m Fri May 29 19:29:10 2020 (r361634) +++ head/sys/geom/part/g_part_if.m Fri May 29 19:44:18 2020 (r361635) @@ -52,6 +52,34 @@ CODE { G_PART_NAME(table, entry, buf, sizeof(buf))); } + static struct g_provider * + default_new_provider(struct g_part_table *table, struct g_geom *gp, + struct g_part_entry *entry, const char *pfx) + { + struct g_provider *ret; + struct sbuf *sb; + + sb = sbuf_new_auto(); + G_PART_FULLNAME(table, entry, sb, pfx); + sbuf_finish(sb); + ret = g_new_providerf(gp, "%s", sbuf_data(sb)); + sbuf_delete(sb); + return (ret); + } + + static void + default_add_alias(struct g_part_table *table, struct g_provider *pp, + struct g_part_entry *entry, const char *pfx) + { + struct sbuf *sb; + + sb = sbuf_new_auto(); + G_PART_FULLNAME(table, entry, sb, pfx); + sbuf_finish(sb); + g_provider_add_alias(pp, "%s", sbuf_data(sb)); + sbuf_delete(sb); + } + static int default_precheck(struct g_part_table *t __unused, enum g_part_ctl r __unused, struct g_part_parms *p __unused) @@ -88,6 +116,15 @@ METHOD int add { struct g_part_parms *gpp; }; +# add_alias() - Create aliases for the partition's provider with the given +# alias prefixes. +METHOD void add_alias { + struct g_part_table *table; + struct g_provider *pp; + struct g_part_entry *entry; + const char *pfx; +} DEFAULT default_add_alias; + # bootcode() - scheme specific processing for the bootcode verb. METHOD int bootcode { struct g_part_table *table; @@ -144,6 +181,14 @@ METHOD int modify { struct g_part_entry *entry; struct g_part_parms *gpp; }; + +# new_provider() - Create the partition's provider(s). +METHOD struct g_provider * new_provider { + struct g_part_table *table; + struct g_geom *gp; + struct g_part_entry *entry; + const char *pfx; +} DEFAULT default_new_provider; # resize() - scheme specific processing for the resize verb. METHOD int resize { From owner-svn-src-all@freebsd.org Fri May 29 20:33:43 2020 Return-Path: Delivered-To: svn-src-all@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 B796A2F07F2; Fri, 29 May 2020 20:33:43 +0000 (UTC) (envelope-from kevans@freebsd.org) Received: from smtp.freebsd.org (smtp.freebsd.org [IPv6:2610:1c1:1:606c::24b:4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "smtp.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 49Ybr74WtRz4N13; Fri, 29 May 2020 20:33:43 +0000 (UTC) (envelope-from kevans@freebsd.org) Received: from mail-qt1-f176.google.com (mail-qt1-f176.google.com [209.85.160.176]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "GTS CA 1O1" (verified OK)) (Authenticated sender: kevans) by smtp.freebsd.org (Postfix) with ESMTPSA id 90AAF12044; Fri, 29 May 2020 20:33:43 +0000 (UTC) (envelope-from kevans@freebsd.org) Received: by mail-qt1-f176.google.com with SMTP id z1so3089379qtn.2; Fri, 29 May 2020 13:33:43 -0700 (PDT) X-Gm-Message-State: AOAM530Ph0uSdIYyljQ0K5PMbFLI5Airf5oUZ4TQOxVMYdXHc8zit5kk 7xHqPbm7hMiaqhrsPdK32X6/se1vKp4rFF9NGPM= X-Google-Smtp-Source: ABdhPJymx27a7MGDUuIjNZFFvGOkGcRzvvypYBF3y1QOu3vV/A70C+aPuAl6uuOcy8lPLIpz2435z1gY7wu/kWVTCNM= X-Received: by 2002:ac8:1c71:: with SMTP id j46mr11152418qtk.60.1590784422630; Fri, 29 May 2020 13:33:42 -0700 (PDT) MIME-Version: 1.0 References: <202005220917.04M9H7oE028708@repo.freebsd.org> In-Reply-To: From: Kyle Evans Date: Fri, 29 May 2020 15:33:30 -0500 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: svn commit: r361360 - head/sys/dev/hyperv/hvsock To: Wei Hu Cc: src-committers , svn-src-all , svn-src-head Content-Type: text/plain; charset="UTF-8" X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2020 20:33:43 -0000 On Fri, May 22, 2020 at 10:51 AM Kyle Evans wrote: > > On Fri, May 22, 2020 at 4:17 AM Wei Hu wrote: > > > > Author: whu > > Date: Fri May 22 09:17:07 2020 > > New Revision: 361360 > > URL: https://svnweb.freebsd.org/changeset/base/361360 > > > > Log: > > Socket AF_HYPERV should return failure when it is not running on HyperV > > > > [... snip ...] > > @@ -354,6 +354,9 @@ hvs_trans_attach(struct socket *so, int proto, struct > > { > > struct hvs_pcb *pcb = so2hvspcb(so); > > > > + if (vm_guest != VM_GUEST_HV) > > + return (ESOCKTNOSUPPORT); > > + > > HVSOCK_DBG(HVSOCK_DBG_VERBOSE, > > "%s: HyperV Socket hvs_trans_attach called\n", __func__); > > > > This one may be OK, but none of these other methods should be able to > be invoked if the attach failed. See this comment at around > ^/sys/kern/uipc_socket.c#50: > > 50 * pru_detach() disassociates protocol layer state from an attached socket, > 51 * and will be called exactly once for sockets in which pru_attach() has > 52 * been successfully called. If pru_attach() returned an error, > 53 * pru_detach() will not be called. Socket layer private. > > That said, I wonder if VNET_DOMAIN_SET provides the correct semantics > here at all. You can't fail domain_init, but I don't think there's any > value in this domain actually getting registered on non-HyperV guests, > a fact which presumably won't change at runtime. > I'm considering the patch below, which is almost certainly going to be mangled by my mail client, for solving this style of problem. It gives the domain a chance to probe the system and opt out, for cases like hvsock where leaving the domain around and fully-initialized when there's no way it can work is both wasteful and a bit of an accident waiting to happen -- IMO it's much less error prone and more comforting if we just reject it early on, since we can. The vm_guest detection and hyperv's false-positive aversion stuff in hyperv_init should run much earlier than this. diff --git a/sys/dev/hyperv/hvsock/hv_sock.c b/sys/dev/hyperv/hvsock/hv_sock.c index d212c2d8c2d..d3bc1ab0f2c 100644 --- a/sys/dev/hyperv/hvsock/hv_sock.c +++ b/sys/dev/hyperv/hvsock/hv_sock.c @@ -74,6 +74,8 @@ SYSCTL_INT(_net_hvsock, OID_AUTO, hvs_dbg_level, CTLFLAG_RWTUN, &hvs_dbg_level, MALLOC_DEFINE(M_HVSOCK, "hyperv_socket", "hyperv socket control structures"); +static int hvs_dom_probe(void); + /* The MTU is 16KB per host side's design */ #define HVSOCK_MTU_SIZE (1024 * 16) #define HVSOCK_SEND_BUF_SZ (PAGE_SIZE - sizeof(struct vmpipe_proto_header)) @@ -124,6 +126,7 @@ static struct protosw hv_socket_protosw[] = { static struct domain hv_socket_domain = { .dom_family = AF_HYPERV, .dom_name = "hyperv", + .dom_probe = hvs_dom_probe, .dom_protosw = hv_socket_protosw, .dom_protoswNPROTOSW = &hv_socket_protosw[nitems(hv_socket_protosw)] }; @@ -322,6 +325,16 @@ hvs_trans_unlock(void) sx_xunlock(&hvs_trans_socks_sx); } +static int +hvs_dom_probe(void) +{ + + /* Don't even give us a chance to attach on non-HyperV. */ + if (vm_guest != VM_GUEST_HV) + return (ENXIO); + return (0); +} + void hvs_trans_init(void) { @@ -329,9 +342,6 @@ hvs_trans_init(void) if (!IS_DEFAULT_VNET(curvnet)) return; - if (vm_guest != VM_GUEST_HV) - return; - HVSOCK_DBG(HVSOCK_DBG_VERBOSE, "%s: HyperV Socket hvs_trans_init called\n", __func__); @@ -354,9 +364,6 @@ hvs_trans_attach(struct socket *so, int proto, struct thread *td) { struct hvs_pcb *pcb = so2hvspcb(so); - if (vm_guest != VM_GUEST_HV) - return (ESOCKTNOSUPPORT); - HVSOCK_DBG(HVSOCK_DBG_VERBOSE, "%s: HyperV Socket hvs_trans_attach called\n", __func__); @@ -383,9 +390,6 @@ hvs_trans_detach(struct socket *so) { struct hvs_pcb *pcb; - if (vm_guest != VM_GUEST_HV) - return; - HVSOCK_DBG(HVSOCK_DBG_VERBOSE, "%s: HyperV Socket hvs_trans_detach called\n", __func__); @@ -595,9 +599,6 @@ hvs_trans_disconnect(struct socket *so) { struct hvs_pcb *pcb; - if (vm_guest != VM_GUEST_HV) - return (ESOCKTNOSUPPORT); - HVSOCK_DBG(HVSOCK_DBG_VERBOSE, "%s: HyperV Socket hvs_trans_disconnect called\n", __func__); @@ -925,9 +926,6 @@ hvs_trans_close(struct socket *so) { struct hvs_pcb *pcb; - if (vm_guest != VM_GUEST_HV) - return; - HVSOCK_DBG(HVSOCK_DBG_VERBOSE, "%s: HyperV Socket hvs_trans_close called\n", __func__); @@ -969,9 +967,6 @@ hvs_trans_abort(struct socket *so) { struct hvs_pcb *pcb = so2hvspcb(so); - if (vm_guest != VM_GUEST_HV) - return; - HVSOCK_DBG(HVSOCK_DBG_VERBOSE, "%s: HyperV Socket hvs_trans_abort called\n", __func__); diff --git a/sys/kern/uipc_domain.c b/sys/kern/uipc_domain.c index 60e30eb1ae0..63217566ba9 100644 --- a/sys/kern/uipc_domain.c +++ b/sys/kern/uipc_domain.c @@ -170,9 +170,13 @@ protosw_init(struct protosw *pr) void domain_init(void *arg) { - struct domain *dp = arg; + struct domain_set_args *dsa = arg; + struct domain *dp; struct protosw *pr; + if (!dsa->dsa_supported) + return; + dp = dsa->dsa_dp; if (dp->dom_init) (*dp->dom_init)(); for (pr = dp->dom_protosw; pr < dp->dom_protoswNPROTOSW; pr++) @@ -198,8 +202,12 @@ vnet_domain_init(void *arg) void vnet_domain_uninit(void *arg) { - struct domain *dp = arg; + struct domain_set_args *dsa = arg; + struct domain *dp; + if (!dsa->dsa_supported) + return; + dp = dsa->dsa_dp; if (dp->dom_destroy) (*dp->dom_destroy)(); } @@ -213,9 +221,14 @@ vnet_domain_uninit(void *arg) void domain_add(void *data) { + struct domain_set_args *dsa; struct domain *dp; - dp = (struct domain *)data; + dsa = data; + dp = dsa->dsa_dp; + if (dp->dom_probe != NULL && (*dp->dom_probe)() != 0) + return; + dsa->dsa_supported = 1; mtx_lock(&dom_mtx); dp->dom_next = domains; domains = dp; diff --git a/sys/sys/domain.h b/sys/sys/domain.h index e83dd0f4afc..11211f072c2 100644 --- a/sys/sys/domain.h +++ b/sys/sys/domain.h @@ -49,6 +49,7 @@ struct socket; struct domain { int dom_family; /* AF_xxx */ char *dom_name; + int (*dom_probe)(void); /* check for support (optional) */ void (*dom_init) /* initialize domain data structures */ (void); void (*dom_destroy) /* cleanup structures / state */ @@ -79,20 +80,36 @@ void vnet_domain_init(void *); void vnet_domain_uninit(void *); #endif +struct domain_set_args { + struct domain *dsa_dp; + int dsa_supported; +}; + #define DOMAIN_SET(name) \ + static struct domain_set_args name ## domain_set_args = { \ + .dsa_dp = & name ## domain, \ + }; \ SYSINIT(domain_add_ ## name, SI_SUB_PROTO_DOMAIN, \ - SI_ORDER_FIRST, domain_add, & name ## domain); \ + SI_ORDER_FIRST, domain_add, &name ## domain_set_args); \ SYSINIT(domain_init_ ## name, SI_SUB_PROTO_DOMAIN, \ - SI_ORDER_SECOND, domain_init, & name ## domain); + SI_ORDER_SECOND, domain_init, &name ## domain_set_args); #ifdef VIMAGE +/* + * There's no such thing as per-vnet domains, so domain_set_args don't really + * need to be virtualized at the moment. Further consideration would be needed + * for such a concept to work at all. + */ #define VNET_DOMAIN_SET(name) \ + static struct domain_set_args name ## domain_set_args = { \ + .dsa_dp = & name ## domain, \ + }; \ SYSINIT(domain_add_ ## name, SI_SUB_PROTO_DOMAIN, \ - SI_ORDER_FIRST, domain_add, & name ## domain); \ + SI_ORDER_FIRST, domain_add, &name ## domain_set_args); \ VNET_SYSINIT(vnet_domain_init_ ## name, SI_SUB_PROTO_DOMAIN, \ - SI_ORDER_SECOND, vnet_domain_init, & name ## domain); \ + SI_ORDER_SECOND, vnet_domain_init, &name ## domain_set_args); \ VNET_SYSUNINIT(vnet_domain_uninit_ ## name, \ SI_SUB_PROTO_DOMAIN, SI_ORDER_SECOND, vnet_domain_uninit, \ - & name ## domain) + &name ## domain_set_args); #else /* !VIMAGE */ #define VNET_DOMAIN_SET(name) DOMAIN_SET(name) #endif /* VIMAGE */ From owner-svn-src-all@freebsd.org Sat May 30 00:03:31 2020 Return-Path: Delivered-To: svn-src-all@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 213502F4AD6; Sat, 30 May 2020 00:03:31 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from smtp.freebsd.org (smtp.freebsd.org [96.47.72.83]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "smtp.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 49YhVB75MSz4fV2; Sat, 30 May 2020 00:03:30 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from John-Baldwins-MacBook-Pro-274.local (unknown [IPv6:2601:648:8203:2990:acb8:4bd6:3d42:cd48]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) (Authenticated sender: jhb) by smtp.freebsd.org (Postfix) with ESMTPSA id 75FA313EEC; Sat, 30 May 2020 00:03:30 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Subject: Re: svn commit: r361632 - in head/sys: conf modules/ipsec modules/tcp/tcpmd5 From: John Baldwin To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org References: <202005291921.04TJLaNc097149@repo.freebsd.org> Autocrypt: addr=jhb@FreeBSD.org; keydata= mQGiBETQ+XcRBADMFybiq69u+fJRy/0wzqTNS8jFfWaBTs5/OfcV7wWezVmf9sgwn8TW0Dk0 c9MBl0pz+H01dA2ZSGZ5fXlmFIsee1WEzqeJzpiwd/pejPgSzXB9ijbLHZ2/E0jhGBcVy5Yo /Tw5+U/+laeYKu2xb0XPvM0zMNls1ah5OnP9a6Ql6wCgupaoMySb7DXm2LHD1Z9jTsHcAQMD /1jzh2BoHriy/Q2s4KzzjVp/mQO5DSm2z14BvbQRcXU48oAosHA1u3Wrov6LfPY+0U1tG47X 1BGfnQH+rNAaH0livoSBQ0IPI/8WfIW7ub4qV6HYwWKVqkDkqwcpmGNDbz3gfaDht6nsie5Z pcuCcul4M9CW7Md6zzyvktjnbz61BADGDCopfZC4of0Z3Ka0u8Wik6UJOuqShBt1WcFS8ya1 oB4rc4tXfSHyMF63aPUBMxHR5DXeH+EO2edoSwViDMqWk1jTnYza51rbGY+pebLQOVOxAY7k do5Ordl3wklBPMVEPWoZ61SdbcjhHVwaC5zfiskcxj5wwXd2E9qYlBqRg7QeSm9obiBCYWxk d2luIDxqaGJARnJlZUJTRC5vcmc+iGAEExECACAFAkTQ+awCGwMGCwkIBwMCBBUCCAMEFgID AQIeAQIXgAAKCRBy3lIGd+N/BI6RAJ9S97fvbME+3hxzE3JUyUZ6vTewDACdE1stFuSfqMvM jomvZdYxIYyTUpC5Ag0ERND5ghAIAPwsO0B7BL+bz8sLlLoQktGxXwXQfS5cInvL17Dsgnr3 1AKa94j9EnXQyPEj7u0d+LmEe6CGEGDh1OcGFTMVrof2ZzkSy4+FkZwMKJpTiqeaShMh+Goj XlwIMDxyADYvBIg3eN5YdFKaPQpfgSqhT+7El7w+wSZZD8pPQuLAnie5iz9C8iKy4/cMSOrH YUK/tO+Nhw8Jjlw94Ik0T80iEhI2t+XBVjwdfjbq3HrJ0ehqdBwukyeJRYKmbn298KOFQVHO EVbHA4rF/37jzaMadK43FgJ0SAhPPF5l4l89z5oPu0b/+5e2inA3b8J3iGZxywjM+Csq1tqz hltEc7Q+E08AAwUIAL+15XH8bPbjNJdVyg2CMl10JNW2wWg2Q6qdljeaRqeR6zFus7EZTwtX sNzs5bP8y51PSUDJbeiy2RNCNKWFMndM22TZnk3GNG45nQd4OwYK0RZVrikalmJY5Q6m7Z16 4yrZgIXFdKj2t8F+x613/SJW1lIr9/bDp4U9tw0V1g3l2dFtD3p3ZrQ3hpoDtoK70ioIAjjH aIXIAcm3FGZFXy503DOA0KaTWwvOVdYCFLm3zWuSOmrX/GsEc7ovasOWwjPn878qVjbUKWwx Q4QkF4OhUV9zPtf9tDSAZ3x7QSwoKbCoRCZ/xbyTUPyQ1VvNy/mYrBcYlzHodsaqUDjHuW+I SQQYEQIACQUCRND5ggIbDAAKCRBy3lIGd+N/BCO8AJ9j1dWVQWxw/YdTbEyrRKOY8YZNwwCf afMAg8QvmOWnHx3wl8WslCaXaE8= Message-ID: <99ef22fb-5bcf-602a-9eb5-543827965842@FreeBSD.org> Date: Fri, 29 May 2020 17:03:28 -0700 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:68.0) Gecko/20100101 Thunderbird/68.6.0 MIME-Version: 1.0 In-Reply-To: <202005291921.04TJLaNc097149@repo.freebsd.org> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 May 2020 00:03:31 -0000 On 5/29/20 12:21 PM, John Baldwin wrote: > Author: jhb > Date: Fri May 29 19:21:35 2020 > New Revision: 361632 > URL: https://svnweb.freebsd.org/changeset/base/361632 > > Log: > Honor opt_ipsec.h from kernel builds. > > To make this simpler, set the default contents of opt_ipsec.h > for standalone modules in sys/conf/config.mk. This breaks the build of kernel configs without IPSEC_SUPPORT (some of the configs in tinderbox). I've put a change up for review at D25059. I haven't just committed it outright because it is a bit different model (though I think a better one) of using KERN_OPTS (the list of kernel options enabled) to control which modules to build rather than MK_FOO variables. MK_FOO variables are still honored for standalone builds since sys/conf/config.mk sets the equivalent KERN_OPTS values for standalone module builds. -- John Baldwin From owner-svn-src-all@freebsd.org Sat May 30 00:06:27 2020 Return-Path: Delivered-To: svn-src-all@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 371E82F486F; Sat, 30 May 2020 00:06:27 +0000 (UTC) (envelope-from adrian@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49YhYb0jd4z4fpK; Sat, 30 May 2020 00:06:27 +0000 (UTC) (envelope-from adrian@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 0F5A31FE79; Sat, 30 May 2020 00:06:27 +0000 (UTC) (envelope-from adrian@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04U06Qtw070248; Sat, 30 May 2020 00:06:26 GMT (envelope-from adrian@FreeBSD.org) Received: (from adrian@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04U06Q7N070247; Sat, 30 May 2020 00:06:26 GMT (envelope-from adrian@FreeBSD.org) Message-Id: <202005300006.04U06Q7N070247@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: adrian set sender to adrian@FreeBSD.org using -f From: Adrian Chadd Date: Sat, 30 May 2020 00:06:26 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361636 - head/sys/dev/usb/wlan X-SVN-Group: head X-SVN-Commit-Author: adrian X-SVN-Commit-Paths: head/sys/dev/usb/wlan X-SVN-Commit-Revision: 361636 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 May 2020 00:06:27 -0000 Author: adrian Date: Sat May 30 00:06:26 2020 New Revision: 361636 URL: https://svnweb.freebsd.org/changeset/base/361636 Log: [run] Set ampdu rxmax same as linux; RF2020 isn't an 11n NIC This is from the linux driver: * set the ampdu rx max to 32k for 1 stream devics like mine, and 64k for larger ones * Don't enable 11n bits for RF2020 Modified: head/sys/dev/usb/wlan/if_run.c Modified: head/sys/dev/usb/wlan/if_run.c ============================================================================== --- head/sys/dev/usb/wlan/if_run.c Fri May 29 19:44:18 2020 (r361635) +++ head/sys/dev/usb/wlan/if_run.c Sat May 30 00:06:26 2020 (r361636) @@ -847,20 +847,26 @@ run_attach(device_t self) IEEE80211_C_WME | /* WME */ IEEE80211_C_WPA; /* WPA1|WPA2(RSN) */ - ic->ic_htcaps = - IEEE80211_HTC_HT | - IEEE80211_HTC_AMPDU | - IEEE80211_HTC_AMSDU | - IEEE80211_HTCAP_MAXAMSDU_3839 | - IEEE80211_HTCAP_SMPS_OFF; - /* - * For now, just do 1 stream. Later on we'll figure out - * how many tx/rx streams a particular NIC supports. + * RF2020 is not an 11n device. */ - ic->ic_rxstream = 1; - ic->ic_txstream = 1; + if (sc->rf_rev != RT3070_RF_2020) { + device_printf(sc->sc_dev, "[HT] Enabling 802.11n\n"); + ic->ic_htcaps = + IEEE80211_HTC_HT | + IEEE80211_HTC_AMPDU | + IEEE80211_HTC_AMSDU | + IEEE80211_HTCAP_MAXAMSDU_3839 | + IEEE80211_HTCAP_SMPS_OFF; + /* + * For now, just do 1 stream. Later on we'll figure out + * how many tx/rx streams a particular NIC supports. + */ + ic->ic_rxstream = 1; + ic->ic_txstream = 1; + } + ic->ic_cryptocaps = IEEE80211_CRYPTO_WEP | IEEE80211_CRYPTO_AES_CCM | @@ -1028,8 +1034,15 @@ run_vap_create(struct ieee80211com *ic, const char nam vap->iv_update_beacon = run_update_beacon; vap->iv_max_aid = RT2870_WCID_MAX; - vap->iv_ampdu_rxmax = IEEE80211_HTCAP_MAXRXAMPDU_64K; - vap->iv_ampdu_density = IEEE80211_HTCAP_MPDUDENSITY_2; + /* + * The linux rt2800 driver limits 1 stream devices to a 32KB + * RX AMPDU. + */ + if (ic->ic_rxstream > 1) + vap->iv_ampdu_rxmax = IEEE80211_HTCAP_MAXRXAMPDU_64K; + else + vap->iv_ampdu_rxmax = IEEE80211_HTCAP_MAXRXAMPDU_32K; + vap->iv_ampdu_density = IEEE80211_HTCAP_MPDUDENSITY_2; /* 2uS */ /* * To delete the right key from h/w, we need wcid. From owner-svn-src-all@freebsd.org Sat May 30 00:07:42 2020 Return-Path: Delivered-To: svn-src-all@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 F07C62F4B49; Sat, 30 May 2020 00:07:42 +0000 (UTC) (envelope-from adrian@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49Yhb268Tvz4g6j; Sat, 30 May 2020 00:07:42 +0000 (UTC) (envelope-from adrian@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 CE78F1FF13; Sat, 30 May 2020 00:07:42 +0000 (UTC) (envelope-from adrian@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04U07gBg070472; Sat, 30 May 2020 00:07:42 GMT (envelope-from adrian@FreeBSD.org) Received: (from adrian@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04U07g1l070471; Sat, 30 May 2020 00:07:42 GMT (envelope-from adrian@FreeBSD.org) Message-Id: <202005300007.04U07g1l070471@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: adrian set sender to adrian@FreeBSD.org using -f From: Adrian Chadd Date: Sat, 30 May 2020 00:07:42 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361637 - head/sys/dev/usb/wlan X-SVN-Group: head X-SVN-Commit-Author: adrian X-SVN-Commit-Paths: head/sys/dev/usb/wlan X-SVN-Commit-Revision: 361637 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 May 2020 00:07:43 -0000 Author: adrian Date: Sat May 30 00:07:42 2020 New Revision: 361637 URL: https://svnweb.freebsd.org/changeset/base/361637 Log: [run] Don't add 11ng channels (2GHz) for RF2020 Don't also add the 11ng channels if we're not in 11n mode or net80211 will get super weird. Modified: head/sys/dev/usb/wlan/if_run.c Modified: head/sys/dev/usb/wlan/if_run.c ============================================================================== --- head/sys/dev/usb/wlan/if_run.c Sat May 30 00:06:26 2020 (r361636) +++ head/sys/dev/usb/wlan/if_run.c Sat May 30 00:07:42 2020 (r361637) @@ -4933,7 +4933,8 @@ run_getradiocaps(struct ieee80211com *ic, memset(bands, 0, sizeof(bands)); setbit(bands, IEEE80211_MODE_11B); setbit(bands, IEEE80211_MODE_11G); - setbit(bands, IEEE80211_MODE_11NG); + if (sc->rf_rev != RT3070_RF_2020) + setbit(bands, IEEE80211_MODE_11NG); /* Note: for now, only support HT20 channels */ ieee80211_add_channels_default_2ghz(chans, maxchans, nchans, bands, 0); @@ -4942,7 +4943,6 @@ run_getradiocaps(struct ieee80211com *ic, sc->rf_rev == RT3070_RF_3052 || sc->rf_rev == RT3593_RF_3053 || sc->rf_rev == RT5592_RF_5592) { setbit(bands, IEEE80211_MODE_11A); - setbit(bands, IEEE80211_MODE_11NA); /* Note: for now, only support HT20 channels */ ieee80211_add_channel_list_5ghz(chans, maxchans, nchans, run_chan_5ghz, nitems(run_chan_5ghz), bands, 0); From owner-svn-src-all@freebsd.org Sat May 30 00:47:04 2020 Return-Path: Delivered-To: svn-src-all@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 C70092F575F; Sat, 30 May 2020 00:47:04 +0000 (UTC) (envelope-from jhb@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49YjSS4n9Cz3VlV; Sat, 30 May 2020 00:47:04 +0000 (UTC) (envelope-from jhb@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 9A7BD205D5; Sat, 30 May 2020 00:47:04 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04U0l4Rq097310; Sat, 30 May 2020 00:47:04 GMT (envelope-from jhb@FreeBSD.org) Received: (from jhb@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04U0l4Mn097308; Sat, 30 May 2020 00:47:04 GMT (envelope-from jhb@FreeBSD.org) Message-Id: <202005300047.04U0l4Mn097308@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: jhb set sender to jhb@FreeBSD.org using -f From: John Baldwin Date: Sat, 30 May 2020 00:47:04 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361638 - in head/sys: conf modules modules/tcp X-SVN-Group: head X-SVN-Commit-Author: jhb X-SVN-Commit-Paths: in head/sys: conf modules modules/tcp X-SVN-Commit-Revision: 361638 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 May 2020 00:47:04 -0000 Author: jhb Date: Sat May 30 00:47:03 2020 New Revision: 361638 URL: https://svnweb.freebsd.org/changeset/base/361638 Log: Only build ipsec modules if the kernel includes IPSEC_SUPPORT. Honoring the kernel-supplied opt_ipsec.h in r361632 causes builds of ipsec modules to fail if the kernel doesn't include IPSEC_SUPPORT. However, the module can never be loaded into such a kernel, so only build the modules if the kernel includes IPSEC_SUPPORT. Reviewed by: imp Differential Revision: https://reviews.freebsd.org/D25059 Modified: head/sys/conf/config.mk head/sys/modules/Makefile head/sys/modules/tcp/Makefile Modified: head/sys/conf/config.mk ============================================================================== --- head/sys/conf/config.mk Sat May 30 00:07:42 2020 (r361637) +++ head/sys/conf/config.mk Sat May 30 00:47:03 2020 (r361638) @@ -30,8 +30,10 @@ opt_inet.h: opt_inet6.h: @echo "#define INET6 1" > ${.TARGET} .endif +.if ${MK_IPSEC_SUPPORT} != "no" opt_ipsec.h: @echo "#define IPSEC_SUPPORT 1" > ${.TARGET} +.endif .if ${MK_RATELIMIT} != "no" opt_ratelimit.h: @echo "#define RATELIMIT 1" > ${.TARGET} @@ -59,6 +61,9 @@ KERN_OPTS+= INET TCP_OFFLOAD .endif .if ${MK_INET6_SUPPORT} != "no" KERN_OPTS+= INET6 +.endif +.if ${MK_IPSEC_SUPPORT} != "no" +KERN_OPTS+= IPSEC_SUPPORT .endif .elif !defined(KERN_OPTS) # Add all the options that are mentioned in any opt_*.h file when we Modified: head/sys/modules/Makefile ============================================================================== --- head/sys/modules/Makefile Sat May 30 00:07:42 2020 (r361637) +++ head/sys/modules/Makefile Sat May 30 00:47:03 2020 (r361638) @@ -427,7 +427,7 @@ _if_enc= if_enc _if_gif= if_gif _if_gre= if_gre _ipfw_pmod= ipfw_pmod -.if ${MK_IPSEC_SUPPORT} != "no" +.if ${KERN_OPTS:MIPSEC_SUPPORT} _ipsec= ipsec .endif .endif Modified: head/sys/modules/tcp/Makefile ============================================================================== --- head/sys/modules/tcp/Makefile Sat May 30 00:07:42 2020 (r361637) +++ head/sys/modules/tcp/Makefile Sat May 30 00:47:03 2020 (r361638) @@ -2,8 +2,7 @@ # $FreeBSD$ # -SYSDIR?=${SRCTOP}/sys -.include "${SYSDIR}/conf/kern.opts.mk" +.include SUBDIR= \ ${_tcp_bbr} \ @@ -17,7 +16,7 @@ _tcp_rack= rack .if (${MK_INET_SUPPORT} != "no" || ${MK_INET6_SUPPORT} != "no") || \ defined(ALL_MODULES) -.if ${MK_IPSEC_SUPPORT} != "no" +.if ${KERN_OPTS:MIPSEC_SUPPORT} _tcpmd5= tcpmd5 .endif .endif From owner-svn-src-all@freebsd.org Sat May 30 01:17:27 2020 Return-Path: Delivered-To: svn-src-all@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 21B282F603F; Sat, 30 May 2020 01:17:27 +0000 (UTC) (envelope-from markj@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49Yk7V75QMz3Y9Q; Sat, 30 May 2020 01:17:26 +0000 (UTC) (envelope-from markj@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 EA1D220858; Sat, 30 May 2020 01:17:26 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04U1HQ0D016692; Sat, 30 May 2020 01:17:26 GMT (envelope-from markj@FreeBSD.org) Received: (from markj@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04U1HQvt016691; Sat, 30 May 2020 01:17:26 GMT (envelope-from markj@FreeBSD.org) Message-Id: <202005300117.04U1HQvt016691@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: markj set sender to markj@FreeBSD.org using -f From: Mark Johnston Date: Sat, 30 May 2020 01:17:26 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org Subject: svn commit: r361639 - in stable/12/sys: net netpfil/pf X-SVN-Group: stable-12 X-SVN-Commit-Author: markj X-SVN-Commit-Paths: in stable/12/sys: net netpfil/pf X-SVN-Commit-Revision: 361639 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 May 2020 01:17:27 -0000 Author: markj Date: Sat May 30 01:17:26 2020 New Revision: 361639 URL: https://svnweb.freebsd.org/changeset/base/361639 Log: MFC r361095: pf: Add a new zone for per-table entry counters. Modified: stable/12/sys/net/pfvar.h stable/12/sys/netpfil/pf/pf_table.c Directory Properties: stable/12/ (props changed) Modified: stable/12/sys/net/pfvar.h ============================================================================== --- stable/12/sys/net/pfvar.h Sat May 30 00:47:03 2020 (r361638) +++ stable/12/sys/net/pfvar.h Sat May 30 01:17:26 2020 (r361639) @@ -1000,6 +1000,8 @@ struct pfr_addr { enum { PFR_DIR_IN, PFR_DIR_OUT, PFR_DIR_MAX }; enum { PFR_OP_BLOCK, PFR_OP_PASS, PFR_OP_ADDR_MAX, PFR_OP_TABLE_MAX }; +enum { PFR_TYPE_PACKETS, PFR_TYPE_BYTES, PFR_TYPE_MAX }; +#define PFR_NUM_COUNTERS (PFR_DIR_MAX * PFR_OP_ADDR_MAX * PFR_TYPE_MAX) #define PFR_OP_XPASS PFR_OP_ADDR_MAX struct pfr_astats { @@ -1045,10 +1047,12 @@ union sockaddr_union { #endif /* _SOCKADDR_UNION_DEFINED */ struct pfr_kcounters { - counter_u64_t pfrkc_packets[PFR_DIR_MAX][PFR_OP_ADDR_MAX]; - counter_u64_t pfrkc_bytes[PFR_DIR_MAX][PFR_OP_ADDR_MAX]; + counter_u64_t pfrkc_counters; long pfrkc_tzero; }; +#define pfr_kentry_counter(kc, dir, op, t) \ + ((kc)->pfrkc_counters + \ + (dir) * PFR_OP_ADDR_MAX * PFR_TYPE_MAX + (op) * PFR_TYPE_MAX + (t)) SLIST_HEAD(pfr_kentryworkq, pfr_kentry); struct pfr_kentry { Modified: stable/12/sys/netpfil/pf/pf_table.c ============================================================================== --- stable/12/sys/netpfil/pf/pf_table.c Sat May 30 00:47:03 2020 (r361638) +++ stable/12/sys/netpfil/pf/pf_table.c Sat May 30 01:17:26 2020 (r361639) @@ -127,6 +127,8 @@ struct pfr_walktree { static MALLOC_DEFINE(M_PFTABLE, "pf_table", "pf(4) tables structures"); VNET_DEFINE_STATIC(uma_zone_t, pfr_kentry_z); #define V_pfr_kentry_z VNET(pfr_kentry_z) +VNET_DEFINE_STATIC(uma_zone_t, pfr_kentry_counter_z); +#define V_pfr_kentry_counter_z VNET(pfr_kentry_counter_z) static struct pf_addr pfr_ffaddr = { .addr32 = { 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff } @@ -144,12 +146,8 @@ static void pfr_mark_addrs(struct pfr_ktable *); static struct pfr_kentry *pfr_lookup_addr(struct pfr_ktable *, struct pfr_addr *, int); -static bool pfr_create_kentry_counter(struct pfr_kentry *, int, - int); static struct pfr_kentry *pfr_create_kentry(struct pfr_addr *, bool); static void pfr_destroy_kentries(struct pfr_kentryworkq *); -static void pfr_destroy_kentry_counter(struct pfr_kcounters *, - int, int); static void pfr_destroy_kentry(struct pfr_kentry *); static void pfr_insert_kentries(struct pfr_ktable *, struct pfr_kentryworkq *, long); @@ -205,6 +203,9 @@ void pfr_initialize(void) { + V_pfr_kentry_counter_z = uma_zcreate("pf table entry counters", + PFR_NUM_COUNTERS * sizeof(uint64_t), NULL, NULL, NULL, NULL, + UMA_ALIGN_PTR, UMA_ZONE_PCPU); V_pfr_kentry_z = uma_zcreate("pf table entries", sizeof(struct pfr_kentry), NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0); @@ -217,6 +218,7 @@ pfr_cleanup(void) { uma_zdestroy(V_pfr_kentry_z); + uma_zdestroy(V_pfr_kentry_counter_z); } int @@ -785,27 +787,11 @@ pfr_lookup_addr(struct pfr_ktable *kt, struct pfr_addr return (ke); } -static bool -pfr_create_kentry_counter(struct pfr_kentry *ke, int pfr_dir, int pfr_op) -{ - counter_u64_t c; - - c = counter_u64_alloc(M_NOWAIT); - if (c == NULL) - return (false); - ke->pfrke_counters.pfrkc_packets[pfr_dir][pfr_op] = c; - c = counter_u64_alloc(M_NOWAIT); - if (c == NULL) - return (false); - ke->pfrke_counters.pfrkc_bytes[pfr_dir][pfr_op] = c; - return (true); -} - static struct pfr_kentry * pfr_create_kentry(struct pfr_addr *ad, bool counters) { struct pfr_kentry *ke; - int pfr_dir, pfr_op; + counter_u64_t c; ke = uma_zalloc(V_pfr_kentry_z, M_NOWAIT | M_ZERO); if (ke == NULL) @@ -819,15 +805,14 @@ pfr_create_kentry(struct pfr_addr *ad, bool counters) ke->pfrke_net = ad->pfra_net; ke->pfrke_not = ad->pfra_not; ke->pfrke_counters.pfrkc_tzero = 0; - if (counters) - for (pfr_dir = 0; pfr_dir < PFR_DIR_MAX; pfr_dir++) - for (pfr_op = 0; pfr_op < PFR_OP_ADDR_MAX; pfr_op++) { - if (!pfr_create_kentry_counter(ke, pfr_dir, - pfr_op)) { - pfr_destroy_kentry(ke); - return (NULL); - } - } + if (counters) { + c = uma_zalloc_pcpu(V_pfr_kentry_counter_z, M_NOWAIT | M_ZERO); + if (c == NULL) { + pfr_destroy_kentry(ke); + return (NULL); + } + ke->pfrke_counters.pfrkc_counters = c; + } return (ke); } @@ -843,26 +828,12 @@ pfr_destroy_kentries(struct pfr_kentryworkq *workq) } static void -pfr_destroy_kentry_counter(struct pfr_kcounters *kc, int pfr_dir, int pfr_op) +pfr_destroy_kentry(struct pfr_kentry *ke) { counter_u64_t c; - if ((c = kc->pfrkc_packets[pfr_dir][pfr_op]) != NULL) - counter_u64_free(c); - if ((c = kc->pfrkc_bytes[pfr_dir][pfr_op]) != NULL) - counter_u64_free(c); -} - -static void -pfr_destroy_kentry(struct pfr_kentry *ke) -{ - int pfr_dir, pfr_op; - - for (pfr_dir = 0; pfr_dir < PFR_DIR_MAX; pfr_dir ++) - for (pfr_op = 0; pfr_op < PFR_OP_ADDR_MAX; pfr_op ++) - pfr_destroy_kentry_counter(&ke->pfrke_counters, - pfr_dir, pfr_op); - + if ((c = ke->pfrke_counters.pfrkc_counters) != NULL) + uma_zfree_pcpu(V_pfr_kentry_counter_z, c); uma_zfree(V_pfr_kentry_z, ke); } @@ -935,28 +906,19 @@ pfr_clean_node_mask(struct pfr_ktable *kt, } static void -pfr_clear_kentry_counters(struct pfr_kentry *p, int pfr_dir, int pfr_op) -{ - counter_u64_zero(p->pfrke_counters.pfrkc_packets[pfr_dir][pfr_op]); - counter_u64_zero(p->pfrke_counters.pfrkc_bytes[pfr_dir][pfr_op]); -} - -static void pfr_clstats_kentries(struct pfr_ktable *kt, struct pfr_kentryworkq *workq, long tzero, int negchange) { struct pfr_kentry *p; - int pfr_dir, pfr_op; + int i; SLIST_FOREACH(p, workq, pfrke_workq) { if (negchange) p->pfrke_not = !p->pfrke_not; if ((kt->pfrkt_flags & PFR_TFLAG_COUNTERS) != 0) - for (pfr_dir = 0; pfr_dir < PFR_DIR_MAX; pfr_dir++) - for (pfr_op = 0; pfr_op < PFR_OP_ADDR_MAX; - pfr_op++) - pfr_clear_kentry_counters(p, pfr_dir, - pfr_op); + for (i = 0; i < PFR_NUM_COUNTERS; i++) + counter_u64_zero( + p->pfrke_counters.pfrkc_counters + i); p->pfrke_counters.pfrkc_tzero = tzero; } } @@ -1077,12 +1039,12 @@ pfr_copyout_astats(struct pfr_astats *as, const struct return; } - for (dir = 0; dir < PFR_DIR_MAX; dir ++) { + for (dir = 0; dir < PFR_DIR_MAX; dir++) { for (op = 0; op < PFR_OP_ADDR_MAX; op ++) { - as->pfras_packets[dir][op] = - counter_u64_fetch(kc->pfrkc_packets[dir][op]); - as->pfras_bytes[dir][op] = - counter_u64_fetch(kc->pfrkc_bytes[dir][op]); + as->pfras_packets[dir][op] = counter_u64_fetch( + pfr_kentry_counter(kc, dir, op, PFR_TYPE_PACKETS)); + as->pfras_bytes[dir][op] = counter_u64_fetch( + pfr_kentry_counter(kc, dir, op, PFR_TYPE_BYTES)); } } } @@ -2147,10 +2109,10 @@ pfr_update_stats(struct pfr_ktable *kt, struct pf_addr counter_u64_add(kt->pfrkt_bytes[dir_out][op_pass], len); if (ke != NULL && op_pass != PFR_OP_XPASS && (kt->pfrkt_flags & PFR_TFLAG_COUNTERS)) { - counter_u64_add(ke->pfrke_counters. - pfrkc_packets[dir_out][op_pass], 1); - counter_u64_add(ke->pfrke_counters. - pfrkc_bytes[dir_out][op_pass], len); + counter_u64_add(pfr_kentry_counter(&ke->pfrke_counters, + dir_out, op_pass, PFR_TYPE_PACKETS), 1); + counter_u64_add(pfr_kentry_counter(&ke->pfrke_counters, + dir_out, op_pass, PFR_TYPE_BYTES), len); } } From owner-svn-src-all@freebsd.org Sat May 30 01:48:12 2020 Return-Path: Delivered-To: svn-src-all@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 9B85C2F6AB2; Sat, 30 May 2020 01:48:12 +0000 (UTC) (envelope-from dougm@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49Ykq03dhDz3ZdC; Sat, 30 May 2020 01:48:12 +0000 (UTC) (envelope-from dougm@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 782E52121C; Sat, 30 May 2020 01:48:12 +0000 (UTC) (envelope-from dougm@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04U1mC1a035203; Sat, 30 May 2020 01:48:12 GMT (envelope-from dougm@FreeBSD.org) Received: (from dougm@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04U1mCoV035202; Sat, 30 May 2020 01:48:12 GMT (envelope-from dougm@FreeBSD.org) Message-Id: <202005300148.04U1mCoV035202@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: dougm set sender to dougm@FreeBSD.org using -f From: Doug Moore Date: Sat, 30 May 2020 01:48:12 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361640 - head/sys/sys X-SVN-Group: head X-SVN-Commit-Author: dougm X-SVN-Commit-Paths: head/sys/sys X-SVN-Commit-Revision: 361640 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 May 2020 01:48:12 -0000 Author: dougm Date: Sat May 30 01:48:12 2020 New Revision: 361640 URL: https://svnweb.freebsd.org/changeset/base/361640 Log: RB_REMOVE invokes RB_REMOVE_COLOR either when child is red or child is null. In the first case, RB_REMOVE_COLOR just changes the child to black and returns. With this change, RB_REMOVE handles that case, and drops the child argument to RB_REMOVE_COLOR, since that value is always null. RB_REMOVE_COLOR is changed to remove a couple of unneeded tests, and to eliminate some deep indentation. RB_ISRED is defined to combine a null check with a test for redness, to replace that combination in several places. Reviewed by: markj Tested by: pho Differential Revision: https://reviews.freebsd.org/D25032 Modified: head/sys/sys/tree.h Modified: head/sys/sys/tree.h ============================================================================== --- head/sys/sys/tree.h Sat May 30 01:17:26 2020 (r361639) +++ head/sys/sys/tree.h Sat May 30 01:48:12 2020 (r361640) @@ -321,6 +321,7 @@ struct { \ #define RB_RIGHT(elm, field) (elm)->field.rbe_right #define RB_PARENT(elm, field) (elm)->field.rbe_parent #define RB_COLOR(elm, field) (elm)->field.rbe_color +#define RB_ISRED(elm, field) ((elm) != NULL && RB_COLOR(elm, field) == RB_RED) #define RB_ROOT(head) (head)->rbh_root #define RB_EMPTY(head) (RB_ROOT(head) == NULL) @@ -396,7 +397,7 @@ struct { \ #define RB_PROTOTYPE_INSERT_COLOR(name, type, attr) \ attr void name##_RB_INSERT_COLOR(struct name *, struct type *) #define RB_PROTOTYPE_REMOVE_COLOR(name, type, attr) \ - attr void name##_RB_REMOVE_COLOR(struct name *, struct type *, struct type *) + attr void name##_RB_REMOVE_COLOR(struct name *, struct type *) #define RB_PROTOTYPE_REMOVE(name, type, attr) \ attr struct type *name##_RB_REMOVE(struct name *, struct type *) #define RB_PROTOTYPE_INSERT(name, type, attr) \ @@ -439,12 +440,11 @@ attr void \ name##_RB_INSERT_COLOR(struct name *head, struct type *elm) \ { \ struct type *parent, *gparent, *tmp; \ - while ((parent = RB_PARENT(elm, field)) != NULL && \ - RB_COLOR(parent, field) == RB_RED) { \ + while (RB_ISRED((parent = RB_PARENT(elm, field)), field)) { \ gparent = RB_PARENT(parent, field); \ if (parent == RB_LEFT(gparent, field)) { \ tmp = RB_RIGHT(gparent, field); \ - if (tmp && RB_COLOR(tmp, field) == RB_RED) { \ + if (RB_ISRED(tmp, field)) { \ RB_COLOR(tmp, field) = RB_BLACK; \ RB_SET_BLACKRED(parent, gparent, field);\ elm = gparent; \ @@ -460,7 +460,7 @@ name##_RB_INSERT_COLOR(struct name *head, struct type RB_ROTATE_RIGHT(head, gparent, tmp, field); \ } else { \ tmp = RB_LEFT(gparent, field); \ - if (tmp && RB_COLOR(tmp, field) == RB_RED) { \ + if (RB_ISRED(tmp, field)) { \ RB_COLOR(tmp, field) = RB_BLACK; \ RB_SET_BLACKRED(parent, gparent, field);\ elm = gparent; \ @@ -481,11 +481,11 @@ name##_RB_INSERT_COLOR(struct name *head, struct type #define RB_GENERATE_REMOVE_COLOR(name, type, field, attr) \ attr void \ -name##_RB_REMOVE_COLOR(struct name *head, struct type *parent, struct type *elm) \ +name##_RB_REMOVE_COLOR(struct name *head, struct type *parent) \ { \ - struct type *tmp; \ - while ((elm == NULL || RB_COLOR(elm, field) == RB_BLACK) && \ - elm != RB_ROOT(head)) { \ + struct type *elm, *tmp; \ + elm = NULL; \ + do { \ if (RB_LEFT(parent, field) == elm) { \ tmp = RB_RIGHT(parent, field); \ if (RB_COLOR(tmp, field) == RB_RED) { \ @@ -493,32 +493,29 @@ name##_RB_REMOVE_COLOR(struct name *head, struct type RB_ROTATE_LEFT(head, parent, tmp, field);\ tmp = RB_RIGHT(parent, field); \ } \ - if ((RB_LEFT(tmp, field) == NULL || \ - RB_COLOR(RB_LEFT(tmp, field), field) == RB_BLACK) &&\ - (RB_RIGHT(tmp, field) == NULL || \ - RB_COLOR(RB_RIGHT(tmp, field), field) == RB_BLACK)) {\ + if (!RB_ISRED(RB_LEFT(tmp, field), field) && \ + !RB_ISRED(RB_RIGHT(tmp, field), field)) { \ RB_COLOR(tmp, field) = RB_RED; \ elm = parent; \ parent = RB_PARENT(elm, field); \ - } else { \ - if (RB_RIGHT(tmp, field) == NULL || \ - RB_COLOR(RB_RIGHT(tmp, field), field) == RB_BLACK) {\ - struct type *oleft; \ - if ((oleft = RB_LEFT(tmp, field)) \ - != NULL) \ - RB_COLOR(oleft, field) = RB_BLACK;\ - RB_COLOR(tmp, field) = RB_RED; \ - RB_ROTATE_RIGHT(head, tmp, oleft, field);\ - tmp = RB_RIGHT(parent, field); \ - } \ - RB_COLOR(tmp, field) = RB_COLOR(parent, field);\ - RB_COLOR(parent, field) = RB_BLACK; \ - if (RB_RIGHT(tmp, field)) \ - RB_COLOR(RB_RIGHT(tmp, field), field) = RB_BLACK;\ - RB_ROTATE_LEFT(head, parent, tmp, field);\ - elm = RB_ROOT(head); \ - break; \ + continue; \ } \ + if (!RB_ISRED(RB_RIGHT(tmp, field), field)) { \ + struct type *oleft; \ + if ((oleft = RB_LEFT(tmp, field)) \ + != NULL) \ + RB_COLOR(oleft, field) = RB_BLACK; \ + RB_COLOR(tmp, field) = RB_RED; \ + RB_ROTATE_RIGHT(head, tmp, oleft, field); \ + tmp = RB_RIGHT(parent, field); \ + } \ + RB_COLOR(tmp, field) = RB_COLOR(parent, field); \ + RB_COLOR(parent, field) = RB_BLACK; \ + if (RB_RIGHT(tmp, field)) \ + RB_COLOR(RB_RIGHT(tmp, field), field) = RB_BLACK; \ + RB_ROTATE_LEFT(head, parent, tmp, field); \ + elm = RB_ROOT(head); \ + break; \ } else { \ tmp = RB_LEFT(parent, field); \ if (RB_COLOR(tmp, field) == RB_RED) { \ @@ -526,59 +523,54 @@ name##_RB_REMOVE_COLOR(struct name *head, struct type RB_ROTATE_RIGHT(head, parent, tmp, field);\ tmp = RB_LEFT(parent, field); \ } \ - if ((RB_LEFT(tmp, field) == NULL || \ - RB_COLOR(RB_LEFT(tmp, field), field) == RB_BLACK) &&\ - (RB_RIGHT(tmp, field) == NULL || \ - RB_COLOR(RB_RIGHT(tmp, field), field) == RB_BLACK)) {\ + if (!RB_ISRED(RB_LEFT(tmp, field), field) && \ + !RB_ISRED(RB_RIGHT(tmp, field), field)) { \ RB_COLOR(tmp, field) = RB_RED; \ elm = parent; \ parent = RB_PARENT(elm, field); \ - } else { \ - if (RB_LEFT(tmp, field) == NULL || \ - RB_COLOR(RB_LEFT(tmp, field), field) == RB_BLACK) {\ - struct type *oright; \ - if ((oright = RB_RIGHT(tmp, field)) \ - != NULL) \ - RB_COLOR(oright, field) = RB_BLACK;\ - RB_COLOR(tmp, field) = RB_RED; \ - RB_ROTATE_LEFT(head, tmp, oright, field);\ - tmp = RB_LEFT(parent, field); \ - } \ - RB_COLOR(tmp, field) = RB_COLOR(parent, field);\ - RB_COLOR(parent, field) = RB_BLACK; \ - if (RB_LEFT(tmp, field)) \ - RB_COLOR(RB_LEFT(tmp, field), field) = RB_BLACK;\ - RB_ROTATE_RIGHT(head, parent, tmp, field);\ - elm = RB_ROOT(head); \ - break; \ + continue; \ } \ + if (!RB_ISRED(RB_LEFT(tmp, field), field)) { \ + struct type *oright; \ + if ((oright = RB_RIGHT(tmp, field)) \ + != NULL) \ + RB_COLOR(oright, field) = RB_BLACK; \ + RB_COLOR(tmp, field) = RB_RED; \ + RB_ROTATE_LEFT(head, tmp, oright, field); \ + tmp = RB_LEFT(parent, field); \ + } \ + RB_COLOR(tmp, field) = RB_COLOR(parent, field); \ + RB_COLOR(parent, field) = RB_BLACK; \ + if (RB_LEFT(tmp, field)) \ + RB_COLOR(RB_LEFT(tmp, field), field) = RB_BLACK; \ + RB_ROTATE_RIGHT(head, parent, tmp, field); \ + elm = RB_ROOT(head); \ + break; \ } \ - } \ - if (elm) \ - RB_COLOR(elm, field) = RB_BLACK; \ + } while (!RB_ISRED(elm, field) && parent != NULL); \ + RB_COLOR(elm, field) = RB_BLACK; \ } #define RB_GENERATE_REMOVE(name, type, field, attr) \ attr struct type * \ name##_RB_REMOVE(struct name *head, struct type *elm) \ { \ - struct type *child, *parent, *parent_old, *old = elm; \ + struct type *child, *old, *parent, *parent_old, *right; \ int color; \ + \ + old = elm; \ parent_old = parent = RB_PARENT(elm, field); \ + right = RB_RIGHT(elm, field); \ color = RB_COLOR(elm, field); \ - if (RB_LEFT(elm, field) == NULL) { \ - elm = child = RB_RIGHT(elm, field); \ - if (elm != NULL) \ - RB_PARENT(elm, field) = parent; \ - } else if (RB_RIGHT(elm, field) == NULL) { \ + if (RB_LEFT(elm, field) == NULL) \ + elm = child = right; \ + else if (right == NULL) \ elm = child = RB_LEFT(elm, field); \ - RB_PARENT(elm, field) = parent; \ - } else { \ - elm = RB_RIGHT(old, field); \ - if ((child = RB_LEFT(elm, field)) == NULL) { \ - child = RB_RIGHT(elm, field); \ + else { \ + if ((child = RB_LEFT(right, field)) == NULL) { \ + child = RB_RIGHT(right, field); \ RB_RIGHT(old, field) = child; \ - parent = elm; \ + parent = elm = right; \ } else { \ do \ elm = child; \ @@ -586,8 +578,6 @@ name##_RB_REMOVE(struct name *head, struct type *elm) child = RB_RIGHT(elm, field); \ parent = RB_PARENT(elm, field); \ RB_LEFT(parent, field) = child; \ - if (child != NULL) \ - RB_PARENT(child, field) = parent; \ RB_PARENT(RB_RIGHT(old, field), field) = elm; \ } \ RB_PARENT(RB_LEFT(old, field), field) = elm; \ @@ -600,8 +590,11 @@ name##_RB_REMOVE(struct name *head, struct type *elm) RB_LEFT(parent_old, field) = elm; \ else \ RB_RIGHT(parent_old, field) = elm; \ - if (color == RB_BLACK) \ - name##_RB_REMOVE_COLOR(head, parent, child); \ + if (child != NULL) { \ + RB_PARENT(child, field) = parent; \ + RB_COLOR(child, field) = RB_BLACK; \ + } else if (color != RB_RED && parent != NULL) \ + name##_RB_REMOVE_COLOR(head, parent); \ while (parent != NULL) { \ RB_AUGMENT(parent); \ parent = RB_PARENT(parent, field); \ From owner-svn-src-all@freebsd.org Sat May 30 02:02:35 2020 Return-Path: Delivered-To: svn-src-all@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 766CB2F6F2C; Sat, 30 May 2020 02:02:35 +0000 (UTC) (envelope-from karels@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49Yl7b2Zy7z3bhM; Sat, 30 May 2020 02:02:35 +0000 (UTC) (envelope-from karels@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 53E9120E75; Sat, 30 May 2020 02:02:35 +0000 (UTC) (envelope-from karels@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04U22Zcw047750; Sat, 30 May 2020 02:02:35 GMT (envelope-from karels@FreeBSD.org) Received: (from karels@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04U22ZgW047749; Sat, 30 May 2020 02:02:35 GMT (envelope-from karels@FreeBSD.org) Message-Id: <202005300202.04U22ZgW047749@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: karels set sender to karels@FreeBSD.org using -f From: Mike Karels Date: Sat, 30 May 2020 02:02:35 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361641 - head/sys/arm64/broadcom/genet X-SVN-Group: head X-SVN-Commit-Author: karels X-SVN-Commit-Paths: head/sys/arm64/broadcom/genet X-SVN-Commit-Revision: 361641 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 May 2020 02:02:35 -0000 Author: karels Date: Sat May 30 02:02:34 2020 New Revision: 361641 URL: https://svnweb.freebsd.org/changeset/base/361641 Log: genet: fix issues with transmit checksum offload Fix problem with ICMP echo replies: check only deferred data checksum flags, and not the received checksum status bits, when checking whether a packet has a deferred checksum; otherwise echo replies are corrupted because the received checksum status bits are still present. Fix some unhandled cases in packet shuffling for checksum offload. Modified: head/sys/arm64/broadcom/genet/if_genet.c Modified: head/sys/arm64/broadcom/genet/if_genet.c ============================================================================== --- head/sys/arm64/broadcom/genet/if_genet.c Sat May 30 01:48:12 2020 (r361640) +++ head/sys/arm64/broadcom/genet/if_genet.c Sat May 30 02:02:34 2020 (r361641) @@ -948,6 +948,9 @@ gen_start(if_t ifp) GEN_UNLOCK(sc); } +/* Test for any delayed checksum */ +#define CSUM_DELAY_ANY (CSUM_TCP | CSUM_UDP | CSUM_IP6_TCP | CSUM_IP6_UDP) + static int gen_encap(struct gen_softc *sc, struct mbuf **mp) { @@ -978,12 +981,11 @@ gen_encap(struct gen_softc *sc, struct mbuf **mp) } offset = gen_parse_tx(m, csum_flags); sb = mtod(m, struct statusblock *); - if (csum_flags != 0) { + if ((csum_flags & CSUM_DELAY_ANY) != 0) { csuminfo = (offset << TXCSUM_OFF_SHIFT) | (offset + csumdata); - if (csum_flags & (CSUM_TCP | CSUM_UDP)) - csuminfo |= TXCSUM_LEN_VALID; - if (csum_flags & CSUM_UDP) + csuminfo |= TXCSUM_LEN_VALID; + if (csum_flags & (CSUM_UDP | CSUM_IP6_UDP)) csuminfo |= TXCSUM_UDP; sb->txcsuminfo = csuminfo; } else @@ -1045,7 +1047,7 @@ gen_encap(struct gen_softc *sc, struct mbuf **mp) if (i == 0) { length_status |= GENET_TX_DESC_STATUS_SOP | GENET_TX_DESC_STATUS_CRC; - if (csum_flags != 0) + if ((csum_flags & CSUM_DELAY_ANY) != 0) length_status |= GENET_TX_DESC_STATUS_CKSUM; } if (i == nsegs - 1) @@ -1087,6 +1089,7 @@ static int gen_parse_tx(struct mbuf *m, int csum_flags) { int offset, off_in_m; + bool copy = false, shift = false; u_char *p, *copy_p = NULL; struct mbuf *m0 = m; uint16_t ether_type; @@ -1098,22 +1101,44 @@ gen_parse_tx(struct mbuf *m, int csum_flags) m = m->m_next; off_in_m = 0; p = mtod(m, u_char *); + copy = true; } else { + /* + * If statusblock is not at beginning of mbuf (likely), + * then remember to move mbuf contents down before copying + * after them. + */ + if ((m->m_flags & M_EXT) == 0 && m->m_data != m->m_pktdat) + shift = true; p = mtodo(m, sizeof(struct statusblock)); off_in_m = sizeof(struct statusblock); } -/* If headers need to be copied contiguous to statusblock, do so. */ -#define COPY(size) { \ - if (copy_p != NULL) { \ - int hsize = size; \ - bcopy(p, copy_p, hsize); \ - m0->m_len += hsize; \ - m0->m_pkthdr.len += hsize; /* unneeded */ \ - copy_p += hsize; \ - m->m_len -= hsize; \ - m->m_data += hsize; \ - } \ +/* + * If headers need to be copied contiguous to statusblock, do so. + * If copying to the internal mbuf data area, and the status block + * is not at the beginning of that area, shift the status block (which + * is empty) and following data. + */ +#define COPY(size) { \ + int hsize = size; \ + if (copy) { \ + if (shift) { \ + u_char *p0; \ + shift = false; \ + p0 = mtodo(m0, sizeof(struct statusblock)); \ + m0->m_data = m0->m_pktdat; \ + bcopy(p0, mtodo(m0, sizeof(struct statusblock)),\ + m0->m_len - sizeof(struct statusblock)); \ + copy_p = mtodo(m0, sizeof(struct statusblock)); \ + } \ + bcopy(p, copy_p, hsize); \ + m0->m_len += hsize; \ + m0->m_pkthdr.len += hsize; /* unneeded */ \ + m->m_len -= hsize; \ + m->m_data += hsize; \ + } \ + copy_p += hsize; \ } KASSERT((sizeof(struct statusblock) + sizeof(struct ether_vlan_header) + @@ -1127,6 +1152,7 @@ gen_parse_tx(struct mbuf *m, int csum_flags) m = m->m_next; off_in_m = 0; p = mtod(m, u_char *); + copy = true; } else { off_in_m += sizeof(struct ether_vlan_header); p += sizeof(struct ether_vlan_header); @@ -1139,6 +1165,7 @@ gen_parse_tx(struct mbuf *m, int csum_flags) m = m->m_next; off_in_m = 0; p = mtod(m, u_char *); + copy = true; } else { off_in_m += sizeof(struct ether_header); p += sizeof(struct ether_header); From owner-svn-src-all@freebsd.org Sat May 30 02:09:37 2020 Return-Path: Delivered-To: svn-src-all@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 188D52F704E; Sat, 30 May 2020 02:09:37 +0000 (UTC) (envelope-from karels@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49YlHh6z2Zz3cGx; Sat, 30 May 2020 02:09:36 +0000 (UTC) (envelope-from karels@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 D0730211EB; Sat, 30 May 2020 02:09:36 +0000 (UTC) (envelope-from karels@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04U29apT048162; Sat, 30 May 2020 02:09:36 GMT (envelope-from karels@FreeBSD.org) Received: (from karels@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04U29aYu048161; Sat, 30 May 2020 02:09:36 GMT (envelope-from karels@FreeBSD.org) Message-Id: <202005300209.04U29aYu048161@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: karels set sender to karels@FreeBSD.org using -f From: Mike Karels Date: Sat, 30 May 2020 02:09:36 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361642 - head/sys/arm64/broadcom/genet X-SVN-Group: head X-SVN-Commit-Author: karels X-SVN-Commit-Paths: head/sys/arm64/broadcom/genet X-SVN-Commit-Revision: 361642 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 May 2020 02:09:37 -0000 Author: karels Date: Sat May 30 02:09:36 2020 New Revision: 361642 URL: https://svnweb.freebsd.org/changeset/base/361642 Log: genet: workaround for problem with ICMPv6 echo replies The ICMPv6 echo reply is constructed with the IPv6 header too close to the beginning of a packet for an Ethernet header to be prepended, so we end up with an mbuf containing just the Ethernet header. The GENET controller doesn't seem to handle this, with or without transmit checksum offload. At least until we have chip documentation, do a pullup to satisfy the chip. Hopefully this can be fixed properly in the future. Modified: head/sys/arm64/broadcom/genet/if_genet.c Modified: head/sys/arm64/broadcom/genet/if_genet.c ============================================================================== --- head/sys/arm64/broadcom/genet/if_genet.c Sat May 30 02:02:34 2020 (r361641) +++ head/sys/arm64/broadcom/genet/if_genet.c Sat May 30 02:09:36 2020 (r361642) @@ -76,6 +76,10 @@ __FBSDID("$FreeBSD$"); #include #include #include +#define ICMPV6_HACK /* workaround for chip issue */ +#ifdef ICMPV6_HACK +#include +#endif #include "syscon_if.h" #include "miibus_if.h" @@ -968,6 +972,36 @@ gen_encap(struct gen_softc *sc, struct mbuf **mp) q = &sc->tx_queue[DEF_TXQUEUE]; m = *mp; +#ifdef ICMPV6_HACK + /* + * Reflected ICMPv6 packets, e.g. echo replies, tend to get laid + * out with only the Ethernet header in the first mbuf, and this + * doesn't seem to work. + */ +#define ICMP6_LEN (sizeof(struct ether_header) + sizeof(struct ip6_hdr) + \ + sizeof(struct icmp6_hdr)) + if (m->m_len == sizeof(struct ether_header)) { + int ether_type = mtod(m, struct ether_header *)->ether_type; + if (ntohs(ether_type) == ETHERTYPE_IPV6 && + m->m_next->m_len >= sizeof(struct ip6_hdr)) { + struct ip6_hdr *ip6; + + ip6 = mtod(m->m_next, struct ip6_hdr *); + if (ip6->ip6_nxt == IPPROTO_ICMPV6) { + m = m_pullup(m, + MIN(m->m_pkthdr.len, ICMP6_LEN)); + if (m == NULL) { + if (sc->ifp->if_flags & IFF_DEBUG) + device_printf(sc->dev, + "ICMPV6 pullup fail\n"); + *mp = NULL; + return (ENOMEM); + } + } + } + } +#undef ICMP6_LEN +#endif if ((if_getcapenable(sc->ifp) & (IFCAP_TXCSUM | IFCAP_TXCSUM_IPV6)) != 0) { csum_flags = m->m_pkthdr.csum_flags; From owner-svn-src-all@freebsd.org Sat May 30 02:50:26 2020 Return-Path: Delivered-To: svn-src-all@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 9516C2F9981; Sat, 30 May 2020 02:50:26 +0000 (UTC) (envelope-from cperciva@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49YmBp3Xnhz3y0t; Sat, 30 May 2020 02:50:26 +0000 (UTC) (envelope-from cperciva@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 736EF21C63; Sat, 30 May 2020 02:50:26 +0000 (UTC) (envelope-from cperciva@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04U2oQC0072758; Sat, 30 May 2020 02:50:26 GMT (envelope-from cperciva@FreeBSD.org) Received: (from cperciva@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04U2oQiq072757; Sat, 30 May 2020 02:50:26 GMT (envelope-from cperciva@FreeBSD.org) Message-Id: <202005300250.04U2oQiq072757@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: cperciva set sender to cperciva@FreeBSD.org using -f From: Colin Percival Date: Sat, 30 May 2020 02:50:26 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org Subject: svn commit: r361643 - stable/12/release/tools X-SVN-Group: stable-12 X-SVN-Commit-Author: cperciva X-SVN-Commit-Paths: stable/12/release/tools X-SVN-Commit-Revision: 361643 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 May 2020 02:50:26 -0000 Author: cperciva Date: Sat May 30 02:50:26 2020 New Revision: 361643 URL: https://svnweb.freebsd.org/changeset/base/361643 Log: MFC r361143: Add /etc/autofs/special_efs to EC2 AMIs Sponsored by: https://www.patreon.com/cperciva Modified: stable/12/release/tools/ec2.conf Directory Properties: stable/12/ (props changed) Modified: stable/12/release/tools/ec2.conf ============================================================================== --- stable/12/release/tools/ec2.conf Sat May 30 02:09:36 2020 (r361642) +++ stable/12/release/tools/ec2.conf Sat May 30 02:50:26 2020 (r361643) @@ -109,6 +109,23 @@ vm_extra_pre_umount() { -e '1,/^#server/s/^#server.*/server 169.254.169.123 iburst/' \ ${DESTDIR}/etc/ntp.conf + # Provide a map for accessing Elastic File System mounts + cat > ${DESTDIR}/etc/autofs/special_efs <<'EOF' +#!/bin/sh + +if [ $# -eq 0 ]; then + # No way to know which EFS filesystems exist and are + # accessible to this EC2 instance. + exit 0 +fi + +# Provide instructions on how to mount the requested filesystem. +FS=$1 +REGION=`fetch -qo- http://169.254.169.254/latest/meta-data/placement/availability-zone | sed -e 's/[a-z]$//'` +echo "-nfsv4,minorversion=1,oneopenown ${FS}.efs.${REGION}.amazonaws.com:/" +EOF + chmod 755 ${DESTDIR}/etc/autofs/special_efs + # The first time the AMI boots, the installed "first boot" scripts # should be allowed to run: # * ec2_configinit (download and process EC2 user-data) From owner-svn-src-all@freebsd.org Sat May 30 02:52:24 2020 Return-Path: Delivered-To: svn-src-all@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 AABEB2F9D70; Sat, 30 May 2020 02:52:24 +0000 (UTC) (envelope-from cperciva@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49YmF448QSz3yhR; Sat, 30 May 2020 02:52:24 +0000 (UTC) (envelope-from cperciva@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 89A1322182; Sat, 30 May 2020 02:52:24 +0000 (UTC) (envelope-from cperciva@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04U2qOeO077701; Sat, 30 May 2020 02:52:24 GMT (envelope-from cperciva@FreeBSD.org) Received: (from cperciva@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04U2qOGH077691; Sat, 30 May 2020 02:52:24 GMT (envelope-from cperciva@FreeBSD.org) Message-Id: <202005300252.04U2qOGH077691@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: cperciva set sender to cperciva@FreeBSD.org using -f From: Colin Percival Date: Sat, 30 May 2020 02:52:24 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org Subject: svn commit: r361644 - stable/12/release/tools X-SVN-Group: stable-12 X-SVN-Commit-Author: cperciva X-SVN-Commit-Paths: stable/12/release/tools X-SVN-Commit-Revision: 361644 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 May 2020 02:52:24 -0000 Author: cperciva Date: Sat May 30 02:52:24 2020 New Revision: 361644 URL: https://svnweb.freebsd.org/changeset/base/361644 Log: MFC r361350: Add ebsnvme-id to EC2 AMIs and enable /dev/aws/disk Sponsored by: https://www.patreon.com/cperciva Modified: stable/12/release/tools/ec2.conf Directory Properties: stable/12/ (props changed) Modified: stable/12/release/tools/ec2.conf ============================================================================== --- stable/12/release/tools/ec2.conf Sat May 30 02:50:26 2020 (r361643) +++ stable/12/release/tools/ec2.conf Sat May 30 02:52:24 2020 (r361644) @@ -6,7 +6,7 @@ # Packages to install into the image we're creating. This is a deliberately # minimalist set, providing only the packages necessary to bootstrap further # package installation as specified via EC2 user-data. -export VM_EXTRA_PACKAGES="ec2-scripts firstboot-freebsd-update firstboot-pkgs dual-dhclient-daemon" +export VM_EXTRA_PACKAGES="ec2-scripts firstboot-freebsd-update firstboot-pkgs dual-dhclient-daemon ebsnvme-id" # Include the amazon-ssm-agent package in amd64 images, since some users want # to be able to use it on systems which are not connected to the Internet. @@ -17,7 +17,7 @@ if [ "${TARGET_ARCH}" = "amd64" ]; then fi # Set to a list of third-party software to enable in rc.conf(5). -export VM_RC_LIST="ec2_configinit ec2_fetchkey ec2_loghostkey firstboot_freebsd_update firstboot_pkgs ntpd" +export VM_RC_LIST="ec2_configinit ec2_fetchkey ec2_loghostkey firstboot_freebsd_update firstboot_pkgs ntpd dev_aws_disk" # Build with a 3.9 GB UFS partition; the growfs rc.d script will expand # the partition to fill the root disk after the EC2 instance is launched. From owner-svn-src-all@freebsd.org Sat May 30 02:56:13 2020 Return-Path: Delivered-To: svn-src-all@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 E4D832FA91F; Sat, 30 May 2020 02:56:13 +0000 (UTC) (envelope-from cperciva@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49YmKT5q67z40Cd; Sat, 30 May 2020 02:56:13 +0000 (UTC) (envelope-from cperciva@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 C31262220F; Sat, 30 May 2020 02:56:13 +0000 (UTC) (envelope-from cperciva@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04U2uD0S078605; Sat, 30 May 2020 02:56:13 GMT (envelope-from cperciva@FreeBSD.org) Received: (from cperciva@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04U2uDj5078604; Sat, 30 May 2020 02:56:13 GMT (envelope-from cperciva@FreeBSD.org) Message-Id: <202005300256.04U2uDj5078604@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: cperciva set sender to cperciva@FreeBSD.org using -f From: Colin Percival Date: Sat, 30 May 2020 02:56:13 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org Subject: svn commit: r361645 - stable/12/release/tools X-SVN-Group: stable-12 X-SVN-Commit-Author: cperciva X-SVN-Commit-Paths: stable/12/release/tools X-SVN-Commit-Revision: 361645 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 May 2020 02:56:14 -0000 Author: cperciva Date: Sat May 30 02:56:13 2020 New Revision: 361645 URL: https://svnweb.freebsd.org/changeset/base/361645 Log: Direct commit to stable/12: Only install ebsnvme-id on amd64 for now. This port is in the "latest" ports tree but not in "quarterly", so we have a package for amd64 but not for aarch64. This commit should be reverted when we have a new quarterly branch. Sponsored by: https://www.patreon.com/cperciva Modified: stable/12/release/tools/ec2.conf Modified: stable/12/release/tools/ec2.conf ============================================================================== --- stable/12/release/tools/ec2.conf Sat May 30 02:52:24 2020 (r361644) +++ stable/12/release/tools/ec2.conf Sat May 30 02:56:13 2020 (r361645) @@ -6,7 +6,14 @@ # Packages to install into the image we're creating. This is a deliberately # minimalist set, providing only the packages necessary to bootstrap further # package installation as specified via EC2 user-data. -export VM_EXTRA_PACKAGES="ec2-scripts firstboot-freebsd-update firstboot-pkgs dual-dhclient-daemon ebsnvme-id" +export VM_EXTRA_PACKAGES="ec2-scripts firstboot-freebsd-update firstboot-pkgs dual-dhclient-daemon" + +# This package isn't currently (2020-05-29) available for aarch64 since it is +# not yet in the "quarterly" branch. Some time after 2020-07-01 this can be +# made unconditional. +if [ "${TARGET_ARCH}" = "amd64" ]; then + export VM_EXTRA_PACKAGES="${VM_EXTRA_PACKAGES} ebsnvme-id" +fi # Include the amazon-ssm-agent package in amd64 images, since some users want # to be able to use it on systems which are not connected to the Internet. From owner-svn-src-all@freebsd.org Sat May 30 13:39:57 2020 Return-Path: Delivered-To: svn-src-all@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 A005C332C39; Sat, 30 May 2020 13:39:57 +0000 (UTC) (envelope-from jilles@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49Z2cF3qFRz3gdm; Sat, 30 May 2020 13:39:57 +0000 (UTC) (envelope-from jilles@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 64352993D; Sat, 30 May 2020 13:39:57 +0000 (UTC) (envelope-from jilles@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04UDdvW2083037; Sat, 30 May 2020 13:39:57 GMT (envelope-from jilles@FreeBSD.org) Received: (from jilles@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04UDduTZ083034; Sat, 30 May 2020 13:39:56 GMT (envelope-from jilles@FreeBSD.org) Message-Id: <202005301339.04UDduTZ083034@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: jilles set sender to jilles@FreeBSD.org using -f From: Jilles Tjoelker Date: Sat, 30 May 2020 13:39:56 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org Subject: svn commit: r361646 - in stable/12/bin/sh: . tests/execution X-SVN-Group: stable-12 X-SVN-Commit-Author: jilles X-SVN-Commit-Paths: in stable/12/bin/sh: . tests/execution X-SVN-Commit-Revision: 361646 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 May 2020 13:39:57 -0000 Author: jilles Date: Sat May 30 13:39:56 2020 New Revision: 361646 URL: https://svnweb.freebsd.org/changeset/base/361646 Log: MFC r361112,r361117: sh: Fix double INTON with vfork The shell maintains a count of the number of times SIGINT processing has been disabled via INTOFF, so SIGINT processing resumes when all disables have enabled again (INTON). If an error occurs in a vfork() child, the processing of the error enables SIGINT processing again, and the INTON in vforkexecshell() causes the count to become negative. As a result, a later INTOFF may not actually disable SIGINT processing. This might cause memory corruption if a SIGINT arrives at an inopportune time. Note that various places such as errors in non-special builtins unconditionally reset the count to 0, so the problem might still not always be visible. PR: 246497 Added: - copied unchanged from r361112, head/bin/sh/tests/execution/unknown2.0 Directory Properties: stable/12/bin/sh/tests/execution/unknown2.0 (props changed) Modified: stable/12/bin/sh/jobs.c stable/12/bin/sh/tests/execution/Makefile Directory Properties: stable/12/ (props changed) Modified: stable/12/bin/sh/jobs.c ============================================================================== --- stable/12/bin/sh/jobs.c Sat May 30 02:56:13 2020 (r361645) +++ stable/12/bin/sh/jobs.c Sat May 30 13:39:56 2020 (r361646) @@ -1007,9 +1007,11 @@ vforkexecshell(struct job *jp, char **argv, char **env pid_t pid; struct jmploc jmploc; struct jmploc *savehandler; + int inton; TRACE(("vforkexecshell(%%%td, %s, %p) called\n", jp - jobtab, argv[0], (void *)pip)); + inton = is_int_on(); INTOFF; flushall(); savehandler = handler; @@ -1044,7 +1046,7 @@ vforkexecshell(struct job *jp, char **argv, char **env setcurjob(jp); #endif } - INTON; + SETINTON(inton); TRACE(("In parent shell: child = %d\n", (int)pid)); return pid; } Modified: stable/12/bin/sh/tests/execution/Makefile ============================================================================== --- stable/12/bin/sh/tests/execution/Makefile Sat May 30 02:56:13 2020 (r361645) +++ stable/12/bin/sh/tests/execution/Makefile Sat May 30 13:39:56 2020 (r361646) @@ -59,6 +59,7 @@ ${PACKAGE}FILES+= subshell2.0 ${PACKAGE}FILES+= subshell3.0 ${PACKAGE}FILES+= subshell4.0 ${PACKAGE}FILES+= unknown1.0 +${PACKAGE}FILES+= unknown2.0 ${PACKAGE}FILES+= var-assign1.0 .include Copied: stable/12/bin/sh/tests/execution/unknown2.0 (from r361112, head/bin/sh/tests/execution/unknown2.0) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/12/bin/sh/tests/execution/unknown2.0 Sat May 30 13:39:56 2020 (r361646, copy of r361112, head/bin/sh/tests/execution/unknown2.0) @@ -0,0 +1,6 @@ +# $FreeBSD$ + +{ + : $(/var/empty/nosuchtool) + : $(:) +} 2>/dev/null From owner-svn-src-all@freebsd.org Sat May 30 16:00:50 2020 Return-Path: Delivered-To: svn-src-all@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 ADD9D3368D9; Sat, 30 May 2020 16:00:50 +0000 (UTC) (envelope-from jilles@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49Z5kp4C3Lz4B6j; Sat, 30 May 2020 16:00:50 +0000 (UTC) (envelope-from jilles@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 8B83FB72C; Sat, 30 May 2020 16:00:50 +0000 (UTC) (envelope-from jilles@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04UG0ove070604; Sat, 30 May 2020 16:00:50 GMT (envelope-from jilles@FreeBSD.org) Received: (from jilles@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04UG0orS070602; Sat, 30 May 2020 16:00:50 GMT (envelope-from jilles@FreeBSD.org) Message-Id: <202005301600.04UG0orS070602@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: jilles set sender to jilles@FreeBSD.org using -f From: Jilles Tjoelker Date: Sat, 30 May 2020 16:00:50 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361647 - in head/bin/sh: . tests/execution X-SVN-Group: head X-SVN-Commit-Author: jilles X-SVN-Commit-Paths: in head/bin/sh: . tests/execution X-SVN-Commit-Revision: 361647 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 May 2020 16:00:50 -0000 Author: jilles Date: Sat May 30 16:00:49 2020 New Revision: 361647 URL: https://svnweb.freebsd.org/changeset/base/361647 Log: sh: Allow more scripts without #! Austin Group bugs #1226 and #1250 changed the requirements for shell scripts without #! (POSIX does not specify #!; this is about the shell execution when execve(2) returns an [ENOEXEC] error). POSIX says we shall allow execution if the initial part intended to be parsed by the shell consists of characters and does not contain the NUL character. This allows concatenating a shell script (ending with exec or exit) and a binary payload. In order to reject common binary files such as PNG images, check that there is a lowercase letter or expansion before the last newline before the NUL character, in addition to the check for the newline character suggested by POSIX. Added: head/bin/sh/tests/execution/shellproc6.0 (contents, props changed) Modified: head/bin/sh/exec.c head/bin/sh/tests/execution/Makefile Modified: head/bin/sh/exec.c ============================================================================== --- head/bin/sh/exec.c Sat May 30 13:39:56 2020 (r361646) +++ head/bin/sh/exec.c Sat May 30 16:00:49 2020 (r361647) @@ -44,6 +44,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include /* @@ -140,6 +141,37 @@ shellexec(char **argv, char **envp, const char *path, } +static bool +isbinary(const char *data, size_t len) +{ + const char *nul, *p; + bool hasletter; + + nul = memchr(data, '\0', len); + if (nul == NULL) + return false; + /* + * POSIX says we shall allow execution if the initial part intended + * to be parsed by the shell consists of characters and does not + * contain the NUL character. This allows concatenating a shell + * script (ending with exec or exit) and a binary payload. + * + * In order to reject common binary files such as PNG images, check + * that there is a lowercase letter or expansion before the last + * newline before the NUL character, in addition to the check for + * the newline character suggested by POSIX. + */ + hasletter = false; + for (p = data; *p != '\0'; p++) { + if ((*p >= 'a' && *p <= 'z') || *p == '$' || *p == '`') + hasletter = true; + if (hasletter && *p == '\n') + return false; + } + return true; +} + + static void tryexec(char *cmd, char **argv, char **envp) { @@ -155,7 +187,7 @@ tryexec(char *cmd, char **argv, char **envp) if (in != -1) { n = pread(in, buf, sizeof buf, 0); close(in); - if (n > 0 && memchr(buf, '\0', n) != NULL) { + if (n > 0 && isbinary(buf, n)) { errno = ENOEXEC; return; } Modified: head/bin/sh/tests/execution/Makefile ============================================================================== --- head/bin/sh/tests/execution/Makefile Sat May 30 13:39:56 2020 (r361646) +++ head/bin/sh/tests/execution/Makefile Sat May 30 16:00:49 2020 (r361647) @@ -59,6 +59,7 @@ ${PACKAGE}FILES+= shellproc2.0 ${PACKAGE}FILES+= shellproc3.0 ${PACKAGE}FILES+= shellproc4.0 ${PACKAGE}FILES+= shellproc5.0 +${PACKAGE}FILES+= shellproc6.0 ${PACKAGE}FILES+= subshell1.0 subshell1.0.stdout ${PACKAGE}FILES+= subshell2.0 ${PACKAGE}FILES+= subshell3.0 Added: head/bin/sh/tests/execution/shellproc6.0 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/bin/sh/tests/execution/shellproc6.0 Sat May 30 16:00:49 2020 (r361647) @@ -0,0 +1,8 @@ +# $FreeBSD$ + +T=`mktemp -d "${TMPDIR:-/tmp}/sh-test.XXXXXXXX"` || exit +trap 'rm -rf "${T}"' 0 +printf 'printf "this "\necho is a test\nexit\n\0' >"$T/testshellproc" +chmod 755 "$T/testshellproc" +PATH=$T:$PATH +[ "`testshellproc`" = "this is a test" ] From owner-svn-src-all@freebsd.org Sat May 30 16:12:01 2020 Return-Path: Delivered-To: svn-src-all@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 56277336F38; Sat, 30 May 2020 16:12:01 +0000 (UTC) (envelope-from emaste@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49Z5zj1htXz4C21; Sat, 30 May 2020 16:12:01 +0000 (UTC) (envelope-from emaste@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 32A97B6F0; Sat, 30 May 2020 16:12:01 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04UGC1Hn082040; Sat, 30 May 2020 16:12:01 GMT (envelope-from emaste@FreeBSD.org) Received: (from emaste@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04UGC1Fw082039; Sat, 30 May 2020 16:12:01 GMT (envelope-from emaste@FreeBSD.org) Message-Id: <202005301612.04UGC1Fw082039@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: emaste set sender to emaste@FreeBSD.org using -f From: Ed Maste Date: Sat, 30 May 2020 16:12:01 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361648 - head/share/mk X-SVN-Group: head X-SVN-Commit-Author: emaste X-SVN-Commit-Paths: head/share/mk X-SVN-Commit-Revision: 361648 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 May 2020 16:12:01 -0000 Author: emaste Date: Sat May 30 16:12:00 2020 New Revision: 361648 URL: https://svnweb.freebsd.org/changeset/base/361648 Log: Disable BINUTILS by default on amd64 The retirement of obsolete binutils 2.17.50 has been in progress for quite some time. All tools other than GNU as were removed prior to this commit, and it was built only on amd64 - installed as /usr/bin/as, and used as a bootstrap tool. The amd64 exp-run has completed and failures have now been addressed in the individual ports, so disable it by default. PR: 233611, 205250 [exp-run] Sponsored by: The FreeBSD Foundation Modified: head/share/mk/src.opts.mk Modified: head/share/mk/src.opts.mk ============================================================================== --- head/share/mk/src.opts.mk Sat May 30 16:00:49 2020 (r361647) +++ head/share/mk/src.opts.mk Sat May 30 16:12:00 2020 (r361648) @@ -200,6 +200,7 @@ __DEFAULT_YES_OPTIONS = \ __DEFAULT_NO_OPTIONS = \ BEARSSL \ BHYVE_SNAPSHOT \ + BINUTILS \ BSD_GREP \ CLANG_EXTRAS \ DTRACE_TESTS \ @@ -290,12 +291,11 @@ __DEFAULT_NO_OPTIONS+=LLVM_TARGET_BPF .if ${__T} == "aarch64" || ${__T:Mriscv*} != "" BROKEN_OPTIONS+=BINUTILS BINUTILS_BOOTSTRAP GDB .endif -# BINUTILS is enabled on amd64 to provide as for ports - PR 205250 # BINUTILS_BOOTSTRAP is needed on amd64 only, for skein_block_asm.s .if ${__T} == "amd64" -__DEFAULT_YES_OPTIONS+=BINUTILS BINUTILS_BOOTSTRAP +__DEFAULT_YES_OPTIONS+=BINUTILS_BOOTSTRAP .else -__DEFAULT_NO_OPTIONS+=BINUTILS BINUTILS_BOOTSTRAP +__DEFAULT_NO_OPTIONS+=BINUTILS_BOOTSTRAP .endif .if ${__T:Mriscv*} != "" BROKEN_OPTIONS+=OFED From owner-svn-src-all@freebsd.org Sat May 30 16:12:50 2020 Return-Path: Delivered-To: svn-src-all@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 C7582336FBD; Sat, 30 May 2020 16:12:50 +0000 (UTC) (envelope-from emaste@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49Z60f4yGzz4CZn; Sat, 30 May 2020 16:12:50 +0000 (UTC) (envelope-from emaste@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 A0C1EB9F7; Sat, 30 May 2020 16:12:50 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04UGCovJ082891; Sat, 30 May 2020 16:12:50 GMT (envelope-from emaste@FreeBSD.org) Received: (from emaste@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04UGCoVD082890; Sat, 30 May 2020 16:12:50 GMT (envelope-from emaste@FreeBSD.org) Message-Id: <202005301612.04UGCoVD082890@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: emaste set sender to emaste@FreeBSD.org using -f From: Ed Maste Date: Sat, 30 May 2020 16:12:50 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361649 - head/share/man/man5 X-SVN-Group: head X-SVN-Commit-Author: emaste X-SVN-Commit-Paths: head/share/man/man5 X-SVN-Commit-Revision: 361649 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 May 2020 16:12:50 -0000 Author: emaste Date: Sat May 30 16:12:50 2020 New Revision: 361649 URL: https://svnweb.freebsd.org/changeset/base/361649 Log: Add deprecation notice to WITH_BINUTILS option description Modified: head/share/man/man5/src.conf.5 Modified: head/share/man/man5/src.conf.5 ============================================================================== --- head/share/man/man5/src.conf.5 Sat May 30 16:12:00 2020 (r361648) +++ head/share/man/man5/src.conf.5 Sat May 30 16:12:50 2020 (r361649) @@ -1,6 +1,6 @@ .\" DO NOT EDIT-- this file is @generated by tools/build/options/makeman. .\" $FreeBSD$ -.Dd May 29, 2020 +.Dd May 30, 2020 .Dt SRC.CONF 5 .Os .Sh NAME @@ -182,21 +182,12 @@ Build all binaries with the .Dv DF_BIND_NOW flag set to indicate that the run-time loader should perform all relocation processing at process startup rather than on demand. -.It Va WITHOUT_BINUTILS -Do not build or install GNU -.Xr as 1 -as part -of the normal system build. -.Pp -This is a default setting on -arm/armv6, arm/armv7, arm64/aarch64, i386/i386, mips/mips, mips/mips64, powerpc/powerpc, powerpc/powerpc64, riscv/riscv64 and riscv/riscv64sf. .It Va WITH_BINUTILS Build and install GNU .Xr as 1 as part of the normal system build. -.Pp -This is a default setting on -amd64/amd64. +This option is not available as of +.Fx 13.0 . .It Va WITHOUT_BINUTILS_BOOTSTRAP Do not build GNU binutils as part of the bootstrap process. From owner-svn-src-all@freebsd.org Sat May 30 16:13:22 2020 Return-Path: Delivered-To: svn-src-all@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 746743371C8; Sat, 30 May 2020 16:13:22 +0000 (UTC) (envelope-from emaste@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49Z61G2WzVz4Cdc; Sat, 30 May 2020 16:13:22 +0000 (UTC) (envelope-from emaste@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 51F9FB6F8; Sat, 30 May 2020 16:13:22 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04UGDMsm082963; Sat, 30 May 2020 16:13:22 GMT (envelope-from emaste@FreeBSD.org) Received: (from emaste@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04UGDMRg082962; Sat, 30 May 2020 16:13:22 GMT (envelope-from emaste@FreeBSD.org) Message-Id: <202005301613.04UGDMRg082962@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: emaste set sender to emaste@FreeBSD.org using -f From: Ed Maste Date: Sat, 30 May 2020 16:13:22 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361650 - head/tools/build/options X-SVN-Group: head X-SVN-Commit-Author: emaste X-SVN-Commit-Paths: head/tools/build/options X-SVN-Commit-Revision: 361650 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 May 2020 16:13:22 -0000 Author: emaste Date: Sat May 30 16:13:21 2020 New Revision: 361650 URL: https://svnweb.freebsd.org/changeset/base/361650 Log: Add deprecation notice to WITH_BINUTILS option description Modified: head/tools/build/options/WITH_BINUTILS Modified: head/tools/build/options/WITH_BINUTILS ============================================================================== --- head/tools/build/options/WITH_BINUTILS Sat May 30 16:12:50 2020 (r361649) +++ head/tools/build/options/WITH_BINUTILS Sat May 30 16:13:21 2020 (r361650) @@ -2,3 +2,5 @@ Build and install GNU .Xr as 1 as part of the normal system build. +This option is not available as of +.Fx 13.0 . From owner-svn-src-all@freebsd.org Sat May 30 16:20:19 2020 Return-Path: Delivered-To: svn-src-all@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 5874F3372E0; Sat, 30 May 2020 16:20:19 +0000 (UTC) (envelope-from emaste@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49Z69H1gzgz4DC9; Sat, 30 May 2020 16:20:19 +0000 (UTC) (envelope-from emaste@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 350E9B5D9; Sat, 30 May 2020 16:20:19 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04UGKJ1k083548; Sat, 30 May 2020 16:20:19 GMT (envelope-from emaste@FreeBSD.org) Received: (from emaste@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04UGKJDS083547; Sat, 30 May 2020 16:20:19 GMT (envelope-from emaste@FreeBSD.org) Message-Id: <202005301620.04UGKJDS083547@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: emaste set sender to emaste@FreeBSD.org using -f From: Ed Maste Date: Sat, 30 May 2020 16:20:19 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361651 - head X-SVN-Group: head X-SVN-Commit-Author: emaste X-SVN-Commit-Paths: head X-SVN-Commit-Revision: 361651 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 May 2020 16:20:19 -0000 Author: emaste Date: Sat May 30 16:20:18 2020 New Revision: 361651 URL: https://svnweb.freebsd.org/changeset/base/361651 Log: Makefile.inc1: remove BINUTILS_BOOTSTRAP linker support As of r359347 BINUTILS_BOOTSTRAP does not include the bfd linker. Modified: head/Makefile.inc1 Modified: head/Makefile.inc1 ============================================================================== --- head/Makefile.inc1 Sat May 30 16:13:21 2020 (r361650) +++ head/Makefile.inc1 Sat May 30 16:20:18 2020 (r361651) @@ -250,9 +250,6 @@ USING_SYSTEM_COMPILER= yes # Which linker is expected to be used? .if ${MK_LLD_BOOTSTRAP} == "yes" WANT_LINKER_TYPE= lld -.elif ${MK_BINUTILS_BOOTSTRAP} == "yes" -# Note that there's no support for bfd in WITH_SYSTEM_LINKER. -WANT_LINKER_TYPE= bfd .else WANT_LINKER_TYPE= .endif From owner-svn-src-all@freebsd.org Sat May 30 17:43:11 2020 Return-Path: Delivered-To: svn-src-all@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 4588E2F0BD3; Sat, 30 May 2020 17:43:11 +0000 (UTC) (envelope-from cperciva@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49Z80v134vz4LQ9; Sat, 30 May 2020 17:43:11 +0000 (UTC) (envelope-from cperciva@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 1F0C7C9E6; Sat, 30 May 2020 17:43:11 +0000 (UTC) (envelope-from cperciva@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04UHhBnp038899; Sat, 30 May 2020 17:43:11 GMT (envelope-from cperciva@FreeBSD.org) Received: (from cperciva@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04UHhAVt038898; Sat, 30 May 2020 17:43:10 GMT (envelope-from cperciva@FreeBSD.org) Message-Id: <202005301743.04UHhAVt038898@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: cperciva set sender to cperciva@FreeBSD.org using -f From: Colin Percival Date: Sat, 30 May 2020 17:43:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org Subject: svn commit: r361652 - stable/11/release/tools X-SVN-Group: stable-11 X-SVN-Commit-Author: cperciva X-SVN-Commit-Paths: stable/11/release/tools X-SVN-Commit-Revision: 361652 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 May 2020 17:43:11 -0000 Author: cperciva Date: Sat May 30 17:43:10 2020 New Revision: 361652 URL: https://svnweb.freebsd.org/changeset/base/361652 Log: Bump the UFS partition in the EC2 AMI up to 2.9 GB; this doesn't affect the final image size (which still rounds up to 3 GB) but gives us enough space to ensure that we don't run out while installing packages. Direct commit to stable/11 (HEAD and stable/12 were expanded to 3.9 GB last year). Approved by: re (gjb) Sponsored by: https://www.patreon.com/cperciva Modified: stable/11/release/tools/ec2.conf Modified: stable/11/release/tools/ec2.conf ============================================================================== --- stable/11/release/tools/ec2.conf Sat May 30 16:20:18 2020 (r361651) +++ stable/11/release/tools/ec2.conf Sat May 30 17:43:10 2020 (r361652) @@ -19,12 +19,12 @@ fi # Set to a list of third-party software to enable in rc.conf(5). export VM_RC_LIST="ec2_configinit ec2_fetchkey ec2_ephemeralswap ec2_loghostkey firstboot_freebsd_update firstboot_pkgs ntpd" -# Build with a 2 GB UFS partition; the growfs rc.d script will expand +# Build with a 2.9 GB UFS partition; the growfs rc.d script will expand # the partition to fill the root disk after the EC2 instance is launched. # Note that if this is set to G, we will end up with an GB disk # image since VMSIZE is the size of the UFS partition, not the disk which # it resides within. -export VMSIZE=2048M +export VMSIZE=2970M # No swap space; the ec2_ephemeralswap rc.d script will allocate swap # space on EC2 ephemeral disks. (If they exist -- the T2 low-cost instances From owner-svn-src-all@freebsd.org Sat May 30 18:01:54 2020 Return-Path: Delivered-To: svn-src-all@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 0617D2F13C9; Sat, 30 May 2020 18:01:54 +0000 (UTC) (envelope-from cperciva@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49Z8QT6TJjz4N7R; Sat, 30 May 2020 18:01:53 +0000 (UTC) (envelope-from cperciva@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 D99F6CF47; Sat, 30 May 2020 18:01:53 +0000 (UTC) (envelope-from cperciva@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04UI1rdn048712; Sat, 30 May 2020 18:01:53 GMT (envelope-from cperciva@FreeBSD.org) Received: (from cperciva@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04UI1rBt048711; Sat, 30 May 2020 18:01:53 GMT (envelope-from cperciva@FreeBSD.org) Message-Id: <202005301801.04UI1rBt048711@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: cperciva set sender to cperciva@FreeBSD.org using -f From: Colin Percival Date: Sat, 30 May 2020 18:01:53 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-releng@freebsd.org Subject: svn commit: r361653 - releng/11.4/release/tools X-SVN-Group: releng X-SVN-Commit-Author: cperciva X-SVN-Commit-Paths: releng/11.4/release/tools X-SVN-Commit-Revision: 361653 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 May 2020 18:01:54 -0000 Author: cperciva Date: Sat May 30 18:01:53 2020 New Revision: 361653 URL: https://svnweb.freebsd.org/changeset/base/361653 Log: Insta-merge r361652 from stable/11: Expand EC2 AMI UFS partition to 2.9 GB. Approved by: re (gjb) Sponsored by: https://www.patreon.com/cperciva Modified: releng/11.4/release/tools/ec2.conf Directory Properties: releng/11.4/ (props changed) Modified: releng/11.4/release/tools/ec2.conf ============================================================================== --- releng/11.4/release/tools/ec2.conf Sat May 30 17:43:10 2020 (r361652) +++ releng/11.4/release/tools/ec2.conf Sat May 30 18:01:53 2020 (r361653) @@ -19,12 +19,12 @@ fi # Set to a list of third-party software to enable in rc.conf(5). export VM_RC_LIST="ec2_configinit ec2_fetchkey ec2_ephemeralswap ec2_loghostkey firstboot_freebsd_update firstboot_pkgs ntpd" -# Build with a 2 GB UFS partition; the growfs rc.d script will expand +# Build with a 2.9 GB UFS partition; the growfs rc.d script will expand # the partition to fill the root disk after the EC2 instance is launched. # Note that if this is set to G, we will end up with an GB disk # image since VMSIZE is the size of the UFS partition, not the disk which # it resides within. -export VMSIZE=2048M +export VMSIZE=2970M # No swap space; the ec2_ephemeralswap rc.d script will allocate swap # space on EC2 ephemeral disks. (If they exist -- the T2 low-cost instances From owner-svn-src-all@freebsd.org Sat May 30 19:10:41 2020 Return-Path: Delivered-To: svn-src-all@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 B4EB02F3447; Sat, 30 May 2020 19:10:41 +0000 (UTC) (envelope-from weh@microsoft.com) Received: from APC01-SG2-obe.outbound.protection.outlook.com (mail-eopbgr1310118.outbound.protection.outlook.com [40.107.131.118]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mail.protection.outlook.com", Issuer "GlobalSign Organization Validation CA - SHA256 - G3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 49Z9xr4yFXz4TL8; Sat, 30 May 2020 19:10:40 +0000 (UTC) (envelope-from weh@microsoft.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Cu0IgQVZ/uL7zKn9OidL7EYGK7MXszq+VQ6g664w50TBm/NFU5x4hI9PaRl8KSTM3ALx/NvxTTo63C7ncFw6NDa4BEh/si9o0sTb7eBZeiK3niqNTqNu9x9cgfHWas/sQ20U7AW65btGL1xVZvo0bzFfBUtn3O95Qfrj4VbfOfmoAcyNSgnNbZsmiFPdKaU12UVKcwTNloIwvqQbw8PtmSvdH4g2grpDlluklpgQLrod0Wgr9iByB+QfD0gx32lPeLP4+bO3AgTMq6/DVBQFm8b78yPs0ZFjRjx6QKyCyqKKU3Q5a8K0WkK4xeLpOQYKGEBorWBvPZRZBNEvhcWDMQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=2d6RpWY7Ba1pVKgh75f65YW60/ejMItqtkS67RsJ/6w=; b=i7AFoFm4AEOxMpCjknJ6fHrvhuRNNQ53CKaBj7mx8YSSW+8lZzbJZp1r2NeMIfMulnm4nCd2wj9ysEjmFm3YsXuoJLtf8S/g/3TdM8a/yIr5mzdfUBolpiB/0hl3b1Mp/H0N0vZO8/78P5Cih/+/r85+oqxOM1t62lF14ncdIzFucSH3Tsg7KAuTZ8LjoSQcfhjOg2PfBYTfyLj6TG0UClQvcD/W5WGhXk+BsQ5dF0f0Z1OSfLQzARu1odgZJ2uQJzcHnQrR9iE49OeABLoxhtljpHkS6MTeh5mtBL7n0n7YIP0yCvb37JU1timooCIw+UxvQ98bCRAsPQTudN0yPw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=microsoft.com; dmarc=pass action=none header.from=microsoft.com; dkim=pass header.d=microsoft.com; arc=none Received: from SG2P153MB0377.APCP153.PROD.OUTLOOK.COM (2603:1096:0:1::15) by SG2P153MB0205.APCP153.PROD.OUTLOOK.COM (2603:1096:3:29::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3066.3; Sat, 30 May 2020 19:10:30 +0000 Received: from SG2P153MB0377.APCP153.PROD.OUTLOOK.COM ([fe80::798e:2eb8:f18e:7a0]) by SG2P153MB0377.APCP153.PROD.OUTLOOK.COM ([fe80::798e:2eb8:f18e:7a0%7]) with mapi id 15.20.3088.000; Sat, 30 May 2020 19:10:30 +0000 From: Wei Hu To: Kyle Evans CC: src-committers , svn-src-all , svn-src-head Subject: RE: svn commit: r361275 - in head/sys: conf dev/hyperv/hvsock dev/hyperv/include dev/hyperv/vmbus modules/hyperv modules/hyperv/hvsock sys Thread-Topic: svn commit: r361275 - in head/sys: conf dev/hyperv/hvsock dev/hyperv/include dev/hyperv/vmbus modules/hyperv modules/hyperv/hvsock sys Thread-Index: AQHWLpZljJNzTG7+okeOAs3l3mz20qi0Sl8AgArpBQCAACK3wIAAG+oAgAGX8xA= Date: Sat, 30 May 2020 19:10:29 +0000 Message-ID: References: <202005201103.04KB3xTp013965@repo.freebsd.org> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Enabled=true; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_SetDate=2020-05-30T19:10:27Z; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Method=Standard; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Name=Internal; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_SiteId=72f988bf-86f1-41af-91ab-2d7cd011db47; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_ActionId=a1d81876-0769-4833-b93d-b8209208bc30; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_ContentBits=0 x-originating-ip: [2404:f801:9000:1a:6feb::496b] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 65a470f0-7a29-43aa-e057-08d804cd1e8c x-ms-traffictypediagnostic: SG2P153MB0205: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-forefront-prvs: 041963B986 x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: Bt8xpjFB4oH6oxQviNdbFF2YL2PolBJ643U+cBlPc4bDgKyA4xrN9BMACUmrlvAke6XQX3z0t5oagxcBT9SYG7TA3/a7suDJ1AXDuJh4lRsWrVtSF9MQ4nmsD3W/brmzMfpdqTKf5SB1lVTFG2KKeOUm0eanWXPAim0y7h5ZMM9UzfSzMyqXoEaFOWFtdbLhsfxDUIZi6WXGRj29MPqi/vEMGtGgbz++cA4dk5ISk7RsU24bZgl9//EWpRY8pUZIVFiCNyZUoo4dOlPHR+rC1Cn1gsf9zSIi20hrg1vH9Z2vl4UJ6h0z+aI6viTw2TkzS+VPvcfRMUq9vH+Tm0vLpA== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SG2P153MB0377.APCP153.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFTY:; SFS:(4636009)(366004)(136003)(346002)(376002)(396003)(39860400002)(86362001)(10290500003)(8676002)(82950400001)(2906002)(8990500004)(82960400001)(478600001)(6916009)(9686003)(186003)(55016002)(8936002)(6506007)(53546011)(5660300002)(71200400001)(33656002)(83380400001)(66556008)(450100002)(7696005)(4326008)(316002)(66446008)(66476007)(76116006)(66946007)(54906003)(64756008)(52536014); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata: gNnqkGSfpYITfwLnhukymOaZq8gytYxpYVa2IyDIF5OoSsZFugxAw/H5rATnt/nNZVMREYlWl7J5MpFCVypHtFYP5ieySoBe3rPY1Vll4wbJMPYcZdSKgrx/bwqxApF6BzTekS17d6hmihGbKhbK8VVv2tmuKiABCjQEuu1bRI47wZYJK2gCa1XYH5fb4roiDCqDOxZFKpswy2bI/1E8O/teJv4wmCjNmEEE9iC3EKfprp4EyORVGO/j/0j+sPw4m+61Md2B1za+2v7YB9/A867IW6KByBedVpse9rBg18BRJnDIRrwga6911qOgPgOmtmU1QBWpGv9IxtUC7qnL6KqtOIzFCKm3OrY95ynruZSlLTzky2xfgytCsPTeJVwlllwfC+gatSS7QlfVu2ZJf9YPxA3YMxdjvpABlkXgotmIgy6Ih9f50hn3hp+B2V1/DK1QFhwBcSfdJkdxbIY2fo1Gapvo9ezAClpkH6NntaOh7dE2sN6GtUB6hKXZdq6vZI/7oK4piPgVVjetCZAwkQ== x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: microsoft.com X-MS-Exchange-CrossTenant-Network-Message-Id: 65a470f0-7a29-43aa-e057-08d804cd1e8c X-MS-Exchange-CrossTenant-originalarrivaltime: 30 May 2020 19:10:29.5163 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 72f988bf-86f1-41af-91ab-2d7cd011db47 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: uWIp6eH2iMNsZn0dEEPxgm0jle16BVeXCPvDJQa65jrBDSHuIl95fC1Fw+qS6946AE/2rR2ObnYOkrx19Z5oww== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SG2P153MB0205 X-Rspamd-Queue-Id: 49Z9xr4yFXz4TL8 X-Spamd-Bar: --------- X-Spamd-Result: default: False [-9.54 / 15.00]; NEURAL_HAM_MEDIUM(-1.03)[-1.028]; R_DKIM_ALLOW(-0.20)[microsoft.com:s=selector2]; HAS_XOIP(0.00)[]; FROM_HAS_DN(0.00)[]; RCPT_COUNT_THREE(0.00)[4]; TO_MATCH_ENVRCPT_ALL(0.00)[]; R_SPF_ALLOW(-0.20)[+ip4:40.107.0.0/16]; MIME_GOOD(-0.10)[text/plain]; NEURAL_HAM_LONG(-1.00)[-1.003]; MIME_BASE64_TEXT_BOGUS(1.00)[]; RCVD_COUNT_THREE(0.00)[3]; DWL_DNSWL_MED(-2.00)[microsoft.com:dkim]; TO_DN_ALL(0.00)[]; DKIM_TRACE(0.00)[microsoft.com:+]; MIME_BASE64_TEXT(0.10)[]; DMARC_POLICY_ALLOW(-0.50)[microsoft.com,reject]; RWL_MAILSPIKE_POSSIBLE(0.00)[40.107.131.118:from]; RCVD_IN_DNSWL_LOW(-0.10)[40.107.131.118:from]; NEURAL_HAM_SHORT(-1.51)[-1.509]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; RCVD_TLS_LAST(0.00)[]; ASN(0.00)[asn:8075, ipnet:40.64.0.0/10, country:US]; ARC_ALLOW(-1.00)[microsoft.com:s=arcselector9901:i=1]; WHITELIST_SPF_DKIM(-3.00)[microsoft.com:d:+,microsoft.com:s:+] X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 May 2020 19:10:41 -0000 DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogS3lsZSBFdmFucyA8a2V2 YW5zQGZyZWVic2Qub3JnPg0KPiBTZW50OiBTYXR1cmRheSwgTWF5IDMwLCAyMDIwIDI6MzMgQU0N Cj4gVG86IFdlaSBIdSA8d2VoQG1pY3Jvc29mdC5jb20+DQo+IENjOiBzcmMtY29tbWl0dGVycyA8 c3JjLWNvbW1pdHRlcnNAZnJlZWJzZC5vcmc+OyBzdm4tc3JjLWFsbCA8c3ZuLXNyYy0NCj4gYWxs QGZyZWVic2Qub3JnPjsgc3ZuLXNyYy1oZWFkIDxzdm4tc3JjLWhlYWRAZnJlZWJzZC5vcmc+DQo+ IFN1YmplY3Q6IFJlOiBzdm4gY29tbWl0OiByMzYxMjc1IC0gaW4gaGVhZC9zeXM6IGNvbmYgZGV2 L2h5cGVydi9odnNvY2sNCj4gZGV2L2h5cGVydi9pbmNsdWRlIGRldi9oeXBlcnYvdm1idXMgbW9k dWxlcy9oeXBlcnYNCj4gbW9kdWxlcy9oeXBlcnYvaHZzb2NrIHN5cw0KPiANCj4gT24gRnJpLCBN YXkgMjksIDIwMjAgYXQgMTI6MDggUE0gV2VpIEh1IDx3ZWhAbWljcm9zb2Z0LmNvbT4gd3JvdGU6 DQo+ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gPiA+IFsuLi4gc25pcCAu Li5dDQo+ID4gPiA+ID4gK3ZvaWQNCj4gPiA+ID4gPiAraHZzX3RyYW5zX2luaXQodm9pZCkNCj4g PiA+ID4gPiArew0KPiA+ID4gPiA+ICsgICAgICAgLyogU2tpcCBpbml0aWFsaXphdGlvbiBvZiBn bG9iYWxzIGZvciBub24tZGVmYXVsdCBpbnN0YW5jZXMuICovDQo+ID4gPiA+ID4gKyAgICAgICBp ZiAoIUlTX0RFRkFVTFRfVk5FVChjdXJ2bmV0KSkNCj4gPiA+ID4gPiArICAgICAgICAgICAgICAg cmV0dXJuOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICAgICAgIGlmICh2bV9ndWVzdCAhPSBW TV9HVUVTVF9IVikNCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgcmV0dXJuOw0KPiA+ID4gPiA+ ICsNCj4gPiA+ID4gPiArICAgICAgIEhWU09DS19EQkcoSFZTT0NLX0RCR19WRVJCT1NFLA0KPiA+ ID4gPiA+ICsgICAgICAgICAgICIlczogSHlwZXJWIFNvY2tldCBodnNfdHJhbnNfaW5pdCBjYWxs ZWRcbiIsDQo+ID4gPiA+ID4gKyBfX2Z1bmNfXyk7DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsg ICAgICAgLyogSW5pdGlhbGl6ZSBHbG9iYWxzICovDQo+ID4gPiA+ID4gKyAgICAgICBwcmV2aW91 c19hdXRvX2JvdW5kX3BvcnQgPSBNQVhfUE9SVDsNCj4gPiA+ID4gPiArICAgICAgIHN4X2luaXQo Jmh2c190cmFuc19zb2Nrc19zeCwgImh2c190cmFuc19zb2NrX3N4Iik7DQo+ID4gPiA+ID4gKyAg ICAgICBtdHhfaW5pdCgmaHZzX3RyYW5zX3NvY2tzX210eCwNCj4gPiA+ID4gPiArICAgICAgICAg ICAiaHZzX3RyYW5zX3NvY2tzX210eCIsIE5VTEwsIE1UWF9ERUYpOw0KPiA+ID4gPiA+ICsgICAg ICAgTElTVF9JTklUKCZodnNfdHJhbnNfYm91bmRfc29ja3MpOw0KPiA+ID4gPiA+ICsgICAgICAg TElTVF9JTklUKCZodnNfdHJhbnNfY29ubmVjdGVkX3NvY2tzKTsNCj4gPiA+ID4gPiArfQ0KPiA+ ID4gPiA+ICsNCj4gPiA+ID4NCj4gPiA+ID4gSSBoYXZlIGEgc3VzcGljaW9uIHRoYXQgYWxsIG9m IHRoZXNlIHNob3VsZCByZWFsbHkgYmUgcGVyLXZuZXQgZm9yDQo+ID4gPiA+IGNvcnJlY3Qgc2Vt YW50aWNzIHdpdGggVklNQUdFLCB3aXRoIHRoZSBJU19ERUZBVUxUX1ZORVQgY2hlY2sNCj4gPiA+ ID4gZWFybGllciBkcm9wcGVkIGNvbXBsZXRlbHkuIEkgaGF2ZW4ndCByZWFkIGFyb3VuZCB0aGUg cmVzdCBhbGwNCj4gPiA+ID4gdGhhdCBtdWNoLCBidXQgdGhpcyB3b3VsZCBhdCBsZWFzdCBzZWVt IHRvIHByZXZlbnQgcG9ydCByZS11c2UgYnkNCj4gPiA+ID4gYSBkaWZmZXJlbnQgdm5ldCwgd2hp Y2ggaXMgcGVyaGFwcyAiZ29vZCBlbm91Z2giIGJ1dCBJIHRoaW5rIHRoaXMNCj4gPiA+ID4gaXMg c29tZXRoaW5nIHRoYXQgc2hvdWxkIGJlIGZpeGVkIGluIHRoZSBtaWQtdGVybS4NCj4gPiA+ID4N Cj4gPiA+DQo+ID4gPiBJIGhhdmUgYSBmb2xsb3ctdXAgY29uY2VybiBhYm91dCB3aGV0aGVyIHRo aXMgaXMgYWN0dWFsbHkgZ29pbmcgdG8NCj4gPiA+IGJlIG1haW50YWluZWQuLi4gaXQncyBiZWVu IGEgZnVsbCB3ZWVrIHdpdGggbm90IGV2ZW4gYW4NCj4gPiA+IGFja25vd2xlZGdlbWVudCBvciBy ZWJ1dHRhbCBvZiBhbnkgb2YgdGhlIGNvbmNlcm5zIEkndmUgcmFpc2VkLCB3aXRoDQo+ID4gPiBz b21lIG9mIHRoZW0gYmVpbmcgY29tcGxldGVseSB0cml2aWFsIHRvIGFkZHJlc3MgaW4gdGhlIHNo b3J0LXRlcm0uDQo+ID4gPiBJIGRvbid0IHRoaW5rIHRoYXQgd2UgcmVhbGx5IHdhbnQgdGhpcyBp biB0aGUgdHJlZSBpbiBpdHMgY3VycmVudCBzdGF0ZSBnaXZlbg0KPiB0aGlzIGxldmVsIG9mIGVu Z2FnZW1lbnQuDQo+ID4gPg0KPiA+IFNvcnJ5IGZvciBteSBsYXRlIHJlc3BvbnNlLCBLeWxlLiBJ IHJlYWQgeW91ciBjb21tZW50cyBsYXN0IHdlZWsuIFRvDQo+ID4gYmUgaG9uZXN0IEkgYW0gbm90 IGZhbWlsaWFyIHRvIFZORVQgYW5kIFZJTUFHRSwgc28gSSBkb24ndCBxdWl0ZQ0KPiA+IHVuZGVy c3RhbmQuIEkgZ290IGRpc3RyYWN0ZWQgaW50byBvdGhlciB3b3JrIHNvIG15IHJlc3BvbnNlIHRv IHRoaXMgd2FzDQo+IGRlbGF5ZWQuDQo+ID4NCj4gPiBEbyB5b3UgbWVhbiB0byBkcm9wIHRoZXNl IHR3byBsaW5lcz8NCj4gPiAgICAgICAgaWYgKCFJU19ERUZBVUxUX1ZORVQoY3Vydm5ldCkpDQo+ ID4gICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4gSSBjb3BpZWQgdGhlc2UgZnJvbSBvdGhlciBz b2NrZXQgaW5pdCBjb2RlLiBJZiB0aGV5IGFyZSBub3QgbmVjZXNzYXJ5IEkgY2FuDQo+IHJlbW92 ZSB0aGVtLg0KPiA+DQo+IA0KPiBBbHJpZ2h0LCBsZXQncyByZXdpbmQgYSBsaXR0bGUgYml0IGhl cmUuID0tKSBDb25zaWRlciB3aGlsZSByZWFkaW5nIHRoZSBiZWxvdyB0aGF0IEkNCj4gaGF2ZSBu byBpZGVhIHdoYXQgdGhlIGhvc3Qtc2lkZSBvZiB0aGVzZSBzb2NrZXRzIGxvb2sgbGlrZSBiZXlv bmQgd2hhdCBJIGp1c3QNCj4gdmVyeSBxdWlja2x5IHNraW1tZWQgZnJvbSBbMF0uDQo+IA0KPiBJ dCdzIGEgbGl0dGxlIG1vcmUgaW52b2x2ZWQgdGhhbiB0aGF0OyBjb25zaWRlciBlYWNoIHZuZXQg YXMgaXRzIG93biBpbmRlcGVuZGVudA0KPiBuZXR3b3JrIHN0YWNrIHRoYXQncyBsYXJnZWx5IGlz b2xhdGVkIGZyb20gb3RoZXIgdm5ldHMuDQo+IFRoZSBob3N0IHN0YXJ0cyBvdXQgd2l0aCBhIHZu ZXQsIHZuZXQwICh0aGUgZGVmYXVsdCB2bmV0KSwgYW5kIHJvb3QgbWF5IHNwYXduDQo+IGFkZGl0 aW9uYWwgdm5ldHMgYXR0YWNoZWQgdG8gamFpbHMgdG8gYWxsb3cgdGhlIGphaWwgdG8gb3BlcmF0 ZSBpdHMgb3duIG5ldHdvcmsNCj4gc3RhY2sgYXMgd2VsbC4gWW91ciBwcl9pbml0IHdpbGwgZ2V0 IGNhbGxlZCBvbmNlIHBlciB2bmV0IHNwYXduZWQsIGluY2x1ZGluZyB0aGUNCj4gb2J2aW91cyBk ZWZhdWx0IHZuZXQsIHdoaWNoIGlzIHdoeSB0aGUgY2hlY2sgaXMgdGhlcmUgaW4gdGhlIGZpcnN0 IHBsYWNlIC0tIHlvdQ0KPiBtYXkgaGF2ZSBzb21lIGdsb2JhbCBzdGF0ZSB0aGF0IG9ubHkgbmVl ZHMgdG8gYmUgaW5pdGlhbGl6ZWQgb25jZSwgYXQgd2hpY2gNCj4gcG9pbnQgeW91IHdvdWxkIGV4 Y2x1ZGUgbm9uLWRlZmF1bHQgdm5ldHMgZnJvbSBleGVjdXRpbmcgdGhvc2UgYml0cy4NCj4gDQo+ IFRoZSBtb3JlIEkgdGhpbmsgYWJvdXQgaXQsIHRob3VnaCwgdGhlIG1vcmUgSSB3b25kZXIgaWYg aHZzb2NrIG1ha2VzIHNlbnNlIGF0DQo+IGFsbCBpbiBub24tZGVmYXVsdCB2bmV0IGNvbnRleHRz IGFuZCB3aGV0aGVyIGh2c190cmFuc19hdHRhY2ggc2hvdWxkIHJlYWxseSBiZQ0KPiBhdHRhY2hp bmcgdG8gc29ja2V0cyBvdXRzaWRlIG9mIHRoZSBkZWZhdWx0IHZuZXQuIFlvdSBjYW4gYmluZCBp biB5b3VyIEZyZWVCU0QNCj4gSHlwZXJWIGd1ZXN0IHRvIGEgcG9ydCwgYW5kIGEgaG9zdCBzZXJ2 aWNlJ3Mgb3B0aW9uIGZvciBjb25uZWN0aW5nIGlzIHNwZWNpZnlpbmcNCj4gZ3Vlc3QgR1VJRCAr IHBvcnQ7IHRoZXJlJ3Mgbm90IHJlYWxseSBhbnkgd2lnZ2xlIHJvb20gZm9yIG11bHRpcGxlIGVu dGl0aWVzDQo+IHdpdGhpbiBhIGd1ZXN0IHRvIGJlIGJpbmRpbmcgdG8gYSBnaXZlbiBwb3J0IGFu eXdheXMuIEl0IG1heSB2ZXJ5IHdlbGwgYmUgdGhlDQo+IGNhc2UgdGhhdCB0aGUgc3RhdHVzIHF1 byBpcyB0aGUgb3B0aW1hbCBvdXRjb21lLg0KPiANCj4gR2l2ZW4gdGhhdCwgZG9lcyBpdCBtYWtl IHNlbnNlIHRoYXQgdGhlIGhvc3QgY29ubmVjdHMgdmlhIHRoZSBndWVzdCBHVUlEIGFuZA0KPiBj YW4gcG90ZW50aWFsbHkgZW5kIHVwIGNvbm5lY3RlZCB0byBzb21lIGphaWwgb2YgdW5rbm93biB0 cnVzdCBvcGVyYXRpbmcgaXRzDQo+IG93biBuZXR3b3JrIHN0YWNrPw0KPiANCj4gQXMgYSBmaW5h bCBzY2F0dGVyZWQgdGhvdWdodCBmb3IgdGhlIGhvdXIsIGRvZXMgdGhlIExpbnV4IGltcGxlbWVu dGF0aW9uIG9mIHRoaXMNCj4gc3R1ZmYgZG8gYW55dGhpbmcgdG8gZ2l2ZSBhIGd1ZXN0IGFkbWlu IHZpc2liaWxpdHkgaW50byBleGlzdGluZyBIeXBlclYgc29ja2V0cyBvbg0KPiB0aGUgc3lzdGVt PyBBRkFJQ1QgaGVyZSwgdGhlcmUncyBubyBzb2Nrc3RhdCBpbnRlZ3JhdGlvbiBvciBhbnl0aGlu ZyBlbHNlIHRoYXQNCj4gbWlnaHQgZXhwb3J0IGh2c29jayBpbmZvcm1hdGlvbiB0byB1c2VybGFu ZCwgc28gb25lJ3Mgb25seSBvcHRpb24gdG8gdHJhY2tpbmcNCj4gZG93biB3aGV0aGVyIGEgSHlw ZXJWIHNvY2tldCBldmVuIGV4aXN0cyBhbmQgdG8gd2hpY2ggcHJvY2VzcyBpdCBiZWxvbmdzDQo+ IHdvdWxkIGFwcGVhciB0byBiZSBwcm9iaW5nIGFyb3VuZCBpbiB0aGUga2VybmVsLg0KPiANClRo ZSBIeXBlclYgaG9zdCBvbmx5IGNvbm5lY3RzIHRvIGd1ZXN0IHVzaW5nIHRoZSBndWVzdCB1bmlx dWUgR1VJRCBhbmQgYSBwb3J0DQpudW1iZXIuIE9uY2UgY29ubmVjdGlvbiBpcyByZXF1ZXN0ZWQs IGhvc3Qgc2VuZHMgYSB2aXJ0dWFsaXplZCB2bWJ1cyBkZXZpY2Ugb2ZmZXIgDQp0byBndWVzdCB1 c2luZyBkaWZmZXJlbnQgbWVjaGFuaXNtLiBPbiB0aGUgZ3Vlc3Qgc2lkZSB3aGVuIHRoZSBkZXZp Y2Ugb2ZmaWNlIGlzIGluLCANCml0IGNoZWNrcyBpZiB0aGUgcG9ydCBpcyBib3VuZCwgdGhlbiBh IGNvbW11bmljYXRpb24gY2hhbm5lbCBvbiB2bWJ1cyBpcyBlc3RhYmxpc2hlZCANCmFuZCBhIG5l dyBzb2NrZXQgaXMgY3JlYXRlZC4gVHdvIHNpZGVzIGNhbiB0YWxrIG92ZXIgdGhpcyBjaGFubmVs IGFmdGVyIHRoYXQuIFRoZSANCnNhbWUgYXBwbGllcyB0byB0aGUgZ3Vlc3QgdG8gaG9zdCBjb25u ZWN0aW9uLiANCg0KVGhlIGd1ZXN0IGFkbWluIGhhcyBubyB2aXNpYmlsaXR5IG9mIGV4aXN0aW5n IEh5cGVyViBzb2NrZXRzIG9uIGhvc3Qgc2lkZS4gDQoNClRoYW5rcywNCldlaQ0K From owner-svn-src-all@freebsd.org Sat May 30 19:11:41 2020 Return-Path: Delivered-To: svn-src-all@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 96ACF2F32FA; Sat, 30 May 2020 19:11:41 +0000 (UTC) (envelope-from markj@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49Z9z13Zrmz4TXp; Sat, 30 May 2020 19:11:41 +0000 (UTC) (envelope-from markj@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 76362D9A3; Sat, 30 May 2020 19:11:41 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04UJBfoN091441; Sat, 30 May 2020 19:11:41 GMT (envelope-from markj@FreeBSD.org) Received: (from markj@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04UJBfM8091440; Sat, 30 May 2020 19:11:41 GMT (envelope-from markj@FreeBSD.org) Message-Id: <202005301911.04UJBfM8091440@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: markj set sender to markj@FreeBSD.org using -f From: Mark Johnston Date: Sat, 30 May 2020 19:11:41 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361654 - head/usr.sbin/ctld X-SVN-Group: head X-SVN-Commit-Author: markj X-SVN-Commit-Paths: head/usr.sbin/ctld X-SVN-Commit-Revision: 361654 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 May 2020 19:11:41 -0000 Author: markj Date: Sat May 30 19:11:41 2020 New Revision: 361654 URL: https://svnweb.freebsd.org/changeset/base/361654 Log: ctld: Fix a memory leak in uclparse_conf(). PR: 246596 Submitted by: Patryk MFC after: 1 week Modified: head/usr.sbin/ctld/uclparse.c Modified: head/usr.sbin/ctld/uclparse.c ============================================================================== --- head/usr.sbin/ctld/uclparse.c Sat May 30 18:01:53 2020 (r361653) +++ head/usr.sbin/ctld/uclparse.c Sat May 30 19:11:41 2020 (r361654) @@ -914,6 +914,7 @@ int uclparse_conf(struct conf *newconf, const char *path) { struct ucl_parser *parser; + ucl_object_t *top; int error; conf = newconf; @@ -922,10 +923,14 @@ uclparse_conf(struct conf *newconf, const char *path) if (!ucl_parser_add_file(parser, path)) { log_warn("unable to parse configuration file %s: %s", path, ucl_parser_get_error(parser)); + ucl_parser_free(parser); return (1); } - error = uclparse_toplevel(ucl_parser_get_object(parser)); + top = ucl_parser_get_object(parser); + error = uclparse_toplevel(top); + ucl_object_unref(top); + ucl_parser_free(parser); return (error); } From owner-svn-src-all@freebsd.org Sat May 30 19:15:29 2020 Return-Path: Delivered-To: svn-src-all@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 D38652F3838; Sat, 30 May 2020 19:15:29 +0000 (UTC) (envelope-from markj@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49ZB3P5LRsz4V6R; Sat, 30 May 2020 19:15:29 +0000 (UTC) (envelope-from markj@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 B2C74DBD3; Sat, 30 May 2020 19:15:29 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04UJFTuM095146; Sat, 30 May 2020 19:15:29 GMT (envelope-from markj@FreeBSD.org) Received: (from markj@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04UJFTR5095145; Sat, 30 May 2020 19:15:29 GMT (envelope-from markj@FreeBSD.org) Message-Id: <202005301915.04UJFTR5095145@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: markj set sender to markj@FreeBSD.org using -f From: Mark Johnston Date: Sat, 30 May 2020 19:15:29 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361655 - head/usr.sbin/certctl X-SVN-Group: head X-SVN-Commit-Author: markj X-SVN-Commit-Paths: head/usr.sbin/certctl X-SVN-Commit-Revision: 361655 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 May 2020 19:15:29 -0000 Author: markj Date: Sat May 30 19:15:29 2020 New Revision: 361655 URL: https://svnweb.freebsd.org/changeset/base/361655 Log: certctl.8: Correct the HISTORY section. certctl was merged to stable/12 after 12.1 was branched. PR: 246190 Reported by: Michael Osipov MFC after: 3 days Modified: head/usr.sbin/certctl/certctl.8 Modified: head/usr.sbin/certctl/certctl.8 ============================================================================== --- head/usr.sbin/certctl/certctl.8 Sat May 30 19:11:41 2020 (r361654) +++ head/usr.sbin/certctl/certctl.8 Sat May 30 19:15:29 2020 (r361655) @@ -26,7 +26,7 @@ .\" .\" $FreeBSD$ .\" -.Dd May 22, 2020 +.Dd May 30, 2020 .Dt CERTCTL 8 .Os .Sh NAME @@ -123,6 +123,6 @@ Default: *.pem *.crt *.cer *.crl *.0 .Sh HISTORY .Nm first appeared in -.Fx 12.0 +.Fx 12.2 .Sh AUTHORS .An Allan Jude Aq Mt allanjude@freebsd.org From owner-svn-src-all@freebsd.org Sat May 30 19:16:34 2020 Return-Path: Delivered-To: svn-src-all@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 1E5782F35F6; Sat, 30 May 2020 19:16:34 +0000 (UTC) (envelope-from emaste@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49ZB4d7310z4VJl; Sat, 30 May 2020 19:16:33 +0000 (UTC) (envelope-from emaste@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 ED397DAAE; Sat, 30 May 2020 19:16:33 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04UJGXGH095254; Sat, 30 May 2020 19:16:33 GMT (envelope-from emaste@FreeBSD.org) Received: (from emaste@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04UJGXeF095253; Sat, 30 May 2020 19:16:33 GMT (envelope-from emaste@FreeBSD.org) Message-Id: <202005301916.04UJGXeF095253@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: emaste set sender to emaste@FreeBSD.org using -f From: Ed Maste Date: Sat, 30 May 2020 19:16:33 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361656 - head/gnu/usr.bin/binutils X-SVN-Group: head X-SVN-Commit-Author: emaste X-SVN-Commit-Paths: head/gnu/usr.bin/binutils X-SVN-Commit-Revision: 361656 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 May 2020 19:16:34 -0000 Author: emaste Date: Sat May 30 19:16:33 2020 New Revision: 361656 URL: https://svnweb.freebsd.org/changeset/base/361656 Log: binutils: build as with BINUTILS || BINUTILS_BOOTSTRAP Previously we descended into as only if MK_BINUTILS was true, including during the bootstrap tool phase. BINUTILS is now disabled by default on all archs, and we failed to build it during amd64 bootstrap. Descend into as if either BINUTILS or BINUTILS_BOOTSTRAP is enabled. This is not quite correct: we should either have the test also depend on BOOTSTRAPPING, or set BINUTILS to the value of BINUTILS_BOOTSTRAP during the bootstrap phase. However, this simple change fixes the build and has been tested, and binutils will be removed completely in the near future. Modified: head/gnu/usr.bin/binutils/Makefile Modified: head/gnu/usr.bin/binutils/Makefile ============================================================================== --- head/gnu/usr.bin/binutils/Makefile Sat May 30 19:15:29 2020 (r361655) +++ head/gnu/usr.bin/binutils/Makefile Sat May 30 19:16:33 2020 (r361656) @@ -11,8 +11,9 @@ SUBDIR.${MK_BINUTILS}+= doc # GNU as is used on x86 only, for a few files that cannot be assembled by # Clang IAS. Other archs either use Clang IAS for every assembly file, or # use external toolchain. -.if ${TARGET} == "amd64" || ${TARGET} == "i386" -SUBDIR.${MK_BINUTILS}+= as +.if (${TARGET} == "amd64" || ${TARGET} == "i386") && \ + (${MK_BINUTILS} != "no" || ${MK_BINUTILS_BOOTSTRAP} != "no") +SUBDIR+= as .endif SUBDIR_DEPEND_as=libbfd libiberty libopcodes From owner-svn-src-all@freebsd.org Sat May 30 19:57:27 2020 Return-Path: Delivered-To: svn-src-all@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 5DEF62F4AE3; Sat, 30 May 2020 19:57:27 +0000 (UTC) (envelope-from emaste@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 49ZBzq1rTtz4YrC; Sat, 30 May 2020 19:57:27 +0000 (UTC) (envelope-from emaste@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 3A618E170; Sat, 30 May 2020 19:57:27 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 04UJvRQi020022; Sat, 30 May 2020 19:57:27 GMT (envelope-from emaste@FreeBSD.org) Received: (from emaste@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 04UJvRkb020021; Sat, 30 May 2020 19:57:27 GMT (envelope-from emaste@FreeBSD.org) Message-Id: <202005301957.04UJvRkb020021@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: emaste set sender to emaste@FreeBSD.org using -f From: Ed Maste Date: Sat, 30 May 2020 19:57:27 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361657 - head/sys/sys X-SVN-Group: head X-SVN-Commit-Author: emaste X-SVN-Commit-Paths: head/sys/sys X-SVN-Commit-Revision: 361657 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 May 2020 19:57:27 -0000 Author: emaste Date: Sat May 30 19:57:26 2020 New Revision: 361657 URL: https://svnweb.freebsd.org/changeset/base/361657 Log: elf_common.h: define DF_1_PIE DF_1_PIE indicates that the object is a position-independent executable. Reference: https://docs.oracle.com/cd/E36784_01/html/E36857/chapter6-42444.html MFC after: 3 days Sponsored by: The FreeBSD Foundation Modified: head/sys/sys/elf_common.h Modified: head/sys/sys/elf_common.h ============================================================================== --- head/sys/sys/elf_common.h Sat May 30 19:16:33 2020 (r361656) +++ head/sys/sys/elf_common.h Sat May 30 19:57:26 2020 (r361657) @@ -764,6 +764,7 @@ typedef struct { #define DF_1_ORIGIN 0x00000080 /* Process $ORIGIN */ #define DF_1_INTERPOSE 0x00000400 /* Interpose all objects but main */ #define DF_1_NODEFLIB 0x00000800 /* Do not search default paths */ +#define DF_1_PIE 0x08000000 /* Is position-independent executable */ /* Values for l_flags. */ #define LL_NONE 0x0 /* no flags */ From owner-svn-src-all@freebsd.org Sat May 30 20:14:19 2020 Return-Path: Delivered-To: svn-src-all@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 75B852F51A6; Sat, 30 May 2020 20:14:19 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from kib.kiev.ua (kib.kiev.ua [IPv6:2001:470:d5e7:1::1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 49ZCMG6z4xz4bFk; Sat, 30 May 2020 20:14:18 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from tom.home (kib@localhost [127.0.0.1]) by kib.kiev.ua (8.15.2/8.15.2) with ESMTPS id 04UKE5qx038287 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NO); Sat, 30 May 2020 23:14:08 +0300 (EEST) (envelope-from kostikbel@gmail.com) DKIM-Filter: OpenDKIM Filter v2.10.3 kib.kiev.ua 04UKE5qx038287 Received: (from kostik@localhost) by tom.home (8.15.2/8.15.2/Submit) id 04UKE5aO038286; Sat, 30 May 2020 23:14:05 +0300 (EEST) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: tom.home: kostik set sender to kostikbel@gmail.com using -f Date: Sat, 30 May 2020 23:14:05 +0300 From: Konstantin Belousov To: Ed Maste Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r361657 - head/sys/sys Message-ID: <20200530201405.GL48478@kib.kiev.ua> References: <202005301957.04UJvRkb020021@repo.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <202005301957.04UJvRkb020021@repo.freebsd.org> X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED,BAYES_00, DKIM_ADSP_CUSTOM_MED,FORGED_GMAIL_RCVD,FREEMAIL_FROM, NML_ADSP_CUSTOM_MED autolearn=no autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on tom.home X-Rspamd-Queue-Id: 49ZCMG6z4xz4bFk X-Spamd-Bar: ---- Authentication-Results: mx1.freebsd.org; none X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[]; ASN(0.00)[asn:6939, ipnet:2001:470::/32, country:US] X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 May 2020 20:14:19 -0000 On Sat, May 30, 2020 at 07:57:27PM +0000, Ed Maste wrote: > Author: emaste > Date: Sat May 30 19:57:26 2020 > New Revision: 361657 > URL: https://svnweb.freebsd.org/changeset/base/361657 > > Log: > elf_common.h: define DF_1_PIE > > DF_1_PIE indicates that the object is a position-independent executable. Only on Solaris. From owner-svn-src-all@freebsd.org Sat May 30 20:18:05 2020 Return-Path: Delivered-To: svn-src-all@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 DC6892F52FD; Sat, 30 May 2020 20:18:05 +0000 (UTC) (envelope-from carpeddiem@gmail.com) Received: from mail-il1-f194.google.com (mail-il1-f194.google.com [209.85.166.194]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "GTS CA 1O1" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 49ZCRd0nnKz4bSG; Sat, 30 May 2020 20:18:04 +0000 (UTC) (envelope-from carpeddiem@gmail.com) Received: by mail-il1-f194.google.com with SMTP id r2so5811254ila.4; Sat, 30 May 2020 13:18:04 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=gqSdLRhdaMzgg40m+W7nHm02kWHHI2ePdr2tsDPzcPk=; b=byMtbWTysx9Hx44uYVhbBQ79nFiueKf4aueolgjv+iyzayEDtdDMoMFTuMoJRg1+WJ F0so6s6g3TKVWOIFDrnSzCgmROTLgw6W9mvdfzRLkR7Cf9MPG9DhzBAS1JaLmZwx6OKw Y1zIxg00hpjroNo/6F/aMON0S+M1WwK/XJrfln9X+KiXGfYpVvZNSwlVW2dWXL89Uty9 ofFopNcb0MwkT0V/mXUaVhW6hK/dpYpwjoBcmspKnNnU9e0h7PfaeUavzhjFV9fMu4XX 9jvbtczgRsSNBf98qF8hX2JhRKKAwXw8nEM56Q+jlxUj5zO/tbYBhHBDdFYgawPeTFAq Wkeg== X-Gm-Message-State: AOAM530/NciiUm6ULPyDI/znWDI42ZUyywczt9hgWTxWp+grD2F006aH rxBUtOYiVaDGo59KYosUsyL+EJoQigqnQbrWZcc= X-Google-Smtp-Source: ABdhPJyjPI5Vfdh4i15fXu3utFhTVzrzOuFzrKMhF2JZEYIQ/8i53QRc/29K/SFeX+qZN/QVZ55UQg2w3VBO6g4wCm0= X-Received: by 2002:a05:6e02:5a3:: with SMTP id k3mr13612383ils.11.1590869884097; Sat, 30 May 2020 13:18:04 -0700 (PDT) MIME-Version: 1.0 References: <202005301957.04UJvRkb020021@repo.freebsd.org> <20200530201405.GL48478@kib.kiev.ua> In-Reply-To: <20200530201405.GL48478@kib.kiev.ua> From: Ed Maste Date: Sat, 30 May 2020 16:17:52 -0400 Message-ID: Subject: Re: svn commit: r361657 - head/sys/sys To: Konstantin Belousov Cc: src-committers , svn-src-all , svn-src-head Content-Type: text/plain; charset="UTF-8" X-Rspamd-Queue-Id: 49ZCRd0nnKz4bSG X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org; dkim=none; dmarc=none; spf=pass (mx1.freebsd.org: domain of carpeddiem@gmail.com designates 209.85.166.194 as permitted sender) smtp.mailfrom=carpeddiem@gmail.com X-Spamd-Result: default: False [-2.28 / 15.00]; ARC_NA(0.00)[]; NEURAL_HAM_MEDIUM(-0.89)[-0.890]; RCVD_TLS_ALL(0.00)[]; FROM_HAS_DN(0.00)[]; RCPT_COUNT_THREE(0.00)[4]; R_SPF_ALLOW(-0.20)[+ip4:209.85.128.0/17:c]; NEURAL_HAM_LONG(-0.67)[-0.672]; MIME_GOOD(-0.10)[text/plain]; DMARC_NA(0.00)[freebsd.org]; TO_MATCH_ENVRCPT_SOME(0.00)[]; TO_DN_ALL(0.00)[]; NEURAL_HAM_SHORT(-0.72)[-0.718]; RCVD_IN_DNSWL_NONE(0.00)[209.85.166.194:from]; FREEMAIL_TO(0.00)[gmail.com]; FORGED_SENDER(0.30)[emaste@freebsd.org,carpeddiem@gmail.com]; RWL_MAILSPIKE_POSSIBLE(0.00)[209.85.166.194:from]; R_DKIM_NA(0.00)[]; MIME_TRACE(0.00)[0:+]; ASN(0.00)[asn:15169, ipnet:209.85.128.0/17, country:US]; FROM_NEQ_ENVFROM(0.00)[emaste@freebsd.org,carpeddiem@gmail.com]; FREEMAIL_ENVFROM(0.00)[gmail.com]; RCVD_COUNT_TWO(0.00)[2] X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 May 2020 20:18:05 -0000 On Sat, 30 May 2020 at 16:14, Konstantin Belousov wrote: > > On Sat, May 30, 2020 at 07:57:27PM +0000, Ed Maste wrote: > > Author: emaste > > Date: Sat May 30 19:57:26 2020 > > New Revision: 361657 > > URL: https://svnweb.freebsd.org/changeset/base/361657 > > > > Log: > > elf_common.h: define DF_1_PIE > > > > DF_1_PIE indicates that the object is a position-independent executable. > Only on Solaris. Apparently GNU ld sets it broadly now, and there's a patch to have lld start doing it: https://reviews.llvm.org/D80872 From owner-svn-src-all@freebsd.org Sat May 30 23:29:09 2020 Return-Path: Delivered-To: svn-src-all@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 1AEB12FB095; Sat, 30 May 2020 23:29:09 +0000 (UTC) (envelope-from carpeddiem@gmail.com) Received: from mail-io1-f67.google.com (mail-io1-f67.google.com [209.85.166.67]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "GTS CA 1O1" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 49ZHh370yKz3g5X; Sat, 30 May 2020 23:29:07 +0000 (UTC) (envelope-from carpeddiem@gmail.com) Received: by mail-io1-f67.google.com with SMTP id k18so3282309ion.0; Sat, 30 May 2020 16:29:07 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=lqscQ7QXgRZF5l3zvZGOTo+0VGME9RBdKTh6YXuKZN4=; b=h1uvcaDF8to2hpHMWoFp45rwIu981qGcKilg07jSou1UimtxXLOzzcwxCjLDknq5YA kll97Vzc9yOpSGGrPhI5ymJUoXMR/IZRpokaekCRFrDQXLOAzIg6J+tCM70YSNEuDaWI rDvmI+D+C/kIoDAc+FdISjVupf9p/ukzJg+1E7oOth5ZtFkGoiSFQ0X8fw7ikb6iiG0K e7lZKTAJjlYEGvDB03KiSOsoreI4JlbovqPzfMQUlm32ROA0LtGYB8RxfmNqR+8k1AMV CnCTwyxTKMlIc191934LOPO8E+igNMIwJS2xzmK76pyl9b7zsOTgPo5rjVwVmFs4HlYL yfxg== X-Gm-Message-State: AOAM531VFB+rjVuBgylzpxcBPUp5YGBJ7Tle9rE0xvHz+Qn1WAyA62Cr UlhtMMIQajvO9I/81/zGx/1ybIloGOe9Uw7st94= X-Google-Smtp-Source: ABdhPJxPRLtDTsQ19s/ReAQPUc7JaonHYbrgWSqCqzu3riCzLMjYXPS7pZ6oVlvN+WDpyUvNxjgMOfHv4/t+4De9qOc= X-Received: by 2002:a6b:7c45:: with SMTP id b5mr12969356ioq.31.1590881346937; Sat, 30 May 2020 16:29:06 -0700 (PDT) MIME-Version: 1.0 References: <202005301957.04UJvRkb020021@repo.freebsd.org> <20200530201405.GL48478@kib.kiev.ua> In-Reply-To: From: Ed Maste Date: Sat, 30 May 2020 19:28:55 -0400 Message-ID: Subject: Re: svn commit: r361657 - head/sys/sys To: Konstantin Belousov Cc: src-committers , svn-src-all , svn-src-head Content-Type: text/plain; charset="UTF-8" X-Rspamd-Queue-Id: 49ZHh370yKz3g5X X-Spamd-Bar: - Authentication-Results: mx1.freebsd.org; dkim=none; dmarc=none; spf=pass (mx1.freebsd.org: domain of carpeddiem@gmail.com designates 209.85.166.67 as permitted sender) smtp.mailfrom=carpeddiem@gmail.com X-Spamd-Result: default: False [-1.77 / 15.00]; RCVD_TLS_ALL(0.00)[]; FREEMAIL_ENVFROM(0.00)[gmail.com]; ARC_NA(0.00)[]; FROM_HAS_DN(0.00)[]; RCPT_COUNT_THREE(0.00)[4]; R_SPF_ALLOW(-0.20)[+ip4:209.85.128.0/17]; NEURAL_HAM_LONG(-0.65)[-0.647]; MIME_GOOD(-0.10)[text/plain]; DMARC_NA(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-0.89)[-0.889]; TO_MATCH_ENVRCPT_SOME(0.00)[]; TO_DN_ALL(0.00)[]; NEURAL_HAM_SHORT(-0.24)[-0.235]; RCVD_IN_DNSWL_NONE(0.00)[209.85.166.67:from]; FREEMAIL_TO(0.00)[gmail.com]; FORGED_SENDER(0.30)[emaste@freebsd.org,carpeddiem@gmail.com]; RWL_MAILSPIKE_POSSIBLE(0.00)[209.85.166.67:from]; R_DKIM_NA(0.00)[]; MIME_TRACE(0.00)[0:+]; RCVD_COUNT_TWO(0.00)[2]; ASN(0.00)[asn:15169, ipnet:209.85.128.0/17, country:US]; FROM_NEQ_ENVFROM(0.00)[emaste@freebsd.org,carpeddiem@gmail.com] X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 May 2020 23:29:09 -0000 On Sat, 30 May 2020 at 16:17, Ed Maste wrote: > > On Sat, 30 May 2020 at 16:14, Konstantin Belousov wrote: > > > > On Sat, May 30, 2020 at 07:57:27PM +0000, Ed Maste wrote: > > > Author: emaste > > > Date: Sat May 30 19:57:26 2020 > > > New Revision: 361657 > > > URL: https://svnweb.freebsd.org/changeset/base/361657 > > > > > > Log: > > > elf_common.h: define DF_1_PIE > > > > > > DF_1_PIE indicates that the object is a position-independent executable. > > Only on Solaris. > > Apparently GNU ld sets it broadly now, and there's a patch to have lld > start doing it: https://reviews.llvm.org/D80872 It looks like GNU ld has done it since 2015 in fact. Further, glibc will refuse to dlopen() an object with DF_1_PIE set, as of last June; this seems like it would be a reasonable thing for us to do too. glibc bug for this: https://sourceware.org/bugzilla/show_bug.cgi?id=24323 From owner-svn-src-all@freebsd.org Sat May 30 23:39:40 2020 Return-Path: Delivered-To: svn-src-all@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 0A8D52FADE1; Sat, 30 May 2020 23:39:40 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from kib.kiev.ua (kib.kiev.ua [IPv6:2001:470:d5e7:1::1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 49ZHwC3cjSz3gVs; Sat, 30 May 2020 23:39:39 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from tom.home (kib@localhost [127.0.0.1]) by kib.kiev.ua (8.15.2/8.15.2) with ESMTPS id 04UNdTvs092132 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NO); Sun, 31 May 2020 02:39:32 +0300 (EEST) (envelope-from kostikbel@gmail.com) DKIM-Filter: OpenDKIM Filter v2.10.3 kib.kiev.ua 04UNdTvs092132 Received: (from kostik@localhost) by tom.home (8.15.2/8.15.2/Submit) id 04UNdSZe092131; Sun, 31 May 2020 02:39:28 +0300 (EEST) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: tom.home: kostik set sender to kostikbel@gmail.com using -f Date: Sun, 31 May 2020 02:39:28 +0300 From: Konstantin Belousov To: Ed Maste Cc: src-committers , svn-src-all , svn-src-head Subject: Re: svn commit: r361657 - head/sys/sys Message-ID: <20200530233928.GM48478@kib.kiev.ua> References: <202005301957.04UJvRkb020021@repo.freebsd.org> <20200530201405.GL48478@kib.kiev.ua> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED,BAYES_00, DKIM_ADSP_CUSTOM_MED,FORGED_GMAIL_RCVD,FREEMAIL_FROM, NML_ADSP_CUSTOM_MED autolearn=no autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on tom.home X-Rspamd-Queue-Id: 49ZHwC3cjSz3gVs X-Spamd-Bar: ---- Authentication-Results: mx1.freebsd.org; none X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[]; ASN(0.00)[asn:6939, ipnet:2001:470::/32, country:US] X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 May 2020 23:39:40 -0000 On Sat, May 30, 2020 at 07:28:55PM -0400, Ed Maste wrote: > On Sat, 30 May 2020 at 16:17, Ed Maste wrote: > > > > On Sat, 30 May 2020 at 16:14, Konstantin Belousov wrote: > > > > > > On Sat, May 30, 2020 at 07:57:27PM +0000, Ed Maste wrote: > > > > Author: emaste > > > > Date: Sat May 30 19:57:26 2020 > > > > New Revision: 361657 > > > > URL: https://svnweb.freebsd.org/changeset/base/361657 > > > > > > > > Log: > > > > elf_common.h: define DF_1_PIE > > > > > > > > DF_1_PIE indicates that the object is a position-independent executable. > > > Only on Solaris. > > > > Apparently GNU ld sets it broadly now, and there's a patch to have lld > > start doing it: https://reviews.llvm.org/D80872 > > It looks like GNU ld has done it since 2015 in fact. Further, glibc > will refuse to dlopen() an object with DF_1_PIE set, as of last June; > this seems like it would be a reasonable thing for us to do too. > > glibc bug for this: https://sourceware.org/bugzilla/show_bug.cgi?id=24323 I can do it. What if such object is referenced by DT_NEEDED ? From owner-svn-src-all@freebsd.org Sat May 30 23:47:40 2020 Return-Path: Delivered-To: svn-src-all@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 AEFE82FB55B; Sat, 30 May 2020 23:47:40 +0000 (UTC) (envelope-from carpeddiem@gmail.com) Received: from mail-il1-f193.google.com (mail-il1-f193.google.com [209.85.166.193]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "GTS CA 1O1" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 49ZJ5R5PgHz3yD9; Sat, 30 May 2020 23:47:39 +0000 (UTC) (envelope-from carpeddiem@gmail.com) Received: by mail-il1-f193.google.com with SMTP id a13so1265826ilh.3; Sat, 30 May 2020 16:47:39 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=bXahRsOPlAZvmnTEiwGahR8U2PCBMMYgGy84EcVGcaM=; b=hGCb1LWyaHspsdnc7pvaQ0lTK7gcQWj6Cm8zDvcup0zgHKKB2SyD7w5jjM1Z4hwnTU QOcO/mFzDxBwV3W7npG6p5mLeI0m4zjMmxoDpcI2XSeaRf/4DPt1bnAR+j7W8ScugA8B aYfdCeyVKNuHboC1orVz1YYldI9P0NwdpGWnxyaXfWRrcl/fg4CkbwNm4+iOyaJuaXkV b5INgnt4rEzsw8+fZDRJslLbe0MGm8E1uIKInxingaQ3WuPtQtvd8uDDZmdb5X2GH3H+ ivdhukv6XGV+DZMF5j3BNExFOrkvMc0K2T0wAlJz4dPes5mOSd/o7gQnc1BtogclJ1OZ xmrg== X-Gm-Message-State: AOAM532C33rhb+C33m5DW4a5k3Jh9uMb59dzJHnWRtl1qT6DtlOWhY2E j7Qv97JTyePUjtAP/S1poVkJ3dUb97cQa4IPAJlTszb64T8= X-Google-Smtp-Source: ABdhPJy2eTEILoYZMIlRjAYVk0+6eN4UyO6pIhvPi8aqtxelr/UBhA87A4Z+9Ib6LgfQJQ8dKlHD8P8wDVVw8/FPxBw= X-Received: by 2002:a92:4a0d:: with SMTP id m13mr13732628ilf.98.1590882458661; Sat, 30 May 2020 16:47:38 -0700 (PDT) MIME-Version: 1.0 References: <202005301957.04UJvRkb020021@repo.freebsd.org> <20200530201405.GL48478@kib.kiev.ua> <20200530233928.GM48478@kib.kiev.ua> In-Reply-To: <20200530233928.GM48478@kib.kiev.ua> From: Ed Maste Date: Sat, 30 May 2020 19:47:26 -0400 Message-ID: Subject: Re: svn commit: r361657 - head/sys/sys To: Konstantin Belousov Cc: src-committers , svn-src-all , svn-src-head Content-Type: text/plain; charset="UTF-8" X-Rspamd-Queue-Id: 49ZJ5R5PgHz3yD9 X-Spamd-Bar: - Authentication-Results: mx1.freebsd.org; dkim=none; dmarc=none; spf=pass (mx1.freebsd.org: domain of carpeddiem@gmail.com designates 209.85.166.193 as permitted sender) smtp.mailfrom=carpeddiem@gmail.com X-Spamd-Result: default: False [-1.84 / 15.00]; ARC_NA(0.00)[]; NEURAL_HAM_MEDIUM(-0.89)[-0.891]; RCVD_TLS_ALL(0.00)[]; FROM_HAS_DN(0.00)[]; RCPT_COUNT_THREE(0.00)[4]; R_SPF_ALLOW(-0.20)[+ip4:209.85.128.0/17:c]; NEURAL_HAM_LONG(-0.70)[-0.704]; MIME_GOOD(-0.10)[text/plain]; DMARC_NA(0.00)[freebsd.org]; TO_MATCH_ENVRCPT_SOME(0.00)[]; TO_DN_ALL(0.00)[]; NEURAL_HAM_SHORT(-0.25)[-0.246]; RCVD_IN_DNSWL_NONE(0.00)[209.85.166.193:from]; FREEMAIL_TO(0.00)[gmail.com]; FORGED_SENDER(0.30)[emaste@freebsd.org,carpeddiem@gmail.com]; RWL_MAILSPIKE_POSSIBLE(0.00)[209.85.166.193:from]; R_DKIM_NA(0.00)[]; MIME_TRACE(0.00)[0:+]; ASN(0.00)[asn:15169, ipnet:209.85.128.0/17, country:US]; FROM_NEQ_ENVFROM(0.00)[emaste@freebsd.org,carpeddiem@gmail.com]; FREEMAIL_ENVFROM(0.00)[gmail.com]; RCVD_COUNT_TWO(0.00)[2] X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 May 2020 23:47:40 -0000 On Sat, 30 May 2020 at 19:39, Konstantin Belousov wrote: > > > It looks like GNU ld has done it since 2015 in fact. Further, glibc > > will refuse to dlopen() an object with DF_1_PIE set, as of last June; > > this seems like it would be a reasonable thing for us to do too. > > > > glibc bug for this: https://sourceware.org/bugzilla/show_bug.cgi?id=24323 > > I can do it. What if such object is referenced by DT_NEEDED ? Hmm, good question. glibc has the following comment where they disallow it: > + /* dlopen of an executable is not valid because it is not possible > + to perform proper relocations, handle static TLS, or run the > + ELF constructors. For PIE, the check needs the dynamic > + section, so there is another check below. */ I would suggest that if it's the case we cannot correctly dlopen or handle a DT_NEEDED executable then we ought to fail.